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