[llvm-branch-commits] [llvm] AMDGPU: Avoid dropping poison when extracting a high element (PR #211872)

Matt Arsenault via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Jul 24 10:52:07 PDT 2026


https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/211872

Haven't found a case where this matters, but I want to stop finding
this instance of the is-undef-get-undef pattern.

>From 6b3268a497ac160af07944769bf75de4de059ef1 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Fri, 24 Jul 2026 19:02:50 +0200
Subject: [PATCH] AMDGPU: Avoid dropping poison when extracting a high element

Haven't found a case where this matters, but I want to stop finding
this instance of the is-undef-get-undef pattern.
---
 llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp b/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
index 79496e09cce98..74cabdab310b7 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
@@ -4640,7 +4640,10 @@ bool AMDGPUDAGToDAGISel::SelectBITOP3(SDValue In, SDValue &Src0, SDValue &Src1,
 }
 
 SDValue AMDGPUDAGToDAGISel::getHi16Elt(SDValue In) const {
-  if (In.isUndef())
+  if (In.getOpcode() == ISD::POISON)
+    return CurDAG->getPOISON(MVT::i32);
+
+  if (In.getOpcode() == ISD::UNDEF)
     return CurDAG->getUNDEF(MVT::i32);
 
   if (ConstantSDNode *C = dyn_cast<ConstantSDNode>(In)) {



More information about the llvm-branch-commits mailing list