From: Jiangning Liu Date: Tue, 3 Dec 2013 01:33:16 +0000 (+0000) Subject: Add some missing AArch64 Neon intrinsics like vuqadd_s64 and friends. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d0345169136e2007ab60064424f7b00943fd2e83;p=clang Add some missing AArch64 Neon intrinsics like vuqadd_s64 and friends. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196191 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/arm_neon.td b/include/clang/Basic/arm_neon.td index c3a579fff0..3706ff6d05 100644 --- a/include/clang/Basic/arm_neon.td +++ b/include/clang/Basic/arm_neon.td @@ -653,18 +653,18 @@ def ABD : SInst<"vabd", "ddd", "csiUcUsUifQcQsQiQUcQUsQUiQfQd">; //////////////////////////////////////////////////////////////////////////////// // saturating absolute/negate // With additional Qd/Ql type. -def ABS : SInst<"vabs", "dd", "csifQcQsQiQfQlQd">; -def QABS : SInst<"vqabs", "dd", "csiQcQsQiQl">; -def NEG : SOpInst<"vneg", "dd", "csifQcQsQiQfQdQl", OP_NEG>; -def QNEG : SInst<"vqneg", "dd", "csiQcQsQiQl">; +def ABS : SInst<"vabs", "dd", "csilfQcQsQiQfQlQd">; +def QABS : SInst<"vqabs", "dd", "csilQcQsQiQl">; +def NEG : SOpInst<"vneg", "dd", "csilfQcQsQiQfQdQl", OP_NEG>; +def QNEG : SInst<"vqneg", "dd", "csilQcQsQiQl">; //////////////////////////////////////////////////////////////////////////////// // Signed Saturating Accumulated of Unsigned Value -def SUQADD : SInst<"vuqadd", "ddd", "csiQcQsQiQl">; +def SUQADD : SInst<"vuqadd", "ddd", "csilQcQsQiQl">; //////////////////////////////////////////////////////////////////////////////// // Unsigned Saturating Accumulated of Signed Value -def USQADD : SInst<"vsqadd", "ddd", "UcUsUiQUcQUsQUiQUl">; +def USQADD : SInst<"vsqadd", "ddd", "UcUsUiUlQUcQUsQUiQUl">; //////////////////////////////////////////////////////////////////////////////// // Reciprocal/Sqrt diff --git a/test/CodeGen/aarch64-neon-intrinsics.c b/test/CodeGen/aarch64-neon-intrinsics.c index d564f0ee8e..d9c1b8f96c 100644 --- a/test/CodeGen/aarch64-neon-intrinsics.c +++ b/test/CodeGen/aarch64-neon-intrinsics.c @@ -11236,3 +11236,39 @@ float64_t test_vabd_f64(float64_t a, float64_t b) { // CHECK: fabd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} return vabd_f64(a, b); } + +int64x1_t test_vuqadd_s64(int64x1_t a, uint64x1_t b) { + // CHECK-LABEL: test_vuqadd_s64 + return vuqadd_s64(a, b); + // CHECK: suqadd d{{[0-9]+}}, d{{[0-9]+}} +} + +uint64x1_t test_vsqadd_u64(uint64x1_t a, int64x1_t b) { + // CHECK-LABEL: test_vsqadd_u64 + return vsqadd_u64(a, b); + // CHECK: usqadd d{{[0-9]+}}, d{{[0-9]+}} +} + +int64x1_t test_vabs_s64(int64x1_t a) { + // CHECK-LABEL: test_vabs_s64 + return vabs_s64(a); + // CHECK: abs d{{[0-9]+}}, d{{[0-9]+}} +} + +int64x1_t test_vqabs_s64(int64x1_t a) { + // CHECK-LABEL: test_vqabs_s64 + return vqabs_s64(a); + // CHECK: sqabs d{{[0-9]+}}, d{{[0-9]+}} +} + +int64x1_t test_vqneg_s64(int64x1_t a) { + // CHECK-LABEL: test_vqneg_s64 + return vqneg_s64(a); + // CHECK: sqneg d{{[0-9]+}}, d{{[0-9]+}} +} + +int64x1_t test_vneg_s64(int64x1_t a) { + // CHECK-LABEL: test_vneg_s64 + return vneg_s64(a); + // CHECK: neg d{{[0-9]+}}, d{{[0-9]+}} +}