[ARM] PR66791: Replace builtins for vdup_n and vmov_n intrinsics

Kyrylo Tkachov Kyrylo.Tkachov@arm.com
Thu Jun 24 16:28:27 GMT 2021



> -----Original Message-----
> From: Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
> Sent: 24 June 2021 12:11
> To: gcc Patches <gcc-patches@gcc.gnu.org>; Kyrylo Tkachov
> <Kyrylo.Tkachov@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 ?

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


More information about the Gcc-patches mailing list