[llvm] 2526c9d - SPIRV: Use mi_match in combiner match functions (#216964)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 20 05:07:48 PDT 2026
Author: Matt Arsenault
Date: 2026-08-20T14:07:44+02:00
New Revision: 2526c9db1be9762d70d1fb55217cfc96165bc315
URL: https://github.com/llvm/llvm-project/commit/2526c9db1be9762d70d1fb55217cfc96165bc315
DIFF: https://github.com/llvm/llvm-project/commit/2526c9db1be9762d70d1fb55217cfc96165bc315.diff
LOG: SPIRV: Use mi_match in combiner match functions (#216964)
Convert some simple cases away from getVRegDef + opcode
checks which don't require new matchers.
Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
Added:
Modified:
llvm/lib/Target/SPIRV/SPIRVCombinerHelper.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/SPIRV/SPIRVCombinerHelper.cpp b/llvm/lib/Target/SPIRV/SPIRVCombinerHelper.cpp
index 0882970895452..4f3c82f64f5cf 100644
--- a/llvm/lib/Target/SPIRV/SPIRVCombinerHelper.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVCombinerHelper.cpp
@@ -40,11 +40,7 @@ bool SPIRVCombinerHelper::matchLengthToDistance(MachineInstr &MI) const {
// First operand of MI is `G_INTRINSIC` so start at operand 2.
Register SubReg = MI.getOperand(2).getReg();
- MachineInstr *SubInstr = MRI.getVRegDef(SubReg);
- if (SubInstr->getOpcode() != TargetOpcode::G_FSUB)
- return false;
-
- return true;
+ return mi_match(SubReg, MRI, m_GFSub(m_Reg(), m_Reg()));
}
void SPIRVCombinerHelper::applySPIRVDistance(MachineInstr &MI) const {
@@ -129,10 +125,9 @@ bool SPIRVCombinerHelper::matchSelectToFaceForward(MachineInstr &MI) const {
if (!mi_match(TrueReg, MRI, m_GFNeg(m_SpecificReg(FalseReg))) &&
!mi_match(FalseReg, MRI, m_GFNeg(m_SpecificReg(TrueReg)))) {
std::optional<FPValueAndVReg> MulConstant;
- MachineInstr *TrueInstr = MRI.getVRegDef(TrueReg);
- MachineInstr *FalseInstr = MRI.getVRegDef(FalseReg);
- if (TrueInstr->getOpcode() == TargetOpcode::G_BUILD_VECTOR &&
- FalseInstr->getOpcode() == TargetOpcode::G_BUILD_VECTOR &&
+ GBuildVector *TrueInstr, *FalseInstr;
+ if (mi_match(TrueReg, MRI, m_GBuildVector(TrueInstr)) &&
+ mi_match(FalseReg, MRI, m_GBuildVector(FalseInstr)) &&
TrueInstr->getNumOperands() == FalseInstr->getNumOperands()) {
for (unsigned I = 1; I < TrueInstr->getNumOperands(); ++I)
if (!AreNegatedConstantsOrSplats(TrueInstr->getOperand(I).getReg(),
More information about the llvm-commits
mailing list