On Wed, Mar 23, 2016 at 12:28 PM, Kirill Yukhin <kirill.yuk...@gmail.com> wrote: > Hello, > > `vpcmpeqd' insn is only available in AVX2, however > [1] added check for AVX instead. Looks like a typo. > > Patch in the bottom fixes that. > > Bootstrapped, regtest still run. > Is it ok for main trunk if pass? > > gcc/ > * config/i386/i386.c (standard_sse_constant_opcode): Emit > vpcmpeqd if AVX2 is enabled. > > [1] - https://gcc.gnu.org/ml/gcc-cvs/2011-09/msg00318.html
No, the change is OK (standard_sse_constant_p does all the checks), but nowadays we could write this part as: --cut here-- diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 1639704..59154c3 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -10859,10 +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) - return "vpcmpeqd\t%0, %0, %0"; - else - return "pcmpeqd\t%0, %0"; + return "%vpcmpeqd\t%0, %d0"; default: break; -- cut here-- Uros. > -- > Thanks, K > > commit e30c86b06968416e7401a113b866ae353311aa10 > Author: Kirill Yukhin <kirill.yuk...@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..7f5db75 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) > return "vpcmpeqd\t%0, %0, %0"; > else > return "pcmpeqd\t%0, %0"; >