summaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorjgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4>2016-01-25 11:32:07 +0000
committerjgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4>2016-01-25 11:32:07 +0000
commit8eacba946e6e7adc396296cf7e0389ff8a819423 (patch)
tree1725537aa43c4fb2ef9ee75ac0efbedf6b571349 /gcc/config
parent7ce15a25e13f6fea156c366e813e156bff917b14 (diff)
downloadgcc-8eacba946e6e7adc396296cf7e0389ff8a819423.tar.gz
[AARCH64][ACLE][NEON] Implement vcvt*_s64_f64 and vcvt*_u64_f64 NEON intrinsics.
gcc/ * config/aarch64/arm_neon.h (vcvt_s64_f64): New intrinsic. (vcvt_u64_f64): Likewise. (vcvta_s64_f64): Likewise. (vcvta_u64_f64): Likewise. (vcvtm_s64_f64): Likewise. (vcvtm_u64_f64): Likewise. (vcvtn_s64_f64): Likewise. (vcvtn_u64_f64): Likewise. (vcvtp_s64_f64): Likewise. (vcvtp_u64_f64): Likewise. gcc/testsuite/ * gcc.target/aarch64/simd/vcvt_s64_f64_1.c: New. * gcc.target/aarch64/simd/vcvt_u64_f64_1.c: Likewise. * gcc.target/aarch64/simd/vcvta_s64_f64_1.c: Likewise. * gcc.target/aarch64/simd/vcvta_u64_f64_1.c: Likewise. * gcc.target/aarch64/simd/vcvtm_s64_f64_1.c: Likewise. * gcc.target/aarch64/simd/vcvtm_u64_f64_1.c: Likewise. * gcc.target/aarch64/simd/vcvtn_s64_f64_1.c: Likewise. * gcc.target/aarch64/simd/vcvtn_u64_f64_1.c: Likewise. * gcc.target/aarch64/simd/vcvtp_s64_f64_1.c: Likewise. * gcc.target/aarch64/simd/vcvtp_u64_f64_1.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232789 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/aarch64/arm_neon.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h
index 1334d64c7b4..2612a325718 100644
--- a/gcc/config/aarch64/arm_neon.h
+++ b/gcc/config/aarch64/arm_neon.h
@@ -13218,6 +13218,18 @@ vcvtq_u32_f32 (float32x4_t __a)
return __builtin_aarch64_lbtruncuv4sfv4si_us (__a);
}
+__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
+vcvt_s64_f64 (float64x1_t __a)
+{
+ return (int64x1_t) {vcvtd_s64_f64 (__a[0])};
+}
+
+__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+vcvt_u64_f64 (float64x1_t __a)
+{
+ return (uint64x1_t) {vcvtd_u64_f64 (__a[0])};
+}
+
__extension__ static __inline int64x2_t __attribute__ ((__always_inline__))
vcvtq_s64_f64 (float64x2_t __a)
{
@@ -13280,6 +13292,18 @@ vcvtaq_u32_f32 (float32x4_t __a)
return __builtin_aarch64_lrounduv4sfv4si_us (__a);
}
+__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
+vcvta_s64_f64 (float64x1_t __a)
+{
+ return (int64x1_t) {vcvtad_s64_f64 (__a[0])};
+}
+
+__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+vcvta_u64_f64 (float64x1_t __a)
+{
+ return (uint64x1_t) {vcvtad_u64_f64 (__a[0])};
+}
+
__extension__ static __inline int64x2_t __attribute__ ((__always_inline__))
vcvtaq_s64_f64 (float64x2_t __a)
{
@@ -13342,6 +13366,18 @@ vcvtmq_u32_f32 (float32x4_t __a)
return __builtin_aarch64_lflooruv4sfv4si_us (__a);
}
+__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
+vcvtm_s64_f64 (float64x1_t __a)
+{
+ return (int64x1_t) {vcvtmd_s64_f64 (__a[0])};
+}
+
+__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+vcvtm_u64_f64 (float64x1_t __a)
+{
+ return (uint64x1_t) {vcvtmd_u64_f64 (__a[0])};
+}
+
__extension__ static __inline int64x2_t __attribute__ ((__always_inline__))
vcvtmq_s64_f64 (float64x2_t __a)
{
@@ -13404,6 +13440,18 @@ vcvtnq_u32_f32 (float32x4_t __a)
return __builtin_aarch64_lfrintnuv4sfv4si_us (__a);
}
+__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
+vcvtn_s64_f64 (float64x1_t __a)
+{
+ return (int64x1_t) {vcvtnd_s64_f64 (__a[0])};
+}
+
+__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+vcvtn_u64_f64 (float64x1_t __a)
+{
+ return (uint64x1_t) {vcvtnd_u64_f64 (__a[0])};
+}
+
__extension__ static __inline int64x2_t __attribute__ ((__always_inline__))
vcvtnq_s64_f64 (float64x2_t __a)
{
@@ -13466,6 +13514,18 @@ vcvtpq_u32_f32 (float32x4_t __a)
return __builtin_aarch64_lceiluv4sfv4si_us (__a);
}
+__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
+vcvtp_s64_f64 (float64x1_t __a)
+{
+ return (int64x1_t) {vcvtpd_s64_f64 (__a[0])};
+}
+
+__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+vcvtp_u64_f64 (float64x1_t __a)
+{
+ return (uint64x1_t) {vcvtpd_u64_f64 (__a[0])};
+}
+
__extension__ static __inline int64x2_t __attribute__ ((__always_inline__))
vcvtpq_s64_f64 (float64x2_t __a)
{