1 // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
2 // REQUIRES: aarch64-registered-target
3 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s
4 // RUN: %clang_cc1 -DTUPLE=x2 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE2
5 // RUN: %clang_cc1 -DTUPLE=x3 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE3
6 // RUN: %clang_cc1 -DTUPLE=x4 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE4
7 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
8 // RUN: %clang_cc1 -DTUPLE=x2 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE2
9 // RUN: %clang_cc1 -DTUPLE=x3 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE3
10 // RUN: %clang_cc1 -DTUPLE=x4 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE4
11 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s
12 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -DTUPLE=x2 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE2
13 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -DTUPLE=x3 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE3
14 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -DTUPLE=x4 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE4
15 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
16 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -DTUPLE=x2 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE2
17 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -DTUPLE=x3 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE3
18 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -DTUPLE=x4 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE4
19 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
24 #define TYPE_1(base,tuple) base ## tuple ## _t
25 #define TYPE_0(base,tuple) TYPE_1(base,tuple)
26 #define TYPE(base) TYPE_0(base,TUPLE)
28 #define TYPE(base) base ## _t
31 #ifdef SVE_OVERLOADED_FORMS
32 #define SVE_ACLE_FUNC(A1,A2_UNUSED) A1
35 #define SVE_ACLE_FUNC_1(A1,A2,T) A1##A2##_##T
36 #define SVE_ACLE_FUNC_0(A1,A2,T) SVE_ACLE_FUNC_1(A1,A2,T)
37 #define SVE_ACLE_FUNC(A1,A2) SVE_ACLE_FUNC_0(A1,A2,TUPLE)
39 #define SVE_ACLE_FUNC(A1,A2) A1##A2
43 // CHECK-LABEL: @test_svreinterpret_s8_s8(
45 // CHECK-NEXT: ret <vscale x 16 x i8> [[OP:%.*]]
47 // TUPLE2-LABEL: @test_svreinterpret_s8_s8(
48 // TUPLE2-NEXT: entry:
49 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[OP:%.*]]
51 // TUPLE3-LABEL: @test_svreinterpret_s8_s8(
52 // TUPLE3-NEXT: entry:
53 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[OP:%.*]]
55 // TUPLE4-LABEL: @test_svreinterpret_s8_s8(
56 // TUPLE4-NEXT: entry:
57 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[OP:%.*]]
59 // CPP-CHECK-LABEL: @_Z24test_svreinterpret_s8_s8u10__SVInt8_t(
60 // CPP-CHECK-NEXT: entry:
61 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[OP:%.*]]
63 // CPP-TUPLE2-LABEL: @_Z24test_svreinterpret_s8_s810svint8x2_t(
64 // CPP-TUPLE2-NEXT: entry:
65 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[OP:%.*]]
67 // CPP-TUPLE3-LABEL: @_Z24test_svreinterpret_s8_s810svint8x3_t(
68 // CPP-TUPLE3-NEXT: entry:
69 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[OP:%.*]]
71 // CPP-TUPLE4-LABEL: @_Z24test_svreinterpret_s8_s810svint8x4_t(
72 // CPP-TUPLE4-NEXT: entry:
73 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[OP:%.*]]
75 TYPE(svint8
) test_svreinterpret_s8_s8(TYPE(svint8
) op
)
77 return SVE_ACLE_FUNC(svreinterpret_s8
,_s8
)(op
);
80 // CHECK-LABEL: @test_svreinterpret_s8_s16(
82 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 16 x i8>
83 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
85 // TUPLE2-LABEL: @test_svreinterpret_s8_s16(
86 // TUPLE2-NEXT: entry:
87 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 32 x i8>
88 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
90 // TUPLE3-LABEL: @test_svreinterpret_s8_s16(
91 // TUPLE3-NEXT: entry:
92 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 48 x i8>
93 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
95 // TUPLE4-LABEL: @test_svreinterpret_s8_s16(
96 // TUPLE4-NEXT: entry:
97 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 64 x i8>
98 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
100 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_s16u11__SVInt16_t(
101 // CPP-CHECK-NEXT: entry:
102 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 16 x i8>
103 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
105 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_s1611svint16x2_t(
106 // CPP-TUPLE2-NEXT: entry:
107 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 32 x i8>
108 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
110 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_s1611svint16x3_t(
111 // CPP-TUPLE3-NEXT: entry:
112 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 48 x i8>
113 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
115 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_s1611svint16x4_t(
116 // CPP-TUPLE4-NEXT: entry:
117 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 64 x i8>
118 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
120 TYPE(svint8
) test_svreinterpret_s8_s16(TYPE(svint16
) op
)
122 return SVE_ACLE_FUNC(svreinterpret_s8
,_s16
)(op
);
125 // CHECK-LABEL: @test_svreinterpret_s8_s32(
126 // CHECK-NEXT: entry:
127 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 16 x i8>
128 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
130 // TUPLE2-LABEL: @test_svreinterpret_s8_s32(
131 // TUPLE2-NEXT: entry:
132 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 32 x i8>
133 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
135 // TUPLE3-LABEL: @test_svreinterpret_s8_s32(
136 // TUPLE3-NEXT: entry:
137 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 48 x i8>
138 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
140 // TUPLE4-LABEL: @test_svreinterpret_s8_s32(
141 // TUPLE4-NEXT: entry:
142 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 64 x i8>
143 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
145 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_s32u11__SVInt32_t(
146 // CPP-CHECK-NEXT: entry:
147 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 16 x i8>
148 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
150 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_s3211svint32x2_t(
151 // CPP-TUPLE2-NEXT: entry:
152 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 32 x i8>
153 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
155 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_s3211svint32x3_t(
156 // CPP-TUPLE3-NEXT: entry:
157 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 48 x i8>
158 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
160 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_s3211svint32x4_t(
161 // CPP-TUPLE4-NEXT: entry:
162 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 64 x i8>
163 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
165 TYPE(svint8
) test_svreinterpret_s8_s32(TYPE(svint32
) op
)
167 return SVE_ACLE_FUNC(svreinterpret_s8
,_s32
)(op
);
170 // CHECK-LABEL: @test_svreinterpret_s8_s64(
171 // CHECK-NEXT: entry:
172 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 16 x i8>
173 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
175 // TUPLE2-LABEL: @test_svreinterpret_s8_s64(
176 // TUPLE2-NEXT: entry:
177 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 32 x i8>
178 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
180 // TUPLE3-LABEL: @test_svreinterpret_s8_s64(
181 // TUPLE3-NEXT: entry:
182 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 48 x i8>
183 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
185 // TUPLE4-LABEL: @test_svreinterpret_s8_s64(
186 // TUPLE4-NEXT: entry:
187 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 64 x i8>
188 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
190 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_s64u11__SVInt64_t(
191 // CPP-CHECK-NEXT: entry:
192 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 16 x i8>
193 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
195 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_s6411svint64x2_t(
196 // CPP-TUPLE2-NEXT: entry:
197 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 32 x i8>
198 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
200 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_s6411svint64x3_t(
201 // CPP-TUPLE3-NEXT: entry:
202 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 48 x i8>
203 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
205 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_s6411svint64x4_t(
206 // CPP-TUPLE4-NEXT: entry:
207 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 64 x i8>
208 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
210 TYPE(svint8
) test_svreinterpret_s8_s64(TYPE(svint64
) op
)
212 return SVE_ACLE_FUNC(svreinterpret_s8
,_s64
)(op
);
215 // CHECK-LABEL: @test_svreinterpret_s8_u8(
216 // CHECK-NEXT: entry:
217 // CHECK-NEXT: ret <vscale x 16 x i8> [[OP:%.*]]
219 // TUPLE2-LABEL: @test_svreinterpret_s8_u8(
220 // TUPLE2-NEXT: entry:
221 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[OP:%.*]]
223 // TUPLE3-LABEL: @test_svreinterpret_s8_u8(
224 // TUPLE3-NEXT: entry:
225 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[OP:%.*]]
227 // TUPLE4-LABEL: @test_svreinterpret_s8_u8(
228 // TUPLE4-NEXT: entry:
229 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[OP:%.*]]
231 // CPP-CHECK-LABEL: @_Z24test_svreinterpret_s8_u8u11__SVUint8_t(
232 // CPP-CHECK-NEXT: entry:
233 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[OP:%.*]]
235 // CPP-TUPLE2-LABEL: @_Z24test_svreinterpret_s8_u811svuint8x2_t(
236 // CPP-TUPLE2-NEXT: entry:
237 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[OP:%.*]]
239 // CPP-TUPLE3-LABEL: @_Z24test_svreinterpret_s8_u811svuint8x3_t(
240 // CPP-TUPLE3-NEXT: entry:
241 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[OP:%.*]]
243 // CPP-TUPLE4-LABEL: @_Z24test_svreinterpret_s8_u811svuint8x4_t(
244 // CPP-TUPLE4-NEXT: entry:
245 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[OP:%.*]]
247 TYPE(svint8
) test_svreinterpret_s8_u8(TYPE(svuint8
) op
)
249 return SVE_ACLE_FUNC(svreinterpret_s8
,_u8
)(op
);
252 // CHECK-LABEL: @test_svreinterpret_s8_u16(
253 // CHECK-NEXT: entry:
254 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 16 x i8>
255 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
257 // TUPLE2-LABEL: @test_svreinterpret_s8_u16(
258 // TUPLE2-NEXT: entry:
259 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 32 x i8>
260 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
262 // TUPLE3-LABEL: @test_svreinterpret_s8_u16(
263 // TUPLE3-NEXT: entry:
264 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 48 x i8>
265 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
267 // TUPLE4-LABEL: @test_svreinterpret_s8_u16(
268 // TUPLE4-NEXT: entry:
269 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 64 x i8>
270 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
272 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_u16u12__SVUint16_t(
273 // CPP-CHECK-NEXT: entry:
274 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 16 x i8>
275 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
277 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_u1612svuint16x2_t(
278 // CPP-TUPLE2-NEXT: entry:
279 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 32 x i8>
280 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
282 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_u1612svuint16x3_t(
283 // CPP-TUPLE3-NEXT: entry:
284 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 48 x i8>
285 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
287 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_u1612svuint16x4_t(
288 // CPP-TUPLE4-NEXT: entry:
289 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 64 x i8>
290 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
292 TYPE(svint8
) test_svreinterpret_s8_u16(TYPE(svuint16
) op
)
294 return SVE_ACLE_FUNC(svreinterpret_s8
,_u16
)(op
);
298 // CHECK-LABEL: @test_svreinterpret_s8_u32(
299 // CHECK-NEXT: entry:
300 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 16 x i8>
301 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
303 // TUPLE2-LABEL: @test_svreinterpret_s8_u32(
304 // TUPLE2-NEXT: entry:
305 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 32 x i8>
306 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
308 // TUPLE3-LABEL: @test_svreinterpret_s8_u32(
309 // TUPLE3-NEXT: entry:
310 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 48 x i8>
311 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
313 // TUPLE4-LABEL: @test_svreinterpret_s8_u32(
314 // TUPLE4-NEXT: entry:
315 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 64 x i8>
316 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
318 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_u32u12__SVUint32_t(
319 // CPP-CHECK-NEXT: entry:
320 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 16 x i8>
321 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
323 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_u3212svuint32x2_t(
324 // CPP-TUPLE2-NEXT: entry:
325 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 32 x i8>
326 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
328 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_u3212svuint32x3_t(
329 // CPP-TUPLE3-NEXT: entry:
330 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 48 x i8>
331 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
333 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_u3212svuint32x4_t(
334 // CPP-TUPLE4-NEXT: entry:
335 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 64 x i8>
336 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
338 TYPE(svint8
) test_svreinterpret_s8_u32(TYPE(svuint32
) op
)
340 return SVE_ACLE_FUNC(svreinterpret_s8
,_u32
)(op
);
344 // CHECK-LABEL: @test_svreinterpret_s8_u64(
345 // CHECK-NEXT: entry:
346 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 16 x i8>
347 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
349 // TUPLE2-LABEL: @test_svreinterpret_s8_u64(
350 // TUPLE2-NEXT: entry:
351 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 32 x i8>
352 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
354 // TUPLE3-LABEL: @test_svreinterpret_s8_u64(
355 // TUPLE3-NEXT: entry:
356 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 48 x i8>
357 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
359 // TUPLE4-LABEL: @test_svreinterpret_s8_u64(
360 // TUPLE4-NEXT: entry:
361 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 64 x i8>
362 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
364 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_u64u12__SVUint64_t(
365 // CPP-CHECK-NEXT: entry:
366 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 16 x i8>
367 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
369 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_u6412svuint64x2_t(
370 // CPP-TUPLE2-NEXT: entry:
371 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 32 x i8>
372 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
374 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_u6412svuint64x3_t(
375 // CPP-TUPLE3-NEXT: entry:
376 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 48 x i8>
377 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
379 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_u6412svuint64x4_t(
380 // CPP-TUPLE4-NEXT: entry:
381 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 64 x i8>
382 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
384 TYPE(svint8
) test_svreinterpret_s8_u64(TYPE(svuint64
) op
)
386 return SVE_ACLE_FUNC(svreinterpret_s8
,_u64
)(op
);
389 // CHECK-LABEL: @test_svreinterpret_s8_f16(
390 // CHECK-NEXT: entry:
391 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 16 x i8>
392 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
394 // TUPLE2-LABEL: @test_svreinterpret_s8_f16(
395 // TUPLE2-NEXT: entry:
396 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 32 x i8>
397 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
399 // TUPLE3-LABEL: @test_svreinterpret_s8_f16(
400 // TUPLE3-NEXT: entry:
401 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 48 x i8>
402 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
404 // TUPLE4-LABEL: @test_svreinterpret_s8_f16(
405 // TUPLE4-NEXT: entry:
406 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 64 x i8>
407 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
409 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_f16u13__SVFloat16_t(
410 // CPP-CHECK-NEXT: entry:
411 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 16 x i8>
412 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
414 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_f1613svfloat16x2_t(
415 // CPP-TUPLE2-NEXT: entry:
416 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 32 x i8>
417 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
419 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_f1613svfloat16x3_t(
420 // CPP-TUPLE3-NEXT: entry:
421 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 48 x i8>
422 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
424 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_f1613svfloat16x4_t(
425 // CPP-TUPLE4-NEXT: entry:
426 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 64 x i8>
427 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
429 TYPE(svint8
) test_svreinterpret_s8_f16(TYPE(svfloat16
) op
)
431 return SVE_ACLE_FUNC(svreinterpret_s8
,_f16
)(op
);
434 // CHECK-LABEL: @test_svreinterpret_s8_f32(
435 // CHECK-NEXT: entry:
436 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 16 x i8>
437 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
439 // TUPLE2-LABEL: @test_svreinterpret_s8_f32(
440 // TUPLE2-NEXT: entry:
441 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 32 x i8>
442 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
444 // TUPLE3-LABEL: @test_svreinterpret_s8_f32(
445 // TUPLE3-NEXT: entry:
446 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 48 x i8>
447 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
449 // TUPLE4-LABEL: @test_svreinterpret_s8_f32(
450 // TUPLE4-NEXT: entry:
451 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 64 x i8>
452 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
454 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_f32u13__SVFloat32_t(
455 // CPP-CHECK-NEXT: entry:
456 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 16 x i8>
457 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
459 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_f3213svfloat32x2_t(
460 // CPP-TUPLE2-NEXT: entry:
461 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 32 x i8>
462 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
464 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_f3213svfloat32x3_t(
465 // CPP-TUPLE3-NEXT: entry:
466 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 48 x i8>
467 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
469 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_f3213svfloat32x4_t(
470 // CPP-TUPLE4-NEXT: entry:
471 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 64 x i8>
472 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
474 TYPE(svint8
) test_svreinterpret_s8_f32(TYPE(svfloat32
) op
)
476 return SVE_ACLE_FUNC(svreinterpret_s8
,_f32
)(op
);
479 // CHECK-LABEL: @test_svreinterpret_s8_f64(
480 // CHECK-NEXT: entry:
481 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 16 x i8>
482 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
484 // TUPLE2-LABEL: @test_svreinterpret_s8_f64(
485 // TUPLE2-NEXT: entry:
486 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 32 x i8>
487 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
489 // TUPLE3-LABEL: @test_svreinterpret_s8_f64(
490 // TUPLE3-NEXT: entry:
491 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 48 x i8>
492 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
494 // TUPLE4-LABEL: @test_svreinterpret_s8_f64(
495 // TUPLE4-NEXT: entry:
496 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 64 x i8>
497 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
499 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_f64u13__SVFloat64_t(
500 // CPP-CHECK-NEXT: entry:
501 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 16 x i8>
502 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
504 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_f6413svfloat64x2_t(
505 // CPP-TUPLE2-NEXT: entry:
506 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 32 x i8>
507 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
509 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_f6413svfloat64x3_t(
510 // CPP-TUPLE3-NEXT: entry:
511 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 48 x i8>
512 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
514 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_f6413svfloat64x4_t(
515 // CPP-TUPLE4-NEXT: entry:
516 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 64 x i8>
517 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
519 TYPE(svint8
) test_svreinterpret_s8_f64(TYPE(svfloat64
) op
)
521 return SVE_ACLE_FUNC(svreinterpret_s8
,_f64
)(op
);
524 // CHECK-LABEL: @test_svreinterpret_s16_s8(
525 // CHECK-NEXT: entry:
526 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 8 x i16>
527 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
529 // TUPLE2-LABEL: @test_svreinterpret_s16_s8(
530 // TUPLE2-NEXT: entry:
531 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 16 x i16>
532 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
534 // TUPLE3-LABEL: @test_svreinterpret_s16_s8(
535 // TUPLE3-NEXT: entry:
536 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 24 x i16>
537 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
539 // TUPLE4-LABEL: @test_svreinterpret_s16_s8(
540 // TUPLE4-NEXT: entry:
541 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 32 x i16>
542 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
544 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s16_s8u10__SVInt8_t(
545 // CPP-CHECK-NEXT: entry:
546 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 8 x i16>
547 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
549 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s16_s810svint8x2_t(
550 // CPP-TUPLE2-NEXT: entry:
551 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 16 x i16>
552 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
554 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s16_s810svint8x3_t(
555 // CPP-TUPLE3-NEXT: entry:
556 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 24 x i16>
557 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
559 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s16_s810svint8x4_t(
560 // CPP-TUPLE4-NEXT: entry:
561 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 32 x i16>
562 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
564 TYPE(svint16
) test_svreinterpret_s16_s8(TYPE(svint8
) op
)
566 return SVE_ACLE_FUNC(svreinterpret_s16
,_s8
)(op
);
569 // CHECK-LABEL: @test_svreinterpret_s16_s16(
570 // CHECK-NEXT: entry:
571 // CHECK-NEXT: ret <vscale x 8 x i16> [[OP:%.*]]
573 // TUPLE2-LABEL: @test_svreinterpret_s16_s16(
574 // TUPLE2-NEXT: entry:
575 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[OP:%.*]]
577 // TUPLE3-LABEL: @test_svreinterpret_s16_s16(
578 // TUPLE3-NEXT: entry:
579 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[OP:%.*]]
581 // TUPLE4-LABEL: @test_svreinterpret_s16_s16(
582 // TUPLE4-NEXT: entry:
583 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[OP:%.*]]
585 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_s16u11__SVInt16_t(
586 // CPP-CHECK-NEXT: entry:
587 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[OP:%.*]]
589 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_s1611svint16x2_t(
590 // CPP-TUPLE2-NEXT: entry:
591 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[OP:%.*]]
593 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_s1611svint16x3_t(
594 // CPP-TUPLE3-NEXT: entry:
595 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[OP:%.*]]
597 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_s1611svint16x4_t(
598 // CPP-TUPLE4-NEXT: entry:
599 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[OP:%.*]]
601 TYPE(svint16
) test_svreinterpret_s16_s16(TYPE(svint16
) op
)
603 return SVE_ACLE_FUNC(svreinterpret_s16
,_s16
)(op
);
606 // CHECK-LABEL: @test_svreinterpret_s16_s32(
607 // CHECK-NEXT: entry:
608 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 8 x i16>
609 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
611 // TUPLE2-LABEL: @test_svreinterpret_s16_s32(
612 // TUPLE2-NEXT: entry:
613 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 16 x i16>
614 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
616 // TUPLE3-LABEL: @test_svreinterpret_s16_s32(
617 // TUPLE3-NEXT: entry:
618 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 24 x i16>
619 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
621 // TUPLE4-LABEL: @test_svreinterpret_s16_s32(
622 // TUPLE4-NEXT: entry:
623 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 32 x i16>
624 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
626 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_s32u11__SVInt32_t(
627 // CPP-CHECK-NEXT: entry:
628 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 8 x i16>
629 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
631 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_s3211svint32x2_t(
632 // CPP-TUPLE2-NEXT: entry:
633 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 16 x i16>
634 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
636 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_s3211svint32x3_t(
637 // CPP-TUPLE3-NEXT: entry:
638 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 24 x i16>
639 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
641 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_s3211svint32x4_t(
642 // CPP-TUPLE4-NEXT: entry:
643 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 32 x i16>
644 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
646 TYPE(svint16
) test_svreinterpret_s16_s32(TYPE(svint32
) op
)
648 return SVE_ACLE_FUNC(svreinterpret_s16
,_s32
)(op
);
651 // CHECK-LABEL: @test_svreinterpret_s16_s64(
652 // CHECK-NEXT: entry:
653 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 8 x i16>
654 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
656 // TUPLE2-LABEL: @test_svreinterpret_s16_s64(
657 // TUPLE2-NEXT: entry:
658 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 16 x i16>
659 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
661 // TUPLE3-LABEL: @test_svreinterpret_s16_s64(
662 // TUPLE3-NEXT: entry:
663 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 24 x i16>
664 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
666 // TUPLE4-LABEL: @test_svreinterpret_s16_s64(
667 // TUPLE4-NEXT: entry:
668 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 32 x i16>
669 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
671 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_s64u11__SVInt64_t(
672 // CPP-CHECK-NEXT: entry:
673 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 8 x i16>
674 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
676 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_s6411svint64x2_t(
677 // CPP-TUPLE2-NEXT: entry:
678 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 16 x i16>
679 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
681 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_s6411svint64x3_t(
682 // CPP-TUPLE3-NEXT: entry:
683 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 24 x i16>
684 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
686 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_s6411svint64x4_t(
687 // CPP-TUPLE4-NEXT: entry:
688 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 32 x i16>
689 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
691 TYPE(svint16
) test_svreinterpret_s16_s64(TYPE(svint64
) op
)
693 return SVE_ACLE_FUNC(svreinterpret_s16
,_s64
)(op
);
696 // CHECK-LABEL: @test_svreinterpret_s16_u8(
697 // CHECK-NEXT: entry:
698 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 8 x i16>
699 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
701 // TUPLE2-LABEL: @test_svreinterpret_s16_u8(
702 // TUPLE2-NEXT: entry:
703 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 16 x i16>
704 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
706 // TUPLE3-LABEL: @test_svreinterpret_s16_u8(
707 // TUPLE3-NEXT: entry:
708 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 24 x i16>
709 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
711 // TUPLE4-LABEL: @test_svreinterpret_s16_u8(
712 // TUPLE4-NEXT: entry:
713 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 32 x i16>
714 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
716 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s16_u8u11__SVUint8_t(
717 // CPP-CHECK-NEXT: entry:
718 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 8 x i16>
719 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
721 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s16_u811svuint8x2_t(
722 // CPP-TUPLE2-NEXT: entry:
723 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 16 x i16>
724 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
726 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s16_u811svuint8x3_t(
727 // CPP-TUPLE3-NEXT: entry:
728 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 24 x i16>
729 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
731 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s16_u811svuint8x4_t(
732 // CPP-TUPLE4-NEXT: entry:
733 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 32 x i16>
734 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
736 TYPE(svint16
) test_svreinterpret_s16_u8(TYPE(svuint8
) op
)
738 return SVE_ACLE_FUNC(svreinterpret_s16
,_u8
)(op
);
741 // CHECK-LABEL: @test_svreinterpret_s16_u16(
742 // CHECK-NEXT: entry:
743 // CHECK-NEXT: ret <vscale x 8 x i16> [[OP:%.*]]
745 // TUPLE2-LABEL: @test_svreinterpret_s16_u16(
746 // TUPLE2-NEXT: entry:
747 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[OP:%.*]]
749 // TUPLE3-LABEL: @test_svreinterpret_s16_u16(
750 // TUPLE3-NEXT: entry:
751 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[OP:%.*]]
753 // TUPLE4-LABEL: @test_svreinterpret_s16_u16(
754 // TUPLE4-NEXT: entry:
755 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[OP:%.*]]
757 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_u16u12__SVUint16_t(
758 // CPP-CHECK-NEXT: entry:
759 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[OP:%.*]]
761 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_u1612svuint16x2_t(
762 // CPP-TUPLE2-NEXT: entry:
763 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[OP:%.*]]
765 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_u1612svuint16x3_t(
766 // CPP-TUPLE3-NEXT: entry:
767 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[OP:%.*]]
769 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_u1612svuint16x4_t(
770 // CPP-TUPLE4-NEXT: entry:
771 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[OP:%.*]]
773 TYPE(svint16
) test_svreinterpret_s16_u16(TYPE(svuint16
) op
)
775 return SVE_ACLE_FUNC(svreinterpret_s16
,_u16
)(op
);
778 // CHECK-LABEL: @test_svreinterpret_s16_u32(
779 // CHECK-NEXT: entry:
780 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 8 x i16>
781 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
783 // TUPLE2-LABEL: @test_svreinterpret_s16_u32(
784 // TUPLE2-NEXT: entry:
785 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 16 x i16>
786 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
788 // TUPLE3-LABEL: @test_svreinterpret_s16_u32(
789 // TUPLE3-NEXT: entry:
790 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 24 x i16>
791 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
793 // TUPLE4-LABEL: @test_svreinterpret_s16_u32(
794 // TUPLE4-NEXT: entry:
795 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 32 x i16>
796 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
798 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_u32u12__SVUint32_t(
799 // CPP-CHECK-NEXT: entry:
800 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 8 x i16>
801 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
803 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_u3212svuint32x2_t(
804 // CPP-TUPLE2-NEXT: entry:
805 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 16 x i16>
806 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
808 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_u3212svuint32x3_t(
809 // CPP-TUPLE3-NEXT: entry:
810 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 24 x i16>
811 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
813 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_u3212svuint32x4_t(
814 // CPP-TUPLE4-NEXT: entry:
815 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 32 x i16>
816 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
818 TYPE(svint16
) test_svreinterpret_s16_u32(TYPE(svuint32
) op
)
820 return SVE_ACLE_FUNC(svreinterpret_s16
,_u32
)(op
);
823 // CHECK-LABEL: @test_svreinterpret_s16_u64(
824 // CHECK-NEXT: entry:
825 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 8 x i16>
826 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
828 // TUPLE2-LABEL: @test_svreinterpret_s16_u64(
829 // TUPLE2-NEXT: entry:
830 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 16 x i16>
831 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
833 // TUPLE3-LABEL: @test_svreinterpret_s16_u64(
834 // TUPLE3-NEXT: entry:
835 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 24 x i16>
836 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
838 // TUPLE4-LABEL: @test_svreinterpret_s16_u64(
839 // TUPLE4-NEXT: entry:
840 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 32 x i16>
841 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
843 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_u64u12__SVUint64_t(
844 // CPP-CHECK-NEXT: entry:
845 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 8 x i16>
846 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
848 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_u6412svuint64x2_t(
849 // CPP-TUPLE2-NEXT: entry:
850 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 16 x i16>
851 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
853 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_u6412svuint64x3_t(
854 // CPP-TUPLE3-NEXT: entry:
855 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 24 x i16>
856 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
858 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_u6412svuint64x4_t(
859 // CPP-TUPLE4-NEXT: entry:
860 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 32 x i16>
861 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
863 TYPE(svint16
) test_svreinterpret_s16_u64(TYPE(svuint64
) op
)
865 return SVE_ACLE_FUNC(svreinterpret_s16
,_u64
)(op
);
868 // CHECK-LABEL: @test_svreinterpret_s16_f16(
869 // CHECK-NEXT: entry:
870 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 8 x i16>
871 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
873 // TUPLE2-LABEL: @test_svreinterpret_s16_f16(
874 // TUPLE2-NEXT: entry:
875 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 16 x i16>
876 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
878 // TUPLE3-LABEL: @test_svreinterpret_s16_f16(
879 // TUPLE3-NEXT: entry:
880 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 24 x i16>
881 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
883 // TUPLE4-LABEL: @test_svreinterpret_s16_f16(
884 // TUPLE4-NEXT: entry:
885 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 32 x i16>
886 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
888 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_f16u13__SVFloat16_t(
889 // CPP-CHECK-NEXT: entry:
890 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 8 x i16>
891 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
893 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_f1613svfloat16x2_t(
894 // CPP-TUPLE2-NEXT: entry:
895 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 16 x i16>
896 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
898 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_f1613svfloat16x3_t(
899 // CPP-TUPLE3-NEXT: entry:
900 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 24 x i16>
901 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
903 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_f1613svfloat16x4_t(
904 // CPP-TUPLE4-NEXT: entry:
905 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 32 x i16>
906 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
908 TYPE(svint16
) test_svreinterpret_s16_f16(TYPE(svfloat16
) op
)
910 return SVE_ACLE_FUNC(svreinterpret_s16
,_f16
)(op
);
913 // CHECK-LABEL: @test_svreinterpret_s16_f32(
914 // CHECK-NEXT: entry:
915 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 8 x i16>
916 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
918 // TUPLE2-LABEL: @test_svreinterpret_s16_f32(
919 // TUPLE2-NEXT: entry:
920 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 16 x i16>
921 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
923 // TUPLE3-LABEL: @test_svreinterpret_s16_f32(
924 // TUPLE3-NEXT: entry:
925 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 24 x i16>
926 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
928 // TUPLE4-LABEL: @test_svreinterpret_s16_f32(
929 // TUPLE4-NEXT: entry:
930 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 32 x i16>
931 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
933 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_f32u13__SVFloat32_t(
934 // CPP-CHECK-NEXT: entry:
935 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 8 x i16>
936 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
938 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_f3213svfloat32x2_t(
939 // CPP-TUPLE2-NEXT: entry:
940 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 16 x i16>
941 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
943 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_f3213svfloat32x3_t(
944 // CPP-TUPLE3-NEXT: entry:
945 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 24 x i16>
946 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
948 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_f3213svfloat32x4_t(
949 // CPP-TUPLE4-NEXT: entry:
950 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 32 x i16>
951 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
953 TYPE(svint16
) test_svreinterpret_s16_f32(TYPE(svfloat32
) op
)
955 return SVE_ACLE_FUNC(svreinterpret_s16
,_f32
)(op
);
958 // CHECK-LABEL: @test_svreinterpret_s16_f64(
959 // CHECK-NEXT: entry:
960 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 8 x i16>
961 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
963 // TUPLE2-LABEL: @test_svreinterpret_s16_f64(
964 // TUPLE2-NEXT: entry:
965 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 16 x i16>
966 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
968 // TUPLE3-LABEL: @test_svreinterpret_s16_f64(
969 // TUPLE3-NEXT: entry:
970 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 24 x i16>
971 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
973 // TUPLE4-LABEL: @test_svreinterpret_s16_f64(
974 // TUPLE4-NEXT: entry:
975 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 32 x i16>
976 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
978 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_f64u13__SVFloat64_t(
979 // CPP-CHECK-NEXT: entry:
980 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 8 x i16>
981 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
983 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_f6413svfloat64x2_t(
984 // CPP-TUPLE2-NEXT: entry:
985 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 16 x i16>
986 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
988 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_f6413svfloat64x3_t(
989 // CPP-TUPLE3-NEXT: entry:
990 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 24 x i16>
991 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
993 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_f6413svfloat64x4_t(
994 // CPP-TUPLE4-NEXT: entry:
995 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 32 x i16>
996 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
998 TYPE(svint16
) test_svreinterpret_s16_f64(TYPE(svfloat64
) op
)
1000 return SVE_ACLE_FUNC(svreinterpret_s16
,_f64
)(op
);
1003 // CHECK-LABEL: @test_svreinterpret_s32_s8(
1004 // CHECK-NEXT: entry:
1005 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 4 x i32>
1006 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1008 // TUPLE2-LABEL: @test_svreinterpret_s32_s8(
1009 // TUPLE2-NEXT: entry:
1010 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 8 x i32>
1011 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1013 // TUPLE3-LABEL: @test_svreinterpret_s32_s8(
1014 // TUPLE3-NEXT: entry:
1015 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 12 x i32>
1016 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1018 // TUPLE4-LABEL: @test_svreinterpret_s32_s8(
1019 // TUPLE4-NEXT: entry:
1020 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 16 x i32>
1021 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1023 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s32_s8u10__SVInt8_t(
1024 // CPP-CHECK-NEXT: entry:
1025 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 4 x i32>
1026 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1028 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s32_s810svint8x2_t(
1029 // CPP-TUPLE2-NEXT: entry:
1030 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 8 x i32>
1031 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1033 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s32_s810svint8x3_t(
1034 // CPP-TUPLE3-NEXT: entry:
1035 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 12 x i32>
1036 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1038 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s32_s810svint8x4_t(
1039 // CPP-TUPLE4-NEXT: entry:
1040 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 16 x i32>
1041 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1043 TYPE(svint32
) test_svreinterpret_s32_s8(TYPE(svint8
) op
)
1045 return SVE_ACLE_FUNC(svreinterpret_s32
,_s8
)(op
);
1048 // CHECK-LABEL: @test_svreinterpret_s32_s16(
1049 // CHECK-NEXT: entry:
1050 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 4 x i32>
1051 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1053 // TUPLE2-LABEL: @test_svreinterpret_s32_s16(
1054 // TUPLE2-NEXT: entry:
1055 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 8 x i32>
1056 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1058 // TUPLE3-LABEL: @test_svreinterpret_s32_s16(
1059 // TUPLE3-NEXT: entry:
1060 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 12 x i32>
1061 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1063 // TUPLE4-LABEL: @test_svreinterpret_s32_s16(
1064 // TUPLE4-NEXT: entry:
1065 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 16 x i32>
1066 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1068 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_s16u11__SVInt16_t(
1069 // CPP-CHECK-NEXT: entry:
1070 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 4 x i32>
1071 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1073 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_s1611svint16x2_t(
1074 // CPP-TUPLE2-NEXT: entry:
1075 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 8 x i32>
1076 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1078 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_s1611svint16x3_t(
1079 // CPP-TUPLE3-NEXT: entry:
1080 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 12 x i32>
1081 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1083 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_s1611svint16x4_t(
1084 // CPP-TUPLE4-NEXT: entry:
1085 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 16 x i32>
1086 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1088 TYPE(svint32
) test_svreinterpret_s32_s16(TYPE(svint16
) op
)
1090 return SVE_ACLE_FUNC(svreinterpret_s32
,_s16
)(op
);
1093 // CHECK-LABEL: @test_svreinterpret_s32_s32(
1094 // CHECK-NEXT: entry:
1095 // CHECK-NEXT: ret <vscale x 4 x i32> [[OP:%.*]]
1097 // TUPLE2-LABEL: @test_svreinterpret_s32_s32(
1098 // TUPLE2-NEXT: entry:
1099 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[OP:%.*]]
1101 // TUPLE3-LABEL: @test_svreinterpret_s32_s32(
1102 // TUPLE3-NEXT: entry:
1103 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[OP:%.*]]
1105 // TUPLE4-LABEL: @test_svreinterpret_s32_s32(
1106 // TUPLE4-NEXT: entry:
1107 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[OP:%.*]]
1109 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_s32u11__SVInt32_t(
1110 // CPP-CHECK-NEXT: entry:
1111 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[OP:%.*]]
1113 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_s3211svint32x2_t(
1114 // CPP-TUPLE2-NEXT: entry:
1115 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[OP:%.*]]
1117 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_s3211svint32x3_t(
1118 // CPP-TUPLE3-NEXT: entry:
1119 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[OP:%.*]]
1121 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_s3211svint32x4_t(
1122 // CPP-TUPLE4-NEXT: entry:
1123 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[OP:%.*]]
1125 TYPE(svint32
) test_svreinterpret_s32_s32(TYPE(svint32
) op
)
1127 return SVE_ACLE_FUNC(svreinterpret_s32
,_s32
)(op
);
1130 // CHECK-LABEL: @test_svreinterpret_s32_s64(
1131 // CHECK-NEXT: entry:
1132 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 4 x i32>
1133 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1135 // TUPLE2-LABEL: @test_svreinterpret_s32_s64(
1136 // TUPLE2-NEXT: entry:
1137 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 8 x i32>
1138 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1140 // TUPLE3-LABEL: @test_svreinterpret_s32_s64(
1141 // TUPLE3-NEXT: entry:
1142 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 12 x i32>
1143 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1145 // TUPLE4-LABEL: @test_svreinterpret_s32_s64(
1146 // TUPLE4-NEXT: entry:
1147 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 16 x i32>
1148 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1150 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_s64u11__SVInt64_t(
1151 // CPP-CHECK-NEXT: entry:
1152 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 4 x i32>
1153 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1155 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_s6411svint64x2_t(
1156 // CPP-TUPLE2-NEXT: entry:
1157 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 8 x i32>
1158 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1160 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_s6411svint64x3_t(
1161 // CPP-TUPLE3-NEXT: entry:
1162 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 12 x i32>
1163 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1165 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_s6411svint64x4_t(
1166 // CPP-TUPLE4-NEXT: entry:
1167 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 16 x i32>
1168 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1170 TYPE(svint32
) test_svreinterpret_s32_s64(TYPE(svint64
) op
)
1172 return SVE_ACLE_FUNC(svreinterpret_s32
,_s64
)(op
);
1175 // CHECK-LABEL: @test_svreinterpret_s32_u8(
1176 // CHECK-NEXT: entry:
1177 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 4 x i32>
1178 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1180 // TUPLE2-LABEL: @test_svreinterpret_s32_u8(
1181 // TUPLE2-NEXT: entry:
1182 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 8 x i32>
1183 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1185 // TUPLE3-LABEL: @test_svreinterpret_s32_u8(
1186 // TUPLE3-NEXT: entry:
1187 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 12 x i32>
1188 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1190 // TUPLE4-LABEL: @test_svreinterpret_s32_u8(
1191 // TUPLE4-NEXT: entry:
1192 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 16 x i32>
1193 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1195 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s32_u8u11__SVUint8_t(
1196 // CPP-CHECK-NEXT: entry:
1197 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 4 x i32>
1198 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1200 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s32_u811svuint8x2_t(
1201 // CPP-TUPLE2-NEXT: entry:
1202 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 8 x i32>
1203 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1205 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s32_u811svuint8x3_t(
1206 // CPP-TUPLE3-NEXT: entry:
1207 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 12 x i32>
1208 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1210 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s32_u811svuint8x4_t(
1211 // CPP-TUPLE4-NEXT: entry:
1212 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 16 x i32>
1213 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1215 TYPE(svint32
) test_svreinterpret_s32_u8(TYPE(svuint8
) op
)
1217 return SVE_ACLE_FUNC(svreinterpret_s32
,_u8
)(op
);
1220 // CHECK-LABEL: @test_svreinterpret_s32_u16(
1221 // CHECK-NEXT: entry:
1222 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 4 x i32>
1223 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1225 // TUPLE2-LABEL: @test_svreinterpret_s32_u16(
1226 // TUPLE2-NEXT: entry:
1227 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 8 x i32>
1228 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1230 // TUPLE3-LABEL: @test_svreinterpret_s32_u16(
1231 // TUPLE3-NEXT: entry:
1232 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 12 x i32>
1233 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1235 // TUPLE4-LABEL: @test_svreinterpret_s32_u16(
1236 // TUPLE4-NEXT: entry:
1237 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 16 x i32>
1238 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1240 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_u16u12__SVUint16_t(
1241 // CPP-CHECK-NEXT: entry:
1242 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 4 x i32>
1243 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1245 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_u1612svuint16x2_t(
1246 // CPP-TUPLE2-NEXT: entry:
1247 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 8 x i32>
1248 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1250 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_u1612svuint16x3_t(
1251 // CPP-TUPLE3-NEXT: entry:
1252 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 12 x i32>
1253 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1255 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_u1612svuint16x4_t(
1256 // CPP-TUPLE4-NEXT: entry:
1257 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 16 x i32>
1258 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1260 TYPE(svint32
) test_svreinterpret_s32_u16(TYPE(svuint16
) op
)
1262 return SVE_ACLE_FUNC(svreinterpret_s32
,_u16
)(op
);
1265 // CHECK-LABEL: @test_svreinterpret_s32_u32(
1266 // CHECK-NEXT: entry:
1267 // CHECK-NEXT: ret <vscale x 4 x i32> [[OP:%.*]]
1269 // TUPLE2-LABEL: @test_svreinterpret_s32_u32(
1270 // TUPLE2-NEXT: entry:
1271 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[OP:%.*]]
1273 // TUPLE3-LABEL: @test_svreinterpret_s32_u32(
1274 // TUPLE3-NEXT: entry:
1275 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[OP:%.*]]
1277 // TUPLE4-LABEL: @test_svreinterpret_s32_u32(
1278 // TUPLE4-NEXT: entry:
1279 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[OP:%.*]]
1281 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_u32u12__SVUint32_t(
1282 // CPP-CHECK-NEXT: entry:
1283 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[OP:%.*]]
1285 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_u3212svuint32x2_t(
1286 // CPP-TUPLE2-NEXT: entry:
1287 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[OP:%.*]]
1289 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_u3212svuint32x3_t(
1290 // CPP-TUPLE3-NEXT: entry:
1291 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[OP:%.*]]
1293 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_u3212svuint32x4_t(
1294 // CPP-TUPLE4-NEXT: entry:
1295 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[OP:%.*]]
1297 TYPE(svint32
) test_svreinterpret_s32_u32(TYPE(svuint32
) op
)
1299 return SVE_ACLE_FUNC(svreinterpret_s32
,_u32
)(op
);
1302 // CHECK-LABEL: @test_svreinterpret_s32_u64(
1303 // CHECK-NEXT: entry:
1304 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 4 x i32>
1305 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1307 // TUPLE2-LABEL: @test_svreinterpret_s32_u64(
1308 // TUPLE2-NEXT: entry:
1309 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 8 x i32>
1310 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1312 // TUPLE3-LABEL: @test_svreinterpret_s32_u64(
1313 // TUPLE3-NEXT: entry:
1314 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 12 x i32>
1315 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1317 // TUPLE4-LABEL: @test_svreinterpret_s32_u64(
1318 // TUPLE4-NEXT: entry:
1319 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 16 x i32>
1320 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1322 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_u64u12__SVUint64_t(
1323 // CPP-CHECK-NEXT: entry:
1324 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 4 x i32>
1325 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1327 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_u6412svuint64x2_t(
1328 // CPP-TUPLE2-NEXT: entry:
1329 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 8 x i32>
1330 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1332 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_u6412svuint64x3_t(
1333 // CPP-TUPLE3-NEXT: entry:
1334 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 12 x i32>
1335 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1337 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_u6412svuint64x4_t(
1338 // CPP-TUPLE4-NEXT: entry:
1339 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 16 x i32>
1340 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1342 TYPE(svint32
) test_svreinterpret_s32_u64(TYPE(svuint64
) op
)
1344 return SVE_ACLE_FUNC(svreinterpret_s32
,_u64
)(op
);
1347 // CHECK-LABEL: @test_svreinterpret_s32_f16(
1348 // CHECK-NEXT: entry:
1349 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 4 x i32>
1350 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1352 // TUPLE2-LABEL: @test_svreinterpret_s32_f16(
1353 // TUPLE2-NEXT: entry:
1354 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 8 x i32>
1355 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1357 // TUPLE3-LABEL: @test_svreinterpret_s32_f16(
1358 // TUPLE3-NEXT: entry:
1359 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 12 x i32>
1360 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1362 // TUPLE4-LABEL: @test_svreinterpret_s32_f16(
1363 // TUPLE4-NEXT: entry:
1364 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 16 x i32>
1365 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1367 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_f16u13__SVFloat16_t(
1368 // CPP-CHECK-NEXT: entry:
1369 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 4 x i32>
1370 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1372 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_f1613svfloat16x2_t(
1373 // CPP-TUPLE2-NEXT: entry:
1374 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 8 x i32>
1375 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1377 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_f1613svfloat16x3_t(
1378 // CPP-TUPLE3-NEXT: entry:
1379 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 12 x i32>
1380 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1382 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_f1613svfloat16x4_t(
1383 // CPP-TUPLE4-NEXT: entry:
1384 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 16 x i32>
1385 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1387 TYPE(svint32
) test_svreinterpret_s32_f16(TYPE(svfloat16
) op
)
1389 return SVE_ACLE_FUNC(svreinterpret_s32
,_f16
)(op
);
1392 // CHECK-LABEL: @test_svreinterpret_s32_f32(
1393 // CHECK-NEXT: entry:
1394 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 4 x i32>
1395 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1397 // TUPLE2-LABEL: @test_svreinterpret_s32_f32(
1398 // TUPLE2-NEXT: entry:
1399 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 8 x i32>
1400 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1402 // TUPLE3-LABEL: @test_svreinterpret_s32_f32(
1403 // TUPLE3-NEXT: entry:
1404 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 12 x i32>
1405 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1407 // TUPLE4-LABEL: @test_svreinterpret_s32_f32(
1408 // TUPLE4-NEXT: entry:
1409 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 16 x i32>
1410 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1412 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_f32u13__SVFloat32_t(
1413 // CPP-CHECK-NEXT: entry:
1414 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 4 x i32>
1415 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1417 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_f3213svfloat32x2_t(
1418 // CPP-TUPLE2-NEXT: entry:
1419 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 8 x i32>
1420 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1422 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_f3213svfloat32x3_t(
1423 // CPP-TUPLE3-NEXT: entry:
1424 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 12 x i32>
1425 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1427 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_f3213svfloat32x4_t(
1428 // CPP-TUPLE4-NEXT: entry:
1429 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 16 x i32>
1430 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1432 TYPE(svint32
) test_svreinterpret_s32_f32(TYPE(svfloat32
) op
)
1434 return SVE_ACLE_FUNC(svreinterpret_s32
,_f32
)(op
);
1438 // CHECK-LABEL: @test_svreinterpret_s32_f64(
1439 // CHECK-NEXT: entry:
1440 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 4 x i32>
1441 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1443 // TUPLE2-LABEL: @test_svreinterpret_s32_f64(
1444 // TUPLE2-NEXT: entry:
1445 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 8 x i32>
1446 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1448 // TUPLE3-LABEL: @test_svreinterpret_s32_f64(
1449 // TUPLE3-NEXT: entry:
1450 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 12 x i32>
1451 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1453 // TUPLE4-LABEL: @test_svreinterpret_s32_f64(
1454 // TUPLE4-NEXT: entry:
1455 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 16 x i32>
1456 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1458 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_f64u13__SVFloat64_t(
1459 // CPP-CHECK-NEXT: entry:
1460 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 4 x i32>
1461 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
1463 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_f6413svfloat64x2_t(
1464 // CPP-TUPLE2-NEXT: entry:
1465 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 8 x i32>
1466 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
1468 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_f6413svfloat64x3_t(
1469 // CPP-TUPLE3-NEXT: entry:
1470 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 12 x i32>
1471 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
1473 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_f6413svfloat64x4_t(
1474 // CPP-TUPLE4-NEXT: entry:
1475 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 16 x i32>
1476 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
1478 TYPE(svint32
) test_svreinterpret_s32_f64(TYPE(svfloat64
) op
)
1480 return SVE_ACLE_FUNC(svreinterpret_s32
,_f64
)(op
);
1483 // CHECK-LABEL: @test_svreinterpret_s64_s8(
1484 // CHECK-NEXT: entry:
1485 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 2 x i64>
1486 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1488 // TUPLE2-LABEL: @test_svreinterpret_s64_s8(
1489 // TUPLE2-NEXT: entry:
1490 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 4 x i64>
1491 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1493 // TUPLE3-LABEL: @test_svreinterpret_s64_s8(
1494 // TUPLE3-NEXT: entry:
1495 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 6 x i64>
1496 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1498 // TUPLE4-LABEL: @test_svreinterpret_s64_s8(
1499 // TUPLE4-NEXT: entry:
1500 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 8 x i64>
1501 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1503 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s64_s8u10__SVInt8_t(
1504 // CPP-CHECK-NEXT: entry:
1505 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 2 x i64>
1506 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1508 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s64_s810svint8x2_t(
1509 // CPP-TUPLE2-NEXT: entry:
1510 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 4 x i64>
1511 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1513 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s64_s810svint8x3_t(
1514 // CPP-TUPLE3-NEXT: entry:
1515 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 6 x i64>
1516 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1518 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s64_s810svint8x4_t(
1519 // CPP-TUPLE4-NEXT: entry:
1520 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 8 x i64>
1521 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1523 TYPE(svint64
) test_svreinterpret_s64_s8(TYPE(svint8
) op
)
1525 return SVE_ACLE_FUNC(svreinterpret_s64
,_s8
)(op
);
1528 // CHECK-LABEL: @test_svreinterpret_s64_s16(
1529 // CHECK-NEXT: entry:
1530 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 2 x i64>
1531 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1533 // TUPLE2-LABEL: @test_svreinterpret_s64_s16(
1534 // TUPLE2-NEXT: entry:
1535 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 4 x i64>
1536 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1538 // TUPLE3-LABEL: @test_svreinterpret_s64_s16(
1539 // TUPLE3-NEXT: entry:
1540 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 6 x i64>
1541 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1543 // TUPLE4-LABEL: @test_svreinterpret_s64_s16(
1544 // TUPLE4-NEXT: entry:
1545 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 8 x i64>
1546 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1548 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_s16u11__SVInt16_t(
1549 // CPP-CHECK-NEXT: entry:
1550 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 2 x i64>
1551 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1553 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_s1611svint16x2_t(
1554 // CPP-TUPLE2-NEXT: entry:
1555 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 4 x i64>
1556 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1558 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_s1611svint16x3_t(
1559 // CPP-TUPLE3-NEXT: entry:
1560 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 6 x i64>
1561 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1563 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_s1611svint16x4_t(
1564 // CPP-TUPLE4-NEXT: entry:
1565 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 8 x i64>
1566 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1568 TYPE(svint64
) test_svreinterpret_s64_s16(TYPE(svint16
) op
)
1570 return SVE_ACLE_FUNC(svreinterpret_s64
,_s16
)(op
);
1573 // CHECK-LABEL: @test_svreinterpret_s64_s32(
1574 // CHECK-NEXT: entry:
1575 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 2 x i64>
1576 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1578 // TUPLE2-LABEL: @test_svreinterpret_s64_s32(
1579 // TUPLE2-NEXT: entry:
1580 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 4 x i64>
1581 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1583 // TUPLE3-LABEL: @test_svreinterpret_s64_s32(
1584 // TUPLE3-NEXT: entry:
1585 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 6 x i64>
1586 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1588 // TUPLE4-LABEL: @test_svreinterpret_s64_s32(
1589 // TUPLE4-NEXT: entry:
1590 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 8 x i64>
1591 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1593 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_s32u11__SVInt32_t(
1594 // CPP-CHECK-NEXT: entry:
1595 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 2 x i64>
1596 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1598 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_s3211svint32x2_t(
1599 // CPP-TUPLE2-NEXT: entry:
1600 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 4 x i64>
1601 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1603 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_s3211svint32x3_t(
1604 // CPP-TUPLE3-NEXT: entry:
1605 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 6 x i64>
1606 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1608 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_s3211svint32x4_t(
1609 // CPP-TUPLE4-NEXT: entry:
1610 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 8 x i64>
1611 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1613 TYPE(svint64
) test_svreinterpret_s64_s32(TYPE(svint32
) op
)
1615 return SVE_ACLE_FUNC(svreinterpret_s64
,_s32
)(op
);
1618 // CHECK-LABEL: @test_svreinterpret_s64_s64(
1619 // CHECK-NEXT: entry:
1620 // CHECK-NEXT: ret <vscale x 2 x i64> [[OP:%.*]]
1622 // TUPLE2-LABEL: @test_svreinterpret_s64_s64(
1623 // TUPLE2-NEXT: entry:
1624 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[OP:%.*]]
1626 // TUPLE3-LABEL: @test_svreinterpret_s64_s64(
1627 // TUPLE3-NEXT: entry:
1628 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[OP:%.*]]
1630 // TUPLE4-LABEL: @test_svreinterpret_s64_s64(
1631 // TUPLE4-NEXT: entry:
1632 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[OP:%.*]]
1634 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_s64u11__SVInt64_t(
1635 // CPP-CHECK-NEXT: entry:
1636 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[OP:%.*]]
1638 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_s6411svint64x2_t(
1639 // CPP-TUPLE2-NEXT: entry:
1640 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[OP:%.*]]
1642 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_s6411svint64x3_t(
1643 // CPP-TUPLE3-NEXT: entry:
1644 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[OP:%.*]]
1646 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_s6411svint64x4_t(
1647 // CPP-TUPLE4-NEXT: entry:
1648 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[OP:%.*]]
1650 TYPE(svint64
) test_svreinterpret_s64_s64(TYPE(svint64
) op
)
1652 return SVE_ACLE_FUNC(svreinterpret_s64
,_s64
)(op
);
1655 // CHECK-LABEL: @test_svreinterpret_s64_u8(
1656 // CHECK-NEXT: entry:
1657 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 2 x i64>
1658 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1660 // TUPLE2-LABEL: @test_svreinterpret_s64_u8(
1661 // TUPLE2-NEXT: entry:
1662 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 4 x i64>
1663 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1665 // TUPLE3-LABEL: @test_svreinterpret_s64_u8(
1666 // TUPLE3-NEXT: entry:
1667 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 6 x i64>
1668 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1670 // TUPLE4-LABEL: @test_svreinterpret_s64_u8(
1671 // TUPLE4-NEXT: entry:
1672 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 8 x i64>
1673 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1675 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s64_u8u11__SVUint8_t(
1676 // CPP-CHECK-NEXT: entry:
1677 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 2 x i64>
1678 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1680 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s64_u811svuint8x2_t(
1681 // CPP-TUPLE2-NEXT: entry:
1682 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 4 x i64>
1683 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1685 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s64_u811svuint8x3_t(
1686 // CPP-TUPLE3-NEXT: entry:
1687 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 6 x i64>
1688 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1690 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s64_u811svuint8x4_t(
1691 // CPP-TUPLE4-NEXT: entry:
1692 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 8 x i64>
1693 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1695 TYPE(svint64
) test_svreinterpret_s64_u8(TYPE(svuint8
) op
)
1697 return SVE_ACLE_FUNC(svreinterpret_s64
,_u8
)(op
);
1700 // CHECK-LABEL: @test_svreinterpret_s64_u16(
1701 // CHECK-NEXT: entry:
1702 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 2 x i64>
1703 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1705 // TUPLE2-LABEL: @test_svreinterpret_s64_u16(
1706 // TUPLE2-NEXT: entry:
1707 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 4 x i64>
1708 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1710 // TUPLE3-LABEL: @test_svreinterpret_s64_u16(
1711 // TUPLE3-NEXT: entry:
1712 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 6 x i64>
1713 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1715 // TUPLE4-LABEL: @test_svreinterpret_s64_u16(
1716 // TUPLE4-NEXT: entry:
1717 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 8 x i64>
1718 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1720 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_u16u12__SVUint16_t(
1721 // CPP-CHECK-NEXT: entry:
1722 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 2 x i64>
1723 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1725 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_u1612svuint16x2_t(
1726 // CPP-TUPLE2-NEXT: entry:
1727 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 4 x i64>
1728 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1730 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_u1612svuint16x3_t(
1731 // CPP-TUPLE3-NEXT: entry:
1732 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 6 x i64>
1733 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1735 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_u1612svuint16x4_t(
1736 // CPP-TUPLE4-NEXT: entry:
1737 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 8 x i64>
1738 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1740 TYPE(svint64
) test_svreinterpret_s64_u16(TYPE(svuint16
) op
)
1742 return SVE_ACLE_FUNC(svreinterpret_s64
,_u16
)(op
);
1745 // CHECK-LABEL: @test_svreinterpret_s64_u32(
1746 // CHECK-NEXT: entry:
1747 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 2 x i64>
1748 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1750 // TUPLE2-LABEL: @test_svreinterpret_s64_u32(
1751 // TUPLE2-NEXT: entry:
1752 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 4 x i64>
1753 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1755 // TUPLE3-LABEL: @test_svreinterpret_s64_u32(
1756 // TUPLE3-NEXT: entry:
1757 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 6 x i64>
1758 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1760 // TUPLE4-LABEL: @test_svreinterpret_s64_u32(
1761 // TUPLE4-NEXT: entry:
1762 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 8 x i64>
1763 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1765 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_u32u12__SVUint32_t(
1766 // CPP-CHECK-NEXT: entry:
1767 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 2 x i64>
1768 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1770 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_u3212svuint32x2_t(
1771 // CPP-TUPLE2-NEXT: entry:
1772 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 4 x i64>
1773 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1775 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_u3212svuint32x3_t(
1776 // CPP-TUPLE3-NEXT: entry:
1777 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 6 x i64>
1778 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1780 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_u3212svuint32x4_t(
1781 // CPP-TUPLE4-NEXT: entry:
1782 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 8 x i64>
1783 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1785 TYPE(svint64
) test_svreinterpret_s64_u32(TYPE(svuint32
) op
)
1787 return SVE_ACLE_FUNC(svreinterpret_s64
,_u32
)(op
);
1790 // CHECK-LABEL: @test_svreinterpret_s64_u64(
1791 // CHECK-NEXT: entry:
1792 // CHECK-NEXT: ret <vscale x 2 x i64> [[OP:%.*]]
1794 // TUPLE2-LABEL: @test_svreinterpret_s64_u64(
1795 // TUPLE2-NEXT: entry:
1796 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[OP:%.*]]
1798 // TUPLE3-LABEL: @test_svreinterpret_s64_u64(
1799 // TUPLE3-NEXT: entry:
1800 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[OP:%.*]]
1802 // TUPLE4-LABEL: @test_svreinterpret_s64_u64(
1803 // TUPLE4-NEXT: entry:
1804 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[OP:%.*]]
1806 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_u64u12__SVUint64_t(
1807 // CPP-CHECK-NEXT: entry:
1808 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[OP:%.*]]
1810 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_u6412svuint64x2_t(
1811 // CPP-TUPLE2-NEXT: entry:
1812 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[OP:%.*]]
1814 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_u6412svuint64x3_t(
1815 // CPP-TUPLE3-NEXT: entry:
1816 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[OP:%.*]]
1818 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_u6412svuint64x4_t(
1819 // CPP-TUPLE4-NEXT: entry:
1820 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[OP:%.*]]
1822 TYPE(svint64
) test_svreinterpret_s64_u64(TYPE(svuint64
) op
)
1824 return SVE_ACLE_FUNC(svreinterpret_s64
,_u64
)(op
);
1827 // CHECK-LABEL: @test_svreinterpret_s64_f16(
1828 // CHECK-NEXT: entry:
1829 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 2 x i64>
1830 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1832 // TUPLE2-LABEL: @test_svreinterpret_s64_f16(
1833 // TUPLE2-NEXT: entry:
1834 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 4 x i64>
1835 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1837 // TUPLE3-LABEL: @test_svreinterpret_s64_f16(
1838 // TUPLE3-NEXT: entry:
1839 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 6 x i64>
1840 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1842 // TUPLE4-LABEL: @test_svreinterpret_s64_f16(
1843 // TUPLE4-NEXT: entry:
1844 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 8 x i64>
1845 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1847 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_f16u13__SVFloat16_t(
1848 // CPP-CHECK-NEXT: entry:
1849 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 2 x i64>
1850 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1852 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_f1613svfloat16x2_t(
1853 // CPP-TUPLE2-NEXT: entry:
1854 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 4 x i64>
1855 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1857 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_f1613svfloat16x3_t(
1858 // CPP-TUPLE3-NEXT: entry:
1859 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 6 x i64>
1860 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1862 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_f1613svfloat16x4_t(
1863 // CPP-TUPLE4-NEXT: entry:
1864 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 8 x i64>
1865 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1867 TYPE(svint64
) test_svreinterpret_s64_f16(TYPE(svfloat16
) op
)
1869 return SVE_ACLE_FUNC(svreinterpret_s64
,_f16
)(op
);
1872 // CHECK-LABEL: @test_svreinterpret_s64_f32(
1873 // CHECK-NEXT: entry:
1874 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 2 x i64>
1875 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1877 // TUPLE2-LABEL: @test_svreinterpret_s64_f32(
1878 // TUPLE2-NEXT: entry:
1879 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 4 x i64>
1880 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1882 // TUPLE3-LABEL: @test_svreinterpret_s64_f32(
1883 // TUPLE3-NEXT: entry:
1884 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 6 x i64>
1885 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1887 // TUPLE4-LABEL: @test_svreinterpret_s64_f32(
1888 // TUPLE4-NEXT: entry:
1889 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 8 x i64>
1890 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1892 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_f32u13__SVFloat32_t(
1893 // CPP-CHECK-NEXT: entry:
1894 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 2 x i64>
1895 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1897 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_f3213svfloat32x2_t(
1898 // CPP-TUPLE2-NEXT: entry:
1899 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 4 x i64>
1900 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1902 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_f3213svfloat32x3_t(
1903 // CPP-TUPLE3-NEXT: entry:
1904 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 6 x i64>
1905 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1907 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_f3213svfloat32x4_t(
1908 // CPP-TUPLE4-NEXT: entry:
1909 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 8 x i64>
1910 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1912 TYPE(svint64
) test_svreinterpret_s64_f32(TYPE(svfloat32
) op
)
1914 return SVE_ACLE_FUNC(svreinterpret_s64
,_f32
)(op
);
1917 // CHECK-LABEL: @test_svreinterpret_s64_f64(
1918 // CHECK-NEXT: entry:
1919 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 2 x i64>
1920 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1922 // TUPLE2-LABEL: @test_svreinterpret_s64_f64(
1923 // TUPLE2-NEXT: entry:
1924 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 4 x i64>
1925 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1927 // TUPLE3-LABEL: @test_svreinterpret_s64_f64(
1928 // TUPLE3-NEXT: entry:
1929 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 6 x i64>
1930 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1932 // TUPLE4-LABEL: @test_svreinterpret_s64_f64(
1933 // TUPLE4-NEXT: entry:
1934 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 8 x i64>
1935 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1937 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_f64u13__SVFloat64_t(
1938 // CPP-CHECK-NEXT: entry:
1939 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 2 x i64>
1940 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
1942 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_f6413svfloat64x2_t(
1943 // CPP-TUPLE2-NEXT: entry:
1944 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 4 x i64>
1945 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
1947 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_f6413svfloat64x3_t(
1948 // CPP-TUPLE3-NEXT: entry:
1949 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 6 x i64>
1950 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
1952 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_f6413svfloat64x4_t(
1953 // CPP-TUPLE4-NEXT: entry:
1954 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 8 x i64>
1955 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
1957 TYPE(svint64
) test_svreinterpret_s64_f64(TYPE(svfloat64
) op
)
1959 return SVE_ACLE_FUNC(svreinterpret_s64
,_f64
)(op
);
1962 // CHECK-LABEL: @test_svreinterpret_u8_s8(
1963 // CHECK-NEXT: entry:
1964 // CHECK-NEXT: ret <vscale x 16 x i8> [[OP:%.*]]
1966 // TUPLE2-LABEL: @test_svreinterpret_u8_s8(
1967 // TUPLE2-NEXT: entry:
1968 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[OP:%.*]]
1970 // TUPLE3-LABEL: @test_svreinterpret_u8_s8(
1971 // TUPLE3-NEXT: entry:
1972 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[OP:%.*]]
1974 // TUPLE4-LABEL: @test_svreinterpret_u8_s8(
1975 // TUPLE4-NEXT: entry:
1976 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[OP:%.*]]
1978 // CPP-CHECK-LABEL: @_Z24test_svreinterpret_u8_s8u10__SVInt8_t(
1979 // CPP-CHECK-NEXT: entry:
1980 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[OP:%.*]]
1982 // CPP-TUPLE2-LABEL: @_Z24test_svreinterpret_u8_s810svint8x2_t(
1983 // CPP-TUPLE2-NEXT: entry:
1984 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[OP:%.*]]
1986 // CPP-TUPLE3-LABEL: @_Z24test_svreinterpret_u8_s810svint8x3_t(
1987 // CPP-TUPLE3-NEXT: entry:
1988 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[OP:%.*]]
1990 // CPP-TUPLE4-LABEL: @_Z24test_svreinterpret_u8_s810svint8x4_t(
1991 // CPP-TUPLE4-NEXT: entry:
1992 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[OP:%.*]]
1994 TYPE(svuint8
) test_svreinterpret_u8_s8(TYPE(svint8
) op
)
1996 return SVE_ACLE_FUNC(svreinterpret_u8
,_s8
)(op
);
1999 // CHECK-LABEL: @test_svreinterpret_u8_s16(
2000 // CHECK-NEXT: entry:
2001 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 16 x i8>
2002 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2004 // TUPLE2-LABEL: @test_svreinterpret_u8_s16(
2005 // TUPLE2-NEXT: entry:
2006 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 32 x i8>
2007 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2009 // TUPLE3-LABEL: @test_svreinterpret_u8_s16(
2010 // TUPLE3-NEXT: entry:
2011 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 48 x i8>
2012 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2014 // TUPLE4-LABEL: @test_svreinterpret_u8_s16(
2015 // TUPLE4-NEXT: entry:
2016 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 64 x i8>
2017 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2019 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_s16u11__SVInt16_t(
2020 // CPP-CHECK-NEXT: entry:
2021 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 16 x i8>
2022 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2024 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_s1611svint16x2_t(
2025 // CPP-TUPLE2-NEXT: entry:
2026 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 32 x i8>
2027 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2029 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_s1611svint16x3_t(
2030 // CPP-TUPLE3-NEXT: entry:
2031 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 48 x i8>
2032 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2034 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_s1611svint16x4_t(
2035 // CPP-TUPLE4-NEXT: entry:
2036 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 64 x i8>
2037 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2039 TYPE(svuint8
) test_svreinterpret_u8_s16(TYPE(svint16
) op
)
2041 return SVE_ACLE_FUNC(svreinterpret_u8
,_s16
)(op
);
2044 // CHECK-LABEL: @test_svreinterpret_u8_s32(
2045 // CHECK-NEXT: entry:
2046 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 16 x i8>
2047 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2049 // TUPLE2-LABEL: @test_svreinterpret_u8_s32(
2050 // TUPLE2-NEXT: entry:
2051 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 32 x i8>
2052 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2054 // TUPLE3-LABEL: @test_svreinterpret_u8_s32(
2055 // TUPLE3-NEXT: entry:
2056 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 48 x i8>
2057 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2059 // TUPLE4-LABEL: @test_svreinterpret_u8_s32(
2060 // TUPLE4-NEXT: entry:
2061 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 64 x i8>
2062 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2064 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_s32u11__SVInt32_t(
2065 // CPP-CHECK-NEXT: entry:
2066 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 16 x i8>
2067 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2069 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_s3211svint32x2_t(
2070 // CPP-TUPLE2-NEXT: entry:
2071 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 32 x i8>
2072 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2074 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_s3211svint32x3_t(
2075 // CPP-TUPLE3-NEXT: entry:
2076 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 48 x i8>
2077 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2079 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_s3211svint32x4_t(
2080 // CPP-TUPLE4-NEXT: entry:
2081 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 64 x i8>
2082 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2084 TYPE(svuint8
) test_svreinterpret_u8_s32(TYPE(svint32
) op
)
2086 return SVE_ACLE_FUNC(svreinterpret_u8
,_s32
)(op
);
2089 // CHECK-LABEL: @test_svreinterpret_u8_s64(
2090 // CHECK-NEXT: entry:
2091 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 16 x i8>
2092 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2094 // TUPLE2-LABEL: @test_svreinterpret_u8_s64(
2095 // TUPLE2-NEXT: entry:
2096 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 32 x i8>
2097 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2099 // TUPLE3-LABEL: @test_svreinterpret_u8_s64(
2100 // TUPLE3-NEXT: entry:
2101 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 48 x i8>
2102 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2104 // TUPLE4-LABEL: @test_svreinterpret_u8_s64(
2105 // TUPLE4-NEXT: entry:
2106 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 64 x i8>
2107 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2109 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_s64u11__SVInt64_t(
2110 // CPP-CHECK-NEXT: entry:
2111 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 16 x i8>
2112 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2114 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_s6411svint64x2_t(
2115 // CPP-TUPLE2-NEXT: entry:
2116 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 32 x i8>
2117 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2119 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_s6411svint64x3_t(
2120 // CPP-TUPLE3-NEXT: entry:
2121 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 48 x i8>
2122 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2124 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_s6411svint64x4_t(
2125 // CPP-TUPLE4-NEXT: entry:
2126 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 64 x i8>
2127 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2129 TYPE(svuint8
) test_svreinterpret_u8_s64(TYPE(svint64
) op
)
2131 return SVE_ACLE_FUNC(svreinterpret_u8
,_s64
)(op
);
2134 // CHECK-LABEL: @test_svreinterpret_u8_u8(
2135 // CHECK-NEXT: entry:
2136 // CHECK-NEXT: ret <vscale x 16 x i8> [[OP:%.*]]
2138 // TUPLE2-LABEL: @test_svreinterpret_u8_u8(
2139 // TUPLE2-NEXT: entry:
2140 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[OP:%.*]]
2142 // TUPLE3-LABEL: @test_svreinterpret_u8_u8(
2143 // TUPLE3-NEXT: entry:
2144 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[OP:%.*]]
2146 // TUPLE4-LABEL: @test_svreinterpret_u8_u8(
2147 // TUPLE4-NEXT: entry:
2148 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[OP:%.*]]
2150 // CPP-CHECK-LABEL: @_Z24test_svreinterpret_u8_u8u11__SVUint8_t(
2151 // CPP-CHECK-NEXT: entry:
2152 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[OP:%.*]]
2154 // CPP-TUPLE2-LABEL: @_Z24test_svreinterpret_u8_u811svuint8x2_t(
2155 // CPP-TUPLE2-NEXT: entry:
2156 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[OP:%.*]]
2158 // CPP-TUPLE3-LABEL: @_Z24test_svreinterpret_u8_u811svuint8x3_t(
2159 // CPP-TUPLE3-NEXT: entry:
2160 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[OP:%.*]]
2162 // CPP-TUPLE4-LABEL: @_Z24test_svreinterpret_u8_u811svuint8x4_t(
2163 // CPP-TUPLE4-NEXT: entry:
2164 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[OP:%.*]]
2166 TYPE(svuint8
) test_svreinterpret_u8_u8(TYPE(svuint8
) op
)
2168 return SVE_ACLE_FUNC(svreinterpret_u8
,_u8
)(op
);
2171 // CHECK-LABEL: @test_svreinterpret_u8_u16(
2172 // CHECK-NEXT: entry:
2173 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 16 x i8>
2174 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2176 // TUPLE2-LABEL: @test_svreinterpret_u8_u16(
2177 // TUPLE2-NEXT: entry:
2178 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 32 x i8>
2179 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2181 // TUPLE3-LABEL: @test_svreinterpret_u8_u16(
2182 // TUPLE3-NEXT: entry:
2183 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 48 x i8>
2184 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2186 // TUPLE4-LABEL: @test_svreinterpret_u8_u16(
2187 // TUPLE4-NEXT: entry:
2188 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 64 x i8>
2189 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2191 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_u16u12__SVUint16_t(
2192 // CPP-CHECK-NEXT: entry:
2193 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 16 x i8>
2194 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2196 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_u1612svuint16x2_t(
2197 // CPP-TUPLE2-NEXT: entry:
2198 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 32 x i8>
2199 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2201 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_u1612svuint16x3_t(
2202 // CPP-TUPLE3-NEXT: entry:
2203 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 48 x i8>
2204 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2206 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_u1612svuint16x4_t(
2207 // CPP-TUPLE4-NEXT: entry:
2208 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 64 x i8>
2209 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2211 TYPE(svuint8
) test_svreinterpret_u8_u16(TYPE(svuint16
) op
)
2213 return SVE_ACLE_FUNC(svreinterpret_u8
,_u16
)(op
);
2216 // CHECK-LABEL: @test_svreinterpret_u8_u32(
2217 // CHECK-NEXT: entry:
2218 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 16 x i8>
2219 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2221 // TUPLE2-LABEL: @test_svreinterpret_u8_u32(
2222 // TUPLE2-NEXT: entry:
2223 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 32 x i8>
2224 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2226 // TUPLE3-LABEL: @test_svreinterpret_u8_u32(
2227 // TUPLE3-NEXT: entry:
2228 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 48 x i8>
2229 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2231 // TUPLE4-LABEL: @test_svreinterpret_u8_u32(
2232 // TUPLE4-NEXT: entry:
2233 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 64 x i8>
2234 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2236 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_u32u12__SVUint32_t(
2237 // CPP-CHECK-NEXT: entry:
2238 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 16 x i8>
2239 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2241 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_u3212svuint32x2_t(
2242 // CPP-TUPLE2-NEXT: entry:
2243 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 32 x i8>
2244 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2246 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_u3212svuint32x3_t(
2247 // CPP-TUPLE3-NEXT: entry:
2248 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 48 x i8>
2249 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2251 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_u3212svuint32x4_t(
2252 // CPP-TUPLE4-NEXT: entry:
2253 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 64 x i8>
2254 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2256 TYPE(svuint8
) test_svreinterpret_u8_u32(TYPE(svuint32
) op
)
2258 return SVE_ACLE_FUNC(svreinterpret_u8
,_u32
)(op
);
2261 // CHECK-LABEL: @test_svreinterpret_u8_u64(
2262 // CHECK-NEXT: entry:
2263 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 16 x i8>
2264 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2266 // TUPLE2-LABEL: @test_svreinterpret_u8_u64(
2267 // TUPLE2-NEXT: entry:
2268 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 32 x i8>
2269 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2271 // TUPLE3-LABEL: @test_svreinterpret_u8_u64(
2272 // TUPLE3-NEXT: entry:
2273 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 48 x i8>
2274 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2276 // TUPLE4-LABEL: @test_svreinterpret_u8_u64(
2277 // TUPLE4-NEXT: entry:
2278 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 64 x i8>
2279 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2281 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_u64u12__SVUint64_t(
2282 // CPP-CHECK-NEXT: entry:
2283 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 16 x i8>
2284 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2286 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_u6412svuint64x2_t(
2287 // CPP-TUPLE2-NEXT: entry:
2288 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 32 x i8>
2289 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2291 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_u6412svuint64x3_t(
2292 // CPP-TUPLE3-NEXT: entry:
2293 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 48 x i8>
2294 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2296 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_u6412svuint64x4_t(
2297 // CPP-TUPLE4-NEXT: entry:
2298 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 64 x i8>
2299 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2301 TYPE(svuint8
) test_svreinterpret_u8_u64(TYPE(svuint64
) op
)
2303 return SVE_ACLE_FUNC(svreinterpret_u8
,_u64
)(op
);
2306 // CHECK-LABEL: @test_svreinterpret_u8_f16(
2307 // CHECK-NEXT: entry:
2308 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 16 x i8>
2309 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2311 // TUPLE2-LABEL: @test_svreinterpret_u8_f16(
2312 // TUPLE2-NEXT: entry:
2313 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 32 x i8>
2314 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2316 // TUPLE3-LABEL: @test_svreinterpret_u8_f16(
2317 // TUPLE3-NEXT: entry:
2318 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 48 x i8>
2319 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2321 // TUPLE4-LABEL: @test_svreinterpret_u8_f16(
2322 // TUPLE4-NEXT: entry:
2323 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 64 x i8>
2324 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2326 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_f16u13__SVFloat16_t(
2327 // CPP-CHECK-NEXT: entry:
2328 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 16 x i8>
2329 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2331 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_f1613svfloat16x2_t(
2332 // CPP-TUPLE2-NEXT: entry:
2333 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 32 x i8>
2334 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2336 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_f1613svfloat16x3_t(
2337 // CPP-TUPLE3-NEXT: entry:
2338 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 48 x i8>
2339 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2341 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_f1613svfloat16x4_t(
2342 // CPP-TUPLE4-NEXT: entry:
2343 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 64 x i8>
2344 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2346 TYPE(svuint8
) test_svreinterpret_u8_f16(TYPE(svfloat16
) op
)
2348 return SVE_ACLE_FUNC(svreinterpret_u8
,_f16
)(op
);
2351 // CHECK-LABEL: @test_svreinterpret_u8_f32(
2352 // CHECK-NEXT: entry:
2353 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 16 x i8>
2354 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2356 // TUPLE2-LABEL: @test_svreinterpret_u8_f32(
2357 // TUPLE2-NEXT: entry:
2358 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 32 x i8>
2359 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2361 // TUPLE3-LABEL: @test_svreinterpret_u8_f32(
2362 // TUPLE3-NEXT: entry:
2363 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 48 x i8>
2364 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2366 // TUPLE4-LABEL: @test_svreinterpret_u8_f32(
2367 // TUPLE4-NEXT: entry:
2368 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 64 x i8>
2369 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2371 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_f32u13__SVFloat32_t(
2372 // CPP-CHECK-NEXT: entry:
2373 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 16 x i8>
2374 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2376 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_f3213svfloat32x2_t(
2377 // CPP-TUPLE2-NEXT: entry:
2378 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 32 x i8>
2379 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2381 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_f3213svfloat32x3_t(
2382 // CPP-TUPLE3-NEXT: entry:
2383 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 48 x i8>
2384 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2386 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_f3213svfloat32x4_t(
2387 // CPP-TUPLE4-NEXT: entry:
2388 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 64 x i8>
2389 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2391 TYPE(svuint8
) test_svreinterpret_u8_f32(TYPE(svfloat32
) op
)
2393 return SVE_ACLE_FUNC(svreinterpret_u8
,_f32
)(op
);
2396 // CHECK-LABEL: @test_svreinterpret_u8_f64(
2397 // CHECK-NEXT: entry:
2398 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 16 x i8>
2399 // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2401 // TUPLE2-LABEL: @test_svreinterpret_u8_f64(
2402 // TUPLE2-NEXT: entry:
2403 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 32 x i8>
2404 // TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2406 // TUPLE3-LABEL: @test_svreinterpret_u8_f64(
2407 // TUPLE3-NEXT: entry:
2408 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 48 x i8>
2409 // TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2411 // TUPLE4-LABEL: @test_svreinterpret_u8_f64(
2412 // TUPLE4-NEXT: entry:
2413 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 64 x i8>
2414 // TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2416 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_f64u13__SVFloat64_t(
2417 // CPP-CHECK-NEXT: entry:
2418 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 16 x i8>
2419 // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]]
2421 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_f6413svfloat64x2_t(
2422 // CPP-TUPLE2-NEXT: entry:
2423 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 32 x i8>
2424 // CPP-TUPLE2-NEXT: ret <vscale x 32 x i8> [[TMP0]]
2426 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_f6413svfloat64x3_t(
2427 // CPP-TUPLE3-NEXT: entry:
2428 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 48 x i8>
2429 // CPP-TUPLE3-NEXT: ret <vscale x 48 x i8> [[TMP0]]
2431 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_f6413svfloat64x4_t(
2432 // CPP-TUPLE4-NEXT: entry:
2433 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 64 x i8>
2434 // CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
2436 TYPE(svuint8
) test_svreinterpret_u8_f64(TYPE(svfloat64
) op
)
2438 return SVE_ACLE_FUNC(svreinterpret_u8
,_f64
)(op
);
2441 // CHECK-LABEL: @test_svreinterpret_u16_s8(
2442 // CHECK-NEXT: entry:
2443 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 8 x i16>
2444 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2446 // TUPLE2-LABEL: @test_svreinterpret_u16_s8(
2447 // TUPLE2-NEXT: entry:
2448 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 16 x i16>
2449 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2451 // TUPLE3-LABEL: @test_svreinterpret_u16_s8(
2452 // TUPLE3-NEXT: entry:
2453 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 24 x i16>
2454 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2456 // TUPLE4-LABEL: @test_svreinterpret_u16_s8(
2457 // TUPLE4-NEXT: entry:
2458 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 32 x i16>
2459 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2461 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u16_s8u10__SVInt8_t(
2462 // CPP-CHECK-NEXT: entry:
2463 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 8 x i16>
2464 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2466 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u16_s810svint8x2_t(
2467 // CPP-TUPLE2-NEXT: entry:
2468 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 16 x i16>
2469 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2471 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u16_s810svint8x3_t(
2472 // CPP-TUPLE3-NEXT: entry:
2473 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 24 x i16>
2474 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2476 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u16_s810svint8x4_t(
2477 // CPP-TUPLE4-NEXT: entry:
2478 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 32 x i16>
2479 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2481 TYPE(svuint16
) test_svreinterpret_u16_s8(TYPE(svint8
) op
)
2483 return SVE_ACLE_FUNC(svreinterpret_u16
,_s8
)(op
);
2486 // CHECK-LABEL: @test_svreinterpret_u16_s16(
2487 // CHECK-NEXT: entry:
2488 // CHECK-NEXT: ret <vscale x 8 x i16> [[OP:%.*]]
2490 // TUPLE2-LABEL: @test_svreinterpret_u16_s16(
2491 // TUPLE2-NEXT: entry:
2492 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[OP:%.*]]
2494 // TUPLE3-LABEL: @test_svreinterpret_u16_s16(
2495 // TUPLE3-NEXT: entry:
2496 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[OP:%.*]]
2498 // TUPLE4-LABEL: @test_svreinterpret_u16_s16(
2499 // TUPLE4-NEXT: entry:
2500 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[OP:%.*]]
2502 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_s16u11__SVInt16_t(
2503 // CPP-CHECK-NEXT: entry:
2504 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[OP:%.*]]
2506 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_s1611svint16x2_t(
2507 // CPP-TUPLE2-NEXT: entry:
2508 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[OP:%.*]]
2510 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_s1611svint16x3_t(
2511 // CPP-TUPLE3-NEXT: entry:
2512 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[OP:%.*]]
2514 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_s1611svint16x4_t(
2515 // CPP-TUPLE4-NEXT: entry:
2516 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[OP:%.*]]
2518 TYPE(svuint16
) test_svreinterpret_u16_s16(TYPE(svint16
) op
)
2520 return SVE_ACLE_FUNC(svreinterpret_u16
,_s16
)(op
);
2523 // CHECK-LABEL: @test_svreinterpret_u16_s32(
2524 // CHECK-NEXT: entry:
2525 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 8 x i16>
2526 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2528 // TUPLE2-LABEL: @test_svreinterpret_u16_s32(
2529 // TUPLE2-NEXT: entry:
2530 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 16 x i16>
2531 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2533 // TUPLE3-LABEL: @test_svreinterpret_u16_s32(
2534 // TUPLE3-NEXT: entry:
2535 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 24 x i16>
2536 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2538 // TUPLE4-LABEL: @test_svreinterpret_u16_s32(
2539 // TUPLE4-NEXT: entry:
2540 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 32 x i16>
2541 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2543 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_s32u11__SVInt32_t(
2544 // CPP-CHECK-NEXT: entry:
2545 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 8 x i16>
2546 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2548 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_s3211svint32x2_t(
2549 // CPP-TUPLE2-NEXT: entry:
2550 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 16 x i16>
2551 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2553 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_s3211svint32x3_t(
2554 // CPP-TUPLE3-NEXT: entry:
2555 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 24 x i16>
2556 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2558 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_s3211svint32x4_t(
2559 // CPP-TUPLE4-NEXT: entry:
2560 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 32 x i16>
2561 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2563 TYPE(svuint16
) test_svreinterpret_u16_s32(TYPE(svint32
) op
)
2565 return SVE_ACLE_FUNC(svreinterpret_u16
,_s32
)(op
);
2568 // CHECK-LABEL: @test_svreinterpret_u16_s64(
2569 // CHECK-NEXT: entry:
2570 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 8 x i16>
2571 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2573 // TUPLE2-LABEL: @test_svreinterpret_u16_s64(
2574 // TUPLE2-NEXT: entry:
2575 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 16 x i16>
2576 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2578 // TUPLE3-LABEL: @test_svreinterpret_u16_s64(
2579 // TUPLE3-NEXT: entry:
2580 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 24 x i16>
2581 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2583 // TUPLE4-LABEL: @test_svreinterpret_u16_s64(
2584 // TUPLE4-NEXT: entry:
2585 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 32 x i16>
2586 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2588 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_s64u11__SVInt64_t(
2589 // CPP-CHECK-NEXT: entry:
2590 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 8 x i16>
2591 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2593 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_s6411svint64x2_t(
2594 // CPP-TUPLE2-NEXT: entry:
2595 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 16 x i16>
2596 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2598 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_s6411svint64x3_t(
2599 // CPP-TUPLE3-NEXT: entry:
2600 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 24 x i16>
2601 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2603 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_s6411svint64x4_t(
2604 // CPP-TUPLE4-NEXT: entry:
2605 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 32 x i16>
2606 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2608 TYPE(svuint16
) test_svreinterpret_u16_s64(TYPE(svint64
) op
)
2610 return SVE_ACLE_FUNC(svreinterpret_u16
,_s64
)(op
);
2613 // CHECK-LABEL: @test_svreinterpret_u16_u8(
2614 // CHECK-NEXT: entry:
2615 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 8 x i16>
2616 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2618 // TUPLE2-LABEL: @test_svreinterpret_u16_u8(
2619 // TUPLE2-NEXT: entry:
2620 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 16 x i16>
2621 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2623 // TUPLE3-LABEL: @test_svreinterpret_u16_u8(
2624 // TUPLE3-NEXT: entry:
2625 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 24 x i16>
2626 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2628 // TUPLE4-LABEL: @test_svreinterpret_u16_u8(
2629 // TUPLE4-NEXT: entry:
2630 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 32 x i16>
2631 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2633 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u16_u8u11__SVUint8_t(
2634 // CPP-CHECK-NEXT: entry:
2635 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 8 x i16>
2636 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2638 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u16_u811svuint8x2_t(
2639 // CPP-TUPLE2-NEXT: entry:
2640 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 16 x i16>
2641 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2643 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u16_u811svuint8x3_t(
2644 // CPP-TUPLE3-NEXT: entry:
2645 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 24 x i16>
2646 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2648 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u16_u811svuint8x4_t(
2649 // CPP-TUPLE4-NEXT: entry:
2650 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 32 x i16>
2651 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2653 TYPE(svuint16
) test_svreinterpret_u16_u8(TYPE(svuint8
) op
)
2655 return SVE_ACLE_FUNC(svreinterpret_u16
,_u8
)(op
);
2658 // CHECK-LABEL: @test_svreinterpret_u16_u16(
2659 // CHECK-NEXT: entry:
2660 // CHECK-NEXT: ret <vscale x 8 x i16> [[OP:%.*]]
2662 // TUPLE2-LABEL: @test_svreinterpret_u16_u16(
2663 // TUPLE2-NEXT: entry:
2664 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[OP:%.*]]
2666 // TUPLE3-LABEL: @test_svreinterpret_u16_u16(
2667 // TUPLE3-NEXT: entry:
2668 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[OP:%.*]]
2670 // TUPLE4-LABEL: @test_svreinterpret_u16_u16(
2671 // TUPLE4-NEXT: entry:
2672 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[OP:%.*]]
2674 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_u16u12__SVUint16_t(
2675 // CPP-CHECK-NEXT: entry:
2676 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[OP:%.*]]
2678 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_u1612svuint16x2_t(
2679 // CPP-TUPLE2-NEXT: entry:
2680 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[OP:%.*]]
2682 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_u1612svuint16x3_t(
2683 // CPP-TUPLE3-NEXT: entry:
2684 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[OP:%.*]]
2686 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_u1612svuint16x4_t(
2687 // CPP-TUPLE4-NEXT: entry:
2688 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[OP:%.*]]
2690 TYPE(svuint16
) test_svreinterpret_u16_u16(TYPE(svuint16
) op
)
2692 return SVE_ACLE_FUNC(svreinterpret_u16
,_u16
)(op
);
2695 // CHECK-LABEL: @test_svreinterpret_u16_u32(
2696 // CHECK-NEXT: entry:
2697 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 8 x i16>
2698 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2700 // TUPLE2-LABEL: @test_svreinterpret_u16_u32(
2701 // TUPLE2-NEXT: entry:
2702 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 16 x i16>
2703 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2705 // TUPLE3-LABEL: @test_svreinterpret_u16_u32(
2706 // TUPLE3-NEXT: entry:
2707 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 24 x i16>
2708 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2710 // TUPLE4-LABEL: @test_svreinterpret_u16_u32(
2711 // TUPLE4-NEXT: entry:
2712 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 32 x i16>
2713 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2715 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_u32u12__SVUint32_t(
2716 // CPP-CHECK-NEXT: entry:
2717 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 8 x i16>
2718 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2720 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_u3212svuint32x2_t(
2721 // CPP-TUPLE2-NEXT: entry:
2722 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 16 x i16>
2723 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2725 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_u3212svuint32x3_t(
2726 // CPP-TUPLE3-NEXT: entry:
2727 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 24 x i16>
2728 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2730 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_u3212svuint32x4_t(
2731 // CPP-TUPLE4-NEXT: entry:
2732 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 32 x i16>
2733 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2735 TYPE(svuint16
) test_svreinterpret_u16_u32(TYPE(svuint32
) op
)
2737 return SVE_ACLE_FUNC(svreinterpret_u16
,_u32
)(op
);
2740 // CHECK-LABEL: @test_svreinterpret_u16_u64(
2741 // CHECK-NEXT: entry:
2742 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 8 x i16>
2743 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2745 // TUPLE2-LABEL: @test_svreinterpret_u16_u64(
2746 // TUPLE2-NEXT: entry:
2747 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 16 x i16>
2748 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2750 // TUPLE3-LABEL: @test_svreinterpret_u16_u64(
2751 // TUPLE3-NEXT: entry:
2752 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 24 x i16>
2753 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2755 // TUPLE4-LABEL: @test_svreinterpret_u16_u64(
2756 // TUPLE4-NEXT: entry:
2757 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 32 x i16>
2758 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2760 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_u64u12__SVUint64_t(
2761 // CPP-CHECK-NEXT: entry:
2762 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 8 x i16>
2763 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2765 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_u6412svuint64x2_t(
2766 // CPP-TUPLE2-NEXT: entry:
2767 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 16 x i16>
2768 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2770 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_u6412svuint64x3_t(
2771 // CPP-TUPLE3-NEXT: entry:
2772 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 24 x i16>
2773 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2775 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_u6412svuint64x4_t(
2776 // CPP-TUPLE4-NEXT: entry:
2777 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 32 x i16>
2778 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2780 TYPE(svuint16
) test_svreinterpret_u16_u64(TYPE(svuint64
) op
)
2782 return SVE_ACLE_FUNC(svreinterpret_u16
,_u64
)(op
);
2785 // CHECK-LABEL: @test_svreinterpret_u16_f16(
2786 // CHECK-NEXT: entry:
2787 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 8 x i16>
2788 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2790 // TUPLE2-LABEL: @test_svreinterpret_u16_f16(
2791 // TUPLE2-NEXT: entry:
2792 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 16 x i16>
2793 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2795 // TUPLE3-LABEL: @test_svreinterpret_u16_f16(
2796 // TUPLE3-NEXT: entry:
2797 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 24 x i16>
2798 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2800 // TUPLE4-LABEL: @test_svreinterpret_u16_f16(
2801 // TUPLE4-NEXT: entry:
2802 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 32 x i16>
2803 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2805 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_f16u13__SVFloat16_t(
2806 // CPP-CHECK-NEXT: entry:
2807 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 8 x i16>
2808 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2810 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_f1613svfloat16x2_t(
2811 // CPP-TUPLE2-NEXT: entry:
2812 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 16 x i16>
2813 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2815 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_f1613svfloat16x3_t(
2816 // CPP-TUPLE3-NEXT: entry:
2817 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 24 x i16>
2818 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2820 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_f1613svfloat16x4_t(
2821 // CPP-TUPLE4-NEXT: entry:
2822 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 32 x i16>
2823 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2825 TYPE(svuint16
) test_svreinterpret_u16_f16(TYPE(svfloat16
) op
)
2827 return SVE_ACLE_FUNC(svreinterpret_u16
,_f16
)(op
);
2830 // CHECK-LABEL: @test_svreinterpret_u16_f32(
2831 // CHECK-NEXT: entry:
2832 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 8 x i16>
2833 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2835 // TUPLE2-LABEL: @test_svreinterpret_u16_f32(
2836 // TUPLE2-NEXT: entry:
2837 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 16 x i16>
2838 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2840 // TUPLE3-LABEL: @test_svreinterpret_u16_f32(
2841 // TUPLE3-NEXT: entry:
2842 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 24 x i16>
2843 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2845 // TUPLE4-LABEL: @test_svreinterpret_u16_f32(
2846 // TUPLE4-NEXT: entry:
2847 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 32 x i16>
2848 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2850 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_f32u13__SVFloat32_t(
2851 // CPP-CHECK-NEXT: entry:
2852 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 8 x i16>
2853 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2855 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_f3213svfloat32x2_t(
2856 // CPP-TUPLE2-NEXT: entry:
2857 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 16 x i16>
2858 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2860 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_f3213svfloat32x3_t(
2861 // CPP-TUPLE3-NEXT: entry:
2862 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 24 x i16>
2863 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2865 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_f3213svfloat32x4_t(
2866 // CPP-TUPLE4-NEXT: entry:
2867 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 32 x i16>
2868 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2870 TYPE(svuint16
) test_svreinterpret_u16_f32(TYPE(svfloat32
) op
)
2872 return SVE_ACLE_FUNC(svreinterpret_u16
,_f32
)(op
);
2875 // CHECK-LABEL: @test_svreinterpret_u16_f64(
2876 // CHECK-NEXT: entry:
2877 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 8 x i16>
2878 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2880 // TUPLE2-LABEL: @test_svreinterpret_u16_f64(
2881 // TUPLE2-NEXT: entry:
2882 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 16 x i16>
2883 // TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2885 // TUPLE3-LABEL: @test_svreinterpret_u16_f64(
2886 // TUPLE3-NEXT: entry:
2887 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 24 x i16>
2888 // TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2890 // TUPLE4-LABEL: @test_svreinterpret_u16_f64(
2891 // TUPLE4-NEXT: entry:
2892 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 32 x i16>
2893 // TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2895 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_f64u13__SVFloat64_t(
2896 // CPP-CHECK-NEXT: entry:
2897 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 8 x i16>
2898 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]]
2900 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_f6413svfloat64x2_t(
2901 // CPP-TUPLE2-NEXT: entry:
2902 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 16 x i16>
2903 // CPP-TUPLE2-NEXT: ret <vscale x 16 x i16> [[TMP0]]
2905 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_f6413svfloat64x3_t(
2906 // CPP-TUPLE3-NEXT: entry:
2907 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 24 x i16>
2908 // CPP-TUPLE3-NEXT: ret <vscale x 24 x i16> [[TMP0]]
2910 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_f6413svfloat64x4_t(
2911 // CPP-TUPLE4-NEXT: entry:
2912 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 32 x i16>
2913 // CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
2915 TYPE(svuint16
) test_svreinterpret_u16_f64(TYPE(svfloat64
) op
)
2917 return SVE_ACLE_FUNC(svreinterpret_u16
,_f64
)(op
);
2920 // CHECK-LABEL: @test_svreinterpret_u32_s8(
2921 // CHECK-NEXT: entry:
2922 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 4 x i32>
2923 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
2925 // TUPLE2-LABEL: @test_svreinterpret_u32_s8(
2926 // TUPLE2-NEXT: entry:
2927 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 8 x i32>
2928 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
2930 // TUPLE3-LABEL: @test_svreinterpret_u32_s8(
2931 // TUPLE3-NEXT: entry:
2932 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 12 x i32>
2933 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
2935 // TUPLE4-LABEL: @test_svreinterpret_u32_s8(
2936 // TUPLE4-NEXT: entry:
2937 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 16 x i32>
2938 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
2940 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u32_s8u10__SVInt8_t(
2941 // CPP-CHECK-NEXT: entry:
2942 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 4 x i32>
2943 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
2945 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u32_s810svint8x2_t(
2946 // CPP-TUPLE2-NEXT: entry:
2947 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 8 x i32>
2948 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
2950 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u32_s810svint8x3_t(
2951 // CPP-TUPLE3-NEXT: entry:
2952 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 12 x i32>
2953 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
2955 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u32_s810svint8x4_t(
2956 // CPP-TUPLE4-NEXT: entry:
2957 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 16 x i32>
2958 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
2960 TYPE(svuint32
) test_svreinterpret_u32_s8(TYPE(svint8
) op
)
2962 return SVE_ACLE_FUNC(svreinterpret_u32
,_s8
)(op
);
2965 // CHECK-LABEL: @test_svreinterpret_u32_s16(
2966 // CHECK-NEXT: entry:
2967 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 4 x i32>
2968 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
2970 // TUPLE2-LABEL: @test_svreinterpret_u32_s16(
2971 // TUPLE2-NEXT: entry:
2972 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 8 x i32>
2973 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
2975 // TUPLE3-LABEL: @test_svreinterpret_u32_s16(
2976 // TUPLE3-NEXT: entry:
2977 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 12 x i32>
2978 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
2980 // TUPLE4-LABEL: @test_svreinterpret_u32_s16(
2981 // TUPLE4-NEXT: entry:
2982 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 16 x i32>
2983 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
2985 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_s16u11__SVInt16_t(
2986 // CPP-CHECK-NEXT: entry:
2987 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 4 x i32>
2988 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
2990 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_s1611svint16x2_t(
2991 // CPP-TUPLE2-NEXT: entry:
2992 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 8 x i32>
2993 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
2995 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_s1611svint16x3_t(
2996 // CPP-TUPLE3-NEXT: entry:
2997 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 12 x i32>
2998 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
3000 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_s1611svint16x4_t(
3001 // CPP-TUPLE4-NEXT: entry:
3002 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 16 x i32>
3003 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
3005 TYPE(svuint32
) test_svreinterpret_u32_s16(TYPE(svint16
) op
)
3007 return SVE_ACLE_FUNC(svreinterpret_u32
,_s16
)(op
);
3010 // CHECK-LABEL: @test_svreinterpret_u32_s32(
3011 // CHECK-NEXT: entry:
3012 // CHECK-NEXT: ret <vscale x 4 x i32> [[OP:%.*]]
3014 // TUPLE2-LABEL: @test_svreinterpret_u32_s32(
3015 // TUPLE2-NEXT: entry:
3016 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[OP:%.*]]
3018 // TUPLE3-LABEL: @test_svreinterpret_u32_s32(
3019 // TUPLE3-NEXT: entry:
3020 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[OP:%.*]]
3022 // TUPLE4-LABEL: @test_svreinterpret_u32_s32(
3023 // TUPLE4-NEXT: entry:
3024 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[OP:%.*]]
3026 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_s32u11__SVInt32_t(
3027 // CPP-CHECK-NEXT: entry:
3028 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[OP:%.*]]
3030 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_s3211svint32x2_t(
3031 // CPP-TUPLE2-NEXT: entry:
3032 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[OP:%.*]]
3034 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_s3211svint32x3_t(
3035 // CPP-TUPLE3-NEXT: entry:
3036 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[OP:%.*]]
3038 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_s3211svint32x4_t(
3039 // CPP-TUPLE4-NEXT: entry:
3040 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[OP:%.*]]
3042 TYPE(svuint32
) test_svreinterpret_u32_s32(TYPE(svint32
) op
)
3044 return SVE_ACLE_FUNC(svreinterpret_u32
,_s32
)(op
);
3047 // CHECK-LABEL: @test_svreinterpret_u32_s64(
3048 // CHECK-NEXT: entry:
3049 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 4 x i32>
3050 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
3052 // TUPLE2-LABEL: @test_svreinterpret_u32_s64(
3053 // TUPLE2-NEXT: entry:
3054 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 8 x i32>
3055 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
3057 // TUPLE3-LABEL: @test_svreinterpret_u32_s64(
3058 // TUPLE3-NEXT: entry:
3059 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 12 x i32>
3060 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
3062 // TUPLE4-LABEL: @test_svreinterpret_u32_s64(
3063 // TUPLE4-NEXT: entry:
3064 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 16 x i32>
3065 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
3067 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_s64u11__SVInt64_t(
3068 // CPP-CHECK-NEXT: entry:
3069 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 4 x i32>
3070 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
3072 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_s6411svint64x2_t(
3073 // CPP-TUPLE2-NEXT: entry:
3074 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 8 x i32>
3075 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
3077 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_s6411svint64x3_t(
3078 // CPP-TUPLE3-NEXT: entry:
3079 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 12 x i32>
3080 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
3082 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_s6411svint64x4_t(
3083 // CPP-TUPLE4-NEXT: entry:
3084 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 16 x i32>
3085 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
3087 TYPE(svuint32
) test_svreinterpret_u32_s64(TYPE(svint64
) op
)
3089 return SVE_ACLE_FUNC(svreinterpret_u32
,_s64
)(op
);
3092 // CHECK-LABEL: @test_svreinterpret_u32_u8(
3093 // CHECK-NEXT: entry:
3094 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 4 x i32>
3095 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
3097 // TUPLE2-LABEL: @test_svreinterpret_u32_u8(
3098 // TUPLE2-NEXT: entry:
3099 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 8 x i32>
3100 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
3102 // TUPLE3-LABEL: @test_svreinterpret_u32_u8(
3103 // TUPLE3-NEXT: entry:
3104 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 12 x i32>
3105 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
3107 // TUPLE4-LABEL: @test_svreinterpret_u32_u8(
3108 // TUPLE4-NEXT: entry:
3109 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 16 x i32>
3110 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
3112 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u32_u8u11__SVUint8_t(
3113 // CPP-CHECK-NEXT: entry:
3114 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 4 x i32>
3115 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
3117 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u32_u811svuint8x2_t(
3118 // CPP-TUPLE2-NEXT: entry:
3119 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 8 x i32>
3120 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
3122 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u32_u811svuint8x3_t(
3123 // CPP-TUPLE3-NEXT: entry:
3124 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 12 x i32>
3125 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
3127 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u32_u811svuint8x4_t(
3128 // CPP-TUPLE4-NEXT: entry:
3129 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 16 x i32>
3130 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
3132 TYPE(svuint32
) test_svreinterpret_u32_u8(TYPE(svuint8
) op
)
3134 return SVE_ACLE_FUNC(svreinterpret_u32
,_u8
)(op
);
3137 // CHECK-LABEL: @test_svreinterpret_u32_u16(
3138 // CHECK-NEXT: entry:
3139 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 4 x i32>
3140 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
3142 // TUPLE2-LABEL: @test_svreinterpret_u32_u16(
3143 // TUPLE2-NEXT: entry:
3144 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 8 x i32>
3145 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
3147 // TUPLE3-LABEL: @test_svreinterpret_u32_u16(
3148 // TUPLE3-NEXT: entry:
3149 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 12 x i32>
3150 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
3152 // TUPLE4-LABEL: @test_svreinterpret_u32_u16(
3153 // TUPLE4-NEXT: entry:
3154 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 16 x i32>
3155 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
3157 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_u16u12__SVUint16_t(
3158 // CPP-CHECK-NEXT: entry:
3159 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 4 x i32>
3160 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
3162 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_u1612svuint16x2_t(
3163 // CPP-TUPLE2-NEXT: entry:
3164 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 8 x i32>
3165 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
3167 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_u1612svuint16x3_t(
3168 // CPP-TUPLE3-NEXT: entry:
3169 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 12 x i32>
3170 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
3172 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_u1612svuint16x4_t(
3173 // CPP-TUPLE4-NEXT: entry:
3174 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 16 x i32>
3175 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
3177 TYPE(svuint32
) test_svreinterpret_u32_u16(TYPE(svuint16
) op
)
3179 return SVE_ACLE_FUNC(svreinterpret_u32
,_u16
)(op
);
3182 // CHECK-LABEL: @test_svreinterpret_u32_u32(
3183 // CHECK-NEXT: entry:
3184 // CHECK-NEXT: ret <vscale x 4 x i32> [[OP:%.*]]
3186 // TUPLE2-LABEL: @test_svreinterpret_u32_u32(
3187 // TUPLE2-NEXT: entry:
3188 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[OP:%.*]]
3190 // TUPLE3-LABEL: @test_svreinterpret_u32_u32(
3191 // TUPLE3-NEXT: entry:
3192 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[OP:%.*]]
3194 // TUPLE4-LABEL: @test_svreinterpret_u32_u32(
3195 // TUPLE4-NEXT: entry:
3196 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[OP:%.*]]
3198 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_u32u12__SVUint32_t(
3199 // CPP-CHECK-NEXT: entry:
3200 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[OP:%.*]]
3202 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_u3212svuint32x2_t(
3203 // CPP-TUPLE2-NEXT: entry:
3204 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[OP:%.*]]
3206 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_u3212svuint32x3_t(
3207 // CPP-TUPLE3-NEXT: entry:
3208 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[OP:%.*]]
3210 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_u3212svuint32x4_t(
3211 // CPP-TUPLE4-NEXT: entry:
3212 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[OP:%.*]]
3214 TYPE(svuint32
) test_svreinterpret_u32_u32(TYPE(svuint32
) op
)
3216 return SVE_ACLE_FUNC(svreinterpret_u32
,_u32
)(op
);
3219 // CHECK-LABEL: @test_svreinterpret_u32_u64(
3220 // CHECK-NEXT: entry:
3221 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 4 x i32>
3222 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
3224 // TUPLE2-LABEL: @test_svreinterpret_u32_u64(
3225 // TUPLE2-NEXT: entry:
3226 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 8 x i32>
3227 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
3229 // TUPLE3-LABEL: @test_svreinterpret_u32_u64(
3230 // TUPLE3-NEXT: entry:
3231 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 12 x i32>
3232 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
3234 // TUPLE4-LABEL: @test_svreinterpret_u32_u64(
3235 // TUPLE4-NEXT: entry:
3236 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 16 x i32>
3237 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
3239 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_u64u12__SVUint64_t(
3240 // CPP-CHECK-NEXT: entry:
3241 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 4 x i32>
3242 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
3244 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_u6412svuint64x2_t(
3245 // CPP-TUPLE2-NEXT: entry:
3246 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 8 x i32>
3247 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
3249 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_u6412svuint64x3_t(
3250 // CPP-TUPLE3-NEXT: entry:
3251 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 12 x i32>
3252 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
3254 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_u6412svuint64x4_t(
3255 // CPP-TUPLE4-NEXT: entry:
3256 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 16 x i32>
3257 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
3259 TYPE(svuint32
) test_svreinterpret_u32_u64(TYPE(svuint64
) op
)
3261 return SVE_ACLE_FUNC(svreinterpret_u32
,_u64
)(op
);
3264 // CHECK-LABEL: @test_svreinterpret_u32_f16(
3265 // CHECK-NEXT: entry:
3266 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 4 x i32>
3267 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
3269 // TUPLE2-LABEL: @test_svreinterpret_u32_f16(
3270 // TUPLE2-NEXT: entry:
3271 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 8 x i32>
3272 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
3274 // TUPLE3-LABEL: @test_svreinterpret_u32_f16(
3275 // TUPLE3-NEXT: entry:
3276 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 12 x i32>
3277 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
3279 // TUPLE4-LABEL: @test_svreinterpret_u32_f16(
3280 // TUPLE4-NEXT: entry:
3281 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 16 x i32>
3282 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
3284 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_f16u13__SVFloat16_t(
3285 // CPP-CHECK-NEXT: entry:
3286 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 4 x i32>
3287 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
3289 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_f1613svfloat16x2_t(
3290 // CPP-TUPLE2-NEXT: entry:
3291 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 8 x i32>
3292 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
3294 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_f1613svfloat16x3_t(
3295 // CPP-TUPLE3-NEXT: entry:
3296 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 12 x i32>
3297 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
3299 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_f1613svfloat16x4_t(
3300 // CPP-TUPLE4-NEXT: entry:
3301 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 16 x i32>
3302 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
3304 TYPE(svuint32
) test_svreinterpret_u32_f16(TYPE(svfloat16
) op
)
3306 return SVE_ACLE_FUNC(svreinterpret_u32
,_f16
)(op
);
3309 // CHECK-LABEL: @test_svreinterpret_u32_f32(
3310 // CHECK-NEXT: entry:
3311 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 4 x i32>
3312 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
3314 // TUPLE2-LABEL: @test_svreinterpret_u32_f32(
3315 // TUPLE2-NEXT: entry:
3316 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 8 x i32>
3317 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
3319 // TUPLE3-LABEL: @test_svreinterpret_u32_f32(
3320 // TUPLE3-NEXT: entry:
3321 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 12 x i32>
3322 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
3324 // TUPLE4-LABEL: @test_svreinterpret_u32_f32(
3325 // TUPLE4-NEXT: entry:
3326 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 16 x i32>
3327 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
3329 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_f32u13__SVFloat32_t(
3330 // CPP-CHECK-NEXT: entry:
3331 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 4 x i32>
3332 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
3334 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_f3213svfloat32x2_t(
3335 // CPP-TUPLE2-NEXT: entry:
3336 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 8 x i32>
3337 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
3339 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_f3213svfloat32x3_t(
3340 // CPP-TUPLE3-NEXT: entry:
3341 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 12 x i32>
3342 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
3344 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_f3213svfloat32x4_t(
3345 // CPP-TUPLE4-NEXT: entry:
3346 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 16 x i32>
3347 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
3349 TYPE(svuint32
) test_svreinterpret_u32_f32(TYPE(svfloat32
) op
)
3351 return SVE_ACLE_FUNC(svreinterpret_u32
,_f32
)(op
);
3354 // CHECK-LABEL: @test_svreinterpret_u32_f64(
3355 // CHECK-NEXT: entry:
3356 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 4 x i32>
3357 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
3359 // TUPLE2-LABEL: @test_svreinterpret_u32_f64(
3360 // TUPLE2-NEXT: entry:
3361 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 8 x i32>
3362 // TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
3364 // TUPLE3-LABEL: @test_svreinterpret_u32_f64(
3365 // TUPLE3-NEXT: entry:
3366 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 12 x i32>
3367 // TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
3369 // TUPLE4-LABEL: @test_svreinterpret_u32_f64(
3370 // TUPLE4-NEXT: entry:
3371 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 16 x i32>
3372 // TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
3374 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_f64u13__SVFloat64_t(
3375 // CPP-CHECK-NEXT: entry:
3376 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 4 x i32>
3377 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]]
3379 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_f6413svfloat64x2_t(
3380 // CPP-TUPLE2-NEXT: entry:
3381 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 8 x i32>
3382 // CPP-TUPLE2-NEXT: ret <vscale x 8 x i32> [[TMP0]]
3384 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_f6413svfloat64x3_t(
3385 // CPP-TUPLE3-NEXT: entry:
3386 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 12 x i32>
3387 // CPP-TUPLE3-NEXT: ret <vscale x 12 x i32> [[TMP0]]
3389 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_f6413svfloat64x4_t(
3390 // CPP-TUPLE4-NEXT: entry:
3391 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 16 x i32>
3392 // CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
3394 TYPE(svuint32
) test_svreinterpret_u32_f64(TYPE(svfloat64
) op
)
3396 return SVE_ACLE_FUNC(svreinterpret_u32
,_f64
)(op
);
3399 // CHECK-LABEL: @test_svreinterpret_u64_s8(
3400 // CHECK-NEXT: entry:
3401 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 2 x i64>
3402 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3404 // TUPLE2-LABEL: @test_svreinterpret_u64_s8(
3405 // TUPLE2-NEXT: entry:
3406 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 4 x i64>
3407 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3409 // TUPLE3-LABEL: @test_svreinterpret_u64_s8(
3410 // TUPLE3-NEXT: entry:
3411 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 6 x i64>
3412 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3414 // TUPLE4-LABEL: @test_svreinterpret_u64_s8(
3415 // TUPLE4-NEXT: entry:
3416 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 8 x i64>
3417 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3419 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u64_s8u10__SVInt8_t(
3420 // CPP-CHECK-NEXT: entry:
3421 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 2 x i64>
3422 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3424 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u64_s810svint8x2_t(
3425 // CPP-TUPLE2-NEXT: entry:
3426 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 4 x i64>
3427 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3429 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u64_s810svint8x3_t(
3430 // CPP-TUPLE3-NEXT: entry:
3431 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 6 x i64>
3432 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3434 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u64_s810svint8x4_t(
3435 // CPP-TUPLE4-NEXT: entry:
3436 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 8 x i64>
3437 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3439 TYPE(svuint64
) test_svreinterpret_u64_s8(TYPE(svint8
) op
)
3441 return SVE_ACLE_FUNC(svreinterpret_u64
,_s8
)(op
);
3444 // CHECK-LABEL: @test_svreinterpret_u64_s16(
3445 // CHECK-NEXT: entry:
3446 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 2 x i64>
3447 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3449 // TUPLE2-LABEL: @test_svreinterpret_u64_s16(
3450 // TUPLE2-NEXT: entry:
3451 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 4 x i64>
3452 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3454 // TUPLE3-LABEL: @test_svreinterpret_u64_s16(
3455 // TUPLE3-NEXT: entry:
3456 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 6 x i64>
3457 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3459 // TUPLE4-LABEL: @test_svreinterpret_u64_s16(
3460 // TUPLE4-NEXT: entry:
3461 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 8 x i64>
3462 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3464 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_s16u11__SVInt16_t(
3465 // CPP-CHECK-NEXT: entry:
3466 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 2 x i64>
3467 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3469 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_s1611svint16x2_t(
3470 // CPP-TUPLE2-NEXT: entry:
3471 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 4 x i64>
3472 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3474 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_s1611svint16x3_t(
3475 // CPP-TUPLE3-NEXT: entry:
3476 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 6 x i64>
3477 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3479 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_s1611svint16x4_t(
3480 // CPP-TUPLE4-NEXT: entry:
3481 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 8 x i64>
3482 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3484 TYPE(svuint64
) test_svreinterpret_u64_s16(TYPE(svint16
) op
)
3486 return SVE_ACLE_FUNC(svreinterpret_u64
,_s16
)(op
);
3489 // CHECK-LABEL: @test_svreinterpret_u64_s32(
3490 // CHECK-NEXT: entry:
3491 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 2 x i64>
3492 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3494 // TUPLE2-LABEL: @test_svreinterpret_u64_s32(
3495 // TUPLE2-NEXT: entry:
3496 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 4 x i64>
3497 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3499 // TUPLE3-LABEL: @test_svreinterpret_u64_s32(
3500 // TUPLE3-NEXT: entry:
3501 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 6 x i64>
3502 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3504 // TUPLE4-LABEL: @test_svreinterpret_u64_s32(
3505 // TUPLE4-NEXT: entry:
3506 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 8 x i64>
3507 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3509 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_s32u11__SVInt32_t(
3510 // CPP-CHECK-NEXT: entry:
3511 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 2 x i64>
3512 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3514 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_s3211svint32x2_t(
3515 // CPP-TUPLE2-NEXT: entry:
3516 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 4 x i64>
3517 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3519 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_s3211svint32x3_t(
3520 // CPP-TUPLE3-NEXT: entry:
3521 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 6 x i64>
3522 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3524 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_s3211svint32x4_t(
3525 // CPP-TUPLE4-NEXT: entry:
3526 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 8 x i64>
3527 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3529 TYPE(svuint64
) test_svreinterpret_u64_s32(TYPE(svint32
) op
)
3531 return SVE_ACLE_FUNC(svreinterpret_u64
,_s32
)(op
);
3534 // CHECK-LABEL: @test_svreinterpret_u64_s64(
3535 // CHECK-NEXT: entry:
3536 // CHECK-NEXT: ret <vscale x 2 x i64> [[OP:%.*]]
3538 // TUPLE2-LABEL: @test_svreinterpret_u64_s64(
3539 // TUPLE2-NEXT: entry:
3540 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[OP:%.*]]
3542 // TUPLE3-LABEL: @test_svreinterpret_u64_s64(
3543 // TUPLE3-NEXT: entry:
3544 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[OP:%.*]]
3546 // TUPLE4-LABEL: @test_svreinterpret_u64_s64(
3547 // TUPLE4-NEXT: entry:
3548 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[OP:%.*]]
3550 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_s64u11__SVInt64_t(
3551 // CPP-CHECK-NEXT: entry:
3552 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[OP:%.*]]
3554 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_s6411svint64x2_t(
3555 // CPP-TUPLE2-NEXT: entry:
3556 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[OP:%.*]]
3558 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_s6411svint64x3_t(
3559 // CPP-TUPLE3-NEXT: entry:
3560 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[OP:%.*]]
3562 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_s6411svint64x4_t(
3563 // CPP-TUPLE4-NEXT: entry:
3564 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[OP:%.*]]
3566 TYPE(svuint64
) test_svreinterpret_u64_s64(TYPE(svint64
) op
)
3568 return SVE_ACLE_FUNC(svreinterpret_u64
,_s64
)(op
);
3571 // CHECK-LABEL: @test_svreinterpret_u64_u8(
3572 // CHECK-NEXT: entry:
3573 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 2 x i64>
3574 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3576 // TUPLE2-LABEL: @test_svreinterpret_u64_u8(
3577 // TUPLE2-NEXT: entry:
3578 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 4 x i64>
3579 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3581 // TUPLE3-LABEL: @test_svreinterpret_u64_u8(
3582 // TUPLE3-NEXT: entry:
3583 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 6 x i64>
3584 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3586 // TUPLE4-LABEL: @test_svreinterpret_u64_u8(
3587 // TUPLE4-NEXT: entry:
3588 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 8 x i64>
3589 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3591 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u64_u8u11__SVUint8_t(
3592 // CPP-CHECK-NEXT: entry:
3593 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 2 x i64>
3594 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3596 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u64_u811svuint8x2_t(
3597 // CPP-TUPLE2-NEXT: entry:
3598 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 4 x i64>
3599 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3601 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u64_u811svuint8x3_t(
3602 // CPP-TUPLE3-NEXT: entry:
3603 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 6 x i64>
3604 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3606 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u64_u811svuint8x4_t(
3607 // CPP-TUPLE4-NEXT: entry:
3608 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 8 x i64>
3609 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3611 TYPE(svuint64
) test_svreinterpret_u64_u8(TYPE(svuint8
) op
)
3613 return SVE_ACLE_FUNC(svreinterpret_u64
,_u8
)(op
);
3616 // CHECK-LABEL: @test_svreinterpret_u64_u16(
3617 // CHECK-NEXT: entry:
3618 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 2 x i64>
3619 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3621 // TUPLE2-LABEL: @test_svreinterpret_u64_u16(
3622 // TUPLE2-NEXT: entry:
3623 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 4 x i64>
3624 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3626 // TUPLE3-LABEL: @test_svreinterpret_u64_u16(
3627 // TUPLE3-NEXT: entry:
3628 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 6 x i64>
3629 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3631 // TUPLE4-LABEL: @test_svreinterpret_u64_u16(
3632 // TUPLE4-NEXT: entry:
3633 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 8 x i64>
3634 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3636 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_u16u12__SVUint16_t(
3637 // CPP-CHECK-NEXT: entry:
3638 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 2 x i64>
3639 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3641 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_u1612svuint16x2_t(
3642 // CPP-TUPLE2-NEXT: entry:
3643 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 4 x i64>
3644 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3646 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_u1612svuint16x3_t(
3647 // CPP-TUPLE3-NEXT: entry:
3648 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 6 x i64>
3649 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3651 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_u1612svuint16x4_t(
3652 // CPP-TUPLE4-NEXT: entry:
3653 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 8 x i64>
3654 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3656 TYPE(svuint64
) test_svreinterpret_u64_u16(TYPE(svuint16
) op
)
3658 return SVE_ACLE_FUNC(svreinterpret_u64
,_u16
)(op
);
3661 // CHECK-LABEL: @test_svreinterpret_u64_u32(
3662 // CHECK-NEXT: entry:
3663 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 2 x i64>
3664 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3666 // TUPLE2-LABEL: @test_svreinterpret_u64_u32(
3667 // TUPLE2-NEXT: entry:
3668 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 4 x i64>
3669 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3671 // TUPLE3-LABEL: @test_svreinterpret_u64_u32(
3672 // TUPLE3-NEXT: entry:
3673 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 6 x i64>
3674 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3676 // TUPLE4-LABEL: @test_svreinterpret_u64_u32(
3677 // TUPLE4-NEXT: entry:
3678 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 8 x i64>
3679 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3681 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_u32u12__SVUint32_t(
3682 // CPP-CHECK-NEXT: entry:
3683 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 2 x i64>
3684 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3686 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_u3212svuint32x2_t(
3687 // CPP-TUPLE2-NEXT: entry:
3688 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 4 x i64>
3689 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3691 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_u3212svuint32x3_t(
3692 // CPP-TUPLE3-NEXT: entry:
3693 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 6 x i64>
3694 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3696 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_u3212svuint32x4_t(
3697 // CPP-TUPLE4-NEXT: entry:
3698 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 8 x i64>
3699 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3701 TYPE(svuint64
) test_svreinterpret_u64_u32(TYPE(svuint32
) op
)
3703 return SVE_ACLE_FUNC(svreinterpret_u64
,_u32
)(op
);
3706 // CHECK-LABEL: @test_svreinterpret_u64_u64(
3707 // CHECK-NEXT: entry:
3708 // CHECK-NEXT: ret <vscale x 2 x i64> [[OP:%.*]]
3710 // TUPLE2-LABEL: @test_svreinterpret_u64_u64(
3711 // TUPLE2-NEXT: entry:
3712 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[OP:%.*]]
3714 // TUPLE3-LABEL: @test_svreinterpret_u64_u64(
3715 // TUPLE3-NEXT: entry:
3716 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[OP:%.*]]
3718 // TUPLE4-LABEL: @test_svreinterpret_u64_u64(
3719 // TUPLE4-NEXT: entry:
3720 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[OP:%.*]]
3722 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_u64u12__SVUint64_t(
3723 // CPP-CHECK-NEXT: entry:
3724 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[OP:%.*]]
3726 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_u6412svuint64x2_t(
3727 // CPP-TUPLE2-NEXT: entry:
3728 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[OP:%.*]]
3730 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_u6412svuint64x3_t(
3731 // CPP-TUPLE3-NEXT: entry:
3732 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[OP:%.*]]
3734 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_u6412svuint64x4_t(
3735 // CPP-TUPLE4-NEXT: entry:
3736 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[OP:%.*]]
3738 TYPE(svuint64
) test_svreinterpret_u64_u64(TYPE(svuint64
) op
)
3740 return SVE_ACLE_FUNC(svreinterpret_u64
,_u64
)(op
);
3743 // CHECK-LABEL: @test_svreinterpret_u64_f16(
3744 // CHECK-NEXT: entry:
3745 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 2 x i64>
3746 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3748 // TUPLE2-LABEL: @test_svreinterpret_u64_f16(
3749 // TUPLE2-NEXT: entry:
3750 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 4 x i64>
3751 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3753 // TUPLE3-LABEL: @test_svreinterpret_u64_f16(
3754 // TUPLE3-NEXT: entry:
3755 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 6 x i64>
3756 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3758 // TUPLE4-LABEL: @test_svreinterpret_u64_f16(
3759 // TUPLE4-NEXT: entry:
3760 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 8 x i64>
3761 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3763 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_f16u13__SVFloat16_t(
3764 // CPP-CHECK-NEXT: entry:
3765 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 2 x i64>
3766 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3768 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_f1613svfloat16x2_t(
3769 // CPP-TUPLE2-NEXT: entry:
3770 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 4 x i64>
3771 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3773 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_f1613svfloat16x3_t(
3774 // CPP-TUPLE3-NEXT: entry:
3775 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 6 x i64>
3776 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3778 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_f1613svfloat16x4_t(
3779 // CPP-TUPLE4-NEXT: entry:
3780 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 8 x i64>
3781 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3783 TYPE(svuint64
) test_svreinterpret_u64_f16(TYPE(svfloat16
) op
)
3785 return SVE_ACLE_FUNC(svreinterpret_u64
,_f16
)(op
);
3788 // CHECK-LABEL: @test_svreinterpret_u64_f32(
3789 // CHECK-NEXT: entry:
3790 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 2 x i64>
3791 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3793 // TUPLE2-LABEL: @test_svreinterpret_u64_f32(
3794 // TUPLE2-NEXT: entry:
3795 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 4 x i64>
3796 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3798 // TUPLE3-LABEL: @test_svreinterpret_u64_f32(
3799 // TUPLE3-NEXT: entry:
3800 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 6 x i64>
3801 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3803 // TUPLE4-LABEL: @test_svreinterpret_u64_f32(
3804 // TUPLE4-NEXT: entry:
3805 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 8 x i64>
3806 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3808 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_f32u13__SVFloat32_t(
3809 // CPP-CHECK-NEXT: entry:
3810 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 2 x i64>
3811 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3813 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_f3213svfloat32x2_t(
3814 // CPP-TUPLE2-NEXT: entry:
3815 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 4 x i64>
3816 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3818 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_f3213svfloat32x3_t(
3819 // CPP-TUPLE3-NEXT: entry:
3820 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 6 x i64>
3821 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3823 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_f3213svfloat32x4_t(
3824 // CPP-TUPLE4-NEXT: entry:
3825 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 8 x i64>
3826 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3828 TYPE(svuint64
) test_svreinterpret_u64_f32(TYPE(svfloat32
) op
)
3830 return SVE_ACLE_FUNC(svreinterpret_u64
,_f32
)(op
);
3833 // CHECK-LABEL: @test_svreinterpret_u64_f64(
3834 // CHECK-NEXT: entry:
3835 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 2 x i64>
3836 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3838 // TUPLE2-LABEL: @test_svreinterpret_u64_f64(
3839 // TUPLE2-NEXT: entry:
3840 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 4 x i64>
3841 // TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3843 // TUPLE3-LABEL: @test_svreinterpret_u64_f64(
3844 // TUPLE3-NEXT: entry:
3845 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 6 x i64>
3846 // TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3848 // TUPLE4-LABEL: @test_svreinterpret_u64_f64(
3849 // TUPLE4-NEXT: entry:
3850 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 8 x i64>
3851 // TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3853 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_f64u13__SVFloat64_t(
3854 // CPP-CHECK-NEXT: entry:
3855 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 2 x i64>
3856 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]]
3858 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_f6413svfloat64x2_t(
3859 // CPP-TUPLE2-NEXT: entry:
3860 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 4 x i64>
3861 // CPP-TUPLE2-NEXT: ret <vscale x 4 x i64> [[TMP0]]
3863 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_f6413svfloat64x3_t(
3864 // CPP-TUPLE3-NEXT: entry:
3865 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 6 x i64>
3866 // CPP-TUPLE3-NEXT: ret <vscale x 6 x i64> [[TMP0]]
3868 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_f6413svfloat64x4_t(
3869 // CPP-TUPLE4-NEXT: entry:
3870 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 8 x i64>
3871 // CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
3873 TYPE(svuint64
) test_svreinterpret_u64_f64(TYPE(svfloat64
) op
)
3875 return SVE_ACLE_FUNC(svreinterpret_u64
,_f64
)(op
);
3878 // CHECK-LABEL: @test_svreinterpret_f16_s8(
3879 // CHECK-NEXT: entry:
3880 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 8 x half>
3881 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
3883 // TUPLE2-LABEL: @test_svreinterpret_f16_s8(
3884 // TUPLE2-NEXT: entry:
3885 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 16 x half>
3886 // TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
3888 // TUPLE3-LABEL: @test_svreinterpret_f16_s8(
3889 // TUPLE3-NEXT: entry:
3890 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 24 x half>
3891 // TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
3893 // TUPLE4-LABEL: @test_svreinterpret_f16_s8(
3894 // TUPLE4-NEXT: entry:
3895 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 32 x half>
3896 // TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
3898 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_f16_s8u10__SVInt8_t(
3899 // CPP-CHECK-NEXT: entry:
3900 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 8 x half>
3901 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
3903 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_f16_s810svint8x2_t(
3904 // CPP-TUPLE2-NEXT: entry:
3905 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 16 x half>
3906 // CPP-TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
3908 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_f16_s810svint8x3_t(
3909 // CPP-TUPLE3-NEXT: entry:
3910 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 24 x half>
3911 // CPP-TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
3913 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_f16_s810svint8x4_t(
3914 // CPP-TUPLE4-NEXT: entry:
3915 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 32 x half>
3916 // CPP-TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
3918 TYPE(svfloat16
) test_svreinterpret_f16_s8(TYPE(svint8
) op
)
3920 return SVE_ACLE_FUNC(svreinterpret_f16
,_s8
)(op
);
3923 // CHECK-LABEL: @test_svreinterpret_f16_s16(
3924 // CHECK-NEXT: entry:
3925 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 8 x half>
3926 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
3928 // TUPLE2-LABEL: @test_svreinterpret_f16_s16(
3929 // TUPLE2-NEXT: entry:
3930 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 16 x half>
3931 // TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
3933 // TUPLE3-LABEL: @test_svreinterpret_f16_s16(
3934 // TUPLE3-NEXT: entry:
3935 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 24 x half>
3936 // TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
3938 // TUPLE4-LABEL: @test_svreinterpret_f16_s16(
3939 // TUPLE4-NEXT: entry:
3940 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 32 x half>
3941 // TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
3943 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_s16u11__SVInt16_t(
3944 // CPP-CHECK-NEXT: entry:
3945 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 8 x half>
3946 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
3948 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_s1611svint16x2_t(
3949 // CPP-TUPLE2-NEXT: entry:
3950 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 16 x half>
3951 // CPP-TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
3953 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_s1611svint16x3_t(
3954 // CPP-TUPLE3-NEXT: entry:
3955 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 24 x half>
3956 // CPP-TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
3958 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_s1611svint16x4_t(
3959 // CPP-TUPLE4-NEXT: entry:
3960 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 32 x half>
3961 // CPP-TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
3963 TYPE(svfloat16
) test_svreinterpret_f16_s16(TYPE(svint16
) op
)
3965 return SVE_ACLE_FUNC(svreinterpret_f16
,_s16
)(op
);
3968 // CHECK-LABEL: @test_svreinterpret_f16_s32(
3969 // CHECK-NEXT: entry:
3970 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 8 x half>
3971 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
3973 // TUPLE2-LABEL: @test_svreinterpret_f16_s32(
3974 // TUPLE2-NEXT: entry:
3975 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 16 x half>
3976 // TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
3978 // TUPLE3-LABEL: @test_svreinterpret_f16_s32(
3979 // TUPLE3-NEXT: entry:
3980 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 24 x half>
3981 // TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
3983 // TUPLE4-LABEL: @test_svreinterpret_f16_s32(
3984 // TUPLE4-NEXT: entry:
3985 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 32 x half>
3986 // TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
3988 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_s32u11__SVInt32_t(
3989 // CPP-CHECK-NEXT: entry:
3990 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 8 x half>
3991 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
3993 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_s3211svint32x2_t(
3994 // CPP-TUPLE2-NEXT: entry:
3995 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 16 x half>
3996 // CPP-TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
3998 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_s3211svint32x3_t(
3999 // CPP-TUPLE3-NEXT: entry:
4000 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 24 x half>
4001 // CPP-TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
4003 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_s3211svint32x4_t(
4004 // CPP-TUPLE4-NEXT: entry:
4005 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 32 x half>
4006 // CPP-TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
4008 TYPE(svfloat16
) test_svreinterpret_f16_s32(TYPE(svint32
) op
)
4010 return SVE_ACLE_FUNC(svreinterpret_f16
,_s32
)(op
);
4013 // CHECK-LABEL: @test_svreinterpret_f16_s64(
4014 // CHECK-NEXT: entry:
4015 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 8 x half>
4016 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
4018 // TUPLE2-LABEL: @test_svreinterpret_f16_s64(
4019 // TUPLE2-NEXT: entry:
4020 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 16 x half>
4021 // TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
4023 // TUPLE3-LABEL: @test_svreinterpret_f16_s64(
4024 // TUPLE3-NEXT: entry:
4025 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 24 x half>
4026 // TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
4028 // TUPLE4-LABEL: @test_svreinterpret_f16_s64(
4029 // TUPLE4-NEXT: entry:
4030 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 32 x half>
4031 // TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
4033 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_s64u11__SVInt64_t(
4034 // CPP-CHECK-NEXT: entry:
4035 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 8 x half>
4036 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
4038 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_s6411svint64x2_t(
4039 // CPP-TUPLE2-NEXT: entry:
4040 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 16 x half>
4041 // CPP-TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
4043 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_s6411svint64x3_t(
4044 // CPP-TUPLE3-NEXT: entry:
4045 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 24 x half>
4046 // CPP-TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
4048 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_s6411svint64x4_t(
4049 // CPP-TUPLE4-NEXT: entry:
4050 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 32 x half>
4051 // CPP-TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
4053 TYPE(svfloat16
) test_svreinterpret_f16_s64(TYPE(svint64
) op
)
4055 return SVE_ACLE_FUNC(svreinterpret_f16
,_s64
)(op
);
4058 // CHECK-LABEL: @test_svreinterpret_f16_u8(
4059 // CHECK-NEXT: entry:
4060 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 8 x half>
4061 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
4063 // TUPLE2-LABEL: @test_svreinterpret_f16_u8(
4064 // TUPLE2-NEXT: entry:
4065 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 16 x half>
4066 // TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
4068 // TUPLE3-LABEL: @test_svreinterpret_f16_u8(
4069 // TUPLE3-NEXT: entry:
4070 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 24 x half>
4071 // TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
4073 // TUPLE4-LABEL: @test_svreinterpret_f16_u8(
4074 // TUPLE4-NEXT: entry:
4075 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 32 x half>
4076 // TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
4078 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_f16_u8u11__SVUint8_t(
4079 // CPP-CHECK-NEXT: entry:
4080 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 8 x half>
4081 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
4083 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_f16_u811svuint8x2_t(
4084 // CPP-TUPLE2-NEXT: entry:
4085 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 16 x half>
4086 // CPP-TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
4088 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_f16_u811svuint8x3_t(
4089 // CPP-TUPLE3-NEXT: entry:
4090 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 24 x half>
4091 // CPP-TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
4093 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_f16_u811svuint8x4_t(
4094 // CPP-TUPLE4-NEXT: entry:
4095 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 32 x half>
4096 // CPP-TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
4098 TYPE(svfloat16
) test_svreinterpret_f16_u8(TYPE(svuint8
) op
)
4100 return SVE_ACLE_FUNC(svreinterpret_f16
,_u8
)(op
);
4103 // CHECK-LABEL: @test_svreinterpret_f16_u16(
4104 // CHECK-NEXT: entry:
4105 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 8 x half>
4106 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
4108 // TUPLE2-LABEL: @test_svreinterpret_f16_u16(
4109 // TUPLE2-NEXT: entry:
4110 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 16 x half>
4111 // TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
4113 // TUPLE3-LABEL: @test_svreinterpret_f16_u16(
4114 // TUPLE3-NEXT: entry:
4115 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 24 x half>
4116 // TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
4118 // TUPLE4-LABEL: @test_svreinterpret_f16_u16(
4119 // TUPLE4-NEXT: entry:
4120 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 32 x half>
4121 // TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
4123 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_u16u12__SVUint16_t(
4124 // CPP-CHECK-NEXT: entry:
4125 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 8 x half>
4126 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
4128 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_u1612svuint16x2_t(
4129 // CPP-TUPLE2-NEXT: entry:
4130 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 16 x half>
4131 // CPP-TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
4133 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_u1612svuint16x3_t(
4134 // CPP-TUPLE3-NEXT: entry:
4135 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 24 x half>
4136 // CPP-TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
4138 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_u1612svuint16x4_t(
4139 // CPP-TUPLE4-NEXT: entry:
4140 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 32 x half>
4141 // CPP-TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
4143 TYPE(svfloat16
) test_svreinterpret_f16_u16(TYPE(svuint16
) op
)
4145 return SVE_ACLE_FUNC(svreinterpret_f16
,_u16
)(op
);
4148 // CHECK-LABEL: @test_svreinterpret_f16_u32(
4149 // CHECK-NEXT: entry:
4150 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 8 x half>
4151 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
4153 // TUPLE2-LABEL: @test_svreinterpret_f16_u32(
4154 // TUPLE2-NEXT: entry:
4155 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 16 x half>
4156 // TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
4158 // TUPLE3-LABEL: @test_svreinterpret_f16_u32(
4159 // TUPLE3-NEXT: entry:
4160 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 24 x half>
4161 // TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
4163 // TUPLE4-LABEL: @test_svreinterpret_f16_u32(
4164 // TUPLE4-NEXT: entry:
4165 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 32 x half>
4166 // TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
4168 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_u32u12__SVUint32_t(
4169 // CPP-CHECK-NEXT: entry:
4170 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 8 x half>
4171 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
4173 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_u3212svuint32x2_t(
4174 // CPP-TUPLE2-NEXT: entry:
4175 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 16 x half>
4176 // CPP-TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
4178 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_u3212svuint32x3_t(
4179 // CPP-TUPLE3-NEXT: entry:
4180 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 24 x half>
4181 // CPP-TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
4183 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_u3212svuint32x4_t(
4184 // CPP-TUPLE4-NEXT: entry:
4185 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 32 x half>
4186 // CPP-TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
4188 TYPE(svfloat16
) test_svreinterpret_f16_u32(TYPE(svuint32
) op
)
4190 return SVE_ACLE_FUNC(svreinterpret_f16
,_u32
)(op
);
4193 // CHECK-LABEL: @test_svreinterpret_f16_u64(
4194 // CHECK-NEXT: entry:
4195 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 8 x half>
4196 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
4198 // TUPLE2-LABEL: @test_svreinterpret_f16_u64(
4199 // TUPLE2-NEXT: entry:
4200 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 16 x half>
4201 // TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
4203 // TUPLE3-LABEL: @test_svreinterpret_f16_u64(
4204 // TUPLE3-NEXT: entry:
4205 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 24 x half>
4206 // TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
4208 // TUPLE4-LABEL: @test_svreinterpret_f16_u64(
4209 // TUPLE4-NEXT: entry:
4210 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 32 x half>
4211 // TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
4213 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_u64u12__SVUint64_t(
4214 // CPP-CHECK-NEXT: entry:
4215 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 8 x half>
4216 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
4218 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_u6412svuint64x2_t(
4219 // CPP-TUPLE2-NEXT: entry:
4220 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 16 x half>
4221 // CPP-TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
4223 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_u6412svuint64x3_t(
4224 // CPP-TUPLE3-NEXT: entry:
4225 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 24 x half>
4226 // CPP-TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
4228 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_u6412svuint64x4_t(
4229 // CPP-TUPLE4-NEXT: entry:
4230 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 32 x half>
4231 // CPP-TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
4233 TYPE(svfloat16
) test_svreinterpret_f16_u64(TYPE(svuint64
) op
)
4235 return SVE_ACLE_FUNC(svreinterpret_f16
,_u64
)(op
);
4238 // CHECK-LABEL: @test_svreinterpret_f16_f16(
4239 // CHECK-NEXT: entry:
4240 // CHECK-NEXT: ret <vscale x 8 x half> [[OP:%.*]]
4242 // TUPLE2-LABEL: @test_svreinterpret_f16_f16(
4243 // TUPLE2-NEXT: entry:
4244 // TUPLE2-NEXT: ret <vscale x 16 x half> [[OP:%.*]]
4246 // TUPLE3-LABEL: @test_svreinterpret_f16_f16(
4247 // TUPLE3-NEXT: entry:
4248 // TUPLE3-NEXT: ret <vscale x 24 x half> [[OP:%.*]]
4250 // TUPLE4-LABEL: @test_svreinterpret_f16_f16(
4251 // TUPLE4-NEXT: entry:
4252 // TUPLE4-NEXT: ret <vscale x 32 x half> [[OP:%.*]]
4254 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_f16u13__SVFloat16_t(
4255 // CPP-CHECK-NEXT: entry:
4256 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[OP:%.*]]
4258 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_f1613svfloat16x2_t(
4259 // CPP-TUPLE2-NEXT: entry:
4260 // CPP-TUPLE2-NEXT: ret <vscale x 16 x half> [[OP:%.*]]
4262 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_f1613svfloat16x3_t(
4263 // CPP-TUPLE3-NEXT: entry:
4264 // CPP-TUPLE3-NEXT: ret <vscale x 24 x half> [[OP:%.*]]
4266 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_f1613svfloat16x4_t(
4267 // CPP-TUPLE4-NEXT: entry:
4268 // CPP-TUPLE4-NEXT: ret <vscale x 32 x half> [[OP:%.*]]
4270 TYPE(svfloat16
) test_svreinterpret_f16_f16(TYPE(svfloat16
) op
)
4272 return SVE_ACLE_FUNC(svreinterpret_f16
,_f16
)(op
);
4275 // CHECK-LABEL: @test_svreinterpret_f16_f32(
4276 // CHECK-NEXT: entry:
4277 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 8 x half>
4278 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
4280 // TUPLE2-LABEL: @test_svreinterpret_f16_f32(
4281 // TUPLE2-NEXT: entry:
4282 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 16 x half>
4283 // TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
4285 // TUPLE3-LABEL: @test_svreinterpret_f16_f32(
4286 // TUPLE3-NEXT: entry:
4287 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 24 x half>
4288 // TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
4290 // TUPLE4-LABEL: @test_svreinterpret_f16_f32(
4291 // TUPLE4-NEXT: entry:
4292 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 32 x half>
4293 // TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
4295 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_f32u13__SVFloat32_t(
4296 // CPP-CHECK-NEXT: entry:
4297 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 8 x half>
4298 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
4300 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_f3213svfloat32x2_t(
4301 // CPP-TUPLE2-NEXT: entry:
4302 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 16 x half>
4303 // CPP-TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
4305 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_f3213svfloat32x3_t(
4306 // CPP-TUPLE3-NEXT: entry:
4307 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 24 x half>
4308 // CPP-TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
4310 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_f3213svfloat32x4_t(
4311 // CPP-TUPLE4-NEXT: entry:
4312 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 32 x half>
4313 // CPP-TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
4315 TYPE(svfloat16
) test_svreinterpret_f16_f32(TYPE(svfloat32
) op
)
4317 return SVE_ACLE_FUNC(svreinterpret_f16
,_f32
)(op
);
4320 // CHECK-LABEL: @test_svreinterpret_f16_f64(
4321 // CHECK-NEXT: entry:
4322 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 8 x half>
4323 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
4325 // TUPLE2-LABEL: @test_svreinterpret_f16_f64(
4326 // TUPLE2-NEXT: entry:
4327 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 16 x half>
4328 // TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
4330 // TUPLE3-LABEL: @test_svreinterpret_f16_f64(
4331 // TUPLE3-NEXT: entry:
4332 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 24 x half>
4333 // TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
4335 // TUPLE4-LABEL: @test_svreinterpret_f16_f64(
4336 // TUPLE4-NEXT: entry:
4337 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 32 x half>
4338 // TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
4340 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_f64u13__SVFloat64_t(
4341 // CPP-CHECK-NEXT: entry:
4342 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 8 x half>
4343 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]]
4345 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_f6413svfloat64x2_t(
4346 // CPP-TUPLE2-NEXT: entry:
4347 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 16 x half>
4348 // CPP-TUPLE2-NEXT: ret <vscale x 16 x half> [[TMP0]]
4350 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_f6413svfloat64x3_t(
4351 // CPP-TUPLE3-NEXT: entry:
4352 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 24 x half>
4353 // CPP-TUPLE3-NEXT: ret <vscale x 24 x half> [[TMP0]]
4355 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_f6413svfloat64x4_t(
4356 // CPP-TUPLE4-NEXT: entry:
4357 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 32 x half>
4358 // CPP-TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
4360 TYPE(svfloat16
) test_svreinterpret_f16_f64(TYPE(svfloat64
) op
)
4362 return SVE_ACLE_FUNC(svreinterpret_f16
,_f64
)(op
);
4365 // CHECK-LABEL: @test_svreinterpret_f32_s8(
4366 // CHECK-NEXT: entry:
4367 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 4 x float>
4368 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4370 // TUPLE2-LABEL: @test_svreinterpret_f32_s8(
4371 // TUPLE2-NEXT: entry:
4372 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 8 x float>
4373 // TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4375 // TUPLE3-LABEL: @test_svreinterpret_f32_s8(
4376 // TUPLE3-NEXT: entry:
4377 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 12 x float>
4378 // TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4380 // TUPLE4-LABEL: @test_svreinterpret_f32_s8(
4381 // TUPLE4-NEXT: entry:
4382 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 16 x float>
4383 // TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4385 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_f32_s8u10__SVInt8_t(
4386 // CPP-CHECK-NEXT: entry:
4387 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 4 x float>
4388 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4390 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_f32_s810svint8x2_t(
4391 // CPP-TUPLE2-NEXT: entry:
4392 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 8 x float>
4393 // CPP-TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4395 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_f32_s810svint8x3_t(
4396 // CPP-TUPLE3-NEXT: entry:
4397 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 12 x float>
4398 // CPP-TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4400 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_f32_s810svint8x4_t(
4401 // CPP-TUPLE4-NEXT: entry:
4402 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 16 x float>
4403 // CPP-TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4405 TYPE(svfloat32
) test_svreinterpret_f32_s8(TYPE(svint8
) op
)
4407 return SVE_ACLE_FUNC(svreinterpret_f32
,_s8
)(op
);
4410 // CHECK-LABEL: @test_svreinterpret_f32_s16(
4411 // CHECK-NEXT: entry:
4412 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 4 x float>
4413 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4415 // TUPLE2-LABEL: @test_svreinterpret_f32_s16(
4416 // TUPLE2-NEXT: entry:
4417 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 8 x float>
4418 // TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4420 // TUPLE3-LABEL: @test_svreinterpret_f32_s16(
4421 // TUPLE3-NEXT: entry:
4422 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 12 x float>
4423 // TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4425 // TUPLE4-LABEL: @test_svreinterpret_f32_s16(
4426 // TUPLE4-NEXT: entry:
4427 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 16 x float>
4428 // TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4430 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_s16u11__SVInt16_t(
4431 // CPP-CHECK-NEXT: entry:
4432 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 4 x float>
4433 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4435 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_s1611svint16x2_t(
4436 // CPP-TUPLE2-NEXT: entry:
4437 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 8 x float>
4438 // CPP-TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4440 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_s1611svint16x3_t(
4441 // CPP-TUPLE3-NEXT: entry:
4442 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 12 x float>
4443 // CPP-TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4445 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_s1611svint16x4_t(
4446 // CPP-TUPLE4-NEXT: entry:
4447 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 16 x float>
4448 // CPP-TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4450 TYPE(svfloat32
) test_svreinterpret_f32_s16(TYPE(svint16
) op
)
4452 return SVE_ACLE_FUNC(svreinterpret_f32
,_s16
)(op
);
4455 // CHECK-LABEL: @test_svreinterpret_f32_s32(
4456 // CHECK-NEXT: entry:
4457 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 4 x float>
4458 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4460 // TUPLE2-LABEL: @test_svreinterpret_f32_s32(
4461 // TUPLE2-NEXT: entry:
4462 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 8 x float>
4463 // TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4465 // TUPLE3-LABEL: @test_svreinterpret_f32_s32(
4466 // TUPLE3-NEXT: entry:
4467 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 12 x float>
4468 // TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4470 // TUPLE4-LABEL: @test_svreinterpret_f32_s32(
4471 // TUPLE4-NEXT: entry:
4472 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 16 x float>
4473 // TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4475 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_s32u11__SVInt32_t(
4476 // CPP-CHECK-NEXT: entry:
4477 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 4 x float>
4478 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4480 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_s3211svint32x2_t(
4481 // CPP-TUPLE2-NEXT: entry:
4482 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 8 x float>
4483 // CPP-TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4485 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_s3211svint32x3_t(
4486 // CPP-TUPLE3-NEXT: entry:
4487 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 12 x float>
4488 // CPP-TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4490 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_s3211svint32x4_t(
4491 // CPP-TUPLE4-NEXT: entry:
4492 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 16 x float>
4493 // CPP-TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4495 TYPE(svfloat32
) test_svreinterpret_f32_s32(TYPE(svint32
) op
)
4497 return SVE_ACLE_FUNC(svreinterpret_f32
,_s32
)(op
);
4500 // CHECK-LABEL: @test_svreinterpret_f32_s64(
4501 // CHECK-NEXT: entry:
4502 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 4 x float>
4503 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4505 // TUPLE2-LABEL: @test_svreinterpret_f32_s64(
4506 // TUPLE2-NEXT: entry:
4507 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 8 x float>
4508 // TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4510 // TUPLE3-LABEL: @test_svreinterpret_f32_s64(
4511 // TUPLE3-NEXT: entry:
4512 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 12 x float>
4513 // TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4515 // TUPLE4-LABEL: @test_svreinterpret_f32_s64(
4516 // TUPLE4-NEXT: entry:
4517 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 16 x float>
4518 // TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4520 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_s64u11__SVInt64_t(
4521 // CPP-CHECK-NEXT: entry:
4522 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 4 x float>
4523 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4525 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_s6411svint64x2_t(
4526 // CPP-TUPLE2-NEXT: entry:
4527 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 8 x float>
4528 // CPP-TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4530 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_s6411svint64x3_t(
4531 // CPP-TUPLE3-NEXT: entry:
4532 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 12 x float>
4533 // CPP-TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4535 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_s6411svint64x4_t(
4536 // CPP-TUPLE4-NEXT: entry:
4537 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 16 x float>
4538 // CPP-TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4540 TYPE(svfloat32
) test_svreinterpret_f32_s64(TYPE(svint64
) op
)
4542 return SVE_ACLE_FUNC(svreinterpret_f32
,_s64
)(op
);
4545 // CHECK-LABEL: @test_svreinterpret_f32_u8(
4546 // CHECK-NEXT: entry:
4547 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 4 x float>
4548 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4550 // TUPLE2-LABEL: @test_svreinterpret_f32_u8(
4551 // TUPLE2-NEXT: entry:
4552 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 8 x float>
4553 // TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4555 // TUPLE3-LABEL: @test_svreinterpret_f32_u8(
4556 // TUPLE3-NEXT: entry:
4557 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 12 x float>
4558 // TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4560 // TUPLE4-LABEL: @test_svreinterpret_f32_u8(
4561 // TUPLE4-NEXT: entry:
4562 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 16 x float>
4563 // TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4565 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_f32_u8u11__SVUint8_t(
4566 // CPP-CHECK-NEXT: entry:
4567 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 4 x float>
4568 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4570 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_f32_u811svuint8x2_t(
4571 // CPP-TUPLE2-NEXT: entry:
4572 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 8 x float>
4573 // CPP-TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4575 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_f32_u811svuint8x3_t(
4576 // CPP-TUPLE3-NEXT: entry:
4577 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 12 x float>
4578 // CPP-TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4580 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_f32_u811svuint8x4_t(
4581 // CPP-TUPLE4-NEXT: entry:
4582 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 16 x float>
4583 // CPP-TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4585 TYPE(svfloat32
) test_svreinterpret_f32_u8(TYPE(svuint8
) op
)
4587 return SVE_ACLE_FUNC(svreinterpret_f32
,_u8
)(op
);
4590 // CHECK-LABEL: @test_svreinterpret_f32_u16(
4591 // CHECK-NEXT: entry:
4592 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 4 x float>
4593 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4595 // TUPLE2-LABEL: @test_svreinterpret_f32_u16(
4596 // TUPLE2-NEXT: entry:
4597 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 8 x float>
4598 // TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4600 // TUPLE3-LABEL: @test_svreinterpret_f32_u16(
4601 // TUPLE3-NEXT: entry:
4602 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 12 x float>
4603 // TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4605 // TUPLE4-LABEL: @test_svreinterpret_f32_u16(
4606 // TUPLE4-NEXT: entry:
4607 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 16 x float>
4608 // TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4610 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_u16u12__SVUint16_t(
4611 // CPP-CHECK-NEXT: entry:
4612 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 4 x float>
4613 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4615 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_u1612svuint16x2_t(
4616 // CPP-TUPLE2-NEXT: entry:
4617 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 8 x float>
4618 // CPP-TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4620 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_u1612svuint16x3_t(
4621 // CPP-TUPLE3-NEXT: entry:
4622 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 12 x float>
4623 // CPP-TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4625 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_u1612svuint16x4_t(
4626 // CPP-TUPLE4-NEXT: entry:
4627 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 16 x float>
4628 // CPP-TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4630 TYPE(svfloat32
) test_svreinterpret_f32_u16(TYPE(svuint16
) op
)
4632 return SVE_ACLE_FUNC(svreinterpret_f32
,_u16
)(op
);
4635 // CHECK-LABEL: @test_svreinterpret_f32_u32(
4636 // CHECK-NEXT: entry:
4637 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 4 x float>
4638 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4640 // TUPLE2-LABEL: @test_svreinterpret_f32_u32(
4641 // TUPLE2-NEXT: entry:
4642 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 8 x float>
4643 // TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4645 // TUPLE3-LABEL: @test_svreinterpret_f32_u32(
4646 // TUPLE3-NEXT: entry:
4647 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 12 x float>
4648 // TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4650 // TUPLE4-LABEL: @test_svreinterpret_f32_u32(
4651 // TUPLE4-NEXT: entry:
4652 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 16 x float>
4653 // TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4655 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_u32u12__SVUint32_t(
4656 // CPP-CHECK-NEXT: entry:
4657 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 4 x float>
4658 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4660 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_u3212svuint32x2_t(
4661 // CPP-TUPLE2-NEXT: entry:
4662 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 8 x float>
4663 // CPP-TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4665 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_u3212svuint32x3_t(
4666 // CPP-TUPLE3-NEXT: entry:
4667 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 12 x float>
4668 // CPP-TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4670 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_u3212svuint32x4_t(
4671 // CPP-TUPLE4-NEXT: entry:
4672 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 16 x float>
4673 // CPP-TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4675 TYPE(svfloat32
) test_svreinterpret_f32_u32(TYPE(svuint32
) op
)
4677 return SVE_ACLE_FUNC(svreinterpret_f32
,_u32
)(op
);
4680 // CHECK-LABEL: @test_svreinterpret_f32_u64(
4681 // CHECK-NEXT: entry:
4682 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 4 x float>
4683 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4685 // TUPLE2-LABEL: @test_svreinterpret_f32_u64(
4686 // TUPLE2-NEXT: entry:
4687 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 8 x float>
4688 // TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4690 // TUPLE3-LABEL: @test_svreinterpret_f32_u64(
4691 // TUPLE3-NEXT: entry:
4692 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 12 x float>
4693 // TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4695 // TUPLE4-LABEL: @test_svreinterpret_f32_u64(
4696 // TUPLE4-NEXT: entry:
4697 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 16 x float>
4698 // TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4700 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_u64u12__SVUint64_t(
4701 // CPP-CHECK-NEXT: entry:
4702 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 4 x float>
4703 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4705 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_u6412svuint64x2_t(
4706 // CPP-TUPLE2-NEXT: entry:
4707 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 8 x float>
4708 // CPP-TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4710 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_u6412svuint64x3_t(
4711 // CPP-TUPLE3-NEXT: entry:
4712 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 12 x float>
4713 // CPP-TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4715 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_u6412svuint64x4_t(
4716 // CPP-TUPLE4-NEXT: entry:
4717 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 16 x float>
4718 // CPP-TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4720 TYPE(svfloat32
) test_svreinterpret_f32_u64(TYPE(svuint64
) op
)
4722 return SVE_ACLE_FUNC(svreinterpret_f32
,_u64
)(op
);
4725 // CHECK-LABEL: @test_svreinterpret_f32_f16(
4726 // CHECK-NEXT: entry:
4727 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 4 x float>
4728 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4730 // TUPLE2-LABEL: @test_svreinterpret_f32_f16(
4731 // TUPLE2-NEXT: entry:
4732 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 8 x float>
4733 // TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4735 // TUPLE3-LABEL: @test_svreinterpret_f32_f16(
4736 // TUPLE3-NEXT: entry:
4737 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 12 x float>
4738 // TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4740 // TUPLE4-LABEL: @test_svreinterpret_f32_f16(
4741 // TUPLE4-NEXT: entry:
4742 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 16 x float>
4743 // TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4745 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_f16u13__SVFloat16_t(
4746 // CPP-CHECK-NEXT: entry:
4747 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 4 x float>
4748 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4750 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_f1613svfloat16x2_t(
4751 // CPP-TUPLE2-NEXT: entry:
4752 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 8 x float>
4753 // CPP-TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4755 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_f1613svfloat16x3_t(
4756 // CPP-TUPLE3-NEXT: entry:
4757 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 12 x float>
4758 // CPP-TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4760 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_f1613svfloat16x4_t(
4761 // CPP-TUPLE4-NEXT: entry:
4762 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 16 x float>
4763 // CPP-TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4765 TYPE(svfloat32
) test_svreinterpret_f32_f16(TYPE(svfloat16
) op
)
4767 return SVE_ACLE_FUNC(svreinterpret_f32
,_f16
)(op
);
4770 // CHECK-LABEL: @test_svreinterpret_f32_f32(
4771 // CHECK-NEXT: entry:
4772 // CHECK-NEXT: ret <vscale x 4 x float> [[OP:%.*]]
4774 // TUPLE2-LABEL: @test_svreinterpret_f32_f32(
4775 // TUPLE2-NEXT: entry:
4776 // TUPLE2-NEXT: ret <vscale x 8 x float> [[OP:%.*]]
4778 // TUPLE3-LABEL: @test_svreinterpret_f32_f32(
4779 // TUPLE3-NEXT: entry:
4780 // TUPLE3-NEXT: ret <vscale x 12 x float> [[OP:%.*]]
4782 // TUPLE4-LABEL: @test_svreinterpret_f32_f32(
4783 // TUPLE4-NEXT: entry:
4784 // TUPLE4-NEXT: ret <vscale x 16 x float> [[OP:%.*]]
4786 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_f32u13__SVFloat32_t(
4787 // CPP-CHECK-NEXT: entry:
4788 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[OP:%.*]]
4790 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_f3213svfloat32x2_t(
4791 // CPP-TUPLE2-NEXT: entry:
4792 // CPP-TUPLE2-NEXT: ret <vscale x 8 x float> [[OP:%.*]]
4794 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_f3213svfloat32x3_t(
4795 // CPP-TUPLE3-NEXT: entry:
4796 // CPP-TUPLE3-NEXT: ret <vscale x 12 x float> [[OP:%.*]]
4798 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_f3213svfloat32x4_t(
4799 // CPP-TUPLE4-NEXT: entry:
4800 // CPP-TUPLE4-NEXT: ret <vscale x 16 x float> [[OP:%.*]]
4802 TYPE(svfloat32
) test_svreinterpret_f32_f32(TYPE(svfloat32
) op
)
4804 return SVE_ACLE_FUNC(svreinterpret_f32
,_f32
)(op
);
4807 // CHECK-LABEL: @test_svreinterpret_f32_f64(
4808 // CHECK-NEXT: entry:
4809 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 4 x float>
4810 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4812 // TUPLE2-LABEL: @test_svreinterpret_f32_f64(
4813 // TUPLE2-NEXT: entry:
4814 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 8 x float>
4815 // TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4817 // TUPLE3-LABEL: @test_svreinterpret_f32_f64(
4818 // TUPLE3-NEXT: entry:
4819 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 12 x float>
4820 // TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4822 // TUPLE4-LABEL: @test_svreinterpret_f32_f64(
4823 // TUPLE4-NEXT: entry:
4824 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 16 x float>
4825 // TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4827 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_f64u13__SVFloat64_t(
4828 // CPP-CHECK-NEXT: entry:
4829 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP:%.*]] to <vscale x 4 x float>
4830 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]]
4832 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_f6413svfloat64x2_t(
4833 // CPP-TUPLE2-NEXT: entry:
4834 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x double> [[OP:%.*]] to <vscale x 8 x float>
4835 // CPP-TUPLE2-NEXT: ret <vscale x 8 x float> [[TMP0]]
4837 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_f6413svfloat64x3_t(
4838 // CPP-TUPLE3-NEXT: entry:
4839 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x double> [[OP:%.*]] to <vscale x 12 x float>
4840 // CPP-TUPLE3-NEXT: ret <vscale x 12 x float> [[TMP0]]
4842 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_f6413svfloat64x4_t(
4843 // CPP-TUPLE4-NEXT: entry:
4844 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 16 x float>
4845 // CPP-TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
4847 TYPE(svfloat32
) test_svreinterpret_f32_f64(TYPE(svfloat64
) op
)
4849 return SVE_ACLE_FUNC(svreinterpret_f32
,_f64
)(op
);
4852 // CHECK-LABEL: @test_svreinterpret_f64_s8(
4853 // CHECK-NEXT: entry:
4854 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 2 x double>
4855 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
4857 // TUPLE2-LABEL: @test_svreinterpret_f64_s8(
4858 // TUPLE2-NEXT: entry:
4859 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 4 x double>
4860 // TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
4862 // TUPLE3-LABEL: @test_svreinterpret_f64_s8(
4863 // TUPLE3-NEXT: entry:
4864 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 6 x double>
4865 // TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
4867 // TUPLE4-LABEL: @test_svreinterpret_f64_s8(
4868 // TUPLE4-NEXT: entry:
4869 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 8 x double>
4870 // TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
4872 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_f64_s8u10__SVInt8_t(
4873 // CPP-CHECK-NEXT: entry:
4874 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 2 x double>
4875 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
4877 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_f64_s810svint8x2_t(
4878 // CPP-TUPLE2-NEXT: entry:
4879 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 4 x double>
4880 // CPP-TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
4882 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_f64_s810svint8x3_t(
4883 // CPP-TUPLE3-NEXT: entry:
4884 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 6 x double>
4885 // CPP-TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
4887 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_f64_s810svint8x4_t(
4888 // CPP-TUPLE4-NEXT: entry:
4889 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 8 x double>
4890 // CPP-TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
4892 TYPE(svfloat64
) test_svreinterpret_f64_s8(TYPE(svint8
) op
)
4894 return SVE_ACLE_FUNC(svreinterpret_f64
,_s8
)(op
);
4897 // CHECK-LABEL: @test_svreinterpret_f64_s16(
4898 // CHECK-NEXT: entry:
4899 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 2 x double>
4900 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
4902 // TUPLE2-LABEL: @test_svreinterpret_f64_s16(
4903 // TUPLE2-NEXT: entry:
4904 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 4 x double>
4905 // TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
4907 // TUPLE3-LABEL: @test_svreinterpret_f64_s16(
4908 // TUPLE3-NEXT: entry:
4909 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 6 x double>
4910 // TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
4912 // TUPLE4-LABEL: @test_svreinterpret_f64_s16(
4913 // TUPLE4-NEXT: entry:
4914 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 8 x double>
4915 // TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
4917 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_s16u11__SVInt16_t(
4918 // CPP-CHECK-NEXT: entry:
4919 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 2 x double>
4920 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
4922 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_s1611svint16x2_t(
4923 // CPP-TUPLE2-NEXT: entry:
4924 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 4 x double>
4925 // CPP-TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
4927 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_s1611svint16x3_t(
4928 // CPP-TUPLE3-NEXT: entry:
4929 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 6 x double>
4930 // CPP-TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
4932 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_s1611svint16x4_t(
4933 // CPP-TUPLE4-NEXT: entry:
4934 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 8 x double>
4935 // CPP-TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
4937 TYPE(svfloat64
) test_svreinterpret_f64_s16(TYPE(svint16
) op
)
4939 return SVE_ACLE_FUNC(svreinterpret_f64
,_s16
)(op
);
4942 // CHECK-LABEL: @test_svreinterpret_f64_s32(
4943 // CHECK-NEXT: entry:
4944 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 2 x double>
4945 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
4947 // TUPLE2-LABEL: @test_svreinterpret_f64_s32(
4948 // TUPLE2-NEXT: entry:
4949 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 4 x double>
4950 // TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
4952 // TUPLE3-LABEL: @test_svreinterpret_f64_s32(
4953 // TUPLE3-NEXT: entry:
4954 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 6 x double>
4955 // TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
4957 // TUPLE4-LABEL: @test_svreinterpret_f64_s32(
4958 // TUPLE4-NEXT: entry:
4959 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 8 x double>
4960 // TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
4962 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_s32u11__SVInt32_t(
4963 // CPP-CHECK-NEXT: entry:
4964 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 2 x double>
4965 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
4967 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_s3211svint32x2_t(
4968 // CPP-TUPLE2-NEXT: entry:
4969 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 4 x double>
4970 // CPP-TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
4972 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_s3211svint32x3_t(
4973 // CPP-TUPLE3-NEXT: entry:
4974 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 6 x double>
4975 // CPP-TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
4977 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_s3211svint32x4_t(
4978 // CPP-TUPLE4-NEXT: entry:
4979 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 8 x double>
4980 // CPP-TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
4982 TYPE(svfloat64
) test_svreinterpret_f64_s32(TYPE(svint32
) op
)
4984 return SVE_ACLE_FUNC(svreinterpret_f64
,_s32
)(op
);
4987 // CHECK-LABEL: @test_svreinterpret_f64_s64(
4988 // CHECK-NEXT: entry:
4989 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 2 x double>
4990 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
4992 // TUPLE2-LABEL: @test_svreinterpret_f64_s64(
4993 // TUPLE2-NEXT: entry:
4994 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 4 x double>
4995 // TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
4997 // TUPLE3-LABEL: @test_svreinterpret_f64_s64(
4998 // TUPLE3-NEXT: entry:
4999 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 6 x double>
5000 // TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
5002 // TUPLE4-LABEL: @test_svreinterpret_f64_s64(
5003 // TUPLE4-NEXT: entry:
5004 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 8 x double>
5005 // TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
5007 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_s64u11__SVInt64_t(
5008 // CPP-CHECK-NEXT: entry:
5009 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 2 x double>
5010 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
5012 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_s6411svint64x2_t(
5013 // CPP-TUPLE2-NEXT: entry:
5014 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 4 x double>
5015 // CPP-TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
5017 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_s6411svint64x3_t(
5018 // CPP-TUPLE3-NEXT: entry:
5019 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 6 x double>
5020 // CPP-TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
5022 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_s6411svint64x4_t(
5023 // CPP-TUPLE4-NEXT: entry:
5024 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 8 x double>
5025 // CPP-TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
5027 TYPE(svfloat64
) test_svreinterpret_f64_s64(TYPE(svint64
) op
)
5029 return SVE_ACLE_FUNC(svreinterpret_f64
,_s64
)(op
);
5032 // CHECK-LABEL: @test_svreinterpret_f64_u8(
5033 // CHECK-NEXT: entry:
5034 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 2 x double>
5035 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
5037 // TUPLE2-LABEL: @test_svreinterpret_f64_u8(
5038 // TUPLE2-NEXT: entry:
5039 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 4 x double>
5040 // TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
5042 // TUPLE3-LABEL: @test_svreinterpret_f64_u8(
5043 // TUPLE3-NEXT: entry:
5044 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 6 x double>
5045 // TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
5047 // TUPLE4-LABEL: @test_svreinterpret_f64_u8(
5048 // TUPLE4-NEXT: entry:
5049 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 8 x double>
5050 // TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
5052 // CPP-CHECK-LABEL: @_Z25test_svreinterpret_f64_u8u11__SVUint8_t(
5053 // CPP-CHECK-NEXT: entry:
5054 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP:%.*]] to <vscale x 2 x double>
5055 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
5057 // CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_f64_u811svuint8x2_t(
5058 // CPP-TUPLE2-NEXT: entry:
5059 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i8> [[OP:%.*]] to <vscale x 4 x double>
5060 // CPP-TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
5062 // CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_f64_u811svuint8x3_t(
5063 // CPP-TUPLE3-NEXT: entry:
5064 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 48 x i8> [[OP:%.*]] to <vscale x 6 x double>
5065 // CPP-TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
5067 // CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_f64_u811svuint8x4_t(
5068 // CPP-TUPLE4-NEXT: entry:
5069 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 8 x double>
5070 // CPP-TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
5072 TYPE(svfloat64
) test_svreinterpret_f64_u8(TYPE(svuint8
) op
)
5074 return SVE_ACLE_FUNC(svreinterpret_f64
,_u8
)(op
);
5077 // CHECK-LABEL: @test_svreinterpret_f64_u16(
5078 // CHECK-NEXT: entry:
5079 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 2 x double>
5080 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
5082 // TUPLE2-LABEL: @test_svreinterpret_f64_u16(
5083 // TUPLE2-NEXT: entry:
5084 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 4 x double>
5085 // TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
5087 // TUPLE3-LABEL: @test_svreinterpret_f64_u16(
5088 // TUPLE3-NEXT: entry:
5089 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 6 x double>
5090 // TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
5092 // TUPLE4-LABEL: @test_svreinterpret_f64_u16(
5093 // TUPLE4-NEXT: entry:
5094 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 8 x double>
5095 // TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
5097 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_u16u12__SVUint16_t(
5098 // CPP-CHECK-NEXT: entry:
5099 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP:%.*]] to <vscale x 2 x double>
5100 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
5102 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_u1612svuint16x2_t(
5103 // CPP-TUPLE2-NEXT: entry:
5104 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i16> [[OP:%.*]] to <vscale x 4 x double>
5105 // CPP-TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
5107 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_u1612svuint16x3_t(
5108 // CPP-TUPLE3-NEXT: entry:
5109 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x i16> [[OP:%.*]] to <vscale x 6 x double>
5110 // CPP-TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
5112 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_u1612svuint16x4_t(
5113 // CPP-TUPLE4-NEXT: entry:
5114 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 8 x double>
5115 // CPP-TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
5117 TYPE(svfloat64
) test_svreinterpret_f64_u16(TYPE(svuint16
) op
)
5119 return SVE_ACLE_FUNC(svreinterpret_f64
,_u16
)(op
);
5122 // CHECK-LABEL: @test_svreinterpret_f64_u32(
5123 // CHECK-NEXT: entry:
5124 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 2 x double>
5125 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
5127 // TUPLE2-LABEL: @test_svreinterpret_f64_u32(
5128 // TUPLE2-NEXT: entry:
5129 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 4 x double>
5130 // TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
5132 // TUPLE3-LABEL: @test_svreinterpret_f64_u32(
5133 // TUPLE3-NEXT: entry:
5134 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 6 x double>
5135 // TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
5137 // TUPLE4-LABEL: @test_svreinterpret_f64_u32(
5138 // TUPLE4-NEXT: entry:
5139 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 8 x double>
5140 // TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
5142 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_u32u12__SVUint32_t(
5143 // CPP-CHECK-NEXT: entry:
5144 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP:%.*]] to <vscale x 2 x double>
5145 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
5147 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_u3212svuint32x2_t(
5148 // CPP-TUPLE2-NEXT: entry:
5149 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i32> [[OP:%.*]] to <vscale x 4 x double>
5150 // CPP-TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
5152 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_u3212svuint32x3_t(
5153 // CPP-TUPLE3-NEXT: entry:
5154 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x i32> [[OP:%.*]] to <vscale x 6 x double>
5155 // CPP-TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
5157 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_u3212svuint32x4_t(
5158 // CPP-TUPLE4-NEXT: entry:
5159 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 8 x double>
5160 // CPP-TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
5162 TYPE(svfloat64
) test_svreinterpret_f64_u32(TYPE(svuint32
) op
)
5164 return SVE_ACLE_FUNC(svreinterpret_f64
,_u32
)(op
);
5167 // CHECK-LABEL: @test_svreinterpret_f64_u64(
5168 // CHECK-NEXT: entry:
5169 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 2 x double>
5170 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
5172 // TUPLE2-LABEL: @test_svreinterpret_f64_u64(
5173 // TUPLE2-NEXT: entry:
5174 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 4 x double>
5175 // TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
5177 // TUPLE3-LABEL: @test_svreinterpret_f64_u64(
5178 // TUPLE3-NEXT: entry:
5179 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 6 x double>
5180 // TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
5182 // TUPLE4-LABEL: @test_svreinterpret_f64_u64(
5183 // TUPLE4-NEXT: entry:
5184 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 8 x double>
5185 // TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
5187 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_u64u12__SVUint64_t(
5188 // CPP-CHECK-NEXT: entry:
5189 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP:%.*]] to <vscale x 2 x double>
5190 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
5192 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_u6412svuint64x2_t(
5193 // CPP-TUPLE2-NEXT: entry:
5194 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i64> [[OP:%.*]] to <vscale x 4 x double>
5195 // CPP-TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
5197 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_u6412svuint64x3_t(
5198 // CPP-TUPLE3-NEXT: entry:
5199 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 6 x i64> [[OP:%.*]] to <vscale x 6 x double>
5200 // CPP-TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
5202 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_u6412svuint64x4_t(
5203 // CPP-TUPLE4-NEXT: entry:
5204 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 8 x double>
5205 // CPP-TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
5207 TYPE(svfloat64
) test_svreinterpret_f64_u64(TYPE(svuint64
) op
)
5209 return SVE_ACLE_FUNC(svreinterpret_f64
,_u64
)(op
);
5212 // CHECK-LABEL: @test_svreinterpret_f64_f16(
5213 // CHECK-NEXT: entry:
5214 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 2 x double>
5215 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
5217 // TUPLE2-LABEL: @test_svreinterpret_f64_f16(
5218 // TUPLE2-NEXT: entry:
5219 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 4 x double>
5220 // TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
5222 // TUPLE3-LABEL: @test_svreinterpret_f64_f16(
5223 // TUPLE3-NEXT: entry:
5224 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 6 x double>
5225 // TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
5227 // TUPLE4-LABEL: @test_svreinterpret_f64_f16(
5228 // TUPLE4-NEXT: entry:
5229 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 8 x double>
5230 // TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
5232 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_f16u13__SVFloat16_t(
5233 // CPP-CHECK-NEXT: entry:
5234 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP:%.*]] to <vscale x 2 x double>
5235 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
5237 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_f1613svfloat16x2_t(
5238 // CPP-TUPLE2-NEXT: entry:
5239 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x half> [[OP:%.*]] to <vscale x 4 x double>
5240 // CPP-TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
5242 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_f1613svfloat16x3_t(
5243 // CPP-TUPLE3-NEXT: entry:
5244 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 24 x half> [[OP:%.*]] to <vscale x 6 x double>
5245 // CPP-TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
5247 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_f1613svfloat16x4_t(
5248 // CPP-TUPLE4-NEXT: entry:
5249 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 8 x double>
5250 // CPP-TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
5252 TYPE(svfloat64
) test_svreinterpret_f64_f16(TYPE(svfloat16
) op
)
5254 return SVE_ACLE_FUNC(svreinterpret_f64
,_f16
)(op
);
5257 // CHECK-LABEL: @test_svreinterpret_f64_f32(
5258 // CHECK-NEXT: entry:
5259 // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 2 x double>
5260 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
5262 // TUPLE2-LABEL: @test_svreinterpret_f64_f32(
5263 // TUPLE2-NEXT: entry:
5264 // TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 4 x double>
5265 // TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
5267 // TUPLE3-LABEL: @test_svreinterpret_f64_f32(
5268 // TUPLE3-NEXT: entry:
5269 // TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 6 x double>
5270 // TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
5272 // TUPLE4-LABEL: @test_svreinterpret_f64_f32(
5273 // TUPLE4-NEXT: entry:
5274 // TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 8 x double>
5275 // TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
5277 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_f32u13__SVFloat32_t(
5278 // CPP-CHECK-NEXT: entry:
5279 // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP:%.*]] to <vscale x 2 x double>
5280 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]]
5282 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_f3213svfloat32x2_t(
5283 // CPP-TUPLE2-NEXT: entry:
5284 // CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x float> [[OP:%.*]] to <vscale x 4 x double>
5285 // CPP-TUPLE2-NEXT: ret <vscale x 4 x double> [[TMP0]]
5287 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_f3213svfloat32x3_t(
5288 // CPP-TUPLE3-NEXT: entry:
5289 // CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast <vscale x 12 x float> [[OP:%.*]] to <vscale x 6 x double>
5290 // CPP-TUPLE3-NEXT: ret <vscale x 6 x double> [[TMP0]]
5292 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_f3213svfloat32x4_t(
5293 // CPP-TUPLE4-NEXT: entry:
5294 // CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 8 x double>
5295 // CPP-TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
5297 TYPE(svfloat64
) test_svreinterpret_f64_f32(TYPE(svfloat32
) op
)
5299 return SVE_ACLE_FUNC(svreinterpret_f64
,_f32
)(op
);
5302 // CHECK-LABEL: @test_svreinterpret_f64_f64(
5303 // CHECK-NEXT: entry:
5304 // CHECK-NEXT: ret <vscale x 2 x double> [[OP:%.*]]
5306 // TUPLE2-LABEL: @test_svreinterpret_f64_f64(
5307 // TUPLE2-NEXT: entry:
5308 // TUPLE2-NEXT: ret <vscale x 4 x double> [[OP:%.*]]
5310 // TUPLE3-LABEL: @test_svreinterpret_f64_f64(
5311 // TUPLE3-NEXT: entry:
5312 // TUPLE3-NEXT: ret <vscale x 6 x double> [[OP:%.*]]
5314 // TUPLE4-LABEL: @test_svreinterpret_f64_f64(
5315 // TUPLE4-NEXT: entry:
5316 // TUPLE4-NEXT: ret <vscale x 8 x double> [[OP:%.*]]
5318 // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_f64u13__SVFloat64_t(
5319 // CPP-CHECK-NEXT: entry:
5320 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[OP:%.*]]
5322 // CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_f6413svfloat64x2_t(
5323 // CPP-TUPLE2-NEXT: entry:
5324 // CPP-TUPLE2-NEXT: ret <vscale x 4 x double> [[OP:%.*]]
5326 // CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_f6413svfloat64x3_t(
5327 // CPP-TUPLE3-NEXT: entry:
5328 // CPP-TUPLE3-NEXT: ret <vscale x 6 x double> [[OP:%.*]]
5330 // CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_f6413svfloat64x4_t(
5331 // CPP-TUPLE4-NEXT: entry:
5332 // CPP-TUPLE4-NEXT: ret <vscale x 8 x double> [[OP:%.*]]
5334 TYPE(svfloat64
) test_svreinterpret_f64_f64(TYPE(svfloat64
) op
)
5336 return SVE_ACLE_FUNC(svreinterpret_f64
,_f64
)(op
);