This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, i386, AVX] Fix typo in i386.c/standard_sse_constant_opcode ().


On Wed, Mar 23, 2016 at 02:47:54PM +0300, Kirill Yukhin wrote:
> > This code is only executed if standard_sse_constant_p returns 2, which
> > is for 16-byte vectors and all ones for TARGET_SSE2, and for
> > 32-byte vectors for TARGET_AVX2.
> > Thus, IMNSHO the patch is wrong, even for plain -mavx -mno-avx2
> > we want to emit vpcmpeqd %xmm?, %xmm?, %xmm?, so that we don't mix
> > VEX with non-VEX encoded insns.
> You're right. I've updated the patch to check mode size as well.

That is also wrong, you will then emit vpcmpeqd even for -msse2 -mno-avx.

There is really nothing wrong in what is on the trunk, no reason to patch
anything.  What the trunk does is, if you have AVX, you emit VEX encoded
insn, if you don't have AVX, you emit normally encoded insn.
And whether there is support to get cheap all ones is the business of
standard_sse_constant_p function, which DTRT.

> commit ae82089e3a4244d870737a7022e66e87042da811
> Author: Kirill Yukhin <kirill.yukhin@intel.com>
> Date:   Wed Mar 23 14:08:07 2016 +0300
> 
>     AVX2. Emit vpcmpeqd for const_m1 only if AVX2 is enabled.
> 
> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
> index 1639704..963cc3d 100644
> --- a/gcc/config/i386/i386.c
> +++ b/gcc/config/i386/i386.c
> @@ -10859,7 +10859,7 @@ standard_sse_constant_opcode (rtx_insn *insn, rtx x)
>           || get_attr_mode (insn) == MODE_V8DF
>           || get_attr_mode (insn) == MODE_V16SF)
>         return "vpternlogd\t{$0xFF, %g0, %g0, %g0|%g0, %g0, %g0, 0xFF}";
> -      if (TARGET_AVX)
> +      if (TARGET_AVX2 || get_attr_mode (insn) == 16)
>         return "vpcmpeqd\t%0, %0, %0";
>        else
>         return "pcmpeqd\t%0, %0";

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]