79 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mcpu=ppc32 -mtriple=powerpc-unknown-linux-gnu < %s | FileCheck %s3 4define double @test(i1 %X) {5; CHECK-LABEL: test:6; CHECK: # %bb.0:7; CHECK-NEXT: andi. 3, 3, 18; CHECK-NEXT: bc 12, 1, .LBB0_29; CHECK-NEXT: # %bb.1:10; CHECK-NEXT: li 3, .LCPI0_0@l11; CHECK-NEXT: addis 3, 3, .LCPI0_0@ha12; CHECK-NEXT: lfs 1, 0(3)13; CHECK-NEXT: blr14; CHECK-NEXT: .LBB0_2:15; CHECK-NEXT: li 3, .LCPI0_1@l16; CHECK-NEXT: addis 3, 3, .LCPI0_1@ha17; CHECK-NEXT: lfs 1, 0(3)18; CHECK-NEXT: blr19 %Y = uitofp i1 %X to double20 ret double %Y21}22 23; Verify the cases won't crash because of missing chains24 25@foo = dso_local global double 0.000000e+00, align 826 27define double @u1tofp(i1 %i, double %d) #0 {28; CHECK-LABEL: u1tofp:29; CHECK: # %bb.0: # %entry30; CHECK-NEXT: andi. 3, 3, 131; CHECK-NEXT: fmr 0, 132; CHECK-NEXT: bc 12, 1, .LBB1_233; CHECK-NEXT: # %bb.1: # %entry34; CHECK-NEXT: li 3, .LCPI1_0@l35; CHECK-NEXT: addis 3, 3, .LCPI1_0@ha36; CHECK-NEXT: b .LBB1_337; CHECK-NEXT: .LBB1_2:38; CHECK-NEXT: li 3, .LCPI1_1@l39; CHECK-NEXT: addis 3, 3, .LCPI1_1@ha40; CHECK-NEXT: .LBB1_3: # %entry41; CHECK-NEXT: lfs 1, 0(3)42; CHECK-NEXT: lis 3, foo@ha43; CHECK-NEXT: stfd 0, foo@l(3)44; CHECK-NEXT: blr45entry:46 %conv = tail call double @llvm.experimental.constrained.uitofp.f64.i1(i1 %i, metadata !"round.dynamic", metadata !"fpexcept.strict") #047 store volatile double %d, ptr @foo, align 848 ret double %conv49}50 51define double @s1tofp(i1 %i, double %d) #0 {52; CHECK-LABEL: s1tofp:53; CHECK: # %bb.0: # %entry54; CHECK-NEXT: andi. 3, 3, 155; CHECK-NEXT: fmr 0, 156; CHECK-NEXT: bc 12, 1, .LBB2_257; CHECK-NEXT: # %bb.1: # %entry58; CHECK-NEXT: li 3, .LCPI2_0@l59; CHECK-NEXT: addis 3, 3, .LCPI2_0@ha60; CHECK-NEXT: b .LBB2_361; CHECK-NEXT: .LBB2_2:62; CHECK-NEXT: li 3, .LCPI2_1@l63; CHECK-NEXT: addis 3, 3, .LCPI2_1@ha64; CHECK-NEXT: .LBB2_3: # %entry65; CHECK-NEXT: lfs 1, 0(3)66; CHECK-NEXT: lis 3, foo@ha67; CHECK-NEXT: stfd 0, foo@l(3)68; CHECK-NEXT: blr69entry:70 %conv = tail call double @llvm.experimental.constrained.sitofp.f64.i1(i1 %i, metadata !"round.dynamic", metadata !"fpexcept.strict") #071 store volatile double %d, ptr @foo, align 872 ret double %conv73}74 75declare double @llvm.experimental.constrained.uitofp.f64.i1(i1, metadata, metadata)76declare double @llvm.experimental.constrained.sitofp.f64.i1(i1, metadata, metadata)77 78attributes #0 = { strictfp }79