1*e943329bSJonas Paulsson; RUN: llc -mtriple=s390x-linux-gnu -mcpu=z10 -mattr=soft-float -O0 < %s | FileCheck %s 2563e8479SJonas Paulsson 3563e8479SJonas Paulsson; Arithmetic functions 4563e8479SJonas Paulsson 5563e8479SJonas Paulssondefine float @test_addsf3(float %a, float %b) { 6563e8479SJonas Paulsson ; CHECK-LABEL: test_addsf3: 7563e8479SJonas Paulsson ; CHECK: brasl %r14, __addsf3 8563e8479SJonas Paulsson %add = fadd float %a, %b 9563e8479SJonas Paulsson ret float %add 10563e8479SJonas Paulsson} 11563e8479SJonas Paulsson 12563e8479SJonas Paulssondefine double @test_adddf3(double %a, double %b) { 13563e8479SJonas Paulsson ; CHECK-LABEL: test_adddf3: 14563e8479SJonas Paulsson ; CHECK: brasl %r14, __adddf3 15563e8479SJonas Paulsson %add = fadd double %a, %b 16563e8479SJonas Paulsson ret double %add 17563e8479SJonas Paulsson} 18563e8479SJonas Paulsson 19563e8479SJonas Paulssondefine fp128 @test_addtf3(fp128 %a, fp128 %b) { 20563e8479SJonas Paulsson ; CHECK-LABEL: test_addtf3: 21563e8479SJonas Paulsson ; CHECK: brasl %r14, __addtf3 22563e8479SJonas Paulsson %add = fadd fp128 %a, %b 23563e8479SJonas Paulsson ret fp128 %add 24563e8479SJonas Paulsson} 25563e8479SJonas Paulsson 26563e8479SJonas Paulssondefine float @test_mulsf3(float %a, float %b) { 27563e8479SJonas Paulsson ; CHECK-LABEL: test_mulsf3: 28563e8479SJonas Paulsson ; CHECK: brasl %r14, __mulsf3 29563e8479SJonas Paulsson %mul = fmul float %a, %b 30563e8479SJonas Paulsson ret float %mul 31563e8479SJonas Paulsson} 32563e8479SJonas Paulsson 33563e8479SJonas Paulssondefine double @test_muldf3(double %a, double %b) { 34563e8479SJonas Paulsson ; CHECK-LABEL: test_muldf3: 35563e8479SJonas Paulsson ; CHECK: brasl %r14, __muldf3 36563e8479SJonas Paulsson %mul = fmul double %a, %b 37563e8479SJonas Paulsson ret double %mul 38563e8479SJonas Paulsson} 39563e8479SJonas Paulsson 40563e8479SJonas Paulssondefine fp128 @test_multf3(fp128 %a, fp128 %b) { 41563e8479SJonas Paulsson ; CHECK-LABEL: test_multf3: 42563e8479SJonas Paulsson ; CHECK: brasl %r14, __multf3 43563e8479SJonas Paulsson %mul = fmul fp128 %a, %b 44563e8479SJonas Paulsson ret fp128 %mul 45563e8479SJonas Paulsson} 46563e8479SJonas Paulsson 47563e8479SJonas Paulssondefine float @test_subsf3(float %a, float %b) { 48563e8479SJonas Paulsson ; CHECK-LABEL: test_subsf3: 49563e8479SJonas Paulsson ; CHECK: brasl %r14, __subsf3 50563e8479SJonas Paulsson %sub = fsub float %a, %b 51563e8479SJonas Paulsson ret float %sub 52563e8479SJonas Paulsson} 53563e8479SJonas Paulsson 54563e8479SJonas Paulssondefine double @test_subdf3(double %a, double %b) { 55563e8479SJonas Paulsson ; CHECK-LABEL: test_subdf3: 56563e8479SJonas Paulsson ; CHECK: brasl %r14, __subdf3 57563e8479SJonas Paulsson %sub = fsub double %a, %b 58563e8479SJonas Paulsson ret double %sub 59563e8479SJonas Paulsson} 60563e8479SJonas Paulsson 61563e8479SJonas Paulssondefine fp128 @test_subtf3(fp128 %a, fp128 %b) { 62563e8479SJonas Paulsson ; CHECK-LABEL: test_subtf3: 63563e8479SJonas Paulsson ; CHECK: brasl %r14, __subtf3 64563e8479SJonas Paulsson %sub = fsub fp128 %a, %b 65563e8479SJonas Paulsson ret fp128 %sub 66563e8479SJonas Paulsson} 67563e8479SJonas Paulsson 68563e8479SJonas Paulssondefine float @test_divsf3(float %a, float %b) { 69563e8479SJonas Paulsson ; CHECK-LABEL: test_divsf3: 70563e8479SJonas Paulsson ; CHECK: brasl %r14, __divsf3 71563e8479SJonas Paulsson %div = fdiv float %a, %b 72563e8479SJonas Paulsson ret float %div 73563e8479SJonas Paulsson} 74563e8479SJonas Paulsson 75563e8479SJonas Paulssondefine double @test_divdf3(double %a, double %b) { 76563e8479SJonas Paulsson ; CHECK-LABEL: test_divdf3: 77563e8479SJonas Paulsson ; CHECK: brasl %r14, __divdf3 78563e8479SJonas Paulsson %div = fdiv double %a, %b 79563e8479SJonas Paulsson ret double %div 80563e8479SJonas Paulsson} 81563e8479SJonas Paulsson 82563e8479SJonas Paulssondefine fp128 @test_divtf3(fp128 %a, fp128 %b) { 83563e8479SJonas Paulsson ; CHECK-LABEL: test_divtf3: 84563e8479SJonas Paulsson ; CHECK: brasl %r14, __divtf3 85563e8479SJonas Paulsson %div = fdiv fp128 %a, %b 86563e8479SJonas Paulsson ret fp128 %div 87563e8479SJonas Paulsson} 88563e8479SJonas Paulsson 89563e8479SJonas Paulsson; Comparison functions 90563e8479SJonas Paulssondefine i1 @test_unordsf2(float %a, float %b) { 91563e8479SJonas Paulsson ; CHECK-LABEL: test_unordsf2: 92563e8479SJonas Paulsson ; CHECK: brasl %r14, __unordsf2 93563e8479SJonas Paulsson %cmp = fcmp uno float %a, %b 94563e8479SJonas Paulsson ret i1 %cmp 95563e8479SJonas Paulsson} 96563e8479SJonas Paulsson 97563e8479SJonas Paulssondefine i1 @test_unorddf2(double %a, double %b) { 98563e8479SJonas Paulsson ; CHECK-LABEL: test_unorddf2: 99563e8479SJonas Paulsson ; CHECK: brasl %r14, __unorddf2 100563e8479SJonas Paulsson %cmp = fcmp uno double %a, %b 101563e8479SJonas Paulsson ret i1 %cmp 102563e8479SJonas Paulsson} 103563e8479SJonas Paulsson 104563e8479SJonas Paulssondefine i1 @test_unordtf2(fp128 %a, fp128 %b) { 105563e8479SJonas Paulsson ; CHECK-LABEL: test_unordtf2: 106563e8479SJonas Paulsson ; CHECK: brasl %r14, __unordtf2 107563e8479SJonas Paulsson %cmp = fcmp uno fp128 %a, %b 108563e8479SJonas Paulsson ret i1 %cmp 109563e8479SJonas Paulsson} 110563e8479SJonas Paulsson 111563e8479SJonas Paulssondefine i1 @test_eqsf2(float %a, float %b) { 112563e8479SJonas Paulsson ; CHECK-LABEL: test_eqsf2: 113563e8479SJonas Paulsson ; CHECK: brasl %r14, __eqsf2 114563e8479SJonas Paulsson %cmp = fcmp oeq float %a, %b 115563e8479SJonas Paulsson ret i1 %cmp 116563e8479SJonas Paulsson} 117563e8479SJonas Paulsson 118563e8479SJonas Paulssondefine i1 @test_eqdf2(double %a, double %b) { 119563e8479SJonas Paulsson ; CHECK-LABEL: test_eqdf2: 120563e8479SJonas Paulsson ; CHECK: brasl %r14, __eqdf2 121563e8479SJonas Paulsson %cmp = fcmp oeq double %a, %b 122563e8479SJonas Paulsson ret i1 %cmp 123563e8479SJonas Paulsson} 124563e8479SJonas Paulsson 125563e8479SJonas Paulssondefine i1 @test_eqtf2(fp128 %a, fp128 %b) { 126563e8479SJonas Paulsson ; CHECK-LABEL: test_eqtf2: 127563e8479SJonas Paulsson ; CHECK: brasl %r14, __eqtf2 128563e8479SJonas Paulsson %cmp = fcmp oeq fp128 %a, %b 129563e8479SJonas Paulsson ret i1 %cmp 130563e8479SJonas Paulsson} 131563e8479SJonas Paulsson 132563e8479SJonas Paulssondefine i1 @test_nesf2(float %a, float %b) { 133563e8479SJonas Paulsson ; CHECK-LABEL: test_nesf2: 134563e8479SJonas Paulsson ; CHECK: brasl %r14, __nesf2 135563e8479SJonas Paulsson %cmp = fcmp une float %a, %b 136563e8479SJonas Paulsson ret i1 %cmp 137563e8479SJonas Paulsson} 138563e8479SJonas Paulsson 139563e8479SJonas Paulssondefine i1 @test_nedf2(double %a, double %b) { 140563e8479SJonas Paulsson ; CHECK-LABEL: test_nedf2: 141563e8479SJonas Paulsson ; CHECK: brasl %r14, __nedf2 142563e8479SJonas Paulsson %cmp = fcmp une double %a, %b 143563e8479SJonas Paulsson ret i1 %cmp 144563e8479SJonas Paulsson} 145563e8479SJonas Paulsson 146563e8479SJonas Paulssondefine i1 @test_netf2(fp128 %a, fp128 %b) { 147563e8479SJonas Paulsson ; CHECK-LABEL: test_netf2: 148563e8479SJonas Paulsson ; CHECK: brasl %r14, __netf2 149563e8479SJonas Paulsson %cmp = fcmp une fp128 %a, %b 150563e8479SJonas Paulsson ret i1 %cmp 151563e8479SJonas Paulsson} 152563e8479SJonas Paulsson 153563e8479SJonas Paulssondefine i1 @test_gesf2(float %a, float %b) { 154563e8479SJonas Paulsson ; CHECK-LABEL: test_gesf2: 155563e8479SJonas Paulsson ; CHECK: brasl %r14, __gesf2 156563e8479SJonas Paulsson %cmp = fcmp oge float %a, %b 157563e8479SJonas Paulsson ret i1 %cmp 158563e8479SJonas Paulsson} 159563e8479SJonas Paulsson 160563e8479SJonas Paulssondefine i1 @test_gedf2(double %a, double %b) { 161563e8479SJonas Paulsson ; CHECK-LABEL: test_gedf2: 162563e8479SJonas Paulsson ; CHECK: brasl %r14, __gedf2 163563e8479SJonas Paulsson %cmp = fcmp oge double %a, %b 164563e8479SJonas Paulsson ret i1 %cmp 165563e8479SJonas Paulsson} 166563e8479SJonas Paulsson 167563e8479SJonas Paulssondefine i1 @test_getf2(fp128 %a, fp128 %b) { 168563e8479SJonas Paulsson ; CHECK-LABEL: test_getf2: 169563e8479SJonas Paulsson ; CHECK: brasl %r14, __getf2 170563e8479SJonas Paulsson %cmp = fcmp oge fp128 %a, %b 171563e8479SJonas Paulsson ret i1 %cmp 172563e8479SJonas Paulsson} 173563e8479SJonas Paulsson 174563e8479SJonas Paulssondefine i1 @test_ltsf2(float %a, float %b) { 175563e8479SJonas Paulsson ; CHECK-LABEL: test_ltsf2: 176563e8479SJonas Paulsson ; CHECK: brasl %r14, __ltsf2 177563e8479SJonas Paulsson %cmp = fcmp olt float %a, %b 178563e8479SJonas Paulsson ret i1 %cmp 179563e8479SJonas Paulsson} 180563e8479SJonas Paulsson 181563e8479SJonas Paulssondefine i1 @test_ltdf2(double %a, double %b) { 182563e8479SJonas Paulsson ; CHECK-LABEL: test_ltdf2: 183563e8479SJonas Paulsson ; CHECK: brasl %r14, __ltdf2 184563e8479SJonas Paulsson %cmp = fcmp olt double %a, %b 185563e8479SJonas Paulsson ret i1 %cmp 186563e8479SJonas Paulsson} 187563e8479SJonas Paulsson 188563e8479SJonas Paulssondefine i1 @test_lttf2(fp128 %a, fp128 %b) { 189563e8479SJonas Paulsson ; CHECK-LABEL: test_lttf2: 190563e8479SJonas Paulsson ; CHECK: brasl %r14, __lttf2 191563e8479SJonas Paulsson %cmp = fcmp olt fp128 %a, %b 192563e8479SJonas Paulsson ret i1 %cmp 193563e8479SJonas Paulsson} 194563e8479SJonas Paulsson 195563e8479SJonas Paulssondefine i1 @test_lesf2(float %a, float %b) { 196563e8479SJonas Paulsson ; CHECK-LABEL: test_lesf2: 197563e8479SJonas Paulsson ; CHECK: brasl %r14, __lesf2 198563e8479SJonas Paulsson %cmp = fcmp ole float %a, %b 199563e8479SJonas Paulsson ret i1 %cmp 200563e8479SJonas Paulsson} 201563e8479SJonas Paulsson 202563e8479SJonas Paulssondefine i1 @test_ledf2(double %a, double %b) { 203563e8479SJonas Paulsson ; CHECK-LABEL: test_ledf2: 204563e8479SJonas Paulsson ; CHECK: brasl %r14, __ledf2 205563e8479SJonas Paulsson %cmp = fcmp ole double %a, %b 206563e8479SJonas Paulsson ret i1 %cmp 207563e8479SJonas Paulsson} 208563e8479SJonas Paulsson 209563e8479SJonas Paulssondefine i1 @test_letf2(fp128 %a, fp128 %b) { 210563e8479SJonas Paulsson ; CHECK-LABEL: test_letf2: 211563e8479SJonas Paulsson ; CHECK: brasl %r14, __letf2 212563e8479SJonas Paulsson %cmp = fcmp ole fp128 %a, %b 213563e8479SJonas Paulsson ret i1 %cmp 214563e8479SJonas Paulsson} 215563e8479SJonas Paulsson 216563e8479SJonas Paulssondefine i1 @test_gtsf2(float %a, float %b) { 217563e8479SJonas Paulsson ; CHECK-LABEL: test_gtsf2: 218563e8479SJonas Paulsson ; CHECK: brasl %r14, __gtsf2 219563e8479SJonas Paulsson %cmp = fcmp ogt float %a, %b 220563e8479SJonas Paulsson ret i1 %cmp 221563e8479SJonas Paulsson} 222563e8479SJonas Paulsson 223563e8479SJonas Paulssondefine i1 @test_gtdf2(double %a, double %b) { 224563e8479SJonas Paulsson ; CHECK-LABEL: test_gtdf2: 225563e8479SJonas Paulsson ; CHECK: brasl %r14, __gtdf2 226563e8479SJonas Paulsson %cmp = fcmp ogt double %a, %b 227563e8479SJonas Paulsson ret i1 %cmp 228563e8479SJonas Paulsson} 229563e8479SJonas Paulsson 230563e8479SJonas Paulssondefine i1 @test_gttf2(fp128 %a, fp128 %b) { 231563e8479SJonas Paulsson ; CHECK-LABEL: test_gttf2: 232563e8479SJonas Paulsson ; CHECK: brasl %r14, __gttf2 233563e8479SJonas Paulsson %cmp = fcmp ogt fp128 %a, %b 234563e8479SJonas Paulsson ret i1 %cmp 235563e8479SJonas Paulsson} 236