================ @@ -8701,95 +8734,341 @@ SDValue SystemZTargetLowering::combineSETCC( return SDValue(); } -static bool combineCCMask(SDValue &CCReg, int &CCValid, int &CCMask) { +static std::pair<SDValue, int> findCCUse(const SDValue &Val) { + auto *N = Val.getNode(); + if (!N) + return std::make_pair(SDValue(), SystemZ::CCMASK_NONE); + switch (N->getOpcode()) { + default: + return std::make_pair(SDValue(), SystemZ::CCMASK_NONE); + case SystemZISD::IPM: + if (N->getOperand(0).getOpcode() == SystemZISD::CLC || + N->getOperand(0).getOpcode() == SystemZ::CLST || ---------------- uweigand wrote:
`SystemZ::CLST` shouldn't be there, that's a MI opcode, not a DAG opcode. (During SelectionDAG, this will be `SystemZISD::STRCMP`, which you're already checking for.) https://github.com/llvm/llvm-project/pull/125970 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits