Skip to content

Commit 3ef7d03

Browse files
authored
MSP430: Stop using setCmpLibcallCC (#142708)
This appears to only be useful for the eq/ne cases, and only for ARM libcalls. This is setting it to the default values, and there's no change in the new fcmp test output.
1 parent 4a46ead commit 3ef7d03

File tree

1 file changed

+89
-94
lines changed

1 file changed

+89
-94
lines changed

llvm/lib/Target/MSP430/MSP430ISelLowering.cpp

Lines changed: 89 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -151,104 +151,99 @@ MSP430TargetLowering::MSP430TargetLowering(const TargetMachine &TM,
151151
// EABI Libcalls - EABI Section 6.2
152152
const struct {
153153
const RTLIB::Libcall Op;
154-
const char * const Name;
155-
const ISD::CondCode Cond;
154+
const char *const Name;
156155
} LibraryCalls[] = {
157-
// Floating point conversions - EABI Table 6
158-
{ RTLIB::FPROUND_F64_F32, "__mspabi_cvtdf", ISD::SETCC_INVALID },
159-
{ RTLIB::FPEXT_F32_F64, "__mspabi_cvtfd", ISD::SETCC_INVALID },
160-
// The following is NOT implemented in libgcc
161-
//{ RTLIB::FPTOSINT_F64_I16, "__mspabi_fixdi", ISD::SETCC_INVALID },
162-
{ RTLIB::FPTOSINT_F64_I32, "__mspabi_fixdli", ISD::SETCC_INVALID },
163-
{ RTLIB::FPTOSINT_F64_I64, "__mspabi_fixdlli", ISD::SETCC_INVALID },
164-
// The following is NOT implemented in libgcc
165-
//{ RTLIB::FPTOUINT_F64_I16, "__mspabi_fixdu", ISD::SETCC_INVALID },
166-
{ RTLIB::FPTOUINT_F64_I32, "__mspabi_fixdul", ISD::SETCC_INVALID },
167-
{ RTLIB::FPTOUINT_F64_I64, "__mspabi_fixdull", ISD::SETCC_INVALID },
168-
// The following is NOT implemented in libgcc
169-
//{ RTLIB::FPTOSINT_F32_I16, "__mspabi_fixfi", ISD::SETCC_INVALID },
170-
{ RTLIB::FPTOSINT_F32_I32, "__mspabi_fixfli", ISD::SETCC_INVALID },
171-
{ RTLIB::FPTOSINT_F32_I64, "__mspabi_fixflli", ISD::SETCC_INVALID },
172-
// The following is NOT implemented in libgcc
173-
//{ RTLIB::FPTOUINT_F32_I16, "__mspabi_fixfu", ISD::SETCC_INVALID },
174-
{ RTLIB::FPTOUINT_F32_I32, "__mspabi_fixful", ISD::SETCC_INVALID },
175-
{ RTLIB::FPTOUINT_F32_I64, "__mspabi_fixfull", ISD::SETCC_INVALID },
176-
// TODO The following IS implemented in libgcc
177-
//{ RTLIB::SINTTOFP_I16_F64, "__mspabi_fltid", ISD::SETCC_INVALID },
178-
{ RTLIB::SINTTOFP_I32_F64, "__mspabi_fltlid", ISD::SETCC_INVALID },
179-
// TODO The following IS implemented in libgcc but is not in the EABI
180-
{ RTLIB::SINTTOFP_I64_F64, "__mspabi_fltllid", ISD::SETCC_INVALID },
181-
// TODO The following IS implemented in libgcc
182-
//{ RTLIB::UINTTOFP_I16_F64, "__mspabi_fltud", ISD::SETCC_INVALID },
183-
{ RTLIB::UINTTOFP_I32_F64, "__mspabi_fltuld", ISD::SETCC_INVALID },
184-
// The following IS implemented in libgcc but is not in the EABI
185-
{ RTLIB::UINTTOFP_I64_F64, "__mspabi_fltulld", ISD::SETCC_INVALID },
186-
// TODO The following IS implemented in libgcc
187-
//{ RTLIB::SINTTOFP_I16_F32, "__mspabi_fltif", ISD::SETCC_INVALID },
188-
{ RTLIB::SINTTOFP_I32_F32, "__mspabi_fltlif", ISD::SETCC_INVALID },
189-
// TODO The following IS implemented in libgcc but is not in the EABI
190-
{ RTLIB::SINTTOFP_I64_F32, "__mspabi_fltllif", ISD::SETCC_INVALID },
191-
// TODO The following IS implemented in libgcc
192-
//{ RTLIB::UINTTOFP_I16_F32, "__mspabi_fltuf", ISD::SETCC_INVALID },
193-
{ RTLIB::UINTTOFP_I32_F32, "__mspabi_fltulf", ISD::SETCC_INVALID },
194-
// The following IS implemented in libgcc but is not in the EABI
195-
{ RTLIB::UINTTOFP_I64_F32, "__mspabi_fltullf", ISD::SETCC_INVALID },
196-
197-
// Floating point comparisons - EABI Table 7
198-
{ RTLIB::OEQ_F64, "__mspabi_cmpd", ISD::SETEQ },
199-
{ RTLIB::UNE_F64, "__mspabi_cmpd", ISD::SETNE },
200-
{ RTLIB::OGE_F64, "__mspabi_cmpd", ISD::SETGE },
201-
{ RTLIB::OLT_F64, "__mspabi_cmpd", ISD::SETLT },
202-
{ RTLIB::OLE_F64, "__mspabi_cmpd", ISD::SETLE },
203-
{ RTLIB::OGT_F64, "__mspabi_cmpd", ISD::SETGT },
204-
{ RTLIB::OEQ_F32, "__mspabi_cmpf", ISD::SETEQ },
205-
{ RTLIB::UNE_F32, "__mspabi_cmpf", ISD::SETNE },
206-
{ RTLIB::OGE_F32, "__mspabi_cmpf", ISD::SETGE },
207-
{ RTLIB::OLT_F32, "__mspabi_cmpf", ISD::SETLT },
208-
{ RTLIB::OLE_F32, "__mspabi_cmpf", ISD::SETLE },
209-
{ RTLIB::OGT_F32, "__mspabi_cmpf", ISD::SETGT },
210-
211-
// Floating point arithmetic - EABI Table 8
212-
{ RTLIB::ADD_F64, "__mspabi_addd", ISD::SETCC_INVALID },
213-
{ RTLIB::ADD_F32, "__mspabi_addf", ISD::SETCC_INVALID },
214-
{ RTLIB::DIV_F64, "__mspabi_divd", ISD::SETCC_INVALID },
215-
{ RTLIB::DIV_F32, "__mspabi_divf", ISD::SETCC_INVALID },
216-
{ RTLIB::MUL_F64, "__mspabi_mpyd", ISD::SETCC_INVALID },
217-
{ RTLIB::MUL_F32, "__mspabi_mpyf", ISD::SETCC_INVALID },
218-
{ RTLIB::SUB_F64, "__mspabi_subd", ISD::SETCC_INVALID },
219-
{ RTLIB::SUB_F32, "__mspabi_subf", ISD::SETCC_INVALID },
220-
// The following are NOT implemented in libgcc
221-
// { RTLIB::NEG_F64, "__mspabi_negd", ISD::SETCC_INVALID },
222-
// { RTLIB::NEG_F32, "__mspabi_negf", ISD::SETCC_INVALID },
223-
224-
// Universal Integer Operations - EABI Table 9
225-
{ RTLIB::SDIV_I16, "__mspabi_divi", ISD::SETCC_INVALID },
226-
{ RTLIB::SDIV_I32, "__mspabi_divli", ISD::SETCC_INVALID },
227-
{ RTLIB::SDIV_I64, "__mspabi_divlli", ISD::SETCC_INVALID },
228-
{ RTLIB::UDIV_I16, "__mspabi_divu", ISD::SETCC_INVALID },
229-
{ RTLIB::UDIV_I32, "__mspabi_divul", ISD::SETCC_INVALID },
230-
{ RTLIB::UDIV_I64, "__mspabi_divull", ISD::SETCC_INVALID },
231-
{ RTLIB::SREM_I16, "__mspabi_remi", ISD::SETCC_INVALID },
232-
{ RTLIB::SREM_I32, "__mspabi_remli", ISD::SETCC_INVALID },
233-
{ RTLIB::SREM_I64, "__mspabi_remlli", ISD::SETCC_INVALID },
234-
{ RTLIB::UREM_I16, "__mspabi_remu", ISD::SETCC_INVALID },
235-
{ RTLIB::UREM_I32, "__mspabi_remul", ISD::SETCC_INVALID },
236-
{ RTLIB::UREM_I64, "__mspabi_remull", ISD::SETCC_INVALID },
237-
238-
// Bitwise Operations - EABI Table 10
239-
// TODO: __mspabi_[srli/srai/slli] ARE implemented in libgcc
240-
{ RTLIB::SRL_I32, "__mspabi_srll", ISD::SETCC_INVALID },
241-
{ RTLIB::SRA_I32, "__mspabi_sral", ISD::SETCC_INVALID },
242-
{ RTLIB::SHL_I32, "__mspabi_slll", ISD::SETCC_INVALID },
243-
// __mspabi_[srlll/srall/sllll/rlli/rlll] are NOT implemented in libgcc
244-
156+
// Floating point conversions - EABI Table 6
157+
{RTLIB::FPROUND_F64_F32, "__mspabi_cvtdf"},
158+
{RTLIB::FPEXT_F32_F64, "__mspabi_cvtfd"},
159+
// The following is NOT implemented in libgcc
160+
//{ RTLIB::FPTOSINT_F64_I16, "__mspabi_fixdi" },
161+
{RTLIB::FPTOSINT_F64_I32, "__mspabi_fixdli"},
162+
{RTLIB::FPTOSINT_F64_I64, "__mspabi_fixdlli"},
163+
// The following is NOT implemented in libgcc
164+
//{ RTLIB::FPTOUINT_F64_I16, "__mspabi_fixdu" },
165+
{RTLIB::FPTOUINT_F64_I32, "__mspabi_fixdul"},
166+
{RTLIB::FPTOUINT_F64_I64, "__mspabi_fixdull"},
167+
// The following is NOT implemented in libgcc
168+
//{ RTLIB::FPTOSINT_F32_I16, "__mspabi_fixfi" },
169+
{RTLIB::FPTOSINT_F32_I32, "__mspabi_fixfli"},
170+
{RTLIB::FPTOSINT_F32_I64, "__mspabi_fixflli"},
171+
// The following is NOT implemented in libgcc
172+
//{ RTLIB::FPTOUINT_F32_I16, "__mspabi_fixfu" },
173+
{RTLIB::FPTOUINT_F32_I32, "__mspabi_fixful"},
174+
{RTLIB::FPTOUINT_F32_I64, "__mspabi_fixfull"},
175+
// TODO The following IS implemented in libgcc
176+
//{ RTLIB::SINTTOFP_I16_F64, "__mspabi_fltid" },
177+
{RTLIB::SINTTOFP_I32_F64, "__mspabi_fltlid"},
178+
// TODO The following IS implemented in libgcc but is not in the EABI
179+
{RTLIB::SINTTOFP_I64_F64, "__mspabi_fltllid"},
180+
// TODO The following IS implemented in libgcc
181+
//{ RTLIB::UINTTOFP_I16_F64, "__mspabi_fltud" },
182+
{RTLIB::UINTTOFP_I32_F64, "__mspabi_fltuld"},
183+
// The following IS implemented in libgcc but is not in the EABI
184+
{RTLIB::UINTTOFP_I64_F64, "__mspabi_fltulld"},
185+
// TODO The following IS implemented in libgcc
186+
//{ RTLIB::SINTTOFP_I16_F32, "__mspabi_fltif" },
187+
{RTLIB::SINTTOFP_I32_F32, "__mspabi_fltlif"},
188+
// TODO The following IS implemented in libgcc but is not in the EABI
189+
{RTLIB::SINTTOFP_I64_F32, "__mspabi_fltllif"},
190+
// TODO The following IS implemented in libgcc
191+
//{ RTLIB::UINTTOFP_I16_F32, "__mspabi_fltuf" },
192+
{RTLIB::UINTTOFP_I32_F32, "__mspabi_fltulf"},
193+
// The following IS implemented in libgcc but is not in the EABI
194+
{RTLIB::UINTTOFP_I64_F32, "__mspabi_fltullf"},
195+
196+
// Floating point comparisons - EABI Table 7
197+
{RTLIB::OEQ_F64, "__mspabi_cmpd"},
198+
{RTLIB::UNE_F64, "__mspabi_cmpd"},
199+
{RTLIB::OGE_F64, "__mspabi_cmpd"},
200+
{RTLIB::OLT_F64, "__mspabi_cmpd"},
201+
{RTLIB::OLE_F64, "__mspabi_cmpd"},
202+
{RTLIB::OGT_F64, "__mspabi_cmpd"},
203+
{RTLIB::OEQ_F32, "__mspabi_cmpf"},
204+
{RTLIB::UNE_F32, "__mspabi_cmpf"},
205+
{RTLIB::OGE_F32, "__mspabi_cmpf"},
206+
{RTLIB::OLT_F32, "__mspabi_cmpf"},
207+
{RTLIB::OLE_F32, "__mspabi_cmpf"},
208+
{RTLIB::OGT_F32, "__mspabi_cmpf"},
209+
210+
// Floating point arithmetic - EABI Table 8
211+
{RTLIB::ADD_F64, "__mspabi_addd"},
212+
{RTLIB::ADD_F32, "__mspabi_addf"},
213+
{RTLIB::DIV_F64, "__mspabi_divd"},
214+
{RTLIB::DIV_F32, "__mspabi_divf"},
215+
{RTLIB::MUL_F64, "__mspabi_mpyd"},
216+
{RTLIB::MUL_F32, "__mspabi_mpyf"},
217+
{RTLIB::SUB_F64, "__mspabi_subd"},
218+
{RTLIB::SUB_F32, "__mspabi_subf"},
219+
// The following are NOT implemented in libgcc
220+
// { RTLIB::NEG_F64, "__mspabi_negd" },
221+
// { RTLIB::NEG_F32, "__mspabi_negf" },
222+
223+
// Universal Integer Operations - EABI Table 9
224+
{RTLIB::SDIV_I16, "__mspabi_divi"},
225+
{RTLIB::SDIV_I32, "__mspabi_divli"},
226+
{RTLIB::SDIV_I64, "__mspabi_divlli"},
227+
{RTLIB::UDIV_I16, "__mspabi_divu"},
228+
{RTLIB::UDIV_I32, "__mspabi_divul"},
229+
{RTLIB::UDIV_I64, "__mspabi_divull"},
230+
{RTLIB::SREM_I16, "__mspabi_remi"},
231+
{RTLIB::SREM_I32, "__mspabi_remli"},
232+
{RTLIB::SREM_I64, "__mspabi_remlli"},
233+
{RTLIB::UREM_I16, "__mspabi_remu"},
234+
{RTLIB::UREM_I32, "__mspabi_remul"},
235+
{RTLIB::UREM_I64, "__mspabi_remull"},
236+
237+
// Bitwise Operations - EABI Table 10
238+
// TODO: __mspabi_[srli/srai/slli] ARE implemented in libgcc
239+
{RTLIB::SRL_I32, "__mspabi_srll"},
240+
{RTLIB::SRA_I32, "__mspabi_sral"},
241+
{RTLIB::SHL_I32, "__mspabi_slll"},
242+
// __mspabi_[srlll/srall/sllll/rlli/rlll] are NOT implemented in libgcc
245243
};
246244

247-
for (const auto &LC : LibraryCalls) {
245+
for (const auto &LC : LibraryCalls)
248246
setLibcallName(LC.Op, LC.Name);
249-
if (LC.Cond != ISD::SETCC_INVALID)
250-
setCmpLibcallCC(LC.Op, LC.Cond);
251-
}
252247

253248
if (STI.hasHWMult16()) {
254249
const struct {

0 commit comments

Comments
 (0)