X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fia32%2Fia32_architecture.c;h=d9a81bd51e7fc82365561cef5b9ceac89143b009;hb=2cc8c3b3bb545e020df93fa6bbc880974d66c20b;hp=d8d5ff95736f33e0af96a7dde50a6be69477a577;hpb=4b335fcf05d35142632704a26ce77570a8e8a913;p=libfirm diff --git a/ir/be/ia32/ia32_architecture.c b/ir/be/ia32/ia32_architecture.c index d8d5ff957..d9a81bd51 100644 --- a/ir/be/ia32/ia32_architecture.c +++ b/ir/be/ia32/ia32_architecture.c @@ -125,7 +125,7 @@ enum cpu_support { static int opt_size = 0; static cpu_support arch = cpu_generic; -static cpu_support opt_arch = cpu_core2; +static cpu_support opt_arch = cpu_generic; static int use_sse2 = 0; static int opt_cc = 1; static int opt_unsafe_floatconv = 0; @@ -232,7 +232,7 @@ static const insn_const size_cost = { 2, /* cost of an add instruction */ 3, /* cost of a lea instruction */ 3, /* cost of a constant shift instruction */ - 3, /* starting cost of a multiply instruction */ + 4, /* starting cost of a multiply instruction */ 0, /* cost of multiply for every set bit */ 0, /* logarithm for alignment of function labels */ 0, /* logarithm for alignment of loops labels */ @@ -330,9 +330,15 @@ static const insn_const k8_cost = { 1, /* cost of a constant shift instruction */ 3, /* starting cost of a multiply instruction */ 0, /* cost of multiply for every set bit */ +#if 0 /* TEST */ 4, /* logarithm for alignment of function labels */ 4, /* logarithm for alignment of loops labels */ 7, /* maximum skip for alignment of loops labels */ +#else + 0, + 0, + 0 +#endif }; /* costs for the K10 */ @@ -497,8 +503,13 @@ void ia32_setup_cg_config(void) ia32_cg_config.use_sse2 = use_sse2 && FLAGS(arch, arch_feature_sse2); ia32_cg_config.use_ffreep = FLAGS(opt_arch, arch_athlon_plus); ia32_cg_config.use_ftst = !FLAGS(arch, arch_feature_p6_insn); + /* valgrind can't cope with femms yet and the usefullness of the optimisation is questionable anyway */ +#if 0 ia32_cg_config.use_femms = FLAGS(opt_arch, arch_athlon_plus) && FLAGS(arch, arch_feature_mmx | arch_all_amd); +#else + ia32_cg_config.use_femms = 0; +#endif ia32_cg_config.use_fucomi = FLAGS(arch, arch_feature_p6_insn); ia32_cg_config.use_cmov = FLAGS(arch, arch_feature_p6_insn); ia32_cg_config.use_modeD_moves = FLAGS(opt_arch, arch_athlon_plus | arch_geode | arch_ppro |