brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · 58db2e1 Raw
153 lines · plain
1; Test floating-point conversion to/from 128-bit integers.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s4; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s5 6; Test signed i128->f128.7define fp128 @f1(i128 %i) {8; CHECK-LABEL: f1:9; CHECK: brasl %r14, __floattitf@PLT10; CHECK: br %r1411  %conv = sitofp i128 %i to fp12812  ret fp128 %conv13}14 15; Test signed i128->f64.16define double @f2(i128 %i) {17; CHECK-LABEL: f2:18; CHECK: brasl %r14, __floattidf@PLT19; CHECK: br %r1420  %conv = sitofp i128 %i to double21  ret double %conv22}23 24; Test signed i128->f32.25define float @f3(i128 %i) {26; CHECK-LABEL: f3:27; CHECK: brasl %r14, __floattisf@PLT28; CHECK: br %r1429  %conv = sitofp i128 %i to float30  ret float %conv31}32 33; Test signed i128->f16.34define half @f4(i128 %i) {35; CHECK-LABEL: f4:36; CHECK: brasl   %r14, __floattisf@PLT37; CHECK: brasl   %r14, __truncsfhf2@PLT38; CHECK: br %r1439  %conv = sitofp i128 %i to half40  ret half %conv41}42 43; Test unsigned i128->f128.44define fp128 @f5(i128 %i) {45; CHECK-LABEL: f5:46; CHECK: brasl %r14, __floatuntitf@PLT47; CHECK: br %r1448  %conv = uitofp i128 %i to fp12849  ret fp128 %conv50}51 52; Test unsigned i128->f64.53define double @f6(i128 %i) {54; CHECK-LABEL: f6:55; CHECK: brasl %r14, __floatuntidf@PLT56; CHECK: br %r1457  %conv = uitofp i128 %i to double58  ret double %conv59}60 61; Test unsigned i128->f32.62define float @f7(i128 %i) {63; CHECK-LABEL: f7:64; CHECK: brasl %r14, __floatuntisf@PLT65; CHECK: br %r1466  %conv = uitofp i128 %i to float67  ret float %conv68}69 70; Test unsigned i128->f16.71define half @f8(i128 %i) {72; CHECK-LABEL: f8:73; CHECK: brasl   %r14, __floatuntisf@PLT74; CHECK: brasl   %r14, __truncsfhf2@PLT75; CHECK: br %r1476  %conv = uitofp i128 %i to half77  ret half %conv78}79 80; Test signed f128->i128.81define i128 @f9(fp128 %f) {82; CHECK-LABEL: f9:83; CHECK: brasl %r14, __fixtfti@PLT84; CHECK: br %r1485  %conv = fptosi fp128 %f to i12886  ret i128 %conv87}88 89; Test signed f64->i128.90define i128 @f10(double %f) {91; CHECK-LABEL: f10:92; CHECK: brasl %r14, __fixdfti@PLT93; CHECK: br %r1494  %conv = fptosi double %f to i12895  ret i128 %conv96}97 98; Test signed f32->i128.99define i128 @f11(float %f) {100; CHECK-LABEL: f11:101; CHECK: brasl %r14, __fixsfti@PLT102; CHECK: br %r14103  %conv = fptosi float %f to i128104  ret i128 %conv105}106 107; Test signed f16->i128.108define i128 @f12(half %f) {109; CHECK-LABEL: f12:110; CHECK: brasl %r14, __extendhfsf2@PLT111; CHECK: brasl %r14, __fixsfti@PLT112; CHECK: br %r14113  %conv = fptosi half %f to i128114  ret i128 %conv115}116 117; Test unsigned f128->i128.118define i128 @f13(fp128 %f) {119; CHECK-LABEL: f13:120; CHECK: brasl %r14, __fixunstfti@PLT121; CHECK: br %r14122  %conv = fptoui fp128 %f to i128123  ret i128 %conv124}125 126; Test unsigned f64->i128.127define i128 @f14(double %f) {128; CHECK-LABEL: f14:129; CHECK: brasl %r14, __fixunsdfti@PLT130; CHECK: br %r14131  %conv = fptoui double %f to i128132  ret i128 %conv133}134 135; Test unsigned f32->i128.136define i128 @f15(float %f) {137; CHECK-LABEL: f15:138; CHECK: brasl %r14, __fixunssfti@PLT139; CHECK: br %r14140  %conv = fptoui float %f to i128141  ret i128 %conv142}143 144; Test unsigned f16->i128.145define i128 @f16(half %f) {146; CHECK-LABEL: f16:147; CHECK: brasl %r14, __extendhfsf2@PLT148; CHECK: brasl %r14, __fixunssfti@PLT149; CHECK: br %r14150  %conv = fptoui half %f to i128151  ret i128 %conv152}153