On Mon, 7 Dec 2020 at 16:34, Kyrylo Tkachov <kyrylo.tkac...@arm.com> wrote: > > Hi Prathamesh, > > > -----Original Message----- > > From: Prathamesh Kulkarni <prathamesh.kulka...@linaro.org> > > Sent: 07 December 2020 11:01 > > To: Kyrylo Tkachov <kyrylo.tkac...@arm.com> > > Cc: gcc-patches@gcc.gnu.org > > Subject: Re: [PR66791][ARM] Replace calls to __builtin_neon_vmvn* by ~ for > > vmvn intrinsics > > > > On Thu, 3 Dec 2020 at 16:05, Kyrylo Tkachov <kyrylo.tkac...@arm.com> > > wrote: > > > > > > > > > > > > > -----Original Message----- > > > > From: Gcc-patches <gcc-patches-boun...@gcc.gnu.org> On Behalf Of > > > > Prathamesh Kulkarni via Gcc-patches > > > > Sent: 03 December 2020 10:30 > > > > To: gcc Patches <gcc-patches@gcc.gnu.org>; Kyrill Tkachov > > > > <kyrylo.tkac...@foss.arm.com> > > > > Subject: Re: [PR66791][ARM] Replace calls to __builtin_neon_vmvn* by ~ > > for > > > > vmvn intrinsics > > > > > > > > On Wed, 25 Nov 2020 at 22:01, Prathamesh Kulkarni > > > > <prathamesh.kulka...@linaro.org> wrote: > > > > > > > > > > Hi, > > > > > This patch replaces calls to __builtin_neon_vmvnv* builtins with ~ > > > > > operator in arm_neon.h. > > > > > Cross-tested on arm*-*-*. > > > > > OK to commit ? > > > > > > Ok. > > Hi Kyrill, > > I have attached an updated patch that removes entry for vmvn from > > arm_neon_builtins.def, > > but I am not sure if that's sufficient ? > > > > I tried this: > > __extension__ extern __inline uint32x2_t > > __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) > > vmvn_u32 (uint32x2_t __a) > > { > > return (uint32x4_t)__builtin_neon_vmvnv4si ((int32x4_t) __a); > > // return ~__a; > > } > > > > after removing the entry for vmvn, from arm_neon_builtins.def, but > > compilation appeared to proceed successfully, > > so I guess it hasn't stopped the builtin from being created ? > > > > I think you'll want to look at the generated assembly? > IIRC if the builtin isn't created then the assembly will contain a call to > __builtin_neon_vmvnv4si, which of course will fail at link-time. Ah, indeed. When I try to call it, it now results in: vmvn.c:6:22: warning: implicit declaration of function ‘__builtin_neon_vmvnv2si’; did you mean ‘__builtin_neon_vmlav2si’? [-Wimplicit-function-declaration] 6 | return (uint32x2_t)__builtin_neon_vmvnv2si ((int32x2_t) __a); | ^~~~~~~~~~~~~~~~~~~~~~~ | __builtin_neon_vmlav2si vmvn.c:6:3: error: cannot convert a value of type ‘int’ to vector type ‘__simd64_uint32_t’ which has different size 6 | return (uint32x2_t)__builtin_neon_vmvnv2si ((int32x2_t) __a); | ^~~~~~
so I suppose it has correctly removed it. Is it OK to commit the patch ? Thanks, Prathamesh > > Thanks, > Kyrill > > > Thanks, > > Prathamesh > > > Sorry for missing this. > > > Thanks, > > > Kyrill > > > > > > P.S. please use my @arm.com address when CC'ing me, I don't have access > > to the foss.arm.com one currently... > > > > > > > ping https://gcc.gnu.org/pipermail/gcc-patches/2020- > > > > November/560223.html > > > > > > > > Thanks, > > > > Prathamesh > > > > > > > > > > Thanks, > > > > > Prathamesh