xref: /llvm-project/llvm/test/CodeGen/PowerPC/fp128-libcalls.ll (revision 335f955dc4942d6956e759b8c2686c52914c36b6)
1; RUN: llc < %s -O2 -mtriple=powerpc-linux-musl | FileCheck %s
2; RUN: llc < %s -O2 -mtriple=powerpc64-linux-musl | FileCheck %s
3; RUN: llc < %s -O2 -mtriple=powerpc64le-linux-musl | FileCheck %s
4
5define fp128 @addkf3(fp128 %a, fp128 %b) {
6; CHECK-LABEL: addkf3:
7; CHECK: __addkf3
8  %1 = fadd fp128 %a, %b
9  ret fp128 %1
10}
11
12define fp128 @subkf3(fp128 %a, fp128 %b) {
13; CHECK-LABEL: subkf3:
14; CHECK: __subkf3
15  %1 = fsub fp128 %a, %b
16  ret fp128 %1
17}
18
19define fp128 @mulkf3(fp128 %a, fp128 %b) {
20; CHECK-LABEL: mulkf3:
21; CHECK: __mulkf3
22  %1 = fmul fp128 %a, %b
23  ret fp128 %1
24}
25
26define fp128 @divkf3(fp128 %a, fp128 %b) {
27; CHECK-LABEL: divkf3:
28; CHECK: __divkf3
29  %1 = fdiv fp128 %a, %b
30  ret fp128 %1
31}
32
33define fp128 @extendsfkf2(float %a) {
34; CHECK-LABEL: extendsfkf2:
35; CHECK: __extendsfkf2
36  %1 = fpext float %a to fp128
37  ret fp128 %1
38}
39
40define fp128 @extenddfkf2(double %a) {
41; CHECK-LABEL: extenddfkf2:
42; CHECK: __extenddfkf2
43  %1 = fpext double %a to fp128
44  ret fp128 %1
45}
46
47define float @trunckfsf2(fp128 %a) {
48; CHECK-LABEL: trunckfsf2:
49; CHECK: __trunckfsf2
50  %1 = fptrunc fp128 %a to float
51  ret float %1
52}
53
54define double @trunckfdf2(fp128 %a) {
55; CHECK-LABEL: trunckfdf2:
56; CHECK: __trunckfdf2
57  %1 = fptrunc fp128 %a to double
58  ret double %1
59}
60
61define i32 @fixkfsi(fp128 %a) {
62; CHECK-LABEL: fixkfsi:
63; CHECK: __fixkfsi
64  %1 = fptosi fp128 %a to i32
65  ret i32 %1
66}
67
68define i64 @fixkfdi(fp128 %a) {
69; CHECK-LABEL: fixkfdi:
70; CHECK: __fixkfdi
71  %1 = fptosi fp128 %a to i64
72  ret i64 %1
73}
74
75define i32 @fixunskfsi(fp128 %a) {
76; CHECK-LABEL: fixunskfsi:
77; CHECK: __fixunskfsi
78  %1 = fptoui fp128 %a to i32
79  ret i32 %1
80}
81
82define i64 @fixunskfdi(fp128 %a) {
83; CHECK-LABEL: fixunskfdi:
84; CHECK: __fixunskfdi
85  %1 = fptoui fp128 %a to i64
86  ret i64 %1
87}
88
89define fp128 @floatsikf(i32 %a) {
90; CHECK-LABEL: floatsikf:
91; CHECK: __floatsikf
92  %1 = sitofp i32 %a to fp128
93  ret fp128 %1
94}
95
96define fp128 @floatdikf(i64 %a) {
97; CHECK-LABEL: floatdikf:
98; CHECK: __floatdikf
99  %1 = sitofp i64 %a to fp128
100  ret fp128 %1
101}
102
103define fp128 @floatunsikf(i32 %a) {
104; CHECK-LABEL: floatunsikf:
105; CHECK: __floatunsikf
106  %1 = uitofp i32 %a to fp128
107  ret fp128 %1
108}
109
110define fp128 @floatundikf(i64 %a) {
111; CHECK-LABEL: floatundikf:
112; CHECK: __floatundikf
113  %1 = uitofp i64 %a to fp128
114  ret fp128 %1
115}
116
117define i1 @test_eqkf2(fp128 %a, fp128 %b) {
118; CHECK-LABEL: test_eqkf2:
119; CHECK: __eqkf2
120  %1 = fcmp oeq fp128 %a, %b
121  ret i1 %1
122}
123
124define i1 @test_nekf2(fp128 %a, fp128 %b) {
125; CHECK-LABEL: test_nekf2:
126; CHECK: __nekf2
127  %1 = fcmp une fp128 %a, %b
128  ret i1 %1
129}
130
131define i1 @test_gekf2(fp128 %a, fp128 %b) {
132; CHECK-LABEL: test_gekf2:
133; CHECK: __gekf2
134  %1 = fcmp oge fp128 %a, %b
135  ret i1 %1
136}
137
138define i1 @test_ltkf2(fp128 %a, fp128 %b) {
139; CHECK-LABEL: test_ltkf2:
140; CHECK: __ltkf2
141  %1 = fcmp olt fp128 %a, %b
142  ret i1 %1
143}
144
145define i1 @test_lekf2(fp128 %a, fp128 %b) {
146; CHECK-LABEL: test_lekf2:
147; CHECK: __lekf2
148  %1 = fcmp ole fp128 %a, %b
149  ret i1 %1
150}
151
152define i1 @test_gtkf2(fp128 %a, fp128 %b) {
153; CHECK-LABEL: test_gtkf2:
154; CHECK: __gtkf2
155  %1 = fcmp ogt fp128 %a, %b
156  ret i1 %1
157}
158
159define i1 @test_unordkf2(fp128 %a, fp128 %b) {
160; CHECK-LABEL: test_unordkf2:
161; CHECK: __unordkf2
162  %1 = fcmp uno fp128 %a, %b
163  ret i1 %1
164}
165