1 // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
2 // REQUIRES: aarch64-registered-target
3 // RUN: %clang_cc1 -triple aarch64 -target-feature +sve -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s
4 // RUN: %clang_cc1 -triple aarch64 -target-feature +sve -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
5 // RUN: %clang_cc1 -triple aarch64 -target-feature +sve -S -disable-O0-optnone -Werror -o /dev/null %s
6 // RUN: %clang_cc1 -triple aarch64 -target-feature +sme -S -disable-O0-optnone -Werror -o /dev/null %s
10 #if defined __ARM_FEATURE_SME
11 #define MODE_ATTR __arm_streaming
16 // CHECK-LABEL: @test_svptrue_b8(
18 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 31)
19 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
21 // CPP-CHECK-LABEL: @_Z15test_svptrue_b8v(
22 // CPP-CHECK-NEXT: entry:
23 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 31)
24 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
26 svbool_t
test_svptrue_b8(void) MODE_ATTR
31 // CHECK-LABEL: @test_svptrue_b16(
33 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)
34 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv8i1(<vscale x 8 x i1> [[TMP0]])
35 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP1]]
37 // CPP-CHECK-LABEL: @_Z16test_svptrue_b16v(
38 // CPP-CHECK-NEXT: entry:
39 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)
40 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv8i1(<vscale x 8 x i1> [[TMP0]])
41 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP1]]
43 svbool_t
test_svptrue_b16(void) MODE_ATTR
48 // CHECK-LABEL: @test_svptrue_b32(
50 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31)
51 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv4i1(<vscale x 4 x i1> [[TMP0]])
52 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP1]]
54 // CPP-CHECK-LABEL: @_Z16test_svptrue_b32v(
55 // CPP-CHECK-NEXT: entry:
56 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31)
57 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv4i1(<vscale x 4 x i1> [[TMP0]])
58 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP1]]
60 svbool_t
test_svptrue_b32(void) MODE_ATTR
65 // CHECK-LABEL: @test_svptrue_b64(
67 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31)
68 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv2i1(<vscale x 2 x i1> [[TMP0]])
69 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP1]]
71 // CPP-CHECK-LABEL: @_Z16test_svptrue_b64v(
72 // CPP-CHECK-NEXT: entry:
73 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31)
74 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv2i1(<vscale x 2 x i1> [[TMP0]])
75 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP1]]
77 svbool_t
test_svptrue_b64(void) MODE_ATTR
82 // CHECK-LABEL: @test_svptrue_pat_b8(
84 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 0)
85 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
87 // CPP-CHECK-LABEL: @_Z19test_svptrue_pat_b8v(
88 // CPP-CHECK-NEXT: entry:
89 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 0)
90 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
92 svbool_t
test_svptrue_pat_b8(void) MODE_ATTR
94 return svptrue_pat_b8(SV_POW2
);
97 // CHECK-LABEL: @test_svptrue_pat_b8_1(
99 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 1)
100 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
102 // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_1v(
103 // CPP-CHECK-NEXT: entry:
104 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 1)
105 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
107 svbool_t
test_svptrue_pat_b8_1(void) MODE_ATTR
109 return svptrue_pat_b8(SV_VL1
);
112 // CHECK-LABEL: @test_svptrue_pat_b8_2(
113 // CHECK-NEXT: entry:
114 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 2)
115 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
117 // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_2v(
118 // CPP-CHECK-NEXT: entry:
119 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 2)
120 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
122 svbool_t
test_svptrue_pat_b8_2(void) MODE_ATTR
124 return svptrue_pat_b8(SV_VL2
);
127 // CHECK-LABEL: @test_svptrue_pat_b8_3(
128 // CHECK-NEXT: entry:
129 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 3)
130 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
132 // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_3v(
133 // CPP-CHECK-NEXT: entry:
134 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 3)
135 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
137 svbool_t
test_svptrue_pat_b8_3(void) MODE_ATTR
139 return svptrue_pat_b8(SV_VL3
);
142 // CHECK-LABEL: @test_svptrue_pat_b8_4(
143 // CHECK-NEXT: entry:
144 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 4)
145 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
147 // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_4v(
148 // CPP-CHECK-NEXT: entry:
149 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 4)
150 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
152 svbool_t
test_svptrue_pat_b8_4(void) MODE_ATTR
154 return svptrue_pat_b8(SV_VL4
);
157 // CHECK-LABEL: @test_svptrue_pat_b8_5(
158 // CHECK-NEXT: entry:
159 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 5)
160 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
162 // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_5v(
163 // CPP-CHECK-NEXT: entry:
164 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 5)
165 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
167 svbool_t
test_svptrue_pat_b8_5(void) MODE_ATTR
169 return svptrue_pat_b8(SV_VL5
);
172 // CHECK-LABEL: @test_svptrue_pat_b8_6(
173 // CHECK-NEXT: entry:
174 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 6)
175 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
177 // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_6v(
178 // CPP-CHECK-NEXT: entry:
179 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 6)
180 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
182 svbool_t
test_svptrue_pat_b8_6(void) MODE_ATTR
184 return svptrue_pat_b8(SV_VL6
);
187 // CHECK-LABEL: @test_svptrue_pat_b8_7(
188 // CHECK-NEXT: entry:
189 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 7)
190 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
192 // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_7v(
193 // CPP-CHECK-NEXT: entry:
194 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 7)
195 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
197 svbool_t
test_svptrue_pat_b8_7(void) MODE_ATTR
199 return svptrue_pat_b8(SV_VL7
);
202 // CHECK-LABEL: @test_svptrue_pat_b8_8(
203 // CHECK-NEXT: entry:
204 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 8)
205 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
207 // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_8v(
208 // CPP-CHECK-NEXT: entry:
209 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 8)
210 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
212 svbool_t
test_svptrue_pat_b8_8(void) MODE_ATTR
214 return svptrue_pat_b8(SV_VL8
);
217 // CHECK-LABEL: @test_svptrue_pat_b8_9(
218 // CHECK-NEXT: entry:
219 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 9)
220 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
222 // CPP-CHECK-LABEL: @_Z21test_svptrue_pat_b8_9v(
223 // CPP-CHECK-NEXT: entry:
224 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 9)
225 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
227 svbool_t
test_svptrue_pat_b8_9(void) MODE_ATTR
229 return svptrue_pat_b8(SV_VL16
);
232 // CHECK-LABEL: @test_svptrue_pat_b8_10(
233 // CHECK-NEXT: entry:
234 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 10)
235 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
237 // CPP-CHECK-LABEL: @_Z22test_svptrue_pat_b8_10v(
238 // CPP-CHECK-NEXT: entry:
239 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 10)
240 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
242 svbool_t
test_svptrue_pat_b8_10(void) MODE_ATTR
244 return svptrue_pat_b8(SV_VL32
);
247 // CHECK-LABEL: @test_svptrue_pat_b8_11(
248 // CHECK-NEXT: entry:
249 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 11)
250 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
252 // CPP-CHECK-LABEL: @_Z22test_svptrue_pat_b8_11v(
253 // CPP-CHECK-NEXT: entry:
254 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 11)
255 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
257 svbool_t
test_svptrue_pat_b8_11(void) MODE_ATTR
259 return svptrue_pat_b8(SV_VL64
);
262 // CHECK-LABEL: @test_svptrue_pat_b8_12(
263 // CHECK-NEXT: entry:
264 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 12)
265 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
267 // CPP-CHECK-LABEL: @_Z22test_svptrue_pat_b8_12v(
268 // CPP-CHECK-NEXT: entry:
269 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 12)
270 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
272 svbool_t
test_svptrue_pat_b8_12(void) MODE_ATTR
274 return svptrue_pat_b8(SV_VL128
);
277 // CHECK-LABEL: @test_svptrue_pat_b8_13(
278 // CHECK-NEXT: entry:
279 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 13)
280 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
282 // CPP-CHECK-LABEL: @_Z22test_svptrue_pat_b8_13v(
283 // CPP-CHECK-NEXT: entry:
284 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 13)
285 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
287 svbool_t
test_svptrue_pat_b8_13(void) MODE_ATTR
289 return svptrue_pat_b8(SV_VL256
);
292 // CHECK-LABEL: @test_svptrue_pat_b8_14(
293 // CHECK-NEXT: entry:
294 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 29)
295 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
297 // CPP-CHECK-LABEL: @_Z22test_svptrue_pat_b8_14v(
298 // CPP-CHECK-NEXT: entry:
299 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 29)
300 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
302 svbool_t
test_svptrue_pat_b8_14(void) MODE_ATTR
304 return svptrue_pat_b8(SV_MUL4
);
307 // CHECK-LABEL: @test_svptrue_pat_b8_15(
308 // CHECK-NEXT: entry:
309 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 30)
310 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
312 // CPP-CHECK-LABEL: @_Z22test_svptrue_pat_b8_15v(
313 // CPP-CHECK-NEXT: entry:
314 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 30)
315 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
317 svbool_t
test_svptrue_pat_b8_15(void) MODE_ATTR
319 return svptrue_pat_b8(SV_MUL3
);
322 // CHECK-LABEL: @test_svptrue_pat_b8_16(
323 // CHECK-NEXT: entry:
324 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 31)
325 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
327 // CPP-CHECK-LABEL: @_Z22test_svptrue_pat_b8_16v(
328 // CPP-CHECK-NEXT: entry:
329 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 31)
330 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]]
332 svbool_t
test_svptrue_pat_b8_16(void) MODE_ATTR
334 return svptrue_pat_b8(SV_ALL
);
337 // CHECK-LABEL: @test_svptrue_pat_b16(
338 // CHECK-NEXT: entry:
339 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 0)
340 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv8i1(<vscale x 8 x i1> [[TMP0]])
341 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP1]]
343 // CPP-CHECK-LABEL: @_Z20test_svptrue_pat_b16v(
344 // CPP-CHECK-NEXT: entry:
345 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 0)
346 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv8i1(<vscale x 8 x i1> [[TMP0]])
347 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP1]]
349 svbool_t
test_svptrue_pat_b16(void) MODE_ATTR
351 return svptrue_pat_b16(SV_POW2
);
354 // CHECK-LABEL: @test_svptrue_pat_b32(
355 // CHECK-NEXT: entry:
356 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 1)
357 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv4i1(<vscale x 4 x i1> [[TMP0]])
358 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP1]]
360 // CPP-CHECK-LABEL: @_Z20test_svptrue_pat_b32v(
361 // CPP-CHECK-NEXT: entry:
362 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 1)
363 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv4i1(<vscale x 4 x i1> [[TMP0]])
364 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP1]]
366 svbool_t
test_svptrue_pat_b32(void) MODE_ATTR
368 return svptrue_pat_b32(SV_VL1
);
371 // CHECK-LABEL: @test_svptrue_pat_b64(
372 // CHECK-NEXT: entry:
373 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 2)
374 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv2i1(<vscale x 2 x i1> [[TMP0]])
375 // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP1]]
377 // CPP-CHECK-LABEL: @_Z20test_svptrue_pat_b64v(
378 // CPP-CHECK-NEXT: entry:
379 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 2)
380 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv2i1(<vscale x 2 x i1> [[TMP0]])
381 // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP1]]
383 svbool_t
test_svptrue_pat_b64(void) MODE_ATTR
385 return svptrue_pat_b64(SV_VL2
);