[PATCH] D94348: [MIPatternMatch] Add matcher for G_PTR_ADD
Jessica Paquette via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 8 15:31:43 PST 2021
paquette created this revision.
paquette added reviewers: aemerson, arsenm.
paquette requested review of this revision.
Herald added a subscriber: wdng.
Herald added a project: LLVM.
Add a matcher which recognizes G_PTR_ADD and add a test.
https://reviews.llvm.org/D94348
Files:
llvm/include/llvm/CodeGen/GlobalISel/MIPatternMatch.h
llvm/unittests/CodeGen/GlobalISel/PatternMatchTest.cpp
Index: llvm/unittests/CodeGen/GlobalISel/PatternMatchTest.cpp
===================================================================
--- llvm/unittests/CodeGen/GlobalISel/PatternMatchTest.cpp
+++ llvm/unittests/CodeGen/GlobalISel/PatternMatchTest.cpp
@@ -47,6 +47,7 @@
return;
LLT s32 = LLT::scalar(32);
LLT s64 = LLT::scalar(64);
+ LLT p0 = LLT::pointer(0, 64);
auto MIBAdd = B.buildAdd(s64, Copies[0], Copies[1]);
// Test case for no bind.
bool match =
@@ -145,6 +146,13 @@
EXPECT_TRUE(match);
EXPECT_EQ(Src0, Copies[0]);
EXPECT_EQ(Src1, TruncCopy1.getReg(0));
+
+ // Build a G_PTR_ADD and check that we can match it.
+ auto PtrAdd = B.buildPtrAdd(p0, {B.buildUndef(p0)}, Copies[0]);
+ match = mi_match(PtrAdd.getReg(0), *MRI, m_GPtrAdd(m_Reg(Src0), m_Reg(Src1)));
+ EXPECT_TRUE(match);
+ EXPECT_EQ(Src0, PtrAdd->getOperand(1).getReg());
+ EXPECT_EQ(Src1, Copies[0]);
}
TEST_F(AArch64GISelMITest, MatchICmp) {
Index: llvm/include/llvm/CodeGen/GlobalISel/MIPatternMatch.h
===================================================================
--- llvm/include/llvm/CodeGen/GlobalISel/MIPatternMatch.h
+++ llvm/include/llvm/CodeGen/GlobalISel/MIPatternMatch.h
@@ -220,6 +220,12 @@
return BinaryOp_match<LHS, RHS, TargetOpcode::G_ADD, true>(L, R);
}
+template <typename LHS, typename RHS>
+inline BinaryOp_match<LHS, RHS, TargetOpcode::G_PTR_ADD, true>
+m_GPtrAdd(const LHS &L, const RHS &R) {
+ return BinaryOp_match<LHS, RHS, TargetOpcode::G_PTR_ADD, true>(L, R);
+}
+
template <typename LHS, typename RHS>
inline BinaryOp_match<LHS, RHS, TargetOpcode::G_SUB> m_GSub(const LHS &L,
const RHS &R) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D94348.315536.patch
Type: text/x-patch
Size: 1702 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210108/a3342e9a/attachment.bin>
More information about the llvm-commits
mailing list