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 8int8x16_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 14int16x8_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 20int32x4_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 26int64x2_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 32uint8x16_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 38uint16x8_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 44uint32x4_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 50uint64x2_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 56poly64x2_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 62float16x8_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 68float32x4_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 74poly8x16_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 80poly16x8_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 86float64x2_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