1 // REQUIRES: aarch64-registered-target
2 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +neon \
3 // RUN:   -ffp-contract=fast -S -O3 -o - %s | FileCheck %s
4 
5 // Test new aarch64 intrinsics and types
6 
7 #include <arm_neon.h>
8 
9 int8x8_t test_vget_high_s8(int8x16_t a) {
10   // CHECK-LABEL: test_vget_high_s8:
11   return vget_high_s8(a);
12   // CHECK: dup d0, {{v[0-9]+}}.d[1]
13 }
14 
15 int16x4_t test_vget_high_s16(int16x8_t a) {
16   // CHECK-LABEL: test_vget_high_s16:
17   return vget_high_s16(a);
18   // CHECK: dup d0, {{v[0-9]+}}.d[1]
19 }
20 
21 int32x2_t test_vget_high_s32(int32x4_t a) {
22   // CHECK-LABEL: test_vget_high_s32:
23   return vget_high_s32(a);
24   // CHECK: dup d0, {{v[0-9]+}}.d[1]
25 }
26 
27 int64x1_t test_vget_high_s64(int64x2_t a) {
28   // CHECK-LABEL: test_vget_high_s64:
29   return vget_high_s64(a);
30   // CHECK: dup d0, {{v[0-9]+}}.d[1]
31 }
32 
33 uint8x8_t test_vget_high_u8(uint8x16_t a) {
34   // CHECK-LABEL: test_vget_high_u8:
35   return vget_high_u8(a);
36   // CHECK: dup d0, {{v[0-9]+}}.d[1]
37 }
38 
39 uint16x4_t test_vget_high_u16(uint16x8_t a) {
40   // CHECK-LABEL: test_vget_high_u16:
41   return vget_high_u16(a);
42   // CHECK: dup d0, {{v[0-9]+}}.d[1]
43 }
44 
45 uint32x2_t test_vget_high_u32(uint32x4_t a) {
46   // CHECK-LABEL: test_vget_high_u32:
47   return vget_high_u32(a);
48   // CHECK: dup d0, {{v[0-9]+}}.d[1]
49 }
50 
51 uint64x1_t test_vget_high_u64(uint64x2_t a) {
52   // CHECK-LABEL: test_vget_high_u64:
53   return vget_high_u64(a);
54   // CHECK: dup d0, {{v[0-9]+}}.d[1]
55 }
56 
57 poly64x1_t test_vget_high_p64(poly64x2_t a) {
58   // CHECK-LABEL: test_vget_high_p64:
59   return vget_high_p64(a);
60   // CHECK: dup d0, {{v[0-9]+}}.d[1]
61 }
62 
63 float16x4_t test_vget_high_f16(float16x8_t a) {
64   // CHECK-LABEL: test_vget_high_f16:
65   return vget_high_f16(a);
66   // CHECK: dup d0, {{v[0-9]+}}.d[1]
67 }
68 
69 float32x2_t test_vget_high_f32(float32x4_t a) {
70   // CHECK-LABEL: test_vget_high_f32:
71   return vget_high_f32(a);
72   // CHECK: dup d0, {{v[0-9]+}}.d[1]
73 }
74 
75 poly8x8_t test_vget_high_p8(poly8x16_t a) {
76   // CHECK-LABEL: test_vget_high_p8:
77   return vget_high_p8(a);
78   // CHECK: dup d0, {{v[0-9]+}}.d[1]
79 }
80 
81 poly16x4_t test_vget_high_p16(poly16x8_t a) {
82   // CHECK-LABEL: test_vget_high_p16
83   return vget_high_p16(a);
84   // CHECK: dup d0, {{v[0-9]+}}.d[1]
85 }
86 
87 float64x1_t test_vget_high_f64(float64x2_t a) {
88   // CHECK-LABEL: test_vget_high_f64
89   return vget_high_f64(a);
90   // CHECK: dup d0, {{v[0-9]+}}.d[1]
91 }
92 
93 int8x8_t test_vget_low_s8(int8x16_t a) {
94   // CHECK-LABEL: test_vget_low_s8:
95   return vget_low_s8(a);
96   // CHECK-NEXT: ret
97 }
98 
99 int16x4_t test_vget_low_s16(int16x8_t a) {
100   // CHECK-LABEL: test_vget_low_s16:
101   return vget_low_s16(a);
102   // CHECK-NEXT: ret
103 }
104 
105 int32x2_t test_vget_low_s32(int32x4_t a) {
106   // CHECK-LABEL: test_vget_low_s32:
107   return vget_low_s32(a);
108   // CHECK-NEXT: ret
109 }
110 
111 int64x1_t test_vget_low_s64(int64x2_t a) {
112   // CHECK-LABEL: test_vget_low_s64:
113   return vget_low_s64(a);
114   // CHECK-NEXT: ret
115 }
116 
117 uint8x8_t test_vget_low_u8(uint8x16_t a) {
118   // CHECK-LABEL: test_vget_low_u8:
119   return vget_low_u8(a);
120   // CHECK-NEXT: ret
121 }
122 
123 uint16x4_t test_vget_low_u16(uint16x8_t a) {
124   // CHECK-LABEL: test_vget_low_u16:
125   return vget_low_u16(a);
126   // CHECK-NEXT: ret
127 }
128 
129 uint32x2_t test_vget_low_u32(uint32x4_t a) {
130   // CHECK-LABEL: test_vget_low_u32:
131   return vget_low_u32(a);
132   // CHECK-NEXT: ret
133 }
134 
135 uint64x1_t test_vget_low_u64(uint64x2_t a) {
136   // CHECK-LABEL: test_vget_low_u64:
137   return vget_low_u64(a);
138   // CHECK-NEXT: ret
139 }
140 
141 poly64x1_t test_vget_low_p64(poly64x2_t a) {
142   // CHECK-LABEL: test_vget_low_p64:
143   return vget_low_p64(a);
144   // CHECK-NEXT: ret
145 }
146 
147 float16x4_t test_vget_low_f16(float16x8_t a) {
148   // CHECK-LABEL: test_vget_low_f16:
149   return vget_low_f16(a);
150   // CHECK-NEXT: ret
151 }
152 
153 float32x2_t test_vget_low_f32(float32x4_t a) {
154   // CHECK-LABEL: test_vget_low_f32:
155   return vget_low_f32(a);
156   // CHECK-NEXT: ret
157 }
158 
159 poly8x8_t test_vget_low_p8(poly8x16_t a) {
160   // CHECK-LABEL: test_vget_low_p8:
161   return vget_low_p8(a);
162   // CHECK-NEXT: ret
163 }
164 
165 poly16x4_t test_vget_low_p16(poly16x8_t a) {
166   // CHECK-LABEL: test_vget_low_p16:
167   return vget_low_p16(a);
168   // CHECK-NEXT: ret
169 }
170 
171 float64x1_t test_vget_low_f64(float64x2_t a) {
172   // CHECK-LABEL: test_vget_low_f64:
173   return vget_low_f64(a);
174   // CHECK-NEXT: ret
175 }
176 
177