53 lines · plain
1; Test strict conversions between integer and float elements on z15.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z15 | FileCheck %s4 5declare <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f32(<4 x float>, metadata)6declare <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f32(<4 x float>, metadata)7declare <4 x float> @llvm.experimental.constrained.uitofp.v4f32.v4i32(<4 x i32>, metadata, metadata)8declare <4 x float> @llvm.experimental.constrained.sitofp.v4f32.v4i32(<4 x i32>, metadata, metadata)9 10; Test conversion of f32s to signed i32s.11define <4 x i32> @f1(<4 x float> %floats) #0 {12; CHECK-LABEL: f1:13; CHECK: vcfeb %v24, %v24, 0, 514; CHECK: br %r1415 %words = call <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f32(<4 x float> %floats,16 metadata !"fpexcept.strict") #017 ret <4 x i32> %words18}19 20; Test conversion of f32s to unsigned i32s.21define <4 x i32> @f2(<4 x float> %floats) #0 {22; CHECK-LABEL: f2:23; CHECK: vclfeb %v24, %v24, 0, 524; CHECK: br %r1425 %words = call <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f32(<4 x float> %floats,26 metadata !"fpexcept.strict") #027 ret <4 x i32> %words28}29 30; Test conversion of signed i32s to f32s.31define <4 x float> @f3(<4 x i32> %dwords) #0 {32; CHECK-LABEL: f3:33; CHECK: vcefb %v24, %v24, 0, 034; CHECK: br %r1435 %floats = call <4 x float> @llvm.experimental.constrained.sitofp.v4f32.v4i32(<4 x i32> %dwords,36 metadata !"round.dynamic",37 metadata !"fpexcept.strict") #038 ret <4 x float> %floats39}40 41; Test conversion of unsigned i32s to f32s.42define <4 x float> @f4(<4 x i32> %dwords) #0 {43; CHECK-LABEL: f4:44; CHECK: vcelfb %v24, %v24, 0, 045; CHECK: br %r1446 %floats = call <4 x float> @llvm.experimental.constrained.uitofp.v4f32.v4i32(<4 x i32> %dwords,47 metadata !"round.dynamic",48 metadata !"fpexcept.strict") #049 ret <4 x float> %floats50}51 52attributes #0 = { strictfp }53