On Thu, Jun 24, 2021 at 6:29 PM Kyrylo Tkachov via Gcc-patches < gcc-patches@gcc.gnu.org> wrote:
> > > > -----Original Message----- > > From: Prathamesh Kulkarni <prathamesh.kulka...@linaro.org> > > Sent: 24 June 2021 12:11 > > To: gcc Patches <gcc-patches@gcc.gnu.org>; Kyrylo Tkachov > > <kyrylo.tkac...@arm.com> > > Subject: [ARM] PR66791: Replace builtins for vdup_n and vmov_n intrinsics > > > > Hi, > > This patch replaces builtins for vdup_n and vmov_n. > > The patch results in regression for pr51534.c. > > Consider following function: > > > > uint8x8_t f1 (uint8x8_t a) { > > return vcgt_u8(a, vdup_n_u8(0)); > > } > > > > code-gen before patch: > > f1: > > vmov.i32 d16, #0 @ v8qi > > vcgt.u8 d0, d0, d16 > > bx lr > > > > code-gen after patch: > > f1: > > vceq.i8 d0, d0, #0 > > vmvn d0, d0 > > bx lr > > > > I am not sure which one is better tho ? > > Hi Prathamesh, This patch introduces a regression on non-hardfp configs (eg arm-linux-gnueabi or arm-eabi): FAIL: gcc:gcc.target/arm/arm.exp=gcc.target/arm/pr51534.c scan-assembler-times vmov.i32[ \t]+[dD][0-9]+, #0xffffffff 3 FAIL: gcc:gcc.target/arm/arm.exp=gcc.target/arm/pr51534.c scan-assembler-times vmov.i32[ \t]+[qQ][0-9]+, #4294967295 3 Can you fix this? Thanks Christophe > I think they're equivalent in practice, in any case the patch itself is > good (move away from RTL builtins). > Ok. > Thanks, > Kyrill > > > > > Also, this patch regressed bf16_dup.c on arm-linux-gnueabi, > > which is due to a missed opt in lowering. I had filed it as > > PR98435, and posted a fix for it here: > > https://gcc.gnu.org/pipermail/gcc-patches/2021-June/572648.html > > > > Thanks, > > Prathamesh >