[llvm] X86: Pass instruction to inline asm register printing helpers (PR #219473)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 28 06:39:44 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-x86
Author: Matt Arsenault (arsenm)
<details>
<summary>Changes</summary>
printAsmMRegister and printAsmVRegister only used the operand to recover its
parent instruction's inline asm dialect. Pass the containing instruction
directly so they no longer depend on MachineOperand::getParent().
Co-authored-by: Claude (Claude-Opus-4.8) <noreply@<!-- -->anthropic.com>
---
Full diff: https://github.com/llvm/llvm-project/pull/219473.diff
1 Files Affected:
- (modified) llvm/lib/Target/X86/X86AsmPrinter.cpp (+9-8)
``````````diff
diff --git a/llvm/lib/Target/X86/X86AsmPrinter.cpp b/llvm/lib/Target/X86/X86AsmPrinter.cpp
index b0ea0850d2785..20911e8d2a37c 100644
--- a/llvm/lib/Target/X86/X86AsmPrinter.cpp
+++ b/llvm/lib/Target/X86/X86AsmPrinter.cpp
@@ -673,10 +673,11 @@ void X86AsmPrinter::emitMachOIFuncStubHelperBody(Module &M,
*Subtarget);
}
-static bool printAsmMRegister(const X86AsmPrinter &P, const MachineOperand &MO,
- char Mode, raw_ostream &O) {
+static bool printAsmMRegister(const X86AsmPrinter &P, const MachineInstr &MI,
+ const MachineOperand &MO, char Mode,
+ raw_ostream &O) {
Register Reg = MO.getReg();
- bool EmitPercent = MO.getParent()->getInlineAsmDialect() == InlineAsm::AD_ATT;
+ bool EmitPercent = MI.getInlineAsmDialect() == InlineAsm::AD_ATT;
if (!X86::GR8RegClass.contains(Reg) &&
!X86::GR16RegClass.contains(Reg) &&
@@ -717,10 +718,10 @@ static bool printAsmMRegister(const X86AsmPrinter &P, const MachineOperand &MO,
return false;
}
-static bool printAsmVRegister(const MachineOperand &MO, char Mode,
- raw_ostream &O) {
+static bool printAsmVRegister(const MachineInstr &MI, const MachineOperand &MO,
+ char Mode, raw_ostream &O) {
Register Reg = MO.getReg();
- bool EmitPercent = MO.getParent()->getInlineAsmDialect() == InlineAsm::AD_ATT;
+ bool EmitPercent = MI.getInlineAsmDialect() == InlineAsm::AD_ATT;
unsigned Index;
if (X86::VR128XRegClass.contains(Reg))
@@ -825,7 +826,7 @@ bool X86AsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
case 'q': // Print DImode register
case 'V': // Print native register without '%'
if (MO.isReg())
- return printAsmMRegister(*this, MO, ExtraCode[0], O);
+ return printAsmMRegister(*this, *MI, MO, ExtraCode[0], O);
PrintOperand(MI, OpNo, O);
return false;
@@ -833,7 +834,7 @@ bool X86AsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
case 't': // Print V8SFmode register
case 'g': // Print V16SFmode register
if (MO.isReg())
- return printAsmVRegister(MO, ExtraCode[0], O);
+ return printAsmVRegister(*MI, MO, ExtraCode[0], O);
PrintOperand(MI, OpNo, O);
return false;
``````````
</details>
https://github.com/llvm/llvm-project/pull/219473
More information about the llvm-commits
mailing list