[llvm] [SDPatternMatch] Add m_Poison matcher (PR #144860)
Ming Yan via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 19 02:46:33 PDT 2025
https://github.com/NexMing created https://github.com/llvm/llvm-project/pull/144860
Add SDPatternMatch matcher and unit test coverage for ISD::POISON opcode
e.g.
```
m_InsertElt(m_Poison(), m_Value(), m_Zero())
```
>From 7f6b741f28c46013291cf8fc5c28c5885062f3a4 Mon Sep 17 00:00:00 2001
From: yanming <ming.yan at terapines.com>
Date: Thu, 19 Jun 2025 17:38:31 +0800
Subject: [PATCH] [SDPatternMatch] Add Matcher m_Poison
---
llvm/include/llvm/CodeGen/SDPatternMatch.h | 2 ++
llvm/unittests/CodeGen/SelectionDAGPatternMatchTest.cpp | 5 +++++
2 files changed, 7 insertions(+)
diff --git a/llvm/include/llvm/CodeGen/SDPatternMatch.h b/llvm/include/llvm/CodeGen/SDPatternMatch.h
index d413227c4d961..9eb6dd45f912f 100644
--- a/llvm/include/llvm/CodeGen/SDPatternMatch.h
+++ b/llvm/include/llvm/CodeGen/SDPatternMatch.h
@@ -142,6 +142,8 @@ inline Opcode_match m_Opc(unsigned Opcode) { return Opcode_match(Opcode); }
inline Opcode_match m_Undef() { return Opcode_match(ISD::UNDEF); }
+inline Opcode_match m_Poison() { return Opcode_match(ISD::POISON); }
+
template <unsigned NumUses, typename Pattern> struct NUses_match {
Pattern P;
diff --git a/llvm/unittests/CodeGen/SelectionDAGPatternMatchTest.cpp b/llvm/unittests/CodeGen/SelectionDAGPatternMatchTest.cpp
index 2162588aadfdb..2b1fa75a1475a 100644
--- a/llvm/unittests/CodeGen/SelectionDAGPatternMatchTest.cpp
+++ b/llvm/unittests/CodeGen/SelectionDAGPatternMatchTest.cpp
@@ -493,6 +493,11 @@ TEST_F(SelectionDAGPatternMatchTest, matchConstants) {
SDValue UndefVInt32VT = DAG->getUNDEF(VInt32VT);
EXPECT_TRUE(sd_match(UndefInt32VT, m_Undef()));
EXPECT_TRUE(sd_match(UndefVInt32VT, m_Undef()));
+
+ SDValue PoisonInt32VT = DAG->getPOISON(Int32VT);
+ SDValue PoisonVInt32VT = DAG->getPOISON(VInt32VT);
+ EXPECT_TRUE(sd_match(PoisonInt32VT, m_Poison()));
+ EXPECT_TRUE(sd_match(PoisonVInt32VT, m_Poison()));
}
TEST_F(SelectionDAGPatternMatchTest, patternCombinators) {
More information about the llvm-commits
mailing list