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