180 lines · plain
1; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-linux-gnu -O0 < %s | FileCheck %s2 3@ld = common global ppc_fp128 0xM00000000000000000000000000000000, align 164@ld2 = common global ppc_fp128 0xM00000000000000000000000000000000, align 165@d = common global double 0.000000e+00, align 86@f = common global float 0.000000e+00, align 47@i = common global i32 0, align 48@ui = common global i32 0, align 49@var = common global i8 0, align 110 11define void @foo() #0 {12entry:13 %c = alloca ppc_fp128, align 1614 %0 = load ppc_fp128, ptr @ld, align 1615 %1 = load ppc_fp128, ptr @ld2, align 1616 %add = fadd ppc_fp128 %0, %117 store volatile ppc_fp128 %add, ptr %c, align 1618 %2 = load ppc_fp128, ptr @ld, align 1619 %3 = load ppc_fp128, ptr @ld2, align 1620 %sub = fsub ppc_fp128 %2, %321 store volatile ppc_fp128 %sub, ptr %c, align 1622 %4 = load ppc_fp128, ptr @ld, align 1623 %5 = load ppc_fp128, ptr @ld2, align 1624 %mul = fmul ppc_fp128 %4, %525 store volatile ppc_fp128 %mul, ptr %c, align 1626 %6 = load ppc_fp128, ptr @ld, align 1627 %7 = load ppc_fp128, ptr @ld2, align 1628 %div = fdiv ppc_fp128 %6, %729 store volatile ppc_fp128 %div, ptr %c, align 1630 ret void31 32 ; CHECK-LABEL: __gcc_qadd33 ; CHECK-LABEL: __gcc_qsub34 ; CHECK-LABEL: __gcc_qmul35 ; CHECK-LABEL: __gcc_qdiv36}37 38define void @foo1() #0 {39entry:40 %0 = load double, ptr @d, align 841 %conv = fpext double %0 to ppc_fp12842 store ppc_fp128 %conv, ptr @ld, align 1643 ret void44 45 ; CHECK-LABEL: __gcc_dtoq46}47 48define void @foo2() #0 {49entry:50 %0 = load ppc_fp128, ptr @ld, align 1651 %conv = fptrunc ppc_fp128 %0 to double52 store double %conv, ptr @d, align 853 ret void54 55 ; CHECK-LABEL: __gcc_qtod56}57 58define void @foo3() #0 {59entry:60 %0 = load ppc_fp128, ptr @ld, align 1661 %conv = fptrunc ppc_fp128 %0 to float62 store float %conv, ptr @f, align 463 ret void64 65 ; CHECK-LABEL: __gcc_qtos66}67 68define void @foo4() #0 {69entry:70 %0 = load i32, ptr @i, align 471 %conv = sitofp i32 %0 to ppc_fp12872 store ppc_fp128 %conv, ptr @ld, align 1673 ret void74 75 ; CHECK-LABEL: __gcc_itoq76}77 78define void @foo5() #0 {79entry:80 %0 = load i32, ptr @ui, align 481 %conv = uitofp i32 %0 to ppc_fp12882 store ppc_fp128 %conv, ptr @ld, align 1683 ret void84 85 ; CHECK-LABEL: __gcc_utoq86}87 88define void @foo6() #0 {89entry:90 %0 = load ppc_fp128, ptr @ld, align 1691 %1 = load ppc_fp128, ptr @ld2, align 1692 %cmp = fcmp oeq ppc_fp128 %0, %193 %conv = zext i1 %cmp to i3294 %conv1 = trunc i32 %conv to i895 store i8 %conv1, ptr @var, align 196 ret void97 98 ; CHECK-LABEL: __gcc_qeq99}100 101define void @foo7() #0 {102entry:103 %0 = load ppc_fp128, ptr @ld, align 16104 %1 = load ppc_fp128, ptr @ld2, align 16105 %cmp = fcmp une ppc_fp128 %0, %1106 %conv = zext i1 %cmp to i32107 %conv1 = trunc i32 %conv to i8108 store i8 %conv1, ptr @var, align 1109 ret void110 111 ; CHECK-LABEL: __gcc_qne112}113 114define void @foo8() #0 {115entry:116 %0 = load ppc_fp128, ptr @ld, align 16117 %1 = load ppc_fp128, ptr @ld2, align 16118 %cmp = fcmp ogt ppc_fp128 %0, %1119 %conv = zext i1 %cmp to i32120 %conv1 = trunc i32 %conv to i8121 store i8 %conv1, ptr @var, align 1122 ret void123 124 ; CHECK-LABEL: __gcc_qgt125}126 127define void @foo9() #0 {128entry:129 %0 = load ppc_fp128, ptr @ld, align 16130 %1 = load ppc_fp128, ptr @ld2, align 16131 %cmp = fcmp olt ppc_fp128 %0, %1132 %conv = zext i1 %cmp to i32133 %conv1 = trunc i32 %conv to i8134 store i8 %conv1, ptr @var, align 1135 ret void136 137 ; CHECK-LABEL: __gcc_qlt138}139 140define void @foo10() #0 {141entry:142 %0 = load ppc_fp128, ptr @ld, align 16143 %1 = load ppc_fp128, ptr @ld2, align 16144 %cmp = fcmp ole ppc_fp128 %0, %1145 %conv = zext i1 %cmp to i32146 %conv1 = trunc i32 %conv to i8147 store i8 %conv1, ptr @var, align 1148 ret void149 150 ; CHECK-LABEL: __gcc_qle151}152 153define void @foo11() #0 {154entry:155 %0 = load ppc_fp128, ptr @ld, align 16156 %1 = load ppc_fp128, ptr @ld, align 16157 %cmp = fcmp une ppc_fp128 %0, %1158 %conv = zext i1 %cmp to i32159 %conv1 = trunc i32 %conv to i8160 store i8 %conv1, ptr @var, align 1161 ret void162 163 ; CHECK-LABEL: __gcc_qunord164}165 166define void @foo12() #0 {167entry:168 %0 = load ppc_fp128, ptr @ld, align 16169 %1 = load ppc_fp128, ptr @ld2, align 16170 %cmp = fcmp oge ppc_fp128 %0, %1171 %conv = zext i1 %cmp to i32172 %conv1 = trunc i32 %conv to i8173 store i8 %conv1, ptr @var, align 1174 ret void175 176 ; CHECK-LABEL: __gcc_qge177}178 179attributes #0 = { "use-soft-float"="true" }180