[llvm] [X86] Handle multi-use setcc in commuteSelect (PR #213645)
Phoebe Wang via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 4 06:29:13 PDT 2026
================
@@ -48564,21 +48564,43 @@ 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()) {
----------------
phoebewang wrote:
Nit: Save to a variable to avoid call it twice.
https://github.com/llvm/llvm-project/pull/213645
More information about the llvm-commits
mailing list