diff options
| author | Hao Liu <Hao.Liu@arm.com> | 2013-11-29 02:13:17 +0000 |
|---|---|---|
| committer | Hao Liu <Hao.Liu@arm.com> | 2013-11-29 02:13:17 +0000 |
| commit | 8a0099e02cd7b66300033469c1def0faf7c9295c (patch) | |
| tree | 162a2b4c5c409365ad8549c5872eeb4ec81c1a6a /clang/test/CodeGen | |
| parent | ba38eee8ac1ff40cbbbdea392f2ab5337aea72b9 (diff) | |
| download | bcm5719-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.c | 72 |
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) { |

