[AVX]: Add AVX support to *sse_prologue_save_insn

H.J. Lu hjl.tools@gmail.com
Sun May 25 15:03:00 GMT 2008


Hi,

I am checking this patch to add AVX support to *sse_prologue_save_insn
so that we can use -Wa,-msse-check=error -mavx with gcc. This fix
doesn't support 256bit registers.  We will change it when AVX support
is added to varargs.

Thanks.

H.J.
Index: ChangeLog.avx
===================================================================
--- ChangeLog.avx	(revision 135862)
+++ ChangeLog.avx	(working copy)
@@ -1,3 +1,7 @@
+2008-05-23  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/i386/i386.md (*sse_prologue_save_insn): Support AVX.
+
 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
Index: config/i386/i386.md
===================================================================
--- config/i386/i386.md	(revision 135862)
+++ config/i386/i386.md	(working copy)
@@ -21436,6 +21436,8 @@
   "TARGET_64BIT"
   "")
 
+;; FIXME: Is this used by variable arguments? We need to properly
+;; update it for 256bit AVX registers.
 (define_insn "*sse_prologue_save_insn"
   [(set (mem:BLK (plus:DI (match_operand:DI 0 "register_operand" "R")
 			  (match_operand:DI 4 "const_int_operand" "n")))
@@ -21465,7 +21467,7 @@
       PUT_MODE (operands[4], TImode);
       if (GET_CODE (XEXP (operands[0], 0)) != PLUS)
         output_asm_insn ("rex", operands);
-      output_asm_insn ("movaps\t{%5, %4|%4, %5}", operands);
+      output_asm_insn ("%vmovaps\t{%5, %4|%4, %5}", operands);
     }
   (*targetm.asm_out.internal_label) (asm_out_file, "L",
 				     CODE_LABEL_NUMBER (operands[3]));
@@ -21477,6 +21479,7 @@
    (set_attr "length" "135")
    (set_attr "memory" "store")
    (set_attr "modrm" "0")
+   (set_attr "prefix" "maybe_vex")
    (set_attr "mode" "DI")])
 
 (define_expand "prefetch"



More information about the Gcc-patches mailing list