brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · a0455a2 Raw
91 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; Test conversion of floating-point values to unsigned i32s (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-i32 conversions;7; they were added in z196 as the Convert to Logical family of instructions.8; Promoting to i64 doesn't generate an inexact condition for values that are9; outside the i32 range but in the i64 range, so use the default expansion.10 11; Test f16->i32. Converted to signed as the max float value is smaller than12; the signed integer range.13define i32 @f0(half %f) {14; CHECK-LABEL: f0:15; CHECK:       # %bb.0:16; CHECK-NEXT:    stmg %r14, %r15, 112(%r15)17; CHECK-NEXT:    .cfi_offset %r14, -4818; CHECK-NEXT:    .cfi_offset %r15, -4019; CHECK-NEXT:    aghi %r15, -16020; CHECK-NEXT:    .cfi_def_cfa_offset 32021; CHECK-NEXT:    brasl %r14, __extendhfsf2@PLT22; CHECK-NEXT:    cfebr %r2, 5, %f023; CHECK-NEXT:    lmg %r14, %r15, 272(%r15)24; CHECK-NEXT:    br %r1425  %conv = fptoui half %f to i3226  ret i32 %conv27}28 29; Test f32->i32.30define i32 @f1(float %f) {31; CHECK-LABEL: f1:32; CHECK:       # %bb.0:33; CHECK-NEXT:    larl %r1, .LCPI1_034; CHECK-NEXT:    le %f1, 0(%r1)35; CHECK-NEXT:    cebr %f0, %f136; CHECK-NEXT:    jnl .LBB1_237; CHECK-NEXT:  # %bb.1:38; CHECK-NEXT:    cfebr %r2, 5, %f039; CHECK-NEXT:    br %r1440; CHECK-NEXT:  .LBB1_2:41; CHECK-NEXT:    sebr %f0, %f142; CHECK-NEXT:    cfebr %r2, 5, %f043; CHECK-NEXT:    xilf %r2, 214748364844; CHECK-NEXT:    br %r1445  %conv = fptoui float %f to i3246  ret i32 %conv47}48 49; Test f64->i32.50define i32 @f2(double %f) {51; CHECK-LABEL: f2:52; CHECK:       # %bb.0:53; CHECK-NEXT:    larl %r1, .LCPI2_054; CHECK-NEXT:    ld %f1, 0(%r1)55; CHECK-NEXT:    cdbr %f0, %f156; CHECK-NEXT:    jnl .LBB2_257; CHECK-NEXT:  # %bb.1:58; CHECK-NEXT:    cfdbr %r2, 5, %f059; CHECK-NEXT:    br %r1460; CHECK-NEXT:  .LBB2_2:61; CHECK-NEXT:    sdbr %f0, %f162; CHECK-NEXT:    cfdbr %r2, 5, %f063; CHECK-NEXT:    xilf %r2, 214748364864; CHECK-NEXT:    br %r1465  %conv = fptoui double %f to i3266  ret i32 %conv67}68 69; Test f128->i32.70define i32 @f3(ptr %src) {71; CHECK-LABEL: f3:72; CHECK:       # %bb.0:73; CHECK-NEXT:    ld %f0, 0(%r2)74; CHECK-NEXT:    ld %f2, 8(%r2)75; CHECK-NEXT:    larl %r1, .LCPI3_076; CHECK-NEXT:    lxeb %f1, 0(%r1)77; CHECK-NEXT:    cxbr %f0, %f178; CHECK-NEXT:    jnl .LBB3_279; CHECK-NEXT:  # %bb.1:80; CHECK-NEXT:    cfxbr %r2, 5, %f081; CHECK-NEXT:    br %r1482; CHECK-NEXT:  .LBB3_2:83; CHECK-NEXT:    sxbr %f0, %f184; CHECK-NEXT:    cfxbr %r2, 5, %f085; CHECK-NEXT:    xilf %r2, 214748364886; CHECK-NEXT:    br %r1487  %f = load fp128, ptr %src88  %conv = fptoui fp128 %f to i3289  ret i32 %conv90}91