blob: a2511976a4fab1ace50156a26f0deeef4692ebcd [file] [log] [blame]
Stephen Hinesc568f1e2014-07-21 00:47:37 -07001// REQUIRES: aarch64-registered-target
Stephen Hines6bcf27b2014-05-29 04:14:42 -07002// RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \
Stephen Hines651f13c2014-04-23 16:59:28 -07003// RUN: -ffp-contract=fast -S -O3 -o - %s | FileCheck %s
Kevin Qin2a2b69b2013-11-14 06:44:42 +00004
5// Test new aarch64 intrinsics and types
6
7#include <arm_neon.h>
8
Stephen Hines651f13c2014-04-23 16:59:28 -07009// CHECK-LABEL: test_vceqz_s8
10// CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +000011uint8x8_t test_vceqz_s8(int8x8_t a) {
12 return vceqz_s8(a);
13}
14
Stephen Hines651f13c2014-04-23 16:59:28 -070015// CHECK-LABEL: test_vceqz_s16
16// CHECK: cmeq {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +000017uint16x4_t test_vceqz_s16(int16x4_t a) {
18 return vceqz_s16(a);
19}
20
Stephen Hines651f13c2014-04-23 16:59:28 -070021// CHECK-LABEL: test_vceqz_s32
22// CHECK: cmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +000023uint32x2_t test_vceqz_s32(int32x2_t a) {
24 return vceqz_s32(a);
25}
26
Stephen Hines651f13c2014-04-23 16:59:28 -070027// CHECK-LABEL: test_vceqz_s64
28// CHECK: cmeq {{d[0-9]+}}, {{d[0-9]+}}, #{{0x0|0}}
Bill Wendling612f5bf2013-12-08 00:02:49 +000029uint64x1_t test_vceqz_s64(int64x1_t a) {
30 return vceqz_s64(a);
31}
32
Stephen Hines651f13c2014-04-23 16:59:28 -070033// CHECK-LABEL: test_vceqz_u64
34// CHECK: cmeq {{d[0-9]+}}, {{d[0-9]+}}, #{{0x0|0}}
Bill Wendling612f5bf2013-12-08 00:02:49 +000035uint64x1_t test_vceqz_u64(uint64x1_t a) {
36 return vceqz_u64(a);
37}
38
Stephen Hines651f13c2014-04-23 16:59:28 -070039// CHECK-LABEL: test_vceqz_p64
40// CHECK: cmeq {{d[0-9]+}}, {{d[0-9]+}}, #{{0x0|0}}
Bill Wendling612f5bf2013-12-08 00:02:49 +000041uint64x1_t test_vceqz_p64(poly64x1_t a) {
42 return vceqz_p64(a);
43}
44
Stephen Hines651f13c2014-04-23 16:59:28 -070045// CHECK-LABEL: test_vceqzq_s8
46// CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +000047uint8x16_t test_vceqzq_s8(int8x16_t a) {
48 return vceqzq_s8(a);
49}
50
Stephen Hines651f13c2014-04-23 16:59:28 -070051// CHECK-LABEL: test_vceqzq_s16
52// CHECK: cmeq {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +000053uint16x8_t test_vceqzq_s16(int16x8_t a) {
54 return vceqzq_s16(a);
55}
56
Stephen Hines651f13c2014-04-23 16:59:28 -070057// CHECK-LABEL: test_vceqzq_s32
58// CHECK: cmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +000059uint32x4_t test_vceqzq_s32(int32x4_t a) {
60 return vceqzq_s32(a);
61}
62
Stephen Hines651f13c2014-04-23 16:59:28 -070063// CHECK-LABEL: test_vceqzq_s64
64// CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +000065uint64x2_t test_vceqzq_s64(int64x2_t a) {
66 return vceqzq_s64(a);
67}
68
Stephen Hines651f13c2014-04-23 16:59:28 -070069// CHECK-LABEL: test_vceqz_u8
70// CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +000071uint8x8_t test_vceqz_u8(uint8x8_t a) {
72 return vceqz_u8(a);
73}
74
Stephen Hines651f13c2014-04-23 16:59:28 -070075// CHECK-LABEL: test_vceqz_u16
76// CHECK: cmeq {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +000077uint16x4_t test_vceqz_u16(uint16x4_t a) {
78 return vceqz_u16(a);
79}
80
Stephen Hines651f13c2014-04-23 16:59:28 -070081// CHECK-LABEL: test_vceqz_u32
82// CHECK: cmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +000083uint32x2_t test_vceqz_u32(uint32x2_t a) {
84 return vceqz_u32(a);
85}
86
Stephen Hines651f13c2014-04-23 16:59:28 -070087// CHECK-LABEL: test_vceqzq_u8
88// CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +000089uint8x16_t test_vceqzq_u8(uint8x16_t a) {
90 return vceqzq_u8(a);
91}
92
Stephen Hines651f13c2014-04-23 16:59:28 -070093// CHECK-LABEL: test_vceqzq_u16
94// CHECK: cmeq {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +000095uint16x8_t test_vceqzq_u16(uint16x8_t a) {
96 return vceqzq_u16(a);
97}
98
Stephen Hines651f13c2014-04-23 16:59:28 -070099// CHECK-LABEL: test_vceqzq_u32
100// CHECK: cmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000101uint32x4_t test_vceqzq_u32(uint32x4_t a) {
102 return vceqzq_u32(a);
103}
104
Stephen Hines651f13c2014-04-23 16:59:28 -0700105// CHECK-LABEL: test_vceqzq_u64
106// CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000107uint64x2_t test_vceqzq_u64(uint64x2_t a) {
108 return vceqzq_u64(a);
109}
110
Stephen Hines651f13c2014-04-23 16:59:28 -0700111// CHECK-LABEL: test_vceqz_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000112// CHECK: fcmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
113uint32x2_t test_vceqz_f32(float32x2_t a) {
114 return vceqz_f32(a);
115}
116
Stephen Hines651f13c2014-04-23 16:59:28 -0700117// CHECK-LABEL: test_vceqz_f64
Bill Wendlingd6f42ac2013-12-08 00:03:17 +0000118// CHECK: fcmeq {{d[0-9]+}}, {{d[0-9]+}}, #0
119uint64x1_t test_vceqz_f64(float64x1_t a) {
120 return vceqz_f64(a);
121}
122
Stephen Hines651f13c2014-04-23 16:59:28 -0700123// CHECK-LABEL: test_vceqzq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000124// CHECK: fcmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
125uint32x4_t test_vceqzq_f32(float32x4_t a) {
126 return vceqzq_f32(a);
127}
128
Stephen Hines651f13c2014-04-23 16:59:28 -0700129// CHECK-LABEL: test_vceqz_p8
130// CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
131uint8x8_t test_vceqz_p8(poly8x8_t a) {
132 return vceqz_p8(a);
133}
134
135// CHECK-LABEL: test_vceqzq_p8
136// CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
137uint8x16_t test_vceqzq_p8(poly8x16_t a) {
138 return vceqzq_p8(a);
139}
140
141// CHECK-LABEL: test_vceqz_p16
142// CHECK: cmeq {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000143uint16x4_t test_vceqz_p16(poly16x4_t a) {
144 return vceqz_p16(a);
145}
146
Stephen Hines651f13c2014-04-23 16:59:28 -0700147// CHECK-LABEL: test_vceqzq_p16
148// CHECK: cmeq {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000149uint16x8_t test_vceqzq_p16(poly16x8_t a) {
150 return vceqzq_p16(a);
151}
152
Stephen Hines651f13c2014-04-23 16:59:28 -0700153// CHECK-LABEL: test_vceqzq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000154// CHECK: fcmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
155uint64x2_t test_vceqzq_f64(float64x2_t a) {
156 return vceqzq_f64(a);
157}
158
Stephen Hines651f13c2014-04-23 16:59:28 -0700159// CHECK-LABEL: test_vceqzq_p64
Bill Wendling612f5bf2013-12-08 00:02:49 +0000160// CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
161uint64x2_t test_vceqzq_p64(poly64x2_t a) {
162 return vceqzq_p64(a);
163}
164
Stephen Hines651f13c2014-04-23 16:59:28 -0700165// CHECK-LABEL: test_vcgez_s8
166// CHECK: cmge {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000167uint8x8_t test_vcgez_s8(int8x8_t a) {
168 return vcgez_s8(a);
169}
170
Stephen Hines651f13c2014-04-23 16:59:28 -0700171// CHECK-LABEL: test_vcgez_s16
172// CHECK: cmge {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000173uint16x4_t test_vcgez_s16(int16x4_t a) {
174 return vcgez_s16(a);
175}
176
Stephen Hines651f13c2014-04-23 16:59:28 -0700177// CHECK-LABEL: test_vcgez_s32
178// CHECK: cmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000179uint32x2_t test_vcgez_s32(int32x2_t a) {
180 return vcgez_s32(a);
181}
182
Stephen Hines651f13c2014-04-23 16:59:28 -0700183// CHECK-LABEL: test_vcgez_s64
184// CHECK: cmge {{d[0-9]+}}, {{d[0-9]+}}, #{{0x0|0}}
Bill Wendling612f5bf2013-12-08 00:02:49 +0000185uint64x1_t test_vcgez_s64(int64x1_t a) {
186 return vcgez_s64(a);
187}
188
Stephen Hines651f13c2014-04-23 16:59:28 -0700189// CHECK-LABEL: test_vcgezq_s8
190// CHECK: cmge {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000191uint8x16_t test_vcgezq_s8(int8x16_t a) {
192 return vcgezq_s8(a);
193}
194
Stephen Hines651f13c2014-04-23 16:59:28 -0700195// CHECK-LABEL: test_vcgezq_s16
196// CHECK: cmge {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000197uint16x8_t test_vcgezq_s16(int16x8_t a) {
198 return vcgezq_s16(a);
199}
200
Stephen Hines651f13c2014-04-23 16:59:28 -0700201// CHECK-LABEL: test_vcgezq_s32
202// CHECK: cmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000203uint32x4_t test_vcgezq_s32(int32x4_t a) {
204 return vcgezq_s32(a);
205}
206
Stephen Hines651f13c2014-04-23 16:59:28 -0700207// CHECK-LABEL: test_vcgezq_s64
208// CHECK: cmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000209uint64x2_t test_vcgezq_s64(int64x2_t a) {
210 return vcgezq_s64(a);
211}
212
Stephen Hines651f13c2014-04-23 16:59:28 -0700213// CHECK-LABEL: test_vcgez_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000214// CHECK: fcmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
215uint32x2_t test_vcgez_f32(float32x2_t a) {
216 return vcgez_f32(a);
217}
218
Stephen Hines651f13c2014-04-23 16:59:28 -0700219// CHECK-LABEL: test_vcgez_f64
220// CHECK: fcmge {{d[0-9]+}}, {{d[0-9]+}}, #0
221uint64x1_t test_vcgez_f64(float64x1_t a) {
222 return vcgez_f64(a);
223}
224
225// CHECK-LABEL: test_vcgezq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000226// CHECK: fcmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
227uint32x4_t test_vcgezq_f32(float32x4_t a) {
228 return vcgezq_f32(a);
229}
230
Stephen Hines651f13c2014-04-23 16:59:28 -0700231// CHECK-LABEL: test_vcgezq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000232// CHECK: fcmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
233uint64x2_t test_vcgezq_f64(float64x2_t a) {
234 return vcgezq_f64(a);
235}
236
Stephen Hines651f13c2014-04-23 16:59:28 -0700237// CHECK-LABEL: test_vclez_s8
238// CHECK: cmle {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000239uint8x8_t test_vclez_s8(int8x8_t a) {
240 return vclez_s8(a);
241}
242
Stephen Hines651f13c2014-04-23 16:59:28 -0700243// CHECK-LABEL: test_vclez_s16
244// CHECK: cmle {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000245uint16x4_t test_vclez_s16(int16x4_t a) {
246 return vclez_s16(a);
247}
248
Stephen Hines651f13c2014-04-23 16:59:28 -0700249// CHECK-LABEL: test_vclez_s32
250// CHECK: cmle {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000251uint32x2_t test_vclez_s32(int32x2_t a) {
252 return vclez_s32(a);
253}
254
Stephen Hines651f13c2014-04-23 16:59:28 -0700255// CHECK-LABEL: test_vclez_s64
256// CHECK: cmle {{d[0-9]+}}, {{d[0-9]+}}, #{{0x0|0}}
Bill Wendling612f5bf2013-12-08 00:02:49 +0000257uint64x1_t test_vclez_s64(int64x1_t a) {
258 return vclez_s64(a);
259}
260
Stephen Hines651f13c2014-04-23 16:59:28 -0700261// CHECK-LABEL: test_vclezq_s8
262// CHECK: cmle {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000263uint8x16_t test_vclezq_s8(int8x16_t a) {
264 return vclezq_s8(a);
265}
266
Stephen Hines651f13c2014-04-23 16:59:28 -0700267// CHECK-LABEL: test_vclezq_s16
268// CHECK: cmle {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000269uint16x8_t test_vclezq_s16(int16x8_t a) {
270 return vclezq_s16(a);
271}
272
Stephen Hines651f13c2014-04-23 16:59:28 -0700273// CHECK-LABEL: test_vclezq_s32
274// CHECK: cmle {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000275uint32x4_t test_vclezq_s32(int32x4_t a) {
276 return vclezq_s32(a);
277}
278
Stephen Hines651f13c2014-04-23 16:59:28 -0700279// CHECK-LABEL: test_vclezq_s64
280// CHECK: cmle {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000281uint64x2_t test_vclezq_s64(int64x2_t a) {
282 return vclezq_s64(a);
283}
284
Stephen Hines651f13c2014-04-23 16:59:28 -0700285// CHECK-LABEL: test_vclez_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000286// CHECK: fcmle {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
287uint32x2_t test_vclez_f32(float32x2_t a) {
288 return vclez_f32(a);
289}
290
Stephen Hines651f13c2014-04-23 16:59:28 -0700291// CHECK-LABEL: test_vclez_f64
292// CHECK: fcmle {{d[0-9]+}}, {{d[0-9]+}}, #0
293uint64x1_t test_vclez_f64(float64x1_t a) {
294 return vclez_f64(a);
295}
296
297// CHECK-LABEL: test_vclezq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000298// CHECK: fcmle {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
299uint32x4_t test_vclezq_f32(float32x4_t a) {
300 return vclezq_f32(a);
301}
302
Stephen Hines651f13c2014-04-23 16:59:28 -0700303// CHECK-LABEL: test_vclezq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000304// CHECK: fcmle {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
305uint64x2_t test_vclezq_f64(float64x2_t a) {
306 return vclezq_f64(a);
307}
308
Stephen Hines651f13c2014-04-23 16:59:28 -0700309// CHECK-LABEL: test_vcgtz_s8
310// CHECK: cmgt {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000311uint8x8_t test_vcgtz_s8(int8x8_t a) {
312 return vcgtz_s8(a);
313}
314
Stephen Hines651f13c2014-04-23 16:59:28 -0700315// CHECK-LABEL: test_vcgtz_s16
316// CHECK: cmgt {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000317uint16x4_t test_vcgtz_s16(int16x4_t a) {
318 return vcgtz_s16(a);
319}
320
Stephen Hines651f13c2014-04-23 16:59:28 -0700321// CHECK-LABEL: test_vcgtz_s32
322// CHECK: cmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000323uint32x2_t test_vcgtz_s32(int32x2_t a) {
324 return vcgtz_s32(a);
325}
326
Stephen Hines651f13c2014-04-23 16:59:28 -0700327// CHECK-LABEL: test_vcgtz_s64
328// CHECK: cmgt {{d[0-9]+}}, {{d[0-9]+}}, #{{0x0|0}}
Bill Wendling612f5bf2013-12-08 00:02:49 +0000329uint64x1_t test_vcgtz_s64(int64x1_t a) {
330 return vcgtz_s64(a);
331}
332
Stephen Hines651f13c2014-04-23 16:59:28 -0700333// CHECK-LABEL: test_vcgtzq_s8
334// CHECK: cmgt {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000335uint8x16_t test_vcgtzq_s8(int8x16_t a) {
336 return vcgtzq_s8(a);
337}
338
Stephen Hines651f13c2014-04-23 16:59:28 -0700339// CHECK-LABEL: test_vcgtzq_s16
340// CHECK: cmgt {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000341uint16x8_t test_vcgtzq_s16(int16x8_t a) {
342 return vcgtzq_s16(a);
343}
344
Stephen Hines651f13c2014-04-23 16:59:28 -0700345// CHECK-LABEL: test_vcgtzq_s32
346// CHECK: cmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000347uint32x4_t test_vcgtzq_s32(int32x4_t a) {
348 return vcgtzq_s32(a);
349}
350
Stephen Hines651f13c2014-04-23 16:59:28 -0700351// CHECK-LABEL: test_vcgtzq_s64
352// CHECK: cmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000353uint64x2_t test_vcgtzq_s64(int64x2_t a) {
354 return vcgtzq_s64(a);
355}
356
Stephen Hines651f13c2014-04-23 16:59:28 -0700357// CHECK-LABEL: test_vcgtz_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000358// CHECK: fcmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
359uint32x2_t test_vcgtz_f32(float32x2_t a) {
360 return vcgtz_f32(a);
361}
362
Stephen Hines651f13c2014-04-23 16:59:28 -0700363// CHECK-LABEL: test_vcgtz_f64
364// CHECK: fcmgt {{d[0-9]+}}, {{d[0-9]+}}, #0
365uint64x1_t test_vcgtz_f64(float64x1_t a) {
366 return vcgtz_f64(a);
367}
368
369// CHECK-LABEL: test_vcgtzq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000370// CHECK: fcmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
371uint32x4_t test_vcgtzq_f32(float32x4_t a) {
372 return vcgtzq_f32(a);
373}
374
Stephen Hines651f13c2014-04-23 16:59:28 -0700375// CHECK-LABEL: test_vcgtzq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000376// CHECK: fcmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
377uint64x2_t test_vcgtzq_f64(float64x2_t a) {
378 return vcgtzq_f64(a);
379}
380
Stephen Hines651f13c2014-04-23 16:59:28 -0700381// CHECK-LABEL: test_vcltz_s8
382// CHECK: sshr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #7
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000383uint8x8_t test_vcltz_s8(int8x8_t a) {
384 return vcltz_s8(a);
385}
386
Stephen Hines651f13c2014-04-23 16:59:28 -0700387// CHECK-LABEL: test_vcltz_s16
388// CHECK: sshr {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #15
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000389uint16x4_t test_vcltz_s16(int16x4_t a) {
390 return vcltz_s16(a);
391}
392
Stephen Hines651f13c2014-04-23 16:59:28 -0700393// CHECK-LABEL: test_vcltz_s32
394// CHECK: sshr {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #31
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000395uint32x2_t test_vcltz_s32(int32x2_t a) {
396 return vcltz_s32(a);
397}
398
Stephen Hines651f13c2014-04-23 16:59:28 -0700399// CHECK-LABEL: test_vcltz_s64
400// CHECK: sshr {{d[0-9]+}}, {{d[0-9]+}}, #63
Bill Wendling612f5bf2013-12-08 00:02:49 +0000401uint64x1_t test_vcltz_s64(int64x1_t a) {
402 return vcltz_s64(a);
403}
404
Stephen Hines651f13c2014-04-23 16:59:28 -0700405// CHECK-LABEL: test_vcltzq_s8
406// CHECK: sshr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #7
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000407uint8x16_t test_vcltzq_s8(int8x16_t a) {
408 return vcltzq_s8(a);
409}
410
Stephen Hines651f13c2014-04-23 16:59:28 -0700411// CHECK-LABEL: test_vcltzq_s16
412// CHECK: sshr {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #15
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000413uint16x8_t test_vcltzq_s16(int16x8_t a) {
414 return vcltzq_s16(a);
415}
416
Stephen Hines651f13c2014-04-23 16:59:28 -0700417// CHECK-LABEL: test_vcltzq_s32
418// CHECK: sshr {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #31
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000419uint32x4_t test_vcltzq_s32(int32x4_t a) {
420 return vcltzq_s32(a);
421}
422
Stephen Hines651f13c2014-04-23 16:59:28 -0700423// CHECK-LABEL: test_vcltzq_s64
424// CHECK: sshr {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #63
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000425uint64x2_t test_vcltzq_s64(int64x2_t a) {
426 return vcltzq_s64(a);
427}
428
Stephen Hines651f13c2014-04-23 16:59:28 -0700429// CHECK-LABEL: test_vcltz_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000430// CHECK: fcmlt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
431uint32x2_t test_vcltz_f32(float32x2_t a) {
432 return vcltz_f32(a);
433}
Stephen Hines651f13c2014-04-23 16:59:28 -0700434
435// CHECK-LABEL: test_vcltz_f64
436// CHECK: fcmlt {{d[0-9]+}}, {{d[0-9]+}}, #0
437uint64x1_t test_vcltz_f64(float64x1_t a) {
438 return vcltz_f64(a);
439}
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000440
Stephen Hines651f13c2014-04-23 16:59:28 -0700441// CHECK-LABEL: test_vcltzq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000442// CHECK: fcmlt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
443uint32x4_t test_vcltzq_f32(float32x4_t a) {
444 return vcltzq_f32(a);
445}
446
Stephen Hines651f13c2014-04-23 16:59:28 -0700447// CHECK-LABEL: test_vcltzq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000448// CHECK: fcmlt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
449uint64x2_t test_vcltzq_f64(float64x2_t a) {
450 return vcltzq_f64(a);
451}
452
Stephen Hines651f13c2014-04-23 16:59:28 -0700453// CHECK-LABEL: test_vrev16_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000454// CHECK: rev16 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
455int8x8_t test_vrev16_s8(int8x8_t a) {
456 return vrev16_s8(a);
457}
458
Stephen Hines651f13c2014-04-23 16:59:28 -0700459// CHECK-LABEL: test_vrev16_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000460// CHECK: rev16 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
461uint8x8_t test_vrev16_u8(uint8x8_t a) {
462 return vrev16_u8(a);
463}
464
Stephen Hines651f13c2014-04-23 16:59:28 -0700465// CHECK-LABEL: test_vrev16_p8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000466// CHECK: rev16 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
467poly8x8_t test_vrev16_p8(poly8x8_t a) {
468 return vrev16_p8(a);
469}
470
Stephen Hines651f13c2014-04-23 16:59:28 -0700471// CHECK-LABEL: test_vrev16q_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000472// CHECK: rev16 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
473int8x16_t test_vrev16q_s8(int8x16_t a) {
474 return vrev16q_s8(a);
475}
476
Stephen Hines651f13c2014-04-23 16:59:28 -0700477// CHECK-LABEL: test_vrev16q_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000478// CHECK: rev16 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
479uint8x16_t test_vrev16q_u8(uint8x16_t a) {
480 return vrev16q_u8(a);
481}
482
Stephen Hines651f13c2014-04-23 16:59:28 -0700483// CHECK-LABEL: test_vrev16q_p8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000484// CHECK: rev16 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
485poly8x16_t test_vrev16q_p8(poly8x16_t a) {
486 return vrev16q_p8(a);
487}
488
Stephen Hines651f13c2014-04-23 16:59:28 -0700489// CHECK-LABEL: test_vrev32_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000490// CHECK: rev32 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
491int8x8_t test_vrev32_s8(int8x8_t a) {
492 return vrev32_s8(a);
493}
494
Stephen Hines651f13c2014-04-23 16:59:28 -0700495// CHECK-LABEL: test_vrev32_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000496// CHECK: rev32 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
497int16x4_t test_vrev32_s16(int16x4_t a) {
498 return vrev32_s16(a);
499}
500
Stephen Hines651f13c2014-04-23 16:59:28 -0700501// CHECK-LABEL: test_vrev32_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000502// CHECK: rev32 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
503uint8x8_t test_vrev32_u8(uint8x8_t a) {
504 return vrev32_u8(a);
505}
506
Stephen Hines651f13c2014-04-23 16:59:28 -0700507// CHECK-LABEL: test_vrev32_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000508// CHECK: rev32 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
509uint16x4_t test_vrev32_u16(uint16x4_t a) {
510 return vrev32_u16(a);
511}
512
Stephen Hines651f13c2014-04-23 16:59:28 -0700513// CHECK-LABEL: test_vrev32_p8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000514// CHECK: rev32 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
515poly8x8_t test_vrev32_p8(poly8x8_t a) {
516 return vrev32_p8(a);
517}
518
Stephen Hines651f13c2014-04-23 16:59:28 -0700519// CHECK-LABEL: test_vrev32_p16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000520// CHECK: rev32 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
521poly16x4_t test_vrev32_p16(poly16x4_t a) {
522 return vrev32_p16(a);
523}
524
Stephen Hines651f13c2014-04-23 16:59:28 -0700525// CHECK-LABEL: test_vrev32q_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000526// CHECK: rev32 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
527int8x16_t test_vrev32q_s8(int8x16_t a) {
528 return vrev32q_s8(a);
529}
530
Stephen Hines651f13c2014-04-23 16:59:28 -0700531// CHECK-LABEL: test_vrev32q_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000532// CHECK: rev32 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
533int16x8_t test_vrev32q_s16(int16x8_t a) {
534 return vrev32q_s16(a);
535}
536
Stephen Hines651f13c2014-04-23 16:59:28 -0700537// CHECK-LABEL: test_vrev32q_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000538// CHECK: rev32 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
539uint8x16_t test_vrev32q_u8(uint8x16_t a) {
540 return vrev32q_u8(a);
541}
542
Stephen Hines651f13c2014-04-23 16:59:28 -0700543// CHECK-LABEL: test_vrev32q_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000544// CHECK: rev32 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
545uint16x8_t test_vrev32q_u16(uint16x8_t a) {
546 return vrev32q_u16(a);
547}
548
Stephen Hines651f13c2014-04-23 16:59:28 -0700549// CHECK-LABEL: test_vrev32q_p8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000550// CHECK: rev32 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
551poly8x16_t test_vrev32q_p8(poly8x16_t a) {
552 return vrev32q_p8(a);
553}
554
Stephen Hines651f13c2014-04-23 16:59:28 -0700555// CHECK-LABEL: test_vrev32q_p16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000556// CHECK: rev32 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
557poly16x8_t test_vrev32q_p16(poly16x8_t a) {
558 return vrev32q_p16(a);
559}
560
Stephen Hines651f13c2014-04-23 16:59:28 -0700561// CHECK-LABEL: test_vrev64_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000562// CHECK: rev64 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
563int8x8_t test_vrev64_s8(int8x8_t a) {
564 return vrev64_s8(a);
565}
566
Stephen Hines651f13c2014-04-23 16:59:28 -0700567// CHECK-LABEL: test_vrev64_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000568// CHECK: rev64 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
569int16x4_t test_vrev64_s16(int16x4_t a) {
570 return vrev64_s16(a);
571}
572
Stephen Hines651f13c2014-04-23 16:59:28 -0700573// CHECK-LABEL: test_vrev64_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000574// CHECK: rev64 v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
575int32x2_t test_vrev64_s32(int32x2_t a) {
576 return vrev64_s32(a);
577}
578
Stephen Hines651f13c2014-04-23 16:59:28 -0700579// CHECK-LABEL: test_vrev64_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000580// CHECK: rev64 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
581uint8x8_t test_vrev64_u8(uint8x8_t a) {
582 return vrev64_u8(a);
583}
584
Stephen Hines651f13c2014-04-23 16:59:28 -0700585// CHECK-LABEL: test_vrev64_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000586// CHECK: rev64 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
587uint16x4_t test_vrev64_u16(uint16x4_t a) {
588 return vrev64_u16(a);
589}
590
Stephen Hines651f13c2014-04-23 16:59:28 -0700591// CHECK-LABEL: test_vrev64_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000592// CHECK: rev64 v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
593uint32x2_t test_vrev64_u32(uint32x2_t a) {
594 return vrev64_u32(a);
595}
596
Stephen Hines651f13c2014-04-23 16:59:28 -0700597// CHECK-LABEL: test_vrev64_p8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000598// CHECK: rev64 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
599poly8x8_t test_vrev64_p8(poly8x8_t a) {
600 return vrev64_p8(a);
601}
602
Stephen Hines651f13c2014-04-23 16:59:28 -0700603// CHECK-LABEL: test_vrev64_p16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000604// CHECK: rev64 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
605poly16x4_t test_vrev64_p16(poly16x4_t a) {
606 return vrev64_p16(a);
607}
608
Stephen Hines651f13c2014-04-23 16:59:28 -0700609// CHECK-LABEL: test_vrev64_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000610// CHECK: rev64 v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
611float32x2_t test_vrev64_f32(float32x2_t a) {
612 return vrev64_f32(a);
613}
614
Stephen Hines651f13c2014-04-23 16:59:28 -0700615// CHECK-LABEL: test_vrev64q_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000616// CHECK: rev64 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
617int8x16_t test_vrev64q_s8(int8x16_t a) {
618 return vrev64q_s8(a);
619}
620
Stephen Hines651f13c2014-04-23 16:59:28 -0700621// CHECK-LABEL: test_vrev64q_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000622// CHECK: rev64 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
623int16x8_t test_vrev64q_s16(int16x8_t a) {
624 return vrev64q_s16(a);
625}
626
Stephen Hines651f13c2014-04-23 16:59:28 -0700627// CHECK-LABEL: test_vrev64q_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000628// CHECK: rev64 v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
629int32x4_t test_vrev64q_s32(int32x4_t a) {
630 return vrev64q_s32(a);
631}
632
Stephen Hines651f13c2014-04-23 16:59:28 -0700633// CHECK-LABEL: test_vrev64q_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000634// CHECK: rev64 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
635uint8x16_t test_vrev64q_u8(uint8x16_t a) {
636 return vrev64q_u8(a);
637}
638
Stephen Hines651f13c2014-04-23 16:59:28 -0700639// CHECK-LABEL: test_vrev64q_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000640// CHECK: rev64 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
641uint16x8_t test_vrev64q_u16(uint16x8_t a) {
642 return vrev64q_u16(a);
643}
644
Stephen Hines651f13c2014-04-23 16:59:28 -0700645// CHECK-LABEL: test_vrev64q_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000646// CHECK: rev64 v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
647uint32x4_t test_vrev64q_u32(uint32x4_t a) {
648 return vrev64q_u32(a);
649}
650
Stephen Hines651f13c2014-04-23 16:59:28 -0700651// CHECK-LABEL: test_vrev64q_p8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000652// CHECK: rev64 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
653poly8x16_t test_vrev64q_p8(poly8x16_t a) {
654 return vrev64q_p8(a);
655}
656
Stephen Hines651f13c2014-04-23 16:59:28 -0700657// CHECK-LABEL: test_vrev64q_p16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000658// CHECK: rev64 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
659poly16x8_t test_vrev64q_p16(poly16x8_t a) {
660 return vrev64q_p16(a);
661}
662
Stephen Hines651f13c2014-04-23 16:59:28 -0700663// CHECK-LABEL: test_vrev64q_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000664// CHECK: rev64 v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
665float32x4_t test_vrev64q_f32(float32x4_t a) {
666 return vrev64q_f32(a);
667}
668
669int16x4_t test_vpaddl_s8(int8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700670 // CHECK-LABEL: test_vpaddl_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000671 return vpaddl_s8(a);
672 // CHECK: saddlp v{{[0-9]+}}.4h, v{{[0-9]+}}.8b
673}
674
675int32x2_t test_vpaddl_s16(int16x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700676 // CHECK-LABEL: test_vpaddl_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000677 return vpaddl_s16(a);
678 // CHECK: saddlp v{{[0-9]+}}.2s, v{{[0-9]+}}.4h
679}
680
681int64x1_t test_vpaddl_s32(int32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700682 // CHECK-LABEL: test_vpaddl_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000683 return vpaddl_s32(a);
684 // CHECK: saddlp v{{[0-9]+}}.1d, v{{[0-9]+}}.2s
685}
686
687uint16x4_t test_vpaddl_u8(uint8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700688 // CHECK-LABEL: test_vpaddl_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000689 return vpaddl_u8(a);
690 // CHECK: uaddlp v{{[0-9]+}}.4h, v{{[0-9]+}}.8b
691}
692
693uint32x2_t test_vpaddl_u16(uint16x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700694 // CHECK-LABEL: test_vpaddl_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000695 return vpaddl_u16(a);
696 // CHECK: uaddlp v{{[0-9]+}}.2s, v{{[0-9]+}}.4h
697}
698
699uint64x1_t test_vpaddl_u32(uint32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700700 // CHECK-LABEL: test_vpaddl_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000701 return vpaddl_u32(a);
702 // CHECK: uaddlp v{{[0-9]+}}.1d, v{{[0-9]+}}.2s
703}
704
705int16x8_t test_vpaddlq_s8(int8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700706 // CHECK-LABEL: test_vpaddlq_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000707 return vpaddlq_s8(a);
708 // CHECK: saddlp v{{[0-9]+}}.8h, v{{[0-9]+}}.16b
709}
710
711int32x4_t test_vpaddlq_s16(int16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700712 // CHECK-LABEL: test_vpaddlq_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000713 return vpaddlq_s16(a);
714 // CHECK: saddlp v{{[0-9]+}}.4s, v{{[0-9]+}}.8h
715}
716
717int64x2_t test_vpaddlq_s32(int32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700718 // CHECK-LABEL: test_vpaddlq_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000719 return vpaddlq_s32(a);
720 // CHECK: saddlp v{{[0-9]+}}.2d, v{{[0-9]+}}.4s
721}
722
723uint16x8_t test_vpaddlq_u8(uint8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700724 // CHECK-LABEL: test_vpaddlq_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000725 return vpaddlq_u8(a);
726 // CHECK: uaddlp v{{[0-9]+}}.8h, v{{[0-9]+}}.16b
727}
728
729uint32x4_t test_vpaddlq_u16(uint16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700730 // CHECK-LABEL: test_vpaddlq_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000731 return vpaddlq_u16(a);
732 // CHECK: uaddlp v{{[0-9]+}}.4s, v{{[0-9]+}}.8h
733}
734
735uint64x2_t test_vpaddlq_u32(uint32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700736 // CHECK-LABEL: test_vpaddlq_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000737 return vpaddlq_u32(a);
738 // CHECK: uaddlp v{{[0-9]+}}.2d, v{{[0-9]+}}.4s
739}
740
741int16x4_t test_vpadal_s8(int16x4_t a, int8x8_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700742 // CHECK-LABEL: test_vpadal_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000743 return vpadal_s8(a, b);
744 // CHECK: sadalp v{{[0-9]+}}.4h, v{{[0-9]+}}.8b
745}
746
747int32x2_t test_vpadal_s16(int32x2_t a, int16x4_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700748 // CHECK-LABEL: test_vpadal_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000749 return vpadal_s16(a, b);
750 // CHECK: sadalp v{{[0-9]+}}.2s, v{{[0-9]+}}.4h
751}
752
753int64x1_t test_vpadal_s32(int64x1_t a, int32x2_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700754 // CHECK-LABEL: test_vpadal_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000755 return vpadal_s32(a, b);
756 // CHECK: sadalp v{{[0-9]+}}.1d, v{{[0-9]+}}.2s
757}
758
759uint16x4_t test_vpadal_u8(uint16x4_t a, uint8x8_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700760 // CHECK-LABEL: test_vpadal_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000761 return vpadal_u8(a, b);
762 // CHECK: uadalp v{{[0-9]+}}.4h, v{{[0-9]+}}.8b
763}
764
765uint32x2_t test_vpadal_u16(uint32x2_t a, uint16x4_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700766 // CHECK-LABEL: test_vpadal_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000767 return vpadal_u16(a, b);
768 // CHECK: uadalp v{{[0-9]+}}.2s, v{{[0-9]+}}.4h
769}
770
771uint64x1_t test_vpadal_u32(uint64x1_t a, uint32x2_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700772 // CHECK-LABEL: test_vpadal_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000773 return vpadal_u32(a, b);
774 // CHECK: uadalp v{{[0-9]+}}.1d, v{{[0-9]+}}.2s
775}
776
777int16x8_t test_vpadalq_s8(int16x8_t a, int8x16_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700778 // CHECK-LABEL: test_vpadalq_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000779 return vpadalq_s8(a, b);
780 // CHECK: sadalp v{{[0-9]+}}.8h, v{{[0-9]+}}.16b
781}
782
783int32x4_t test_vpadalq_s16(int32x4_t a, int16x8_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700784 // CHECK-LABEL: test_vpadalq_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000785 return vpadalq_s16(a, b);
786 // CHECK: sadalp v{{[0-9]+}}.4s, v{{[0-9]+}}.8h
787}
788
789int64x2_t test_vpadalq_s32(int64x2_t a, int32x4_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700790 // CHECK-LABEL: test_vpadalq_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000791 return vpadalq_s32(a, b);
792 // CHECK: sadalp v{{[0-9]+}}.2d, v{{[0-9]+}}.4s
793}
794
795uint16x8_t test_vpadalq_u8(uint16x8_t a, uint8x16_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700796 // CHECK-LABEL: test_vpadalq_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000797 return vpadalq_u8(a, b);
798 // CHECK: uadalp v{{[0-9]+}}.8h, v{{[0-9]+}}.16b
799}
800
801uint32x4_t test_vpadalq_u16(uint32x4_t a, uint16x8_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700802 // CHECK-LABEL: test_vpadalq_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000803 return vpadalq_u16(a, b);
804 // CHECK: uadalp v{{[0-9]+}}.4s, v{{[0-9]+}}.8h
805}
806
807uint64x2_t test_vpadalq_u32(uint64x2_t a, uint32x4_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700808 // CHECK-LABEL: test_vpadalq_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000809 return vpadalq_u32(a, b);
810 // CHECK: uadalp v{{[0-9]+}}.2d, v{{[0-9]+}}.4s
811}
812
813int8x8_t test_vqabs_s8(int8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700814 // CHECK-LABEL: test_vqabs_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000815 return vqabs_s8(a);
816 // CHECK: sqabs v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
817}
818
819int8x16_t test_vqabsq_s8(int8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700820 // CHECK-LABEL: test_vqabsq_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000821 return vqabsq_s8(a);
822 // CHECK: sqabs v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
823}
824
825int16x4_t test_vqabs_s16(int16x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700826 // CHECK-LABEL: test_vqabs_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000827 return vqabs_s16(a);
828 // CHECK: sqabs v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
829}
830
831int16x8_t test_vqabsq_s16(int16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700832 // CHECK-LABEL: test_vqabsq_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000833 return vqabsq_s16(a);
834 // CHECK: sqabs v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
835}
836
837int32x2_t test_vqabs_s32(int32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700838 // CHECK-LABEL: test_vqabs_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000839 return vqabs_s32(a);
840 // CHECK: sqabs v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
841}
842
843int32x4_t test_vqabsq_s32(int32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700844 // CHECK-LABEL: test_vqabsq_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000845 return vqabsq_s32(a);
846 // CHECK: sqabs v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
847}
848
849int64x2_t test_vqabsq_s64(int64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700850 // CHECK-LABEL: test_vqabsq_s64
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000851 return vqabsq_s64(a);
852 // CHECK: sqabs v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
853}
854
855int8x8_t test_vqneg_s8(int8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700856 // CHECK-LABEL: test_vqneg_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000857 return vqneg_s8(a);
858 // CHECK: sqneg v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
859}
860
861int8x16_t test_vqnegq_s8(int8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700862 // CHECK-LABEL: test_vqnegq_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000863 return vqnegq_s8(a);
864 // CHECK: sqneg v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
865}
866
867int16x4_t test_vqneg_s16(int16x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700868 // CHECK-LABEL: test_vqneg_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000869 return vqneg_s16(a);
870 // CHECK: sqneg v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
871}
872
873int16x8_t test_vqnegq_s16(int16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700874 // CHECK-LABEL: test_vqnegq_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000875 return vqnegq_s16(a);
876 // CHECK: sqneg v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
877}
878
879int32x2_t test_vqneg_s32(int32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700880 // CHECK-LABEL: test_vqneg_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000881 return vqneg_s32(a);
882 // CHECK: sqneg v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
883}
884
885int32x4_t test_vqnegq_s32(int32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700886 // CHECK-LABEL: test_vqnegq_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000887 return vqnegq_s32(a);
888 // CHECK: sqneg v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
889}
890
891int64x2_t test_vqnegq_s64(int64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700892 // CHECK-LABEL: test_vqnegq_s64
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000893 return vqnegq_s64(a);
894 // CHECK: sqneg v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
895}
896
897int8x8_t test_vneg_s8(int8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700898 // CHECK-LABEL: test_vneg_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000899 return vneg_s8(a);
900 // CHECK: neg v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
901}
902
903int8x16_t test_vnegq_s8(int8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700904 // CHECK-LABEL: test_vnegq_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000905 return vnegq_s8(a);
906 // CHECK: neg v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
907}
908
909int16x4_t test_vneg_s16(int16x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700910 // CHECK-LABEL: test_vneg_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000911 return vneg_s16(a);
912 // CHECK: neg v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
913}
914
915int16x8_t test_vnegq_s16(int16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700916 // CHECK-LABEL: test_vnegq_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000917 return vnegq_s16(a);
918 // CHECK: neg v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
919}
920
921int32x2_t test_vneg_s32(int32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700922 // CHECK-LABEL: test_vneg_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000923 return vneg_s32(a);
924 // CHECK: neg v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
925}
926
927int32x4_t test_vnegq_s32(int32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700928 // CHECK-LABEL: test_vnegq_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000929 return vnegq_s32(a);
930 // CHECK: neg v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
931}
932
933int64x2_t test_vnegq_s64(int64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700934 // CHECK-LABEL: test_vnegq_s64
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000935 return vnegq_s64(a);
936 // CHECK: neg v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
937}
938
939float32x2_t test_vneg_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700940 // CHECK-LABEL: test_vneg_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000941 return vneg_f32(a);
942 // CHECK: fneg v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
943}
944
945float32x4_t test_vnegq_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700946 // CHECK-LABEL: test_vnegq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000947 return vnegq_f32(a);
948 // CHECK: fneg v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
949}
950
951float64x2_t test_vnegq_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700952 // CHECK-LABEL: test_vnegq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000953 return vnegq_f64(a);
954 // CHECK: fneg v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
955}
956
957int8x8_t test_vabs_s8(int8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700958 // CHECK-LABEL: test_vabs_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000959 return vabs_s8(a);
960 // CHECK: abs v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
961}
962
963int8x16_t test_vabsq_s8(int8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700964 // CHECK-LABEL: test_vabsq_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000965 return vabsq_s8(a);
966 // CHECK: abs v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
967}
968
969int16x4_t test_vabs_s16(int16x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700970 // CHECK-LABEL: test_vabs_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000971 return vabs_s16(a);
972 // CHECK: abs v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
973}
974
975int16x8_t test_vabsq_s16(int16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700976 // CHECK-LABEL: test_vabsq_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000977 return vabsq_s16(a);
978 // CHECK: abs v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
979}
980
981int32x2_t test_vabs_s32(int32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700982 // CHECK-LABEL: test_vabs_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000983 return vabs_s32(a);
984 // CHECK: abs v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
985}
986
987int32x4_t test_vabsq_s32(int32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700988 // CHECK-LABEL: test_vabsq_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000989 return vabsq_s32(a);
990 // CHECK: abs v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
991}
992
993int64x2_t test_vabsq_s64(int64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -0700994 // CHECK-LABEL: test_vabsq_s64
Kevin Qin2a2b69b2013-11-14 06:44:42 +0000995 return vabsq_s64(a);
996 // CHECK: abs v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
997}
998
999float32x2_t test_vabs_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001000 // CHECK-LABEL: test_vabs_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001001 return vabs_f32(a);
1002 // CHECK: fabs v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1003}
1004
1005float32x4_t test_vabsq_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001006 // CHECK-LABEL: test_vabsq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001007 return vabsq_f32(a);
1008 // CHECK: fabs v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1009}
1010
1011float64x2_t test_vabsq_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001012 // CHECK-LABEL: test_vabsq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001013 return vabsq_f64(a);
1014 // CHECK: fabs v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1015}
1016
1017int8x8_t test_vuqadd_s8(int8x8_t a, int8x8_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001018 // CHECK-LABEL: test_vuqadd_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001019 return vuqadd_s8(a, b);
1020 // CHECK: suqadd v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1021}
1022
1023int8x16_t test_vuqaddq_s8(int8x16_t a, int8x16_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001024 // CHECK-LABEL: test_vuqaddq_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001025 return vuqaddq_s8(a, b);
1026 // CHECK: suqadd v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1027}
1028
1029int16x4_t test_vuqadd_s16(int16x4_t a, int16x4_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001030 // CHECK-LABEL: test_vuqadd_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001031 return vuqadd_s16(a, b);
1032 // CHECK: suqadd v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
1033}
1034
1035int16x8_t test_vuqaddq_s16(int16x8_t a, int16x8_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001036 // CHECK-LABEL: test_vuqaddq_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001037 return vuqaddq_s16(a, b);
1038 // CHECK: suqadd v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
1039}
1040
1041int32x2_t test_vuqadd_s32(int32x2_t a, int32x2_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001042 // CHECK-LABEL: test_vuqadd_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001043 return vuqadd_s32(a, b);
1044 // CHECK: suqadd v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1045}
1046
1047int32x4_t test_vuqaddq_s32(int32x4_t a, int32x4_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001048 // CHECK-LABEL: test_vuqaddq_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001049 return vuqaddq_s32(a, b);
1050 // CHECK: suqadd v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1051}
1052
1053int64x2_t test_vuqaddq_s64(int64x2_t a, int64x2_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001054 // CHECK-LABEL: test_vuqaddq_s64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001055 return vuqaddq_s64(a, b);
1056 // CHECK: suqadd v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1057}
1058
1059int8x8_t test_vcls_s8(int8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001060 // CHECK-LABEL: test_vcls_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001061 return vcls_s8(a);
1062 // CHECK: cls v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1063}
1064
1065int8x16_t test_vclsq_s8(int8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001066 // CHECK-LABEL: test_vclsq_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001067 return vclsq_s8(a);
1068 // CHECK: cls v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1069}
1070
1071int16x4_t test_vcls_s16(int16x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001072 // CHECK-LABEL: test_vcls_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001073 return vcls_s16(a);
1074 // CHECK: cls v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
1075}
1076
1077int16x8_t test_vclsq_s16(int16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001078 // CHECK-LABEL: test_vclsq_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001079 return vclsq_s16(a);
1080 // CHECK: cls v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
1081}
1082
1083int32x2_t test_vcls_s32(int32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001084 // CHECK-LABEL: test_vcls_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001085 return vcls_s32(a);
1086 // CHECK: cls v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1087}
1088
1089int32x4_t test_vclsq_s32(int32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001090 // CHECK-LABEL: test_vclsq_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001091 return vclsq_s32(a);
1092 // CHECK: cls v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1093}
1094
1095int8x8_t test_vclz_s8(int8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001096 // CHECK-LABEL: test_vclz_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001097 return vclz_s8(a);
1098 // CHECK: clz v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1099}
1100
1101int8x16_t test_vclzq_s8(int8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001102 // CHECK-LABEL: test_vclzq_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001103 return vclzq_s8(a);
1104 // CHECK: clz v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1105}
1106
1107int16x4_t test_vclz_s16(int16x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001108 // CHECK-LABEL: test_vclz_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001109 return vclz_s16(a);
1110 // CHECK: clz v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
1111}
1112
1113int16x8_t test_vclzq_s16(int16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001114 // CHECK-LABEL: test_vclzq_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001115 return vclzq_s16(a);
1116 // CHECK: clz v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
1117}
1118
1119int32x2_t test_vclz_s32(int32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001120 // CHECK-LABEL: test_vclz_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001121 return vclz_s32(a);
1122 // CHECK: clz v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1123}
1124
1125int32x4_t test_vclzq_s32(int32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001126 // CHECK-LABEL: test_vclzq_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001127 return vclzq_s32(a);
1128 // CHECK: clz v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1129}
1130
1131uint8x8_t test_vclz_u8(uint8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001132 // CHECK-LABEL: test_vclz_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001133 return vclz_u8(a);
1134 // CHECK: clz v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1135}
1136
1137uint8x16_t test_vclzq_u8(uint8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001138 // CHECK-LABEL: test_vclzq_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001139 return vclzq_u8(a);
1140 // CHECK: clz v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1141}
1142
1143uint16x4_t test_vclz_u16(uint16x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001144 // CHECK-LABEL: test_vclz_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001145 return vclz_u16(a);
1146 // CHECK: clz v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
1147}
1148
1149uint16x8_t test_vclzq_u16(uint16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001150 // CHECK-LABEL: test_vclzq_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001151 return vclzq_u16(a);
1152 // CHECK: clz v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
1153}
1154
1155uint32x2_t test_vclz_u32(uint32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001156 // CHECK-LABEL: test_vclz_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001157 return vclz_u32(a);
1158 // CHECK: clz v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1159}
1160
1161uint32x4_t test_vclzq_u32(uint32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001162 // CHECK-LABEL: test_vclzq_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001163 return vclzq_u32(a);
1164 // CHECK: clz v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1165}
1166
1167int8x8_t test_vcnt_s8(int8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001168 // CHECK-LABEL: test_vcnt_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001169 return vcnt_s8(a);
1170 // CHECK: cnt v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1171}
1172
1173int8x16_t test_vcntq_s8(int8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001174 // CHECK-LABEL: test_vcntq_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001175 return vcntq_s8(a);
1176 // CHECK: cnt v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1177}
1178
1179uint8x8_t test_vcnt_u8(uint8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001180 // CHECK-LABEL: test_vcnt_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001181 return vcnt_u8(a);
1182 // CHECK: cnt v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1183}
1184
1185uint8x16_t test_vcntq_u8(uint8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001186 // CHECK-LABEL: test_vcntq_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001187 return vcntq_u8(a);
1188 // CHECK: cnt v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1189}
1190
1191poly8x8_t test_vcnt_p8(poly8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001192 // CHECK-LABEL: test_vcnt_p8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001193 return vcnt_p8(a);
1194 // CHECK: cnt v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1195}
1196
1197poly8x16_t test_vcntq_p8(poly8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001198 // CHECK-LABEL: test_vcntq_p8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001199 return vcntq_p8(a);
1200 // CHECK: cnt v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1201}
1202
1203int8x8_t test_vmvn_s8(int8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001204 // CHECK-LABEL: test_vmvn_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001205 return vmvn_s8(a);
Stephen Hines6bcf27b2014-05-29 04:14:42 -07001206 // CHECK: {{mvn|not}} v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001207}
1208
1209int8x16_t test_vmvnq_s8(int8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001210 // CHECK-LABEL: test_vmvnq_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001211 return vmvnq_s8(a);
Stephen Hines6bcf27b2014-05-29 04:14:42 -07001212 // CHECK: {{mvn|not}} v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001213}
1214
1215int16x4_t test_vmvn_s16(int16x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001216 // CHECK-LABEL: test_vmvn_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001217 return vmvn_s16(a);
Stephen Hines6bcf27b2014-05-29 04:14:42 -07001218 // CHECK: {{mvn|not}} v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001219}
1220
1221int16x8_t test_vmvnq_s16(int16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001222 // CHECK-LABEL: test_vmvnq_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001223 return vmvnq_s16(a);
Stephen Hines6bcf27b2014-05-29 04:14:42 -07001224 // CHECK: {{mvn|not}} v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001225}
1226
1227int32x2_t test_vmvn_s32(int32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001228 // CHECK-LABEL: test_vmvn_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001229 return vmvn_s32(a);
Stephen Hines6bcf27b2014-05-29 04:14:42 -07001230 // CHECK: {{mvn|not}} v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001231}
1232
1233int32x4_t test_vmvnq_s32(int32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001234 // CHECK-LABEL: test_vmvnq_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001235 return vmvnq_s32(a);
Stephen Hines6bcf27b2014-05-29 04:14:42 -07001236 // CHECK: {{mvn|not}} v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001237}
1238
1239uint8x8_t test_vmvn_u8(uint8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001240 // CHECK-LABEL: test_vmvn_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001241 return vmvn_u8(a);
Stephen Hines6bcf27b2014-05-29 04:14:42 -07001242 // CHECK: {{mvn|not}} v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001243}
1244
1245uint8x16_t test_vmvnq_u8(uint8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001246 // CHECK-LABEL: test_vmvnq_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001247 return vmvnq_u8(a);
Stephen Hines6bcf27b2014-05-29 04:14:42 -07001248 // CHECK: {{mvn|not}} v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001249}
1250
1251uint16x4_t test_vmvn_u16(uint16x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001252 // CHECK-LABEL: test_vmvn_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001253 return vmvn_u16(a);
Stephen Hines6bcf27b2014-05-29 04:14:42 -07001254 // CHECK: {{mvn|not}} v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001255}
1256
1257uint16x8_t test_vmvnq_u16(uint16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001258 // CHECK-LABEL: test_vmvnq_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001259 return vmvnq_u16(a);
Stephen Hines6bcf27b2014-05-29 04:14:42 -07001260 // CHECK: {{mvn|not}} v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001261}
1262
1263uint32x2_t test_vmvn_u32(uint32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001264 // CHECK-LABEL: test_vmvn_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001265 return vmvn_u32(a);
Stephen Hines6bcf27b2014-05-29 04:14:42 -07001266 // CHECK: {{mvn|not}} v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001267}
1268
1269uint32x4_t test_vmvnq_u32(uint32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001270 // CHECK-LABEL: test_vmvnq_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001271 return vmvnq_u32(a);
Stephen Hines6bcf27b2014-05-29 04:14:42 -07001272 // CHECK: {{mvn|not}} v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001273}
1274
1275poly8x8_t test_vmvn_p8(poly8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001276 // CHECK-LABEL: test_vmvn_p8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001277 return vmvn_p8(a);
Stephen Hines6bcf27b2014-05-29 04:14:42 -07001278 // CHECK: {{mvn|not}} v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001279}
1280
1281poly8x16_t test_vmvnq_p8(poly8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001282 // CHECK-LABEL: test_vmvnq_p8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001283 return vmvnq_p8(a);
Stephen Hines6bcf27b2014-05-29 04:14:42 -07001284 // CHECK: {{mvn|not}} v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001285}
1286
1287int8x8_t test_vrbit_s8(int8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001288 // CHECK-LABEL: test_vrbit_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001289 return vrbit_s8(a);
1290 // CHECK: rbit v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1291}
1292
1293int8x16_t test_vrbitq_s8(int8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001294 // CHECK-LABEL: test_vrbitq_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001295 return vrbitq_s8(a);
1296 // CHECK: rbit v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1297}
1298
1299uint8x8_t test_vrbit_u8(uint8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001300 // CHECK-LABEL: test_vrbit_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001301 return vrbit_u8(a);
1302 // CHECK: rbit v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1303}
1304
1305uint8x16_t test_vrbitq_u8(uint8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001306 // CHECK-LABEL: test_vrbitq_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001307 return vrbitq_u8(a);
1308 // CHECK: rbit v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1309}
1310
1311poly8x8_t test_vrbit_p8(poly8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001312 // CHECK-LABEL: test_vrbit_p8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001313 return vrbit_p8(a);
1314 // CHECK: rbit v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1315}
1316
1317poly8x16_t test_vrbitq_p8(poly8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001318 // CHECK-LABEL: test_vrbitq_p8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001319 return vrbitq_p8(a);
1320 // CHECK: rbit v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1321}
1322
1323int8x8_t test_vmovn_s16(int16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001324 // CHECK-LABEL: test_vmovn_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001325 return vmovn_s16(a);
1326 // CHECK: xtn v{{[0-9]+}}.8b, v{{[0-9]+}}.8h
1327}
1328
1329int16x4_t test_vmovn_s32(int32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001330 // CHECK-LABEL: test_vmovn_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001331 return vmovn_s32(a);
1332 // CHECK: xtn v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
1333}
1334
1335int32x2_t test_vmovn_s64(int64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001336 // CHECK-LABEL: test_vmovn_s64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001337 return vmovn_s64(a);
1338 // CHECK: xtn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
1339}
1340
1341uint8x8_t test_vmovn_u16(uint16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001342 // CHECK-LABEL: test_vmovn_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001343 return vmovn_u16(a);
1344 // CHECK: xtn v{{[0-9]+}}.8b, v{{[0-9]+}}.8h
1345}
1346
1347uint16x4_t test_vmovn_u32(uint32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001348 // CHECK-LABEL: test_vmovn_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001349 return vmovn_u32(a);
1350 // CHECK: xtn v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
1351}
1352
1353uint32x2_t test_vmovn_u64(uint64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001354 // CHECK-LABEL: test_vmovn_u64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001355 return vmovn_u64(a);
1356 // CHECK: xtn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
1357}
1358
1359int8x16_t test_vmovn_high_s16(int8x8_t a, int16x8_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001360 // CHECK-LABEL: test_vmovn_high_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001361 return vmovn_high_s16(a, b);
1362 // CHECK: xtn2 v{{[0-9]+}}.16b, v{{[0-9]+}}.8h
1363}
1364
1365int16x8_t test_vmovn_high_s32(int16x4_t a, int32x4_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001366 // CHECK-LABEL: test_vmovn_high_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001367 return vmovn_high_s32(a, b);
1368 // CHECK: xtn2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
1369}
1370
1371int32x4_t test_vmovn_high_s64(int32x2_t a, int64x2_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001372 // CHECK-LABEL: test_vmovn_high_s64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001373 return vmovn_high_s64(a, b);
1374 // CHECK: xtn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
1375}
1376
1377int8x16_t test_vmovn_high_u16(int8x8_t a, int16x8_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001378 // CHECK-LABEL: test_vmovn_high_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001379 return vmovn_high_u16(a, b);
1380 // CHECK: xtn2 v{{[0-9]+}}.16b, v{{[0-9]+}}.8h
1381}
1382
1383int16x8_t test_vmovn_high_u32(int16x4_t a, int32x4_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001384 // CHECK-LABEL: test_vmovn_high_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001385 return vmovn_high_u32(a, b);
1386 // CHECK: xtn2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
1387}
1388
1389int32x4_t test_vmovn_high_u64(int32x2_t a, int64x2_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001390 // CHECK-LABEL: test_vmovn_high_u64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001391 return vmovn_high_u64(a, b);
1392 // CHECK: xtn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
1393}
1394
1395int8x8_t test_vqmovun_s16(int16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001396 // CHECK-LABEL: test_vqmovun_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001397 return vqmovun_s16(a);
1398 // CHECK: sqxtun v{{[0-9]+}}.8b, v{{[0-9]+}}.8h
1399}
1400
1401int16x4_t test_vqmovun_s32(int32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001402 // CHECK-LABEL: test_vqmovun_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001403 return vqmovun_s32(a);
1404 // CHECK: sqxtun v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
1405}
1406
1407int32x2_t test_vqmovun_s64(int64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001408 // CHECK-LABEL: test_vqmovun_s64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001409 return vqmovun_s64(a);
1410 // CHECK: sqxtun v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
1411}
1412
1413int8x16_t test_vqmovun_high_s16(int8x8_t a, int16x8_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001414 // CHECK-LABEL: test_vqmovun_high_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001415 return vqmovun_high_s16(a, b);
1416 // CHECK: sqxtun2 v{{[0-9]+}}.16b, v{{[0-9]+}}.8h
1417}
1418
1419int16x8_t test_vqmovun_high_s32(int16x4_t a, int32x4_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001420 // CHECK-LABEL: test_vqmovun_high_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001421 return vqmovun_high_s32(a, b);
1422 // CHECK: sqxtun2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
1423}
1424
1425int32x4_t test_vqmovun_high_s64(int32x2_t a, int64x2_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001426 // CHECK-LABEL: test_vqmovun_high_s64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001427 return vqmovun_high_s64(a, b);
1428 // CHECK: sqxtun2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
1429}
1430
1431int8x8_t test_vqmovn_s16(int16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001432 // CHECK-LABEL: test_vqmovn_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001433 return vqmovn_s16(a);
1434 // CHECK: sqxtn v{{[0-9]+}}.8b, v{{[0-9]+}}.8h
1435}
1436
1437int16x4_t test_vqmovn_s32(int32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001438 // CHECK-LABEL: test_vqmovn_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001439 return vqmovn_s32(a);
1440 // CHECK: sqxtn v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
1441}
1442
1443int32x2_t test_vqmovn_s64(int64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001444 // CHECK-LABEL: test_vqmovn_s64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001445 return vqmovn_s64(a);
1446 // CHECK: sqxtn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
1447}
1448
1449int8x16_t test_vqmovn_high_s16(int8x8_t a, int16x8_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001450 // CHECK-LABEL: test_vqmovn_high_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001451 return vqmovn_high_s16(a, b);
1452 // CHECK: sqxtn2 v{{[0-9]+}}.16b, v{{[0-9]+}}.8h
1453}
1454
1455int16x8_t test_vqmovn_high_s32(int16x4_t a, int32x4_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001456 // CHECK-LABEL: test_vqmovn_high_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001457 return vqmovn_high_s32(a, b);
1458 // CHECK: sqxtn2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
1459}
1460
1461int32x4_t test_vqmovn_high_s64(int32x2_t a, int64x2_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001462 // CHECK-LABEL: test_vqmovn_high_s64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001463 return vqmovn_high_s64(a, b);
1464 // CHECK: sqxtn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
1465}
1466
1467uint8x8_t test_vqmovn_u16(uint16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001468 // CHECK-LABEL: test_vqmovn_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001469 return vqmovn_u16(a);
1470 // CHECK: uqxtn v{{[0-9]+}}.8b, v{{[0-9]+}}.8h
1471}
1472
1473uint16x4_t test_vqmovn_u32(uint32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001474 // CHECK-LABEL: test_vqmovn_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001475 return vqmovn_u32(a);
1476 // CHECK: uqxtn v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
1477}
1478
1479uint32x2_t test_vqmovn_u64(uint64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001480 // CHECK-LABEL: test_vqmovn_u64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001481 return vqmovn_u64(a);
1482 // CHECK: uqxtn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
1483}
1484
1485uint8x16_t test_vqmovn_high_u16(uint8x8_t a, uint16x8_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001486 // CHECK-LABEL: test_vqmovn_high_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001487 return vqmovn_high_u16(a, b);
1488 // CHECK: uqxtn2 v{{[0-9]+}}.16b, v{{[0-9]+}}.8h
1489}
1490
1491uint16x8_t test_vqmovn_high_u32(uint16x4_t a, uint32x4_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001492 // CHECK-LABEL: test_vqmovn_high_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001493 return vqmovn_high_u32(a, b);
1494 // CHECK: uqxtn2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
1495}
1496
1497uint32x4_t test_vqmovn_high_u64(uint32x2_t a, uint64x2_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001498 // CHECK-LABEL: test_vqmovn_high_u64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001499 return vqmovn_high_u64(a, b);
1500 // CHECK: uqxtn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
1501}
1502
1503int16x8_t test_vshll_n_s8(int8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001504 // CHECK-LABEL: test_vshll_n_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001505 return vshll_n_s8(a, 8);
1506 // CHECK: shll {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, #8
1507}
1508
1509int32x4_t test_vshll_n_s16(int16x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001510 // CHECK-LABEL: test_vshll_n_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001511 return vshll_n_s16(a, 16);
1512 // CHECK: shll {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, #16
1513}
1514
1515int64x2_t test_vshll_n_s32(int32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001516 // CHECK-LABEL: test_vshll_n_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001517 return vshll_n_s32(a, 32);
1518 // CHECK: shll {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, #32
1519}
1520
1521uint16x8_t test_vshll_n_u8(uint8x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001522 // CHECK-LABEL: test_vshll_n_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001523 return vshll_n_u8(a, 8);
1524 // CHECK: shll {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, #8
1525}
1526
1527uint32x4_t test_vshll_n_u16(uint16x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001528 // CHECK-LABEL: test_vshll_n_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001529 return vshll_n_u16(a, 16);
1530 // CHECK: shll {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, #16
1531}
1532
1533uint64x2_t test_vshll_n_u32(uint32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001534 // CHECK-LABEL: test_vshll_n_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001535 return vshll_n_u32(a, 32);
1536 // CHECK: shll {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, #32
1537}
1538
1539int16x8_t test_vshll_high_n_s8(int8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001540 // CHECK-LABEL: test_vshll_high_n_s8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001541 return vshll_high_n_s8(a, 8);
1542 // CHECK: shll2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, #8
1543}
1544
1545int32x4_t test_vshll_high_n_s16(int16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001546 // CHECK-LABEL: test_vshll_high_n_s16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001547 return vshll_high_n_s16(a, 16);
1548 // CHECK: shll2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, #16
1549}
1550
1551int64x2_t test_vshll_high_n_s32(int32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001552 // CHECK-LABEL: test_vshll_high_n_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001553 return vshll_high_n_s32(a, 32);
1554 // CHECK: shll2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, #32
1555}
1556
1557uint16x8_t test_vshll_high_n_u8(uint8x16_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001558 // CHECK-LABEL: test_vshll_high_n_u8
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001559 return vshll_high_n_u8(a, 8);
1560 // CHECK: shll2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, #8
1561}
1562
1563uint32x4_t test_vshll_high_n_u16(uint16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001564 // CHECK-LABEL: test_vshll_high_n_u16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001565 return vshll_high_n_u16(a, 16);
1566 // CHECK: shll2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, #16
1567}
1568
1569uint64x2_t test_vshll_high_n_u32(uint32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001570 // CHECK-LABEL: test_vshll_high_n_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001571 return vshll_high_n_u32(a, 32);
1572 // CHECK: shll2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, #32
1573}
1574
1575float16x4_t test_vcvt_f16_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001576 //CHECK-LABEL: test_vcvt_f16_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001577 return vcvt_f16_f32(a);
1578 // CHECK: fcvtn v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
1579}
1580
1581float16x8_t test_vcvt_high_f16_f32(float16x4_t a, float32x4_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001582 //CHECK-LABEL: test_vcvt_high_f16_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001583 return vcvt_high_f16_f32(a, b);
1584 // CHECK: fcvtn2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
1585}
1586
1587float32x2_t test_vcvt_f32_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001588 //CHECK-LABEL: test_vcvt_f32_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001589 return vcvt_f32_f64(a);
1590 // CHECK: fcvtn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
1591}
1592
1593float32x4_t test_vcvt_high_f32_f64(float32x2_t a, float64x2_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001594 //CHECK-LABEL: test_vcvt_high_f32_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001595 return vcvt_high_f32_f64(a, b);
1596 // CHECK: fcvtn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
1597}
1598
1599float32x2_t test_vcvtx_f32_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001600 //CHECK-LABEL: test_vcvtx_f32_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001601 return vcvtx_f32_f64(a);
1602 // CHECK: fcvtxn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
1603}
1604
1605float32x4_t test_vcvtx_high_f32_f64(float32x2_t a, float64x2_t b) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001606 //CHECK-LABEL: test_vcvtx_high_f32_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001607 return vcvtx_high_f32_f64(a, b);
1608 // CHECK: fcvtxn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
1609}
1610
1611float32x4_t test_vcvt_f32_f16(float16x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001612 //CHECK-LABEL: test_vcvt_f32_f16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001613 return vcvt_f32_f16(a);
1614 // CHECK: fcvtl v{{[0-9]+}}.4s, v{{[0-9]+}}.4h
1615}
1616
1617float32x4_t test_vcvt_high_f32_f16(float16x8_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001618 //CHECK-LABEL: test_vcvt_high_f32_f16
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001619 return vcvt_high_f32_f16(a);
1620 // CHECK: fcvtl2 v{{[0-9]+}}.4s, v{{[0-9]+}}.8h
1621}
1622
1623float64x2_t test_vcvt_f64_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001624 //CHECK-LABEL: test_vcvt_f64_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001625 return vcvt_f64_f32(a);
1626 // CHECK: fcvtl v{{[0-9]+}}.2d, v{{[0-9]+}}.2s
1627}
1628
1629float64x2_t test_vcvt_high_f64_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001630 //CHECK-LABEL: test_vcvt_high_f64_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001631 return vcvt_high_f64_f32(a);
1632 // CHECK: fcvtl2 v{{[0-9]+}}.2d, v{{[0-9]+}}.4s
1633}
1634
1635float32x2_t test_vrndn_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001636 //CHECK-LABEL: test_vrndn_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001637 return vrndn_f32(a);
1638 // CHECK: frintn v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1639}
1640
1641float32x4_t test_vrndnq_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001642 //CHECK-LABEL: test_vrndnq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001643 return vrndnq_f32(a);
1644 // CHECK: frintn v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1645}
1646
1647float64x2_t test_vrndnq_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001648 //CHECK-LABEL: test_vrndnq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001649 return vrndnq_f64(a);
1650 // CHECK: frintn v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1651}
1652
1653float32x2_t test_vrnda_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001654 //CHECK-LABEL: test_vrnda_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001655 return vrnda_f32(a);
1656 // CHECK: frinta v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1657}
1658
1659float32x4_t test_vrndaq_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001660 //CHECK-LABEL: test_vrndaq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001661 return vrndaq_f32(a);
1662 // CHECK: frinta v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1663}
1664
1665float64x2_t test_vrndaq_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001666 //CHECK-LABEL: test_vrndaq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001667 return vrndaq_f64(a);
1668 // CHECK: frinta v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1669}
1670
1671float32x2_t test_vrndp_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001672 //CHECK-LABEL: test_vrndp_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001673 return vrndp_f32(a);
1674 // CHECK: frintp v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1675}
1676
1677float32x4_t test_vrndpq_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001678 //CHECK-LABEL: test_vrndpq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001679 return vrndpq_f32(a);
1680 // CHECK: frintp v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1681}
1682
1683float64x2_t test_vrndpq_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001684 //CHECK-LABEL: test_vrndpq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001685 return vrndpq_f64(a);
1686 // CHECK: frintp v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1687}
1688
1689float32x2_t test_vrndm_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001690 //CHECK-LABEL: test_vrndm_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001691 return vrndm_f32(a);
1692 // CHECK: frintm v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1693}
1694
1695float32x4_t test_vrndmq_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001696 //CHECK-LABEL: test_vrndmq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001697 return vrndmq_f32(a);
1698 // CHECK: frintm v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1699}
1700
1701float64x2_t test_vrndmq_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001702 //CHECK-LABEL: test_vrndmq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001703 return vrndmq_f64(a);
1704 // CHECK: frintm v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1705}
1706
1707float32x2_t test_vrndx_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001708 //CHECK-LABEL: test_vrndx_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001709 return vrndx_f32(a);
1710 // CHECK: frintx v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1711}
1712
1713float32x4_t test_vrndxq_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001714 //CHECK-LABEL: test_vrndxq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001715 return vrndxq_f32(a);
1716 // CHECK: frintx v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1717}
1718
1719float64x2_t test_vrndxq_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001720 //CHECK-LABEL: test_vrndxq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001721 return vrndxq_f64(a);
1722 // CHECK: frintx v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1723}
1724
1725float32x2_t test_vrnd_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001726 //CHECK-LABEL: test_vrnd_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001727 return vrnd_f32(a);
1728 // CHECK: frintz v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1729}
1730
1731float32x4_t test_vrndq_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001732 //CHECK-LABEL: test_vrndq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001733 return vrndq_f32(a);
1734 // CHECK: frintz v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1735}
1736
1737float64x2_t test_vrndq_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001738 //CHECK-LABEL: test_vrndq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001739 return vrndq_f64(a);
1740 // CHECK: frintz v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1741}
1742
1743float32x2_t test_vrndi_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001744 //CHECK-LABEL: test_vrndi_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001745 return vrndi_f32(a);
1746 // CHECK: frinti v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1747}
1748
1749float32x4_t test_vrndiq_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001750 //CHECK-LABEL: test_vrndiq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001751 return vrndiq_f32(a);
1752 // CHECK: frinti v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1753}
1754
1755float64x2_t test_vrndiq_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001756 //CHECK-LABEL: test_vrndiq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001757 return vrndiq_f64(a);
1758 // CHECK: frinti v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1759}
1760
1761int32x2_t test_vcvt_s32_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001762 //CHECK-LABEL: test_vcvt_s32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001763 return vcvt_s32_f32(a);
1764 // CHECK: fcvtzs v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1765}
1766
1767int32x4_t test_vcvtq_s32_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001768 //CHECK-LABEL: test_vcvtq_s32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001769 return vcvtq_s32_f32(a);
1770 // CHECK: fcvtzs v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1771}
1772
1773int64x2_t test_vcvtq_s64_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001774 //CHECK-LABEL: test_vcvtq_s64_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001775 return vcvtq_s64_f64(a);
1776 // CHECK: fcvtzs v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1777}
1778
1779uint32x2_t test_vcvt_u32_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001780 //CHECK-LABEL: test_vcvt_u32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001781 return vcvt_u32_f32(a);
1782 // CHECK: fcvtzu v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1783}
1784
1785uint32x4_t test_vcvtq_u32_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001786 //CHECK-LABEL: test_vcvtq_u32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001787 return vcvtq_u32_f32(a);
1788 // CHECK: fcvtzu v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1789}
1790
1791uint64x2_t test_vcvtq_u64_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001792 //CHECK-LABEL: test_vcvtq_u64_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001793 return vcvtq_u64_f64(a);
1794 // CHECK: fcvtzu v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1795}
1796
1797int32x2_t test_vcvtn_s32_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001798 //CHECK-LABEL: test_vcvtn_s32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001799 return vcvtn_s32_f32(a);
1800 // CHECK: fcvtns v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1801}
1802
1803int32x4_t test_vcvtnq_s32_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001804 //CHECK-LABEL: test_vcvtnq_s32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001805 return vcvtnq_s32_f32(a);
1806 // CHECK: fcvtns v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1807}
1808
1809int64x2_t test_vcvtnq_s64_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001810 //CHECK-LABEL: test_vcvtnq_s64_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001811 return vcvtnq_s64_f64(a);
1812 // CHECK: fcvtns v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1813}
1814
1815uint32x2_t test_vcvtn_u32_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001816 //CHECK-LABEL: test_vcvtn_u32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001817 return vcvtn_u32_f32(a);
1818 // CHECK: fcvtnu v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1819}
1820
1821uint32x4_t test_vcvtnq_u32_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001822 //CHECK-LABEL: test_vcvtnq_u32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001823 return vcvtnq_u32_f32(a);
1824 // CHECK: fcvtnu v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1825}
1826
1827uint64x2_t test_vcvtnq_u64_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001828 //CHECK-LABEL: test_vcvtnq_u64_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001829 return vcvtnq_u64_f64(a);
1830 // CHECK: fcvtnu v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1831}
1832
1833int32x2_t test_vcvtp_s32_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001834 //CHECK-LABEL: test_vcvtp_s32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001835 return vcvtp_s32_f32(a);
1836 // CHECK: fcvtps v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1837}
1838
1839int32x4_t test_vcvtpq_s32_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001840 //CHECK-LABEL: test_vcvtpq_s32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001841 return vcvtpq_s32_f32(a);
1842 // CHECK: fcvtps v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1843}
1844
1845int64x2_t test_vcvtpq_s64_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001846 //CHECK-LABEL: test_vcvtpq_s64_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001847 return vcvtpq_s64_f64(a);
1848 // CHECK: fcvtps v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1849}
1850
1851uint32x2_t test_vcvtp_u32_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001852 //CHECK-LABEL: test_vcvtp_u32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001853 return vcvtp_u32_f32(a);
1854 // CHECK: fcvtpu v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1855}
1856
1857uint32x4_t test_vcvtpq_u32_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001858 //CHECK-LABEL: test_vcvtpq_u32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001859 return vcvtpq_u32_f32(a);
1860 // CHECK: fcvtpu v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1861}
1862
1863uint64x2_t test_vcvtpq_u64_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001864 //CHECK-LABEL: test_vcvtpq_u64_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001865 return vcvtpq_u64_f64(a);
1866 // CHECK: fcvtpu v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1867}
1868
1869int32x2_t test_vcvtm_s32_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001870 //CHECK-LABEL: test_vcvtm_s32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001871 return vcvtm_s32_f32(a);
1872 // CHECK: fcvtms v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1873}
1874
1875int32x4_t test_vcvtmq_s32_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001876 //CHECK-LABEL: test_vcvtmq_s32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001877 return vcvtmq_s32_f32(a);
1878 // CHECK: fcvtms v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1879}
1880
1881int64x2_t test_vcvtmq_s64_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001882 //CHECK-LABEL: test_vcvtmq_s64_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001883 return vcvtmq_s64_f64(a);
1884 // CHECK: fcvtms v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1885}
1886
1887uint32x2_t test_vcvtm_u32_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001888 //CHECK-LABEL: test_vcvtm_u32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001889 return vcvtm_u32_f32(a);
1890 // CHECK: fcvtmu v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1891}
1892
1893uint32x4_t test_vcvtmq_u32_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001894 //CHECK-LABEL: test_vcvtmq_u32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001895 return vcvtmq_u32_f32(a);
1896 // CHECK: fcvtmu v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1897}
1898
1899uint64x2_t test_vcvtmq_u64_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001900 //CHECK-LABEL: test_vcvtmq_u64_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001901 return vcvtmq_u64_f64(a);
1902 // CHECK: fcvtmu v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1903}
1904
1905int32x2_t test_vcvta_s32_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001906 //CHECK-LABEL: test_vcvta_s32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001907 return vcvta_s32_f32(a);
1908 // CHECK: fcvtas v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1909}
1910
1911int32x4_t test_vcvtaq_s32_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001912 //CHECK-LABEL: test_vcvtaq_s32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001913 return vcvtaq_s32_f32(a);
1914 // CHECK: fcvtas v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1915}
1916
1917int64x2_t test_vcvtaq_s64_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001918 //CHECK-LABEL: test_vcvtaq_s64_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001919 return vcvtaq_s64_f64(a);
1920 // CHECK: fcvtas v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1921}
1922
1923uint32x2_t test_vcvta_u32_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001924 //CHECK-LABEL: test_vcvta_u32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001925 return vcvta_u32_f32(a);
1926 // CHECK: fcvtau v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1927}
1928
1929uint32x4_t test_vcvtaq_u32_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001930 //CHECK-LABEL: test_vcvtaq_u32_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001931 return vcvtaq_u32_f32(a);
1932 // CHECK: fcvtau v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1933}
1934
1935uint64x2_t test_vcvtaq_u64_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001936 //CHECK-LABEL: test_vcvtaq_u64_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001937 return vcvtaq_u64_f64(a);
1938 // CHECK: fcvtau v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1939}
1940
1941float32x2_t test_vrsqrte_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001942 //CHECK-LABEL: test_vrsqrte_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001943 return vrsqrte_f32(a);
1944 // CHECK: frsqrte v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1945}
1946
1947float32x4_t test_vrsqrteq_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001948 //CHECK-LABEL: test_vrsqrteq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001949 return vrsqrteq_f32(a);
1950 // CHECK: frsqrte v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1951}
1952
1953float64x2_t test_vrsqrteq_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001954 //CHECK-LABEL: test_vrsqrteq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001955 return vrsqrteq_f64(a);
1956 // CHECK: frsqrte v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1957}
1958
1959float32x2_t test_vrecpe_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001960 //CHECK-LABEL: test_vrecpe_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001961 return vrecpe_f32(a);
1962 // CHECK: frecpe v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1963}
1964
1965float32x4_t test_vrecpeq_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001966 //CHECK-LABEL: test_vrecpeq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001967 return vrecpeq_f32(a);
1968 // CHECK: frecpe v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1969}
1970
1971float64x2_t test_vrecpeq_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001972 //CHECK-LABEL: test_vrecpeq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001973 return vrecpeq_f64(a);
1974 // CHECK: frecpe v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1975}
1976
1977uint32x2_t test_vrecpe_u32(uint32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001978 //CHECK-LABEL: test_vrecpe_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001979 return vrecpe_u32(a);
1980 // CHECK: urecpe v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1981}
1982
1983uint32x4_t test_vrecpeq_u32(uint32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001984 //CHECK-LABEL: test_vrecpeq_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001985 return vrecpeq_u32(a);
1986 // CHECK: urecpe v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1987}
1988
1989float32x2_t test_vsqrt_f32(float32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001990 //CHECK-LABEL: test_vsqrt_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001991 return vsqrt_f32(a);
1992 // CHECK: fsqrt v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1993}
1994
1995float32x4_t test_vsqrtq_f32(float32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07001996 //CHECK-LABEL: test_vsqrtq_f32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00001997 return vsqrtq_f32(a);
1998 // CHECK: fsqrt v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1999}
2000
2001float64x2_t test_vsqrtq_f64(float64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07002002 //CHECK-LABEL: test_vsqrtq_f64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00002003 return vsqrtq_f64(a);
2004 // CHECK: fsqrt v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
2005}
2006
2007float32x2_t test_vcvt_f32_s32(int32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07002008 //CHECK-LABEL: test_vcvt_f32_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00002009 return vcvt_f32_s32(a);
2010 //CHECK: scvtf v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
2011}
2012
2013float32x2_t test_vcvt_f32_u32(uint32x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07002014 //CHECK-LABEL: test_vcvt_f32_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00002015 return vcvt_f32_u32(a);
2016 //CHECK: ucvtf v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
2017}
2018
2019float32x4_t test_vcvtq_f32_s32(int32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07002020 //CHECK-LABEL: test_vcvtq_f32_s32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00002021 return vcvtq_f32_s32(a);
2022 //CHECK: scvtf v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
2023}
2024
2025float32x4_t test_vcvtq_f32_u32(uint32x4_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07002026 //CHECK-LABEL: test_vcvtq_f32_u32
Kevin Qin2a2b69b2013-11-14 06:44:42 +00002027 return vcvtq_f32_u32(a);
2028 //CHECK: ucvtf v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
2029}
2030
2031float64x2_t test_vcvtq_f64_s64(int64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07002032 //CHECK-LABEL: test_vcvtq_f64_s64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00002033 return vcvtq_f64_s64(a);
2034 //CHECK: scvtf v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
2035}
2036
2037float64x2_t test_vcvtq_f64_u64(uint64x2_t a) {
Stephen Hines651f13c2014-04-23 16:59:28 -07002038 //CHECK-LABEL: test_vcvtq_f64_u64
Kevin Qin2a2b69b2013-11-14 06:44:42 +00002039 return vcvtq_f64_u64(a);
2040 //CHECK: ucvtf v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
2041}