1 // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
2 // REQUIRES: aarch64-registered-target
4 // RUN: %clang_cc1 -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
5 // RUN: %clang_cc1 -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
6 // RUN: %clang_cc1 -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
10 // CHECK-LABEL: @test_svread_ver_za8_u8_vg2(
12 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.ver.vg2.nxv16i8(i32 0, i32 [[BASE:%.*]])
13 // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
15 // CPP-CHECK-LABEL: @_Z26test_svread_ver_za8_u8_vg2j(
16 // CPP-CHECK-NEXT: entry:
17 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.ver.vg2.nxv16i8(i32 0, i32 [[BASE:%.*]])
18 // CPP-CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
20 svuint8x2_t
test_svread_ver_za8_u8_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
21 return svread_ver_za8_u8_vg2(0, base
);
24 // CHECK-LABEL: @test_svread_ver_za8_s8_vg2(
26 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.ver.vg2.nxv16i8(i32 0, i32 [[BASE:%.*]])
27 // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
29 // CPP-CHECK-LABEL: @_Z26test_svread_ver_za8_s8_vg2j(
30 // CPP-CHECK-NEXT: entry:
31 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.ver.vg2.nxv16i8(i32 0, i32 [[BASE:%.*]])
32 // CPP-CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
34 svint8x2_t
test_svread_ver_za8_s8_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
35 return svread_ver_za8_s8_vg2(0, base
);
38 // CHECK-LABEL: @test_svread_hor_za8_u8_vg2(
40 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.hor.vg2.nxv16i8(i32 0, i32 [[BASE:%.*]])
41 // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
43 // CPP-CHECK-LABEL: @_Z26test_svread_hor_za8_u8_vg2j(
44 // CPP-CHECK-NEXT: entry:
45 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.hor.vg2.nxv16i8(i32 0, i32 [[BASE:%.*]])
46 // CPP-CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
48 svuint8x2_t
test_svread_hor_za8_u8_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
49 return svread_hor_za8_u8_vg2(0, base
);
52 // CHECK-LABEL: @test_svread_hor_za8_s8_vg2(
54 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.hor.vg2.nxv16i8(i32 0, i32 [[BASE:%.*]])
55 // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
57 // CPP-CHECK-LABEL: @_Z26test_svread_hor_za8_s8_vg2j(
58 // CPP-CHECK-NEXT: entry:
59 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.hor.vg2.nxv16i8(i32 0, i32 [[BASE:%.*]])
60 // CPP-CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
62 svint8x2_t
test_svread_hor_za8_s8_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
63 return svread_hor_za8_s8_vg2(0, base
);
66 // CHECK-LABEL: @test_svread_hor_za8_u8_vg4(
68 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.hor.vg4.nxv16i8(i32 0, i32 [[BASE:%.*]])
69 // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
71 // CPP-CHECK-LABEL: @_Z26test_svread_hor_za8_u8_vg4j(
72 // CPP-CHECK-NEXT: entry:
73 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.hor.vg4.nxv16i8(i32 0, i32 [[BASE:%.*]])
74 // CPP-CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
76 svuint8x4_t
test_svread_hor_za8_u8_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
77 return svread_hor_za8_u8_vg4(0, base
);
80 // CHECK-LABEL: @test_svread_hor_za8_s8_vg4(
82 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.hor.vg4.nxv16i8(i32 0, i32 [[BASE:%.*]])
83 // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
85 // CPP-CHECK-LABEL: @_Z26test_svread_hor_za8_s8_vg4j(
86 // CPP-CHECK-NEXT: entry:
87 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.hor.vg4.nxv16i8(i32 0, i32 [[BASE:%.*]])
88 // CPP-CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
90 svint8x4_t
test_svread_hor_za8_s8_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
91 return svread_hor_za8_s8_vg4(0, base
);
94 // CHECK-LABEL: @test_svread_ver_za8_u8_vg4(
96 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.ver.vg4.nxv16i8(i32 0, i32 [[BASE:%.*]])
97 // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
99 // CPP-CHECK-LABEL: @_Z26test_svread_ver_za8_u8_vg4j(
100 // CPP-CHECK-NEXT: entry:
101 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.ver.vg4.nxv16i8(i32 0, i32 [[BASE:%.*]])
102 // CPP-CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
104 svuint8x4_t
test_svread_ver_za8_u8_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
105 return svread_ver_za8_u8_vg4(0, base
);
108 // CHECK-LABEL: @test_svread_ver_za8_s8_vg4(
109 // CHECK-NEXT: entry:
110 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.ver.vg4.nxv16i8(i32 0, i32 [[BASE:%.*]])
111 // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
113 // CPP-CHECK-LABEL: @_Z26test_svread_ver_za8_s8_vg4j(
114 // CPP-CHECK-NEXT: entry:
115 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.ver.vg4.nxv16i8(i32 0, i32 [[BASE:%.*]])
116 // CPP-CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
118 svint8x4_t
test_svread_ver_za8_s8_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
119 return svread_ver_za8_s8_vg4(0, base
);
122 // CHECK-LABEL: @test_svread_hor_za16_u16_vg2(
123 // CHECK-NEXT: entry:
124 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.hor.vg2.nxv8i16(i32 1, i32 [[BASE:%.*]])
125 // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
127 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za16_u16_vg2j(
128 // CPP-CHECK-NEXT: entry:
129 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.hor.vg2.nxv8i16(i32 1, i32 [[BASE:%.*]])
130 // CPP-CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
132 svuint16x2_t
test_svread_hor_za16_u16_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
133 return svread_hor_za16_u16_vg2(1, base
);
136 // CHECK-LABEL: @test_svread_hor_za16_bf16_vg2(
137 // CHECK-NEXT: entry:
138 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @llvm.aarch64.sme.read.hor.vg2.nxv8bf16(i32 1, i32 [[BASE:%.*]])
139 // CHECK-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]]
141 // CPP-CHECK-LABEL: @_Z29test_svread_hor_za16_bf16_vg2j(
142 // CPP-CHECK-NEXT: entry:
143 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @llvm.aarch64.sme.read.hor.vg2.nxv8bf16(i32 1, i32 [[BASE:%.*]])
144 // CPP-CHECK-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]]
146 svbfloat16x2_t
test_svread_hor_za16_bf16_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
147 return svread_hor_za16_bf16_vg2(1, base
);
150 // CHECK-LABEL: @test_svread_hor_za16_f16_vg2(
151 // CHECK-NEXT: entry:
152 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x half>, <vscale x 8 x half> } @llvm.aarch64.sme.read.hor.vg2.nxv8f16(i32 1, i32 [[BASE:%.*]])
153 // CHECK-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]]
155 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za16_f16_vg2j(
156 // CPP-CHECK-NEXT: entry:
157 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x half>, <vscale x 8 x half> } @llvm.aarch64.sme.read.hor.vg2.nxv8f16(i32 1, i32 [[BASE:%.*]])
158 // CPP-CHECK-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]]
160 svfloat16x2_t
test_svread_hor_za16_f16_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
161 return svread_hor_za16_f16_vg2(1, base
);
164 // CHECK-LABEL: @test_svread_hor_za16_s16_vg2(
165 // CHECK-NEXT: entry:
166 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.hor.vg2.nxv8i16(i32 1, i32 [[BASE:%.*]])
167 // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
169 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za16_s16_vg2j(
170 // CPP-CHECK-NEXT: entry:
171 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.hor.vg2.nxv8i16(i32 1, i32 [[BASE:%.*]])
172 // CPP-CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
174 svint16x2_t
test_svread_hor_za16_s16_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
175 return svread_hor_za16_s16_vg2(1, base
);
178 // CHECK-LABEL: @test_svread_ver_za16_u16_vg2(
179 // CHECK-NEXT: entry:
180 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.ver.vg2.nxv8i16(i32 1, i32 [[BASE:%.*]])
181 // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
183 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za16_u16_vg2j(
184 // CPP-CHECK-NEXT: entry:
185 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.ver.vg2.nxv8i16(i32 1, i32 [[BASE:%.*]])
186 // CPP-CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
188 svuint16x2_t
test_svread_ver_za16_u16_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
189 return svread_ver_za16_u16_vg2(1, base
);
192 // CHECK-LABEL: @test_svread_ver_za16_bf16_vg2(
193 // CHECK-NEXT: entry:
194 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @llvm.aarch64.sme.read.ver.vg2.nxv8bf16(i32 1, i32 [[BASE:%.*]])
195 // CHECK-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]]
197 // CPP-CHECK-LABEL: @_Z29test_svread_ver_za16_bf16_vg2j(
198 // CPP-CHECK-NEXT: entry:
199 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @llvm.aarch64.sme.read.ver.vg2.nxv8bf16(i32 1, i32 [[BASE:%.*]])
200 // CPP-CHECK-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]]
202 svbfloat16x2_t
test_svread_ver_za16_bf16_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
203 return svread_ver_za16_bf16_vg2(1, base
);
206 // CHECK-LABEL: @test_svread_ver_za16_f16_vg2(
207 // CHECK-NEXT: entry:
208 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x half>, <vscale x 8 x half> } @llvm.aarch64.sme.read.ver.vg2.nxv8f16(i32 1, i32 [[BASE:%.*]])
209 // CHECK-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]]
211 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za16_f16_vg2j(
212 // CPP-CHECK-NEXT: entry:
213 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x half>, <vscale x 8 x half> } @llvm.aarch64.sme.read.ver.vg2.nxv8f16(i32 1, i32 [[BASE:%.*]])
214 // CPP-CHECK-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]]
216 svfloat16x2_t
test_svread_ver_za16_f16_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
217 return svread_ver_za16_f16_vg2(1, base
);
220 // CHECK-LABEL: @test_svread_ver_za16_s16_vg2(
221 // CHECK-NEXT: entry:
222 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.ver.vg2.nxv8i16(i32 1, i32 [[BASE:%.*]])
223 // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
225 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za16_s16_vg2j(
226 // CPP-CHECK-NEXT: entry:
227 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.ver.vg2.nxv8i16(i32 1, i32 [[BASE:%.*]])
228 // CPP-CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
230 svint16x2_t
test_svread_ver_za16_s16_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
231 return svread_ver_za16_s16_vg2(1, base
);
234 // CHECK-LABEL: @test_svread_hor_za16_u16_vg4(
235 // CHECK-NEXT: entry:
236 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.hor.vg4.nxv8i16(i32 1, i32 [[BASE:%.*]])
237 // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
239 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za16_u16_vg4j(
240 // CPP-CHECK-NEXT: entry:
241 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.hor.vg4.nxv8i16(i32 1, i32 [[BASE:%.*]])
242 // CPP-CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
244 svuint16x4_t
test_svread_hor_za16_u16_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
245 return svread_hor_za16_u16_vg4(1, base
);
248 // CHECK-LABEL: @test_svread_hor_za16_bf16_vg4(
249 // CHECK-NEXT: entry:
250 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @llvm.aarch64.sme.read.hor.vg4.nxv8bf16(i32 1, i32 [[BASE:%.*]])
251 // CHECK-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]]
253 // CPP-CHECK-LABEL: @_Z29test_svread_hor_za16_bf16_vg4j(
254 // CPP-CHECK-NEXT: entry:
255 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @llvm.aarch64.sme.read.hor.vg4.nxv8bf16(i32 1, i32 [[BASE:%.*]])
256 // CPP-CHECK-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]]
258 svbfloat16x4_t
test_svread_hor_za16_bf16_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
259 return svread_hor_za16_bf16_vg4(1, base
);
262 // CHECK-LABEL: @test_svread_hor_za16_f16_vg4(
263 // CHECK-NEXT: entry:
264 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } @llvm.aarch64.sme.read.hor.vg4.nxv8f16(i32 1, i32 [[BASE:%.*]])
265 // CHECK-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]]
267 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za16_f16_vg4j(
268 // CPP-CHECK-NEXT: entry:
269 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } @llvm.aarch64.sme.read.hor.vg4.nxv8f16(i32 1, i32 [[BASE:%.*]])
270 // CPP-CHECK-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]]
272 svfloat16x4_t
test_svread_hor_za16_f16_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
273 return svread_hor_za16_f16_vg4(1, base
);
276 // CHECK-LABEL: @test_svread_hor_za16_s16_vg4(
277 // CHECK-NEXT: entry:
278 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.hor.vg4.nxv8i16(i32 1, i32 [[BASE:%.*]])
279 // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
281 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za16_s16_vg4j(
282 // CPP-CHECK-NEXT: entry:
283 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.hor.vg4.nxv8i16(i32 1, i32 [[BASE:%.*]])
284 // CPP-CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
286 svint16x4_t
test_svread_hor_za16_s16_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
287 return svread_hor_za16_s16_vg4(1, base
);
290 // CHECK-LABEL: @test_svread_ver_za16_u16_vg4(
291 // CHECK-NEXT: entry:
292 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.ver.vg4.nxv8i16(i32 1, i32 [[BASE:%.*]])
293 // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
295 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za16_u16_vg4j(
296 // CPP-CHECK-NEXT: entry:
297 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.ver.vg4.nxv8i16(i32 1, i32 [[BASE:%.*]])
298 // CPP-CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
300 svuint16x4_t
test_svread_ver_za16_u16_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
301 return svread_ver_za16_u16_vg4(1, base
);
304 // CHECK-LABEL: @test_svread_ver_za16_bf16_vg4(
305 // CHECK-NEXT: entry:
306 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @llvm.aarch64.sme.read.ver.vg4.nxv8bf16(i32 1, i32 [[BASE:%.*]])
307 // CHECK-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]]
309 // CPP-CHECK-LABEL: @_Z29test_svread_ver_za16_bf16_vg4j(
310 // CPP-CHECK-NEXT: entry:
311 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @llvm.aarch64.sme.read.ver.vg4.nxv8bf16(i32 1, i32 [[BASE:%.*]])
312 // CPP-CHECK-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]]
314 svbfloat16x4_t
test_svread_ver_za16_bf16_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
315 return svread_ver_za16_bf16_vg4(1, base
);
318 // CHECK-LABEL: @test_svread_ver_za16_f16_vg4(
319 // CHECK-NEXT: entry:
320 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } @llvm.aarch64.sme.read.ver.vg4.nxv8f16(i32 1, i32 [[BASE:%.*]])
321 // CHECK-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]]
323 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za16_f16_vg4j(
324 // CPP-CHECK-NEXT: entry:
325 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } @llvm.aarch64.sme.read.ver.vg4.nxv8f16(i32 1, i32 [[BASE:%.*]])
326 // CPP-CHECK-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]]
328 svfloat16x4_t
test_svread_ver_za16_f16_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
329 return svread_ver_za16_f16_vg4(1, base
);
332 // CHECK-LABEL: @test_svread_ver_za16_s16_vg4(
333 // CHECK-NEXT: entry:
334 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.ver.vg4.nxv8i16(i32 1, i32 [[BASE:%.*]])
335 // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
337 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za16_s16_vg4j(
338 // CPP-CHECK-NEXT: entry:
339 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.ver.vg4.nxv8i16(i32 1, i32 [[BASE:%.*]])
340 // CPP-CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
342 svint16x4_t
test_svread_ver_za16_s16_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
343 return svread_ver_za16_s16_vg4(1, base
);
346 // CHECK-LABEL: @test_svread_hor_za32_u32_vg2(
347 // CHECK-NEXT: entry:
348 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.hor.vg2.nxv4i32(i32 3, i32 [[BASE:%.*]])
349 // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
351 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za32_u32_vg2j(
352 // CPP-CHECK-NEXT: entry:
353 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.hor.vg2.nxv4i32(i32 3, i32 [[BASE:%.*]])
354 // CPP-CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
356 svuint32x2_t
test_svread_hor_za32_u32_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
357 return svread_hor_za32_u32_vg2(3, base
);
360 // CHECK-LABEL: @test_svread_hor_za32_f32_vg2(
361 // CHECK-NEXT: entry:
362 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sme.read.hor.vg2.nxv4f32(i32 3, i32 [[BASE:%.*]])
363 // CHECK-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]]
365 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za32_f32_vg2j(
366 // CPP-CHECK-NEXT: entry:
367 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sme.read.hor.vg2.nxv4f32(i32 3, i32 [[BASE:%.*]])
368 // CPP-CHECK-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]]
370 svfloat32x2_t
test_svread_hor_za32_f32_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
371 return svread_hor_za32_f32_vg2(3, base
);
374 // CHECK-LABEL: @test_svread_hor_za32_s32_vg2(
375 // CHECK-NEXT: entry:
376 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.hor.vg2.nxv4i32(i32 3, i32 [[BASE:%.*]])
377 // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
379 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za32_s32_vg2j(
380 // CPP-CHECK-NEXT: entry:
381 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.hor.vg2.nxv4i32(i32 3, i32 [[BASE:%.*]])
382 // CPP-CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
384 svint32x2_t
test_svread_hor_za32_s32_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
385 return svread_hor_za32_s32_vg2(3, base
);
388 // CHECK-LABEL: @test_svread_ver_za32_u32_vg2(
389 // CHECK-NEXT: entry:
390 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.ver.vg2.nxv4i32(i32 3, i32 [[BASE:%.*]])
391 // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
393 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za32_u32_vg2j(
394 // CPP-CHECK-NEXT: entry:
395 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.ver.vg2.nxv4i32(i32 3, i32 [[BASE:%.*]])
396 // CPP-CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
398 svuint32x2_t
test_svread_ver_za32_u32_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
399 return svread_ver_za32_u32_vg2(3, base
);
402 // CHECK-LABEL: @test_svread_ver_za32_f32_vg2(
403 // CHECK-NEXT: entry:
404 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sme.read.ver.vg2.nxv4f32(i32 3, i32 [[BASE:%.*]])
405 // CHECK-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]]
407 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za32_f32_vg2j(
408 // CPP-CHECK-NEXT: entry:
409 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sme.read.ver.vg2.nxv4f32(i32 3, i32 [[BASE:%.*]])
410 // CPP-CHECK-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]]
412 svfloat32x2_t
test_svread_ver_za32_f32_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
413 return svread_ver_za32_f32_vg2(3, base
);
416 // CHECK-LABEL: @test_svread_ver_za32_s32_vg2(
417 // CHECK-NEXT: entry:
418 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.ver.vg2.nxv4i32(i32 3, i32 [[BASE:%.*]])
419 // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
421 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za32_s32_vg2j(
422 // CPP-CHECK-NEXT: entry:
423 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.ver.vg2.nxv4i32(i32 3, i32 [[BASE:%.*]])
424 // CPP-CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
426 svint32x2_t
test_svread_ver_za32_s32_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
427 return svread_ver_za32_s32_vg2(3, base
);
430 // CHECK-LABEL: @test_svread_hor_za32_u32_vg4(
431 // CHECK-NEXT: entry:
432 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.hor.vg4.nxv4i32(i32 3, i32 [[BASE:%.*]])
433 // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
435 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za32_u32_vg4j(
436 // CPP-CHECK-NEXT: entry:
437 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.hor.vg4.nxv4i32(i32 3, i32 [[BASE:%.*]])
438 // CPP-CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
440 svuint32x4_t
test_svread_hor_za32_u32_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
441 return svread_hor_za32_u32_vg4(3, base
);
444 // CHECK-LABEL: @test_svread_hor_za32_f32_vg4(
445 // CHECK-NEXT: entry:
446 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sme.read.hor.vg4.nxv4f32(i32 3, i32 [[BASE:%.*]])
447 // CHECK-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]]
449 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za32_f32_vg4j(
450 // CPP-CHECK-NEXT: entry:
451 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sme.read.hor.vg4.nxv4f32(i32 3, i32 [[BASE:%.*]])
452 // CPP-CHECK-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]]
454 svfloat32x4_t
test_svread_hor_za32_f32_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
455 return svread_hor_za32_f32_vg4(3, base
);
458 // CHECK-LABEL: @test_svread_hor_za32_s32_vg4(
459 // CHECK-NEXT: entry:
460 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.hor.vg4.nxv4i32(i32 3, i32 [[BASE:%.*]])
461 // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
463 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za32_s32_vg4j(
464 // CPP-CHECK-NEXT: entry:
465 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.hor.vg4.nxv4i32(i32 3, i32 [[BASE:%.*]])
466 // CPP-CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
468 svint32x4_t
test_svread_hor_za32_s32_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
469 return svread_hor_za32_s32_vg4(3, base
);
472 // CHECK-LABEL: @test_svread_ver_za32_u32_vg4(
473 // CHECK-NEXT: entry:
474 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.ver.vg4.nxv4i32(i32 3, i32 [[BASE:%.*]])
475 // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
477 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za32_u32_vg4j(
478 // CPP-CHECK-NEXT: entry:
479 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.ver.vg4.nxv4i32(i32 3, i32 [[BASE:%.*]])
480 // CPP-CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
482 svuint32x4_t
test_svread_ver_za32_u32_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
483 return svread_ver_za32_u32_vg4(3, base
);
486 // CHECK-LABEL: @test_svread_ver_za32_f32_vg4(
487 // CHECK-NEXT: entry:
488 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sme.read.ver.vg4.nxv4f32(i32 3, i32 [[BASE:%.*]])
489 // CHECK-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]]
491 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za32_f32_vg4j(
492 // CPP-CHECK-NEXT: entry:
493 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sme.read.ver.vg4.nxv4f32(i32 3, i32 [[BASE:%.*]])
494 // CPP-CHECK-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]]
496 svfloat32x4_t
test_svread_ver_za32_f32_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
497 return svread_ver_za32_f32_vg4(3, base
);
500 // CHECK-LABEL: @test_svread_ver_za32_s32_vg4(
501 // CHECK-NEXT: entry:
502 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.ver.vg4.nxv4i32(i32 3, i32 [[BASE:%.*]])
503 // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
505 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za32_s32_vg4j(
506 // CPP-CHECK-NEXT: entry:
507 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.ver.vg4.nxv4i32(i32 3, i32 [[BASE:%.*]])
508 // CPP-CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
510 svint32x4_t
test_svread_ver_za32_s32_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
511 return svread_ver_za32_s32_vg4(3, base
);
514 // CHECK-LABEL: @test_svread_hor_za64_u64_vg2(
515 // CHECK-NEXT: entry:
516 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.hor.vg2.nxv2i64(i32 7, i32 [[BASE:%.*]])
517 // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
519 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za64_u64_vg2j(
520 // CPP-CHECK-NEXT: entry:
521 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.hor.vg2.nxv2i64(i32 7, i32 [[BASE:%.*]])
522 // CPP-CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
524 svuint64x2_t
test_svread_hor_za64_u64_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
525 return svread_hor_za64_u64_vg2(7, base
);
528 // CHECK-LABEL: @test_svread_hor_za64_f64_vg2(
529 // CHECK-NEXT: entry:
530 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x double>, <vscale x 2 x double> } @llvm.aarch64.sme.read.hor.vg2.nxv2f64(i32 7, i32 [[BASE:%.*]])
531 // CHECK-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]]
533 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za64_f64_vg2j(
534 // CPP-CHECK-NEXT: entry:
535 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x double>, <vscale x 2 x double> } @llvm.aarch64.sme.read.hor.vg2.nxv2f64(i32 7, i32 [[BASE:%.*]])
536 // CPP-CHECK-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]]
538 svfloat64x2_t
test_svread_hor_za64_f64_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
539 return svread_hor_za64_f64_vg2(7, base
);
542 // CHECK-LABEL: @test_svread_hor_za64_s64_vg2(
543 // CHECK-NEXT: entry:
544 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.hor.vg2.nxv2i64(i32 7, i32 [[BASE:%.*]])
545 // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
547 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za64_s64_vg2j(
548 // CPP-CHECK-NEXT: entry:
549 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.hor.vg2.nxv2i64(i32 7, i32 [[BASE:%.*]])
550 // CPP-CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
552 svint64x2_t
test_svread_hor_za64_s64_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
553 return svread_hor_za64_s64_vg2(7, base
);
556 // CHECK-LABEL: @test_svread_ver_za64_u64_vg2(
557 // CHECK-NEXT: entry:
558 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.ver.vg2.nxv2i64(i32 7, i32 [[BASE:%.*]])
559 // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
561 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za64_u64_vg2j(
562 // CPP-CHECK-NEXT: entry:
563 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.ver.vg2.nxv2i64(i32 7, i32 [[BASE:%.*]])
564 // CPP-CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
566 svuint64x2_t
test_svread_ver_za64_u64_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
567 return svread_ver_za64_u64_vg2(7, base
);
570 // CHECK-LABEL: @test_svread_ver_za64_f64_vg2(
571 // CHECK-NEXT: entry:
572 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x double>, <vscale x 2 x double> } @llvm.aarch64.sme.read.ver.vg2.nxv2f64(i32 7, i32 [[BASE:%.*]])
573 // CHECK-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]]
575 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za64_f64_vg2j(
576 // CPP-CHECK-NEXT: entry:
577 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x double>, <vscale x 2 x double> } @llvm.aarch64.sme.read.ver.vg2.nxv2f64(i32 7, i32 [[BASE:%.*]])
578 // CPP-CHECK-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]]
580 svfloat64x2_t
test_svread_ver_za64_f64_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
581 return svread_ver_za64_f64_vg2(7, base
);
585 // CHECK-LABEL: @test_svread_ver_za64_s64_vg2(
586 // CHECK-NEXT: entry:
587 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.ver.vg2.nxv2i64(i32 7, i32 [[BASE:%.*]])
588 // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
590 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za64_s64_vg2j(
591 // CPP-CHECK-NEXT: entry:
592 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.ver.vg2.nxv2i64(i32 7, i32 [[BASE:%.*]])
593 // CPP-CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
595 svint64x2_t
test_svread_ver_za64_s64_vg2(uint32_t base
) __arm_streaming
__arm_in("za") {
596 return svread_ver_za64_s64_vg2(7, base
);
599 // CHECK-LABEL: @test_svread_hor_za64_u64_vg4(
600 // CHECK-NEXT: entry:
601 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.hor.vg4.nxv2i64(i32 7, i32 [[BASE:%.*]])
602 // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
604 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za64_u64_vg4j(
605 // CPP-CHECK-NEXT: entry:
606 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.hor.vg4.nxv2i64(i32 7, i32 [[BASE:%.*]])
607 // CPP-CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
609 svuint64x4_t
test_svread_hor_za64_u64_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
610 return svread_hor_za64_u64_vg4(7, base
);
613 // CHECK-LABEL: @test_svread_hor_za64_f64_vg4(
614 // CHECK-NEXT: entry:
615 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } @llvm.aarch64.sme.read.hor.vg4.nxv2f64(i32 7, i32 [[BASE:%.*]])
616 // CHECK-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]]
618 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za64_f64_vg4j(
619 // CPP-CHECK-NEXT: entry:
620 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } @llvm.aarch64.sme.read.hor.vg4.nxv2f64(i32 7, i32 [[BASE:%.*]])
621 // CPP-CHECK-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]]
623 svfloat64x4_t
test_svread_hor_za64_f64_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
624 return svread_hor_za64_f64_vg4(7, base
);
627 // CHECK-LABEL: @test_svread_hor_za64_s64_vg4(
628 // CHECK-NEXT: entry:
629 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.hor.vg4.nxv2i64(i32 7, i32 [[BASE:%.*]])
630 // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
632 // CPP-CHECK-LABEL: @_Z28test_svread_hor_za64_s64_vg4j(
633 // CPP-CHECK-NEXT: entry:
634 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.hor.vg4.nxv2i64(i32 7, i32 [[BASE:%.*]])
635 // CPP-CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
637 svint64x4_t
test_svread_hor_za64_s64_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
638 return svread_hor_za64_s64_vg4(7, base
);
641 // CHECK-LABEL: @test_svread_ver_za64_u64_vg4(
642 // CHECK-NEXT: entry:
643 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.ver.vg4.nxv2i64(i32 7, i32 [[BASE:%.*]])
644 // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
646 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za64_u64_vg4j(
647 // CPP-CHECK-NEXT: entry:
648 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.ver.vg4.nxv2i64(i32 7, i32 [[BASE:%.*]])
649 // CPP-CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
651 svuint64x4_t
test_svread_ver_za64_u64_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
652 return svread_ver_za64_u64_vg4(7, base
);
655 // CHECK-LABEL: @test_svread_ver_za64_f64_vg4(
656 // CHECK-NEXT: entry:
657 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } @llvm.aarch64.sme.read.ver.vg4.nxv2f64(i32 7, i32 [[BASE:%.*]])
658 // CHECK-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]]
660 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za64_f64_vg4j(
661 // CPP-CHECK-NEXT: entry:
662 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } @llvm.aarch64.sme.read.ver.vg4.nxv2f64(i32 7, i32 [[BASE:%.*]])
663 // CPP-CHECK-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]]
665 svfloat64x4_t
test_svread_ver_za64_f64_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
666 return svread_ver_za64_f64_vg4(7, base
);
669 // CHECK-LABEL: @test_svread_ver_za64_s64_vg4(
670 // CHECK-NEXT: entry:
671 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.ver.vg4.nxv2i64(i32 7, i32 [[BASE:%.*]])
672 // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
674 // CPP-CHECK-LABEL: @_Z28test_svread_ver_za64_s64_vg4j(
675 // CPP-CHECK-NEXT: entry:
676 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.ver.vg4.nxv2i64(i32 7, i32 [[BASE:%.*]])
677 // CPP-CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
679 svint64x4_t
test_svread_ver_za64_s64_vg4(uint32_t base
) __arm_streaming
__arm_in("za") {
680 return svread_ver_za64_s64_vg4(7, base
);
683 // CHECK-LABEL: @test_svread_za8_s8_vg1x2(
684 // CHECK-NEXT: entry:
685 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.vg1x2.nxv16i8(i32 [[BASE:%.*]])
686 // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
688 // CPP-CHECK-LABEL: @_Z24test_svread_za8_s8_vg1x2j(
689 // CPP-CHECK-NEXT: entry:
690 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.vg1x2.nxv16i8(i32 [[BASE:%.*]])
691 // CPP-CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
693 svint8x2_t
test_svread_za8_s8_vg1x2(uint32_t base
) __arm_streaming
__arm_in("za") {
694 return svread_za8_s8_vg1x2(base
);
697 // CHECK-LABEL: @test_svread_za8_u8_vg1x2(
698 // CHECK-NEXT: entry:
699 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.vg1x2.nxv16i8(i32 [[BASE:%.*]])
700 // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
702 // CPP-CHECK-LABEL: @_Z24test_svread_za8_u8_vg1x2j(
703 // CPP-CHECK-NEXT: entry:
704 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.vg1x2.nxv16i8(i32 [[BASE:%.*]])
705 // CPP-CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
707 svuint8x2_t
test_svread_za8_u8_vg1x2(uint32_t base
) __arm_streaming
__arm_in("za") {
708 return svread_za8_u8_vg1x2(base
);
711 // CHECK-LABEL: @test_svread_za16_s16_vg1x2(
712 // CHECK-NEXT: entry:
713 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.vg1x2.nxv8i16(i32 [[BASE:%.*]])
714 // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
716 // CPP-CHECK-LABEL: @_Z26test_svread_za16_s16_vg1x2j(
717 // CPP-CHECK-NEXT: entry:
718 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.vg1x2.nxv8i16(i32 [[BASE:%.*]])
719 // CPP-CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
721 svint16x2_t
test_svread_za16_s16_vg1x2(uint32_t base
) __arm_streaming
__arm_in("za") {
722 return svread_za16_s16_vg1x2(base
);
725 // CHECK-LABEL: @test_svread_za16_u16_vg1x2(
726 // CHECK-NEXT: entry:
727 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.vg1x2.nxv8i16(i32 [[BASE:%.*]])
728 // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
730 // CPP-CHECK-LABEL: @_Z26test_svread_za16_u16_vg1x2j(
731 // CPP-CHECK-NEXT: entry:
732 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.vg1x2.nxv8i16(i32 [[BASE:%.*]])
733 // CPP-CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
735 svuint16x2_t
test_svread_za16_u16_vg1x2(uint32_t base
) __arm_streaming
__arm_in("za") {
736 return svread_za16_u16_vg1x2(base
);
739 // CHECK-LABEL: @test_svread_za16_bf16_vg1x2(
740 // CHECK-NEXT: entry:
741 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @llvm.aarch64.sme.read.vg1x2.nxv8bf16(i32 [[BASE:%.*]])
742 // CHECK-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]]
744 // CPP-CHECK-LABEL: @_Z27test_svread_za16_bf16_vg1x2j(
745 // CPP-CHECK-NEXT: entry:
746 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @llvm.aarch64.sme.read.vg1x2.nxv8bf16(i32 [[BASE:%.*]])
747 // CPP-CHECK-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]]
749 svbfloat16x2_t
test_svread_za16_bf16_vg1x2(uint32_t base
) __arm_streaming
__arm_in("za") {
750 return svread_za16_bf16_vg1x2(base
);
753 // CHECK-LABEL: @test_svread_za16_f16_vg1x2(
754 // CHECK-NEXT: entry:
755 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x half>, <vscale x 8 x half> } @llvm.aarch64.sme.read.vg1x2.nxv8f16(i32 [[BASE:%.*]])
756 // CHECK-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]]
758 // CPP-CHECK-LABEL: @_Z26test_svread_za16_f16_vg1x2j(
759 // CPP-CHECK-NEXT: entry:
760 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x half>, <vscale x 8 x half> } @llvm.aarch64.sme.read.vg1x2.nxv8f16(i32 [[BASE:%.*]])
761 // CPP-CHECK-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]]
763 svfloat16x2_t
test_svread_za16_f16_vg1x2(uint32_t base
) __arm_streaming
__arm_in("za") {
764 return svread_za16_f16_vg1x2(base
);
767 // CHECK-LABEL: @test_svread_za32_s32_vg1x2(
768 // CHECK-NEXT: entry:
769 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.vg1x2.nxv4i32(i32 [[BASE:%.*]])
770 // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
772 // CPP-CHECK-LABEL: @_Z26test_svread_za32_s32_vg1x2j(
773 // CPP-CHECK-NEXT: entry:
774 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.vg1x2.nxv4i32(i32 [[BASE:%.*]])
775 // CPP-CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
777 svint32x2_t
test_svread_za32_s32_vg1x2(uint32_t base
) __arm_streaming
__arm_in("za") {
778 return svread_za32_s32_vg1x2(base
);
781 // CHECK-LABEL: @test_svread_za32_u32_vg1x2(
782 // CHECK-NEXT: entry:
783 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.vg1x2.nxv4i32(i32 [[BASE:%.*]])
784 // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
786 // CPP-CHECK-LABEL: @_Z26test_svread_za32_u32_vg1x2j(
787 // CPP-CHECK-NEXT: entry:
788 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.vg1x2.nxv4i32(i32 [[BASE:%.*]])
789 // CPP-CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
791 svuint32x2_t
test_svread_za32_u32_vg1x2(uint32_t base
) __arm_streaming
__arm_in("za") {
792 return svread_za32_u32_vg1x2(base
);
795 // CHECK-LABEL: @test_svread_za32_f32_vg1x2(
796 // CHECK-NEXT: entry:
797 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sme.read.vg1x2.nxv4f32(i32 [[BASE:%.*]])
798 // CHECK-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]]
800 // CPP-CHECK-LABEL: @_Z26test_svread_za32_f32_vg1x2j(
801 // CPP-CHECK-NEXT: entry:
802 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sme.read.vg1x2.nxv4f32(i32 [[BASE:%.*]])
803 // CPP-CHECK-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]]
805 svfloat32x2_t
test_svread_za32_f32_vg1x2(uint32_t base
) __arm_streaming
__arm_in("za") {
806 return svread_za32_f32_vg1x2(base
);
809 // CHECK-LABEL: @test_svread_za64_u64_vg1x2(
810 // CHECK-NEXT: entry:
811 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.vg1x2.nxv2i64(i32 [[BASE:%.*]])
812 // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
814 // CPP-CHECK-LABEL: @_Z26test_svread_za64_u64_vg1x2j(
815 // CPP-CHECK-NEXT: entry:
816 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.vg1x2.nxv2i64(i32 [[BASE:%.*]])
817 // CPP-CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
819 svuint64x2_t
test_svread_za64_u64_vg1x2(uint32_t base
) __arm_streaming
__arm_in("za") {
820 return svread_za64_u64_vg1x2(base
);
823 // CHECK-LABEL: @test_svread_za64_f64_vg1x2(
824 // CHECK-NEXT: entry:
825 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x double>, <vscale x 2 x double> } @llvm.aarch64.sme.read.vg1x2.nxv2f64(i32 [[BASE:%.*]])
826 // CHECK-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]]
828 // CPP-CHECK-LABEL: @_Z26test_svread_za64_f64_vg1x2j(
829 // CPP-CHECK-NEXT: entry:
830 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x double>, <vscale x 2 x double> } @llvm.aarch64.sme.read.vg1x2.nxv2f64(i32 [[BASE:%.*]])
831 // CPP-CHECK-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]]
833 svfloat64x2_t
test_svread_za64_f64_vg1x2(uint32_t base
) __arm_streaming
__arm_in("za") {
834 return svread_za64_f64_vg1x2(base
);
837 // CHECK-LABEL: @test_svread_za64_s64_vg1x2(
838 // CHECK-NEXT: entry:
839 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.vg1x2.nxv2i64(i32 [[BASE:%.*]])
840 // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
842 // CPP-CHECK-LABEL: @_Z26test_svread_za64_s64_vg1x2j(
843 // CPP-CHECK-NEXT: entry:
844 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.vg1x2.nxv2i64(i32 [[BASE:%.*]])
845 // CPP-CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
847 svint64x2_t
test_svread_za64_s64_vg1x2(uint32_t base
) __arm_streaming
__arm_in("za") {
848 return svread_za64_s64_vg1x2(base
);
851 // CHECK-LABEL: @test_svread_za8_s8_vg1x4(
852 // CHECK-NEXT: entry:
853 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.vg1x4.nxv16i8(i32 [[BASE:%.*]])
854 // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
856 // CPP-CHECK-LABEL: @_Z24test_svread_za8_s8_vg1x4j(
857 // CPP-CHECK-NEXT: entry:
858 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.vg1x4.nxv16i8(i32 [[BASE:%.*]])
859 // CPP-CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
861 svint8x4_t
test_svread_za8_s8_vg1x4(uint32_t base
) __arm_streaming
__arm_in("za") {
862 return svread_za8_s8_vg1x4(base
);
865 // CHECK-LABEL: @test_svread_za8_u8_vg1x4(
866 // CHECK-NEXT: entry:
867 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.vg1x4.nxv16i8(i32 [[BASE:%.*]])
868 // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
870 // CPP-CHECK-LABEL: @_Z24test_svread_za8_u8_vg1x4j(
871 // CPP-CHECK-NEXT: entry:
872 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @llvm.aarch64.sme.read.vg1x4.nxv16i8(i32 [[BASE:%.*]])
873 // CPP-CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]]
875 svuint8x4_t
test_svread_za8_u8_vg1x4(uint32_t base
) __arm_streaming
__arm_in("za") {
876 return svread_za8_u8_vg1x4(base
);
879 // CHECK-LABEL: @test_svread_za16_s16_vg1x4(
880 // CHECK-NEXT: entry:
881 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.vg1x4.nxv8i16(i32 [[BASE:%.*]])
882 // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
884 // CPP-CHECK-LABEL: @_Z26test_svread_za16_s16_vg1x4j(
885 // CPP-CHECK-NEXT: entry:
886 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.vg1x4.nxv8i16(i32 [[BASE:%.*]])
887 // CPP-CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
889 svint16x4_t
test_svread_za16_s16_vg1x4(uint32_t base
) __arm_streaming
__arm_in("za") {
890 return svread_za16_s16_vg1x4(base
);
893 // CHECK-LABEL: @test_svread_za16_u16_vg1x4(
894 // CHECK-NEXT: entry:
895 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.vg1x4.nxv8i16(i32 [[BASE:%.*]])
896 // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
898 // CPP-CHECK-LABEL: @_Z26test_svread_za16_u16_vg1x4j(
899 // CPP-CHECK-NEXT: entry:
900 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @llvm.aarch64.sme.read.vg1x4.nxv8i16(i32 [[BASE:%.*]])
901 // CPP-CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]]
903 svuint16x4_t
test_svread_za16_u16_vg1x4(uint32_t base
) __arm_streaming
__arm_in("za") {
904 return svread_za16_u16_vg1x4(base
);
907 // CHECK-LABEL: @test_svread_za16_bf16_vg1x4(
908 // CHECK-NEXT: entry:
909 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @llvm.aarch64.sme.read.vg1x4.nxv8bf16(i32 [[BASE:%.*]])
910 // CHECK-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]]
912 // CPP-CHECK-LABEL: @_Z27test_svread_za16_bf16_vg1x4j(
913 // CPP-CHECK-NEXT: entry:
914 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @llvm.aarch64.sme.read.vg1x4.nxv8bf16(i32 [[BASE:%.*]])
915 // CPP-CHECK-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]]
917 svbfloat16x4_t
test_svread_za16_bf16_vg1x4(uint32_t base
) __arm_streaming
__arm_in("za") {
918 return svread_za16_bf16_vg1x4(base
);
921 // CHECK-LABEL: @test_svread_za16_f16_vg1x4(
922 // CHECK-NEXT: entry:
923 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } @llvm.aarch64.sme.read.vg1x4.nxv8f16(i32 [[BASE:%.*]])
924 // CHECK-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]]
926 // CPP-CHECK-LABEL: @_Z26test_svread_za16_f16_vg1x4j(
927 // CPP-CHECK-NEXT: entry:
928 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } @llvm.aarch64.sme.read.vg1x4.nxv8f16(i32 [[BASE:%.*]])
929 // CPP-CHECK-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]]
931 svfloat16x4_t
test_svread_za16_f16_vg1x4(uint32_t base
) __arm_streaming
__arm_in("za") {
932 return svread_za16_f16_vg1x4(base
);
935 // CHECK-LABEL: @test_svread_za32_s32_vg1x4(
936 // CHECK-NEXT: entry:
937 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.vg1x4.nxv4i32(i32 [[BASE:%.*]])
938 // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
940 // CPP-CHECK-LABEL: @_Z26test_svread_za32_s32_vg1x4j(
941 // CPP-CHECK-NEXT: entry:
942 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.vg1x4.nxv4i32(i32 [[BASE:%.*]])
943 // CPP-CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
945 svint32x4_t
test_svread_za32_s32_vg1x4(uint32_t base
) __arm_streaming
__arm_in("za") {
946 return svread_za32_s32_vg1x4(base
);
949 // CHECK-LABEL: @test_svread_za32_u32_vg1x4(
950 // CHECK-NEXT: entry:
951 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.vg1x4.nxv4i32(i32 [[BASE:%.*]])
952 // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
954 // CPP-CHECK-LABEL: @_Z26test_svread_za32_u32_vg1x4j(
955 // CPP-CHECK-NEXT: entry:
956 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.aarch64.sme.read.vg1x4.nxv4i32(i32 [[BASE:%.*]])
957 // CPP-CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]]
959 svuint32x4_t
test_svread_za32_u32_vg1x4(uint32_t base
) __arm_streaming
__arm_in("za") {
960 return svread_za32_u32_vg1x4(base
);
963 // CHECK-LABEL: @test_svread_za32_f32_vg1x4(
964 // CHECK-NEXT: entry:
965 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sme.read.vg1x4.nxv4f32(i32 [[BASE:%.*]])
966 // CHECK-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]]
968 // CPP-CHECK-LABEL: @_Z26test_svread_za32_f32_vg1x4j(
969 // CPP-CHECK-NEXT: entry:
970 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sme.read.vg1x4.nxv4f32(i32 [[BASE:%.*]])
971 // CPP-CHECK-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]]
973 svfloat32x4_t
test_svread_za32_f32_vg1x4(uint32_t base
) __arm_streaming
__arm_in("za") {
974 return svread_za32_f32_vg1x4(base
);
977 // CHECK-LABEL: @test_svread_za64_u64_vg1x4(
978 // CHECK-NEXT: entry:
979 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.vg1x4.nxv2i64(i32 [[BASE:%.*]])
980 // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
982 // CPP-CHECK-LABEL: @_Z26test_svread_za64_u64_vg1x4j(
983 // CPP-CHECK-NEXT: entry:
984 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.vg1x4.nxv2i64(i32 [[BASE:%.*]])
985 // CPP-CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
987 svuint64x4_t
test_svread_za64_u64_vg1x4(uint32_t base
) __arm_streaming
__arm_in("za") {
988 return svread_za64_u64_vg1x4(base
);
991 // CHECK-LABEL: @test_svread_za64_f64_vg1x4(
992 // CHECK-NEXT: entry:
993 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } @llvm.aarch64.sme.read.vg1x4.nxv2f64(i32 [[BASE:%.*]])
994 // CHECK-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]]
996 // CPP-CHECK-LABEL: @_Z26test_svread_za64_f64_vg1x4j(
997 // CPP-CHECK-NEXT: entry:
998 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } @llvm.aarch64.sme.read.vg1x4.nxv2f64(i32 [[BASE:%.*]])
999 // CPP-CHECK-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]]
1001 svfloat64x4_t
test_svread_za64_f64_vg1x4(uint32_t base
) __arm_streaming
__arm_in("za") {
1002 return svread_za64_f64_vg1x4(base
);
1005 // CHECK-LABEL: @test_svread_za64_s64_vg1x4(
1006 // CHECK-NEXT: entry:
1007 // CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.vg1x4.nxv2i64(i32 [[BASE:%.*]])
1008 // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
1010 // CPP-CHECK-LABEL: @_Z26test_svread_za64_s64_vg1x4j(
1011 // CPP-CHECK-NEXT: entry:
1012 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @llvm.aarch64.sme.read.vg1x4.nxv2i64(i32 [[BASE:%.*]])
1013 // CPP-CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]]
1015 svint64x4_t
test_svread_za64_s64_vg1x4(uint32_t base
) __arm_streaming
__arm_in("za") {
1016 return svread_za64_s64_vg1x4(base
);