[Flang] remove whole-archive option for AIX linker (#76039)
[llvm-project.git] / clang / test / CodeGen / aarch64-sve2p1-intrinsics / acle_sve2p1_while_pn.c
blob143a43b4a9219892e3f7e88efb019ad26fb96e60
1 // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
2 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme2 -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 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2p1 -S -O1 -Werror -Wall -emit-llvm -o - %s | FileCheck %s
5 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2p1 -S -O1 -Werror -Wall -emit-llvm -o - -x c++ %s | FileCheck %s -check-prefix=CPP-CHECK
6 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2p1 -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
7 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme2 -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
9 // REQUIRES: aarch64-registered-target
11 #include <arm_sve.h>
13 #ifdef SVE_OVERLOADED_FORMS
14 #define SVE_ACLE_FUNC(A1, A2_UNUSED) A1
15 #else
16 #define SVE_ACLE_FUNC(A1, A2) A1##A2
17 #endif
20 // WHILEGE
22 // CHECK-LABEL: @test_svwhilege_c8_vl2(
23 // CHECK-NEXT: entry:
24 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
25 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
27 // CPP-CHECK-LABEL: @_Z21test_svwhilege_c8_vl2ll(
28 // CPP-CHECK-NEXT: entry:
29 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
30 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
32 svcount_t test_svwhilege_c8_vl2(int64_t op1, int64_t op2)
34 return SVE_ACLE_FUNC(svwhilege_c8,_s64)(op1, op2, 2);
37 // CHECK-LABEL: @test_svwhilege_c8_vl4(
38 // CHECK-NEXT: entry:
39 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
40 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
42 // CPP-CHECK-LABEL: @_Z21test_svwhilege_c8_vl4ll(
43 // CPP-CHECK-NEXT: entry:
44 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
45 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
47 svcount_t test_svwhilege_c8_vl4(int64_t op1, int64_t op2)
49 return SVE_ACLE_FUNC(svwhilege_c8,_s64)(op1, op2, 4);
52 // CHECK-LABEL: @test_svwhilege_c16_vl2(
53 // CHECK-NEXT: entry:
54 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
55 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
57 // CPP-CHECK-LABEL: @_Z22test_svwhilege_c16_vl2ll(
58 // CPP-CHECK-NEXT: entry:
59 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
60 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
62 svcount_t test_svwhilege_c16_vl2(int64_t op1, int64_t op2)
64 return SVE_ACLE_FUNC(svwhilege_c16,_s64)(op1, op2, 2);
67 // CHECK-LABEL: @test_svwhilege_c16_vl4(
68 // CHECK-NEXT: entry:
69 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
70 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
72 // CPP-CHECK-LABEL: @_Z22test_svwhilege_c16_vl4ll(
73 // CPP-CHECK-NEXT: entry:
74 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
75 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
77 svcount_t test_svwhilege_c16_vl4(int64_t op1, int64_t op2)
79 return SVE_ACLE_FUNC(svwhilege_c16,_s64)(op1, op2, 4);
82 // CHECK-LABEL: @test_svwhilege_c32_vl2(
83 // CHECK-NEXT: entry:
84 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
85 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
87 // CPP-CHECK-LABEL: @_Z22test_svwhilege_c32_vl2ll(
88 // CPP-CHECK-NEXT: entry:
89 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
90 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
92 svcount_t test_svwhilege_c32_vl2(int64_t op1, int64_t op2)
94 return SVE_ACLE_FUNC(svwhilege_c32,_s64)(op1, op2, 2);
97 // CHECK-LABEL: @test_svwhilege_c32_vl4(
98 // CHECK-NEXT: entry:
99 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
100 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
102 // CPP-CHECK-LABEL: @_Z22test_svwhilege_c32_vl4ll(
103 // CPP-CHECK-NEXT: entry:
104 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
105 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
107 svcount_t test_svwhilege_c32_vl4(int64_t op1, int64_t op2)
109 return SVE_ACLE_FUNC(svwhilege_c32,_s64)(op1, op2, 4);
112 // CHECK-LABEL: @test_svwhilege_c64_vl2(
113 // CHECK-NEXT: entry:
114 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
115 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
117 // CPP-CHECK-LABEL: @_Z22test_svwhilege_c64_vl2ll(
118 // CPP-CHECK-NEXT: entry:
119 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
120 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
122 svcount_t test_svwhilege_c64_vl2(int64_t op1, int64_t op2)
124 return SVE_ACLE_FUNC(svwhilege_c64,_s64)(op1, op2, 2);
127 // CHECK-LABEL: @test_svwhilege_c64_vl4(
128 // CHECK-NEXT: entry:
129 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
130 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
132 // CPP-CHECK-LABEL: @_Z22test_svwhilege_c64_vl4ll(
133 // CPP-CHECK-NEXT: entry:
134 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
135 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
137 svcount_t test_svwhilege_c64_vl4(int64_t op1, int64_t op2)
139 return SVE_ACLE_FUNC(svwhilege_c64,_s64)(op1, op2, 4);
142 // WHILEGT
145 // CHECK-LABEL: @test_svwhilegt_c8_vl2(
146 // CHECK-NEXT: entry:
147 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
148 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
150 // CPP-CHECK-LABEL: @_Z21test_svwhilegt_c8_vl2ll(
151 // CPP-CHECK-NEXT: entry:
152 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
153 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
155 svcount_t test_svwhilegt_c8_vl2(int64_t op1, int64_t op2)
157 return SVE_ACLE_FUNC(svwhilegt_c8,_s64)(op1, op2, 2);
160 // CHECK-LABEL: @test_svwhilegt_c8_vl4(
161 // CHECK-NEXT: entry:
162 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
163 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
165 // CPP-CHECK-LABEL: @_Z21test_svwhilegt_c8_vl4ll(
166 // CPP-CHECK-NEXT: entry:
167 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
168 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
170 svcount_t test_svwhilegt_c8_vl4(int64_t op1, int64_t op2)
172 return SVE_ACLE_FUNC(svwhilegt_c8,_s64)(op1, op2, 4);
175 // CHECK-LABEL: @test_svwhilegt_c16_vl2(
176 // CHECK-NEXT: entry:
177 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
178 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
180 // CPP-CHECK-LABEL: @_Z22test_svwhilegt_c16_vl2ll(
181 // CPP-CHECK-NEXT: entry:
182 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
183 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
185 svcount_t test_svwhilegt_c16_vl2(int64_t op1, int64_t op2)
187 return SVE_ACLE_FUNC(svwhilegt_c16,_s64)(op1, op2, 2);
190 // CHECK-LABEL: @test_svwhilegt_c16_vl4(
191 // CHECK-NEXT: entry:
192 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
193 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
195 // CPP-CHECK-LABEL: @_Z22test_svwhilegt_c16_vl4ll(
196 // CPP-CHECK-NEXT: entry:
197 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
198 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
200 svcount_t test_svwhilegt_c16_vl4(int64_t op1, int64_t op2)
202 return SVE_ACLE_FUNC(svwhilegt_c16,_s64)(op1, op2, 4);
205 // CHECK-LABEL: @test_svwhilegt_c32_vl2(
206 // CHECK-NEXT: entry:
207 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
208 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
210 // CPP-CHECK-LABEL: @_Z22test_svwhilegt_c32_vl2ll(
211 // CPP-CHECK-NEXT: entry:
212 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
213 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
215 svcount_t test_svwhilegt_c32_vl2(int64_t op1, int64_t op2)
217 return SVE_ACLE_FUNC(svwhilegt_c32,_s64)(op1, op2, 2);
220 // CHECK-LABEL: @test_svwhilegt_c32_vl4(
221 // CHECK-NEXT: entry:
222 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
223 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
225 // CPP-CHECK-LABEL: @_Z22test_svwhilegt_c32_vl4ll(
226 // CPP-CHECK-NEXT: entry:
227 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
228 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
230 svcount_t test_svwhilegt_c32_vl4(int64_t op1, int64_t op2)
232 return SVE_ACLE_FUNC(svwhilegt_c32,_s64)(op1, op2, 4);
235 // CHECK-LABEL: @test_svwhilegt_c64_vl2(
236 // CHECK-NEXT: entry:
237 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
238 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
240 // CPP-CHECK-LABEL: @_Z22test_svwhilegt_c64_vl2ll(
241 // CPP-CHECK-NEXT: entry:
242 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
243 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
245 svcount_t test_svwhilegt_c64_vl2(int64_t op1, int64_t op2)
247 return SVE_ACLE_FUNC(svwhilegt_c64,_s64)(op1, op2, 2);
250 // CHECK-LABEL: @test_svwhilegt_c64_vl4(
251 // CHECK-NEXT: entry:
252 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
253 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
255 // CPP-CHECK-LABEL: @_Z22test_svwhilegt_c64_vl4ll(
256 // CPP-CHECK-NEXT: entry:
257 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
258 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
260 svcount_t test_svwhilegt_c64_vl4(int64_t op1, int64_t op2)
262 return SVE_ACLE_FUNC(svwhilegt_c64,_s64)(op1, op2, 4);
266 // WHILEHI
268 // CHECK-LABEL: @test_svwhilehi_c8_vl2(
269 // CHECK-NEXT: entry:
270 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
271 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
273 // CPP-CHECK-LABEL: @_Z21test_svwhilehi_c8_vl2mm(
274 // CPP-CHECK-NEXT: entry:
275 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
276 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
278 svcount_t test_svwhilehi_c8_vl2(uint64_t op1, uint64_t op2)
280 return SVE_ACLE_FUNC(svwhilegt_c8,_u64)(op1, op2, 2);
283 // CHECK-LABEL: @test_svwhilehi_c8_vl4(
284 // CHECK-NEXT: entry:
285 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
286 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
288 // CPP-CHECK-LABEL: @_Z21test_svwhilehi_c8_vl4mm(
289 // CPP-CHECK-NEXT: entry:
290 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
291 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
293 svcount_t test_svwhilehi_c8_vl4(uint64_t op1, uint64_t op2)
295 return SVE_ACLE_FUNC(svwhilegt_c8,_u64)(op1, op2, 4);
298 // CHECK-LABEL: @test_svwhilehi_c16_vl2(
299 // CHECK-NEXT: entry:
300 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
301 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
303 // CPP-CHECK-LABEL: @_Z22test_svwhilehi_c16_vl2mm(
304 // CPP-CHECK-NEXT: entry:
305 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
306 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
308 svcount_t test_svwhilehi_c16_vl2(uint64_t op1, uint64_t op2)
310 return SVE_ACLE_FUNC(svwhilegt_c16,_u64)(op1, op2, 2);
313 // CHECK-LABEL: @test_svwhilehi_c16_vl4(
314 // CHECK-NEXT: entry:
315 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
316 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
318 // CPP-CHECK-LABEL: @_Z22test_svwhilehi_c16_vl4mm(
319 // CPP-CHECK-NEXT: entry:
320 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
321 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
323 svcount_t test_svwhilehi_c16_vl4(uint64_t op1, uint64_t op2)
325 return SVE_ACLE_FUNC(svwhilegt_c16,_u64)(op1, op2, 4);
328 // CHECK-LABEL: @test_svwhilehi_c32_vl2(
329 // CHECK-NEXT: entry:
330 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
331 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
333 // CPP-CHECK-LABEL: @_Z22test_svwhilehi_c32_vl2mm(
334 // CPP-CHECK-NEXT: entry:
335 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
336 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
338 svcount_t test_svwhilehi_c32_vl2(uint64_t op1, uint64_t op2)
340 return SVE_ACLE_FUNC(svwhilegt_c32,_u64)(op1, op2, 2);
343 // CHECK-LABEL: @test_svwhilehi_c32_vl4(
344 // CHECK-NEXT: entry:
345 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
346 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
348 // CPP-CHECK-LABEL: @_Z22test_svwhilehi_c32_vl4mm(
349 // CPP-CHECK-NEXT: entry:
350 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
351 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
353 svcount_t test_svwhilehi_c32_vl4(uint64_t op1, uint64_t op2)
355 return SVE_ACLE_FUNC(svwhilegt_c32,_u64)(op1, op2, 4);
358 // CHECK-LABEL: @test_svwhilehi_c64_vl2(
359 // CHECK-NEXT: entry:
360 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
361 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
363 // CPP-CHECK-LABEL: @_Z22test_svwhilehi_c64_vl2mm(
364 // CPP-CHECK-NEXT: entry:
365 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
366 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
368 svcount_t test_svwhilehi_c64_vl2(uint64_t op1, uint64_t op2)
370 return SVE_ACLE_FUNC(svwhilegt_c64,_u64)(op1, op2, 2);
373 // CHECK-LABEL: @test_svwhilehi_c64_vl4(
374 // CHECK-NEXT: entry:
375 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
376 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
378 // CPP-CHECK-LABEL: @_Z22test_svwhilehi_c64_vl4mm(
379 // CPP-CHECK-NEXT: entry:
380 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
381 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
383 svcount_t test_svwhilehi_c64_vl4(uint64_t op1, uint64_t op2)
385 return SVE_ACLE_FUNC(svwhilegt_c64,_u64)(op1, op2, 4);
389 // WHILEHS
391 // CHECK-LABEL: @test_svwhilehs_c8_vl2(
392 // CHECK-NEXT: entry:
393 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
394 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
396 // CPP-CHECK-LABEL: @_Z21test_svwhilehs_c8_vl2mm(
397 // CPP-CHECK-NEXT: entry:
398 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
399 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
401 svcount_t test_svwhilehs_c8_vl2(uint64_t op1, uint64_t op2)
403 return SVE_ACLE_FUNC(svwhilege_c8,_u64)(op1, op2, 2);
406 // CHECK-LABEL: @test_svwhilehs_c8_vl4(
407 // CHECK-NEXT: entry:
408 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
409 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
411 // CPP-CHECK-LABEL: @_Z21test_svwhilehs_c8_vl4mm(
412 // CPP-CHECK-NEXT: entry:
413 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
414 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
416 svcount_t test_svwhilehs_c8_vl4(uint64_t op1, uint64_t op2)
418 return SVE_ACLE_FUNC(svwhilege_c8,_u64)(op1, op2, 4);
421 // CHECK-LABEL: @test_svwhilehs_c16_vl2(
422 // CHECK-NEXT: entry:
423 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
424 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
426 // CPP-CHECK-LABEL: @_Z22test_svwhilehs_c16_vl2mm(
427 // CPP-CHECK-NEXT: entry:
428 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
429 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
431 svcount_t test_svwhilehs_c16_vl2(uint64_t op1, uint64_t op2)
433 return SVE_ACLE_FUNC(svwhilege_c16,_u64)(op1, op2, 2);
436 // CHECK-LABEL: @test_svwhilehs_c16_vl4(
437 // CHECK-NEXT: entry:
438 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
439 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
441 // CPP-CHECK-LABEL: @_Z22test_svwhilehs_c16_vl4mm(
442 // CPP-CHECK-NEXT: entry:
443 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
444 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
446 svcount_t test_svwhilehs_c16_vl4(uint64_t op1, uint64_t op2)
448 return SVE_ACLE_FUNC(svwhilege_c16,_u64)(op1, op2, 4);
451 // CHECK-LABEL: @test_svwhilehs_c32_vl2(
452 // CHECK-NEXT: entry:
453 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
454 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
456 // CPP-CHECK-LABEL: @_Z22test_svwhilehs_c32_vl2mm(
457 // CPP-CHECK-NEXT: entry:
458 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
459 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
461 svcount_t test_svwhilehs_c32_vl2(uint64_t op1, uint64_t op2)
463 return SVE_ACLE_FUNC(svwhilege_c32,_u64)(op1, op2, 2);
466 // CHECK-LABEL: @test_svwhilehs_c32_vl4(
467 // CHECK-NEXT: entry:
468 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
469 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
471 // CPP-CHECK-LABEL: @_Z22test_svwhilehs_c32_vl4mm(
472 // CPP-CHECK-NEXT: entry:
473 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
474 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
476 svcount_t test_svwhilehs_c32_vl4(uint64_t op1, uint64_t op2)
478 return SVE_ACLE_FUNC(svwhilege_c32,_u64)(op1, op2, 4);
481 // CHECK-LABEL: @test_svwhilehs_c64_vl2(
482 // CHECK-NEXT: entry:
483 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
484 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
486 // CPP-CHECK-LABEL: @_Z22test_svwhilehs_c64_vl2mm(
487 // CPP-CHECK-NEXT: entry:
488 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
489 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
491 svcount_t test_svwhilehs_c64_vl2(uint64_t op1, uint64_t op2)
493 return SVE_ACLE_FUNC(svwhilege_c64,_u64)(op1, op2, 2);
496 // CHECK-LABEL: @test_svwhilehs_c64_vl4(
497 // CHECK-NEXT: entry:
498 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
499 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
501 // CPP-CHECK-LABEL: @_Z22test_svwhilehs_c64_vl4mm(
502 // CPP-CHECK-NEXT: entry:
503 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
504 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
506 svcount_t test_svwhilehs_c64_vl4(uint64_t op1, uint64_t op2)
508 return SVE_ACLE_FUNC(svwhilege_c64,_u64)(op1, op2, 4);
512 // WHILELE
514 // CHECK-LABEL: @test_svwhilele_c8_vl2(
515 // CHECK-NEXT: entry:
516 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
517 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
519 // CPP-CHECK-LABEL: @_Z21test_svwhilele_c8_vl2ll(
520 // CPP-CHECK-NEXT: entry:
521 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
522 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
524 svcount_t test_svwhilele_c8_vl2(int64_t op1, int64_t op2)
526 return SVE_ACLE_FUNC(svwhilele_c8,_s64)(op1, op2, 2);
529 // CHECK-LABEL: @test_svwhilele_c8_vl4(
530 // CHECK-NEXT: entry:
531 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
532 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
534 // CPP-CHECK-LABEL: @_Z21test_svwhilele_c8_vl4ll(
535 // CPP-CHECK-NEXT: entry:
536 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
537 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
539 svcount_t test_svwhilele_c8_vl4(int64_t op1, int64_t op2)
541 return SVE_ACLE_FUNC(svwhilele_c8,_s64)(op1, op2, 4);
544 // CHECK-LABEL: @test_svwhilele_c16_vl2(
545 // CHECK-NEXT: entry:
546 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
547 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
549 // CPP-CHECK-LABEL: @_Z22test_svwhilele_c16_vl2ll(
550 // CPP-CHECK-NEXT: entry:
551 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
552 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
554 svcount_t test_svwhilele_c16_vl2(int64_t op1, int64_t op2)
556 return SVE_ACLE_FUNC(svwhilele_c16,_s64)(op1, op2, 2);
559 // CHECK-LABEL: @test_svwhilele_c16_vl4(
560 // CHECK-NEXT: entry:
561 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
562 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
564 // CPP-CHECK-LABEL: @_Z22test_svwhilele_c16_vl4ll(
565 // CPP-CHECK-NEXT: entry:
566 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
567 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
569 svcount_t test_svwhilele_c16_vl4(int64_t op1, int64_t op2)
571 return SVE_ACLE_FUNC(svwhilele_c16,_s64)(op1, op2, 4);
574 // CHECK-LABEL: @test_svwhilele_c32_vl2(
575 // CHECK-NEXT: entry:
576 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
577 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
579 // CPP-CHECK-LABEL: @_Z22test_svwhilele_c32_vl2ll(
580 // CPP-CHECK-NEXT: entry:
581 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
582 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
584 svcount_t test_svwhilele_c32_vl2(int64_t op1, int64_t op2)
586 return SVE_ACLE_FUNC(svwhilele_c32,_s64)(op1, op2, 2);
589 // CHECK-LABEL: @test_svwhilele_c32_vl4(
590 // CHECK-NEXT: entry:
591 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
592 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
594 // CPP-CHECK-LABEL: @_Z22test_svwhilele_c32_vl4ll(
595 // CPP-CHECK-NEXT: entry:
596 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
597 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
599 svcount_t test_svwhilele_c32_vl4(int64_t op1, int64_t op2)
601 return SVE_ACLE_FUNC(svwhilele_c32,_s64)(op1, op2, 4);
604 // CHECK-LABEL: @test_svwhilele_c64_vl2(
605 // CHECK-NEXT: entry:
606 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
607 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
609 // CPP-CHECK-LABEL: @_Z22test_svwhilele_c64_vl2ll(
610 // CPP-CHECK-NEXT: entry:
611 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
612 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
614 svcount_t test_svwhilele_c64_vl2(int64_t op1, int64_t op2)
616 return SVE_ACLE_FUNC(svwhilele_c64,_s64)(op1, op2, 2);
619 // CHECK-LABEL: @test_svwhilele_c64_vl4(
620 // CHECK-NEXT: entry:
621 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
622 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
624 // CPP-CHECK-LABEL: @_Z22test_svwhilele_c64_vl4ll(
625 // CPP-CHECK-NEXT: entry:
626 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
627 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
629 svcount_t test_svwhilele_c64_vl4(int64_t op1, int64_t op2)
631 return SVE_ACLE_FUNC(svwhilele_c64,_s64)(op1, op2, 4);
635 // WHILELO
637 // CHECK-LABEL: @test_svwhilelo_c8_vl2(
638 // CHECK-NEXT: entry:
639 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
640 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
642 // CPP-CHECK-LABEL: @_Z21test_svwhilelo_c8_vl2mm(
643 // CPP-CHECK-NEXT: entry:
644 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
645 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
647 svcount_t test_svwhilelo_c8_vl2(uint64_t op1, uint64_t op2)
649 return SVE_ACLE_FUNC(svwhilelt_c8,_u64)(op1, op2, 2);
652 // CHECK-LABEL: @test_svwhilelo_c8_vl4(
653 // CHECK-NEXT: entry:
654 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
655 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
657 // CPP-CHECK-LABEL: @_Z21test_svwhilelo_c8_vl4mm(
658 // CPP-CHECK-NEXT: entry:
659 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
660 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
662 svcount_t test_svwhilelo_c8_vl4(uint64_t op1, uint64_t op2)
664 return SVE_ACLE_FUNC(svwhilelt_c8,_u64)(op1, op2, 4);
667 // CHECK-LABEL: @test_svwhilelo_c16_vl2(
668 // CHECK-NEXT: entry:
669 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
670 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
672 // CPP-CHECK-LABEL: @_Z22test_svwhilelo_c16_vl2mm(
673 // CPP-CHECK-NEXT: entry:
674 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
675 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
677 svcount_t test_svwhilelo_c16_vl2(uint64_t op1, uint64_t op2)
679 return SVE_ACLE_FUNC(svwhilelt_c16,_u64)(op1, op2, 2);
682 // CHECK-LABEL: @test_svwhilelo_c16_vl4(
683 // CHECK-NEXT: entry:
684 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
685 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
687 // CPP-CHECK-LABEL: @_Z22test_svwhilelo_c16_vl4mm(
688 // CPP-CHECK-NEXT: entry:
689 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
690 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
692 svcount_t test_svwhilelo_c16_vl4(uint64_t op1, uint64_t op2)
694 return SVE_ACLE_FUNC(svwhilelt_c16,_u64)(op1, op2, 4);
697 // CHECK-LABEL: @test_svwhilelo_c32_vl2(
698 // CHECK-NEXT: entry:
699 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
700 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
702 // CPP-CHECK-LABEL: @_Z22test_svwhilelo_c32_vl2mm(
703 // CPP-CHECK-NEXT: entry:
704 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
705 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
707 svcount_t test_svwhilelo_c32_vl2(uint64_t op1, uint64_t op2)
709 return SVE_ACLE_FUNC(svwhilelt_c32,_u64)(op1, op2, 2);
712 // CHECK-LABEL: @test_svwhilelo_c32_vl4(
713 // CHECK-NEXT: entry:
714 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
715 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
717 // CPP-CHECK-LABEL: @_Z22test_svwhilelo_c32_vl4mm(
718 // CPP-CHECK-NEXT: entry:
719 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
720 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
722 svcount_t test_svwhilelo_c32_vl4(uint64_t op1, uint64_t op2)
724 return SVE_ACLE_FUNC(svwhilelt_c32,_u64)(op1, op2, 4);
727 // CHECK-LABEL: @test_svwhilelo_c64_vl2(
728 // CHECK-NEXT: entry:
729 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
730 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
732 // CPP-CHECK-LABEL: @_Z22test_svwhilelo_c64_vl2mm(
733 // CPP-CHECK-NEXT: entry:
734 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
735 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
737 svcount_t test_svwhilelo_c64_vl2(uint64_t op1, uint64_t op2)
739 return SVE_ACLE_FUNC(svwhilelt_c64,_u64)(op1, op2, 2);
742 // CHECK-LABEL: @test_svwhilelo_c64_vl4(
743 // CHECK-NEXT: entry:
744 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
745 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
747 // CPP-CHECK-LABEL: @_Z22test_svwhilelo_c64_vl4mm(
748 // CPP-CHECK-NEXT: entry:
749 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
750 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
752 svcount_t test_svwhilelo_c64_vl4(uint64_t op1, uint64_t op2)
754 return SVE_ACLE_FUNC(svwhilelt_c64,_u64)(op1, op2, 4);
758 // WHILELS
760 // CHECK-LABEL: @test_svwhilels_c8_vl2(
761 // CHECK-NEXT: entry:
762 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
763 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
765 // CPP-CHECK-LABEL: @_Z21test_svwhilels_c8_vl2mm(
766 // CPP-CHECK-NEXT: entry:
767 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
768 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
770 svcount_t test_svwhilels_c8_vl2(uint64_t op1, uint64_t op2)
772 return SVE_ACLE_FUNC(svwhilele_c8,_u64)(op1, op2, 2);
775 // CHECK-LABEL: @test_svwhilels_c8_vl4(
776 // CHECK-NEXT: entry:
777 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
778 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
780 // CPP-CHECK-LABEL: @_Z21test_svwhilels_c8_vl4mm(
781 // CPP-CHECK-NEXT: entry:
782 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
783 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
785 svcount_t test_svwhilels_c8_vl4(uint64_t op1, uint64_t op2)
787 return SVE_ACLE_FUNC(svwhilele_c8,_u64)(op1, op2, 4);
790 // CHECK-LABEL: @test_svwhilels_c16_vl2(
791 // CHECK-NEXT: entry:
792 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
793 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
795 // CPP-CHECK-LABEL: @_Z22test_svwhilels_c16_vl2mm(
796 // CPP-CHECK-NEXT: entry:
797 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
798 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
800 svcount_t test_svwhilels_c16_vl2(uint64_t op1, uint64_t op2)
802 return SVE_ACLE_FUNC(svwhilele_c16,_u64)(op1, op2, 2);
805 // CHECK-LABEL: @test_svwhilels_c16_vl4(
806 // CHECK-NEXT: entry:
807 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
808 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
810 // CPP-CHECK-LABEL: @_Z22test_svwhilels_c16_vl4mm(
811 // CPP-CHECK-NEXT: entry:
812 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
813 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
815 svcount_t test_svwhilels_c16_vl4(uint64_t op1, uint64_t op2)
817 return SVE_ACLE_FUNC(svwhilele_c16,_u64)(op1, op2, 4);
820 // CHECK-LABEL: @test_svwhilels_c32_vl2(
821 // CHECK-NEXT: entry:
822 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
823 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
825 // CPP-CHECK-LABEL: @_Z22test_svwhilels_c32_vl2mm(
826 // CPP-CHECK-NEXT: entry:
827 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
828 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
830 svcount_t test_svwhilels_c32_vl2(uint64_t op1, uint64_t op2)
832 return SVE_ACLE_FUNC(svwhilele_c32,_u64)(op1, op2, 2);
835 // CHECK-LABEL: @test_svwhilels_c32_vl4(
836 // CHECK-NEXT: entry:
837 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
838 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
840 // CPP-CHECK-LABEL: @_Z22test_svwhilels_c32_vl4mm(
841 // CPP-CHECK-NEXT: entry:
842 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
843 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
845 svcount_t test_svwhilels_c32_vl4(uint64_t op1, uint64_t op2)
847 return SVE_ACLE_FUNC(svwhilele_c32,_u64)(op1, op2, 4);
850 // CHECK-LABEL: @test_svwhilels_c64_vl2(
851 // CHECK-NEXT: entry:
852 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
853 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
855 // CPP-CHECK-LABEL: @_Z22test_svwhilels_c64_vl2mm(
856 // CPP-CHECK-NEXT: entry:
857 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
858 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
860 svcount_t test_svwhilels_c64_vl2(uint64_t op1, uint64_t op2)
862 return SVE_ACLE_FUNC(svwhilele_c64,_u64)(op1, op2, 2);
865 // CHECK-LABEL: @test_svwhilels_c64_vl4(
866 // CHECK-NEXT: entry:
867 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
868 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
870 // CPP-CHECK-LABEL: @_Z22test_svwhilels_c64_vl4mm(
871 // CPP-CHECK-NEXT: entry:
872 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
873 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
875 svcount_t test_svwhilels_c64_vl4(uint64_t op1, uint64_t op2)
877 return SVE_ACLE_FUNC(svwhilele_c64,_u64)(op1, op2, 4);
881 // WHILELT
883 // CHECK-LABEL: @test_svwhilelt_c8_vl2(
884 // CHECK-NEXT: entry:
885 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
886 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
888 // CPP-CHECK-LABEL: @_Z21test_svwhilelt_c8_vl2ll(
889 // CPP-CHECK-NEXT: entry:
890 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
891 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
893 svcount_t test_svwhilelt_c8_vl2(int64_t op1, int64_t op2)
895 return SVE_ACLE_FUNC(svwhilelt_c8,_s64)(op1, op2, 2);
898 // CHECK-LABEL: @test_svwhilelt_c8_vl4(
899 // CHECK-NEXT: entry:
900 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
901 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
903 // CPP-CHECK-LABEL: @_Z21test_svwhilelt_c8_vl4ll(
904 // CPP-CHECK-NEXT: entry:
905 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c8(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
906 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
908 svcount_t test_svwhilelt_c8_vl4(int64_t op1, int64_t op2)
910 return SVE_ACLE_FUNC(svwhilelt_c8,_s64)(op1, op2, 4);
913 // CHECK-LABEL: @test_svwhilelt_c16_vl2(
914 // CHECK-NEXT: entry:
915 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
916 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
918 // CPP-CHECK-LABEL: @_Z22test_svwhilelt_c16_vl2ll(
919 // CPP-CHECK-NEXT: entry:
920 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
921 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
923 svcount_t test_svwhilelt_c16_vl2(int64_t op1, int64_t op2)
925 return SVE_ACLE_FUNC(svwhilelt_c16,_s64)(op1, op2, 2);
928 // CHECK-LABEL: @test_svwhilelt_c16_vl4(
929 // CHECK-NEXT: entry:
930 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
931 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
933 // CPP-CHECK-LABEL: @_Z22test_svwhilelt_c16_vl4ll(
934 // CPP-CHECK-NEXT: entry:
935 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c16(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
936 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
938 svcount_t test_svwhilelt_c16_vl4(int64_t op1, int64_t op2)
940 return SVE_ACLE_FUNC(svwhilelt_c16,_s64)(op1, op2, 4);
943 // CHECK-LABEL: @test_svwhilelt_c32_vl2(
944 // CHECK-NEXT: entry:
945 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
946 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
948 // CPP-CHECK-LABEL: @_Z22test_svwhilelt_c32_vl2ll(
949 // CPP-CHECK-NEXT: entry:
950 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
951 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
953 svcount_t test_svwhilelt_c32_vl2(int64_t op1, int64_t op2)
955 return SVE_ACLE_FUNC(svwhilelt_c32,_s64)(op1, op2, 2);
958 // CHECK-LABEL: @test_svwhilelt_c32_vl4(
959 // CHECK-NEXT: entry:
960 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
961 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
963 // CPP-CHECK-LABEL: @_Z22test_svwhilelt_c32_vl4ll(
964 // CPP-CHECK-NEXT: entry:
965 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c32(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
966 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
968 svcount_t test_svwhilelt_c32_vl4(int64_t op1, int64_t op2)
970 return SVE_ACLE_FUNC(svwhilelt_c32,_s64)(op1, op2, 4);
973 // CHECK-LABEL: @test_svwhilelt_c64_vl2(
974 // CHECK-NEXT: entry:
975 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
976 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
978 // CPP-CHECK-LABEL: @_Z22test_svwhilelt_c64_vl2ll(
979 // CPP-CHECK-NEXT: entry:
980 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 2)
981 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
983 svcount_t test_svwhilelt_c64_vl2(int64_t op1, int64_t op2)
985 return SVE_ACLE_FUNC(svwhilelt_c64,_s64)(op1, op2, 2);
988 // CHECK-LABEL: @test_svwhilelt_c64_vl4(
989 // CHECK-NEXT: entry:
990 // CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
991 // CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
993 // CPP-CHECK-LABEL: @_Z22test_svwhilelt_c64_vl4ll(
994 // CPP-CHECK-NEXT: entry:
995 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c64(i64 [[OP1:%.*]], i64 [[OP2:%.*]], i32 4)
996 // CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]]
998 svcount_t test_svwhilelt_c64_vl4(int64_t op1, int64_t op2)
1000 return SVE_ACLE_FUNC(svwhilelt_c64,_s64)(op1, op2, 4);