1 // RUN: %clang_cc1 -O1 -triple arm64-apple-ios7 -target-feature +neon -ffreestanding -S -o - -emit-llvm %s | FileCheck %s 2 // RUN: %clang_cc1 -O1 -triple arm64-apple-ios7 -target-feature +neon -ffreestanding -S -o - %s | \ 3 // RUN: FileCheck -check-prefix=CHECK_CODEGEN %s 4 // REQUIRES: aarch64-registered-target 5 // Test 6 7 #include <arm_neon.h> 8 9 int8x8_t test_vsli_n_s8(int8x8_t a1, int8x8_t a2) { 10 // CHECK: test_vsli_n_s8 11 return vsli_n_s8(a1, a2, 3); 12 // CHECK: llvm.aarch64.neon.vsli.v8i8 13 // CHECK_CODEGEN: sli.8b v0, v1, #3 14 } 15 16 int16x4_t test_vsli_n_s16(int16x4_t a1, int16x4_t a2) { 17 // CHECK: test_vsli_n_s16 18 return vsli_n_s16(a1, a2, 3); 19 // CHECK: llvm.aarch64.neon.vsli.v4i16 20 // CHECK_CODEGEN: sli.4h v0, v1, #3 21 } 22 23 int32x2_t test_vsli_n_s32(int32x2_t a1, int32x2_t a2) { 24 // CHECK: test_vsli_n_s32 25 return vsli_n_s32(a1, a2, 1); 26 // CHECK: llvm.aarch64.neon.vsli.v2i32 27 // CHECK_CODEGEN: sli.2s v0, v1, #1 28 } 29 30 int64x1_t test_vsli_n_s64(int64x1_t a1, int64x1_t a2) { 31 // CHECK: test_vsli_n_s64 32 return vsli_n_s64(a1, a2, 1); 33 // CHECK: llvm.aarch64.neon.vsli.v1i64 34 // CHECK_CODEGEN: sli d0, d1, #1 35 } 36 37 uint8x8_t test_vsli_n_u8(uint8x8_t a1, uint8x8_t a2) { 38 // CHECK: test_vsli_n_u8 39 return vsli_n_u8(a1, a2, 3); 40 // CHECK: llvm.aarch64.neon.vsli.v8i8 41 // CHECK_CODEGEN: sli.8b v0, v1, #3 42 } 43 44 uint16x4_t test_vsli_n_u16(uint16x4_t a1, uint16x4_t a2) { 45 // CHECK: test_vsli_n_u16 46 return vsli_n_u16(a1, a2, 3); 47 // CHECK: llvm.aarch64.neon.vsli.v4i16 48 // CHECK_CODEGEN: sli.4h v0, v1, #3 49 } 50 51 uint32x2_t test_vsli_n_u32(uint32x2_t a1, uint32x2_t a2) { 52 // CHECK: test_vsli_n_u32 53 return vsli_n_u32(a1, a2, 1); 54 // CHECK: llvm.aarch64.neon.vsli.v2i32 55 // CHECK_CODEGEN: sli.2s v0, v1, #1 56 } 57 58 uint64x1_t test_vsli_n_u64(uint64x1_t a1, uint64x1_t a2) { 59 // CHECK: test_vsli_n_u64 60 return vsli_n_u64(a1, a2, 1); 61 // CHECK: llvm.aarch64.neon.vsli.v1i64 62 // CHECK_CODEGEN: sli d0, d1, #1 63 } 64 65 poly8x8_t test_vsli_n_p8(poly8x8_t a1, poly8x8_t a2) { 66 // CHECK: test_vsli_n_p8 67 return vsli_n_p8(a1, a2, 1); 68 // CHECK: llvm.aarch64.neon.vsli.v8i8 69 // CHECK_CODEGEN: sli.8b v0, v1, #1 70 } 71 72 poly16x4_t test_vsli_n_p16(poly16x4_t a1, poly16x4_t a2) { 73 // CHECK: test_vsli_n_p16 74 return vsli_n_p16(a1, a2, 1); 75 // CHECK: llvm.aarch64.neon.vsli.v4i16 76 // CHECK_CODEGEN: sli.4h v0, v1, #1 77 } 78 79 int8x16_t test_vsliq_n_s8(int8x16_t a1, int8x16_t a2) { 80 // CHECK: test_vsliq_n_s8 81 return vsliq_n_s8(a1, a2, 3); 82 // CHECK: llvm.aarch64.neon.vsli.v16i8 83 // CHECK_CODEGEN: sli.16b v0, v1, #3 84 } 85 86 int16x8_t test_vsliq_n_s16(int16x8_t a1, int16x8_t a2) { 87 // CHECK: test_vsliq_n_s16 88 return vsliq_n_s16(a1, a2, 3); 89 // CHECK: llvm.aarch64.neon.vsli.v8i16 90 // CHECK_CODEGEN: sli.8h v0, v1, #3 91 } 92 93 int32x4_t test_vsliq_n_s32(int32x4_t a1, int32x4_t a2) { 94 // CHECK: test_vsliq_n_s32 95 return vsliq_n_s32(a1, a2, 1); 96 // CHECK: llvm.aarch64.neon.vsli.v4i32 97 // CHECK_CODEGEN: sli.4s v0, v1, #1 98 } 99 100 int64x2_t test_vsliq_n_s64(int64x2_t a1, int64x2_t a2) { 101 // CHECK: test_vsliq_n_s64 102 return vsliq_n_s64(a1, a2, 1); 103 // CHECK: llvm.aarch64.neon.vsli.v2i64 104 // CHECK_CODEGEN: sli.2d v0, v1, #1 105 } 106 107 uint8x16_t test_vsliq_n_u8(uint8x16_t a1, uint8x16_t a2) { 108 // CHECK: test_vsliq_n_u8 109 return vsliq_n_u8(a1, a2, 3); 110 // CHECK: llvm.aarch64.neon.vsli.v16i8 111 // CHECK_CODEGEN: sli.16b v0, v1, #3 112 } 113 114 uint16x8_t test_vsliq_n_u16(uint16x8_t a1, uint16x8_t a2) { 115 // CHECK: test_vsliq_n_u16 116 return vsliq_n_u16(a1, a2, 3); 117 // CHECK: llvm.aarch64.neon.vsli.v8i16 118 // CHECK_CODEGEN: sli.8h v0, v1, #3 119 } 120 121 uint32x4_t test_vsliq_n_u32(uint32x4_t a1, uint32x4_t a2) { 122 // CHECK: test_vsliq_n_u32 123 return vsliq_n_u32(a1, a2, 1); 124 // CHECK: llvm.aarch64.neon.vsli.v4i32 125 // CHECK_CODEGEN: sli.4s v0, v1, #1 126 } 127 128 uint64x2_t test_vsliq_n_u64(uint64x2_t a1, uint64x2_t a2) { 129 // CHECK: test_vsliq_n_u64 130 return vsliq_n_u64(a1, a2, 1); 131 // CHECK: llvm.aarch64.neon.vsli.v2i64 132 // CHECK_CODEGEN: sli.2d v0, v1, #1 133 } 134 135 poly8x16_t test_vsliq_n_p8(poly8x16_t a1, poly8x16_t a2) { 136 // CHECK: test_vsliq_n_p8 137 return vsliq_n_p8(a1, a2, 1); 138 // CHECK: llvm.aarch64.neon.vsli.v16i8 139 // CHECK_CODEGEN: sli.16b v0, v1, #1 140 } 141 142 poly16x8_t test_vsliq_n_p16(poly16x8_t a1, poly16x8_t a2) { 143 // CHECK: test_vsliq_n_p16 144 return vsliq_n_p16(a1, a2, 1); 145 // CHECK: llvm.aarch64.neon.vsli.v8i16 146 // CHECK_CODEGEN: sli.8h v0, v1, #1 147 } 148 149