1 // REQUIRES: aarch64-registered-target 2 // RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon -S -O3 -o - %s | FileCheck %s 3 4 // Test new aarch64 intrinsics and types 5 6 #include <arm_neon.h> 7 8 int8x16_t test_vcombine_s8(int8x8_t low, int8x8_t high) { 9 // CHECK-LABEL: test_vcombine_s8: 10 return vcombine_s8(low, high); 11 // CHECK: ins v0.d[1], v1.d[0] 12 } 13 14 int16x8_t test_vcombine_s16(int16x4_t low, int16x4_t high) { 15 // CHECK-LABEL: test_vcombine_s16: 16 return vcombine_s16(low, high); 17 // CHECK: ins v0.d[1], v1.d[0] 18 } 19 20 int32x4_t test_vcombine_s32(int32x2_t low, int32x2_t high) { 21 // CHECK-LABEL: test_vcombine_s32: 22 return vcombine_s32(low, high); 23 // CHECK: ins v0.d[1], v1.d[0] 24 } 25 26 int64x2_t test_vcombine_s64(int64x1_t low, int64x1_t high) { 27 // CHECK-LABEL: test_vcombine_s64: 28 return vcombine_s64(low, high); 29 // CHECK: ins v0.d[1], v1.d[0] 30 } 31 32 uint8x16_t test_vcombine_u8(uint8x8_t low, uint8x8_t high) { 33 // CHECK-LABEL: test_vcombine_u8: 34 return vcombine_u8(low, high); 35 // CHECK: ins v0.d[1], v1.d[0] 36 } 37 38 uint16x8_t test_vcombine_u16(uint16x4_t low, uint16x4_t high) { 39 // CHECK-LABEL: test_vcombine_u16: 40 return vcombine_u16(low, high); 41 // CHECK: ins v0.d[1], v1.d[0] 42 } 43 44 uint32x4_t test_vcombine_u32(uint32x2_t low, uint32x2_t high) { 45 // CHECK-LABEL: test_vcombine_u32: 46 return vcombine_u32(low, high); 47 // CHECK: ins v0.d[1], v1.d[0] 48 } 49 50 uint64x2_t test_vcombine_u64(uint64x1_t low, uint64x1_t high) { 51 // CHECK-LABEL: test_vcombine_u64: 52 return vcombine_u64(low, high); 53 // CHECK: ins v0.d[1], v1.d[0] 54 } 55 56 poly64x2_t test_vcombine_p64(poly64x1_t low, poly64x1_t high) { 57 // CHECK-LABEL: test_vcombine_p64: 58 return vcombine_p64(low, high); 59 // CHECK: ins v0.d[1], v1.d[0] 60 } 61 62 float16x8_t test_vcombine_f16(float16x4_t low, float16x4_t high) { 63 // CHECK-LABEL: test_vcombine_f16: 64 return vcombine_f16(low, high); 65 // CHECK: ins v0.d[1], v1.d[0] 66 } 67 68 float32x4_t test_vcombine_f32(float32x2_t low, float32x2_t high) { 69 // CHECK-LABEL: test_vcombine_f32: 70 return vcombine_f32(low, high); 71 // CHECK: ins v0.d[1], v1.d[0] 72 } 73 74 poly8x16_t test_vcombine_p8(poly8x8_t low, poly8x8_t high) { 75 // CHECK-LABEL: test_vcombine_p8: 76 return vcombine_p8(low, high); 77 // CHECK: ins v0.d[1], v1.d[0] 78 } 79 80 poly16x8_t test_vcombine_p16(poly16x4_t low, poly16x4_t high) { 81 // CHECK-LABEL: test_vcombine_p16: 82 return vcombine_p16(low, high); 83 // CHECK: ins v0.d[1], v1.d[0] 84 } 85 86 float64x2_t test_vcombine_f64(float64x1_t low, float64x1_t high) { 87 // CHECK-LABEL: test_vcombine_f64: 88 return vcombine_f64(low, high); 89 // CHECK: ins v0.d[1], v1.d[0] 90 } 91