@@ -3235,6 +3235,7 @@ bool DAGTypeLegalizer::SplitVectorOperand(SDNode *N, unsigned OpNo) {
3235
3235
3236
3236
case ISD::VP_SETCC:
3237
3237
case ISD::STRICT_FSETCC:
3238
+ case ISD::STRICT_FSETCCS:
3238
3239
case ISD::SETCC: Res = SplitVecOp_VSETCC (N); break ;
3239
3240
case ISD::BITCAST: Res = SplitVecOp_BITCAST (N); break ;
3240
3241
case ISD::EXTRACT_SUBVECTOR: Res = SplitVecOp_EXTRACT_SUBVECTOR (N); break ;
@@ -4236,7 +4237,8 @@ SDValue DAGTypeLegalizer::SplitVecOp_TruncateHelper(SDNode *N) {
4236
4237
}
4237
4238
4238
4239
SDValue DAGTypeLegalizer::SplitVecOp_VSETCC (SDNode *N) {
4239
- bool isStrict = N->getOpcode () == ISD::STRICT_FSETCC;
4240
+ unsigned Opc = N->getOpcode ();
4241
+ bool isStrict = Opc == ISD::STRICT_FSETCC || Opc == ISD::STRICT_FSETCCS;
4240
4242
assert (N->getValueType (0 ).isVector () &&
4241
4243
N->getOperand (isStrict ? 1 : 0 ).getValueType ().isVector () &&
4242
4244
" Operand types must be vectors" );
@@ -4252,21 +4254,19 @@ SDValue DAGTypeLegalizer::SplitVecOp_VSETCC(SDNode *N) {
4252
4254
EVT PartResVT = EVT::getVectorVT (Context, MVT::i1, PartEltCnt);
4253
4255
EVT WideResVT = EVT::getVectorVT (Context, MVT::i1, PartEltCnt*2 );
4254
4256
4255
- if (N-> getOpcode () == ISD::SETCC) {
4257
+ if (Opc == ISD::SETCC) {
4256
4258
LoRes = DAG.getNode (ISD::SETCC, DL, PartResVT, Lo0, Lo1, N->getOperand (2 ));
4257
4259
HiRes = DAG.getNode (ISD::SETCC, DL, PartResVT, Hi0, Hi1, N->getOperand (2 ));
4258
- } else if (N->getOpcode () == ISD::STRICT_FSETCC) {
4259
- LoRes = DAG.getNode (ISD::STRICT_FSETCC, DL,
4260
- DAG.getVTList (PartResVT, N->getValueType (1 )),
4260
+ } else if (isStrict) {
4261
+ LoRes = DAG.getNode (Opc, DL, DAG.getVTList (PartResVT, N->getValueType (1 )),
4261
4262
N->getOperand (0 ), Lo0, Lo1, N->getOperand (3 ));
4262
- HiRes = DAG.getNode (ISD::STRICT_FSETCC, DL,
4263
- DAG.getVTList (PartResVT, N->getValueType (1 )),
4263
+ HiRes = DAG.getNode (Opc, DL, DAG.getVTList (PartResVT, N->getValueType (1 )),
4264
4264
N->getOperand (0 ), Hi0, Hi1, N->getOperand (3 ));
4265
4265
SDValue NewChain = DAG.getNode (ISD::TokenFactor, DL, MVT::Other,
4266
4266
LoRes.getValue (1 ), HiRes.getValue (1 ));
4267
4267
ReplaceValueWith (SDValue (N, 1 ), NewChain);
4268
4268
} else {
4269
- assert (N-> getOpcode () == ISD::VP_SETCC && " Expected VP_SETCC opcode" );
4269
+ assert (Opc == ISD::VP_SETCC && " Expected VP_SETCC opcode" );
4270
4270
SDValue MaskLo, MaskHi, EVLLo, EVLHi;
4271
4271
std::tie (MaskLo, MaskHi) = SplitMask (N->getOperand (3 ));
4272
4272
std::tie (EVLLo, EVLHi) =
0 commit comments