diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2013-12-22 00:07:40 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2013-12-22 00:07:40 +0000 |
| commit | bfef399519ca9b8a4b4c6b563253bad7e0eeffe0 (patch) | |
| tree | df8df0b0067b381eab470a3b8f28d14a552a6340 /test/CodeGen/arm-neon-shifts.c | |
| parent | 6a0372513edbc473b538d2f724efac50405d6fef (diff) | |
Notes
Diffstat (limited to 'test/CodeGen/arm-neon-shifts.c')
| -rw-r--r-- | test/CodeGen/arm-neon-shifts.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/test/CodeGen/arm-neon-shifts.c b/test/CodeGen/arm-neon-shifts.c new file mode 100644 index 000000000000..7acfb894e976 --- /dev/null +++ b/test/CodeGen/arm-neon-shifts.c @@ -0,0 +1,45 @@ +// REQUIRES: arm-registered-target +// RUN: %clang_cc1 -triple thumbv7-apple-darwin \ +// RUN: -target-cpu cortex-a8 \ +// RUN: -ffreestanding \ +// RUN: -emit-llvm -w -O1 -o - %s | FileCheck %s + +#include <arm_neon.h> + +uint8x8_t test_shift_vshr(uint8x8_t a) { + // CHECK-LABEL: test_shift_vshr + // CHECK: %{{.*}} = lshr <8 x i8> %a, <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5> + return vshr_n_u8(a, 5); +} + +int8x8_t test_shift_vshr_smax(int8x8_t a) { + // CHECK-LABEL: test_shift_vshr_smax + // CHECK: %{{.*}} = ashr <8 x i8> %a, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> + return vshr_n_s8(a, 8); +} + +uint8x8_t test_shift_vshr_umax(uint8x8_t a) { + // CHECK-LABEL: test_shift_vshr_umax + // CHECK: ret <8 x i8> zeroinitializer + return vshr_n_u8(a, 8); +} + +uint8x8_t test_shift_vsra(uint8x8_t a, uint8x8_t b) { + // CHECK-LABEL: test_shift_vsra + // CHECK: %[[SHR:.*]] = lshr <8 x i8> %b, <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5> + // CHECK: %{{.*}} = add <8 x i8> %[[SHR]], %a + return vsra_n_u8(a, b, 5); +} + +int8x8_t test_shift_vsra_smax(int8x8_t a, int8x8_t b) { + // CHECK-LABEL: test_shift_vsra_smax + // CHECK: %[[SHR:.*]] = ashr <8 x i8> %b, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7> + // CHECK: %{{.*}} = add <8 x i8> %[[SHR]], %a + return vsra_n_s8(a, b, 8); +} + +uint8x8_t test_shift_vsra_umax(uint8x8_t a, uint8x8_t b) { + // CHECK-LABEL: test_shift_vsra_umax + // CHECK: ret <8 x i8> %a + return vsra_n_u8(a, b, 8); +} |
