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 9int8x8_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 16int16x4_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 23int32x2_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 30int64x1_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 37uint8x8_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 44uint16x4_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 51uint32x2_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 58uint64x1_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 65poly8x8_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 72poly16x4_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 79int8x16_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 86int16x8_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 93int32x4_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 100int64x2_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 107uint8x16_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 114uint16x8_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 121uint32x4_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 128uint64x2_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 135poly8x16_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 142poly16x8_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