Hello! No functional change.
2011-09-15 Uros Bizjak <ubiz...@gmail.com> * config/i386/i386.c (output_fp_compare): Return %v prefixed instruction mnemonics for TARGET_AVX. * config/i386/i386.md (*movdf_internal_rex64): use cond RTX in "type" attribute calculation. (*movdf_internal): Ditto. (*movsf_internal): Ditto. Tested on x86_64-pc-linux-gnu {,-m32}, committed to mainline SVN. Uros.
Index: i386.md =================================================================== --- i386.md (revision 178889) +++ i386.md (working copy) @@ -3028,7 +3030,17 @@ gcc_unreachable(); } } - [(set_attr "type" "fmov,fmov,fmov,imov,imov,imov,multi,sselog1,ssemov,ssemov,ssemov,ssemov,ssemov") + [(set (attr "type") + (cond [(eq_attr "alternative" "0,1,2") + (const_string "fmov") + (eq_attr "alternative" "3,4,5") + (const_string "imov") + (eq_attr "alternative" "6") + (const_string "multi") + (eq_attr "alternative" "7") + (const_string "sselog1") + ] + (const_string "ssemov"))) (set (attr "modrm") (if_then_else (and (eq_attr "alternative" "5") (eq_attr "type" "imov")) @@ -3158,7 +3170,15 @@ (if_then_else (eq_attr "alternative" "5,6,7,8") (const_string "sse2") (const_string "*"))) - (set_attr "type" "fmov,fmov,fmov,multi,multi,sselog1,ssemov,ssemov,ssemov,sselog1,ssemov,ssemov,ssemov") + (set (attr "type") + (cond [(eq_attr "alternative" "0,1,2") + (const_string "fmov") + (eq_attr "alternative" "3,4") + (const_string "multi") + (eq_attr "alternative" "5,9") + (const_string "sselog1") + ] + (const_string "ssemov"))) (set (attr "prefix") (if_then_else (eq_attr "alternative" "0,1,2,3,4") (const_string "orig") @@ -3272,7 +3292,17 @@ gcc_unreachable (); } } - [(set_attr "type" "fmov,fmov,fmov,imov,imov,sselog1,ssemov,ssemov,ssemov,mmxmov,mmxmov,mmxmov,ssemov,ssemov,mmxmov,mmxmov") + [(set (attr "type") + (cond [(eq_attr "alternative" "0,1,2") + (const_string "fmov") + (eq_attr "alternative" "3,4") + (const_string "multi") + (eq_attr "alternative" "5") + (const_string "sselog1") + (eq_attr "alternative" "9,10,11,14,15") + (const_string "mmxmov") + ] + (const_string "ssemov"))) (set (attr "prefix") (if_then_else (eq_attr "alternative" "5,6,7,8,12,13") (const_string "maybe_vex") Index: i386.c =================================================================== --- i386.c (revision 178889) +++ i386.c (working copy) @@ -14900,21 +14900,16 @@ output_fp_compare (rtx insn, rtx *operands, bool e if (is_sse) { - static const char ucomiss[] = "vucomiss\t{%1, %0|%0, %1}"; - static const char ucomisd[] = "vucomisd\t{%1, %0|%0, %1}"; - static const char comiss[] = "vcomiss\t{%1, %0|%0, %1}"; - static const char comisd[] = "vcomisd\t{%1, %0|%0, %1}"; - if (GET_MODE (operands[0]) == SFmode) if (unordered_p) - return &ucomiss[TARGET_AVX ? 0 : 1]; + return "%vucomiss\t{%1, %0|%0, %1}"; else - return &comiss[TARGET_AVX ? 0 : 1]; + return "%vcomiss\t{%1, %0|%0, %1}"; else if (unordered_p) - return &ucomisd[TARGET_AVX ? 0 : 1]; + return "%vucomisd\t{%1, %0|%0, %1}"; else - return &comisd[TARGET_AVX ? 0 : 1]; + return "%vcomisd\t{%1, %0|%0, %1}"; } gcc_assert (STACK_TOP_P (cmp_op0));