From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1922) id E329A383F422; Mon, 21 Jun 2021 09:23:38 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E329A383F422 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Prathamesh Kulkarni To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-1672] arm/66791: Replace builtins in vceq_* (a, b) with a == b. X-Act-Checkin: gcc X-Git-Author: prathamesh.kulkarni X-Git-Refname: refs/heads/master X-Git-Oldrev: 29a539a675b8ffd8e20fd3926d6ba0482ea0f275 X-Git-Newrev: 316dd79876873222552bdf6aa31338012bc9b955 Message-Id: <20210621092338.E329A383F422@sourceware.org> Date: Mon, 21 Jun 2021 09:23:38 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2021 09:23:39 -0000 https://gcc.gnu.org/g:316dd79876873222552bdf6aa31338012bc9b955 commit r12-1672-g316dd79876873222552bdf6aa31338012bc9b955 Author: prathamesh.kulkarni Date: Mon Jun 21 14:52:54 2021 +0530 arm/66791: Replace builtins in vceq_* (a, b) with a == b. gcc/ChangeLog: * config/arm/arm_neon.h (vceq_s8): Replace builtin with __a == __b. (vceq_s16): Likewise. (vceq_s32): Likewise. (vceq_u8): Likewise. (vceq_u16): Likewise. (vceq_u32): Likewise. (vceq_p8): Likewise. (vceqq_s8): Likewise. (vceqq_s16): Likewise. (vceqq_s32): Likewise. (vceqq_u8): Likewise. (vceqq_u16): Likewise. (vceqq_u32): Likewise. (vceqq_p8): Likewise. (vceq_f32): Gate __a == __b on __FAST_MATH__. (vceqq_f32): Likewise. (vceq_f16): Likewise. (vceqq_f16): Likewise. Diff: --- gcc/config/arm/arm_neon.h | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h index dcd533fd003..7a800062f9e 100644 --- a/gcc/config/arm/arm_neon.h +++ b/gcc/config/arm/arm_neon.h @@ -2359,112 +2359,120 @@ __extension__ extern __inline uint8x8_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceq_s8 (int8x8_t __a, int8x8_t __b) { - return (uint8x8_t)__builtin_neon_vceqv8qi (__a, __b); + return (uint8x8_t) (__a == __b); } __extension__ extern __inline uint16x4_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceq_s16 (int16x4_t __a, int16x4_t __b) { - return (uint16x4_t)__builtin_neon_vceqv4hi (__a, __b); + return (uint16x4_t) (__a == __b); } __extension__ extern __inline uint32x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceq_s32 (int32x2_t __a, int32x2_t __b) { - return (uint32x2_t)__builtin_neon_vceqv2si (__a, __b); + return (uint32x2_t) (__a == __b); } __extension__ extern __inline uint32x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceq_f32 (float32x2_t __a, float32x2_t __b) { +#ifdef __FAST_MATH__ + return (uint32x2_t) (__a == __b); +#else return (uint32x2_t)__builtin_neon_vceqv2sf (__a, __b); +#endif } __extension__ extern __inline uint8x8_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceq_u8 (uint8x8_t __a, uint8x8_t __b) { - return (uint8x8_t)__builtin_neon_vceqv8qi ((int8x8_t) __a, (int8x8_t) __b); + return (uint8x8_t) (__a == __b); } __extension__ extern __inline uint16x4_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceq_u16 (uint16x4_t __a, uint16x4_t __b) { - return (uint16x4_t)__builtin_neon_vceqv4hi ((int16x4_t) __a, (int16x4_t) __b); + return (uint16x4_t) (__a == __b); } __extension__ extern __inline uint32x2_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceq_u32 (uint32x2_t __a, uint32x2_t __b) { - return (uint32x2_t)__builtin_neon_vceqv2si ((int32x2_t) __a, (int32x2_t) __b); + return (uint32x2_t) (__a == __b); } __extension__ extern __inline uint8x8_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceq_p8 (poly8x8_t __a, poly8x8_t __b) { - return (uint8x8_t)__builtin_neon_vceqv8qi ((int8x8_t) __a, (int8x8_t) __b); + return (uint8x8_t) (__a == __b); } __extension__ extern __inline uint8x16_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceqq_s8 (int8x16_t __a, int8x16_t __b) { - return (uint8x16_t)__builtin_neon_vceqv16qi (__a, __b); + return (uint8x16_t) (__a == __b); } __extension__ extern __inline uint16x8_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceqq_s16 (int16x8_t __a, int16x8_t __b) { - return (uint16x8_t)__builtin_neon_vceqv8hi (__a, __b); + return (uint16x8_t) (__a == __b); } __extension__ extern __inline uint32x4_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceqq_s32 (int32x4_t __a, int32x4_t __b) { - return (uint32x4_t)__builtin_neon_vceqv4si (__a, __b); + return (uint32x4_t) (__a == __b); } __extension__ extern __inline uint32x4_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceqq_f32 (float32x4_t __a, float32x4_t __b) { +#ifdef __FAST_MATH__ + return (uint32x4_t) (__a == __b); +#else return (uint32x4_t)__builtin_neon_vceqv4sf (__a, __b); +#endif } __extension__ extern __inline uint8x16_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceqq_u8 (uint8x16_t __a, uint8x16_t __b) { - return (uint8x16_t)__builtin_neon_vceqv16qi ((int8x16_t) __a, (int8x16_t) __b); + return (uint8x16_t) (__a == __b); } __extension__ extern __inline uint16x8_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceqq_u16 (uint16x8_t __a, uint16x8_t __b) { - return (uint16x8_t)__builtin_neon_vceqv8hi ((int16x8_t) __a, (int16x8_t) __b); + return (uint16x8_t) (__a == __b); } __extension__ extern __inline uint32x4_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceqq_u32 (uint32x4_t __a, uint32x4_t __b) { - return (uint32x4_t)__builtin_neon_vceqv4si ((int32x4_t) __a, (int32x4_t) __b); + return (uint32x4_t) (__a == __b); } __extension__ extern __inline uint8x16_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceqq_p8 (poly8x16_t __a, poly8x16_t __b) { - return (uint8x16_t)__builtin_neon_vceqv16qi ((int8x16_t) __a, (int8x16_t) __b); + return (uint8x16_t) (__a == __b); } __extension__ extern __inline uint8x8_t @@ -17195,14 +17203,22 @@ __extension__ extern __inline uint16x4_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceq_f16 (float16x4_t __a, float16x4_t __b) { +#ifdef __FAST_MATH__ + return (uint16x4_t) (__a == __b); +#else return (uint16x4_t)__builtin_neon_vceqv4hf (__a, __b); +#endif } __extension__ extern __inline uint16x8_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) vceqq_f16 (float16x8_t __a, float16x8_t __b) { +#ifdef __FAST_MATH__ + return (uint16x8_t) (__a == __b); +#else return (uint16x8_t)__builtin_neon_vceqv8hf (__a, __b); +#endif } __extension__ extern __inline uint16x4_t