> -----Original Message----- > From: Prathamesh Kulkarni <[email protected]> > Sent: 24 June 2021 12:11 > To: gcc Patches <[email protected]>; Kyrylo Tkachov > <[email protected]> > 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 ?
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
