1 // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
2 // REQUIRES: aarch64-registered-target
3 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s
4 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
5 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s
6 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
7 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
10 #ifdef SVE_OVERLOADED_FORMS
11 // A simple used,unused... macro, long enough to represent any SVE builtin.
12 #define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
14 #define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
17 // CHECK-LABEL: @test_svcvt_s16_f16_z(
19 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
20 // 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:%.*]])
21 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
23 // CPP-CHECK-LABEL: @_Z20test_svcvt_s16_f16_zu10__SVBool_tu13__SVFloat16_t(
24 // CPP-CHECK-NEXT: entry:
25 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
26 // 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:%.*]])
27 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
29 svint16_t
test_svcvt_s16_f16_z(svbool_t pg
, svfloat16_t op
)
31 return SVE_ACLE_FUNC(svcvt_s16
,_f16
,_z
,)(pg
, op
);
34 // CHECK-LABEL: @test_svcvt_s16_f16_m(
36 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
37 // 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:%.*]])
38 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
40 // CPP-CHECK-LABEL: @_Z20test_svcvt_s16_f16_mu11__SVInt16_tu10__SVBool_tu13__SVFloat16_t(
41 // CPP-CHECK-NEXT: entry:
42 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
43 // 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:%.*]])
44 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
46 svint16_t
test_svcvt_s16_f16_m(svint16_t inactive
, svbool_t pg
, svfloat16_t op
)
48 return SVE_ACLE_FUNC(svcvt_s16
,_f16
,_m
,)(inactive
, pg
, op
);
51 // CHECK-LABEL: @test_svcvt_s16_f16_x(
53 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
54 // 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:%.*]])
55 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
57 // CPP-CHECK-LABEL: @_Z20test_svcvt_s16_f16_xu10__SVBool_tu13__SVFloat16_t(
58 // CPP-CHECK-NEXT: entry:
59 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
60 // 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:%.*]])
61 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
63 svint16_t
test_svcvt_s16_f16_x(svbool_t pg
, svfloat16_t op
)
65 return SVE_ACLE_FUNC(svcvt_s16
,_f16
,_x
,)(pg
, op
);
68 // CHECK-LABEL: @test_svcvt_u16_f16_z(
70 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
71 // 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:%.*]])
72 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
74 // CPP-CHECK-LABEL: @_Z20test_svcvt_u16_f16_zu10__SVBool_tu13__SVFloat16_t(
75 // CPP-CHECK-NEXT: entry:
76 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
77 // 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:%.*]])
78 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
80 svuint16_t
test_svcvt_u16_f16_z(svbool_t pg
, svfloat16_t op
)
82 return SVE_ACLE_FUNC(svcvt_u16
,_f16
,_z
,)(pg
, op
);
85 // CHECK-LABEL: @test_svcvt_u16_f16_m(
87 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
88 // 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:%.*]])
89 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
91 // CPP-CHECK-LABEL: @_Z20test_svcvt_u16_f16_mu12__SVUint16_tu10__SVBool_tu13__SVFloat16_t(
92 // CPP-CHECK-NEXT: entry:
93 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
94 // 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:%.*]])
95 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
97 svuint16_t
test_svcvt_u16_f16_m(svuint16_t inactive
, svbool_t pg
, svfloat16_t op
)
99 return SVE_ACLE_FUNC(svcvt_u16
,_f16
,_m
,)(inactive
, pg
, op
);
102 // CHECK-LABEL: @test_svcvt_u16_f16_x(
103 // CHECK-NEXT: entry:
104 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
105 // 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:%.*]])
106 // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
108 // CPP-CHECK-LABEL: @_Z20test_svcvt_u16_f16_xu10__SVBool_tu13__SVFloat16_t(
109 // CPP-CHECK-NEXT: entry:
110 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv8i1(<vscale x 16 x i1> [[PG:%.*]])
111 // 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:%.*]])
112 // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP1]]
114 svuint16_t
test_svcvt_u16_f16_x(svbool_t pg
, svfloat16_t op
)
116 return SVE_ACLE_FUNC(svcvt_u16
,_f16
,_x
,)(pg
, op
);
119 // CHECK-LABEL: @test_svcvt_s32_f16_z(
120 // CHECK-NEXT: entry:
121 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
122 // 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:%.*]])
123 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
125 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f16_zu10__SVBool_tu13__SVFloat16_t(
126 // CPP-CHECK-NEXT: entry:
127 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
128 // 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:%.*]])
129 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
131 svint32_t
test_svcvt_s32_f16_z(svbool_t pg
, svfloat16_t op
)
133 return SVE_ACLE_FUNC(svcvt_s32
,_f16
,_z
,)(pg
, op
);
136 // CHECK-LABEL: @test_svcvt_s32_f32_z(
137 // CHECK-NEXT: entry:
138 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
139 // 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:%.*]])
140 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
142 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f32_zu10__SVBool_tu13__SVFloat32_t(
143 // CPP-CHECK-NEXT: entry:
144 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
145 // 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:%.*]])
146 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
148 svint32_t
test_svcvt_s32_f32_z(svbool_t pg
, svfloat32_t op
)
150 return SVE_ACLE_FUNC(svcvt_s32
,_f32
,_z
,)(pg
, op
);
153 // CHECK-LABEL: @test_svcvt_s32_f64_z(
154 // CHECK-NEXT: entry:
155 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
156 // 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:%.*]])
157 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
159 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f64_zu10__SVBool_tu13__SVFloat64_t(
160 // CPP-CHECK-NEXT: entry:
161 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
162 // 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:%.*]])
163 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
165 svint32_t
test_svcvt_s32_f64_z(svbool_t pg
, svfloat64_t op
)
167 return SVE_ACLE_FUNC(svcvt_s32
,_f64
,_z
,)(pg
, op
);
170 // CHECK-LABEL: @test_svcvt_s32_f16_m(
171 // CHECK-NEXT: entry:
172 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
173 // 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:%.*]])
174 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
176 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f16_mu11__SVInt32_tu10__SVBool_tu13__SVFloat16_t(
177 // CPP-CHECK-NEXT: entry:
178 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
179 // 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:%.*]])
180 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
182 svint32_t
test_svcvt_s32_f16_m(svint32_t inactive
, svbool_t pg
, svfloat16_t op
)
184 return SVE_ACLE_FUNC(svcvt_s32
,_f16
,_m
,)(inactive
, pg
, op
);
187 // CHECK-LABEL: @test_svcvt_s32_f32_m(
188 // CHECK-NEXT: entry:
189 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
190 // 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:%.*]])
191 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
193 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f32_mu11__SVInt32_tu10__SVBool_tu13__SVFloat32_t(
194 // CPP-CHECK-NEXT: entry:
195 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
196 // 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:%.*]])
197 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
199 svint32_t
test_svcvt_s32_f32_m(svint32_t inactive
, svbool_t pg
, svfloat32_t op
)
201 return SVE_ACLE_FUNC(svcvt_s32
,_f32
,_m
,)(inactive
, pg
, op
);
204 // CHECK-LABEL: @test_svcvt_s32_f64_m(
205 // CHECK-NEXT: entry:
206 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
207 // 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:%.*]])
208 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
210 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f64_mu11__SVInt32_tu10__SVBool_tu13__SVFloat64_t(
211 // CPP-CHECK-NEXT: entry:
212 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
213 // 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:%.*]])
214 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
216 svint32_t
test_svcvt_s32_f64_m(svint32_t inactive
, svbool_t pg
, svfloat64_t op
)
218 return SVE_ACLE_FUNC(svcvt_s32
,_f64
,_m
,)(inactive
, pg
, op
);
221 // CHECK-LABEL: @test_svcvt_s32_f16_x(
222 // CHECK-NEXT: entry:
223 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
224 // 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:%.*]])
225 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
227 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f16_xu10__SVBool_tu13__SVFloat16_t(
228 // CPP-CHECK-NEXT: entry:
229 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
230 // 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:%.*]])
231 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
233 svint32_t
test_svcvt_s32_f16_x(svbool_t pg
, svfloat16_t op
)
235 return SVE_ACLE_FUNC(svcvt_s32
,_f16
,_x
,)(pg
, op
);
238 // CHECK-LABEL: @test_svcvt_s32_f32_x(
239 // CHECK-NEXT: entry:
240 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
241 // 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:%.*]])
242 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
244 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f32_xu10__SVBool_tu13__SVFloat32_t(
245 // CPP-CHECK-NEXT: entry:
246 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
247 // 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:%.*]])
248 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
250 svint32_t
test_svcvt_s32_f32_x(svbool_t pg
, svfloat32_t op
)
252 return SVE_ACLE_FUNC(svcvt_s32
,_f32
,_x
,)(pg
, op
);
255 // CHECK-LABEL: @test_svcvt_s32_f64_x(
256 // CHECK-NEXT: entry:
257 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
258 // 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:%.*]])
259 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
261 // CPP-CHECK-LABEL: @_Z20test_svcvt_s32_f64_xu10__SVBool_tu13__SVFloat64_t(
262 // CPP-CHECK-NEXT: entry:
263 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
264 // 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:%.*]])
265 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
267 svint32_t
test_svcvt_s32_f64_x(svbool_t pg
, svfloat64_t op
)
269 return SVE_ACLE_FUNC(svcvt_s32
,_f64
,_x
,)(pg
, op
);
272 // CHECK-LABEL: @test_svcvt_s64_f16_z(
273 // CHECK-NEXT: entry:
274 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
275 // 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:%.*]])
276 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
278 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f16_zu10__SVBool_tu13__SVFloat16_t(
279 // CPP-CHECK-NEXT: entry:
280 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
281 // 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:%.*]])
282 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
284 svint64_t
test_svcvt_s64_f16_z(svbool_t pg
, svfloat16_t op
)
286 return SVE_ACLE_FUNC(svcvt_s64
,_f16
,_z
,)(pg
, op
);
289 // CHECK-LABEL: @test_svcvt_s64_f32_z(
290 // CHECK-NEXT: entry:
291 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
292 // 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:%.*]])
293 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
295 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f32_zu10__SVBool_tu13__SVFloat32_t(
296 // CPP-CHECK-NEXT: entry:
297 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
298 // 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:%.*]])
299 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
301 svint64_t
test_svcvt_s64_f32_z(svbool_t pg
, svfloat32_t op
)
303 return SVE_ACLE_FUNC(svcvt_s64
,_f32
,_z
,)(pg
, op
);
306 // CHECK-LABEL: @test_svcvt_s64_f64_z(
307 // CHECK-NEXT: entry:
308 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
309 // 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:%.*]])
310 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
312 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f64_zu10__SVBool_tu13__SVFloat64_t(
313 // CPP-CHECK-NEXT: entry:
314 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
315 // 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:%.*]])
316 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
318 svint64_t
test_svcvt_s64_f64_z(svbool_t pg
, svfloat64_t op
)
320 return SVE_ACLE_FUNC(svcvt_s64
,_f64
,_z
,)(pg
, op
);
323 // CHECK-LABEL: @test_svcvt_s64_f16_m(
324 // CHECK-NEXT: entry:
325 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
326 // 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:%.*]])
327 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
329 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f16_mu11__SVInt64_tu10__SVBool_tu13__SVFloat16_t(
330 // CPP-CHECK-NEXT: entry:
331 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
332 // 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:%.*]])
333 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
335 svint64_t
test_svcvt_s64_f16_m(svint64_t inactive
, svbool_t pg
, svfloat16_t op
)
337 return SVE_ACLE_FUNC(svcvt_s64
,_f16
,_m
,)(inactive
, pg
, op
);
340 // CHECK-LABEL: @test_svcvt_s64_f32_m(
341 // CHECK-NEXT: entry:
342 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
343 // 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:%.*]])
344 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
346 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f32_mu11__SVInt64_tu10__SVBool_tu13__SVFloat32_t(
347 // CPP-CHECK-NEXT: entry:
348 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
349 // 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:%.*]])
350 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
352 svint64_t
test_svcvt_s64_f32_m(svint64_t inactive
, svbool_t pg
, svfloat32_t op
)
354 return SVE_ACLE_FUNC(svcvt_s64
,_f32
,_m
,)(inactive
, pg
, op
);
357 // CHECK-LABEL: @test_svcvt_s64_f64_m(
358 // CHECK-NEXT: entry:
359 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
360 // 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:%.*]])
361 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
363 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f64_mu11__SVInt64_tu10__SVBool_tu13__SVFloat64_t(
364 // CPP-CHECK-NEXT: entry:
365 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
366 // 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:%.*]])
367 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
369 svint64_t
test_svcvt_s64_f64_m(svint64_t inactive
, svbool_t pg
, svfloat64_t op
)
371 return SVE_ACLE_FUNC(svcvt_s64
,_f64
,_m
,)(inactive
, pg
, op
);
374 // CHECK-LABEL: @test_svcvt_s64_f16_x(
375 // CHECK-NEXT: entry:
376 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
377 // 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:%.*]])
378 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
380 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f16_xu10__SVBool_tu13__SVFloat16_t(
381 // CPP-CHECK-NEXT: entry:
382 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
383 // 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:%.*]])
384 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
386 svint64_t
test_svcvt_s64_f16_x(svbool_t pg
, svfloat16_t op
)
388 return SVE_ACLE_FUNC(svcvt_s64
,_f16
,_x
,)(pg
, op
);
391 // CHECK-LABEL: @test_svcvt_s64_f32_x(
392 // CHECK-NEXT: entry:
393 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
394 // 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:%.*]])
395 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
397 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f32_xu10__SVBool_tu13__SVFloat32_t(
398 // CPP-CHECK-NEXT: entry:
399 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
400 // 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:%.*]])
401 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
403 svint64_t
test_svcvt_s64_f32_x(svbool_t pg
, svfloat32_t op
)
405 return SVE_ACLE_FUNC(svcvt_s64
,_f32
,_x
,)(pg
, op
);
408 // CHECK-LABEL: @test_svcvt_s64_f64_x(
409 // CHECK-NEXT: entry:
410 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
411 // 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:%.*]])
412 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
414 // CPP-CHECK-LABEL: @_Z20test_svcvt_s64_f64_xu10__SVBool_tu13__SVFloat64_t(
415 // CPP-CHECK-NEXT: entry:
416 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
417 // 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:%.*]])
418 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
420 svint64_t
test_svcvt_s64_f64_x(svbool_t pg
, svfloat64_t op
)
422 return SVE_ACLE_FUNC(svcvt_s64
,_f64
,_x
,)(pg
, op
);
425 // CHECK-LABEL: @test_svcvt_u32_f16_z(
426 // CHECK-NEXT: entry:
427 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
428 // 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:%.*]])
429 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
431 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f16_zu10__SVBool_tu13__SVFloat16_t(
432 // CPP-CHECK-NEXT: entry:
433 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
434 // 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:%.*]])
435 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
437 svuint32_t
test_svcvt_u32_f16_z(svbool_t pg
, svfloat16_t op
)
439 return SVE_ACLE_FUNC(svcvt_u32
,_f16
,_z
,)(pg
, op
);
442 // CHECK-LABEL: @test_svcvt_u32_f32_z(
443 // CHECK-NEXT: entry:
444 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
445 // 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:%.*]])
446 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
448 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f32_zu10__SVBool_tu13__SVFloat32_t(
449 // CPP-CHECK-NEXT: entry:
450 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
451 // 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:%.*]])
452 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
454 svuint32_t
test_svcvt_u32_f32_z(svbool_t pg
, svfloat32_t op
)
456 return SVE_ACLE_FUNC(svcvt_u32
,_f32
,_z
,)(pg
, op
);
459 // CHECK-LABEL: @test_svcvt_u32_f64_z(
460 // CHECK-NEXT: entry:
461 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
462 // 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:%.*]])
463 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
465 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f64_zu10__SVBool_tu13__SVFloat64_t(
466 // CPP-CHECK-NEXT: entry:
467 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
468 // 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:%.*]])
469 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
471 svuint32_t
test_svcvt_u32_f64_z(svbool_t pg
, svfloat64_t op
)
473 return SVE_ACLE_FUNC(svcvt_u32
,_f64
,_z
,)(pg
, op
);
476 // CHECK-LABEL: @test_svcvt_u32_f16_m(
477 // CHECK-NEXT: entry:
478 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
479 // 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:%.*]])
480 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
482 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f16_mu12__SVUint32_tu10__SVBool_tu13__SVFloat16_t(
483 // CPP-CHECK-NEXT: entry:
484 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
485 // 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:%.*]])
486 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
488 svuint32_t
test_svcvt_u32_f16_m(svuint32_t inactive
, svbool_t pg
, svfloat16_t op
)
490 return SVE_ACLE_FUNC(svcvt_u32
,_f16
,_m
,)(inactive
, pg
, op
);
493 // CHECK-LABEL: @test_svcvt_u32_f32_m(
494 // CHECK-NEXT: entry:
495 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
496 // 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:%.*]])
497 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
499 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f32_mu12__SVUint32_tu10__SVBool_tu13__SVFloat32_t(
500 // CPP-CHECK-NEXT: entry:
501 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
502 // 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:%.*]])
503 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
505 svuint32_t
test_svcvt_u32_f32_m(svuint32_t inactive
, svbool_t pg
, svfloat32_t op
)
507 return SVE_ACLE_FUNC(svcvt_u32
,_f32
,_m
,)(inactive
, pg
, op
);
510 // CHECK-LABEL: @test_svcvt_u32_f64_m(
511 // CHECK-NEXT: entry:
512 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
513 // 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:%.*]])
514 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
516 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f64_mu12__SVUint32_tu10__SVBool_tu13__SVFloat64_t(
517 // CPP-CHECK-NEXT: entry:
518 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
519 // 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:%.*]])
520 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
522 svuint32_t
test_svcvt_u32_f64_m(svuint32_t inactive
, svbool_t pg
, svfloat64_t op
)
524 return SVE_ACLE_FUNC(svcvt_u32
,_f64
,_m
,)(inactive
, pg
, op
);
527 // CHECK-LABEL: @test_svcvt_u32_f16_x(
528 // CHECK-NEXT: entry:
529 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
530 // 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:%.*]])
531 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
533 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f16_xu10__SVBool_tu13__SVFloat16_t(
534 // CPP-CHECK-NEXT: entry:
535 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
536 // 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:%.*]])
537 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
539 svuint32_t
test_svcvt_u32_f16_x(svbool_t pg
, svfloat16_t op
)
541 return SVE_ACLE_FUNC(svcvt_u32
,_f16
,_x
,)(pg
, op
);
544 // CHECK-LABEL: @test_svcvt_u32_f32_x(
545 // CHECK-NEXT: entry:
546 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
547 // 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:%.*]])
548 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
550 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f32_xu10__SVBool_tu13__SVFloat32_t(
551 // CPP-CHECK-NEXT: entry:
552 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
553 // 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:%.*]])
554 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
556 svuint32_t
test_svcvt_u32_f32_x(svbool_t pg
, svfloat32_t op
)
558 return SVE_ACLE_FUNC(svcvt_u32
,_f32
,_x
,)(pg
, op
);
561 // CHECK-LABEL: @test_svcvt_u32_f64_x(
562 // CHECK-NEXT: entry:
563 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
564 // 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:%.*]])
565 // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
567 // CPP-CHECK-LABEL: @_Z20test_svcvt_u32_f64_xu10__SVBool_tu13__SVFloat64_t(
568 // CPP-CHECK-NEXT: entry:
569 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
570 // 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:%.*]])
571 // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP1]]
573 svuint32_t
test_svcvt_u32_f64_x(svbool_t pg
, svfloat64_t op
)
575 return SVE_ACLE_FUNC(svcvt_u32
,_f64
,_x
,)(pg
, op
);
578 // CHECK-LABEL: @test_svcvt_u64_f16_z(
579 // CHECK-NEXT: entry:
580 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
581 // 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:%.*]])
582 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
584 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f16_zu10__SVBool_tu13__SVFloat16_t(
585 // CPP-CHECK-NEXT: entry:
586 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
587 // 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:%.*]])
588 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
590 svuint64_t
test_svcvt_u64_f16_z(svbool_t pg
, svfloat16_t op
)
592 return SVE_ACLE_FUNC(svcvt_u64
,_f16
,_z
,)(pg
, op
);
595 // CHECK-LABEL: @test_svcvt_u64_f32_z(
596 // CHECK-NEXT: entry:
597 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
598 // 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:%.*]])
599 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
601 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f32_zu10__SVBool_tu13__SVFloat32_t(
602 // CPP-CHECK-NEXT: entry:
603 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
604 // 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:%.*]])
605 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
607 svuint64_t
test_svcvt_u64_f32_z(svbool_t pg
, svfloat32_t op
)
609 return SVE_ACLE_FUNC(svcvt_u64
,_f32
,_z
,)(pg
, op
);
612 // CHECK-LABEL: @test_svcvt_u64_f64_z(
613 // CHECK-NEXT: entry:
614 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
615 // 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:%.*]])
616 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
618 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f64_zu10__SVBool_tu13__SVFloat64_t(
619 // CPP-CHECK-NEXT: entry:
620 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
621 // 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:%.*]])
622 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
624 svuint64_t
test_svcvt_u64_f64_z(svbool_t pg
, svfloat64_t op
)
626 return SVE_ACLE_FUNC(svcvt_u64
,_f64
,_z
,)(pg
, op
);
629 // CHECK-LABEL: @test_svcvt_u64_f16_m(
630 // CHECK-NEXT: entry:
631 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
632 // 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:%.*]])
633 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
635 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f16_mu12__SVUint64_tu10__SVBool_tu13__SVFloat16_t(
636 // CPP-CHECK-NEXT: entry:
637 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
638 // 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:%.*]])
639 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
641 svuint64_t
test_svcvt_u64_f16_m(svuint64_t inactive
, svbool_t pg
, svfloat16_t op
)
643 return SVE_ACLE_FUNC(svcvt_u64
,_f16
,_m
,)(inactive
, pg
, op
);
646 // CHECK-LABEL: @test_svcvt_u64_f32_m(
647 // CHECK-NEXT: entry:
648 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
649 // 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:%.*]])
650 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
652 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f32_mu12__SVUint64_tu10__SVBool_tu13__SVFloat32_t(
653 // CPP-CHECK-NEXT: entry:
654 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
655 // 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:%.*]])
656 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
658 svuint64_t
test_svcvt_u64_f32_m(svuint64_t inactive
, svbool_t pg
, svfloat32_t op
)
660 return SVE_ACLE_FUNC(svcvt_u64
,_f32
,_m
,)(inactive
, pg
, op
);
663 // CHECK-LABEL: @test_svcvt_u64_f64_m(
664 // CHECK-NEXT: entry:
665 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
666 // 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:%.*]])
667 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
669 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f64_mu12__SVUint64_tu10__SVBool_tu13__SVFloat64_t(
670 // CPP-CHECK-NEXT: entry:
671 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
672 // 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:%.*]])
673 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
675 svuint64_t
test_svcvt_u64_f64_m(svuint64_t inactive
, svbool_t pg
, svfloat64_t op
)
677 return SVE_ACLE_FUNC(svcvt_u64
,_f64
,_m
,)(inactive
, pg
, op
);
680 // CHECK-LABEL: @test_svcvt_u64_f16_x(
681 // CHECK-NEXT: entry:
682 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
683 // 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:%.*]])
684 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
686 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f16_xu10__SVBool_tu13__SVFloat16_t(
687 // CPP-CHECK-NEXT: entry:
688 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
689 // 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:%.*]])
690 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
692 svuint64_t
test_svcvt_u64_f16_x(svbool_t pg
, svfloat16_t op
)
694 return SVE_ACLE_FUNC(svcvt_u64
,_f16
,_x
,)(pg
, op
);
697 // CHECK-LABEL: @test_svcvt_u64_f32_x(
698 // CHECK-NEXT: entry:
699 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
700 // 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:%.*]])
701 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
703 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f32_xu10__SVBool_tu13__SVFloat32_t(
704 // CPP-CHECK-NEXT: entry:
705 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
706 // 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:%.*]])
707 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
709 svuint64_t
test_svcvt_u64_f32_x(svbool_t pg
, svfloat32_t op
)
711 return SVE_ACLE_FUNC(svcvt_u64
,_f32
,_x
,)(pg
, op
);
714 // CHECK-LABEL: @test_svcvt_u64_f64_x(
715 // CHECK-NEXT: entry:
716 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
717 // 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:%.*]])
718 // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
720 // CPP-CHECK-LABEL: @_Z20test_svcvt_u64_f64_xu10__SVBool_tu13__SVFloat64_t(
721 // CPP-CHECK-NEXT: entry:
722 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
723 // 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:%.*]])
724 // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP1]]
726 svuint64_t
test_svcvt_u64_f64_x(svbool_t pg
, svfloat64_t op
)
728 return SVE_ACLE_FUNC(svcvt_u64
,_f64
,_x
,)(pg
, op
);
731 // CHECK-LABEL: @test_svcvt_f16_s32_z(
732 // CHECK-NEXT: entry:
733 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
734 // 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:%.*]])
735 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
737 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_s32_zu10__SVBool_tu11__SVInt32_t(
738 // CPP-CHECK-NEXT: entry:
739 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
740 // 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:%.*]])
741 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
743 svfloat16_t
test_svcvt_f16_s32_z(svbool_t pg
, svint32_t op
)
745 return SVE_ACLE_FUNC(svcvt_f16
,_s32
,_z
,)(pg
, op
);
748 // CHECK-LABEL: @test_svcvt_f32_s32_z(
749 // CHECK-NEXT: entry:
750 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
751 // 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:%.*]])
752 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
754 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_s32_zu10__SVBool_tu11__SVInt32_t(
755 // CPP-CHECK-NEXT: entry:
756 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
757 // 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:%.*]])
758 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
760 svfloat32_t
test_svcvt_f32_s32_z(svbool_t pg
, svint32_t op
)
762 return SVE_ACLE_FUNC(svcvt_f32
,_s32
,_z
,)(pg
, op
);
765 // CHECK-LABEL: @test_svcvt_f64_s32_z(
766 // CHECK-NEXT: entry:
767 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
768 // 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:%.*]])
769 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
771 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_s32_zu10__SVBool_tu11__SVInt32_t(
772 // CPP-CHECK-NEXT: entry:
773 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
774 // 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:%.*]])
775 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
777 svfloat64_t
test_svcvt_f64_s32_z(svbool_t pg
, svint32_t op
)
779 return SVE_ACLE_FUNC(svcvt_f64
,_s32
,_z
,)(pg
, op
);
782 // CHECK-LABEL: @test_svcvt_f16_s32_m(
783 // CHECK-NEXT: entry:
784 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
785 // 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:%.*]])
786 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
788 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_s32_mu13__SVFloat16_tu10__SVBool_tu11__SVInt32_t(
789 // CPP-CHECK-NEXT: entry:
790 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
791 // 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:%.*]])
792 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
794 svfloat16_t
test_svcvt_f16_s32_m(svfloat16_t inactive
, svbool_t pg
, svint32_t op
)
796 return SVE_ACLE_FUNC(svcvt_f16
,_s32
,_m
,)(inactive
, pg
, op
);
799 // CHECK-LABEL: @test_svcvt_f32_s32_m(
800 // CHECK-NEXT: entry:
801 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
802 // 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:%.*]])
803 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
805 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_s32_mu13__SVFloat32_tu10__SVBool_tu11__SVInt32_t(
806 // CPP-CHECK-NEXT: entry:
807 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
808 // 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:%.*]])
809 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
811 svfloat32_t
test_svcvt_f32_s32_m(svfloat32_t inactive
, svbool_t pg
, svint32_t op
)
813 return SVE_ACLE_FUNC(svcvt_f32
,_s32
,_m
,)(inactive
, pg
, op
);
816 // CHECK-LABEL: @test_svcvt_f64_s32_m(
817 // CHECK-NEXT: entry:
818 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
819 // 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:%.*]])
820 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
822 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_s32_mu13__SVFloat64_tu10__SVBool_tu11__SVInt32_t(
823 // CPP-CHECK-NEXT: entry:
824 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
825 // 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:%.*]])
826 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
828 svfloat64_t
test_svcvt_f64_s32_m(svfloat64_t inactive
, svbool_t pg
, svint32_t op
)
830 return SVE_ACLE_FUNC(svcvt_f64
,_s32
,_m
,)(inactive
, pg
, op
);
833 // CHECK-LABEL: @test_svcvt_f16_s32_x(
834 // CHECK-NEXT: entry:
835 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
836 // 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:%.*]])
837 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
839 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_s32_xu10__SVBool_tu11__SVInt32_t(
840 // CPP-CHECK-NEXT: entry:
841 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
842 // 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:%.*]])
843 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
845 svfloat16_t
test_svcvt_f16_s32_x(svbool_t pg
, svint32_t op
)
847 return SVE_ACLE_FUNC(svcvt_f16
,_s32
,_x
,)(pg
, op
);
850 // CHECK-LABEL: @test_svcvt_f32_s32_x(
851 // CHECK-NEXT: entry:
852 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
853 // 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:%.*]])
854 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
856 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_s32_xu10__SVBool_tu11__SVInt32_t(
857 // CPP-CHECK-NEXT: entry:
858 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
859 // 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:%.*]])
860 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
862 svfloat32_t
test_svcvt_f32_s32_x(svbool_t pg
, svint32_t op
)
864 return SVE_ACLE_FUNC(svcvt_f32
,_s32
,_x
,)(pg
, op
);
867 // CHECK-LABEL: @test_svcvt_f64_s32_x(
868 // CHECK-NEXT: entry:
869 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
870 // 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:%.*]])
871 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
873 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_s32_xu10__SVBool_tu11__SVInt32_t(
874 // CPP-CHECK-NEXT: entry:
875 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
876 // 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:%.*]])
877 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
879 svfloat64_t
test_svcvt_f64_s32_x(svbool_t pg
, svint32_t op
)
881 return SVE_ACLE_FUNC(svcvt_f64
,_s32
,_x
,)(pg
, op
);
884 // CHECK-LABEL: @test_svcvt_f16_s64_z(
885 // CHECK-NEXT: entry:
886 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
887 // 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:%.*]])
888 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
890 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_s64_zu10__SVBool_tu11__SVInt64_t(
891 // CPP-CHECK-NEXT: entry:
892 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
893 // 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:%.*]])
894 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
896 svfloat16_t
test_svcvt_f16_s64_z(svbool_t pg
, svint64_t op
)
898 return SVE_ACLE_FUNC(svcvt_f16
,_s64
,_z
,)(pg
, op
);
901 // CHECK-LABEL: @test_svcvt_f32_s64_z(
902 // CHECK-NEXT: entry:
903 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
904 // 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:%.*]])
905 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
907 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_s64_zu10__SVBool_tu11__SVInt64_t(
908 // CPP-CHECK-NEXT: entry:
909 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
910 // 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:%.*]])
911 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
913 svfloat32_t
test_svcvt_f32_s64_z(svbool_t pg
, svint64_t op
)
915 return SVE_ACLE_FUNC(svcvt_f32
,_s64
,_z
,)(pg
, op
);
918 // CHECK-LABEL: @test_svcvt_f64_s64_z(
919 // CHECK-NEXT: entry:
920 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
921 // 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:%.*]])
922 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
924 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_s64_zu10__SVBool_tu11__SVInt64_t(
925 // CPP-CHECK-NEXT: entry:
926 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
927 // 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:%.*]])
928 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
930 svfloat64_t
test_svcvt_f64_s64_z(svbool_t pg
, svint64_t op
)
932 return SVE_ACLE_FUNC(svcvt_f64
,_s64
,_z
,)(pg
, op
);
935 // CHECK-LABEL: @test_svcvt_f16_s64_m(
936 // CHECK-NEXT: entry:
937 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
938 // 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:%.*]])
939 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
941 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_s64_mu13__SVFloat16_tu10__SVBool_tu11__SVInt64_t(
942 // CPP-CHECK-NEXT: entry:
943 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
944 // 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:%.*]])
945 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
947 svfloat16_t
test_svcvt_f16_s64_m(svfloat16_t inactive
, svbool_t pg
, svint64_t op
)
949 return SVE_ACLE_FUNC(svcvt_f16
,_s64
,_m
,)(inactive
, pg
, op
);
952 // CHECK-LABEL: @test_svcvt_f32_s64_m(
953 // CHECK-NEXT: entry:
954 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
955 // 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:%.*]])
956 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
958 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_s64_mu13__SVFloat32_tu10__SVBool_tu11__SVInt64_t(
959 // CPP-CHECK-NEXT: entry:
960 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
961 // 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:%.*]])
962 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
964 svfloat32_t
test_svcvt_f32_s64_m(svfloat32_t inactive
, svbool_t pg
, svint64_t op
)
966 return SVE_ACLE_FUNC(svcvt_f32
,_s64
,_m
,)(inactive
, pg
, op
);
969 // CHECK-LABEL: @test_svcvt_f64_s64_m(
970 // CHECK-NEXT: entry:
971 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
972 // 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:%.*]])
973 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
975 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_s64_mu13__SVFloat64_tu10__SVBool_tu11__SVInt64_t(
976 // CPP-CHECK-NEXT: entry:
977 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
978 // 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:%.*]])
979 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
981 svfloat64_t
test_svcvt_f64_s64_m(svfloat64_t inactive
, svbool_t pg
, svint64_t op
)
983 return SVE_ACLE_FUNC(svcvt_f64
,_s64
,_m
,)(inactive
, pg
, op
);
986 // CHECK-LABEL: @test_svcvt_f16_s64_x(
987 // CHECK-NEXT: entry:
988 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
989 // 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:%.*]])
990 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
992 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_s64_xu10__SVBool_tu11__SVInt64_t(
993 // CPP-CHECK-NEXT: entry:
994 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
995 // 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:%.*]])
996 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
998 svfloat16_t
test_svcvt_f16_s64_x(svbool_t pg
, svint64_t op
)
1000 return SVE_ACLE_FUNC(svcvt_f16
,_s64
,_x
,)(pg
, op
);
1003 // CHECK-LABEL: @test_svcvt_f32_s64_x(
1004 // CHECK-NEXT: entry:
1005 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1006 // 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:%.*]])
1007 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1009 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_s64_xu10__SVBool_tu11__SVInt64_t(
1010 // CPP-CHECK-NEXT: entry:
1011 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1012 // 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:%.*]])
1013 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1015 svfloat32_t
test_svcvt_f32_s64_x(svbool_t pg
, svint64_t op
)
1017 return SVE_ACLE_FUNC(svcvt_f32
,_s64
,_x
,)(pg
, op
);
1020 // CHECK-LABEL: @test_svcvt_f64_s64_x(
1021 // CHECK-NEXT: entry:
1022 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1023 // 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:%.*]])
1024 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1026 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_s64_xu10__SVBool_tu11__SVInt64_t(
1027 // CPP-CHECK-NEXT: entry:
1028 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1029 // 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:%.*]])
1030 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1032 svfloat64_t
test_svcvt_f64_s64_x(svbool_t pg
, svint64_t op
)
1034 return SVE_ACLE_FUNC(svcvt_f64
,_s64
,_x
,)(pg
, op
);
1037 // CHECK-LABEL: @test_svcvt_f16_u32_z(
1038 // CHECK-NEXT: entry:
1039 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1040 // 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:%.*]])
1041 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1043 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_u32_zu10__SVBool_tu12__SVUint32_t(
1044 // CPP-CHECK-NEXT: entry:
1045 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1046 // 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:%.*]])
1047 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1049 svfloat16_t
test_svcvt_f16_u32_z(svbool_t pg
, svuint32_t op
)
1051 return SVE_ACLE_FUNC(svcvt_f16
,_u32
,_z
,)(pg
, op
);
1054 // CHECK-LABEL: @test_svcvt_f32_u32_z(
1055 // CHECK-NEXT: entry:
1056 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1057 // 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:%.*]])
1058 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1060 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_u32_zu10__SVBool_tu12__SVUint32_t(
1061 // CPP-CHECK-NEXT: entry:
1062 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1063 // 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:%.*]])
1064 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1066 svfloat32_t
test_svcvt_f32_u32_z(svbool_t pg
, svuint32_t op
)
1068 return SVE_ACLE_FUNC(svcvt_f32
,_u32
,_z
,)(pg
, op
);
1071 // CHECK-LABEL: @test_svcvt_f64_u32_z(
1072 // CHECK-NEXT: entry:
1073 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1074 // 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:%.*]])
1075 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1077 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_u32_zu10__SVBool_tu12__SVUint32_t(
1078 // CPP-CHECK-NEXT: entry:
1079 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1080 // 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:%.*]])
1081 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1083 svfloat64_t
test_svcvt_f64_u32_z(svbool_t pg
, svuint32_t op
)
1085 return SVE_ACLE_FUNC(svcvt_f64
,_u32
,_z
,)(pg
, op
);
1088 // CHECK-LABEL: @test_svcvt_f16_u32_m(
1089 // CHECK-NEXT: entry:
1090 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1091 // 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:%.*]])
1092 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1094 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_u32_mu13__SVFloat16_tu10__SVBool_tu12__SVUint32_t(
1095 // CPP-CHECK-NEXT: entry:
1096 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1097 // 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:%.*]])
1098 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1100 svfloat16_t
test_svcvt_f16_u32_m(svfloat16_t inactive
, svbool_t pg
, svuint32_t op
)
1102 return SVE_ACLE_FUNC(svcvt_f16
,_u32
,_m
,)(inactive
, pg
, op
);
1105 // CHECK-LABEL: @test_svcvt_f32_u32_m(
1106 // CHECK-NEXT: entry:
1107 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1108 // 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:%.*]])
1109 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1111 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_u32_mu13__SVFloat32_tu10__SVBool_tu12__SVUint32_t(
1112 // CPP-CHECK-NEXT: entry:
1113 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1114 // 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:%.*]])
1115 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1117 svfloat32_t
test_svcvt_f32_u32_m(svfloat32_t inactive
, svbool_t pg
, svuint32_t op
)
1119 return SVE_ACLE_FUNC(svcvt_f32
,_u32
,_m
,)(inactive
, pg
, op
);
1122 // CHECK-LABEL: @test_svcvt_f64_u32_m(
1123 // CHECK-NEXT: entry:
1124 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1125 // 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:%.*]])
1126 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1128 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_u32_mu13__SVFloat64_tu10__SVBool_tu12__SVUint32_t(
1129 // CPP-CHECK-NEXT: entry:
1130 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1131 // 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:%.*]])
1132 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1134 svfloat64_t
test_svcvt_f64_u32_m(svfloat64_t inactive
, svbool_t pg
, svuint32_t op
)
1136 return SVE_ACLE_FUNC(svcvt_f64
,_u32
,_m
,)(inactive
, pg
, op
);
1139 // CHECK-LABEL: @test_svcvt_f16_u32_x(
1140 // CHECK-NEXT: entry:
1141 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1142 // 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:%.*]])
1143 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1145 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_u32_xu10__SVBool_tu12__SVUint32_t(
1146 // CPP-CHECK-NEXT: entry:
1147 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1148 // 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:%.*]])
1149 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1151 svfloat16_t
test_svcvt_f16_u32_x(svbool_t pg
, svuint32_t op
)
1153 return SVE_ACLE_FUNC(svcvt_f16
,_u32
,_x
,)(pg
, op
);
1156 // CHECK-LABEL: @test_svcvt_f32_u32_x(
1157 // CHECK-NEXT: entry:
1158 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1159 // 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:%.*]])
1160 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1162 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_u32_xu10__SVBool_tu12__SVUint32_t(
1163 // CPP-CHECK-NEXT: entry:
1164 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1165 // 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:%.*]])
1166 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1168 svfloat32_t
test_svcvt_f32_u32_x(svbool_t pg
, svuint32_t op
)
1170 return SVE_ACLE_FUNC(svcvt_f32
,_u32
,_x
,)(pg
, op
);
1173 // CHECK-LABEL: @test_svcvt_f64_u32_x(
1174 // CHECK-NEXT: entry:
1175 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1176 // 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:%.*]])
1177 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1179 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_u32_xu10__SVBool_tu12__SVUint32_t(
1180 // CPP-CHECK-NEXT: entry:
1181 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1182 // 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:%.*]])
1183 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1185 svfloat64_t
test_svcvt_f64_u32_x(svbool_t pg
, svuint32_t op
)
1187 return SVE_ACLE_FUNC(svcvt_f64
,_u32
,_x
,)(pg
, op
);
1190 // CHECK-LABEL: @test_svcvt_f16_u64_z(
1191 // CHECK-NEXT: entry:
1192 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1193 // 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:%.*]])
1194 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1196 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_u64_zu10__SVBool_tu12__SVUint64_t(
1197 // CPP-CHECK-NEXT: entry:
1198 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1199 // 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:%.*]])
1200 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1202 svfloat16_t
test_svcvt_f16_u64_z(svbool_t pg
, svuint64_t op
)
1204 return SVE_ACLE_FUNC(svcvt_f16
,_u64
,_z
,)(pg
, op
);
1207 // CHECK-LABEL: @test_svcvt_f32_u64_z(
1208 // CHECK-NEXT: entry:
1209 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1210 // 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:%.*]])
1211 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1213 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_u64_zu10__SVBool_tu12__SVUint64_t(
1214 // CPP-CHECK-NEXT: entry:
1215 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1216 // 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:%.*]])
1217 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1219 svfloat32_t
test_svcvt_f32_u64_z(svbool_t pg
, svuint64_t op
)
1221 return SVE_ACLE_FUNC(svcvt_f32
,_u64
,_z
,)(pg
, op
);
1224 // CHECK-LABEL: @test_svcvt_f64_u64_z(
1225 // CHECK-NEXT: entry:
1226 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1227 // 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:%.*]])
1228 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1230 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_u64_zu10__SVBool_tu12__SVUint64_t(
1231 // CPP-CHECK-NEXT: entry:
1232 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1233 // 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:%.*]])
1234 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1236 svfloat64_t
test_svcvt_f64_u64_z(svbool_t pg
, svuint64_t op
)
1238 return SVE_ACLE_FUNC(svcvt_f64
,_u64
,_z
,)(pg
, op
);
1241 // CHECK-LABEL: @test_svcvt_f16_u64_m(
1242 // CHECK-NEXT: entry:
1243 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1244 // 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:%.*]])
1245 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1247 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_u64_mu13__SVFloat16_tu10__SVBool_tu12__SVUint64_t(
1248 // CPP-CHECK-NEXT: entry:
1249 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1250 // 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:%.*]])
1251 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1253 svfloat16_t
test_svcvt_f16_u64_m(svfloat16_t inactive
, svbool_t pg
, svuint64_t op
)
1255 return SVE_ACLE_FUNC(svcvt_f16
,_u64
,_m
,)(inactive
, pg
, op
);
1258 // CHECK-LABEL: @test_svcvt_f32_u64_m(
1259 // CHECK-NEXT: entry:
1260 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1261 // 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:%.*]])
1262 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1264 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_u64_mu13__SVFloat32_tu10__SVBool_tu12__SVUint64_t(
1265 // CPP-CHECK-NEXT: entry:
1266 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1267 // 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:%.*]])
1268 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1270 svfloat32_t
test_svcvt_f32_u64_m(svfloat32_t inactive
, svbool_t pg
, svuint64_t op
)
1272 return SVE_ACLE_FUNC(svcvt_f32
,_u64
,_m
,)(inactive
, pg
, op
);
1275 // CHECK-LABEL: @test_svcvt_f64_u64_m(
1276 // CHECK-NEXT: entry:
1277 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1278 // 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:%.*]])
1279 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1281 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_u64_mu13__SVFloat64_tu10__SVBool_tu12__SVUint64_t(
1282 // CPP-CHECK-NEXT: entry:
1283 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1284 // 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:%.*]])
1285 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1287 svfloat64_t
test_svcvt_f64_u64_m(svfloat64_t inactive
, svbool_t pg
, svuint64_t op
)
1289 return SVE_ACLE_FUNC(svcvt_f64
,_u64
,_m
,)(inactive
, pg
, op
);
1292 // CHECK-LABEL: @test_svcvt_f16_u64_x(
1293 // CHECK-NEXT: entry:
1294 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1295 // 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:%.*]])
1296 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1298 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_u64_xu10__SVBool_tu12__SVUint64_t(
1299 // CPP-CHECK-NEXT: entry:
1300 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1301 // 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:%.*]])
1302 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1304 svfloat16_t
test_svcvt_f16_u64_x(svbool_t pg
, svuint64_t op
)
1306 return SVE_ACLE_FUNC(svcvt_f16
,_u64
,_x
,)(pg
, op
);
1309 // CHECK-LABEL: @test_svcvt_f32_u64_x(
1310 // CHECK-NEXT: entry:
1311 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1312 // 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:%.*]])
1313 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1315 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_u64_xu10__SVBool_tu12__SVUint64_t(
1316 // CPP-CHECK-NEXT: entry:
1317 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1318 // 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:%.*]])
1319 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1321 svfloat32_t
test_svcvt_f32_u64_x(svbool_t pg
, svuint64_t op
)
1323 return SVE_ACLE_FUNC(svcvt_f32
,_u64
,_x
,)(pg
, op
);
1326 // CHECK-LABEL: @test_svcvt_f64_u64_x(
1327 // CHECK-NEXT: entry:
1328 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1329 // 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:%.*]])
1330 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1332 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_u64_xu10__SVBool_tu12__SVUint64_t(
1333 // CPP-CHECK-NEXT: entry:
1334 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1335 // 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:%.*]])
1336 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1338 svfloat64_t
test_svcvt_f64_u64_x(svbool_t pg
, svuint64_t op
)
1340 return SVE_ACLE_FUNC(svcvt_f64
,_u64
,_x
,)(pg
, op
);
1343 // CHECK-LABEL: @test_svcvt_f32_f16_z(
1344 // CHECK-NEXT: entry:
1345 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1346 // 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:%.*]])
1347 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1349 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_f16_zu10__SVBool_tu13__SVFloat16_t(
1350 // CPP-CHECK-NEXT: entry:
1351 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1352 // 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:%.*]])
1353 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1355 svfloat32_t
test_svcvt_f32_f16_z(svbool_t pg
, svfloat16_t op
)
1357 return SVE_ACLE_FUNC(svcvt_f32
,_f16
,_z
,)(pg
, op
);
1360 // CHECK-LABEL: @test_svcvt_f64_f16_z(
1361 // CHECK-NEXT: entry:
1362 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1363 // 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:%.*]])
1364 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1366 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_f16_zu10__SVBool_tu13__SVFloat16_t(
1367 // CPP-CHECK-NEXT: entry:
1368 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1369 // 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:%.*]])
1370 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1372 svfloat64_t
test_svcvt_f64_f16_z(svbool_t pg
, svfloat16_t op
)
1374 return SVE_ACLE_FUNC(svcvt_f64
,_f16
,_z
,)(pg
, op
);
1377 // CHECK-LABEL: @test_svcvt_f32_f16_m(
1378 // CHECK-NEXT: entry:
1379 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1380 // 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:%.*]])
1381 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1383 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_f16_mu13__SVFloat32_tu10__SVBool_tu13__SVFloat16_t(
1384 // CPP-CHECK-NEXT: entry:
1385 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1386 // 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:%.*]])
1387 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1389 svfloat32_t
test_svcvt_f32_f16_m(svfloat32_t inactive
, svbool_t pg
, svfloat16_t op
)
1391 return SVE_ACLE_FUNC(svcvt_f32
,_f16
,_m
,)(inactive
, pg
, op
);
1394 // CHECK-LABEL: @test_svcvt_f64_f16_m(
1395 // CHECK-NEXT: entry:
1396 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1397 // 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:%.*]])
1398 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1400 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_f16_mu13__SVFloat64_tu10__SVBool_tu13__SVFloat16_t(
1401 // CPP-CHECK-NEXT: entry:
1402 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1403 // 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:%.*]])
1404 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1406 svfloat64_t
test_svcvt_f64_f16_m(svfloat64_t inactive
, svbool_t pg
, svfloat16_t op
)
1408 return SVE_ACLE_FUNC(svcvt_f64
,_f16
,_m
,)(inactive
, pg
, op
);
1411 // CHECK-LABEL: @test_svcvt_f32_f16_x(
1412 // CHECK-NEXT: entry:
1413 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1414 // 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:%.*]])
1415 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1417 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_f16_xu10__SVBool_tu13__SVFloat16_t(
1418 // CPP-CHECK-NEXT: entry:
1419 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1420 // 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:%.*]])
1421 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1423 svfloat32_t
test_svcvt_f32_f16_x(svbool_t pg
, svfloat16_t op
)
1425 return SVE_ACLE_FUNC(svcvt_f32
,_f16
,_x
,)(pg
, op
);
1428 // CHECK-LABEL: @test_svcvt_f64_f16_x(
1429 // CHECK-NEXT: entry:
1430 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1431 // 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:%.*]])
1432 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1434 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_f16_xu10__SVBool_tu13__SVFloat16_t(
1435 // CPP-CHECK-NEXT: entry:
1436 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1437 // 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:%.*]])
1438 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1440 svfloat64_t
test_svcvt_f64_f16_x(svbool_t pg
, svfloat16_t op
)
1442 return SVE_ACLE_FUNC(svcvt_f64
,_f16
,_x
,)(pg
, op
);
1445 // CHECK-LABEL: @test_svcvt_f64_f32_z(
1446 // CHECK-NEXT: entry:
1447 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1448 // 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:%.*]])
1449 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1451 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_f32_zu10__SVBool_tu13__SVFloat32_t(
1452 // CPP-CHECK-NEXT: entry:
1453 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1454 // 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:%.*]])
1455 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1457 svfloat64_t
test_svcvt_f64_f32_z(svbool_t pg
, svfloat32_t op
)
1459 return SVE_ACLE_FUNC(svcvt_f64
,_f32
,_z
,)(pg
, op
);
1462 // CHECK-LABEL: @test_svcvt_f64_f32_m(
1463 // CHECK-NEXT: entry:
1464 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1465 // 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:%.*]])
1466 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1468 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_f32_mu13__SVFloat64_tu10__SVBool_tu13__SVFloat32_t(
1469 // CPP-CHECK-NEXT: entry:
1470 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1471 // 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:%.*]])
1472 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1474 svfloat64_t
test_svcvt_f64_f32_m(svfloat64_t inactive
, svbool_t pg
, svfloat32_t op
)
1476 return SVE_ACLE_FUNC(svcvt_f64
,_f32
,_m
,)(inactive
, pg
, op
);
1479 // CHECK-LABEL: @test_svcvt_f64_f32_x(
1480 // CHECK-NEXT: entry:
1481 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1482 // 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:%.*]])
1483 // CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1485 // CPP-CHECK-LABEL: @_Z20test_svcvt_f64_f32_xu10__SVBool_tu13__SVFloat32_t(
1486 // CPP-CHECK-NEXT: entry:
1487 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1488 // 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:%.*]])
1489 // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP1]]
1491 svfloat64_t
test_svcvt_f64_f32_x(svbool_t pg
, svfloat32_t op
)
1493 return SVE_ACLE_FUNC(svcvt_f64
,_f32
,_x
,)(pg
, op
);
1496 // CHECK-LABEL: @test_svcvt_f16_f32_z(
1497 // CHECK-NEXT: entry:
1498 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1499 // 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:%.*]])
1500 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1502 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_f32_zu10__SVBool_tu13__SVFloat32_t(
1503 // CPP-CHECK-NEXT: entry:
1504 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1505 // 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:%.*]])
1506 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1508 svfloat16_t
test_svcvt_f16_f32_z(svbool_t pg
, svfloat32_t op
)
1510 return SVE_ACLE_FUNC(svcvt_f16
,_f32
,_z
,)(pg
, op
);
1513 // CHECK-LABEL: @test_svcvt_f16_f64_z(
1514 // CHECK-NEXT: entry:
1515 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1516 // 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:%.*]])
1517 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1519 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_f64_zu10__SVBool_tu13__SVFloat64_t(
1520 // CPP-CHECK-NEXT: entry:
1521 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1522 // 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:%.*]])
1523 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1525 svfloat16_t
test_svcvt_f16_f64_z(svbool_t pg
, svfloat64_t op
)
1527 return SVE_ACLE_FUNC(svcvt_f16
,_f64
,_z
,)(pg
, op
);
1530 // CHECK-LABEL: @test_svcvt_f16_f32_m(
1531 // CHECK-NEXT: entry:
1532 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1533 // 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:%.*]])
1534 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1536 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_f32_mu13__SVFloat16_tu10__SVBool_tu13__SVFloat32_t(
1537 // CPP-CHECK-NEXT: entry:
1538 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1539 // 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:%.*]])
1540 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1542 svfloat16_t
test_svcvt_f16_f32_m(svfloat16_t inactive
, svbool_t pg
, svfloat32_t op
)
1544 return SVE_ACLE_FUNC(svcvt_f16
,_f32
,_m
,)(inactive
, pg
, op
);
1547 // CHECK-LABEL: @test_svcvt_f16_f64_m(
1548 // CHECK-NEXT: entry:
1549 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1550 // 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:%.*]])
1551 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1553 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_f64_mu13__SVFloat16_tu10__SVBool_tu13__SVFloat64_t(
1554 // CPP-CHECK-NEXT: entry:
1555 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1556 // 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:%.*]])
1557 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1559 svfloat16_t
test_svcvt_f16_f64_m(svfloat16_t inactive
, svbool_t pg
, svfloat64_t op
)
1561 return SVE_ACLE_FUNC(svcvt_f16
,_f64
,_m
,)(inactive
, pg
, op
);
1564 // CHECK-LABEL: @test_svcvt_f16_f32_x(
1565 // CHECK-NEXT: entry:
1566 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1567 // 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:%.*]])
1568 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1570 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_f32_xu10__SVBool_tu13__SVFloat32_t(
1571 // CPP-CHECK-NEXT: entry:
1572 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv4i1(<vscale x 16 x i1> [[PG:%.*]])
1573 // 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:%.*]])
1574 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1576 svfloat16_t
test_svcvt_f16_f32_x(svbool_t pg
, svfloat32_t op
)
1578 return SVE_ACLE_FUNC(svcvt_f16
,_f32
,_x
,)(pg
, op
);
1581 // CHECK-LABEL: @test_svcvt_f16_f64_x(
1582 // CHECK-NEXT: entry:
1583 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1584 // 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:%.*]])
1585 // CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1587 // CPP-CHECK-LABEL: @_Z20test_svcvt_f16_f64_xu10__SVBool_tu13__SVFloat64_t(
1588 // CPP-CHECK-NEXT: entry:
1589 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1590 // 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:%.*]])
1591 // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP1]]
1593 svfloat16_t
test_svcvt_f16_f64_x(svbool_t pg
, svfloat64_t op
)
1595 return SVE_ACLE_FUNC(svcvt_f16
,_f64
,_x
,)(pg
, op
);
1598 // CHECK-LABEL: @test_svcvt_f32_f64_z(
1599 // CHECK-NEXT: entry:
1600 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1601 // 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:%.*]])
1602 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1604 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_f64_zu10__SVBool_tu13__SVFloat64_t(
1605 // CPP-CHECK-NEXT: entry:
1606 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1607 // 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:%.*]])
1608 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1610 svfloat32_t
test_svcvt_f32_f64_z(svbool_t pg
, svfloat64_t op
)
1612 return SVE_ACLE_FUNC(svcvt_f32
,_f64
,_z
,)(pg
, op
);
1615 // CHECK-LABEL: @test_svcvt_f32_f64_m(
1616 // CHECK-NEXT: entry:
1617 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1618 // 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:%.*]])
1619 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1621 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_f64_mu13__SVFloat32_tu10__SVBool_tu13__SVFloat64_t(
1622 // CPP-CHECK-NEXT: entry:
1623 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1624 // 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:%.*]])
1625 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1627 svfloat32_t
test_svcvt_f32_f64_m(svfloat32_t inactive
, svbool_t pg
, svfloat64_t op
)
1629 return SVE_ACLE_FUNC(svcvt_f32
,_f64
,_m
,)(inactive
, pg
, op
);
1632 // CHECK-LABEL: @test_svcvt_f32_f64_x(
1633 // CHECK-NEXT: entry:
1634 // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1635 // 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:%.*]])
1636 // CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1638 // CPP-CHECK-LABEL: @_Z20test_svcvt_f32_f64_xu10__SVBool_tu13__SVFloat64_t(
1639 // CPP-CHECK-NEXT: entry:
1640 // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i1> @llvm.aarch64.sve.convert.from.svbool.nxv2i1(<vscale x 16 x i1> [[PG:%.*]])
1641 // 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:%.*]])
1642 // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP1]]
1644 svfloat32_t
test_svcvt_f32_f64_x(svbool_t pg
, svfloat64_t op
)
1646 return SVE_ACLE_FUNC(svcvt_f32
,_f64
,_x
,)(pg
, op
);