On Tue, Jan 12, 2016 at 5:12 AM, Kirill Yukhin <kirill.yuk...@gmail.com> wrote: > Hello Jakub > On 08 Jan 21:20, Jakub Jelinek wrote: >> Hi! >> >> This patch fixes >> FAIL: gcc.target/i386/avx512vl-vmovapd-1.c scan-assembler-times vmovapd[ >> \\\\t]+[^{\\n]*%xmm[0-9]+[^\\n]*\\\\){%k[1-7]}(?:\\n|[ \\\\t]+#) 1 >> FAIL: gcc.target/i386/avx512vl-vmovapd-1.c scan-assembler-times vmovapd[ >> \\\\t]+[^{\\n]*%ymm[0-9]+[^\\n]*\\\\){%k[1-7]}(?:\\n|[ \\\\t]+#) 1 >> FAIL: gcc.target/i386/avx512vl-vmovaps-1.c scan-assembler-times vmovaps[ >> \\\\t]+[^{\\n]*%xmm[0-9]+[^\\n]*\\\\){%k[1-7]}(?:\\n|[ \\\\t]+#) 1 >> FAIL: gcc.target/i386/avx512vl-vmovaps-1.c scan-assembler-times vmovaps[ >> \\\\t]+[^{\\n]*%ymm[0-9]+[^\\n]*\\\\){%k[1-7]}(?:\\n|[ \\\\t]+#) 1 >> regressions that were introduced recently by fixing up the masked store >> check for misalignment. >> The problem is that for v2df/v4df/v4sf/v8sf masked stores >> ix86_expand_special_args_builtin >> failed to set aligned_mem and thus didn't set correct memory alignment. >> >> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? > Followed you discussion w/ HJ. > I think that metioned intrinsics should assume proper alignement and this > agrees with SDM. > > So, your patch is ok for main trunk. > > -- > Thanks, K > > >> >> 2016-01-08 Jakub Jelinek <ja...@redhat.com> >> >> PR target/69198 >> * config/i386/i386.c (ix86_expand_special_args_builtin): Ensure >> aligned_mem is properly set for AVX512-VL floating point masked >> stores. >> >> --- gcc/config/i386/i386.c.jj 2016-01-08 07:31:11.000000000 +0100 >> +++ gcc/config/i386/i386.c 2016-01-08 18:16:21.030354042 +0100 >> @@ -39776,7 +39776,11 @@ ix86_expand_special_args_builtin (const >> memory = 0; >> break; >> case VOID_FTYPE_PV8DF_V8DF_UQI: >> + case VOID_FTYPE_PV4DF_V4DF_UQI: >> + case VOID_FTYPE_PV2DF_V2DF_UQI: >> case VOID_FTYPE_PV16SF_V16SF_UHI: >> + case VOID_FTYPE_PV8SF_V8SF_UQI: >> + case VOID_FTYPE_PV4SF_V4SF_UQI: >> case VOID_FTYPE_PV8DI_V8DI_UQI: >> case VOID_FTYPE_PV4DI_V4DI_UQI: >> case VOID_FTYPE_PV2DI_V2DI_UQI: >> @@ -39834,10 +39838,6 @@ ix86_expand_special_args_builtin (const >> case VOID_FTYPE_PV16QI_V16QI_UHI: >> case VOID_FTYPE_PV32QI_V32QI_USI: >> case VOID_FTYPE_PV64QI_V64QI_UDI: >> - case VOID_FTYPE_PV4DF_V4DF_UQI: >> - case VOID_FTYPE_PV2DF_V2DF_UQI: >> - case VOID_FTYPE_PV8SF_V8SF_UQI: >> - case VOID_FTYPE_PV4SF_V4SF_UQI: >> nargs = 2; >> klass = store; >> /* Reserve memory operand for target. */ >> >> Jakub
GCC 5 has the same issue. This patch should be backported to GCC 5 with https://gcc.gnu.org/ml/gcc-patches/2016-01/msg00528.html which supersedes: https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=231269 OK to backport Jakub's and my patch for GCC 5? -- H.J.