Skip to content

Commit 4bf47bc

Browse files
Tim NorthoverTim Northover
authored andcommitted
Add fp128 rtlib function names to LLVM
llvm-svn: 171867
1 parent 7bb9992 commit 4bf47bc

File tree

3 files changed

+184
-18
lines changed

3 files changed

+184
-18
lines changed

llvm/include/llvm/CodeGen/RuntimeLibcalls.h

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,100 +86,126 @@ namespace RTLIB {
8686
ADD_F32,
8787
ADD_F64,
8888
ADD_F80,
89+
ADD_F128,
8990
ADD_PPCF128,
9091
SUB_F32,
9192
SUB_F64,
9293
SUB_F80,
94+
SUB_F128,
9395
SUB_PPCF128,
9496
MUL_F32,
9597
MUL_F64,
9698
MUL_F80,
99+
MUL_F128,
97100
MUL_PPCF128,
98101
DIV_F32,
99102
DIV_F64,
100103
DIV_F80,
104+
DIV_F128,
101105
DIV_PPCF128,
102106
REM_F32,
103107
REM_F64,
104108
REM_F80,
109+
REM_F128,
105110
REM_PPCF128,
106111
FMA_F32,
107112
FMA_F64,
108113
FMA_F80,
114+
FMA_F128,
109115
FMA_PPCF128,
110116
POWI_F32,
111117
POWI_F64,
112118
POWI_F80,
119+
POWI_F128,
113120
POWI_PPCF128,
114121
SQRT_F32,
115122
SQRT_F64,
116123
SQRT_F80,
124+
SQRT_F128,
117125
SQRT_PPCF128,
118126
LOG_F32,
119127
LOG_F64,
120128
LOG_F80,
129+
LOG_F128,
121130
LOG_PPCF128,
122131
LOG2_F32,
123132
LOG2_F64,
124133
LOG2_F80,
134+
LOG2_F128,
125135
LOG2_PPCF128,
126136
LOG10_F32,
127137
LOG10_F64,
128138
LOG10_F80,
139+
LOG10_F128,
129140
LOG10_PPCF128,
130141
EXP_F32,
131142
EXP_F64,
132143
EXP_F80,
144+
EXP_F128,
133145
EXP_PPCF128,
134146
EXP2_F32,
135147
EXP2_F64,
136148
EXP2_F80,
149+
EXP2_F128,
137150
EXP2_PPCF128,
138151
SIN_F32,
139152
SIN_F64,
140153
SIN_F80,
154+
SIN_F128,
141155
SIN_PPCF128,
142156
COS_F32,
143157
COS_F64,
144158
COS_F80,
159+
COS_F128,
145160
COS_PPCF128,
146161
POW_F32,
147162
POW_F64,
148163
POW_F80,
164+
POW_F128,
149165
POW_PPCF128,
150166
CEIL_F32,
151167
CEIL_F64,
152168
CEIL_F80,
169+
CEIL_F128,
153170
CEIL_PPCF128,
154171
TRUNC_F32,
155172
TRUNC_F64,
156173
TRUNC_F80,
174+
TRUNC_F128,
157175
TRUNC_PPCF128,
158176
RINT_F32,
159177
RINT_F64,
160178
RINT_F80,
179+
RINT_F128,
161180
RINT_PPCF128,
162181
NEARBYINT_F32,
163182
NEARBYINT_F64,
164183
NEARBYINT_F80,
184+
NEARBYINT_F128,
165185
NEARBYINT_PPCF128,
166186
FLOOR_F32,
167187
FLOOR_F64,
168188
FLOOR_F80,
189+
FLOOR_F128,
169190
FLOOR_PPCF128,
170191
COPYSIGN_F32,
171192
COPYSIGN_F64,
172193
COPYSIGN_F80,
194+
COPYSIGN_F128,
173195
COPYSIGN_PPCF128,
174196

175197
// CONVERSION
198+
FPEXT_F64_F128,
199+
FPEXT_F32_F128,
176200
FPEXT_F32_F64,
177201
FPEXT_F16_F32,
178202
FPROUND_F32_F16,
179203
FPROUND_F64_F32,
180204
FPROUND_F80_F32,
205+
FPROUND_F128_F32,
181206
FPROUND_PPCF128_F32,
182207
FPROUND_F80_F64,
208+
FPROUND_F128_F64,
183209
FPROUND_PPCF128_F64,
184210
FPTOSINT_F32_I8,
185211
FPTOSINT_F32_I16,
@@ -194,6 +220,9 @@ namespace RTLIB {
194220
FPTOSINT_F80_I32,
195221
FPTOSINT_F80_I64,
196222
FPTOSINT_F80_I128,
223+
FPTOSINT_F128_I32,
224+
FPTOSINT_F128_I64,
225+
FPTOSINT_F128_I128,
197226
FPTOSINT_PPCF128_I32,
198227
FPTOSINT_PPCF128_I64,
199228
FPTOSINT_PPCF128_I128,
@@ -210,51 +239,68 @@ namespace RTLIB {
210239
FPTOUINT_F80_I32,
211240
FPTOUINT_F80_I64,
212241
FPTOUINT_F80_I128,
242+
FPTOUINT_F128_I32,
243+
FPTOUINT_F128_I64,
244+
FPTOUINT_F128_I128,
213245
FPTOUINT_PPCF128_I32,
214246
FPTOUINT_PPCF128_I64,
215247
FPTOUINT_PPCF128_I128,
216248
SINTTOFP_I32_F32,
217249
SINTTOFP_I32_F64,
218250
SINTTOFP_I32_F80,
251+
SINTTOFP_I32_F128,
219252
SINTTOFP_I32_PPCF128,
220253
SINTTOFP_I64_F32,
221254
SINTTOFP_I64_F64,
222255
SINTTOFP_I64_F80,
256+
SINTTOFP_I64_F128,
223257
SINTTOFP_I64_PPCF128,
224258
SINTTOFP_I128_F32,
225259
SINTTOFP_I128_F64,
226260
SINTTOFP_I128_F80,
261+
SINTTOFP_I128_F128,
227262
SINTTOFP_I128_PPCF128,
228263
UINTTOFP_I32_F32,
229264
UINTTOFP_I32_F64,
230265
UINTTOFP_I32_F80,
266+
UINTTOFP_I32_F128,
231267
UINTTOFP_I32_PPCF128,
232268
UINTTOFP_I64_F32,
233269
UINTTOFP_I64_F64,
234270
UINTTOFP_I64_F80,
271+
UINTTOFP_I64_F128,
235272
UINTTOFP_I64_PPCF128,
236273
UINTTOFP_I128_F32,
237274
UINTTOFP_I128_F64,
238275
UINTTOFP_I128_F80,
276+
UINTTOFP_I128_F128,
239277
UINTTOFP_I128_PPCF128,
240278

241279
// COMPARISON
242280
OEQ_F32,
243281
OEQ_F64,
282+
OEQ_F128,
244283
UNE_F32,
245284
UNE_F64,
285+
UNE_F128,
246286
OGE_F32,
247287
OGE_F64,
288+
OGE_F128,
248289
OLT_F32,
249290
OLT_F64,
291+
OLT_F128,
250292
OLE_F32,
251293
OLE_F64,
294+
OLE_F128,
252295
OGT_F32,
253296
OGT_F64,
297+
OGT_F128,
254298
UO_F32,
255299
UO_F64,
300+
UO_F128,
256301
O_F32,
257302
O_F64,
303+
O_F128,
258304

259305
// MEMORY
260306
MEMCPY,

llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ class SelectionDAGLegalize : public SelectionDAG::DAGUpdateListener {
102102
SDNode *Node, bool isSigned);
103103
SDValue ExpandFPLibCall(SDNode *Node, RTLIB::Libcall Call_F32,
104104
RTLIB::Libcall Call_F64, RTLIB::Libcall Call_F80,
105-
RTLIB::Libcall Call_PPCF128);
105+
RTLIB::Libcall Call_F128, RTLIB::Libcall Call_PPCF128);
106106
SDValue ExpandIntLibCall(SDNode *Node, bool isSigned,
107107
RTLIB::Libcall Call_I8,
108108
RTLIB::Libcall Call_I16,
@@ -1978,13 +1978,15 @@ SDValue SelectionDAGLegalize::ExpandFPLibCall(SDNode* Node,
19781978
RTLIB::Libcall Call_F32,
19791979
RTLIB::Libcall Call_F64,
19801980
RTLIB::Libcall Call_F80,
1981+
RTLIB::Libcall Call_F128,
19811982
RTLIB::Libcall Call_PPCF128) {
19821983
RTLIB::Libcall LC;
19831984
switch (Node->getValueType(0).getSimpleVT().SimpleTy) {
19841985
default: llvm_unreachable("Unexpected request for libcall!");
19851986
case MVT::f32: LC = Call_F32; break;
19861987
case MVT::f64: LC = Call_F64; break;
19871988
case MVT::f80: LC = Call_F80; break;
1989+
case MVT::f128: LC = Call_F128; break;
19881990
case MVT::ppcf128: LC = Call_PPCF128; break;
19891991
}
19901992
return ExpandLibCall(LC, Node, false);
@@ -3054,77 +3056,95 @@ void SelectionDAGLegalize::ExpandNode(SDNode *Node) {
30543056
}
30553057
case ISD::FSQRT:
30563058
Results.push_back(ExpandFPLibCall(Node, RTLIB::SQRT_F32, RTLIB::SQRT_F64,
3057-
RTLIB::SQRT_F80, RTLIB::SQRT_PPCF128));
3059+
RTLIB::SQRT_F80, RTLIB::SQRT_F128,
3060+
RTLIB::SQRT_PPCF128));
30583061
break;
30593062
case ISD::FSIN:
30603063
Results.push_back(ExpandFPLibCall(Node, RTLIB::SIN_F32, RTLIB::SIN_F64,
3061-
RTLIB::SIN_F80, RTLIB::SIN_PPCF128));
3064+
RTLIB::SIN_F80, RTLIB::SIN_F128,
3065+
RTLIB::SIN_PPCF128));
30623066
break;
30633067
case ISD::FCOS:
30643068
Results.push_back(ExpandFPLibCall(Node, RTLIB::COS_F32, RTLIB::COS_F64,
3065-
RTLIB::COS_F80, RTLIB::COS_PPCF128));
3069+
RTLIB::COS_F80, RTLIB::COS_F128,
3070+
RTLIB::COS_PPCF128));
30663071
break;
30673072
case ISD::FLOG:
30683073
Results.push_back(ExpandFPLibCall(Node, RTLIB::LOG_F32, RTLIB::LOG_F64,
3069-
RTLIB::LOG_F80, RTLIB::LOG_PPCF128));
3074+
RTLIB::LOG_F80, RTLIB::LOG_F128,
3075+
RTLIB::LOG_PPCF128));
30703076
break;
30713077
case ISD::FLOG2:
30723078
Results.push_back(ExpandFPLibCall(Node, RTLIB::LOG2_F32, RTLIB::LOG2_F64,
3073-
RTLIB::LOG2_F80, RTLIB::LOG2_PPCF128));
3079+
RTLIB::LOG2_F80, RTLIB::LOG2_F128,
3080+
RTLIB::LOG2_PPCF128));
30743081
break;
30753082
case ISD::FLOG10:
30763083
Results.push_back(ExpandFPLibCall(Node, RTLIB::LOG10_F32, RTLIB::LOG10_F64,
3077-
RTLIB::LOG10_F80, RTLIB::LOG10_PPCF128));
3084+
RTLIB::LOG10_F80, RTLIB::LOG10_F128,
3085+
RTLIB::LOG10_PPCF128));
30783086
break;
30793087
case ISD::FEXP:
30803088
Results.push_back(ExpandFPLibCall(Node, RTLIB::EXP_F32, RTLIB::EXP_F64,
3081-
RTLIB::EXP_F80, RTLIB::EXP_PPCF128));
3089+
RTLIB::EXP_F80, RTLIB::EXP_F128,
3090+
RTLIB::EXP_PPCF128));
30823091
break;
30833092
case ISD::FEXP2:
30843093
Results.push_back(ExpandFPLibCall(Node, RTLIB::EXP2_F32, RTLIB::EXP2_F64,
3085-
RTLIB::EXP2_F80, RTLIB::EXP2_PPCF128));
3094+
RTLIB::EXP2_F80, RTLIB::EXP2_F128,
3095+
RTLIB::EXP2_PPCF128));
30863096
break;
30873097
case ISD::FTRUNC:
30883098
Results.push_back(ExpandFPLibCall(Node, RTLIB::TRUNC_F32, RTLIB::TRUNC_F64,
3089-
RTLIB::TRUNC_F80, RTLIB::TRUNC_PPCF128));
3099+
RTLIB::TRUNC_F80, RTLIB::TRUNC_F128,
3100+
RTLIB::TRUNC_PPCF128));
30903101
break;
30913102
case ISD::FFLOOR:
30923103
Results.push_back(ExpandFPLibCall(Node, RTLIB::FLOOR_F32, RTLIB::FLOOR_F64,
3093-
RTLIB::FLOOR_F80, RTLIB::FLOOR_PPCF128));
3104+
RTLIB::FLOOR_F80, RTLIB::FLOOR_F128,
3105+
RTLIB::FLOOR_PPCF128));
30943106
break;
30953107
case ISD::FCEIL:
30963108
Results.push_back(ExpandFPLibCall(Node, RTLIB::CEIL_F32, RTLIB::CEIL_F64,
3097-
RTLIB::CEIL_F80, RTLIB::CEIL_PPCF128));
3109+
RTLIB::CEIL_F80, RTLIB::CEIL_F128,
3110+
RTLIB::CEIL_PPCF128));
30983111
break;
30993112
case ISD::FRINT:
31003113
Results.push_back(ExpandFPLibCall(Node, RTLIB::RINT_F32, RTLIB::RINT_F64,
3101-
RTLIB::RINT_F80, RTLIB::RINT_PPCF128));
3114+
RTLIB::RINT_F80, RTLIB::RINT_F128,
3115+
RTLIB::RINT_PPCF128));
31023116
break;
31033117
case ISD::FNEARBYINT:
31043118
Results.push_back(ExpandFPLibCall(Node, RTLIB::NEARBYINT_F32,
31053119
RTLIB::NEARBYINT_F64,
31063120
RTLIB::NEARBYINT_F80,
3121+
RTLIB::NEARBYINT_F128,
31073122
RTLIB::NEARBYINT_PPCF128));
31083123
break;
31093124
case ISD::FPOWI:
31103125
Results.push_back(ExpandFPLibCall(Node, RTLIB::POWI_F32, RTLIB::POWI_F64,
3111-
RTLIB::POWI_F80, RTLIB::POWI_PPCF128));
3126+
RTLIB::POWI_F80, RTLIB::POWI_F128,
3127+
RTLIB::POWI_PPCF128));
31123128
break;
31133129
case ISD::FPOW:
31143130
Results.push_back(ExpandFPLibCall(Node, RTLIB::POW_F32, RTLIB::POW_F64,
3115-
RTLIB::POW_F80, RTLIB::POW_PPCF128));
3131+
RTLIB::POW_F80, RTLIB::POW_F128,
3132+
RTLIB::POW_PPCF128));
31163133
break;
31173134
case ISD::FDIV:
31183135
Results.push_back(ExpandFPLibCall(Node, RTLIB::DIV_F32, RTLIB::DIV_F64,
3119-
RTLIB::DIV_F80, RTLIB::DIV_PPCF128));
3136+
RTLIB::DIV_F80, RTLIB::DIV_F128,
3137+
RTLIB::DIV_PPCF128));
31203138
break;
31213139
case ISD::FREM:
31223140
Results.push_back(ExpandFPLibCall(Node, RTLIB::REM_F32, RTLIB::REM_F64,
3123-
RTLIB::REM_F80, RTLIB::REM_PPCF128));
3141+
RTLIB::REM_F80, RTLIB::REM_F128,
3142+
RTLIB::REM_PPCF128));
31243143
break;
31253144
case ISD::FMA:
31263145
Results.push_back(ExpandFPLibCall(Node, RTLIB::FMA_F32, RTLIB::FMA_F64,
3127-
RTLIB::FMA_F80, RTLIB::FMA_PPCF128));
3146+
RTLIB::FMA_F80, RTLIB::FMA_F128,
3147+
RTLIB::FMA_PPCF128));
31283148
break;
31293149
case ISD::FP16_TO_FP32:
31303150
Results.push_back(ExpandLibCall(RTLIB::FPEXT_F16_F32, Node, false));

0 commit comments

Comments
 (0)