Skip to content

Commit 995b34e

Browse files
committed
Add a unit test and some cleanup
1 parent b45699d commit 995b34e

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

llvm/include/llvm/CodeGen/GlobalISel/MIPatternMatch.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -347,9 +347,7 @@ template <> struct bind_helper<const MachineInstr *> {
347347
static bool bind(const MachineRegisterInfo &MRI, const MachineInstr *&MI,
348348
Register Reg) {
349349
MI = MRI.getVRegDef(Reg);
350-
if (MI)
351-
return true;
352-
return false;
350+
return MI;
353351
}
354352
static bool bind(const MachineRegisterInfo &MRI, const MachineInstr *&MI,
355353
const MachineInstr *Inst) {
@@ -463,8 +461,6 @@ struct BinaryOp_match {
463461
!(Commutable && (L.match(MRI, TmpMI->getOperand(2).getReg()) &&
464462
R.match(MRI, TmpMI->getOperand(1).getReg()))))
465463
return false;
466-
if (Flags == MachineInstr::NoFlags)
467-
return true;
468464
return (TmpMI->getFlags() & Flags) == Flags;
469465
}
470466
}

llvm/unittests/CodeGen/GlobalISel/PatternMatchTest.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -950,6 +950,29 @@ TEST_F(AArch64GISelMITest, DeferredMatching) {
950950
m_GAdd(m_Reg(X), m_GSub(m_Reg(), m_DeferredReg(X)))));
951951
}
952952

953+
TEST_F(AArch64GISelMITest, AddLike) {
954+
setUp();
955+
if (!TM)
956+
GTEST_SKIP();
957+
auto s64 = LLT::scalar(64);
958+
959+
auto Cst1 = B.buildConstant(s64, 42);
960+
auto Cst2 = B.buildConstant(s64, 314);
961+
962+
auto Or1 = B.buildOr(s64, Cst1, Cst2, MachineInstr::Disjoint);
963+
auto Or2 = B.buildOr(s64, Cst1, Cst2);
964+
auto Add = B.buildAdd(s64, Cst1, Cst2);
965+
auto Sub = B.buildSub(s64, Cst1, Cst2);
966+
967+
EXPECT_TRUE(mi_match(Or1.getReg(0), *MRI, m_GDisjointOr(m_Reg(), m_Reg())));
968+
EXPECT_FALSE(mi_match(Or2.getReg(0), *MRI, m_GDisjointOr(m_Reg(), m_Reg())));
969+
970+
EXPECT_TRUE(mi_match(Add.getReg(0), *MRI, m_GAddLike(m_Reg(), m_Reg())));
971+
EXPECT_FALSE(mi_match(Sub.getReg(0), *MRI, m_GAddLike(m_Reg(), m_Reg())));
972+
EXPECT_TRUE(mi_match(Or1.getReg(0), *MRI, m_GAddLike(m_Reg(), m_Reg())));
973+
EXPECT_FALSE(mi_match(Or2.getReg(0), *MRI, m_GAddLike(m_Reg(), m_Reg())));
974+
}
975+
953976
} // namespace
954977

955978
int main(int argc, char **argv) {

0 commit comments

Comments
 (0)