44 lines · plain
1; Test conversions of signed i32s to floating-point values.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s4 5; Check i32->f16.6define half @f0(i32 %i) {7; CHECK-LABEL: f0:8; CHECK: cefbr %f0, %r29; CHECK-NEXT: brasl %r14, __truncsfhf2@PLT10; CHECK: br %r1411 %conv = sitofp i32 %i to half12 ret half %conv13}14 15; Check i32->f32.16define float @f1(i32 %i) {17; CHECK-LABEL: f1:18; CHECK: cefbr %f0, %r219; CHECK: br %r1420 %conv = sitofp i32 %i to float21 ret float %conv22}23 24; Check i32->f64.25define double @f2(i32 %i) {26; CHECK-LABEL: f2:27; CHECK: cdfbr %f0, %r228; CHECK: br %r1429 %conv = sitofp i32 %i to double30 ret double %conv31}32 33; Check i32->f128.34define void @f3(i32 %i, ptr %dst) {35; CHECK-LABEL: f3:36; CHECK: cxfbr %f0, %r237; CHECK: std %f0, 0(%r3)38; CHECK: std %f2, 8(%r3)39; CHECK: br %r1440 %conv = sitofp i32 %i to fp12841 store fp128 %conv, ptr %dst42 ret void43}44