diff options
author | Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> | 2016-01-20 20:06:10 +0100 |
---|---|---|
committer | Linaro Code Review <review@review.linaro.org> | 2016-01-27 11:50:01 +0000 |
commit | 5b84e0ab7292bd130c5ac2e170b7c7ed5ea80be3 (patch) | |
tree | 8b90657729f8faec21a4958151d920d9cbf4cfed | |
parent | bd7cbe40dc3d29d34716fde6d775c08101d07db1 (diff) |
gcc/
Backport from trunk r232444.
2016-01-15 Jiong Wang <jiong.wang@arm.com>
* config/aarch64/aarch64-builtins.c (aarch64_types_unopus_qualifiers):
New.
(TYPES_UNOPUS): Likewise.
* config/aarch64/aarch64-simd-builtins.def (lbtruncuv2sf): Correct
builtin type, from UNOP to UNOPUS.
(lbtruncuv4sf): Likewise.
(lbtruncuv2df): Likewise.
(lrounduv2sf): Likewise.
(lrounduv4sf): Likewise.
(lrounduv2df): Likewise.
(lroundusf): Likewise.
(lroundusf): Likewise.
(lceiluv2sf): Likewise.
(lceiluv4sf): Likewise.
(lceiluv2df): Likewise.
(lceilusf): Likewise.
(lceiludf): Likewise.
(lflooruv2sf): Likewise.
(lflooruv4sf): Likewise.
(lflooruv2df): Likewise.
(lfloorusf): Likewise.
(lfloorudf): Likewise.
(lfrintnuv2sf): Likewise.
(lfrintnuv4sf): Likewise.
(lfrintnuv2df): Likewise.
(lfrintnusf): Likewise.
(lfrintnudf): Likewise.
* config/aarch64/arm_neon.h (vcvt_u32_f32): Remove unncessary type
conversion.
(vcvtq_u32_f32): Likewise.
(vcvtq_u64_f64): Likewise.
(vcvta_u32_f32): Likewise.
(vcvtaq_u32_f32): Likewise.
(vcvtaq_u64_f64): Likewise.
(vcvtm_u32_f32): Likewise.
(vcvtmq_u32_f32): Likewise.
(vcvtmq_u64_f64): Likewise.
(vcvtn_u32_f32): Likwise.
(vcvtnq_u32_f32): Likewise.
(vcvtnq_u64_f64): Likewise.
(vcvtp_u32_f32): Likewise.
(vcvtpq_u32_f32): Likewise.
(vcvtpq_u64_f64): Likewise.
(vcvtmd_u64_f64): Likewise.
(vcvtms_u32_f32): Likewise.
(vcvtad_u64_f64): Likewise.
(vcvtas_u32_f32): Likewise.
(vcvtnd_u64_f64): Likewise.
(vcvtns_u32_f32): Likewise.
(vcvtpd_u64_f64): Likewise.
(vcvtps_u32_f32): Likewise.
Change-Id: If2bc669d3cf923890357ea4dafc7ab1870b245a5
-rw-r--r-- | gcc/config/aarch64/aarch64-builtins.c | 4 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64-simd-builtins.def | 46 | ||||
-rw-r--r-- | gcc/config/aarch64/arm_neon.h | 76 |
3 files changed, 50 insertions, 76 deletions
diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c index 7b9580f2456..bc8f4dd1dd5 100644 --- a/gcc/config/aarch64/aarch64-builtins.c +++ b/gcc/config/aarch64/aarch64-builtins.c @@ -157,6 +157,10 @@ aarch64_types_unopu_qualifiers[SIMD_MAX_BUILTIN_ARGS] = { qualifier_unsigned, qualifier_unsigned }; #define TYPES_UNOPU (aarch64_types_unopu_qualifiers) static enum aarch64_type_qualifiers +aarch64_types_unopus_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_unsigned, qualifier_none }; +#define TYPES_UNOPUS (aarch64_types_unopus_qualifiers) +static enum aarch64_type_qualifiers aarch64_types_binop_qualifiers[SIMD_MAX_BUILTIN_ARGS] = { qualifier_none, qualifier_none, qualifier_maybe_immediate }; #define TYPES_BINOP (aarch64_types_binop_qualifiers) diff --git a/gcc/config/aarch64/aarch64-simd-builtins.def b/gcc/config/aarch64/aarch64-simd-builtins.def index 4aadbf37ed8..76e9fb2acc3 100644 --- a/gcc/config/aarch64/aarch64-simd-builtins.def +++ b/gcc/config/aarch64/aarch64-simd-builtins.def @@ -274,9 +274,9 @@ VAR1 (UNOP, lbtruncv4sf, 2, v4si) VAR1 (UNOP, lbtruncv2df, 2, v2di) - VAR1 (UNOP, lbtruncuv2sf, 2, v2si) - VAR1 (UNOP, lbtruncuv4sf, 2, v4si) - VAR1 (UNOP, lbtruncuv2df, 2, v2di) + VAR1 (UNOPUS, lbtruncuv2sf, 2, v2si) + VAR1 (UNOPUS, lbtruncuv4sf, 2, v4si) + VAR1 (UNOPUS, lbtruncuv2df, 2, v2di) VAR1 (UNOP, lroundv2sf, 2, v2si) VAR1 (UNOP, lroundv4sf, 2, v4si) @@ -285,31 +285,31 @@ VAR1 (UNOP, lroundsf, 2, si) VAR1 (UNOP, lrounddf, 2, di) - VAR1 (UNOP, lrounduv2sf, 2, v2si) - VAR1 (UNOP, lrounduv4sf, 2, v4si) - VAR1 (UNOP, lrounduv2df, 2, v2di) - VAR1 (UNOP, lroundusf, 2, si) - VAR1 (UNOP, lroundudf, 2, di) + VAR1 (UNOPUS, lrounduv2sf, 2, v2si) + VAR1 (UNOPUS, lrounduv4sf, 2, v4si) + VAR1 (UNOPUS, lrounduv2df, 2, v2di) + VAR1 (UNOPUS, lroundusf, 2, si) + VAR1 (UNOPUS, lroundudf, 2, di) VAR1 (UNOP, lceilv2sf, 2, v2si) VAR1 (UNOP, lceilv4sf, 2, v4si) VAR1 (UNOP, lceilv2df, 2, v2di) - VAR1 (UNOP, lceiluv2sf, 2, v2si) - VAR1 (UNOP, lceiluv4sf, 2, v4si) - VAR1 (UNOP, lceiluv2df, 2, v2di) - VAR1 (UNOP, lceilusf, 2, si) - VAR1 (UNOP, lceiludf, 2, di) + VAR1 (UNOPUS, lceiluv2sf, 2, v2si) + VAR1 (UNOPUS, lceiluv4sf, 2, v4si) + VAR1 (UNOPUS, lceiluv2df, 2, v2di) + VAR1 (UNOPUS, lceilusf, 2, si) + VAR1 (UNOPUS, lceiludf, 2, di) VAR1 (UNOP, lfloorv2sf, 2, v2si) VAR1 (UNOP, lfloorv4sf, 2, v4si) VAR1 (UNOP, lfloorv2df, 2, v2di) - VAR1 (UNOP, lflooruv2sf, 2, v2si) - VAR1 (UNOP, lflooruv4sf, 2, v4si) - VAR1 (UNOP, lflooruv2df, 2, v2di) - VAR1 (UNOP, lfloorusf, 2, si) - VAR1 (UNOP, lfloorudf, 2, di) + VAR1 (UNOPUS, lflooruv2sf, 2, v2si) + VAR1 (UNOPUS, lflooruv4sf, 2, v4si) + VAR1 (UNOPUS, lflooruv2df, 2, v2di) + VAR1 (UNOPUS, lfloorusf, 2, si) + VAR1 (UNOPUS, lfloorudf, 2, di) VAR1 (UNOP, lfrintnv2sf, 2, v2si) VAR1 (UNOP, lfrintnv4sf, 2, v4si) @@ -317,11 +317,11 @@ VAR1 (UNOP, lfrintnsf, 2, si) VAR1 (UNOP, lfrintndf, 2, di) - VAR1 (UNOP, lfrintnuv2sf, 2, v2si) - VAR1 (UNOP, lfrintnuv4sf, 2, v4si) - VAR1 (UNOP, lfrintnuv2df, 2, v2di) - VAR1 (UNOP, lfrintnusf, 2, si) - VAR1 (UNOP, lfrintnudf, 2, di) + VAR1 (UNOPUS, lfrintnuv2sf, 2, v2si) + VAR1 (UNOPUS, lfrintnuv4sf, 2, v4si) + VAR1 (UNOPUS, lfrintnuv2df, 2, v2di) + VAR1 (UNOPUS, lfrintnusf, 2, si) + VAR1 (UNOPUS, lfrintnudf, 2, di) /* Implemented by <optab><fcvt_target><VDQF:mode>2. */ VAR1 (UNOP, floatv2si, 2, v2sf) diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h index b5189612684..2fe96bfbc73 100644 --- a/gcc/config/aarch64/arm_neon.h +++ b/gcc/config/aarch64/arm_neon.h @@ -13736,9 +13736,7 @@ vcvt_s32_f32 (float32x2_t __a) __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) vcvt_u32_f32 (float32x2_t __a) { - /* TODO: This cast should go away when builtins have - their correct types. */ - return (uint32x2_t) __builtin_aarch64_lbtruncuv2sfv2si (__a); + return __builtin_aarch64_lbtruncuv2sfv2si_us (__a); } __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) @@ -13750,9 +13748,7 @@ vcvtq_s32_f32 (float32x4_t __a) __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) vcvtq_u32_f32 (float32x4_t __a) { - /* TODO: This cast should go away when builtins have - their correct types. */ - return (uint32x4_t) __builtin_aarch64_lbtruncuv4sfv4si (__a); + return __builtin_aarch64_lbtruncuv4sfv4si_us (__a); } __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) @@ -13764,9 +13760,7 @@ vcvtq_s64_f64 (float64x2_t __a) __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) vcvtq_u64_f64 (float64x2_t __a) { - /* TODO: This cast should go away when builtins have - their correct types. */ - return (uint64x2_t) __builtin_aarch64_lbtruncuv2dfv2di (__a); + return __builtin_aarch64_lbtruncuv2dfv2di_us (__a); } /* vcvta */ @@ -13780,7 +13774,7 @@ vcvtad_s64_f64 (float64_t __a) __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) vcvtad_u64_f64 (float64_t __a) { - return __builtin_aarch64_lroundudfdi (__a); + return __builtin_aarch64_lroundudfdi_us (__a); } __extension__ static __inline int32_t __attribute__ ((__always_inline__)) @@ -13792,7 +13786,7 @@ vcvtas_s32_f32 (float32_t __a) __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) vcvtas_u32_f32 (float32_t __a) { - return __builtin_aarch64_lroundusfsi (__a); + return __builtin_aarch64_lroundusfsi_us (__a); } __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) @@ -13804,9 +13798,7 @@ vcvta_s32_f32 (float32x2_t __a) __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) vcvta_u32_f32 (float32x2_t __a) { - /* TODO: This cast should go away when builtins have - their correct types. */ - return (uint32x2_t) __builtin_aarch64_lrounduv2sfv2si (__a); + return __builtin_aarch64_lrounduv2sfv2si_us (__a); } __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) @@ -13818,9 +13810,7 @@ vcvtaq_s32_f32 (float32x4_t __a) __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) vcvtaq_u32_f32 (float32x4_t __a) { - /* TODO: This cast should go away when builtins have - their correct types. */ - return (uint32x4_t) __builtin_aarch64_lrounduv4sfv4si (__a); + return __builtin_aarch64_lrounduv4sfv4si_us (__a); } __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) @@ -13832,9 +13822,7 @@ vcvtaq_s64_f64 (float64x2_t __a) __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) vcvtaq_u64_f64 (float64x2_t __a) { - /* TODO: This cast should go away when builtins have - their correct types. */ - return (uint64x2_t) __builtin_aarch64_lrounduv2dfv2di (__a); + return __builtin_aarch64_lrounduv2dfv2di_us (__a); } /* vcvtm */ @@ -13848,7 +13836,7 @@ vcvtmd_s64_f64 (float64_t __a) __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) vcvtmd_u64_f64 (float64_t __a) { - return __builtin_aarch64_lfloorudfdi (__a); + return __builtin_aarch64_lfloorudfdi_us (__a); } __extension__ static __inline int32_t __attribute__ ((__always_inline__)) @@ -13860,7 +13848,7 @@ vcvtms_s32_f32 (float32_t __a) __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) vcvtms_u32_f32 (float32_t __a) { - return __builtin_aarch64_lfloorusfsi (__a); + return __builtin_aarch64_lfloorusfsi_us (__a); } __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) @@ -13872,9 +13860,7 @@ vcvtm_s32_f32 (float32x2_t __a) __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) vcvtm_u32_f32 (float32x2_t __a) { - /* TODO: This cast should go away when builtins have - their correct types. */ - return (uint32x2_t) __builtin_aarch64_lflooruv2sfv2si (__a); + return __builtin_aarch64_lflooruv2sfv2si_us (__a); } __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) @@ -13886,9 +13872,7 @@ vcvtmq_s32_f32 (float32x4_t __a) __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) vcvtmq_u32_f32 (float32x4_t __a) { - /* TODO: This cast should go away when builtins have - their correct types. */ - return (uint32x4_t) __builtin_aarch64_lflooruv4sfv4si (__a); + return __builtin_aarch64_lflooruv4sfv4si_us (__a); } __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) @@ -13900,9 +13884,7 @@ vcvtmq_s64_f64 (float64x2_t __a) __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) vcvtmq_u64_f64 (float64x2_t __a) { - /* TODO: This cast should go away when builtins have - their correct types. */ - return (uint64x2_t) __builtin_aarch64_lflooruv2dfv2di (__a); + return __builtin_aarch64_lflooruv2dfv2di_us (__a); } /* vcvtn */ @@ -13916,7 +13898,7 @@ vcvtnd_s64_f64 (float64_t __a) __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) vcvtnd_u64_f64 (float64_t __a) { - return __builtin_aarch64_lfrintnudfdi (__a); + return __builtin_aarch64_lfrintnudfdi_us (__a); } __extension__ static __inline int32_t __attribute__ ((__always_inline__)) @@ -13928,7 +13910,7 @@ vcvtns_s32_f32 (float32_t __a) __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) vcvtns_u32_f32 (float32_t __a) { - return __builtin_aarch64_lfrintnusfsi (__a); + return __builtin_aarch64_lfrintnusfsi_us (__a); } __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) @@ -13940,9 +13922,7 @@ vcvtn_s32_f32 (float32x2_t __a) __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) vcvtn_u32_f32 (float32x2_t __a) { - /* TODO: This cast should go away when builtins have - their correct types. */ - return (uint32x2_t) __builtin_aarch64_lfrintnuv2sfv2si (__a); + return __builtin_aarch64_lfrintnuv2sfv2si_us (__a); } __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) @@ -13954,9 +13934,7 @@ vcvtnq_s32_f32 (float32x4_t __a) __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) vcvtnq_u32_f32 (float32x4_t __a) { - /* TODO: This cast should go away when builtins have - their correct types. */ - return (uint32x4_t) __builtin_aarch64_lfrintnuv4sfv4si (__a); + return __builtin_aarch64_lfrintnuv4sfv4si_us (__a); } __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) @@ -13968,9 +13946,7 @@ vcvtnq_s64_f64 (float64x2_t __a) __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) vcvtnq_u64_f64 (float64x2_t __a) { - /* TODO: This cast should go away when builtins have - their correct types. */ - return (uint64x2_t) __builtin_aarch64_lfrintnuv2dfv2di (__a); + return __builtin_aarch64_lfrintnuv2dfv2di_us (__a); } /* vcvtp */ @@ -13984,7 +13960,7 @@ vcvtpd_s64_f64 (float64_t __a) __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) vcvtpd_u64_f64 (float64_t __a) { - return __builtin_aarch64_lceiludfdi (__a); + return __builtin_aarch64_lceiludfdi_us (__a); } __extension__ static __inline int32_t __attribute__ ((__always_inline__)) @@ -13996,7 +13972,7 @@ vcvtps_s32_f32 (float32_t __a) __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) vcvtps_u32_f32 (float32_t __a) { - return __builtin_aarch64_lceilusfsi (__a); + return __builtin_aarch64_lceilusfsi_us (__a); } __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) @@ -14008,9 +13984,7 @@ vcvtp_s32_f32 (float32x2_t __a) __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) vcvtp_u32_f32 (float32x2_t __a) { - /* TODO: This cast should go away when builtins have - their correct types. */ - return (uint32x2_t) __builtin_aarch64_lceiluv2sfv2si (__a); + return __builtin_aarch64_lceiluv2sfv2si_us (__a); } __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) @@ -14022,9 +13996,7 @@ vcvtpq_s32_f32 (float32x4_t __a) __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) vcvtpq_u32_f32 (float32x4_t __a) { - /* TODO: This cast should go away when builtins have - their correct types. */ - return (uint32x4_t) __builtin_aarch64_lceiluv4sfv4si (__a); + return __builtin_aarch64_lceiluv4sfv4si_us (__a); } __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) @@ -14036,9 +14008,7 @@ vcvtpq_s64_f64 (float64x2_t __a) __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) vcvtpq_u64_f64 (float64x2_t __a) { - /* TODO: This cast should go away when builtins have - their correct types. */ - return (uint64x2_t) __builtin_aarch64_lceiluv2dfv2di (__a); + return __builtin_aarch64_lceiluv2dfv2di_us (__a); } /* vdup_n */ |