[llvm] [X86] Handle multi-use setcc in commuteSelect (PR #213645)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 3 06:25:02 PDT 2026
================
@@ -48564,21 +48564,44 @@ static SDValue commuteSelect(SDNode *N, SelectionDAG &DAG, const SDLoc &DL,
ISD::CondCode CC;
SDValue Cond, X, Y, LHS, RHS;
- if (!sd_match(N, m_VSelect(m_AllOf(m_Value(Cond),
- m_OneUse(m_SetCC(m_Value(X), m_Value(Y),
- m_CondCode(CC)))),
- m_Value(LHS), m_Value(RHS))))
+ if (!sd_match(
+ N, m_VSelect(m_AllOf(m_Value(Cond),
+ m_SetCC(m_Value(X), m_Value(Y), m_CondCode(CC))),
+ m_Value(LHS), m_Value(RHS))))
return SDValue();
if (canCombineAsMaskOperation(LHS, Subtarget) ||
!canCombineAsMaskOperation(RHS, Subtarget))
return SDValue();
+ // For multi-use setcc, check that all users are vselects that benefit.
+ if (!Cond.hasOneUse()) {
+ SDValue UserLHS, UserRHS;
+ for (SDNode *User : Cond->users()) {
----------------
RKSimon wrote:
use an llvm::all_of pattern ?
https://github.com/llvm/llvm-project/pull/213645
More information about the llvm-commits
mailing list