Introduce flag -mprefer-avx128 for the auto-vectorizer to generate only 128-bit avx...
authorChangpeng Fang <changpeng.fang@amd.com>
Fri, 4 Mar 2011 17:56:39 +0000 (17:56 +0000)
committerChangpeng Fang <cfang@gcc.gnu.org>
Fri, 4 Mar 2011 17:56:39 +0000 (17:56 +0000)
* config/i386/i386.opt (mprefer-avx128): New flag.
* config/i386/i386.c (ix86_preferred_simd_mode): Prefer 128-bit mode
when the flag -mprefer-avx128 is on.

From-SVN: r170681

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.opt

index 838b8cedf4c690d85c9bbc4705362c44bacaaf34..ec81d68394dc0e4a5db700b89a39e559042b31ab 100644 (file)
@@ -1,3 +1,9 @@
+2011-03-04  Changpeng Fang  <changpeng.fang@amd.com>
+
+       * config/i386/i386.opt (mprefer-avx128): New flag.
+       * config/i386/i386.c (ix86_preferred_simd_mode): Prefer 128-bit mode
+       when the flag -mprefer-avx128 is on.
+
 2011-03-04  Richard Sandiford  <richard.sandiford@linaro.org>
 
        * dwarf2out.c (compare_loc_operands): Fix address handling.
index aa59adacd5e7aba0a7662132f7aa0a4058662caa..82d999beb92f2c75602a3475d1abe3617916ab10 100644 (file)
@@ -34747,9 +34747,9 @@ ix86_preferred_simd_mode (enum machine_mode mode)
   switch (mode)
     {
     case SFmode:
-      return TARGET_AVX ? V8SFmode : V4SFmode;
+      return (TARGET_AVX && !flag_prefer_avx128) ? V8SFmode : V4SFmode;
     case DFmode:
-      return TARGET_AVX ? V4DFmode : V2DFmode;
+      return (TARGET_AVX && !flag_prefer_avx128) ? V4DFmode : V2DFmode;
     case DImode:
       return V2DImode;
     case SImode:
index 85362d73105546444705266544d11382ed4ed8fb..0563bc1f925d7ff1a1441d0dcd1979e094a8d800 100644 (file)
@@ -266,6 +266,10 @@ Target RejectNegative Var(flag_dispatch_scheduler)
 Do dispatch scheduling if processor is bdver1 and Haifa scheduling
 is selected.
 
+mprefer-avx128
+Target Report Var(flag_prefer_avx128) Init(0)
+Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer.
+
 ;; ISA support
 
 m32