@@ -39,9 +39,8 @@ int64_t test_vcvtad_s64_f64(float64_t a) {
3939// CHECK-LABEL: define {{[^@]+}}@test_vcvtas_s64_f32
4040// CHECK-SAME: (float noundef [[A:%.*]]) #[[ATTR0]] {
4141// CHECK-NEXT: entry:
42- // CHECK-NEXT: [[VCVTAS_S64_F32_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtas.i32.f32(float [[A]])
43- // CHECK-NEXT: [[CONV:%.*]] = sext i32 [[VCVTAS_S64_F32_I]] to i64
44- // CHECK-NEXT: ret i64 [[CONV]]
42+ // CHECK-NEXT: [[VCVTAS_S64_F32_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtas.i64.f32(float [[A]])
43+ // CHECK-NEXT: ret i64 [[VCVTAS_S64_F32_I]]
4544//
4645int64_t test_vcvtas_s64_f32 (float32_t a ) {
4746 return (int64_t )vcvtas_s64_f32 (a );
@@ -50,9 +49,8 @@ int64_t test_vcvtas_s64_f32(float32_t a) {
5049// CHECK-LABEL: define {{[^@]+}}@test_vcvtad_s32_f64
5150// CHECK-SAME: (double noundef [[A:%.*]]) #[[ATTR0]] {
5251// CHECK-NEXT: entry:
53- // CHECK-NEXT: [[VCVTAD_S32_F64_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtas.i64.f64(double [[A]])
54- // CHECK-NEXT: [[CONV:%.*]] = trunc i64 [[VCVTAD_S32_F64_I]] to i32
55- // CHECK-NEXT: ret i32 [[CONV]]
52+ // CHECK-NEXT: [[VCVTAD_S32_F64_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtas.i32.f64(double [[A]])
53+ // CHECK-NEXT: ret i32 [[VCVTAD_S32_F64_I]]
5654//
5755int32_t test_vcvtad_s32_f64 (float64_t a ) {
5856 return (int32_t )vcvtad_s32_f64 (a );
@@ -81,9 +79,8 @@ uint64_t test_vcvtad_u64_f64(float64_t a) {
8179// CHECK-LABEL: define {{[^@]+}}@test_vcvtas_u64_f32
8280// CHECK-SAME: (float noundef [[A:%.*]]) #[[ATTR0]] {
8381// CHECK-NEXT: entry:
84- // CHECK-NEXT: [[VCVTAS_U64_F32_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtau.i32.f32(float [[A]])
85- // CHECK-NEXT: [[CONV:%.*]] = zext i32 [[VCVTAS_U64_F32_I]] to i64
86- // CHECK-NEXT: ret i64 [[CONV]]
82+ // CHECK-NEXT: [[VCVTAS_U64_F32_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtau.i64.f32(float [[A]])
83+ // CHECK-NEXT: ret i64 [[VCVTAS_U64_F32_I]]
8784//
8885uint64_t test_vcvtas_u64_f32 (float32_t a ) {
8986 return (uint64_t )vcvtas_u64_f32 (a );
@@ -92,9 +89,8 @@ uint64_t test_vcvtas_u64_f32(float32_t a) {
9289// CHECK-LABEL: define {{[^@]+}}@test_vcvtad_u32_f64
9390// CHECK-SAME: (double noundef [[A:%.*]]) #[[ATTR0]] {
9491// CHECK-NEXT: entry:
95- // CHECK-NEXT: [[VCVTAD_U32_F64_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtau.i64.f64(double [[A]])
96- // CHECK-NEXT: [[CONV:%.*]] = trunc i64 [[VCVTAD_U32_F64_I]] to i32
97- // CHECK-NEXT: ret i32 [[CONV]]
92+ // CHECK-NEXT: [[VCVTAD_U32_F64_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtau.i32.f64(double [[A]])
93+ // CHECK-NEXT: ret i32 [[VCVTAD_U32_F64_I]]
9894//
9995uint32_t test_vcvtad_u32_f64 (float64_t a ) {
10096 return (uint32_t )vcvtad_u32_f64 (a );
@@ -123,9 +119,8 @@ int64_t test_vcvtmd_s64_f64(float64_t a) {
123119// CHECK-LABEL: define {{[^@]+}}@test_vcvtms_s64_f32
124120// CHECK-SAME: (float noundef [[A:%.*]]) #[[ATTR0]] {
125121// CHECK-NEXT: entry:
126- // CHECK-NEXT: [[VCVTMS_S64_F32_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtms.i32.f32(float [[A]])
127- // CHECK-NEXT: [[CONV:%.*]] = sext i32 [[VCVTMS_S64_F32_I]] to i64
128- // CHECK-NEXT: ret i64 [[CONV]]
122+ // CHECK-NEXT: [[VCVTMS_S64_F32_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtms.i64.f32(float [[A]])
123+ // CHECK-NEXT: ret i64 [[VCVTMS_S64_F32_I]]
129124//
130125int64_t test_vcvtms_s64_f32 (float32_t a ) {
131126 return (int64_t )vcvtms_s64_f32 (a );
@@ -134,9 +129,8 @@ int64_t test_vcvtms_s64_f32(float32_t a) {
134129// CHECK-LABEL: define {{[^@]+}}@test_vcvtmd_s32_f64
135130// CHECK-SAME: (double noundef [[A:%.*]]) #[[ATTR0]] {
136131// CHECK-NEXT: entry:
137- // CHECK-NEXT: [[VCVTMD_S32_F64_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtms.i64.f64(double [[A]])
138- // CHECK-NEXT: [[CONV:%.*]] = trunc i64 [[VCVTMD_S32_F64_I]] to i32
139- // CHECK-NEXT: ret i32 [[CONV]]
132+ // CHECK-NEXT: [[VCVTMD_S32_F64_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtms.i32.f64(double [[A]])
133+ // CHECK-NEXT: ret i32 [[VCVTMD_S32_F64_I]]
140134//
141135int32_t test_vcvtmd_s32_f64 (float64_t a ) {
142136 return (int32_t )vcvtmd_s32_f64 (a );
@@ -165,9 +159,8 @@ uint64_t test_vcvtmd_u64_f64(float64_t a) {
165159// CHECK-LABEL: define {{[^@]+}}@test_vcvtms_u64_f32
166160// CHECK-SAME: (float noundef [[A:%.*]]) #[[ATTR0]] {
167161// CHECK-NEXT: entry:
168- // CHECK-NEXT: [[VCVTMS_U64_F32_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtmu.i32.f32(float [[A]])
169- // CHECK-NEXT: [[CONV:%.*]] = zext i32 [[VCVTMS_U64_F32_I]] to i64
170- // CHECK-NEXT: ret i64 [[CONV]]
162+ // CHECK-NEXT: [[VCVTMS_U64_F32_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtmu.i64.f32(float [[A]])
163+ // CHECK-NEXT: ret i64 [[VCVTMS_U64_F32_I]]
171164//
172165uint64_t test_vcvtms_u64_f32 (float32_t a ) {
173166 return (uint64_t )vcvtms_u64_f32 (a );
@@ -176,9 +169,8 @@ uint64_t test_vcvtms_u64_f32(float32_t a) {
176169// CHECK-LABEL: define {{[^@]+}}@test_vcvtmd_u32_f64
177170// CHECK-SAME: (double noundef [[A:%.*]]) #[[ATTR0]] {
178171// CHECK-NEXT: entry:
179- // CHECK-NEXT: [[VCVTMD_U32_F64_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtmu.i64.f64(double [[A]])
180- // CHECK-NEXT: [[CONV:%.*]] = trunc i64 [[VCVTMD_U32_F64_I]] to i32
181- // CHECK-NEXT: ret i32 [[CONV]]
172+ // CHECK-NEXT: [[VCVTMD_U32_F64_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtmu.i32.f64(double [[A]])
173+ // CHECK-NEXT: ret i32 [[VCVTMD_U32_F64_I]]
182174//
183175uint32_t test_vcvtmd_u32_f64 (float64_t a ) {
184176 return (uint32_t )vcvtmd_u32_f64 (a );
@@ -207,9 +199,8 @@ int64_t test_vcvtnd_s64_f64(float64_t a) {
207199// CHECK-LABEL: define {{[^@]+}}@test_vcvtns_s64_f32
208200// CHECK-SAME: (float noundef [[A:%.*]]) #[[ATTR0]] {
209201// CHECK-NEXT: entry:
210- // CHECK-NEXT: [[VCVTNS_S64_F32_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtns.i32.f32(float [[A]])
211- // CHECK-NEXT: [[CONV:%.*]] = sext i32 [[VCVTNS_S64_F32_I]] to i64
212- // CHECK-NEXT: ret i64 [[CONV]]
202+ // CHECK-NEXT: [[VCVTNS_S64_F32_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtns.i64.f32(float [[A]])
203+ // CHECK-NEXT: ret i64 [[VCVTNS_S64_F32_I]]
213204//
214205int64_t test_vcvtns_s64_f32 (float32_t a ) {
215206 return (int64_t )vcvtns_s64_f32 (a );
@@ -218,9 +209,8 @@ int64_t test_vcvtns_s64_f32(float32_t a) {
218209// CHECK-LABEL: define {{[^@]+}}@test_vcvtnd_s32_f64
219210// CHECK-SAME: (double noundef [[A:%.*]]) #[[ATTR0]] {
220211// CHECK-NEXT: entry:
221- // CHECK-NEXT: [[VCVTND_S32_F64_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtns.i64.f64(double [[A]])
222- // CHECK-NEXT: [[CONV:%.*]] = trunc i64 [[VCVTND_S32_F64_I]] to i32
223- // CHECK-NEXT: ret i32 [[CONV]]
212+ // CHECK-NEXT: [[VCVTND_S32_F64_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtns.i32.f64(double [[A]])
213+ // CHECK-NEXT: ret i32 [[VCVTND_S32_F64_I]]
224214//
225215int32_t test_vcvtnd_s32_f64 (float64_t a ) {
226216 return (int32_t )vcvtnd_s32_f64 (a );
@@ -249,9 +239,8 @@ uint64_t test_vcvtnd_u64_f64(float64_t a) {
249239// CHECK-LABEL: define {{[^@]+}}@test_vcvtns_u64_f32
250240// CHECK-SAME: (float noundef [[A:%.*]]) #[[ATTR0]] {
251241// CHECK-NEXT: entry:
252- // CHECK-NEXT: [[VCVTNS_U64_F32_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtnu.i32.f32(float [[A]])
253- // CHECK-NEXT: [[CONV:%.*]] = zext i32 [[VCVTNS_U64_F32_I]] to i64
254- // CHECK-NEXT: ret i64 [[CONV]]
242+ // CHECK-NEXT: [[VCVTNS_U64_F32_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtnu.i64.f32(float [[A]])
243+ // CHECK-NEXT: ret i64 [[VCVTNS_U64_F32_I]]
255244//
256245uint64_t test_vcvtns_u64_f32 (float32_t a ) {
257246 return (uint64_t )vcvtns_u64_f32 (a );
@@ -260,9 +249,8 @@ uint64_t test_vcvtns_u64_f32(float32_t a) {
260249// CHECK-LABEL: define {{[^@]+}}@test_vcvtnd_u32_f64
261250// CHECK-SAME: (double noundef [[A:%.*]]) #[[ATTR0]] {
262251// CHECK-NEXT: entry:
263- // CHECK-NEXT: [[VCVTND_U32_F64_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtnu.i64.f64(double [[A]])
264- // CHECK-NEXT: [[CONV:%.*]] = trunc i64 [[VCVTND_U32_F64_I]] to i32
265- // CHECK-NEXT: ret i32 [[CONV]]
252+ // CHECK-NEXT: [[VCVTND_U32_F64_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtnu.i32.f64(double [[A]])
253+ // CHECK-NEXT: ret i32 [[VCVTND_U32_F64_I]]
266254//
267255uint32_t test_vcvtnd_u32_f64 (float64_t a ) {
268256 return (uint32_t )vcvtnd_u32_f64 (a );
@@ -291,9 +279,8 @@ int64_t test_vcvtpd_s64_f64(float64_t a) {
291279// CHECK-LABEL: define {{[^@]+}}@test_vcvtps_s64_f32
292280// CHECK-SAME: (float noundef [[A:%.*]]) #[[ATTR0]] {
293281// CHECK-NEXT: entry:
294- // CHECK-NEXT: [[VCVTPS_S64_F32_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtps.i32.f32(float [[A]])
295- // CHECK-NEXT: [[CONV:%.*]] = sext i32 [[VCVTPS_S64_F32_I]] to i64
296- // CHECK-NEXT: ret i64 [[CONV]]
282+ // CHECK-NEXT: [[VCVTPS_S64_F32_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtps.i64.f32(float [[A]])
283+ // CHECK-NEXT: ret i64 [[VCVTPS_S64_F32_I]]
297284//
298285int64_t test_vcvtps_s64_f32 (float32_t a ) {
299286 return (int64_t )vcvtps_s64_f32 (a );
@@ -302,9 +289,8 @@ int64_t test_vcvtps_s64_f32(float32_t a) {
302289// CHECK-LABEL: define {{[^@]+}}@test_vcvtpd_s32_f64
303290// CHECK-SAME: (double noundef [[A:%.*]]) #[[ATTR0]] {
304291// CHECK-NEXT: entry:
305- // CHECK-NEXT: [[VCVTPD_S32_F64_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtps.i64.f64(double [[A]])
306- // CHECK-NEXT: [[CONV:%.*]] = trunc i64 [[VCVTPD_S32_F64_I]] to i32
307- // CHECK-NEXT: ret i32 [[CONV]]
292+ // CHECK-NEXT: [[VCVTPD_S32_F64_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtps.i32.f64(double [[A]])
293+ // CHECK-NEXT: ret i32 [[VCVTPD_S32_F64_I]]
308294//
309295int32_t test_vcvtpd_s32_f64 (float64_t a ) {
310296 return (int32_t )vcvtpd_s32_f64 (a );
@@ -333,9 +319,8 @@ uint64_t test_vcvtpd_u64_f64(float64_t a) {
333319// CHECK-LABEL: define {{[^@]+}}@test_vcvtps_u64_f32
334320// CHECK-SAME: (float noundef [[A:%.*]]) #[[ATTR0]] {
335321// CHECK-NEXT: entry:
336- // CHECK-NEXT: [[VCVTPS_U64_F32_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtpu.i32.f32(float [[A]])
337- // CHECK-NEXT: [[CONV:%.*]] = zext i32 [[VCVTPS_U64_F32_I]] to i64
338- // CHECK-NEXT: ret i64 [[CONV]]
322+ // CHECK-NEXT: [[VCVTPS_U64_F32_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtpu.i64.f32(float [[A]])
323+ // CHECK-NEXT: ret i64 [[VCVTPS_U64_F32_I]]
339324//
340325uint64_t test_vcvtps_u64_f32 (float32_t a ) {
341326 return (uint64_t )vcvtps_u64_f32 (a );
@@ -344,9 +329,8 @@ uint64_t test_vcvtps_u64_f32(float32_t a) {
344329// CHECK-LABEL: define {{[^@]+}}@test_vcvtpd_u32_f64
345330// CHECK-SAME: (double noundef [[A:%.*]]) #[[ATTR0]] {
346331// CHECK-NEXT: entry:
347- // CHECK-NEXT: [[VCVTPD_U32_F64_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtpu.i64.f64(double [[A]])
348- // CHECK-NEXT: [[CONV:%.*]] = trunc i64 [[VCVTPD_U32_F64_I]] to i32
349- // CHECK-NEXT: ret i32 [[CONV]]
332+ // CHECK-NEXT: [[VCVTPD_U32_F64_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtpu.i32.f64(double [[A]])
333+ // CHECK-NEXT: ret i32 [[VCVTPD_U32_F64_I]]
350334//
351335uint32_t test_vcvtpd_u32_f64 (float64_t a ) {
352336 return (uint32_t )vcvtpd_u32_f64 (a );
@@ -375,9 +359,8 @@ int64_t test_vcvtd_s64_f64(float64_t a) {
375359// CHECK-LABEL: define {{[^@]+}}@test_vcvts_s64_f32
376360// CHECK-SAME: (float noundef [[A:%.*]]) #[[ATTR0]] {
377361// CHECK-NEXT: entry:
378- // CHECK-NEXT: [[VCVTS_S64_F32_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtzs.i32.f32(float [[A]])
379- // CHECK-NEXT: [[CONV:%.*]] = sext i32 [[VCVTS_S64_F32_I]] to i64
380- // CHECK-NEXT: ret i64 [[CONV]]
362+ // CHECK-NEXT: [[VCVTS_S64_F32_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtzs.i64.f32(float [[A]])
363+ // CHECK-NEXT: ret i64 [[VCVTS_S64_F32_I]]
381364//
382365int64_t test_vcvts_s64_f32 (float32_t a ) {
383366 return (int64_t )vcvts_s64_f32 (a );
@@ -386,9 +369,8 @@ int64_t test_vcvts_s64_f32(float32_t a) {
386369// CHECK-LABEL: define {{[^@]+}}@test_vcvtd_s32_f64
387370// CHECK-SAME: (double noundef [[A:%.*]]) #[[ATTR0]] {
388371// CHECK-NEXT: entry:
389- // CHECK-NEXT: [[VCVTD_S32_F64_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtzs.i64.f64(double [[A]])
390- // CHECK-NEXT: [[CONV:%.*]] = trunc i64 [[VCVTD_S32_F64_I]] to i32
391- // CHECK-NEXT: ret i32 [[CONV]]
372+ // CHECK-NEXT: [[VCVTD_S32_F64_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtzs.i32.f64(double [[A]])
373+ // CHECK-NEXT: ret i32 [[VCVTD_S32_F64_I]]
392374//
393375int32_t test_vcvtd_s32_f64 (float64_t a ) {
394376 return (int32_t )vcvtd_s32_f64 (a );
@@ -417,9 +399,8 @@ uint64_t test_vcvtd_u64_f64(float64_t a) {
417399// CHECK-LABEL: define {{[^@]+}}@test_vcvts_u64_f32
418400// CHECK-SAME: (float noundef [[A:%.*]]) #[[ATTR0]] {
419401// CHECK-NEXT: entry:
420- // CHECK-NEXT: [[VCVTS_U64_F32_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtzu.i32.f32(float [[A]])
421- // CHECK-NEXT: [[CONV:%.*]] = zext i32 [[VCVTS_U64_F32_I]] to i64
422- // CHECK-NEXT: ret i64 [[CONV]]
402+ // CHECK-NEXT: [[VCVTS_U64_F32_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtzu.i64.f32(float [[A]])
403+ // CHECK-NEXT: ret i64 [[VCVTS_U64_F32_I]]
423404//
424405uint64_t test_vcvts_u64_f32 (float32_t a ) {
425406 return (uint64_t )vcvts_u64_f32 (a );
@@ -428,9 +409,8 @@ uint64_t test_vcvts_u64_f32(float32_t a) {
428409// CHECK-LABEL: define {{[^@]+}}@test_vcvtd_u32_f64
429410// CHECK-SAME: (double noundef [[A:%.*]]) #[[ATTR0]] {
430411// CHECK-NEXT: entry:
431- // CHECK-NEXT: [[VCVTD_U32_F64_I:%.*]] = call i64 @llvm.aarch64.neon.fcvtzu.i64.f64(double [[A]])
432- // CHECK-NEXT: [[CONV:%.*]] = trunc i64 [[VCVTD_U32_F64_I]] to i32
433- // CHECK-NEXT: ret i32 [[CONV]]
412+ // CHECK-NEXT: [[VCVTD_U32_F64_I:%.*]] = call i32 @llvm.aarch64.neon.fcvtzu.i32.f64(double [[A]])
413+ // CHECK-NEXT: ret i32 [[VCVTD_U32_F64_I]]
434414//
435415uint32_t test_vcvtd_u32_f64 (float64_t a ) {
436416 return (uint32_t )vcvtd_u32_f64 (a );
0 commit comments