summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen
diff options
context:
space:
mode:
authorHao Liu <Hao.Liu@arm.com>2013-11-29 02:13:17 +0000
committerHao Liu <Hao.Liu@arm.com>2013-11-29 02:13:17 +0000
commit8a0099e02cd7b66300033469c1def0faf7c9295c (patch)
tree162a2b4c5c409365ad8549c5872eeb4ec81c1a6a /clang/test/CodeGen
parentba38eee8ac1ff40cbbbdea392f2ab5337aea72b9 (diff)
downloadbcm5719-llvm-8a0099e02cd7b66300033469c1def0faf7c9295c.tar.gz
bcm5719-llvm-8a0099e02cd7b66300033469c1def0faf7c9295c.zip
Fix the problem that the range check for scalar narrow shift is too wide.
E.g. the immediate value of vshrns_n_s16 is [1,16], which should be [1,8]. llvm-svn: 195942
Diffstat (limited to 'clang/test/CodeGen')
-rw-r--r--clang/test/CodeGen/aarch64-neon-intrinsics.c72
1 files changed, 36 insertions, 36 deletions
diff --git a/clang/test/CodeGen/aarch64-neon-intrinsics.c b/clang/test/CodeGen/aarch64-neon-intrinsics.c
index a26bcf29c7e..efa078b4bc4 100644
--- a/clang/test/CodeGen/aarch64-neon-intrinsics.c
+++ b/clang/test/CodeGen/aarch64-neon-intrinsics.c
@@ -8869,110 +8869,110 @@ uint64x1_t test_vsli_n_u64(uint64x1_t a, uint64x1_t b) {
int8_t test_vqshrnh_n_s16(int16_t a) {
// CHECK-LABEL: test_vqshrnh_n_s16
-// CHECK: sqshrn {{b[0-9]+}}, {{h[0-9]+}}, #15
- return (int8_t)vqshrnh_n_s16(a, 15);
+// CHECK: sqshrn {{b[0-9]+}}, {{h[0-9]+}}, #8
+ return (int8_t)vqshrnh_n_s16(a, 8);
}
int16_t test_vqshrns_n_s32(int32_t a) {
// CHECK-LABEL: test_vqshrns_n_s32
-// CHECK: sqshrn {{h[0-9]+}}, {{s[0-9]+}}, #31
- return (int16_t)vqshrns_n_s32(a, 31);
+// CHECK: sqshrn {{h[0-9]+}}, {{s[0-9]+}}, #16
+ return (int16_t)vqshrns_n_s32(a, 16);
}
int32_t test_vqshrnd_n_s64(int64_t a) {
// CHECK-LABEL: test_vqshrnd_n_s64
-// CHECK: sqshrn {{s[0-9]+}}, {{d[0-9]+}}, #63
- return (int32_t)vqshrnd_n_s64(a, 63);
+// CHECK: sqshrn {{s[0-9]+}}, {{d[0-9]+}}, #32
+ return (int32_t)vqshrnd_n_s64(a, 32);
}
uint8_t test_vqshrnh_n_u16(uint16_t a) {
// CHECK-LABEL: test_vqshrnh_n_u16
-// CHECK: uqshrn {{b[0-9]+}}, {{h[0-9]+}}, #15
- return (uint8_t)vqshrnh_n_u16(a, 15);
+// CHECK: uqshrn {{b[0-9]+}}, {{h[0-9]+}}, #8
+ return (uint8_t)vqshrnh_n_u16(a, 8);
}
uint16_t test_vqshrns_n_u32(uint32_t a) {
// CHECK-LABEL: test_vqshrns_n_u32
-// CHECK: uqshrn {{h[0-9]+}}, {{s[0-9]+}}, #31
- return (uint16_t)vqshrns_n_u32(a, 31);
+// CHECK: uqshrn {{h[0-9]+}}, {{s[0-9]+}}, #16
+ return (uint16_t)vqshrns_n_u32(a, 16);
}
uint32_t test_vqshrnd_n_u64(uint64_t a) {
// CHECK-LABEL: test_vqshrnd_n_u64
-// CHECK: uqshrn {{s[0-9]+}}, {{d[0-9]+}}, #63
- return (uint32_t)vqshrnd_n_u64(a, 63);
+// CHECK: uqshrn {{s[0-9]+}}, {{d[0-9]+}}, #32
+ return (uint32_t)vqshrnd_n_u64(a, 32);
}
int8_t test_vqrshrnh_n_s16(int16_t a) {
// CHECK-LABEL: test_vqrshrnh_n_s16
-// CHECK: sqrshrn {{b[0-9]+}}, {{h[0-9]+}}, #15
- return (int8_t)vqrshrnh_n_s16(a, 15);
+// CHECK: sqrshrn {{b[0-9]+}}, {{h[0-9]+}}, #8
+ return (int8_t)vqrshrnh_n_s16(a, 8);
}
int16_t test_vqrshrns_n_s32(int32_t a) {
// CHECK-LABEL: test_vqrshrns_n_s32
-// CHECK: sqrshrn {{h[0-9]+}}, {{s[0-9]+}}, #31
- return (int16_t)vqrshrns_n_s32(a, 31);
+// CHECK: sqrshrn {{h[0-9]+}}, {{s[0-9]+}}, #16
+ return (int16_t)vqrshrns_n_s32(a, 16);
}
int32_t test_vqrshrnd_n_s64(int64_t a) {
// CHECK-LABEL: test_vqrshrnd_n_s64
-// CHECK: sqrshrn {{s[0-9]+}}, {{d[0-9]+}}, #63
- return (int32_t)vqrshrnd_n_s64(a, 63);
+// CHECK: sqrshrn {{s[0-9]+}}, {{d[0-9]+}}, #32
+ return (int32_t)vqrshrnd_n_s64(a, 32);
}
uint8_t test_vqrshrnh_n_u16(uint16_t a) {
// CHECK-LABEL: test_vqrshrnh_n_u16
-// CHECK: uqrshrn {{b[0-9]+}}, {{h[0-9]+}}, #15
- return (uint8_t)vqrshrnh_n_u16(a, 15);
+// CHECK: uqrshrn {{b[0-9]+}}, {{h[0-9]+}}, #8
+ return (uint8_t)vqrshrnh_n_u16(a, 8);
}
uint16_t test_vqrshrns_n_u32(uint32_t a) {
// CHECK-LABEL: test_vqrshrns_n_u32
-// CHECK: uqrshrn {{h[0-9]+}}, {{s[0-9]+}}, #31
- return (uint16_t)vqrshrns_n_u32(a, 31);
+// CHECK: uqrshrn {{h[0-9]+}}, {{s[0-9]+}}, #16
+ return (uint16_t)vqrshrns_n_u32(a, 16);
}
uint32_t test_vqrshrnd_n_u64(uint64_t a) {
// CHECK-LABEL: test_vqrshrnd_n_u64
-// CHECK: uqrshrn {{s[0-9]+}}, {{d[0-9]+}}, #63
- return (uint32_t)vqrshrnd_n_u64(a, 63);
+// CHECK: uqrshrn {{s[0-9]+}}, {{d[0-9]+}}, #32
+ return (uint32_t)vqrshrnd_n_u64(a, 32);
}
int8_t test_vqshrunh_n_s16(int16_t a) {
// CHECK-LABEL: test_vqshrunh_n_s16
-// CHECK: sqshrun {{b[0-9]+}}, {{h[0-9]+}}, #15
- return (int8_t)vqshrunh_n_s16(a, 15);
+// CHECK: sqshrun {{b[0-9]+}}, {{h[0-9]+}}, #8
+ return (int8_t)vqshrunh_n_s16(a, 8);
}
int16_t test_vqshruns_n_s32(int32_t a) {
// CHECK-LABEL: test_vqshruns_n_s32
-// CHECK: sqshrun {{h[0-9]+}}, {{s[0-9]+}}, #31
- return (int16_t)vqshruns_n_s32(a, 31);
+// CHECK: sqshrun {{h[0-9]+}}, {{s[0-9]+}}, #16
+ return (int16_t)vqshruns_n_s32(a, 16);
}
int32_t test_vqshrund_n_s64(int64_t a) {
// CHECK-LABEL: test_vqshrund_n_s64
-// CHECK: sqshrun {{s[0-9]+}}, {{d[0-9]+}}, #63
- return (int32_t)vqshrund_n_s64(a, 63);
+// CHECK: sqshrun {{s[0-9]+}}, {{d[0-9]+}}, #32
+ return (int32_t)vqshrund_n_s64(a, 32);
}
int8_t test_vqrshrunh_n_s16(int16_t a) {
// CHECK-LABEL: test_vqrshrunh_n_s16
-// CHECK: sqrshrun {{b[0-9]+}}, {{h[0-9]+}}, #15
- return (int8_t)vqrshrunh_n_s16(a, 15);
+// CHECK: sqrshrun {{b[0-9]+}}, {{h[0-9]+}}, #8
+ return (int8_t)vqrshrunh_n_s16(a, 8);
}
int16_t test_vqrshruns_n_s32(int32_t a) {
// CHECK-LABEL: test_vqrshruns_n_s32
-// CHECK: sqrshrun {{h[0-9]+}}, {{s[0-9]+}}, #31
- return (int16_t)vqrshruns_n_s32(a, 31);
+// CHECK: sqrshrun {{h[0-9]+}}, {{s[0-9]+}}, #16
+ return (int16_t)vqrshruns_n_s32(a, 16);
}
int32_t test_vqrshrund_n_s64(int64_t a) {
// CHECK-LABEL: test_vqrshrund_n_s64
-// CHECK: sqrshrun {{s[0-9]+}}, {{d[0-9]+}}, #63
- return (int32_t)vqrshrund_n_s64(a, 63);
+// CHECK: sqrshrun {{s[0-9]+}}, {{d[0-9]+}}, #32
+ return (int32_t)vqrshrund_n_s64(a, 32);
}
float32_t test_vcvts_n_f32_s32(int32_t a) {
OpenPOWER on IntegriCloud