[llvm] AArch64/GlobalISel: Mark the MOPS pseudo NZCV def dead (PR #227643)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 30 03:20:06 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-aarch64
Author: Matt Arsenault (arsenm)
<details>
<summary>Changes</summary>
AArch64/GlobalISel: Mark the MOPS pseudo NZCV def dead
Co-authored-by: Claude Opus 5 <noreply@<!-- -->anthropic.com>
Remove test
---
Full diff: https://github.com/llvm/llvm-project/pull/227643.diff
1 Files Affected:
- (modified) llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp (+5-2)
``````````diff
diff --git a/llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp b/llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
index 22c0e3a3a462d..96f932e71dbd0 100644
--- a/llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
+++ b/llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
@@ -3665,11 +3665,13 @@ bool AArch64InstructionSelector::selectMOPS(MachineInstr &GI,
Register DefSize = MRI.createVirtualRegister(&AArch64::GPR64RegClass);
if (IsSet) {
MIB.buildInstr(Mopcode, {DefDstPtr, DefSize},
- {DstPtrCopy, SizeCopy, SrcValCopy});
+ {DstPtrCopy, SizeCopy, SrcValCopy})
+ .setOperandDead(5); // implicit-def $nzcv
} else {
Register DefSrcPtr = MRI.createVirtualRegister(&SrcValRegClass);
MIB.buildInstr(Mopcode, {DefDstPtr, DefSrcPtr, DefSize},
- {DstPtrCopy, SrcValCopy, SizeCopy});
+ {DstPtrCopy, SrcValCopy, SizeCopy})
+ .setOperandDead(6); // implicit-def $nzcv
}
GI.eraseFromParent();
@@ -6854,6 +6856,7 @@ bool AArch64InstructionSelector::selectIntrinsicWithSideEffects(
auto Memset = MIB.buildInstr(AArch64::MOPSMemorySetTaggingPseudo,
{DstDef, SizeDef}, {DstUse, SizeUse, ValUse});
Memset.cloneMemRefs(I);
+ Memset.setOperandDead(5); // implicit-def $nzcv
constrainSelectedInstRegOperands(*Memset, TII, TRI, RBI);
break;
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/227643
More information about the llvm-commits
mailing list