public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PR66791][ARM] Replace __builtin_neon_vneg* by - for vneg intrinsics
@ 2020-12-03 10:53 Prathamesh Kulkarni
  2020-12-08  9:56 ` Prathamesh Kulkarni
  0 siblings, 1 reply; 3+ messages in thread
From: Prathamesh Kulkarni @ 2020-12-03 10:53 UTC (permalink / raw)
  To: gcc Patches, Kyrill Tkachov

[-- Attachment #1: Type: text/plain, Size: 174 bytes --]

Hi,
This patch replaces calls to __builtin_neon_vneg* builtins by -
operator, for vneg intrinsics in arm_neon.h.
Cross-tested on arm*-*-*.
OK to commit ?

Thanks,
Prathamesh

[-- Attachment #2: vneg-1.diff --]
[-- Type: application/octet-stream, Size: 1948 bytes --]

diff --git a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
index 9569e1a4c9c..0ae5b28d243 100644
--- a/gcc/config/arm/arm_neon.h
+++ b/gcc/config/arm/arm_neon.h
@@ -5714,56 +5714,56 @@ __extension__ extern __inline int8x8_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vneg_s8 (int8x8_t __a)
 {
-  return (int8x8_t)__builtin_neon_vnegv8qi (__a);
+  return -__a;
 }
 
 __extension__ extern __inline int16x4_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vneg_s16 (int16x4_t __a)
 {
-  return (int16x4_t)__builtin_neon_vnegv4hi (__a);
+  return -__a;
 }
 
 __extension__ extern __inline int32x2_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vneg_s32 (int32x2_t __a)
 {
-  return (int32x2_t)__builtin_neon_vnegv2si (__a);
+  return -__a;
 }
 
 __extension__ extern __inline float32x2_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vneg_f32 (float32x2_t __a)
 {
-  return (float32x2_t)__builtin_neon_vnegv2sf (__a);
+  return -__a;
 }
 
 __extension__ extern __inline int8x16_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vnegq_s8 (int8x16_t __a)
 {
-  return (int8x16_t)__builtin_neon_vnegv16qi (__a);
+  return -__a;
 }
 
 __extension__ extern __inline int16x8_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vnegq_s16 (int16x8_t __a)
 {
-  return (int16x8_t)__builtin_neon_vnegv8hi (__a);
+  return -__a;
 }
 
 __extension__ extern __inline int32x4_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vnegq_s32 (int32x4_t __a)
 {
-  return (int32x4_t)__builtin_neon_vnegv4si (__a);
+  return -__a;
 }
 
 __extension__ extern __inline float32x4_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vnegq_f32 (float32x4_t __a)
 {
-  return (float32x4_t)__builtin_neon_vnegv4sf (__a);
+  return -__a;
 }
 
 __extension__ extern __inline int8x8_t

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PR66791][ARM] Replace __builtin_neon_vneg* by - for vneg intrinsics
  2020-12-03 10:53 [PR66791][ARM] Replace __builtin_neon_vneg* by - for vneg intrinsics Prathamesh Kulkarni
@ 2020-12-08  9:56 ` Prathamesh Kulkarni
  2020-12-11 11:46   ` Kyrylo Tkachov
  0 siblings, 1 reply; 3+ messages in thread
From: Prathamesh Kulkarni @ 2020-12-08  9:56 UTC (permalink / raw)
  To: gcc Patches, Kyrill Tkachov

[-- Attachment #1: Type: text/plain, Size: 526 bytes --]

On Thu, 3 Dec 2020 at 16:23, Prathamesh Kulkarni
<prathamesh.kulkarni@linaro.org> wrote:
>
> Hi,
> This patch replaces calls to __builtin_neon_vneg* builtins by -
> operator, for vneg intrinsics in arm_neon.h.
> Cross-tested on arm*-*-*.
> OK to commit ?
This patch removes call to entry for vneg from arm_neon_builtins.def.
There's another entry:
VAR2 (UNOP, vneg, v8hf, v4hf)
I am not sure if I should remove it since the patch doesn't remove
calls to either of these builtins ?

Thanks,
Prathamesh
>
> Thanks,
> Prathamesh

[-- Attachment #2: vneg-2.diff --]
[-- Type: application/octet-stream, Size: 2604 bytes --]

diff --git a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
index 9569e1a4c9c..0ae5b28d243 100644
--- a/gcc/config/arm/arm_neon.h
+++ b/gcc/config/arm/arm_neon.h
@@ -5714,56 +5714,56 @@ __extension__ extern __inline int8x8_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vneg_s8 (int8x8_t __a)
 {
-  return (int8x8_t)__builtin_neon_vnegv8qi (__a);
+  return -__a;
 }
 
 __extension__ extern __inline int16x4_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vneg_s16 (int16x4_t __a)
 {
-  return (int16x4_t)__builtin_neon_vnegv4hi (__a);
+  return -__a;
 }
 
 __extension__ extern __inline int32x2_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vneg_s32 (int32x2_t __a)
 {
-  return (int32x2_t)__builtin_neon_vnegv2si (__a);
+  return -__a;
 }
 
 __extension__ extern __inline float32x2_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vneg_f32 (float32x2_t __a)
 {
-  return (float32x2_t)__builtin_neon_vnegv2sf (__a);
+  return -__a;
 }
 
 __extension__ extern __inline int8x16_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vnegq_s8 (int8x16_t __a)
 {
-  return (int8x16_t)__builtin_neon_vnegv16qi (__a);
+  return -__a;
 }
 
 __extension__ extern __inline int16x8_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vnegq_s16 (int16x8_t __a)
 {
-  return (int16x8_t)__builtin_neon_vnegv8hi (__a);
+  return -__a;
 }
 
 __extension__ extern __inline int32x4_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vnegq_s32 (int32x4_t __a)
 {
-  return (int32x4_t)__builtin_neon_vnegv4si (__a);
+  return -__a;
 }
 
 __extension__ extern __inline float32x4_t
 __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
 vnegq_f32 (float32x4_t __a)
 {
-  return (float32x4_t)__builtin_neon_vnegv4sf (__a);
+  return -__a;
 }
 
 __extension__ extern __inline int8x8_t
diff --git a/gcc/config/arm/arm_neon_builtins.def b/gcc/config/arm/arm_neon_builtins.def
index 0ff0494b5da..f8d9a243573 100644
--- a/gcc/config/arm/arm_neon_builtins.def
+++ b/gcc/config/arm/arm_neon_builtins.def
@@ -195,7 +195,6 @@ VAR8 (UNOP, vabs, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
 VAR2 (UNOP, vabs, v8hf, v4hf)
 VAR2 (UNOP, vneg, v8hf, v4hf)
 VAR6 (UNOP, vqabs, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
-VAR8 (UNOP, vneg, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
 VAR6 (UNOP, vqneg, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
 VAR6 (UNOP, vcls, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
 VAR6 (UNOP, vclz, v8qi, v4hi, v2si, v16qi, v8hi, v4si)

^ permalink raw reply	[flat|nested] 3+ messages in thread

* RE: [PR66791][ARM] Replace __builtin_neon_vneg* by - for vneg intrinsics
  2020-12-08  9:56 ` Prathamesh Kulkarni
@ 2020-12-11 11:46   ` Kyrylo Tkachov
  0 siblings, 0 replies; 3+ messages in thread
From: Kyrylo Tkachov @ 2020-12-11 11:46 UTC (permalink / raw)
  To: Prathamesh Kulkarni, gcc Patches



> -----Original Message-----
> From: Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
> Sent: 08 December 2020 09:57
> To: gcc Patches <gcc-patches@gcc.gnu.org>; Kyrylo Tkachov
> <Kyrylo.Tkachov@arm.com>
> Subject: Re: [PR66791][ARM] Replace __builtin_neon_vneg* by - for vneg
> intrinsics
> 
> On Thu, 3 Dec 2020 at 16:23, Prathamesh Kulkarni
> <prathamesh.kulkarni@linaro.org> wrote:
> >
> > Hi,
> > This patch replaces calls to __builtin_neon_vneg* builtins by -
> > operator, for vneg intrinsics in arm_neon.h.
> > Cross-tested on arm*-*-*.
> > OK to commit ?

Ok.

> This patch removes call to entry for vneg from arm_neon_builtins.def.
> There's another entry:
> VAR2 (UNOP, vneg, v8hf, v4hf)
> I am not sure if I should remove it since the patch doesn't remove
> calls to either of these builtins ?

Looks like it's an obsolete remainder.
A separate patch to remove it is pre-approved.
Thanks,
Kyrill


> 
> Thanks,
> Prathamesh
> >
> > Thanks,
> > Prathamesh

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-12-11 11:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-03 10:53 [PR66791][ARM] Replace __builtin_neon_vneg* by - for vneg intrinsics Prathamesh Kulkarni
2020-12-08  9:56 ` Prathamesh Kulkarni
2020-12-11 11:46   ` Kyrylo Tkachov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).