@@ -7071,20 +7071,15 @@ bool CombinerHelper::matchSimplifyNegMinMax(MachineInstr &MI,
70717071 if (!isLegal ({TargetOpcode::G_SUB, {DestTy}}))
70727072 return false ;
70737073
7074- // GISel doesn't have m_Deferred at this moment, so we have to
7075- // match this pattern in two phases.
7076- Register X, Y;
7074+ Register X;
70777075 Register Sub0;
7076+ auto NegPattern = m_all_of (m_Neg (m_DeferredReg (X)), m_Reg (Sub0));
70787077 if (mi_match (DestReg, MRI,
7079- m_Neg (m_OneUse (m_any_of (
7080- m_GSMin (m_Reg (X), m_Reg (Y)), m_GSMax (m_Reg (X), m_Reg (Y)),
7081- m_BinOp (TargetOpcode::G_UMIN, m_Reg (X), m_Reg (Y)),
7082- m_BinOp (TargetOpcode::G_UMAX, m_Reg (X), m_Reg (Y)))))) &&
7083- (mi_match (Y, MRI, m_all_of (m_Neg (m_SpecificReg (X)), m_Reg (Sub0))) ||
7084- mi_match (X, MRI, m_all_of (m_Neg (m_SpecificReg (Y)), m_Reg (Sub0))))) {
7078+ m_Neg (m_OneUse (m_any_of (m_GSMin (m_Reg (X), NegPattern),
7079+ m_GSMax (m_Reg (X), NegPattern),
7080+ m_GUMin (m_Reg (X), NegPattern),
7081+ m_GUMax (m_Reg (X), NegPattern)))))) {
70857082 MachineInstr *MinMaxMI = MRI.getVRegDef (MI.getOperand (2 ).getReg ());
7086- MachineInstr *Sub0MI = MRI.getVRegDef (Sub0);
7087- X = Sub0MI->getOperand (2 ).getReg ();
70887083 unsigned NewOpc = getInverseGMinMaxOpcode (MinMaxMI->getOpcode ());
70897084 if (isLegal ({NewOpc, {DestTy}})) {
70907085 MatchInfo = [=](MachineIRBuilder &B) {
0 commit comments