brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · 6ea32cb Raw
126 lines · plain
1; Test f128 floating-point strict conversion to/from integers on z14.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s4 5declare fp128 @llvm.experimental.constrained.sitofp.f128.i32(i32, metadata, metadata)6declare fp128 @llvm.experimental.constrained.sitofp.f128.i64(i64, metadata, metadata)7 8declare fp128 @llvm.experimental.constrained.uitofp.f128.i32(i32, metadata, metadata)9declare fp128 @llvm.experimental.constrained.uitofp.f128.i64(i64, metadata, metadata)10 11declare i32 @llvm.experimental.constrained.fptosi.i32.f128(fp128, metadata)12declare i64 @llvm.experimental.constrained.fptosi.i64.f128(fp128, metadata)13 14declare i32 @llvm.experimental.constrained.fptoui.i32.f128(fp128, metadata)15declare i64 @llvm.experimental.constrained.fptoui.i64.f128(fp128, metadata)16 17; Test signed i32->f128.18define void @f1(i32 %i, ptr %dst) #0 {19; CHECK-LABEL: f1:20; CHECK: cxfbr %f0, %r221; CHECK: vmrhg %v0, %v0, %v222; CHECK: vst %v0, 0(%r3)23; CHECK: br %r1424  %conv = call fp128 @llvm.experimental.constrained.sitofp.f128.i32(i32 %i,25                                               metadata !"round.dynamic",26                                               metadata !"fpexcept.strict") #027  store fp128 %conv, ptr %dst28  ret void29}30 31; Test signed i64->f128.32define void @f2(i64 %i, ptr %dst) #0 {33; CHECK-LABEL: f2:34; CHECK: cxgbr %f0, %r235; CHECK: vmrhg %v0, %v0, %v236; CHECK: vst %v0, 0(%r3)37; CHECK: br %r1438  %conv = call fp128 @llvm.experimental.constrained.sitofp.f128.i64(i64 %i,39                                               metadata !"round.dynamic",40                                               metadata !"fpexcept.strict") #041  store fp128 %conv, ptr %dst42  ret void43}44 45; Test unsigned i32->f128.46define void @f3(i32 %i, ptr %dst) #0 {47; CHECK-LABEL: f3:48; CHECK: cxlfbr %f0, 0, %r2, 049; CHECK: vmrhg %v0, %v0, %v250; CHECK: vst %v0, 0(%r3)51; CHECK: br %r1452  %conv = call fp128 @llvm.experimental.constrained.uitofp.f128.i32(i32 %i,53                                               metadata !"round.dynamic",54                                               metadata !"fpexcept.strict") #055  store fp128 %conv, ptr %dst56  ret void57}58 59; Test unsigned i64->f128.60define void @f4(i64 %i, ptr %dst) #0 {61; CHECK-LABEL: f4:62; CHECK: cxlgbr %f0, 0, %r2, 063; CHECK: vmrhg %v0, %v0, %v264; CHECK: vst %v0, 0(%r3)65; CHECK: br %r1466  %conv = call fp128 @llvm.experimental.constrained.uitofp.f128.i64(i64 %i,67                                               metadata !"round.dynamic",68                                               metadata !"fpexcept.strict") #069  store fp128 %conv, ptr %dst70  ret void71}72 73; Test signed f128->i32.74define i32 @f5(ptr %src) #0 {75; CHECK-LABEL: f5:76; CHECK: vl %v0, 0(%r2)77; CHECK: vrepg %v2, %v0, 178; CHECK: cfxbr %r2, 5, %f079; CHECK: br %r1480  %f = load fp128, ptr %src81  %conv = call i32 @llvm.experimental.constrained.fptosi.i32.f128(fp128 %f,82                                               metadata !"fpexcept.strict") #083  ret i32 %conv84}85 86; Test signed f128->i64.87define i64 @f6(ptr %src) #0 {88; CHECK-LABEL: f6:89; CHECK: vl %v0, 0(%r2)90; CHECK: vrepg %v2, %v0, 191; CHECK: cgxbr %r2, 5, %f092; CHECK: br %r1493  %f = load fp128, ptr %src94  %conv = call i64 @llvm.experimental.constrained.fptosi.i64.f128(fp128 %f,95                                               metadata !"fpexcept.strict") #096  ret i64 %conv97}98 99; Test unsigned f128->i32.100define i32 @f7(ptr %src) #0 {101; CHECK-LABEL: f7:102; CHECK: vl %v0, 0(%r2)103; CHECK: vrepg %v2, %v0, 1104; CHECK: clfxbr %r2, 5, %f0, 0105; CHECK: br %r14106  %f = load fp128, ptr %src107  %conv = call i32 @llvm.experimental.constrained.fptoui.i32.f128(fp128 %f,108                                               metadata !"fpexcept.strict") #0109  ret i32 %conv110}111 112; Test unsigned f128->i64.113define i64 @f8(ptr %src) #0 {114; CHECK-LABEL: f8:115; CHECK: vl %v0, 0(%r2)116; CHECK: vrepg %v2, %v0, 1117; CHECK: clgxbr %r2, 5, %f0, 0118; CHECK: br %r14119  %f = load fp128, ptr %src120  %conv = call i64 @llvm.experimental.constrained.fptoui.i64.f128(fp128 %f,121                                               metadata !"fpexcept.strict") #0122  ret i64 %conv123}124 125attributes #0 = { strictfp }126