[llvm] GlobalISel: Use m_GImplicitDef instead of getVRegDef opcode checks (PR #216513)
via llvm-commits
llvm-commits at lists.llvm.org
Sat Aug 15 15:08:28 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-globalisel
Author: Matt Arsenault (arsenm)
<details>
<summary>Changes</summary>
Co-authored-by: Claude (Opus 4.8) <noreply@<!-- -->anthropic.com>
---
Full diff: https://github.com/llvm/llvm-project/pull/216513.diff
2 Files Affected:
- (modified) llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp (+1-2)
- (modified) llvm/lib/CodeGen/GlobalISel/Utils.cpp (+1-1)
``````````diff
diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
index 914993a581085..6f85390fd4ede 100644
--- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
@@ -9731,8 +9731,7 @@ LegalizerHelper::lowerVECTOR_COMPRESS(llvm::MachineInstr &MI) {
auto OutPos = MIRBuilder.buildConstant(IdxTy, 0);
- bool HasPassthru =
- MRI.getVRegDef(Passthru)->getOpcode() != TargetOpcode::G_IMPLICIT_DEF;
+ bool HasPassthru = !mi_match(Passthru, MRI, m_GImplicitDef());
if (HasPassthru)
MIRBuilder.buildStore(Passthru, StackPtr, PtrInfo, VecAlign);
diff --git a/llvm/lib/CodeGen/GlobalISel/Utils.cpp b/llvm/lib/CodeGen/GlobalISel/Utils.cpp
index c555b67d9198c..36e427188c0b5 100644
--- a/llvm/lib/CodeGen/GlobalISel/Utils.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/Utils.cpp
@@ -1331,7 +1331,7 @@ std::optional<ValueAndVReg> getAnyConstantSplat(Register VReg,
// If AllowUndef, treat undef as value that will result in a constant splat.
if (!ElementValAndReg) {
- if (AllowUndef && isa<GImplicitDef>(MRI.getVRegDef(Element)))
+ if (AllowUndef && mi_match(Element, MRI, m_GImplicitDef()))
continue;
return std::nullopt;
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/216513
More information about the llvm-commits
mailing list