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