@@ -140,12 +140,9 @@ class SelectionDAGLegalize {
140
140
RTLIB::Libcall Call_F128,
141
141
RTLIB::Libcall Call_PPCF128,
142
142
SmallVectorImpl<SDValue> &Results);
143
- SDValue ExpandIntLibCall (SDNode *Node, bool isSigned,
144
- RTLIB::Libcall Call_I8,
145
- RTLIB::Libcall Call_I16,
146
- RTLIB::Libcall Call_I32,
147
- RTLIB::Libcall Call_I64,
148
- RTLIB::Libcall Call_I128);
143
+ SDValue ExpandIntLibCall (SDNode *Node, bool IsSigned, RTLIB::Libcall Call_I8,
144
+ RTLIB::Libcall Call_I16, RTLIB::Libcall Call_I32,
145
+ RTLIB::Libcall Call_I64, RTLIB::Libcall Call_I128);
149
146
void ExpandArgFPLibCall (SDNode *Node,
150
147
RTLIB::Libcall Call_F32, RTLIB::Libcall Call_F64,
151
148
RTLIB::Libcall Call_F80, RTLIB::Libcall Call_F128,
@@ -2209,7 +2206,7 @@ void SelectionDAGLegalize::ExpandFPLibCall(SDNode* Node,
2209
2206
ExpandFPLibCall (Node, LC, Results);
2210
2207
}
2211
2208
2212
- SDValue SelectionDAGLegalize::ExpandIntLibCall (SDNode* Node, bool isSigned ,
2209
+ SDValue SelectionDAGLegalize::ExpandIntLibCall (SDNode * Node, bool IsSigned ,
2213
2210
RTLIB::Libcall Call_I8,
2214
2211
RTLIB::Libcall Call_I16,
2215
2212
RTLIB::Libcall Call_I32,
@@ -2224,7 +2221,9 @@ SDValue SelectionDAGLegalize::ExpandIntLibCall(SDNode* Node, bool isSigned,
2224
2221
case MVT::i64: LC = Call_I64; break ;
2225
2222
case MVT::i128: LC = Call_I128; break ;
2226
2223
}
2227
- return ExpandLibCall (LC, Node, isSigned).first ;
2224
+ assert (LC != RTLIB::UNKNOWN_LIBCALL &&
2225
+ " LibCall explicitly requested, but not available" );
2226
+ return ExpandLibCall (LC, Node, IsSigned).first ;
2228
2227
}
2229
2228
2230
2229
// / Expand the node to a libcall based on first argument type (for instance
@@ -4980,19 +4979,20 @@ void SelectionDAGLegalize::ConvertNodeToLibcall(SDNode *Node) {
4980
4979
RTLIB::MUL_I64, RTLIB::MUL_I128));
4981
4980
break ;
4982
4981
case ISD::CTLZ_ZERO_UNDEF:
4983
- switch (Node->getSimpleValueType (0 ).SimpleTy ) {
4984
- default :
4985
- llvm_unreachable (" LibCall explicitly requested, but not available" );
4986
- case MVT::i32:
4987
- Results.push_back (ExpandLibCall (RTLIB::CTLZ_I32, Node, false ).first );
4988
- break ;
4989
- case MVT::i64:
4990
- Results.push_back (ExpandLibCall (RTLIB::CTLZ_I64, Node, false ).first );
4991
- break ;
4992
- case MVT::i128:
4993
- Results.push_back (ExpandLibCall (RTLIB::CTLZ_I128, Node, false ).first );
4994
- break ;
4995
- }
4982
+ Results.push_back (ExpandIntLibCall (Node, /* IsSigned=*/ false ,
4983
+ RTLIB::UNKNOWN_LIBCALL,
4984
+ RTLIB::UNKNOWN_LIBCALL,
4985
+ RTLIB::CTLZ_I32,
4986
+ RTLIB::CTLZ_I64,
4987
+ RTLIB::CTLZ_I128));
4988
+ break ;
4989
+ case ISD::CTPOP:
4990
+ Results.push_back (ExpandIntLibCall (Node, /* IsSigned=*/ false ,
4991
+ RTLIB::UNKNOWN_LIBCALL,
4992
+ RTLIB::UNKNOWN_LIBCALL,
4993
+ RTLIB::CTPOP_I32,
4994
+ RTLIB::CTPOP_I64,
4995
+ RTLIB::CTPOP_I128));
4996
4996
break ;
4997
4997
case ISD::RESET_FPENV: {
4998
4998
// It is legalized to call 'fesetenv(FE_DFL_ENV)'. On most targets
0 commit comments