Yes, you are right. I renamed the flag to -mprefers-avx128 and modified
the documentation.
Is this OK to commit to 4.6?
Thanks,
Changpeng
________________________________________
From: Richard Henderson [[email protected]]
Sent: Wednesday, March 02, 2011 3:50 PM
To: Fang, Changpeng
Cc: Jakub Jelinek; H.J. Lu; Richard Guenther; [email protected];
[email protected]
Subject: Re: [PATCH, i386] Introduce a flag to generate only 128-bit avx
instructions
On 03/03/2011 03:39 AM, Fang, Changpeng wrote:
> case SFmode:
> - return TARGET_AVX ? V8SFmode : V4SFmode;
> + return (TARGET_AVX && !flag_avx_m128_only) ? V8SFmode : V4SFmode;
> case DFmode:
> - return TARGET_AVX ? V4DFmode : V2DFmode;
> + return (TARGET_AVX && !flag_avx_m128_only) ? V4DFmode : V2DFmode;
> case DImode:
> return V2DImode;
> case SImode:
> diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt
> index 85362d7..8968b25 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.
>
> +mavx-m128-only
> +Target Report Var(flag_avx_m128_only) Init(0)
> +Generate only 128-bit AVX instructions.
You've not actually disabled 256-bit avx insns. The documentation for
that switch suggests that you should. Perhaps you want to expand the
documentation to say use only 128-bit insns for auto-vectorization?
r~
From 8c3ddf13024d426954986befd742448fa3805788 Mon Sep 17 00:00:00 2001
From: Changpeng Fang <chfang@houghton.(none)>
Date: Tue, 1 Mar 2011 12:50:46 -0800
Subject: [PATCH] Introduce flag -mprefers-avx128 for the vectorizer to generate only 128-bit avx insns.
* config/i386/i386.opt (mprefers-avx128): New flag.
* config/i386/i386.c (ix86_preferred_simd_mode): Prefer 128-bit mode
if the flag -mprefers-avx128 is turned on.
---
gcc/config/i386/i386.c | 4 ++--
gcc/config/i386/i386.opt | 5 +++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index aa59ada..b92c10d 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_prefers_avx128) ? V8SFmode : V4SFmode;
case DFmode:
- return TARGET_AVX ? V4DFmode : V2DFmode;
+ return (TARGET_AVX && !flag_prefers_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..b4979ee 100644
--- a/gcc/config/i386/i386.opt
+++ b/gcc/config/i386/i386.opt
@@ -266,6 +266,11 @@ Target RejectNegative Var(flag_dispatch_scheduler)
Do dispatch scheduling if processor is bdver1 and Haifa scheduling
is selected.
+mprefers-avx128
+Target Report Var(flag_prefers_avx128) Init(0)
+Auto-vectorizer prefers to generate 128-bit AVX instructions instead of 256-bit
+ones.
+
;; ISA support
m32
--
1.6.3.3