1*563e8479SJonas Paulsson; RUN: llc -mcpu=z10 -mattr=soft-float -O0 < %s | FileCheck %s 2*563e8479SJonas Paulsson 3*563e8479SJonas Paulsson; Arithmetic functions 4*563e8479SJonas Paulsson 5*563e8479SJonas Paulssondefine float @test_addsf3(float %a, float %b) { 6*563e8479SJonas Paulsson ; CHECK-LABEL: test_addsf3: 7*563e8479SJonas Paulsson ; CHECK: brasl %r14, __addsf3 8*563e8479SJonas Paulsson %add = fadd float %a, %b 9*563e8479SJonas Paulsson ret float %add 10*563e8479SJonas Paulsson} 11*563e8479SJonas Paulsson 12*563e8479SJonas Paulssondefine double @test_adddf3(double %a, double %b) { 13*563e8479SJonas Paulsson ; CHECK-LABEL: test_adddf3: 14*563e8479SJonas Paulsson ; CHECK: brasl %r14, __adddf3 15*563e8479SJonas Paulsson %add = fadd double %a, %b 16*563e8479SJonas Paulsson ret double %add 17*563e8479SJonas Paulsson} 18*563e8479SJonas Paulsson 19*563e8479SJonas Paulssondefine fp128 @test_addtf3(fp128 %a, fp128 %b) { 20*563e8479SJonas Paulsson ; CHECK-LABEL: test_addtf3: 21*563e8479SJonas Paulsson ; CHECK: brasl %r14, __addtf3 22*563e8479SJonas Paulsson %add = fadd fp128 %a, %b 23*563e8479SJonas Paulsson ret fp128 %add 24*563e8479SJonas Paulsson} 25*563e8479SJonas Paulsson 26*563e8479SJonas Paulssondefine float @test_mulsf3(float %a, float %b) { 27*563e8479SJonas Paulsson ; CHECK-LABEL: test_mulsf3: 28*563e8479SJonas Paulsson ; CHECK: brasl %r14, __mulsf3 29*563e8479SJonas Paulsson %mul = fmul float %a, %b 30*563e8479SJonas Paulsson ret float %mul 31*563e8479SJonas Paulsson} 32*563e8479SJonas Paulsson 33*563e8479SJonas Paulssondefine double @test_muldf3(double %a, double %b) { 34*563e8479SJonas Paulsson ; CHECK-LABEL: test_muldf3: 35*563e8479SJonas Paulsson ; CHECK: brasl %r14, __muldf3 36*563e8479SJonas Paulsson %mul = fmul double %a, %b 37*563e8479SJonas Paulsson ret double %mul 38*563e8479SJonas Paulsson} 39*563e8479SJonas Paulsson 40*563e8479SJonas Paulssondefine fp128 @test_multf3(fp128 %a, fp128 %b) { 41*563e8479SJonas Paulsson ; CHECK-LABEL: test_multf3: 42*563e8479SJonas Paulsson ; CHECK: brasl %r14, __multf3 43*563e8479SJonas Paulsson %mul = fmul fp128 %a, %b 44*563e8479SJonas Paulsson ret fp128 %mul 45*563e8479SJonas Paulsson} 46*563e8479SJonas Paulsson 47*563e8479SJonas Paulssondefine float @test_subsf3(float %a, float %b) { 48*563e8479SJonas Paulsson ; CHECK-LABEL: test_subsf3: 49*563e8479SJonas Paulsson ; CHECK: brasl %r14, __subsf3 50*563e8479SJonas Paulsson %sub = fsub float %a, %b 51*563e8479SJonas Paulsson ret float %sub 52*563e8479SJonas Paulsson} 53*563e8479SJonas Paulsson 54*563e8479SJonas Paulssondefine double @test_subdf3(double %a, double %b) { 55*563e8479SJonas Paulsson ; CHECK-LABEL: test_subdf3: 56*563e8479SJonas Paulsson ; CHECK: brasl %r14, __subdf3 57*563e8479SJonas Paulsson %sub = fsub double %a, %b 58*563e8479SJonas Paulsson ret double %sub 59*563e8479SJonas Paulsson} 60*563e8479SJonas Paulsson 61*563e8479SJonas Paulssondefine fp128 @test_subtf3(fp128 %a, fp128 %b) { 62*563e8479SJonas Paulsson ; CHECK-LABEL: test_subtf3: 63*563e8479SJonas Paulsson ; CHECK: brasl %r14, __subtf3 64*563e8479SJonas Paulsson %sub = fsub fp128 %a, %b 65*563e8479SJonas Paulsson ret fp128 %sub 66*563e8479SJonas Paulsson} 67*563e8479SJonas Paulsson 68*563e8479SJonas Paulssondefine float @test_divsf3(float %a, float %b) { 69*563e8479SJonas Paulsson ; CHECK-LABEL: test_divsf3: 70*563e8479SJonas Paulsson ; CHECK: brasl %r14, __divsf3 71*563e8479SJonas Paulsson %div = fdiv float %a, %b 72*563e8479SJonas Paulsson ret float %div 73*563e8479SJonas Paulsson} 74*563e8479SJonas Paulsson 75*563e8479SJonas Paulssondefine double @test_divdf3(double %a, double %b) { 76*563e8479SJonas Paulsson ; CHECK-LABEL: test_divdf3: 77*563e8479SJonas Paulsson ; CHECK: brasl %r14, __divdf3 78*563e8479SJonas Paulsson %div = fdiv double %a, %b 79*563e8479SJonas Paulsson ret double %div 80*563e8479SJonas Paulsson} 81*563e8479SJonas Paulsson 82*563e8479SJonas Paulssondefine fp128 @test_divtf3(fp128 %a, fp128 %b) { 83*563e8479SJonas Paulsson ; CHECK-LABEL: test_divtf3: 84*563e8479SJonas Paulsson ; CHECK: brasl %r14, __divtf3 85*563e8479SJonas Paulsson %div = fdiv fp128 %a, %b 86*563e8479SJonas Paulsson ret fp128 %div 87*563e8479SJonas Paulsson} 88*563e8479SJonas Paulsson 89*563e8479SJonas Paulsson; Comparison functions 90*563e8479SJonas Paulssondefine i1 @test_unordsf2(float %a, float %b) { 91*563e8479SJonas Paulsson ; CHECK-LABEL: test_unordsf2: 92*563e8479SJonas Paulsson ; CHECK: brasl %r14, __unordsf2 93*563e8479SJonas Paulsson %cmp = fcmp uno float %a, %b 94*563e8479SJonas Paulsson ret i1 %cmp 95*563e8479SJonas Paulsson} 96*563e8479SJonas Paulsson 97*563e8479SJonas Paulssondefine i1 @test_unorddf2(double %a, double %b) { 98*563e8479SJonas Paulsson ; CHECK-LABEL: test_unorddf2: 99*563e8479SJonas Paulsson ; CHECK: brasl %r14, __unorddf2 100*563e8479SJonas Paulsson %cmp = fcmp uno double %a, %b 101*563e8479SJonas Paulsson ret i1 %cmp 102*563e8479SJonas Paulsson} 103*563e8479SJonas Paulsson 104*563e8479SJonas Paulssondefine i1 @test_unordtf2(fp128 %a, fp128 %b) { 105*563e8479SJonas Paulsson ; CHECK-LABEL: test_unordtf2: 106*563e8479SJonas Paulsson ; CHECK: brasl %r14, __unordtf2 107*563e8479SJonas Paulsson %cmp = fcmp uno fp128 %a, %b 108*563e8479SJonas Paulsson ret i1 %cmp 109*563e8479SJonas Paulsson} 110*563e8479SJonas Paulsson 111*563e8479SJonas Paulssondefine i1 @test_eqsf2(float %a, float %b) { 112*563e8479SJonas Paulsson ; CHECK-LABEL: test_eqsf2: 113*563e8479SJonas Paulsson ; CHECK: brasl %r14, __eqsf2 114*563e8479SJonas Paulsson %cmp = fcmp oeq float %a, %b 115*563e8479SJonas Paulsson ret i1 %cmp 116*563e8479SJonas Paulsson} 117*563e8479SJonas Paulsson 118*563e8479SJonas Paulssondefine i1 @test_eqdf2(double %a, double %b) { 119*563e8479SJonas Paulsson ; CHECK-LABEL: test_eqdf2: 120*563e8479SJonas Paulsson ; CHECK: brasl %r14, __eqdf2 121*563e8479SJonas Paulsson %cmp = fcmp oeq double %a, %b 122*563e8479SJonas Paulsson ret i1 %cmp 123*563e8479SJonas Paulsson} 124*563e8479SJonas Paulsson 125*563e8479SJonas Paulssondefine i1 @test_eqtf2(fp128 %a, fp128 %b) { 126*563e8479SJonas Paulsson ; CHECK-LABEL: test_eqtf2: 127*563e8479SJonas Paulsson ; CHECK: brasl %r14, __eqtf2 128*563e8479SJonas Paulsson %cmp = fcmp oeq fp128 %a, %b 129*563e8479SJonas Paulsson ret i1 %cmp 130*563e8479SJonas Paulsson} 131*563e8479SJonas Paulsson 132*563e8479SJonas Paulssondefine i1 @test_nesf2(float %a, float %b) { 133*563e8479SJonas Paulsson ; CHECK-LABEL: test_nesf2: 134*563e8479SJonas Paulsson ; CHECK: brasl %r14, __nesf2 135*563e8479SJonas Paulsson %cmp = fcmp une float %a, %b 136*563e8479SJonas Paulsson ret i1 %cmp 137*563e8479SJonas Paulsson} 138*563e8479SJonas Paulsson 139*563e8479SJonas Paulssondefine i1 @test_nedf2(double %a, double %b) { 140*563e8479SJonas Paulsson ; CHECK-LABEL: test_nedf2: 141*563e8479SJonas Paulsson ; CHECK: brasl %r14, __nedf2 142*563e8479SJonas Paulsson %cmp = fcmp une double %a, %b 143*563e8479SJonas Paulsson ret i1 %cmp 144*563e8479SJonas Paulsson} 145*563e8479SJonas Paulsson 146*563e8479SJonas Paulssondefine i1 @test_netf2(fp128 %a, fp128 %b) { 147*563e8479SJonas Paulsson ; CHECK-LABEL: test_netf2: 148*563e8479SJonas Paulsson ; CHECK: brasl %r14, __netf2 149*563e8479SJonas Paulsson %cmp = fcmp une fp128 %a, %b 150*563e8479SJonas Paulsson ret i1 %cmp 151*563e8479SJonas Paulsson} 152*563e8479SJonas Paulsson 153*563e8479SJonas Paulssondefine i1 @test_gesf2(float %a, float %b) { 154*563e8479SJonas Paulsson ; CHECK-LABEL: test_gesf2: 155*563e8479SJonas Paulsson ; CHECK: brasl %r14, __gesf2 156*563e8479SJonas Paulsson %cmp = fcmp oge float %a, %b 157*563e8479SJonas Paulsson ret i1 %cmp 158*563e8479SJonas Paulsson} 159*563e8479SJonas Paulsson 160*563e8479SJonas Paulssondefine i1 @test_gedf2(double %a, double %b) { 161*563e8479SJonas Paulsson ; CHECK-LABEL: test_gedf2: 162*563e8479SJonas Paulsson ; CHECK: brasl %r14, __gedf2 163*563e8479SJonas Paulsson %cmp = fcmp oge double %a, %b 164*563e8479SJonas Paulsson ret i1 %cmp 165*563e8479SJonas Paulsson} 166*563e8479SJonas Paulsson 167*563e8479SJonas Paulssondefine i1 @test_getf2(fp128 %a, fp128 %b) { 168*563e8479SJonas Paulsson ; CHECK-LABEL: test_getf2: 169*563e8479SJonas Paulsson ; CHECK: brasl %r14, __getf2 170*563e8479SJonas Paulsson %cmp = fcmp oge fp128 %a, %b 171*563e8479SJonas Paulsson ret i1 %cmp 172*563e8479SJonas Paulsson} 173*563e8479SJonas Paulsson 174*563e8479SJonas Paulssondefine i1 @test_ltsf2(float %a, float %b) { 175*563e8479SJonas Paulsson ; CHECK-LABEL: test_ltsf2: 176*563e8479SJonas Paulsson ; CHECK: brasl %r14, __ltsf2 177*563e8479SJonas Paulsson %cmp = fcmp olt float %a, %b 178*563e8479SJonas Paulsson ret i1 %cmp 179*563e8479SJonas Paulsson} 180*563e8479SJonas Paulsson 181*563e8479SJonas Paulssondefine i1 @test_ltdf2(double %a, double %b) { 182*563e8479SJonas Paulsson ; CHECK-LABEL: test_ltdf2: 183*563e8479SJonas Paulsson ; CHECK: brasl %r14, __ltdf2 184*563e8479SJonas Paulsson %cmp = fcmp olt double %a, %b 185*563e8479SJonas Paulsson ret i1 %cmp 186*563e8479SJonas Paulsson} 187*563e8479SJonas Paulsson 188*563e8479SJonas Paulssondefine i1 @test_lttf2(fp128 %a, fp128 %b) { 189*563e8479SJonas Paulsson ; CHECK-LABEL: test_lttf2: 190*563e8479SJonas Paulsson ; CHECK: brasl %r14, __lttf2 191*563e8479SJonas Paulsson %cmp = fcmp olt fp128 %a, %b 192*563e8479SJonas Paulsson ret i1 %cmp 193*563e8479SJonas Paulsson} 194*563e8479SJonas Paulsson 195*563e8479SJonas Paulssondefine i1 @test_lesf2(float %a, float %b) { 196*563e8479SJonas Paulsson ; CHECK-LABEL: test_lesf2: 197*563e8479SJonas Paulsson ; CHECK: brasl %r14, __lesf2 198*563e8479SJonas Paulsson %cmp = fcmp ole float %a, %b 199*563e8479SJonas Paulsson ret i1 %cmp 200*563e8479SJonas Paulsson} 201*563e8479SJonas Paulsson 202*563e8479SJonas Paulssondefine i1 @test_ledf2(double %a, double %b) { 203*563e8479SJonas Paulsson ; CHECK-LABEL: test_ledf2: 204*563e8479SJonas Paulsson ; CHECK: brasl %r14, __ledf2 205*563e8479SJonas Paulsson %cmp = fcmp ole double %a, %b 206*563e8479SJonas Paulsson ret i1 %cmp 207*563e8479SJonas Paulsson} 208*563e8479SJonas Paulsson 209*563e8479SJonas Paulssondefine i1 @test_letf2(fp128 %a, fp128 %b) { 210*563e8479SJonas Paulsson ; CHECK-LABEL: test_letf2: 211*563e8479SJonas Paulsson ; CHECK: brasl %r14, __letf2 212*563e8479SJonas Paulsson %cmp = fcmp ole fp128 %a, %b 213*563e8479SJonas Paulsson ret i1 %cmp 214*563e8479SJonas Paulsson} 215*563e8479SJonas Paulsson 216*563e8479SJonas Paulssondefine i1 @test_gtsf2(float %a, float %b) { 217*563e8479SJonas Paulsson ; CHECK-LABEL: test_gtsf2: 218*563e8479SJonas Paulsson ; CHECK: brasl %r14, __gtsf2 219*563e8479SJonas Paulsson %cmp = fcmp ogt float %a, %b 220*563e8479SJonas Paulsson ret i1 %cmp 221*563e8479SJonas Paulsson} 222*563e8479SJonas Paulsson 223*563e8479SJonas Paulssondefine i1 @test_gtdf2(double %a, double %b) { 224*563e8479SJonas Paulsson ; CHECK-LABEL: test_gtdf2: 225*563e8479SJonas Paulsson ; CHECK: brasl %r14, __gtdf2 226*563e8479SJonas Paulsson %cmp = fcmp ogt double %a, %b 227*563e8479SJonas Paulsson ret i1 %cmp 228*563e8479SJonas Paulsson} 229*563e8479SJonas Paulsson 230*563e8479SJonas Paulssondefine i1 @test_gttf2(fp128 %a, fp128 %b) { 231*563e8479SJonas Paulsson ; CHECK-LABEL: test_gttf2: 232*563e8479SJonas Paulsson ; CHECK: brasl %r14, __gttf2 233*563e8479SJonas Paulsson %cmp = fcmp ogt fp128 %a, %b 234*563e8479SJonas Paulsson ret i1 %cmp 235*563e8479SJonas Paulsson} 236