On Tue, Jun 27, 2017 at 12:02 PM, Jakub Jelinek <ja...@redhat.com> wrote: > On Fri, Jun 23, 2017 at 02:54:35PM +0200, Richard Biener wrote: >> 2017-06-23 Richard Biener <rguent...@suse.de> >> >> PR target/81175 >> * config/i386/i386.c (struct builtin_isa): Add pure_p member. >> (def_builtin2): Initialize pure_p. >> (ix86_add_new_builtins): Honor pure_p. >> (def_builtin_pure): New function. >> (ix86_init_mmx_sse_builtins): Use def_builtin_pure for all >> gather builtins. > >> *************** ix86_init_mmx_sse_builtins (void) >> *** 31985,32002 **** >> IX86_BUILTIN_SCATTERALTDIV16SI); >> >> /* AVX512PF */ >> ! def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdpd", >> ! VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFDPD); >> ! def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdps", >> ! VOID_FTYPE_HI_V16SI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFDPS); >> ! def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqpd", >> ! VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFQPD); >> ! def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqps", >> ! VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFQPS); >> def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfdpd", >> VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, >> IX86_BUILTIN_SCATTERPFDPD); >> --- 32004,32021 ---- >> IX86_BUILTIN_SCATTERALTDIV16SI); >> >> /* AVX512PF */ >> ! def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdpd", >> ! VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFDPD); >> ! def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdps", >> ! VOID_FTYPE_HI_V16SI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFDPS); >> ! def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqpd", >> ! VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFQPD); >> ! def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqps", >> ! VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, >> ! IX86_BUILTIN_GATHERPFQPS); >> def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfdpd", >> VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, >> IX86_BUILTIN_SCATTERPFDPD); > > The above hunk looks wrong and regresses > +FAIL: gcc.target/i386/avx512pf-vgatherpf0dpd-1.c scan-assembler-times > vgatherpf0dpd[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > +FAIL: gcc.target/i386/avx512pf-vgatherpf0dps-1.c scan-assembler-times > vgatherpf0dps[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > +FAIL: gcc.target/i386/avx512pf-vgatherpf0qpd-1.c scan-assembler-times > vgatherpf0qpd[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > +FAIL: gcc.target/i386/avx512pf-vgatherpf0qps-1.c scan-assembler-times > vgatherpf0qps[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > +FAIL: gcc.target/i386/avx512pf-vgatherpf1dpd-1.c scan-assembler-times > vgatherpf1dpd[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > +FAIL: gcc.target/i386/avx512pf-vgatherpf1dps-1.c scan-assembler-times > vgatherpf1dps[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > +FAIL: gcc.target/i386/avx512pf-vgatherpf1qpd-1.c scan-assembler-times > vgatherpf1qpd[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > +FAIL: gcc.target/i386/avx512pf-vgatherpf1qps-1.c scan-assembler-times > vgatherpf1qps[ \\\\t]+[^{\\n]*{%k[1-7]}(?:\\n|[ \\\\t]+#) 2 > The prefetch intrinsics can't be pure, after all they return void, so > as pure are always optimized away. > > Ok for trunk if it passes bootstrap/regtest? > > 2017-06-27 Jakub Jelinek <ja...@redhat.com> > > PR target/81175 > * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use def_builtin > rather than def_builtin_pure for __builtin_ia32_gatherpf*.
Looks obvious to me, especially after the above explanation. Thanks, Uros. > --- gcc/config/i386/i386.c.jj 2017-06-27 09:16:09.000000000 +0200 > +++ gcc/config/i386/i386.c 2017-06-27 11:47:21.610627628 +0200 > @@ -32886,18 +32886,18 @@ ix86_init_mmx_sse_builtins (void) > IX86_BUILTIN_SCATTERALTDIV16SI); > > /* AVX512PF */ > - def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdpd", > - VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, > - IX86_BUILTIN_GATHERPFDPD); > - def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdps", > - VOID_FTYPE_HI_V16SI_PCVOID_INT_INT, > - IX86_BUILTIN_GATHERPFDPS); > - def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqpd", > - VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, > - IX86_BUILTIN_GATHERPFQPD); > - def_builtin_pure (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqps", > - VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, > - IX86_BUILTIN_GATHERPFQPS); > + def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdpd", > + VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, > + IX86_BUILTIN_GATHERPFDPD); > + def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdps", > + VOID_FTYPE_HI_V16SI_PCVOID_INT_INT, > + IX86_BUILTIN_GATHERPFDPS); > + def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqpd", > + VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, > + IX86_BUILTIN_GATHERPFQPD); > + def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqps", > + VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, > + IX86_BUILTIN_GATHERPFQPS); > def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfdpd", > VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, > IX86_BUILTIN_SCATTERPFDPD); > > > Jakub