]> gcc.gnu.org Git - gcc.git/commitdiff
Set use_avx256_p if 256bit AVX register is used in vector move.
authorH.J. Lu <hongjiu.lu@intel.com>
Wed, 3 Nov 2010 21:16:36 +0000 (21:16 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Wed, 3 Nov 2010 21:16:36 +0000 (14:16 -0700)
gcc/

2010-11-03  H.J. Lu  <hongjiu.lu@intel.com>

PR target/46295
* config/i386/i386.c (ix86_expand_vector_move): Set use_avx256_p
if 256bit AVX register is used.

gcc/testsuite/

2010-11-03  H.J. Lu  <hongjiu.lu@intel.com>

PR target/46295
* gcc.target/i386/pr46295.c: New.

From-SVN: r166277

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr46295.c [new file with mode: 0644]

index 5c6387e3c7cd397b01136f3e488431ec01e91b13..87d9bc4248252f60e7b97632190dda4eac5a96a3 100644 (file)
@@ -1,3 +1,9 @@
+2010-11-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/46295
+       * config/i386/i386.c (ix86_expand_vector_move): Set use_avx256_p
+       if 256bit AVX register is used.
+
 2010-11-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        * config/rs6000/rs6000.c (rs6000_emit_minmax): Add support to use
index ba1e4fc51492db9f47563fa6b44238fa65c0144c..3558899c5893ada736e54363a3964a12b81991da 100644 (file)
@@ -15144,6 +15144,9 @@ ix86_expand_vector_move (enum machine_mode mode, rtx operands[])
   rtx op0 = operands[0], op1 = operands[1];
   unsigned int align = GET_MODE_ALIGNMENT (mode);
 
+  if (use_avx256_p (mode, NULL_TREE))
+    cfun->machine->use_avx256_p = true;
+
   /* Force constants other than zero into memory.  We do not know how
      the instructions used to build constants modify the upper 64 bits
      of the register, once we have that information we may be able
index 206798dd9b31e8d251a04a3d330f9a971ebdaf26..a602ecf6339741f3ef043490f0fdc7b627c68ad9 100644 (file)
@@ -1,3 +1,8 @@
+2010-11-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/46295
+       * gcc.target/i386/pr46295.c: New.
+
 2010-11-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        * gcc.target/powerpc/vsx-sfminmax.c: New test for using double
diff --git a/gcc/testsuite/gcc.target/i386/pr46295.c b/gcc/testsuite/gcc.target/i386/pr46295.c
new file mode 100644 (file)
index 0000000..219f34e
--- /dev/null
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -mavx -mtune=generic -dp" } */
+
+typedef double EXPRESS[5];
+void Parse_Rel_Factor (EXPRESS Express,int *Terms);
+void Parse_Vector ()
+{
+   EXPRESS Express;
+   int Terms;
+   for (Terms = 0; Terms < 5; Terms++)
+     Express[Terms] = 0.0;
+   Parse_Rel_Factor(Express,&Terms);
+}
+
+/* { dg-final { scan-assembler-times "avx_vzeroupper" 1 } } */
This page took 0.208169 seconds and 5 git commands to generate.