brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · bb83a67 Raw
90 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; Test conversion of floating-point values to unsigned i64s (z10 only).3;4; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 | FileCheck %s5 6; z10 doesn't have native support for unsigned fp-to-i64 conversions;7; they were added in z196 as the Convert to Logical family of instructions.8; Convert via signed i64s instead.9 10; Test f16->i64. Converted to signed as the max float value is smaller than11; the signed integer range.12define i64 @f0(half %f) {13; CHECK-LABEL: f0:14; CHECK:       # %bb.0:15; CHECK-NEXT:    stmg %r14, %r15, 112(%r15)16; CHECK-NEXT:    .cfi_offset %r14, -4817; CHECK-NEXT:    .cfi_offset %r15, -4018; CHECK-NEXT:    aghi %r15, -16019; CHECK-NEXT:    .cfi_def_cfa_offset 32020; CHECK-NEXT:    brasl %r14, __extendhfsf2@PLT21; CHECK-NEXT:    cgebr %r2, 5, %f022; CHECK-NEXT:    lmg %r14, %r15, 272(%r15)23; CHECK-NEXT:    br %r1424  %conv = fptoui half %f to i6425  ret i64 %conv26}27 28; Test f32->i64.29define i64 @f1(float %f) {30; CHECK-LABEL: f1:31; CHECK:       # %bb.0:32; CHECK-NEXT:    larl %r1, .LCPI1_033; CHECK-NEXT:    le %f1, 0(%r1)34; CHECK-NEXT:    cebr %f0, %f135; CHECK-NEXT:    jnl .LBB1_236; CHECK-NEXT:  # %bb.1:37; CHECK-NEXT:    cgebr %r2, 5, %f038; CHECK-NEXT:    br %r1439; CHECK-NEXT:  .LBB1_2:40; CHECK-NEXT:    sebr %f0, %f141; CHECK-NEXT:    cgebr %r2, 5, %f042; CHECK-NEXT:    xihf %r2, 214748364843; CHECK-NEXT:    br %r1444  %conv = fptoui float %f to i6445  ret i64 %conv46}47 48; Test f64->i64.49define i64 @f2(double %f) {50; CHECK-LABEL: f2:51; CHECK:       # %bb.0:52; CHECK-NEXT:    larl %r1, .LCPI2_053; CHECK-NEXT:    ld %f1, 0(%r1)54; CHECK-NEXT:    cdbr %f0, %f155; CHECK-NEXT:    jnl .LBB2_256; CHECK-NEXT:  # %bb.1:57; CHECK-NEXT:    cgdbr %r2, 5, %f058; CHECK-NEXT:    br %r1459; CHECK-NEXT:  .LBB2_2:60; CHECK-NEXT:    sdbr %f0, %f161; CHECK-NEXT:    cgdbr %r2, 5, %f062; CHECK-NEXT:    xihf %r2, 214748364863; CHECK-NEXT:    br %r1464  %conv = fptoui double %f to i6465  ret i64 %conv66}67 68; Test f128->i64.69define i64 @f3(ptr %src) {70; CHECK-LABEL: f3:71; CHECK:       # %bb.0:72; CHECK-NEXT:    ld %f0, 0(%r2)73; CHECK-NEXT:    ld %f2, 8(%r2)74; CHECK-NEXT:    larl %r1, .LCPI3_075; CHECK-NEXT:    lxeb %f1, 0(%r1)76; CHECK-NEXT:    cxbr %f0, %f177; CHECK-NEXT:    jnl .LBB3_278; CHECK-NEXT:  # %bb.1:79; CHECK-NEXT:    cgxbr %r2, 5, %f080; CHECK-NEXT:    br %r1481; CHECK-NEXT:  .LBB3_2:82; CHECK-NEXT:    sxbr %f0, %f183; CHECK-NEXT:    cgxbr %r2, 5, %f084; CHECK-NEXT:    xihf %r2, 214748364885; CHECK-NEXT:    br %r1486  %f = load fp128, ptr %src87  %conv = fptoui fp128 %f to i6488  ret i64 %conv89}90