[PATCH, i386]: A couple of cleanups.
Uros Bizjak
ubizjak@gmail.com
Thu Sep 15 20:40:00 GMT 2011
Hello!
No functional change.
2011-09-15 Uros Bizjak <ubizjak@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.
-------------- next part --------------
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));
More information about the Gcc-patches
mailing list