xref: /llvm-project/llvm/test/CodeGen/SystemZ/soft-float-01.ll (revision e943329ba00772f96fbc1fe5dec836cfd0707a38)
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