aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChangpeng Fang <changpeng.fang@amd.com>2011-03-04 17:56:39 +0000
committerChangpeng Fang <cfang@gcc.gnu.org>2011-03-04 17:56:39 +0000
commitd9c642462049486d1dbf560686723313193baf43 (patch)
tree3c50e34a6c3fd630527aee6807e1f3d67a274f6f
parent7a9d7a4f865490d0972a07dc4d8ae2de6b2c5a27 (diff)
downloadgcc-d9c642462049486d1dbf560686723313193baf43.zip
gcc-d9c642462049486d1dbf560686723313193baf43.tar.gz
gcc-d9c642462049486d1dbf560686723313193baf43.tar.bz2
Introduce flag -mprefer-avx128 for the auto-vectorizer to generate only 128-bit avx insns.
* 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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c4
-rw-r--r--gcc/config/i386/i386.opt4
3 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 838b8ce..ec81d68 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index aa59ada..82d999b 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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:
diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt
index 85362d7..0563bc1 100644
--- a/gcc/config/i386/i386.opt
+++ b/gcc/config/i386/i386.opt
@@ -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