1c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines// REQUIRES: aarch64-registered-target
26bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cc1 -triple arm64-apple-ios7.0 -target-feature +neon  \
3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN:   -S -O1 -o - -ffreestanding %s | FileCheck %s
4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// We're explicitly using arm_neon.h here: some types probably don't match
6651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// the ACLE definitions, but we want to check current codegen.
7651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#include <arm_neon.h>
8651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
9651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat test_vrsqrtss_f32(float a, float b) {
10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vrsqrtss_f32
11651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vrsqrtss_f32(a, b);
12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: frsqrts {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesdouble test_vrsqrtsd_f64(double a, double b) {
16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vrsqrtsd_f64
17651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vrsqrtsd_f64(a, b);
18651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: frsqrts {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
19651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x1_t test_vrshl_s64(int64x1_t a, int64x1_t b) {
22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vrshl_s64
23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vrshl_s64(a, b);
24651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: srshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
26651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
27651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x1_t test_vrshl_u64(uint64x1_t a, int64x1_t b) {
28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vrshl_u64
29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vrshl_u64(a, b);
30651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: urshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
31651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
32651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
33651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vrshld_s64
34651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vrshld_s64(int64_t a, int64_t b) {
35651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vrshld_s64(a, b);
36651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: srshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
37651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
38651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
39651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vrshld_u64
40651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64_t test_vrshld_u64(uint64_t a, uint64_t b) {
41651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vrshld_u64(a, b);
42651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: urshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
43651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
44651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
45651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqrshlb_s8
46651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8_t test_vqrshlb_s8(int8_t a, int8_t b) {
47651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqrshlb_s8(a, b);
48651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqrshl.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
49651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
50651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
51651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqrshlh_s16
52651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16_t test_vqrshlh_s16(int16_t a, int16_t b) {
53651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqrshlh_s16(a, b);
54651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqrshl.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
55651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
56651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
57651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqrshls_s32
58651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vqrshls_s32(int32_t a, int32_t b) {
59651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqrshls_s32(a, b);
60651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqrshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
61651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
62651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
63651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqrshld_s64
64651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vqrshld_s64(int64_t a, int64_t b) {
65651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqrshld_s64(a, b);
66651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqrshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
67651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
68651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
69651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqrshlb_u8
70651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8_t test_vqrshlb_u8(uint8_t a, uint8_t b) {
71651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqrshlb_u8(a, b);
72651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqrshl.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
73651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
74651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
75651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqrshlh_u16
76651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16_t test_vqrshlh_u16(uint16_t a, uint16_t b) {
77651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqrshlh_u16(a, b);
78651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqrshl.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
79651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
80651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
81651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqrshls_u32
82651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32_t test_vqrshls_u32(uint32_t a, uint32_t b) {
83651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqrshls_u32(a, b);
84651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqrshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
85651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
86651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
87651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqrshld_u64
88651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64_t test_vqrshld_u64(uint64_t a, uint64_t b) {
89651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqrshld_u64(a, b);
90651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqrshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
91651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
92651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
93651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqshlb_s8
94651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8_t test_vqshlb_s8(int8_t a, int8_t b) {
95651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshlb_s8(a, b);
96651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqshl.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
97651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
98651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
99651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqshlh_s16
100651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16_t test_vqshlh_s16(int16_t a, int16_t b) {
101651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshlh_s16(a, b);
102651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqshl.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
103651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
104651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
105651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqshls_s32
106651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vqshls_s32(int32_t a, int32_t b) {
107651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshls_s32(a, b);
108651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
109651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
110651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
111651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqshld_s64
112651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vqshld_s64(int64_t a, int64_t b) {
113651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshld_s64(a, b);
114651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
115651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
116651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
1176bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK: test_vqshld_s64_i
1186bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesint64_t test_vqshld_s64_i(int64_t a) {
1196bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  return vqshld_s64(a, 36);
1206bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK: sqshl {{d[0-9]+}}, {{d[0-9]+}}, #36
1216bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}
1226bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
123651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqshlb_u8
124651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8_t test_vqshlb_u8(uint8_t a, uint8_t b) {
125651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshlb_u8(a, b);
126651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqshl.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
127651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
128651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
129651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqshlh_u16
130651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16_t test_vqshlh_u16(uint16_t a, uint16_t b) {
131651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshlh_u16(a, b);
132651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqshl.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
133651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
134651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
135651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqshls_u32
136651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32_t test_vqshls_u32(uint32_t a, uint32_t b) {
137651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshls_u32(a, b);
138651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
139651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
140651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
141651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqshld_u64
142651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64_t test_vqshld_u64(uint64_t a, uint64_t b) {
143651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshld_u64(a, b);
144651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
145651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
146651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
1476bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK: test_vqshld_u64_i
1486bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesuint64_t test_vqshld_u64_i(uint64_t a) {
1496bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  return vqshld_u64(a, 36);
1506bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// CHECK: uqshl {{d[0-9]+}}, {{d[0-9]+}}, #36
1516bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}
1526bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
153651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vshld_u64
154651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64_t test_vshld_u64(uint64_t a, uint64_t b) {
155651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vshld_u64(a, b);
156651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: ushl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
157651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
158651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
159651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vshld_s64
160651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vshld_s64(int64_t a, int64_t b) {
161651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vshld_s64(a, b);
162651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
163651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
164651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
165651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqdmullh_s16
166651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vqdmullh_s16(int16_t a, int16_t b) {
167651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqdmullh_s16(a, b);
168651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqdmull.4s {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
169651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
170651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
171651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqdmulls_s32
172651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vqdmulls_s32(int32_t a, int32_t b) {
173651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqdmulls_s32(a, b);
174651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqdmull {{d[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
175651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
176651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
177651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqaddb_s8
178651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8_t test_vqaddb_s8(int8_t a, int8_t b) {
179651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqaddb_s8(a, b);
180651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqadd.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
181651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
182651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
183651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqaddh_s16
184651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16_t test_vqaddh_s16(int16_t a, int16_t b) {
185651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqaddh_s16(a, b);
186651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqadd.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
187651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
188651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
189651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqadds_s32
190651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vqadds_s32(int32_t a, int32_t b) {
191651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqadds_s32(a, b);
192651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqadd {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
193651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
194651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
195651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqaddd_s64
196651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vqaddd_s64(int64_t a, int64_t b) {
197651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqaddd_s64(a, b);
198651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqadd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
199651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
200651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
201651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqaddb_u8
202651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8_t test_vqaddb_u8(uint8_t a, uint8_t b) {
203651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqaddb_u8(a, b);
204651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqadd.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
205651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
206651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
207651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqaddh_u16
208651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16_t test_vqaddh_u16(uint16_t a, uint16_t b) {
209651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqaddh_u16(a, b);
210651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqadd.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
211651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
212651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
213651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqadds_u32
214651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32_t test_vqadds_u32(uint32_t a, uint32_t b) {
215651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqadds_u32(a, b);
216651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqadd {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
217651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
218651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
219651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqaddd_u64
220651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64_t test_vqaddd_u64(uint64_t a, uint64_t b) {
221651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqaddd_u64(a, b);
222651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqadd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
223651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
224651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
225651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqsubb_s8
226651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8_t test_vqsubb_s8(int8_t a, int8_t b) {
227651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqsubb_s8(a, b);
228651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqsub.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
229651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
230651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
231651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqsubh_s16
232651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16_t test_vqsubh_s16(int16_t a, int16_t b) {
233651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqsubh_s16(a, b);
234651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqsub.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
235651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
236651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
237651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqsubs_s32
238651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vqsubs_s32(int32_t a, int32_t b) {
239651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqsubs_s32(a, b);
240651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqsub {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
241651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
242651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
243651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqsubd_s64
244651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vqsubd_s64(int64_t a, int64_t b) {
245651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqsubd_s64(a, b);
246651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqsub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
247651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
248651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
249651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqsubb_u8
250651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8_t test_vqsubb_u8(uint8_t a, uint8_t b) {
251651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqsubb_u8(a, b);
252651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqsub.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
253651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
254651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
255651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqsubh_u16
256651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16_t test_vqsubh_u16(uint16_t a, uint16_t b) {
257651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqsubh_u16(a, b);
258651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqsub.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
259651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
260651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
261651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqsubs_u32
262651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32_t test_vqsubs_u32(uint32_t a, uint32_t b) {
263651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqsubs_u32(a, b);
264651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqsub {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
265651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
266651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
267651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqsubd_u64
268651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64_t test_vqsubd_u64(uint64_t a, uint64_t b) {
269651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqsubd_u64(a, b);
270651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqsub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
271651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
272651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
273651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqmovnh_s16
274651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8_t test_vqmovnh_s16(int16_t a) {
275651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqmovnh_s16(a);
276651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqxtn.8b {{v[0-9]+}}, {{v[0-9]+}}
277651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
278651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
279651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqmovnh_u16
280651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8_t test_vqmovnh_u16(uint16_t a) {
281651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqmovnh_u16(a);
282651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqxtn.8b {{v[0-9]+}}, {{v[0-9]+}}
283651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
284651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
285651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqmovns_s32
286651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16_t test_vqmovns_s32(int32_t a) {
287651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqmovns_s32(a);
288651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqxtn.4h {{v[0-9]+}}, {{v[0-9]+}}
289651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
290651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
291651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqmovns_u32
292651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16_t test_vqmovns_u32(uint32_t a) {
293651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqmovns_u32(a);
294651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqxtn.4h {{v[0-9]+}}, {{v[0-9]+}}
295651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
296651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
297651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqmovnd_s64
298651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vqmovnd_s64(int64_t a) {
299651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqmovnd_s64(a);
300651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqxtn {{s[0-9]+}}, {{d[0-9]+}}
301651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
302651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
303651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqmovnd_u64
304651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32_t test_vqmovnd_u64(uint64_t a) {
305651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqmovnd_u64(a);
306651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: uqxtn {{s[0-9]+}}, {{d[0-9]+}}
307651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
308651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
309651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqmovunh_s16
310651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8_t test_vqmovunh_s16(int16_t a) {
311651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqmovunh_s16(a);
312651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqxtun.8b {{v[0-9]+}}, {{v[0-9]+}}
313651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
314651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
315651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqmovuns_s32
316651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16_t test_vqmovuns_s32(int32_t a) {
317651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqmovuns_s32(a);
318651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqxtun.4h {{v[0-9]+}}, {{v[0-9]+}}
319651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
320651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
321651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqmovund_s64
322651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vqmovund_s64(int64_t a) {
323651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqmovund_s64(a);
324651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqxtun {{s[0-9]+}}, {{d[0-9]+}}
325651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
326651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
327651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqabsb_s8
328651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8_t test_vqabsb_s8(int8_t a) {
329651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqabsb_s8(a);
330651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqabs.8b {{v[0-9]+}}, {{v[0-9]+}}
331651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
332651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
333651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqabsh_s16
334651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16_t test_vqabsh_s16(int16_t a) {
335651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqabsh_s16(a);
336651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqabs.4h {{v[0-9]+}}, {{v[0-9]+}}
337651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
338651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
339651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqabss_s32
340651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vqabss_s32(int32_t a) {
341651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqabss_s32(a);
342651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqabs {{s[0-9]+}}, {{s[0-9]+}}
343651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
344651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
345651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqabsd_s64
346651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vqabsd_s64(int64_t a) {
347651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqabsd_s64(a);
348651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqabs {{d[0-9]+}}, {{d[0-9]+}}
349651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
350651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
351651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqnegb_s8
352651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8_t test_vqnegb_s8(int8_t a) {
353651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqnegb_s8(a);
354651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqneg.8b {{v[0-9]+}}, {{v[0-9]+}}
355651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
356651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
357651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqnegh_s16
358651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16_t test_vqnegh_s16(int16_t a) {
359651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqnegh_s16(a);
360651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqneg.4h {{v[0-9]+}}, {{v[0-9]+}}
361651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
362651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
363651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqnegs_s32
364651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vqnegs_s32(int32_t a) {
365651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqnegs_s32(a);
366651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqneg {{s[0-9]+}}, {{s[0-9]+}}
367651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
368651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
369651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vqnegd_s64
370651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vqnegd_s64(int64_t a) {
371651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqnegd_s64(a);
372651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: sqneg {{d[0-9]+}}, {{d[0-9]+}}
373651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
374651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
375651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvts_n_f32_s32
376651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat32_t test_vcvts_n_f32_s32(int32_t a) {
377651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvts_n_f32_s32(a, 3);
378651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: scvtf {{s[0-9]+}}, {{s[0-9]+}}, #3
379651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
380651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
381651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvts_n_f32_u32
382651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat32_t test_vcvts_n_f32_u32(uint32_t a) {
383651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvts_n_f32_u32(a, 3);
384651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: ucvtf {{s[0-9]+}}, {{s[0-9]+}}, #3
385651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
386651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
387651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtd_n_f64_s64
388651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat64_t test_vcvtd_n_f64_s64(int64_t a) {
389651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtd_n_f64_s64(a, 3);
390651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: scvtf {{d[0-9]+}}, {{d[0-9]+}}, #3
391651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
392651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
393651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtd_n_f64_u64
394651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat64_t test_vcvtd_n_f64_u64(uint64_t a) {
395651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtd_n_f64_u64(a, 3);
396651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: ucvtf {{d[0-9]+}}, {{d[0-9]+}}, #3
397651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
398651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
399651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvts_n_s32_f32
400651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vcvts_n_s32_f32(float32_t a) {
401651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvts_n_s32_f32(a, 3);
402651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtzs {{s[0-9]+}}, {{s[0-9]+}}, #3
403651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
404651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
405651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvts_n_u32_f32
406651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32_t test_vcvts_n_u32_f32(float32_t a) {
407651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvts_n_u32_f32(a, 3);
408651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtzu {{s[0-9]+}}, {{s[0-9]+}}, #3
409651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
410651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
411651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtd_n_s64_f64
412651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vcvtd_n_s64_f64(float64_t a) {
413651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtd_n_s64_f64(a, 3);
414651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtzs {{d[0-9]+}}, {{d[0-9]+}}, #3
415651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
416651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
417651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtd_n_u64_f64
418651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64_t test_vcvtd_n_u64_f64(float64_t a) {
419651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtd_n_u64_f64(a, 3);
420651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtzu {{d[0-9]+}}, {{d[0-9]+}}, #3
421651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
422651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
423651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtas_s32_f32
424651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vcvtas_s32_f32(float32_t a) {
425651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtas_s32_f32(a);
426651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtas {{w[0-9]+}}, {{s[0-9]+}}
427651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
428651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
429651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtas_u32_f32
430651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32_t test_vcvtas_u32_f32(float32_t a) {
431651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtas_u32_f32(a);
432651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtau {{w[0-9]+}}, {{s[0-9]+}}
433651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
434651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
435651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtad_s64_f64
436651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vcvtad_s64_f64(float64_t a) {
437651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtad_s64_f64(a);
438651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtas {{x[0-9]+}}, {{d[0-9]+}}
439651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
440651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
441651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtad_u64_f64
442651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64_t test_vcvtad_u64_f64(float64_t a) {
443651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtad_u64_f64(a);
444651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtau {{x[0-9]+}}, {{d[0-9]+}}
445651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
446651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
447651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtms_s32_f32
448651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vcvtms_s32_f32(float32_t a) {
449651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtms_s32_f32(a);
450651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtms {{w[0-9]+}}, {{s[0-9]+}}
451651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
452651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
453651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtms_u32_f32
454651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32_t test_vcvtms_u32_f32(float32_t a) {
455651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtms_u32_f32(a);
456651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtmu {{w[0-9]+}}, {{s[0-9]+}}
457651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
458651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
459651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtmd_s64_f64
460651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vcvtmd_s64_f64(float64_t a) {
461651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtmd_s64_f64(a);
462651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtms {{x[0-9]+}}, {{d[0-9]+}}
463651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
464651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
465651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtmd_u64_f64
466651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64_t test_vcvtmd_u64_f64(float64_t a) {
467651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtmd_u64_f64(a);
468651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtmu {{x[0-9]+}}, {{d[0-9]+}}
469651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
470651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
471651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtns_s32_f32
472651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vcvtns_s32_f32(float32_t a) {
473651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtns_s32_f32(a);
474651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtns {{w[0-9]+}}, {{s[0-9]+}}
475651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
476651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
477651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtns_u32_f32
478651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32_t test_vcvtns_u32_f32(float32_t a) {
479651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtns_u32_f32(a);
480651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtnu {{w[0-9]+}}, {{s[0-9]+}}
481651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
482651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
483651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtnd_s64_f64
484651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vcvtnd_s64_f64(float64_t a) {
485651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtnd_s64_f64(a);
486651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtns {{x[0-9]+}}, {{d[0-9]+}}
487651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
488651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
489651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtnd_u64_f64
490651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64_t test_vcvtnd_u64_f64(float64_t a) {
491651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtnd_u64_f64(a);
492651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtnu {{x[0-9]+}}, {{d[0-9]+}}
493651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
494651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
495651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtps_s32_f32
496651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vcvtps_s32_f32(float32_t a) {
497651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtps_s32_f32(a);
498651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtps {{w[0-9]+}}, {{s[0-9]+}}
499651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
500651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
501651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtps_u32_f32
502651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32_t test_vcvtps_u32_f32(float32_t a) {
503651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtps_u32_f32(a);
504651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtpu {{w[0-9]+}}, {{s[0-9]+}}
505651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
506651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
507651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtpd_s64_f64
508651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vcvtpd_s64_f64(float64_t a) {
509651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtpd_s64_f64(a);
510651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtps {{x[0-9]+}}, {{d[0-9]+}}
511651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
512651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
513651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtpd_u64_f64
514651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64_t test_vcvtpd_u64_f64(float64_t a) {
515651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtpd_u64_f64(a);
516651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtpu {{x[0-9]+}}, {{d[0-9]+}}
517651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
518651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
519651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vcvtxd_f32_f64
520651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat32_t test_vcvtxd_f32_f64(float64_t a) {
521651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcvtxd_f32_f64(a);
522651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: fcvtxn {{s[0-9]+}}, {{d[0-9]+}}
523651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
524651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
525651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vabds_f32
526651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat32_t test_vabds_f32(float32_t a, float32_t b) {
527651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vabds_f32(a, b);
528651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  // CHECK: fabd {{s[0-9]+}}, {{s[0-9]+}}
529651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
530651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
531651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vabdd_f64
532651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat64_t test_vabdd_f64(float64_t a, float64_t b) {
533651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vabdd_f64(a, b);
534651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  // CHECK: fabd {{d[0-9]+}}, {{d[0-9]+}}
535651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
536651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
537651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vmulxs_f32
538651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat32_t test_vmulxs_f32(float32_t a, float32_t b) {
539651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vmulxs_f32(a, b);
540651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  // CHECK: fmulx {{s[0-9]+}}, {{s[0-9]+}}
541651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
542651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
543651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: test_vmulxd_f64
544651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat64_t test_vmulxd_f64(float64_t a, float64_t b) {
545651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vmulxd_f64(a, b);
546651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  // CHECK: fmulx {{d[0-9]+}}, {{d[0-9]+}}
547651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
548