1 // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
2 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2p1 -S -O1 -Werror -Wall -emit-llvm -o - %s | FileCheck %s
3 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2p1 -S -O1 -Werror -Wall -emit-llvm -o - -x c++ %s | FileCheck %s -check-prefix=CPP-CHECK
4 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2p1 -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
6 // REQUIRES: aarch64-registered-target
13 // CHECK-LABEL: @test_svwhilege_c8_vl2(
15 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
16 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
18 // CPP-CHECK-LABEL: @_Z21test_svwhilege_c8_vl2ll(
19 // CPP-CHECK-NEXT: entry:
20 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
21 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
23 svcount_t
test_svwhilege_c8_vl2(int64_t op1
, int64_t op2
)
25 return svwhilege_c8(op1
, op2
, 2);
28 // CHECK-LABEL: @test_svwhilege_c8_vl4(
30 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
31 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
33 // CPP-CHECK-LABEL: @_Z21test_svwhilege_c8_vl4ll(
34 // CPP-CHECK-NEXT: entry:
35 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
36 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
38 svcount_t
test_svwhilege_c8_vl4(int64_t op1
, int64_t op2
)
40 return svwhilege_c8(op1
, op2
, 4);
43 // CHECK-LABEL: @test_svwhilege_c16_vl2(
45 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
46 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
48 // CPP-CHECK-LABEL: @_Z22test_svwhilege_c16_vl2ll(
49 // CPP-CHECK-NEXT: entry:
50 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
51 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
53 svcount_t
test_svwhilege_c16_vl2(int64_t op1
, int64_t op2
)
55 return svwhilege_c16(op1
, op2
, 2);
58 // CHECK-LABEL: @test_svwhilege_c16_vl4(
60 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
61 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
63 // CPP-CHECK-LABEL: @_Z22test_svwhilege_c16_vl4ll(
64 // CPP-CHECK-NEXT: entry:
65 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
66 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
68 svcount_t
test_svwhilege_c16_vl4(int64_t op1
, int64_t op2
)
70 return svwhilege_c16(op1
, op2
, 4);
73 // CHECK-LABEL: @test_svwhilege_c32_vl2(
75 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
76 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
78 // CPP-CHECK-LABEL: @_Z22test_svwhilege_c32_vl2ll(
79 // CPP-CHECK-NEXT: entry:
80 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
81 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
83 svcount_t
test_svwhilege_c32_vl2(int64_t op1
, int64_t op2
)
85 return svwhilege_c32(op1
, op2
, 2);
88 // CHECK-LABEL: @test_svwhilege_c32_vl4(
90 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
91 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
93 // CPP-CHECK-LABEL: @_Z22test_svwhilege_c32_vl4ll(
94 // CPP-CHECK-NEXT: entry:
95 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
96 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
98 svcount_t
test_svwhilege_c32_vl4(int64_t op1
, int64_t op2
)
100 return svwhilege_c32(op1
, op2
, 4);
103 // CHECK-LABEL: @test_svwhilege_c64_vl2(
104 // CHECK-NEXT: entry:
105 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
106 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
108 // CPP-CHECK-LABEL: @_Z22test_svwhilege_c64_vl2ll(
109 // CPP-CHECK-NEXT: entry:
110 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
111 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
113 svcount_t
test_svwhilege_c64_vl2(int64_t op1
, int64_t op2
)
115 return svwhilege_c64(op1
, op2
, 2);
118 // CHECK-LABEL: @test_svwhilege_c64_vl4(
119 // CHECK-NEXT: entry:
120 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
121 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
123 // CPP-CHECK-LABEL: @_Z22test_svwhilege_c64_vl4ll(
124 // CPP-CHECK-NEXT: entry:
125 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
126 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
128 svcount_t
test_svwhilege_c64_vl4(int64_t op1
, int64_t op2
)
130 return svwhilege_c64(op1
, op2
, 4);
136 // CHECK-LABEL: @test_svwhilegt_c8_vl2(
137 // CHECK-NEXT: entry:
138 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
139 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
141 // CPP-CHECK-LABEL: @_Z21test_svwhilegt_c8_vl2ll(
142 // CPP-CHECK-NEXT: entry:
143 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
144 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
146 svcount_t
test_svwhilegt_c8_vl2(int64_t op1
, int64_t op2
)
148 return svwhilegt_c8(op1
, op2
, 2);
151 // CHECK-LABEL: @test_svwhilegt_c8_vl4(
152 // CHECK-NEXT: entry:
153 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
154 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
156 // CPP-CHECK-LABEL: @_Z21test_svwhilegt_c8_vl4ll(
157 // CPP-CHECK-NEXT: entry:
158 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
159 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
161 svcount_t
test_svwhilegt_c8_vl4(int64_t op1
, int64_t op2
)
163 return svwhilegt_c8(op1
, op2
, 4);
166 // CHECK-LABEL: @test_svwhilegt_c16_vl2(
167 // CHECK-NEXT: entry:
168 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
169 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
171 // CPP-CHECK-LABEL: @_Z22test_svwhilegt_c16_vl2ll(
172 // CPP-CHECK-NEXT: entry:
173 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
174 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
176 svcount_t
test_svwhilegt_c16_vl2(int64_t op1
, int64_t op2
)
178 return svwhilegt_c16(op1
, op2
, 2);
181 // CHECK-LABEL: @test_svwhilegt_c16_vl4(
182 // CHECK-NEXT: entry:
183 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
184 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
186 // CPP-CHECK-LABEL: @_Z22test_svwhilegt_c16_vl4ll(
187 // CPP-CHECK-NEXT: entry:
188 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
189 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
191 svcount_t
test_svwhilegt_c16_vl4(int64_t op1
, int64_t op2
)
193 return svwhilegt_c16(op1
, op2
, 4);
196 // CHECK-LABEL: @test_svwhilegt_c32_vl2(
197 // CHECK-NEXT: entry:
198 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
199 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
201 // CPP-CHECK-LABEL: @_Z22test_svwhilegt_c32_vl2ll(
202 // CPP-CHECK-NEXT: entry:
203 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
204 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
206 svcount_t
test_svwhilegt_c32_vl2(int64_t op1
, int64_t op2
)
208 return svwhilegt_c32(op1
, op2
, 2);
211 // CHECK-LABEL: @test_svwhilegt_c32_vl4(
212 // CHECK-NEXT: entry:
213 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
214 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
216 // CPP-CHECK-LABEL: @_Z22test_svwhilegt_c32_vl4ll(
217 // CPP-CHECK-NEXT: entry:
218 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
219 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
221 svcount_t
test_svwhilegt_c32_vl4(int64_t op1
, int64_t op2
)
223 return svwhilegt_c32(op1
, op2
, 4);
226 // CHECK-LABEL: @test_svwhilegt_c64_vl2(
227 // CHECK-NEXT: entry:
228 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
229 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
231 // CPP-CHECK-LABEL: @_Z22test_svwhilegt_c64_vl2ll(
232 // CPP-CHECK-NEXT: entry:
233 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
234 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
236 svcount_t
test_svwhilegt_c64_vl2(int64_t op1
, int64_t op2
)
238 return svwhilegt_c64(op1
, op2
, 2);
241 // CHECK-LABEL: @test_svwhilegt_c64_vl4(
242 // CHECK-NEXT: entry:
243 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
244 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
246 // CPP-CHECK-LABEL: @_Z22test_svwhilegt_c64_vl4ll(
247 // CPP-CHECK-NEXT: entry:
248 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
249 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
251 svcount_t
test_svwhilegt_c64_vl4(int64_t op1
, int64_t op2
)
253 return svwhilegt_c64(op1
, op2
, 4);
259 // CHECK-LABEL: @test_svwhilehi_c8_vl2(
260 // CHECK-NEXT: entry:
261 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
262 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
264 // CPP-CHECK-LABEL: @_Z21test_svwhilehi_c8_vl2mm(
265 // CPP-CHECK-NEXT: entry:
266 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
267 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
269 svcount_t
test_svwhilehi_c8_vl2(uint64_t op1
, uint64_t op2
)
271 return svwhilehi_c8(op1
, op2
, 2);
274 // CHECK-LABEL: @test_svwhilehi_c8_vl4(
275 // CHECK-NEXT: entry:
276 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
277 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
279 // CPP-CHECK-LABEL: @_Z21test_svwhilehi_c8_vl4mm(
280 // CPP-CHECK-NEXT: entry:
281 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
282 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
284 svcount_t
test_svwhilehi_c8_vl4(uint64_t op1
, uint64_t op2
)
286 return svwhilehi_c8(op1
, op2
, 4);
289 // CHECK-LABEL: @test_svwhilehi_c16_vl2(
290 // CHECK-NEXT: entry:
291 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
292 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
294 // CPP-CHECK-LABEL: @_Z22test_svwhilehi_c16_vl2mm(
295 // CPP-CHECK-NEXT: entry:
296 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
297 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
299 svcount_t
test_svwhilehi_c16_vl2(uint64_t op1
, uint64_t op2
)
301 return svwhilehi_c16(op1
, op2
, 2);
304 // CHECK-LABEL: @test_svwhilehi_c16_vl4(
305 // CHECK-NEXT: entry:
306 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
307 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
309 // CPP-CHECK-LABEL: @_Z22test_svwhilehi_c16_vl4mm(
310 // CPP-CHECK-NEXT: entry:
311 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
312 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
314 svcount_t
test_svwhilehi_c16_vl4(uint64_t op1
, uint64_t op2
)
316 return svwhilehi_c16(op1
, op2
, 4);
319 // CHECK-LABEL: @test_svwhilehi_c32_vl2(
320 // CHECK-NEXT: entry:
321 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
322 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
324 // CPP-CHECK-LABEL: @_Z22test_svwhilehi_c32_vl2mm(
325 // CPP-CHECK-NEXT: entry:
326 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
327 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
329 svcount_t
test_svwhilehi_c32_vl2(uint64_t op1
, uint64_t op2
)
331 return svwhilehi_c32(op1
, op2
, 2);
334 // CHECK-LABEL: @test_svwhilehi_c32_vl4(
335 // CHECK-NEXT: entry:
336 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
337 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
339 // CPP-CHECK-LABEL: @_Z22test_svwhilehi_c32_vl4mm(
340 // CPP-CHECK-NEXT: entry:
341 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
342 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
344 svcount_t
test_svwhilehi_c32_vl4(uint64_t op1
, uint64_t op2
)
346 return svwhilehi_c32(op1
, op2
, 4);
349 // CHECK-LABEL: @test_svwhilehi_c64_vl2(
350 // CHECK-NEXT: entry:
351 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
352 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
354 // CPP-CHECK-LABEL: @_Z22test_svwhilehi_c64_vl2mm(
355 // CPP-CHECK-NEXT: entry:
356 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
357 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
359 svcount_t
test_svwhilehi_c64_vl2(uint64_t op1
, uint64_t op2
)
361 return svwhilehi_c64(op1
, op2
, 2);
364 // CHECK-LABEL: @test_svwhilehi_c64_vl4(
365 // CHECK-NEXT: entry:
366 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
367 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
369 // CPP-CHECK-LABEL: @_Z22test_svwhilehi_c64_vl4mm(
370 // CPP-CHECK-NEXT: entry:
371 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
372 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
374 svcount_t
test_svwhilehi_c64_vl4(uint64_t op1
, uint64_t op2
)
376 return svwhilehi_c64(op1
, op2
, 4);
382 // CHECK-LABEL: @test_svwhilehs_c8_vl2(
383 // CHECK-NEXT: entry:
384 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
385 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
387 // CPP-CHECK-LABEL: @_Z21test_svwhilehs_c8_vl2mm(
388 // CPP-CHECK-NEXT: entry:
389 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
390 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
392 svcount_t
test_svwhilehs_c8_vl2(uint64_t op1
, uint64_t op2
)
394 return svwhilehs_c8(op1
, op2
, 2);
397 // CHECK-LABEL: @test_svwhilehs_c8_vl4(
398 // CHECK-NEXT: entry:
399 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
400 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
402 // CPP-CHECK-LABEL: @_Z21test_svwhilehs_c8_vl4mm(
403 // CPP-CHECK-NEXT: entry:
404 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
405 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
407 svcount_t
test_svwhilehs_c8_vl4(uint64_t op1
, uint64_t op2
)
409 return svwhilehs_c8(op1
, op2
, 4);
412 // CHECK-LABEL: @test_svwhilehs_c16_vl2(
413 // CHECK-NEXT: entry:
414 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
415 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
417 // CPP-CHECK-LABEL: @_Z22test_svwhilehs_c16_vl2mm(
418 // CPP-CHECK-NEXT: entry:
419 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
420 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
422 svcount_t
test_svwhilehs_c16_vl2(uint64_t op1
, uint64_t op2
)
424 return svwhilehs_c16(op1
, op2
, 2);
427 // CHECK-LABEL: @test_svwhilehs_c16_vl4(
428 // CHECK-NEXT: entry:
429 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
430 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
432 // CPP-CHECK-LABEL: @_Z22test_svwhilehs_c16_vl4mm(
433 // CPP-CHECK-NEXT: entry:
434 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
435 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
437 svcount_t
test_svwhilehs_c16_vl4(uint64_t op1
, uint64_t op2
)
439 return svwhilehs_c16(op1
, op2
, 4);
442 // CHECK-LABEL: @test_svwhilehs_c32_vl2(
443 // CHECK-NEXT: entry:
444 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
445 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
447 // CPP-CHECK-LABEL: @_Z22test_svwhilehs_c32_vl2mm(
448 // CPP-CHECK-NEXT: entry:
449 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
450 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
452 svcount_t
test_svwhilehs_c32_vl2(uint64_t op1
, uint64_t op2
)
454 return svwhilehs_c32(op1
, op2
, 2);
457 // CHECK-LABEL: @test_svwhilehs_c32_vl4(
458 // CHECK-NEXT: entry:
459 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
460 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
462 // CPP-CHECK-LABEL: @_Z22test_svwhilehs_c32_vl4mm(
463 // CPP-CHECK-NEXT: entry:
464 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
465 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
467 svcount_t
test_svwhilehs_c32_vl4(uint64_t op1
, uint64_t op2
)
469 return svwhilehs_c32(op1
, op2
, 4);
472 // CHECK-LABEL: @test_svwhilehs_c64_vl2(
473 // CHECK-NEXT: entry:
474 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
475 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
477 // CPP-CHECK-LABEL: @_Z22test_svwhilehs_c64_vl2mm(
478 // CPP-CHECK-NEXT: entry:
479 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
480 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
482 svcount_t
test_svwhilehs_c64_vl2(uint64_t op1
, uint64_t op2
)
484 return svwhilehs_c64(op1
, op2
, 2);
487 // CHECK-LABEL: @test_svwhilehs_c64_vl4(
488 // CHECK-NEXT: entry:
489 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
490 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
492 // CPP-CHECK-LABEL: @_Z22test_svwhilehs_c64_vl4mm(
493 // CPP-CHECK-NEXT: entry:
494 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
495 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
497 svcount_t
test_svwhilehs_c64_vl4(uint64_t op1
, uint64_t op2
)
499 return svwhilehs_c64(op1
, op2
, 4);
505 // CHECK-LABEL: @test_svwhilele_c8_vl2(
506 // CHECK-NEXT: entry:
507 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
508 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
510 // CPP-CHECK-LABEL: @_Z21test_svwhilele_c8_vl2ll(
511 // CPP-CHECK-NEXT: entry:
512 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
513 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
515 svcount_t
test_svwhilele_c8_vl2(int64_t op1
, int64_t op2
)
517 return svwhilele_c8(op1
, op2
, 2);
520 // CHECK-LABEL: @test_svwhilele_c8_vl4(
521 // CHECK-NEXT: entry:
522 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
523 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
525 // CPP-CHECK-LABEL: @_Z21test_svwhilele_c8_vl4ll(
526 // CPP-CHECK-NEXT: entry:
527 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
528 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
530 svcount_t
test_svwhilele_c8_vl4(int64_t op1
, int64_t op2
)
532 return svwhilele_c8(op1
, op2
, 4);
535 // CHECK-LABEL: @test_svwhilele_c16_vl2(
536 // CHECK-NEXT: entry:
537 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
538 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
540 // CPP-CHECK-LABEL: @_Z22test_svwhilele_c16_vl2ll(
541 // CPP-CHECK-NEXT: entry:
542 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
543 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
545 svcount_t
test_svwhilele_c16_vl2(int64_t op1
, int64_t op2
)
547 return svwhilele_c16(op1
, op2
, 2);
550 // CHECK-LABEL: @test_svwhilele_c16_vl4(
551 // CHECK-NEXT: entry:
552 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
553 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
555 // CPP-CHECK-LABEL: @_Z22test_svwhilele_c16_vl4ll(
556 // CPP-CHECK-NEXT: entry:
557 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
558 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
560 svcount_t
test_svwhilele_c16_vl4(int64_t op1
, int64_t op2
)
562 return svwhilele_c16(op1
, op2
, 4);
565 // CHECK-LABEL: @test_svwhilele_c32_vl2(
566 // CHECK-NEXT: entry:
567 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
568 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
570 // CPP-CHECK-LABEL: @_Z22test_svwhilele_c32_vl2ll(
571 // CPP-CHECK-NEXT: entry:
572 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
573 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
575 svcount_t
test_svwhilele_c32_vl2(int64_t op1
, int64_t op2
)
577 return svwhilele_c32(op1
, op2
, 2);
580 // CHECK-LABEL: @test_svwhilele_c32_vl4(
581 // CHECK-NEXT: entry:
582 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
583 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
585 // CPP-CHECK-LABEL: @_Z22test_svwhilele_c32_vl4ll(
586 // CPP-CHECK-NEXT: entry:
587 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
588 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
590 svcount_t
test_svwhilele_c32_vl4(int64_t op1
, int64_t op2
)
592 return svwhilele_c32(op1
, op2
, 4);
595 // CHECK-LABEL: @test_svwhilele_c64_vl2(
596 // CHECK-NEXT: entry:
597 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
598 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
600 // CPP-CHECK-LABEL: @_Z22test_svwhilele_c64_vl2ll(
601 // CPP-CHECK-NEXT: entry:
602 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
603 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
605 svcount_t
test_svwhilele_c64_vl2(int64_t op1
, int64_t op2
)
607 return svwhilele_c64(op1
, op2
, 2);
610 // CHECK-LABEL: @test_svwhilele_c64_vl4(
611 // CHECK-NEXT: entry:
612 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
613 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
615 // CPP-CHECK-LABEL: @_Z22test_svwhilele_c64_vl4ll(
616 // CPP-CHECK-NEXT: entry:
617 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
618 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
620 svcount_t
test_svwhilele_c64_vl4(int64_t op1
, int64_t op2
)
622 return svwhilele_c64(op1
, op2
, 4);
628 // CHECK-LABEL: @test_svwhilelo_c8_vl2(
629 // CHECK-NEXT: entry:
630 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
631 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
633 // CPP-CHECK-LABEL: @_Z21test_svwhilelo_c8_vl2mm(
634 // CPP-CHECK-NEXT: entry:
635 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
636 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
638 svcount_t
test_svwhilelo_c8_vl2(uint64_t op1
, uint64_t op2
)
640 return svwhilelo_c8(op1
, op2
, 2);
643 // CHECK-LABEL: @test_svwhilelo_c8_vl4(
644 // CHECK-NEXT: entry:
645 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
646 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
648 // CPP-CHECK-LABEL: @_Z21test_svwhilelo_c8_vl4mm(
649 // CPP-CHECK-NEXT: entry:
650 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
651 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
653 svcount_t
test_svwhilelo_c8_vl4(uint64_t op1
, uint64_t op2
)
655 return svwhilelo_c8(op1
, op2
, 4);
658 // CHECK-LABEL: @test_svwhilelo_c16_vl2(
659 // CHECK-NEXT: entry:
660 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
661 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
663 // CPP-CHECK-LABEL: @_Z22test_svwhilelo_c16_vl2mm(
664 // CPP-CHECK-NEXT: entry:
665 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
666 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
668 svcount_t
test_svwhilelo_c16_vl2(uint64_t op1
, uint64_t op2
)
670 return svwhilelo_c16(op1
, op2
, 2);
673 // CHECK-LABEL: @test_svwhilelo_c16_vl4(
674 // CHECK-NEXT: entry:
675 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
676 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
678 // CPP-CHECK-LABEL: @_Z22test_svwhilelo_c16_vl4mm(
679 // CPP-CHECK-NEXT: entry:
680 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
681 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
683 svcount_t
test_svwhilelo_c16_vl4(uint64_t op1
, uint64_t op2
)
685 return svwhilelo_c16(op1
, op2
, 4);
688 // CHECK-LABEL: @test_svwhilelo_c32_vl2(
689 // CHECK-NEXT: entry:
690 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
691 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
693 // CPP-CHECK-LABEL: @_Z22test_svwhilelo_c32_vl2mm(
694 // CPP-CHECK-NEXT: entry:
695 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
696 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
698 svcount_t
test_svwhilelo_c32_vl2(uint64_t op1
, uint64_t op2
)
700 return svwhilelo_c32(op1
, op2
, 2);
703 // CHECK-LABEL: @test_svwhilelo_c32_vl4(
704 // CHECK-NEXT: entry:
705 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
706 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
708 // CPP-CHECK-LABEL: @_Z22test_svwhilelo_c32_vl4mm(
709 // CPP-CHECK-NEXT: entry:
710 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
711 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
713 svcount_t
test_svwhilelo_c32_vl4(uint64_t op1
, uint64_t op2
)
715 return svwhilelo_c32(op1
, op2
, 4);
718 // CHECK-LABEL: @test_svwhilelo_c64_vl2(
719 // CHECK-NEXT: entry:
720 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
721 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
723 // CPP-CHECK-LABEL: @_Z22test_svwhilelo_c64_vl2mm(
724 // CPP-CHECK-NEXT: entry:
725 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
726 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
728 svcount_t
test_svwhilelo_c64_vl2(uint64_t op1
, uint64_t op2
)
730 return svwhilelo_c64(op1
, op2
, 2);
733 // CHECK-LABEL: @test_svwhilelo_c64_vl4(
734 // CHECK-NEXT: entry:
735 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
736 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
738 // CPP-CHECK-LABEL: @_Z22test_svwhilelo_c64_vl4mm(
739 // CPP-CHECK-NEXT: entry:
740 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
741 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
743 svcount_t
test_svwhilelo_c64_vl4(uint64_t op1
, uint64_t op2
)
745 return svwhilelo_c64(op1
, op2
, 4);
751 // CHECK-LABEL: @test_svwhilels_c8_vl2(
752 // CHECK-NEXT: entry:
753 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
754 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
756 // CPP-CHECK-LABEL: @_Z21test_svwhilels_c8_vl2mm(
757 // CPP-CHECK-NEXT: entry:
758 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
759 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
761 svcount_t
test_svwhilels_c8_vl2(uint64_t op1
, uint64_t op2
)
763 return svwhilels_c8(op1
, op2
, 2);
766 // CHECK-LABEL: @test_svwhilels_c8_vl4(
767 // CHECK-NEXT: entry:
768 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
769 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
771 // CPP-CHECK-LABEL: @_Z21test_svwhilels_c8_vl4mm(
772 // CPP-CHECK-NEXT: entry:
773 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
774 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
776 svcount_t
test_svwhilels_c8_vl4(uint64_t op1
, uint64_t op2
)
778 return svwhilels_c8(op1
, op2
, 4);
781 // CHECK-LABEL: @test_svwhilels_c16_vl2(
782 // CHECK-NEXT: entry:
783 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
784 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
786 // CPP-CHECK-LABEL: @_Z22test_svwhilels_c16_vl2mm(
787 // CPP-CHECK-NEXT: entry:
788 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
789 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
791 svcount_t
test_svwhilels_c16_vl2(uint64_t op1
, uint64_t op2
)
793 return svwhilels_c16(op1
, op2
, 2);
796 // CHECK-LABEL: @test_svwhilels_c16_vl4(
797 // CHECK-NEXT: entry:
798 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
799 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
801 // CPP-CHECK-LABEL: @_Z22test_svwhilels_c16_vl4mm(
802 // CPP-CHECK-NEXT: entry:
803 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
804 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
806 svcount_t
test_svwhilels_c16_vl4(uint64_t op1
, uint64_t op2
)
808 return svwhilels_c16(op1
, op2
, 4);
811 // CHECK-LABEL: @test_svwhilels_c32_vl2(
812 // CHECK-NEXT: entry:
813 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
814 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
816 // CPP-CHECK-LABEL: @_Z22test_svwhilels_c32_vl2mm(
817 // CPP-CHECK-NEXT: entry:
818 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
819 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
821 svcount_t
test_svwhilels_c32_vl2(uint64_t op1
, uint64_t op2
)
823 return svwhilels_c32(op1
, op2
, 2);
826 // CHECK-LABEL: @test_svwhilels_c32_vl4(
827 // CHECK-NEXT: entry:
828 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
829 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
831 // CPP-CHECK-LABEL: @_Z22test_svwhilels_c32_vl4mm(
832 // CPP-CHECK-NEXT: entry:
833 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
834 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
836 svcount_t
test_svwhilels_c32_vl4(uint64_t op1
, uint64_t op2
)
838 return svwhilels_c32(op1
, op2
, 4);
841 // CHECK-LABEL: @test_svwhilels_c64_vl2(
842 // CHECK-NEXT: entry:
843 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
844 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
846 // CPP-CHECK-LABEL: @_Z22test_svwhilels_c64_vl2mm(
847 // CPP-CHECK-NEXT: entry:
848 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
849 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
851 svcount_t
test_svwhilels_c64_vl2(uint64_t op1
, uint64_t op2
)
853 return svwhilels_c64(op1
, op2
, 2);
856 // CHECK-LABEL: @test_svwhilels_c64_vl4(
857 // CHECK-NEXT: entry:
858 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
859 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
861 // CPP-CHECK-LABEL: @_Z22test_svwhilels_c64_vl4mm(
862 // CPP-CHECK-NEXT: entry:
863 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
864 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
866 svcount_t
test_svwhilels_c64_vl4(uint64_t op1
, uint64_t op2
)
868 return svwhilels_c64(op1
, op2
, 4);
874 // CHECK-LABEL: @test_svwhilelt_c8_vl2(
875 // CHECK-NEXT: entry:
876 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
877 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
879 // CPP-CHECK-LABEL: @_Z21test_svwhilelt_c8_vl2ll(
880 // CPP-CHECK-NEXT: entry:
881 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
882 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
884 svcount_t
test_svwhilelt_c8_vl2(int64_t op1
, int64_t op2
)
886 return svwhilelt_c8(op1
, op2
, 2);
889 // CHECK-LABEL: @test_svwhilelt_c8_vl4(
890 // CHECK-NEXT: entry:
891 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
892 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
894 // CPP-CHECK-LABEL: @_Z21test_svwhilelt_c8_vl4ll(
895 // CPP-CHECK-NEXT: entry:
896 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
897 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
899 svcount_t
test_svwhilelt_c8_vl4(int64_t op1
, int64_t op2
)
901 return svwhilelt_c8(op1
, op2
, 4);
904 // CHECK-LABEL: @test_svwhilelt_c16_vl2(
905 // CHECK-NEXT: entry:
906 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
907 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
909 // CPP-CHECK-LABEL: @_Z22test_svwhilelt_c16_vl2ll(
910 // CPP-CHECK-NEXT: entry:
911 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
912 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
914 svcount_t
test_svwhilelt_c16_vl2(int64_t op1
, int64_t op2
)
916 return svwhilelt_c16(op1
, op2
, 2);
919 // CHECK-LABEL: @test_svwhilelt_c16_vl4(
920 // CHECK-NEXT: entry:
921 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
922 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
924 // CPP-CHECK-LABEL: @_Z22test_svwhilelt_c16_vl4ll(
925 // CPP-CHECK-NEXT: entry:
926 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
927 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
929 svcount_t
test_svwhilelt_c16_vl4(int64_t op1
, int64_t op2
)
931 return svwhilelt_c16(op1
, op2
, 4);
934 // CHECK-LABEL: @test_svwhilelt_c32_vl2(
935 // CHECK-NEXT: entry:
936 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
937 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
939 // CPP-CHECK-LABEL: @_Z22test_svwhilelt_c32_vl2ll(
940 // CPP-CHECK-NEXT: entry:
941 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
942 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
944 svcount_t
test_svwhilelt_c32_vl2(int64_t op1
, int64_t op2
)
946 return svwhilelt_c32(op1
, op2
, 2);
949 // CHECK-LABEL: @test_svwhilelt_c32_vl4(
950 // CHECK-NEXT: entry:
951 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
952 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
954 // CPP-CHECK-LABEL: @_Z22test_svwhilelt_c32_vl4ll(
955 // CPP-CHECK-NEXT: entry:
956 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
957 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
959 svcount_t
test_svwhilelt_c32_vl4(int64_t op1
, int64_t op2
)
961 return svwhilelt_c32(op1
, op2
, 4);
964 // CHECK-LABEL: @test_svwhilelt_c64_vl2(
965 // CHECK-NEXT: entry:
966 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
967 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
969 // CPP-CHECK-LABEL: @_Z22test_svwhilelt_c64_vl2ll(
970 // CPP-CHECK-NEXT: entry:
971 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
972 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
974 svcount_t
test_svwhilelt_c64_vl2(int64_t op1
, int64_t op2
)
976 return svwhilelt_c64(op1
, op2
, 2);
979 // CHECK-LABEL: @test_svwhilelt_c64_vl4(
980 // CHECK-NEXT: entry:
981 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
982 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
984 // CPP-CHECK-LABEL: @_Z22test_svwhilelt_c64_vl4ll(
985 // CPP-CHECK-NEXT: entry:
986 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
987 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
989 svcount_t
test_svwhilelt_c64_vl4(int64_t op1
, int64_t op2
)
991 return svwhilelt_c64(op1
, op2
, 4);