[llvm] [AMDGPU][MC][NFCI] Eliminate printU4ImmDecOperand(). (PR #100589)
Ivan Kosarev via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 25 09:14:57 PDT 2024
https://github.com/kosarev created https://github.com/llvm/llvm-project/pull/100589
This is hoped to make things a bit safer not masking the value to print and to make the logic in printDPPCtrl() a bit more explicit.
Part of <https://github.com/llvm/llvm-project/issues/62629>.
>From d2b41dfc4759570a88f6c136e13ef45683eacb41 Mon Sep 17 00:00:00 2001
From: Ivan Kosarev <ivan.kosarev at amd.com>
Date: Thu, 25 Jul 2024 16:54:05 +0100
Subject: [PATCH] [AMDGPU][MC][NFCI] Eliminate printU4ImmDecOperand().
This is hoped to make things a bit safer not masking the value to
print and to make the logic in printDPPCtrl() a bit more explicit.
Part of <https://github.com/llvm/llvm-project/issues/62629>.
---
.../AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp | 31 ++++++-------------
.../AMDGPU/MCTargetDesc/AMDGPUInstPrinter.h | 1 -
2 files changed, 9 insertions(+), 23 deletions(-)
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp
index fc7aba3483aad..c31f85dbea127 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp
@@ -65,11 +65,6 @@ void AMDGPUInstPrinter::printU16ImmOperand(const MCInst *MI, unsigned OpNo,
printU32ImmOperand(MI, OpNo, STI, O);
}
-void AMDGPUInstPrinter::printU4ImmDecOperand(const MCInst *MI, unsigned OpNo,
- raw_ostream &O) {
- O << formatDec(MI->getOperand(OpNo).getImm() & 0xf);
-}
-
void AMDGPUInstPrinter::printU16ImmDecOperand(const MCInst *MI, unsigned OpNo,
raw_ostream &O) {
O << formatDec(MI->getOperand(OpNo).getImm() & 0xffff);
@@ -719,29 +714,25 @@ void AMDGPUInstPrinter::printDefaultVccOperand(bool FirstOperand,
void AMDGPUInstPrinter::printWaitVDST(const MCInst *MI, unsigned OpNo,
const MCSubtargetInfo &STI,
raw_ostream &O) {
- O << " wait_vdst:";
- printU4ImmDecOperand(MI, OpNo, O);
+ O << " wait_vdst:" << formatDec(MI->getOperand(OpNo).getImm());
}
void AMDGPUInstPrinter::printWaitVAVDst(const MCInst *MI, unsigned OpNo,
const MCSubtargetInfo &STI,
raw_ostream &O) {
- O << " wait_va_vdst:";
- printU4ImmDecOperand(MI, OpNo, O);
+ O << " wait_va_vdst:" << formatDec(MI->getOperand(OpNo).getImm());
}
void AMDGPUInstPrinter::printWaitVMVSrc(const MCInst *MI, unsigned OpNo,
const MCSubtargetInfo &STI,
raw_ostream &O) {
- O << " wait_vm_vsrc:";
- printU4ImmDecOperand(MI, OpNo, O);
+ O << " wait_vm_vsrc:" << formatDec(MI->getOperand(OpNo).getImm());
}
void AMDGPUInstPrinter::printWaitEXP(const MCInst *MI, unsigned OpNo,
const MCSubtargetInfo &STI,
raw_ostream &O) {
- O << " wait_exp:";
- printU4ImmDecOperand(MI, OpNo, O);
+ O << " wait_exp:" << formatDec(MI->getOperand(OpNo).getImm());
}
bool AMDGPUInstPrinter::needsImpliedVcc(const MCInstrDesc &Desc,
@@ -1065,16 +1056,13 @@ void AMDGPUInstPrinter::printDPPCtrl(const MCInst *MI, unsigned OpNo,
O << formatDec((Imm & 0xc0) >> 6) << ']';
} else if ((Imm >= DppCtrl::ROW_SHL_FIRST) &&
(Imm <= DppCtrl::ROW_SHL_LAST)) {
- O << "row_shl:";
- printU4ImmDecOperand(MI, OpNo, O);
+ O << "row_shl:" << formatDec(Imm - DppCtrl::ROW_SHL0);
} else if ((Imm >= DppCtrl::ROW_SHR_FIRST) &&
(Imm <= DppCtrl::ROW_SHR_LAST)) {
- O << "row_shr:";
- printU4ImmDecOperand(MI, OpNo, O);
+ O << "row_shr:" << formatDec(Imm - DppCtrl::ROW_SHR0);
} else if ((Imm >= DppCtrl::ROW_ROR_FIRST) &&
(Imm <= DppCtrl::ROW_ROR_LAST)) {
- O << "row_ror:";
- printU4ImmDecOperand(MI, OpNo, O);
+ O << "row_ror:" << formatDec(Imm - DppCtrl::ROW_ROR0);
} else if (Imm == DppCtrl::WAVE_SHL1) {
if (AMDGPU::isGFX10Plus(STI)) {
O << "/* wave_shl is not supported starting from GFX10 */";
@@ -1126,15 +1114,14 @@ void AMDGPUInstPrinter::printDPPCtrl(const MCInst *MI, unsigned OpNo,
"than GFX90A/GFX10 */";
return;
}
- printU4ImmDecOperand(MI, OpNo, O);
+ O << formatDec(Imm - DppCtrl::ROW_SHARE_FIRST);
} else if ((Imm >= DppCtrl::ROW_XMASK_FIRST) &&
(Imm <= DppCtrl::ROW_XMASK_LAST)) {
if (!AMDGPU::isGFX10Plus(STI)) {
O << "/* row_xmask is not supported on ASICs earlier than GFX10 */";
return;
}
- O << "row_xmask:";
- printU4ImmDecOperand(MI, OpNo, O);
+ O << "row_xmask:" << formatDec(Imm - DppCtrl::ROW_XMASK_FIRST);
} else {
O << "/* Invalid dpp_ctrl value */";
}
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.h b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.h
index c5fad384348df..4a39022aea7cf 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.h
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.h
@@ -38,7 +38,6 @@ class AMDGPUInstPrinter : public MCInstPrinter {
private:
void printU16ImmOperand(const MCInst *MI, unsigned OpNo,
const MCSubtargetInfo &STI, raw_ostream &O);
- void printU4ImmDecOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
void printU16ImmDecOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
void printU32ImmOperand(const MCInst *MI, unsigned OpNo,
const MCSubtargetInfo &STI, raw_ostream &O);
More information about the llvm-commits
mailing list