1 // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
2 // REQUIRES: aarch64-registered-target
3 // RUN: %clang_cc1 -triple aarch64 -target-feature +sve -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s
4 // RUN: %clang_cc1 -triple aarch64 -target-feature +sve -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
5 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64 -target-feature +sve -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s
6 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64 -target-feature +sve -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
7 // RUN: %clang_cc1 -triple aarch64 -target-feature +sve -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
8 // RUN: %clang_cc1 -triple aarch64 -target-feature +sme -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
12 #if defined __ARM_FEATURE_SME
13 #define MODE_ATTR __arm_streaming
18 #ifdef SVE_OVERLOADED_FORMS
19 // A simple used,unused... macro, long enough to represent any SVE builtin.
20 #define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
22 #define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
25 // CHECK-LABEL: @test_svcvt_s16_f16_z(
27 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
28 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.fcvtzs.nxv8i16.nxv8f16(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
29 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
31 // CPP-CHECK-LABEL: @_Z20test_svcvt_s16_f16_zu10__SVBool_tu13__SVFloat16_t(
32 // CPP-CHECK-NEXT: entry:
33 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
34 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.fcvtzs.nxv8i16.nxv8f16(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
35 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
37 svint16_t
test_svcvt_s16_f16_z(svbool_t pg
, svfloat16_t op
) MODE_ATTR
39 return SVE_ACLE_FUNC(svcvt_s16
,_f16
,_z
,)(pg
, op
);
42 // CHECK-LABEL: @test_svcvt_s16_f16_m(
44 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
45 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.fcvtzs.nxv8i16.nxv8f16(<vscale x 8 x i16> [[INACTIVE:%.*]], <vscale x 8 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
46 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
48 // CPP-CHECK-LABEL: @_Z20test_svcvt_s16_f16_mu11__SVInt16_tu10__SVBool_tu13__SVFloat16_t(
49 // CPP-CHECK-NEXT: entry:
50 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
51 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.fcvtzs.nxv8i16.nxv8f16(<vscale x 8 x i16> [[INACTIVE:%.*]], <vscale x 8 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
52 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
54 svint16_t
test_svcvt_s16_f16_m(svint16_t inactive
, svbool_t pg
, svfloat16_t op
) MODE_ATTR
56 return SVE_ACLE_FUNC(svcvt_s16
,_f16
,_m
,)(inactive
, pg
, op
);
59 // CHECK-LABEL: @test_svcvt_s16_f16_x(
61 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
62 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.fcvtzs.nxv8i16.nxv8f16(<vscale x 8 x i16> undef, <vscale x 8 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
63 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
65 // CPP-CHECK-LABEL: @_Z20test_svcvt_s16_f16_xu10__SVBool_tu13__SVFloat16_t(
66 // CPP-CHECK-NEXT: entry:
67 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
68 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.fcvtzs.nxv8i16.nxv8f16(<vscale x 8 x i16> undef, <vscale x 8 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
69 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
71 svint16_t
test_svcvt_s16_f16_x(svbool_t pg
, svfloat16_t op
) MODE_ATTR
73 return SVE_ACLE_FUNC(svcvt_s16
,_f16
,_x
,)(pg
, op
);
76 // CHECK-LABEL: @test_svcvt_u16_f16_z(
78 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
79 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.fcvtzu.nxv8i16.nxv8f16(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
80 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
82 // CPP-CHECK-LABEL: @_Z20test_svcvt_u16_f16_zu10__SVBool_tu13__SVFloat16_t(
83 // CPP-CHECK-NEXT: entry:
84 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
85 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.fcvtzu.nxv8i16.nxv8f16(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
86 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
88 svuint16_t
test_svcvt_u16_f16_z(svbool_t pg
, svfloat16_t op
) MODE_ATTR
90 return SVE_ACLE_FUNC(svcvt_u16
,_f16
,_z
,)(pg
, op
);
93 // CHECK-LABEL: @test_svcvt_u16_f16_m(
95 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
96 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.fcvtzu.nxv8i16.nxv8f16(<vscale x 8 x i16> [[INACTIVE:%.*]], <vscale x 8 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
97 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
99 // CPP-CHECK-LABEL: @_Z20test_svcvt_u16_f16_mu12__SVUint16_tu10__SVBool_tu13__SVFloat16_t(
100 // CPP-CHECK-NEXT: entry:
101 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
102 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.fcvtzu.nxv8i16.nxv8f16(<vscale x 8 x i16> [[INACTIVE:%.*]], <vscale x 8 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
103 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
105 svuint16_t
test_svcvt_u16_f16_m(svuint16_t inactive
, svbool_t pg
, svfloat16_t op
) MODE_ATTR
107 return SVE_ACLE_FUNC(svcvt_u16
,_f16
,_m
,)(inactive
, pg
, op
);
110 // CHECK-LABEL: @test_svcvt_u16_f16_x(
111 // CHECK-NEXT: entry:
112 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
113 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.fcvtzu.nxv8i16.nxv8f16(<vscale x 8 x i16> undef, <vscale x 8 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
114 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
116 // CPP-CHECK-LABEL: @_Z20test_svcvt_u16_f16_xu10__SVBool_tu13__SVFloat16_t(
117 // CPP-CHECK-NEXT: entry:
118 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
119 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.fcvtzu.nxv8i16.nxv8f16(<vscale x 8 x i16> undef, <vscale x 8 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
120 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
122 svuint16_t
test_svcvt_u16_f16_x(svbool_t pg
, svfloat16_t op
) MODE_ATTR
124 return SVE_ACLE_FUNC(svcvt_u16
,_f16
,_x
,)(pg
, op
);
127 // CHECK-LABEL: @test_svcvt_s32_f16_z(
128 // CHECK-NEXT: entry:
129 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
130 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.i32f16(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
131 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
133 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f16_zu10__SVBool_tu13__SVFloat16_t(
134 // CPP-CHECK-NEXT: entry:
135 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
136 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.i32f16(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
137 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
139 svint32_t
test_svcvt_s32_f16_z(svbool_t pg
, svfloat16_t op
) MODE_ATTR
141 return SVE_ACLE_FUNC(svcvt_s32
,_f16
,_z
,)(pg
, op
);
144 // CHECK-LABEL: @test_svcvt_s32_f32_z(
145 // CHECK-NEXT: entry:
146 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
147 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.nxv4i32.nxv4f32(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
148 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
150 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f32_zu10__SVBool_tu13__SVFloat32_t(
151 // CPP-CHECK-NEXT: entry:
152 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
153 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.nxv4i32.nxv4f32(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
154 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
156 svint32_t
test_svcvt_s32_f32_z(svbool_t pg
, svfloat32_t op
) MODE_ATTR
158 return SVE_ACLE_FUNC(svcvt_s32
,_f32
,_z
,)(pg
, op
);
161 // CHECK-LABEL: @test_svcvt_s32_f64_z(
162 // CHECK-NEXT: entry:
163 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
164 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.i32f64(<vscale x 4 x i32> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
165 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
167 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f64_zu10__SVBool_tu13__SVFloat64_t(
168 // CPP-CHECK-NEXT: entry:
169 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
170 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.i32f64(<vscale x 4 x i32> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
171 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
173 svint32_t
test_svcvt_s32_f64_z(svbool_t pg
, svfloat64_t op
) MODE_ATTR
175 return SVE_ACLE_FUNC(svcvt_s32
,_f64
,_z
,)(pg
, op
);
178 // CHECK-LABEL: @test_svcvt_s32_f16_m(
179 // CHECK-NEXT: entry:
180 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
181 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.i32f16(<vscale x 4 x i32> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
182 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
184 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f16_mu11__SVInt32_tu10__SVBool_tu13__SVFloat16_t(
185 // CPP-CHECK-NEXT: entry:
186 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
187 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.i32f16(<vscale x 4 x i32> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
188 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
190 svint32_t
test_svcvt_s32_f16_m(svint32_t inactive
, svbool_t pg
, svfloat16_t op
) MODE_ATTR
192 return SVE_ACLE_FUNC(svcvt_s32
,_f16
,_m
,)(inactive
, pg
, op
);
195 // CHECK-LABEL: @test_svcvt_s32_f32_m(
196 // CHECK-NEXT: entry:
197 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
198 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.nxv4i32.nxv4f32(<vscale x 4 x i32> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
199 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
201 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f32_mu11__SVInt32_tu10__SVBool_tu13__SVFloat32_t(
202 // CPP-CHECK-NEXT: entry:
203 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
204 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.nxv4i32.nxv4f32(<vscale x 4 x i32> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
205 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
207 svint32_t
test_svcvt_s32_f32_m(svint32_t inactive
, svbool_t pg
, svfloat32_t op
) MODE_ATTR
209 return SVE_ACLE_FUNC(svcvt_s32
,_f32
,_m
,)(inactive
, pg
, op
);
212 // CHECK-LABEL: @test_svcvt_s32_f64_m(
213 // CHECK-NEXT: entry:
214 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
215 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.i32f64(<vscale x 4 x i32> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
216 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
218 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f64_mu11__SVInt32_tu10__SVBool_tu13__SVFloat64_t(
219 // CPP-CHECK-NEXT: entry:
220 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
221 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.i32f64(<vscale x 4 x i32> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
222 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
224 svint32_t
test_svcvt_s32_f64_m(svint32_t inactive
, svbool_t pg
, svfloat64_t op
) MODE_ATTR
226 return SVE_ACLE_FUNC(svcvt_s32
,_f64
,_m
,)(inactive
, pg
, op
);
229 // CHECK-LABEL: @test_svcvt_s32_f16_x(
230 // CHECK-NEXT: entry:
231 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
232 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.i32f16(<vscale x 4 x i32> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
233 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
235 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f16_xu10__SVBool_tu13__SVFloat16_t(
236 // CPP-CHECK-NEXT: entry:
237 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
238 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.i32f16(<vscale x 4 x i32> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
239 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
241 svint32_t
test_svcvt_s32_f16_x(svbool_t pg
, svfloat16_t op
) MODE_ATTR
243 return SVE_ACLE_FUNC(svcvt_s32
,_f16
,_x
,)(pg
, op
);
246 // CHECK-LABEL: @test_svcvt_s32_f32_x(
247 // CHECK-NEXT: entry:
248 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
249 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.nxv4i32.nxv4f32(<vscale x 4 x i32> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
250 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
252 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f32_xu10__SVBool_tu13__SVFloat32_t(
253 // CPP-CHECK-NEXT: entry:
254 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
255 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.nxv4i32.nxv4f32(<vscale x 4 x i32> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
256 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
258 svint32_t
test_svcvt_s32_f32_x(svbool_t pg
, svfloat32_t op
) MODE_ATTR
260 return SVE_ACLE_FUNC(svcvt_s32
,_f32
,_x
,)(pg
, op
);
263 // CHECK-LABEL: @test_svcvt_s32_f64_x(
264 // CHECK-NEXT: entry:
265 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
266 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.i32f64(<vscale x 4 x i32> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
267 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
269 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f64_xu10__SVBool_tu13__SVFloat64_t(
270 // CPP-CHECK-NEXT: entry:
271 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
272 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzs.i32f64(<vscale x 4 x i32> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
273 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
275 svint32_t
test_svcvt_s32_f64_x(svbool_t pg
, svfloat64_t op
) MODE_ATTR
277 return SVE_ACLE_FUNC(svcvt_s32
,_f64
,_x
,)(pg
, op
);
280 // CHECK-LABEL: @test_svcvt_s64_f16_z(
281 // CHECK-NEXT: entry:
282 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
283 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.i64f16(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
284 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
286 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f16_zu10__SVBool_tu13__SVFloat16_t(
287 // CPP-CHECK-NEXT: entry:
288 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
289 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.i64f16(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
290 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
292 svint64_t
test_svcvt_s64_f16_z(svbool_t pg
, svfloat16_t op
) MODE_ATTR
294 return SVE_ACLE_FUNC(svcvt_s64
,_f16
,_z
,)(pg
, op
);
297 // CHECK-LABEL: @test_svcvt_s64_f32_z(
298 // CHECK-NEXT: entry:
299 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
300 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.i64f32(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
301 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
303 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f32_zu10__SVBool_tu13__SVFloat32_t(
304 // CPP-CHECK-NEXT: entry:
305 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
306 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.i64f32(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
307 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
309 svint64_t
test_svcvt_s64_f32_z(svbool_t pg
, svfloat32_t op
) MODE_ATTR
311 return SVE_ACLE_FUNC(svcvt_s64
,_f32
,_z
,)(pg
, op
);
314 // CHECK-LABEL: @test_svcvt_s64_f64_z(
315 // CHECK-NEXT: entry:
316 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
317 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.nxv2i64.nxv2f64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
318 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
320 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f64_zu10__SVBool_tu13__SVFloat64_t(
321 // CPP-CHECK-NEXT: entry:
322 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
323 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.nxv2i64.nxv2f64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
324 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
326 svint64_t
test_svcvt_s64_f64_z(svbool_t pg
, svfloat64_t op
) MODE_ATTR
328 return SVE_ACLE_FUNC(svcvt_s64
,_f64
,_z
,)(pg
, op
);
331 // CHECK-LABEL: @test_svcvt_s64_f16_m(
332 // CHECK-NEXT: entry:
333 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
334 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.i64f16(<vscale x 2 x i64> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
335 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
337 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f16_mu11__SVInt64_tu10__SVBool_tu13__SVFloat16_t(
338 // CPP-CHECK-NEXT: entry:
339 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
340 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.i64f16(<vscale x 2 x i64> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
341 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
343 svint64_t
test_svcvt_s64_f16_m(svint64_t inactive
, svbool_t pg
, svfloat16_t op
) MODE_ATTR
345 return SVE_ACLE_FUNC(svcvt_s64
,_f16
,_m
,)(inactive
, pg
, op
);
348 // CHECK-LABEL: @test_svcvt_s64_f32_m(
349 // CHECK-NEXT: entry:
350 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
351 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.i64f32(<vscale x 2 x i64> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
352 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
354 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f32_mu11__SVInt64_tu10__SVBool_tu13__SVFloat32_t(
355 // CPP-CHECK-NEXT: entry:
356 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
357 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.i64f32(<vscale x 2 x i64> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
358 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
360 svint64_t
test_svcvt_s64_f32_m(svint64_t inactive
, svbool_t pg
, svfloat32_t op
) MODE_ATTR
362 return SVE_ACLE_FUNC(svcvt_s64
,_f32
,_m
,)(inactive
, pg
, op
);
365 // CHECK-LABEL: @test_svcvt_s64_f64_m(
366 // CHECK-NEXT: entry:
367 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
368 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.nxv2i64.nxv2f64(<vscale x 2 x i64> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
369 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
371 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f64_mu11__SVInt64_tu10__SVBool_tu13__SVFloat64_t(
372 // CPP-CHECK-NEXT: entry:
373 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
374 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.nxv2i64.nxv2f64(<vscale x 2 x i64> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
375 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
377 svint64_t
test_svcvt_s64_f64_m(svint64_t inactive
, svbool_t pg
, svfloat64_t op
) MODE_ATTR
379 return SVE_ACLE_FUNC(svcvt_s64
,_f64
,_m
,)(inactive
, pg
, op
);
382 // CHECK-LABEL: @test_svcvt_s64_f16_x(
383 // CHECK-NEXT: entry:
384 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
385 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.i64f16(<vscale x 2 x i64> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
386 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
388 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f16_xu10__SVBool_tu13__SVFloat16_t(
389 // CPP-CHECK-NEXT: entry:
390 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
391 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.i64f16(<vscale x 2 x i64> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
392 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
394 svint64_t
test_svcvt_s64_f16_x(svbool_t pg
, svfloat16_t op
) MODE_ATTR
396 return SVE_ACLE_FUNC(svcvt_s64
,_f16
,_x
,)(pg
, op
);
399 // CHECK-LABEL: @test_svcvt_s64_f32_x(
400 // CHECK-NEXT: entry:
401 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
402 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.i64f32(<vscale x 2 x i64> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
403 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
405 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f32_xu10__SVBool_tu13__SVFloat32_t(
406 // CPP-CHECK-NEXT: entry:
407 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
408 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.i64f32(<vscale x 2 x i64> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
409 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
411 svint64_t
test_svcvt_s64_f32_x(svbool_t pg
, svfloat32_t op
) MODE_ATTR
413 return SVE_ACLE_FUNC(svcvt_s64
,_f32
,_x
,)(pg
, op
);
416 // CHECK-LABEL: @test_svcvt_s64_f64_x(
417 // CHECK-NEXT: entry:
418 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
419 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.nxv2i64.nxv2f64(<vscale x 2 x i64> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
420 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
422 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f64_xu10__SVBool_tu13__SVFloat64_t(
423 // CPP-CHECK-NEXT: entry:
424 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
425 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzs.nxv2i64.nxv2f64(<vscale x 2 x i64> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
426 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
428 svint64_t
test_svcvt_s64_f64_x(svbool_t pg
, svfloat64_t op
) MODE_ATTR
430 return SVE_ACLE_FUNC(svcvt_s64
,_f64
,_x
,)(pg
, op
);
433 // CHECK-LABEL: @test_svcvt_u32_f16_z(
434 // CHECK-NEXT: entry:
435 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
436 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.i32f16(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
437 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
439 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f16_zu10__SVBool_tu13__SVFloat16_t(
440 // CPP-CHECK-NEXT: entry:
441 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
442 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.i32f16(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
443 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
445 svuint32_t
test_svcvt_u32_f16_z(svbool_t pg
, svfloat16_t op
) MODE_ATTR
447 return SVE_ACLE_FUNC(svcvt_u32
,_f16
,_z
,)(pg
, op
);
450 // CHECK-LABEL: @test_svcvt_u32_f32_z(
451 // CHECK-NEXT: entry:
452 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
453 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.nxv4i32.nxv4f32(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
454 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
456 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f32_zu10__SVBool_tu13__SVFloat32_t(
457 // CPP-CHECK-NEXT: entry:
458 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
459 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.nxv4i32.nxv4f32(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
460 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
462 svuint32_t
test_svcvt_u32_f32_z(svbool_t pg
, svfloat32_t op
) MODE_ATTR
464 return SVE_ACLE_FUNC(svcvt_u32
,_f32
,_z
,)(pg
, op
);
467 // CHECK-LABEL: @test_svcvt_u32_f64_z(
468 // CHECK-NEXT: entry:
469 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
470 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.i32f64(<vscale x 4 x i32> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
471 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
473 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f64_zu10__SVBool_tu13__SVFloat64_t(
474 // CPP-CHECK-NEXT: entry:
475 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
476 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.i32f64(<vscale x 4 x i32> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
477 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
479 svuint32_t
test_svcvt_u32_f64_z(svbool_t pg
, svfloat64_t op
) MODE_ATTR
481 return SVE_ACLE_FUNC(svcvt_u32
,_f64
,_z
,)(pg
, op
);
484 // CHECK-LABEL: @test_svcvt_u32_f16_m(
485 // CHECK-NEXT: entry:
486 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
487 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.i32f16(<vscale x 4 x i32> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
488 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
490 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f16_mu12__SVUint32_tu10__SVBool_tu13__SVFloat16_t(
491 // CPP-CHECK-NEXT: entry:
492 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
493 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.i32f16(<vscale x 4 x i32> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
494 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
496 svuint32_t
test_svcvt_u32_f16_m(svuint32_t inactive
, svbool_t pg
, svfloat16_t op
) MODE_ATTR
498 return SVE_ACLE_FUNC(svcvt_u32
,_f16
,_m
,)(inactive
, pg
, op
);
501 // CHECK-LABEL: @test_svcvt_u32_f32_m(
502 // CHECK-NEXT: entry:
503 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
504 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.nxv4i32.nxv4f32(<vscale x 4 x i32> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
505 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
507 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f32_mu12__SVUint32_tu10__SVBool_tu13__SVFloat32_t(
508 // CPP-CHECK-NEXT: entry:
509 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
510 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.nxv4i32.nxv4f32(<vscale x 4 x i32> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
511 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
513 svuint32_t
test_svcvt_u32_f32_m(svuint32_t inactive
, svbool_t pg
, svfloat32_t op
) MODE_ATTR
515 return SVE_ACLE_FUNC(svcvt_u32
,_f32
,_m
,)(inactive
, pg
, op
);
518 // CHECK-LABEL: @test_svcvt_u32_f64_m(
519 // CHECK-NEXT: entry:
520 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
521 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.i32f64(<vscale x 4 x i32> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
522 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
524 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f64_mu12__SVUint32_tu10__SVBool_tu13__SVFloat64_t(
525 // CPP-CHECK-NEXT: entry:
526 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
527 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.i32f64(<vscale x 4 x i32> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
528 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
530 svuint32_t
test_svcvt_u32_f64_m(svuint32_t inactive
, svbool_t pg
, svfloat64_t op
) MODE_ATTR
532 return SVE_ACLE_FUNC(svcvt_u32
,_f64
,_m
,)(inactive
, pg
, op
);
535 // CHECK-LABEL: @test_svcvt_u32_f16_x(
536 // CHECK-NEXT: entry:
537 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
538 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.i32f16(<vscale x 4 x i32> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
539 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
541 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f16_xu10__SVBool_tu13__SVFloat16_t(
542 // CPP-CHECK-NEXT: entry:
543 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
544 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.i32f16(<vscale x 4 x i32> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
545 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
547 svuint32_t
test_svcvt_u32_f16_x(svbool_t pg
, svfloat16_t op
) MODE_ATTR
549 return SVE_ACLE_FUNC(svcvt_u32
,_f16
,_x
,)(pg
, op
);
552 // CHECK-LABEL: @test_svcvt_u32_f32_x(
553 // CHECK-NEXT: entry:
554 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
555 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.nxv4i32.nxv4f32(<vscale x 4 x i32> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
556 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
558 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f32_xu10__SVBool_tu13__SVFloat32_t(
559 // CPP-CHECK-NEXT: entry:
560 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
561 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.nxv4i32.nxv4f32(<vscale x 4 x i32> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
562 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
564 svuint32_t
test_svcvt_u32_f32_x(svbool_t pg
, svfloat32_t op
) MODE_ATTR
566 return SVE_ACLE_FUNC(svcvt_u32
,_f32
,_x
,)(pg
, op
);
569 // CHECK-LABEL: @test_svcvt_u32_f64_x(
570 // CHECK-NEXT: entry:
571 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
572 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.i32f64(<vscale x 4 x i32> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
573 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
575 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f64_xu10__SVBool_tu13__SVFloat64_t(
576 // CPP-CHECK-NEXT: entry:
577 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
578 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.fcvtzu.i32f64(<vscale x 4 x i32> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
579 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
581 svuint32_t
test_svcvt_u32_f64_x(svbool_t pg
, svfloat64_t op
) MODE_ATTR
583 return SVE_ACLE_FUNC(svcvt_u32
,_f64
,_x
,)(pg
, op
);
586 // CHECK-LABEL: @test_svcvt_u64_f16_z(
587 // CHECK-NEXT: entry:
588 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
589 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.i64f16(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
590 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
592 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f16_zu10__SVBool_tu13__SVFloat16_t(
593 // CPP-CHECK-NEXT: entry:
594 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
595 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.i64f16(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
596 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
598 svuint64_t
test_svcvt_u64_f16_z(svbool_t pg
, svfloat16_t op
) MODE_ATTR
600 return SVE_ACLE_FUNC(svcvt_u64
,_f16
,_z
,)(pg
, op
);
603 // CHECK-LABEL: @test_svcvt_u64_f32_z(
604 // CHECK-NEXT: entry:
605 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
606 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.i64f32(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
607 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
609 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f32_zu10__SVBool_tu13__SVFloat32_t(
610 // CPP-CHECK-NEXT: entry:
611 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
612 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.i64f32(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
613 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
615 svuint64_t
test_svcvt_u64_f32_z(svbool_t pg
, svfloat32_t op
) MODE_ATTR
617 return SVE_ACLE_FUNC(svcvt_u64
,_f32
,_z
,)(pg
, op
);
620 // CHECK-LABEL: @test_svcvt_u64_f64_z(
621 // CHECK-NEXT: entry:
622 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
623 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.nxv2i64.nxv2f64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
624 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
626 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f64_zu10__SVBool_tu13__SVFloat64_t(
627 // CPP-CHECK-NEXT: entry:
628 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
629 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.nxv2i64.nxv2f64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
630 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
632 svuint64_t
test_svcvt_u64_f64_z(svbool_t pg
, svfloat64_t op
) MODE_ATTR
634 return SVE_ACLE_FUNC(svcvt_u64
,_f64
,_z
,)(pg
, op
);
637 // CHECK-LABEL: @test_svcvt_u64_f16_m(
638 // CHECK-NEXT: entry:
639 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
640 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.i64f16(<vscale x 2 x i64> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
641 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
643 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f16_mu12__SVUint64_tu10__SVBool_tu13__SVFloat16_t(
644 // CPP-CHECK-NEXT: entry:
645 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
646 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.i64f16(<vscale x 2 x i64> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
647 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
649 svuint64_t
test_svcvt_u64_f16_m(svuint64_t inactive
, svbool_t pg
, svfloat16_t op
) MODE_ATTR
651 return SVE_ACLE_FUNC(svcvt_u64
,_f16
,_m
,)(inactive
, pg
, op
);
654 // CHECK-LABEL: @test_svcvt_u64_f32_m(
655 // CHECK-NEXT: entry:
656 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
657 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.i64f32(<vscale x 2 x i64> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
658 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
660 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f32_mu12__SVUint64_tu10__SVBool_tu13__SVFloat32_t(
661 // CPP-CHECK-NEXT: entry:
662 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
663 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.i64f32(<vscale x 2 x i64> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
664 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
666 svuint64_t
test_svcvt_u64_f32_m(svuint64_t inactive
, svbool_t pg
, svfloat32_t op
) MODE_ATTR
668 return SVE_ACLE_FUNC(svcvt_u64
,_f32
,_m
,)(inactive
, pg
, op
);
671 // CHECK-LABEL: @test_svcvt_u64_f64_m(
672 // CHECK-NEXT: entry:
673 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
674 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.nxv2i64.nxv2f64(<vscale x 2 x i64> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
675 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
677 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f64_mu12__SVUint64_tu10__SVBool_tu13__SVFloat64_t(
678 // CPP-CHECK-NEXT: entry:
679 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
680 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.nxv2i64.nxv2f64(<vscale x 2 x i64> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
681 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
683 svuint64_t
test_svcvt_u64_f64_m(svuint64_t inactive
, svbool_t pg
, svfloat64_t op
) MODE_ATTR
685 return SVE_ACLE_FUNC(svcvt_u64
,_f64
,_m
,)(inactive
, pg
, op
);
688 // CHECK-LABEL: @test_svcvt_u64_f16_x(
689 // CHECK-NEXT: entry:
690 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
691 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.i64f16(<vscale x 2 x i64> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
692 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
694 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f16_xu10__SVBool_tu13__SVFloat16_t(
695 // CPP-CHECK-NEXT: entry:
696 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
697 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.i64f16(<vscale x 2 x i64> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
698 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
700 svuint64_t
test_svcvt_u64_f16_x(svbool_t pg
, svfloat16_t op
) MODE_ATTR
702 return SVE_ACLE_FUNC(svcvt_u64
,_f16
,_x
,)(pg
, op
);
705 // CHECK-LABEL: @test_svcvt_u64_f32_x(
706 // CHECK-NEXT: entry:
707 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
708 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.i64f32(<vscale x 2 x i64> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
709 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
711 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f32_xu10__SVBool_tu13__SVFloat32_t(
712 // CPP-CHECK-NEXT: entry:
713 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
714 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.i64f32(<vscale x 2 x i64> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
715 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
717 svuint64_t
test_svcvt_u64_f32_x(svbool_t pg
, svfloat32_t op
) MODE_ATTR
719 return SVE_ACLE_FUNC(svcvt_u64
,_f32
,_x
,)(pg
, op
);
722 // CHECK-LABEL: @test_svcvt_u64_f64_x(
723 // CHECK-NEXT: entry:
724 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
725 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.nxv2i64.nxv2f64(<vscale x 2 x i64> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
726 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
728 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f64_xu10__SVBool_tu13__SVFloat64_t(
729 // CPP-CHECK-NEXT: entry:
730 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
731 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.fcvtzu.nxv2i64.nxv2f64(<vscale x 2 x i64> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
732 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
734 svuint64_t
test_svcvt_u64_f64_x(svbool_t pg
, svfloat64_t op
) MODE_ATTR
736 return SVE_ACLE_FUNC(svcvt_u64
,_f64
,_x
,)(pg
, op
);
739 // CHECK-LABEL: @test_svcvt_f16_s32_z(
740 // CHECK-NEXT: entry:
741 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
742 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.scvtf.f16i32(<vscale x 8 x half> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
743 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
745 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_s32_zu10__SVBool_tu11__SVInt32_t(
746 // CPP-CHECK-NEXT: entry:
747 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
748 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.scvtf.f16i32(<vscale x 8 x half> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
749 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
751 svfloat16_t
test_svcvt_f16_s32_z(svbool_t pg
, svint32_t op
) MODE_ATTR
753 return SVE_ACLE_FUNC(svcvt_f16
,_s32
,_z
,)(pg
, op
);
756 // CHECK-LABEL: @test_svcvt_f32_s32_z(
757 // CHECK-NEXT: entry:
758 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
759 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.scvtf.nxv4f32.nxv4i32(<vscale x 4 x float> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
760 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
762 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_s32_zu10__SVBool_tu11__SVInt32_t(
763 // CPP-CHECK-NEXT: entry:
764 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
765 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.scvtf.nxv4f32.nxv4i32(<vscale x 4 x float> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
766 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
768 svfloat32_t
test_svcvt_f32_s32_z(svbool_t pg
, svint32_t op
) MODE_ATTR
770 return SVE_ACLE_FUNC(svcvt_f32
,_s32
,_z
,)(pg
, op
);
773 // CHECK-LABEL: @test_svcvt_f64_s32_z(
774 // CHECK-NEXT: entry:
775 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
776 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.scvtf.f64i32(<vscale x 2 x double> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
777 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
779 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_s32_zu10__SVBool_tu11__SVInt32_t(
780 // CPP-CHECK-NEXT: entry:
781 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
782 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.scvtf.f64i32(<vscale x 2 x double> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
783 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
785 svfloat64_t
test_svcvt_f64_s32_z(svbool_t pg
, svint32_t op
) MODE_ATTR
787 return SVE_ACLE_FUNC(svcvt_f64
,_s32
,_z
,)(pg
, op
);
790 // CHECK-LABEL: @test_svcvt_f16_s32_m(
791 // CHECK-NEXT: entry:
792 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
793 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.scvtf.f16i32(<vscale x 8 x half> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
794 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
796 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_s32_mu13__SVFloat16_tu10__SVBool_tu11__SVInt32_t(
797 // CPP-CHECK-NEXT: entry:
798 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
799 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.scvtf.f16i32(<vscale x 8 x half> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
800 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
802 svfloat16_t
test_svcvt_f16_s32_m(svfloat16_t inactive
, svbool_t pg
, svint32_t op
) MODE_ATTR
804 return SVE_ACLE_FUNC(svcvt_f16
,_s32
,_m
,)(inactive
, pg
, op
);
807 // CHECK-LABEL: @test_svcvt_f32_s32_m(
808 // CHECK-NEXT: entry:
809 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
810 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.scvtf.nxv4f32.nxv4i32(<vscale x 4 x float> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
811 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
813 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_s32_mu13__SVFloat32_tu10__SVBool_tu11__SVInt32_t(
814 // CPP-CHECK-NEXT: entry:
815 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
816 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.scvtf.nxv4f32.nxv4i32(<vscale x 4 x float> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
817 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
819 svfloat32_t
test_svcvt_f32_s32_m(svfloat32_t inactive
, svbool_t pg
, svint32_t op
) MODE_ATTR
821 return SVE_ACLE_FUNC(svcvt_f32
,_s32
,_m
,)(inactive
, pg
, op
);
824 // CHECK-LABEL: @test_svcvt_f64_s32_m(
825 // CHECK-NEXT: entry:
826 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
827 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.scvtf.f64i32(<vscale x 2 x double> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
828 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
830 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_s32_mu13__SVFloat64_tu10__SVBool_tu11__SVInt32_t(
831 // CPP-CHECK-NEXT: entry:
832 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
833 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.scvtf.f64i32(<vscale x 2 x double> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
834 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
836 svfloat64_t
test_svcvt_f64_s32_m(svfloat64_t inactive
, svbool_t pg
, svint32_t op
) MODE_ATTR
838 return SVE_ACLE_FUNC(svcvt_f64
,_s32
,_m
,)(inactive
, pg
, op
);
841 // CHECK-LABEL: @test_svcvt_f16_s32_x(
842 // CHECK-NEXT: entry:
843 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
844 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.scvtf.f16i32(<vscale x 8 x half> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
845 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
847 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_s32_xu10__SVBool_tu11__SVInt32_t(
848 // CPP-CHECK-NEXT: entry:
849 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
850 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.scvtf.f16i32(<vscale x 8 x half> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
851 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
853 svfloat16_t
test_svcvt_f16_s32_x(svbool_t pg
, svint32_t op
) MODE_ATTR
855 return SVE_ACLE_FUNC(svcvt_f16
,_s32
,_x
,)(pg
, op
);
858 // CHECK-LABEL: @test_svcvt_f32_s32_x(
859 // CHECK-NEXT: entry:
860 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
861 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.scvtf.nxv4f32.nxv4i32(<vscale x 4 x float> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
862 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
864 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_s32_xu10__SVBool_tu11__SVInt32_t(
865 // CPP-CHECK-NEXT: entry:
866 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
867 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.scvtf.nxv4f32.nxv4i32(<vscale x 4 x float> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
868 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
870 svfloat32_t
test_svcvt_f32_s32_x(svbool_t pg
, svint32_t op
) MODE_ATTR
872 return SVE_ACLE_FUNC(svcvt_f32
,_s32
,_x
,)(pg
, op
);
875 // CHECK-LABEL: @test_svcvt_f64_s32_x(
876 // CHECK-NEXT: entry:
877 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
878 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.scvtf.f64i32(<vscale x 2 x double> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
879 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
881 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_s32_xu10__SVBool_tu11__SVInt32_t(
882 // CPP-CHECK-NEXT: entry:
883 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
884 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.scvtf.f64i32(<vscale x 2 x double> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
885 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
887 svfloat64_t
test_svcvt_f64_s32_x(svbool_t pg
, svint32_t op
) MODE_ATTR
889 return SVE_ACLE_FUNC(svcvt_f64
,_s32
,_x
,)(pg
, op
);
892 // CHECK-LABEL: @test_svcvt_f16_s64_z(
893 // CHECK-NEXT: entry:
894 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
895 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.scvtf.f16i64(<vscale x 8 x half> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
896 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
898 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_s64_zu10__SVBool_tu11__SVInt64_t(
899 // CPP-CHECK-NEXT: entry:
900 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
901 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.scvtf.f16i64(<vscale x 8 x half> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
902 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
904 svfloat16_t
test_svcvt_f16_s64_z(svbool_t pg
, svint64_t op
) MODE_ATTR
906 return SVE_ACLE_FUNC(svcvt_f16
,_s64
,_z
,)(pg
, op
);
909 // CHECK-LABEL: @test_svcvt_f32_s64_z(
910 // CHECK-NEXT: entry:
911 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
912 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.scvtf.f32i64(<vscale x 4 x float> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
913 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
915 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_s64_zu10__SVBool_tu11__SVInt64_t(
916 // CPP-CHECK-NEXT: entry:
917 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
918 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.scvtf.f32i64(<vscale x 4 x float> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
919 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
921 svfloat32_t
test_svcvt_f32_s64_z(svbool_t pg
, svint64_t op
) MODE_ATTR
923 return SVE_ACLE_FUNC(svcvt_f32
,_s64
,_z
,)(pg
, op
);
926 // CHECK-LABEL: @test_svcvt_f64_s64_z(
927 // CHECK-NEXT: entry:
928 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
929 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.scvtf.nxv2f64.nxv2i64(<vscale x 2 x double> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
930 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
932 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_s64_zu10__SVBool_tu11__SVInt64_t(
933 // CPP-CHECK-NEXT: entry:
934 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
935 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.scvtf.nxv2f64.nxv2i64(<vscale x 2 x double> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
936 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
938 svfloat64_t
test_svcvt_f64_s64_z(svbool_t pg
, svint64_t op
) MODE_ATTR
940 return SVE_ACLE_FUNC(svcvt_f64
,_s64
,_z
,)(pg
, op
);
943 // CHECK-LABEL: @test_svcvt_f16_s64_m(
944 // CHECK-NEXT: entry:
945 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
946 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.scvtf.f16i64(<vscale x 8 x half> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
947 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
949 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_s64_mu13__SVFloat16_tu10__SVBool_tu11__SVInt64_t(
950 // CPP-CHECK-NEXT: entry:
951 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
952 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.scvtf.f16i64(<vscale x 8 x half> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
953 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
955 svfloat16_t
test_svcvt_f16_s64_m(svfloat16_t inactive
, svbool_t pg
, svint64_t op
) MODE_ATTR
957 return SVE_ACLE_FUNC(svcvt_f16
,_s64
,_m
,)(inactive
, pg
, op
);
960 // CHECK-LABEL: @test_svcvt_f32_s64_m(
961 // CHECK-NEXT: entry:
962 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
963 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.scvtf.f32i64(<vscale x 4 x float> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
964 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
966 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_s64_mu13__SVFloat32_tu10__SVBool_tu11__SVInt64_t(
967 // CPP-CHECK-NEXT: entry:
968 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
969 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.scvtf.f32i64(<vscale x 4 x float> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
970 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
972 svfloat32_t
test_svcvt_f32_s64_m(svfloat32_t inactive
, svbool_t pg
, svint64_t op
) MODE_ATTR
974 return SVE_ACLE_FUNC(svcvt_f32
,_s64
,_m
,)(inactive
, pg
, op
);
977 // CHECK-LABEL: @test_svcvt_f64_s64_m(
978 // CHECK-NEXT: entry:
979 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
980 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.scvtf.nxv2f64.nxv2i64(<vscale x 2 x double> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
981 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
983 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_s64_mu13__SVFloat64_tu10__SVBool_tu11__SVInt64_t(
984 // CPP-CHECK-NEXT: entry:
985 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
986 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.scvtf.nxv2f64.nxv2i64(<vscale x 2 x double> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
987 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
989 svfloat64_t
test_svcvt_f64_s64_m(svfloat64_t inactive
, svbool_t pg
, svint64_t op
) MODE_ATTR
991 return SVE_ACLE_FUNC(svcvt_f64
,_s64
,_m
,)(inactive
, pg
, op
);
994 // CHECK-LABEL: @test_svcvt_f16_s64_x(
995 // CHECK-NEXT: entry:
996 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
997 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.scvtf.f16i64(<vscale x 8 x half> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
998 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1000 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_s64_xu10__SVBool_tu11__SVInt64_t(
1001 // CPP-CHECK-NEXT: entry:
1002 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1003 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.scvtf.f16i64(<vscale x 8 x half> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1004 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1006 svfloat16_t
test_svcvt_f16_s64_x(svbool_t pg
, svint64_t op
) MODE_ATTR
1008 return SVE_ACLE_FUNC(svcvt_f16
,_s64
,_x
,)(pg
, op
);
1011 // CHECK-LABEL: @test_svcvt_f32_s64_x(
1012 // CHECK-NEXT: entry:
1013 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1014 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.scvtf.f32i64(<vscale x 4 x float> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1015 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1017 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_s64_xu10__SVBool_tu11__SVInt64_t(
1018 // CPP-CHECK-NEXT: entry:
1019 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1020 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.scvtf.f32i64(<vscale x 4 x float> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1021 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1023 svfloat32_t
test_svcvt_f32_s64_x(svbool_t pg
, svint64_t op
) MODE_ATTR
1025 return SVE_ACLE_FUNC(svcvt_f32
,_s64
,_x
,)(pg
, op
);
1028 // CHECK-LABEL: @test_svcvt_f64_s64_x(
1029 // CHECK-NEXT: entry:
1030 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1031 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.scvtf.nxv2f64.nxv2i64(<vscale x 2 x double> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1032 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1034 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_s64_xu10__SVBool_tu11__SVInt64_t(
1035 // CPP-CHECK-NEXT: entry:
1036 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1037 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.scvtf.nxv2f64.nxv2i64(<vscale x 2 x double> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1038 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1040 svfloat64_t
test_svcvt_f64_s64_x(svbool_t pg
, svint64_t op
) MODE_ATTR
1042 return SVE_ACLE_FUNC(svcvt_f64
,_s64
,_x
,)(pg
, op
);
1045 // CHECK-LABEL: @test_svcvt_f16_u32_z(
1046 // CHECK-NEXT: entry:
1047 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1048 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.ucvtf.f16i32(<vscale x 8 x half> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1049 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1051 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_u32_zu10__SVBool_tu12__SVUint32_t(
1052 // CPP-CHECK-NEXT: entry:
1053 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1054 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.ucvtf.f16i32(<vscale x 8 x half> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1055 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1057 svfloat16_t
test_svcvt_f16_u32_z(svbool_t pg
, svuint32_t op
) MODE_ATTR
1059 return SVE_ACLE_FUNC(svcvt_f16
,_u32
,_z
,)(pg
, op
);
1062 // CHECK-LABEL: @test_svcvt_f32_u32_z(
1063 // CHECK-NEXT: entry:
1064 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1065 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.ucvtf.nxv4f32.nxv4i32(<vscale x 4 x float> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1066 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1068 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_u32_zu10__SVBool_tu12__SVUint32_t(
1069 // CPP-CHECK-NEXT: entry:
1070 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1071 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.ucvtf.nxv4f32.nxv4i32(<vscale x 4 x float> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1072 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1074 svfloat32_t
test_svcvt_f32_u32_z(svbool_t pg
, svuint32_t op
) MODE_ATTR
1076 return SVE_ACLE_FUNC(svcvt_f32
,_u32
,_z
,)(pg
, op
);
1079 // CHECK-LABEL: @test_svcvt_f64_u32_z(
1080 // CHECK-NEXT: entry:
1081 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1082 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.ucvtf.f64i32(<vscale x 2 x double> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1083 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1085 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_u32_zu10__SVBool_tu12__SVUint32_t(
1086 // CPP-CHECK-NEXT: entry:
1087 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1088 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.ucvtf.f64i32(<vscale x 2 x double> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1089 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1091 svfloat64_t
test_svcvt_f64_u32_z(svbool_t pg
, svuint32_t op
) MODE_ATTR
1093 return SVE_ACLE_FUNC(svcvt_f64
,_u32
,_z
,)(pg
, op
);
1096 // CHECK-LABEL: @test_svcvt_f16_u32_m(
1097 // CHECK-NEXT: entry:
1098 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1099 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.ucvtf.f16i32(<vscale x 8 x half> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1100 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1102 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_u32_mu13__SVFloat16_tu10__SVBool_tu12__SVUint32_t(
1103 // CPP-CHECK-NEXT: entry:
1104 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1105 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.ucvtf.f16i32(<vscale x 8 x half> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1106 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1108 svfloat16_t
test_svcvt_f16_u32_m(svfloat16_t inactive
, svbool_t pg
, svuint32_t op
) MODE_ATTR
1110 return SVE_ACLE_FUNC(svcvt_f16
,_u32
,_m
,)(inactive
, pg
, op
);
1113 // CHECK-LABEL: @test_svcvt_f32_u32_m(
1114 // CHECK-NEXT: entry:
1115 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1116 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.ucvtf.nxv4f32.nxv4i32(<vscale x 4 x float> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1117 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1119 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_u32_mu13__SVFloat32_tu10__SVBool_tu12__SVUint32_t(
1120 // CPP-CHECK-NEXT: entry:
1121 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1122 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.ucvtf.nxv4f32.nxv4i32(<vscale x 4 x float> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1123 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1125 svfloat32_t
test_svcvt_f32_u32_m(svfloat32_t inactive
, svbool_t pg
, svuint32_t op
) MODE_ATTR
1127 return SVE_ACLE_FUNC(svcvt_f32
,_u32
,_m
,)(inactive
, pg
, op
);
1130 // CHECK-LABEL: @test_svcvt_f64_u32_m(
1131 // CHECK-NEXT: entry:
1132 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1133 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.ucvtf.f64i32(<vscale x 2 x double> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1134 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1136 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_u32_mu13__SVFloat64_tu10__SVBool_tu12__SVUint32_t(
1137 // CPP-CHECK-NEXT: entry:
1138 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1139 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.ucvtf.f64i32(<vscale x 2 x double> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1140 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1142 svfloat64_t
test_svcvt_f64_u32_m(svfloat64_t inactive
, svbool_t pg
, svuint32_t op
) MODE_ATTR
1144 return SVE_ACLE_FUNC(svcvt_f64
,_u32
,_m
,)(inactive
, pg
, op
);
1147 // CHECK-LABEL: @test_svcvt_f16_u32_x(
1148 // CHECK-NEXT: entry:
1149 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1150 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.ucvtf.f16i32(<vscale x 8 x half> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1151 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1153 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_u32_xu10__SVBool_tu12__SVUint32_t(
1154 // CPP-CHECK-NEXT: entry:
1155 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1156 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.ucvtf.f16i32(<vscale x 8 x half> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1157 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1159 svfloat16_t
test_svcvt_f16_u32_x(svbool_t pg
, svuint32_t op
) MODE_ATTR
1161 return SVE_ACLE_FUNC(svcvt_f16
,_u32
,_x
,)(pg
, op
);
1164 // CHECK-LABEL: @test_svcvt_f32_u32_x(
1165 // CHECK-NEXT: entry:
1166 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1167 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.ucvtf.nxv4f32.nxv4i32(<vscale x 4 x float> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1168 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1170 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_u32_xu10__SVBool_tu12__SVUint32_t(
1171 // CPP-CHECK-NEXT: entry:
1172 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1173 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.ucvtf.nxv4f32.nxv4i32(<vscale x 4 x float> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1174 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1176 svfloat32_t
test_svcvt_f32_u32_x(svbool_t pg
, svuint32_t op
) MODE_ATTR
1178 return SVE_ACLE_FUNC(svcvt_f32
,_u32
,_x
,)(pg
, op
);
1181 // CHECK-LABEL: @test_svcvt_f64_u32_x(
1182 // CHECK-NEXT: entry:
1183 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1184 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.ucvtf.f64i32(<vscale x 2 x double> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1185 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1187 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_u32_xu10__SVBool_tu12__SVUint32_t(
1188 // CPP-CHECK-NEXT: entry:
1189 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1190 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.ucvtf.f64i32(<vscale x 2 x double> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x i32> [[OP:%.*]])
1191 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1193 svfloat64_t
test_svcvt_f64_u32_x(svbool_t pg
, svuint32_t op
) MODE_ATTR
1195 return SVE_ACLE_FUNC(svcvt_f64
,_u32
,_x
,)(pg
, op
);
1198 // CHECK-LABEL: @test_svcvt_f16_u64_z(
1199 // CHECK-NEXT: entry:
1200 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1201 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.ucvtf.f16i64(<vscale x 8 x half> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1202 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1204 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_u64_zu10__SVBool_tu12__SVUint64_t(
1205 // CPP-CHECK-NEXT: entry:
1206 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1207 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.ucvtf.f16i64(<vscale x 8 x half> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1208 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1210 svfloat16_t
test_svcvt_f16_u64_z(svbool_t pg
, svuint64_t op
) MODE_ATTR
1212 return SVE_ACLE_FUNC(svcvt_f16
,_u64
,_z
,)(pg
, op
);
1215 // CHECK-LABEL: @test_svcvt_f32_u64_z(
1216 // CHECK-NEXT: entry:
1217 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1218 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.ucvtf.f32i64(<vscale x 4 x float> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1219 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1221 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_u64_zu10__SVBool_tu12__SVUint64_t(
1222 // CPP-CHECK-NEXT: entry:
1223 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1224 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.ucvtf.f32i64(<vscale x 4 x float> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1225 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1227 svfloat32_t
test_svcvt_f32_u64_z(svbool_t pg
, svuint64_t op
) MODE_ATTR
1229 return SVE_ACLE_FUNC(svcvt_f32
,_u64
,_z
,)(pg
, op
);
1232 // CHECK-LABEL: @test_svcvt_f64_u64_z(
1233 // CHECK-NEXT: entry:
1234 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1235 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.ucvtf.nxv2f64.nxv2i64(<vscale x 2 x double> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1236 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1238 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_u64_zu10__SVBool_tu12__SVUint64_t(
1239 // CPP-CHECK-NEXT: entry:
1240 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1241 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.ucvtf.nxv2f64.nxv2i64(<vscale x 2 x double> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1242 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1244 svfloat64_t
test_svcvt_f64_u64_z(svbool_t pg
, svuint64_t op
) MODE_ATTR
1246 return SVE_ACLE_FUNC(svcvt_f64
,_u64
,_z
,)(pg
, op
);
1249 // CHECK-LABEL: @test_svcvt_f16_u64_m(
1250 // CHECK-NEXT: entry:
1251 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1252 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.ucvtf.f16i64(<vscale x 8 x half> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1253 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1255 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_u64_mu13__SVFloat16_tu10__SVBool_tu12__SVUint64_t(
1256 // CPP-CHECK-NEXT: entry:
1257 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1258 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.ucvtf.f16i64(<vscale x 8 x half> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1259 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1261 svfloat16_t
test_svcvt_f16_u64_m(svfloat16_t inactive
, svbool_t pg
, svuint64_t op
) MODE_ATTR
1263 return SVE_ACLE_FUNC(svcvt_f16
,_u64
,_m
,)(inactive
, pg
, op
);
1266 // CHECK-LABEL: @test_svcvt_f32_u64_m(
1267 // CHECK-NEXT: entry:
1268 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1269 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.ucvtf.f32i64(<vscale x 4 x float> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1270 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1272 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_u64_mu13__SVFloat32_tu10__SVBool_tu12__SVUint64_t(
1273 // CPP-CHECK-NEXT: entry:
1274 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1275 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.ucvtf.f32i64(<vscale x 4 x float> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1276 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1278 svfloat32_t
test_svcvt_f32_u64_m(svfloat32_t inactive
, svbool_t pg
, svuint64_t op
) MODE_ATTR
1280 return SVE_ACLE_FUNC(svcvt_f32
,_u64
,_m
,)(inactive
, pg
, op
);
1283 // CHECK-LABEL: @test_svcvt_f64_u64_m(
1284 // CHECK-NEXT: entry:
1285 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1286 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.ucvtf.nxv2f64.nxv2i64(<vscale x 2 x double> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1287 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1289 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_u64_mu13__SVFloat64_tu10__SVBool_tu12__SVUint64_t(
1290 // CPP-CHECK-NEXT: entry:
1291 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1292 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.ucvtf.nxv2f64.nxv2i64(<vscale x 2 x double> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1293 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1295 svfloat64_t
test_svcvt_f64_u64_m(svfloat64_t inactive
, svbool_t pg
, svuint64_t op
) MODE_ATTR
1297 return SVE_ACLE_FUNC(svcvt_f64
,_u64
,_m
,)(inactive
, pg
, op
);
1300 // CHECK-LABEL: @test_svcvt_f16_u64_x(
1301 // CHECK-NEXT: entry:
1302 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1303 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.ucvtf.f16i64(<vscale x 8 x half> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1304 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1306 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_u64_xu10__SVBool_tu12__SVUint64_t(
1307 // CPP-CHECK-NEXT: entry:
1308 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1309 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.ucvtf.f16i64(<vscale x 8 x half> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1310 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1312 svfloat16_t
test_svcvt_f16_u64_x(svbool_t pg
, svuint64_t op
) MODE_ATTR
1314 return SVE_ACLE_FUNC(svcvt_f16
,_u64
,_x
,)(pg
, op
);
1317 // CHECK-LABEL: @test_svcvt_f32_u64_x(
1318 // CHECK-NEXT: entry:
1319 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1320 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.ucvtf.f32i64(<vscale x 4 x float> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1321 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1323 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_u64_xu10__SVBool_tu12__SVUint64_t(
1324 // CPP-CHECK-NEXT: entry:
1325 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1326 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.ucvtf.f32i64(<vscale x 4 x float> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1327 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1329 svfloat32_t
test_svcvt_f32_u64_x(svbool_t pg
, svuint64_t op
) MODE_ATTR
1331 return SVE_ACLE_FUNC(svcvt_f32
,_u64
,_x
,)(pg
, op
);
1334 // CHECK-LABEL: @test_svcvt_f64_u64_x(
1335 // CHECK-NEXT: entry:
1336 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1337 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.ucvtf.nxv2f64.nxv2i64(<vscale x 2 x double> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1338 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1340 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_u64_xu10__SVBool_tu12__SVUint64_t(
1341 // CPP-CHECK-NEXT: entry:
1342 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1343 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.ucvtf.nxv2f64.nxv2i64(<vscale x 2 x double> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i64> [[OP:%.*]])
1344 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1346 svfloat64_t
test_svcvt_f64_u64_x(svbool_t pg
, svuint64_t op
) MODE_ATTR
1348 return SVE_ACLE_FUNC(svcvt_f64
,_u64
,_x
,)(pg
, op
);
1351 // CHECK-LABEL: @test_svcvt_f32_f16_z(
1352 // CHECK-NEXT: entry:
1353 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1354 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.fcvt.f32f16(<vscale x 4 x float> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
1355 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1357 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_f16_zu10__SVBool_tu13__SVFloat16_t(
1358 // CPP-CHECK-NEXT: entry:
1359 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1360 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.fcvt.f32f16(<vscale x 4 x float> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
1361 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1363 svfloat32_t
test_svcvt_f32_f16_z(svbool_t pg
, svfloat16_t op
) MODE_ATTR
1365 return SVE_ACLE_FUNC(svcvt_f32
,_f16
,_z
,)(pg
, op
);
1368 // CHECK-LABEL: @test_svcvt_f64_f16_z(
1369 // CHECK-NEXT: entry:
1370 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1371 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.fcvt.f64f16(<vscale x 2 x double> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
1372 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1374 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_f16_zu10__SVBool_tu13__SVFloat16_t(
1375 // CPP-CHECK-NEXT: entry:
1376 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1377 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.fcvt.f64f16(<vscale x 2 x double> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
1378 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1380 svfloat64_t
test_svcvt_f64_f16_z(svbool_t pg
, svfloat16_t op
) MODE_ATTR
1382 return SVE_ACLE_FUNC(svcvt_f64
,_f16
,_z
,)(pg
, op
);
1385 // CHECK-LABEL: @test_svcvt_f32_f16_m(
1386 // CHECK-NEXT: entry:
1387 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1388 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.fcvt.f32f16(<vscale x 4 x float> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
1389 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1391 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_f16_mu13__SVFloat32_tu10__SVBool_tu13__SVFloat16_t(
1392 // CPP-CHECK-NEXT: entry:
1393 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1394 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.fcvt.f32f16(<vscale x 4 x float> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
1395 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1397 svfloat32_t
test_svcvt_f32_f16_m(svfloat32_t inactive
, svbool_t pg
, svfloat16_t op
) MODE_ATTR
1399 return SVE_ACLE_FUNC(svcvt_f32
,_f16
,_m
,)(inactive
, pg
, op
);
1402 // CHECK-LABEL: @test_svcvt_f64_f16_m(
1403 // CHECK-NEXT: entry:
1404 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1405 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.fcvt.f64f16(<vscale x 2 x double> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
1406 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1408 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_f16_mu13__SVFloat64_tu10__SVBool_tu13__SVFloat16_t(
1409 // CPP-CHECK-NEXT: entry:
1410 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1411 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.fcvt.f64f16(<vscale x 2 x double> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
1412 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1414 svfloat64_t
test_svcvt_f64_f16_m(svfloat64_t inactive
, svbool_t pg
, svfloat16_t op
) MODE_ATTR
1416 return SVE_ACLE_FUNC(svcvt_f64
,_f16
,_m
,)(inactive
, pg
, op
);
1419 // CHECK-LABEL: @test_svcvt_f32_f16_x(
1420 // CHECK-NEXT: entry:
1421 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1422 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.fcvt.f32f16(<vscale x 4 x float> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
1423 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1425 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_f16_xu10__SVBool_tu13__SVFloat16_t(
1426 // CPP-CHECK-NEXT: entry:
1427 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1428 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.fcvt.f32f16(<vscale x 4 x float> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
1429 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1431 svfloat32_t
test_svcvt_f32_f16_x(svbool_t pg
, svfloat16_t op
) MODE_ATTR
1433 return SVE_ACLE_FUNC(svcvt_f32
,_f16
,_x
,)(pg
, op
);
1436 // CHECK-LABEL: @test_svcvt_f64_f16_x(
1437 // CHECK-NEXT: entry:
1438 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1439 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.fcvt.f64f16(<vscale x 2 x double> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
1440 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1442 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_f16_xu10__SVBool_tu13__SVFloat16_t(
1443 // CPP-CHECK-NEXT: entry:
1444 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1445 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.fcvt.f64f16(<vscale x 2 x double> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 8 x half> [[OP:%.*]])
1446 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1448 svfloat64_t
test_svcvt_f64_f16_x(svbool_t pg
, svfloat16_t op
) MODE_ATTR
1450 return SVE_ACLE_FUNC(svcvt_f64
,_f16
,_x
,)(pg
, op
);
1453 // CHECK-LABEL: @test_svcvt_f64_f32_z(
1454 // CHECK-NEXT: entry:
1455 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1456 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.fcvt.f64f32(<vscale x 2 x double> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
1457 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1459 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_f32_zu10__SVBool_tu13__SVFloat32_t(
1460 // CPP-CHECK-NEXT: entry:
1461 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1462 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.fcvt.f64f32(<vscale x 2 x double> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
1463 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1465 svfloat64_t
test_svcvt_f64_f32_z(svbool_t pg
, svfloat32_t op
) MODE_ATTR
1467 return SVE_ACLE_FUNC(svcvt_f64
,_f32
,_z
,)(pg
, op
);
1470 // CHECK-LABEL: @test_svcvt_f64_f32_m(
1471 // CHECK-NEXT: entry:
1472 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1473 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.fcvt.f64f32(<vscale x 2 x double> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
1474 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1476 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_f32_mu13__SVFloat64_tu10__SVBool_tu13__SVFloat32_t(
1477 // CPP-CHECK-NEXT: entry:
1478 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1479 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.fcvt.f64f32(<vscale x 2 x double> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
1480 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1482 svfloat64_t
test_svcvt_f64_f32_m(svfloat64_t inactive
, svbool_t pg
, svfloat32_t op
) MODE_ATTR
1484 return SVE_ACLE_FUNC(svcvt_f64
,_f32
,_m
,)(inactive
, pg
, op
);
1487 // CHECK-LABEL: @test_svcvt_f64_f32_x(
1488 // CHECK-NEXT: entry:
1489 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1490 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.fcvt.f64f32(<vscale x 2 x double> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
1491 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1493 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_f32_xu10__SVBool_tu13__SVFloat32_t(
1494 // CPP-CHECK-NEXT: entry:
1495 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1496 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.fcvt.f64f32(<vscale x 2 x double> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
1497 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1499 svfloat64_t
test_svcvt_f64_f32_x(svbool_t pg
, svfloat32_t op
) MODE_ATTR
1501 return SVE_ACLE_FUNC(svcvt_f64
,_f32
,_x
,)(pg
, op
);
1504 // CHECK-LABEL: @test_svcvt_f16_f32_z(
1505 // CHECK-NEXT: entry:
1506 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1507 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.fcvt.f16f32(<vscale x 8 x half> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
1508 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1510 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_f32_zu10__SVBool_tu13__SVFloat32_t(
1511 // CPP-CHECK-NEXT: entry:
1512 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1513 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.fcvt.f16f32(<vscale x 8 x half> zeroinitializer, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
1514 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1516 svfloat16_t
test_svcvt_f16_f32_z(svbool_t pg
, svfloat32_t op
) MODE_ATTR
1518 return SVE_ACLE_FUNC(svcvt_f16
,_f32
,_z
,)(pg
, op
);
1521 // CHECK-LABEL: @test_svcvt_f16_f64_z(
1522 // CHECK-NEXT: entry:
1523 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1524 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.fcvt.f16f64(<vscale x 8 x half> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
1525 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1527 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_f64_zu10__SVBool_tu13__SVFloat64_t(
1528 // CPP-CHECK-NEXT: entry:
1529 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1530 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.fcvt.f16f64(<vscale x 8 x half> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
1531 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1533 svfloat16_t
test_svcvt_f16_f64_z(svbool_t pg
, svfloat64_t op
) MODE_ATTR
1535 return SVE_ACLE_FUNC(svcvt_f16
,_f64
,_z
,)(pg
, op
);
1538 // CHECK-LABEL: @test_svcvt_f16_f32_m(
1539 // CHECK-NEXT: entry:
1540 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1541 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.fcvt.f16f32(<vscale x 8 x half> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
1542 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1544 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_f32_mu13__SVFloat16_tu10__SVBool_tu13__SVFloat32_t(
1545 // CPP-CHECK-NEXT: entry:
1546 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1547 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.fcvt.f16f32(<vscale x 8 x half> [[INACTIVE:%.*]], <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
1548 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1550 svfloat16_t
test_svcvt_f16_f32_m(svfloat16_t inactive
, svbool_t pg
, svfloat32_t op
) MODE_ATTR
1552 return SVE_ACLE_FUNC(svcvt_f16
,_f32
,_m
,)(inactive
, pg
, op
);
1555 // CHECK-LABEL: @test_svcvt_f16_f64_m(
1556 // CHECK-NEXT: entry:
1557 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1558 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.fcvt.f16f64(<vscale x 8 x half> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
1559 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1561 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_f64_mu13__SVFloat16_tu10__SVBool_tu13__SVFloat64_t(
1562 // CPP-CHECK-NEXT: entry:
1563 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1564 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.fcvt.f16f64(<vscale x 8 x half> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
1565 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1567 svfloat16_t
test_svcvt_f16_f64_m(svfloat16_t inactive
, svbool_t pg
, svfloat64_t op
) MODE_ATTR
1569 return SVE_ACLE_FUNC(svcvt_f16
,_f64
,_m
,)(inactive
, pg
, op
);
1572 // CHECK-LABEL: @test_svcvt_f16_f32_x(
1573 // CHECK-NEXT: entry:
1574 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1575 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.fcvt.f16f32(<vscale x 8 x half> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
1576 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1578 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_f32_xu10__SVBool_tu13__SVFloat32_t(
1579 // CPP-CHECK-NEXT: entry:
1580 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1581 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.fcvt.f16f32(<vscale x 8 x half> undef, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x float> [[OP:%.*]])
1582 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1584 svfloat16_t
test_svcvt_f16_f32_x(svbool_t pg
, svfloat32_t op
) MODE_ATTR
1586 return SVE_ACLE_FUNC(svcvt_f16
,_f32
,_x
,)(pg
, op
);
1589 // CHECK-LABEL: @test_svcvt_f16_f64_x(
1590 // CHECK-NEXT: entry:
1591 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1592 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.fcvt.f16f64(<vscale x 8 x half> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
1593 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1595 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_f64_xu10__SVBool_tu13__SVFloat64_t(
1596 // CPP-CHECK-NEXT: entry:
1597 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1598 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.fcvt.f16f64(<vscale x 8 x half> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
1599 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1601 svfloat16_t
test_svcvt_f16_f64_x(svbool_t pg
, svfloat64_t op
) MODE_ATTR
1603 return SVE_ACLE_FUNC(svcvt_f16
,_f64
,_x
,)(pg
, op
);
1606 // CHECK-LABEL: @test_svcvt_f32_f64_z(
1607 // CHECK-NEXT: entry:
1608 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1609 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.fcvt.f32f64(<vscale x 4 x float> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
1610 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1612 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_f64_zu10__SVBool_tu13__SVFloat64_t(
1613 // CPP-CHECK-NEXT: entry:
1614 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1615 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.fcvt.f32f64(<vscale x 4 x float> zeroinitializer, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
1616 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1618 svfloat32_t
test_svcvt_f32_f64_z(svbool_t pg
, svfloat64_t op
) MODE_ATTR
1620 return SVE_ACLE_FUNC(svcvt_f32
,_f64
,_z
,)(pg
, op
);
1623 // CHECK-LABEL: @test_svcvt_f32_f64_m(
1624 // CHECK-NEXT: entry:
1625 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1626 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.fcvt.f32f64(<vscale x 4 x float> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
1627 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1629 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_f64_mu13__SVFloat32_tu10__SVBool_tu13__SVFloat64_t(
1630 // CPP-CHECK-NEXT: entry:
1631 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1632 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.fcvt.f32f64(<vscale x 4 x float> [[INACTIVE:%.*]], <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
1633 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1635 svfloat32_t
test_svcvt_f32_f64_m(svfloat32_t inactive
, svbool_t pg
, svfloat64_t op
) MODE_ATTR
1637 return SVE_ACLE_FUNC(svcvt_f32
,_f64
,_m
,)(inactive
, pg
, op
);
1640 // CHECK-LABEL: @test_svcvt_f32_f64_x(
1641 // CHECK-NEXT: entry:
1642 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1643 // CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.fcvt.f32f64(<vscale x 4 x float> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
1644 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1646 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_f64_xu10__SVBool_tu13__SVFloat64_t(
1647 // CPP-CHECK-NEXT: entry:
1648 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1649 // CPP-CHECK-NEXT: [[TMP1:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.fcvt.f32f64(<vscale x 4 x float> undef, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x double> [[OP:%.*]])
1650 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1652 svfloat32_t
test_svcvt_f32_f64_x(svbool_t pg
, svfloat64_t op
) MODE_ATTR
1654 return SVE_ACLE_FUNC(svcvt_f32
,_f64
,_x
,)(pg
, op
);