[llvm] f7b2c9a - Sparc: Modernize getSpecifierName. NFC
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sat May 3 20:46:19 PDT 2025
Author: Fangrui Song
Date: 2025-05-03T20:46:14-07:00
New Revision: f7b2c9a439dc4d5d847d7e8c0f36ab2eb5ea81e6
URL: https://github.com/llvm/llvm-project/commit/f7b2c9a439dc4d5d847d7e8c0f36ab2eb5ea81e6
DIFF: https://github.com/llvm/llvm-project/commit/f7b2c9a439dc4d5d847d7e8c0f36ab2eb5ea81e6.diff
LOG: Sparc: Modernize getSpecifierName. NFC
Make the style similar to LoongArch/RISCV.
Remove comment "FIXME: use %got22/%got10, if system assembler supports them."
%got22/%got10 are not available in gas.
Added:
Modified:
llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp
llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h
llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp
index 7f84b5c1bb314..ce4f573e87288 100644
--- a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp
+++ b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp
@@ -30,62 +30,59 @@ const SparcMCExpr *SparcMCExpr::create(Specifier S, const MCExpr *Expr,
}
void SparcMCExpr::printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const {
-
- bool closeParen = printSpecifier(OS, specifier);
-
- const MCExpr *Expr = getSubExpr();
- Expr->print(OS, MAI);
-
- if (closeParen)
+ StringRef S = getSpecifierName(specifier);
+ if (!S.empty())
+ OS << '%' << S << '(';
+ getSubExpr()->print(OS, MAI);
+ if (!S.empty())
OS << ')';
}
-bool SparcMCExpr::printSpecifier(raw_ostream &OS, Specifier S) {
+StringRef SparcMCExpr::getSpecifierName(SparcMCExpr::Specifier S) {
// clang-format off
switch (S) {
- case VK_None: return false;
- case VK_LO: OS << "%lo("; return true;
- case VK_HI: OS << "%hi("; return true;
- case VK_H44: OS << "%h44("; return true;
- case VK_M44: OS << "%m44("; return true;
- case VK_L44: OS << "%l44("; return true;
- case VK_HH: OS << "%hh("; return true;
- case VK_HM: OS << "%hm("; return true;
- case VK_LM: OS << "%lm("; return true;
+ case VK_None: return {};
+ case VK_LO: return "lo";
+ case VK_HI: return "hi";
+ case VK_H44: return "h44";
+ case VK_M44: return "m44";
+ case VK_L44: return "l44";
+ case VK_HH: return "hh";
+ case VK_HM: return "hm";
+ case VK_LM: return "lm";
// FIXME: use %pc22/%pc10, if system assembler supports them.
- case VK_PC22: OS << "%hi("; return true;
- case VK_PC10: OS << "%lo("; return true;
- // FIXME: use %got22/%got10, if system assembler supports them.
- case VK_GOT22: OS << "%hi("; return true;
- case VK_GOT10: OS << "%lo("; return true;
- case VK_GOT13: return false;
- case VK_13: return false;
- case VK_WDISP30: return false;
- case VK_WPLT30: return false;
- case VK_R_DISP32: OS << "%r_disp32("; return true;
- case VK_TLS_GD_HI22: OS << "%tgd_hi22("; return true;
- case VK_TLS_GD_LO10: OS << "%tgd_lo10("; return true;
- case VK_TLS_GD_ADD: OS << "%tgd_add("; return true;
- case VK_TLS_GD_CALL: OS << "%tgd_call("; return true;
- case VK_TLS_LDM_HI22: OS << "%tldm_hi22("; return true;
- case VK_TLS_LDM_LO10: OS << "%tldm_lo10("; return true;
- case VK_TLS_LDM_ADD: OS << "%tldm_add("; return true;
- case VK_TLS_LDM_CALL: OS << "%tldm_call("; return true;
- case VK_TLS_LDO_HIX22: OS << "%tldo_hix22("; return true;
- case VK_TLS_LDO_LOX10: OS << "%tldo_lox10("; return true;
- case VK_TLS_LDO_ADD: OS << "%tldo_add("; return true;
- case VK_TLS_IE_HI22: OS << "%tie_hi22("; return true;
- case VK_TLS_IE_LO10: OS << "%tie_lo10("; return true;
- case VK_TLS_IE_LD: OS << "%tie_ld("; return true;
- case VK_TLS_IE_LDX: OS << "%tie_ldx("; return true;
- case VK_TLS_IE_ADD: OS << "%tie_add("; return true;
- case VK_TLS_LE_HIX22: OS << "%tle_hix22("; return true;
- case VK_TLS_LE_LOX10: OS << "%tle_lox10("; return true;
- case VK_HIX22: OS << "%hix("; return true;
- case VK_LOX10: OS << "%lox("; return true;
- case VK_GOTDATA_HIX22: OS << "%gdop_hix22("; return true;
- case VK_GOTDATA_LOX10: OS << "%gdop_lox10("; return true;
- case VK_GOTDATA_OP: OS << "%gdop("; return true;
+ case VK_PC22: return "hi";
+ case VK_PC10: return "lo";
+ case VK_GOT22: return "hi";
+ case VK_GOT10: return "lo";
+ case VK_GOT13: return {};
+ case VK_13: return {};
+ case VK_WDISP30: return {};
+ case VK_WPLT30: return {};
+ case VK_R_DISP32: return "r_disp32";
+ case VK_TLS_GD_HI22: return "tgd_hi22";
+ case VK_TLS_GD_LO10: return "tgd_lo10";
+ case VK_TLS_GD_ADD: return "tgd_add";
+ case VK_TLS_GD_CALL: return "tgd_call";
+ case VK_TLS_LDM_HI22: return "tldm_hi22";
+ case VK_TLS_LDM_LO10: return "tldm_lo10";
+ case VK_TLS_LDM_ADD: return "tldm_add";
+ case VK_TLS_LDM_CALL: return "tldm_call";
+ case VK_TLS_LDO_HIX22: return "tldo_hix22";
+ case VK_TLS_LDO_LOX10: return "tldo_lox10";
+ case VK_TLS_LDO_ADD: return "tldo_add";
+ case VK_TLS_IE_HI22: return "tie_hi22";
+ case VK_TLS_IE_LO10: return "tie_lo10";
+ case VK_TLS_IE_LD: return "tie_ld";
+ case VK_TLS_IE_LDX: return "tie_ldx";
+ case VK_TLS_IE_ADD: return "tie_add";
+ case VK_TLS_LE_HIX22: return "tle_hix22";
+ case VK_TLS_LE_LOX10: return "tle_lox10";
+ case VK_HIX22: return "hix";
+ case VK_LOX10: return "lox";
+ case VK_GOTDATA_HIX22: return "gdop_hix22";
+ case VK_GOTDATA_LOX10: return "gdop_lox10";
+ case VK_GOTDATA_OP: return "gdop";
}
// clang-format on
llvm_unreachable("Unhandled SparcMCExpr::Specifier");
diff --git a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h
index 107f6a4cb2e9e..7a561dfec250a 100644
--- a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h
+++ b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h
@@ -101,7 +101,7 @@ class SparcMCExpr : public MCTargetExpr {
}
static Specifier parseSpecifier(StringRef name);
- static bool printSpecifier(raw_ostream &OS, Specifier Kind);
+ static StringRef getSpecifierName(Specifier S);
};
} // end namespace llvm.
diff --git a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
index c3813c52ab00c..63bdb6bb2f4ac 100644
--- a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
+++ b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
@@ -307,8 +307,8 @@ void SparcAsmPrinter::printOperand(const MachineInstr *MI, int opNum,
const MachineOperand &MO = MI->getOperand (opNum);
SparcMCExpr::Specifier TF = (SparcMCExpr::Specifier)MO.getTargetFlags();
- bool CloseParen = SparcMCExpr::printSpecifier(O, TF);
-
+ StringRef Spec = SparcMCExpr::getSpecifierName(TF);
+ O << Spec;
switch (MO.getType()) {
case MachineOperand::MO_Register:
O << "%" << StringRef(getRegisterName(MO.getReg())).lower();
@@ -339,7 +339,8 @@ void SparcAsmPrinter::printOperand(const MachineInstr *MI, int opNum,
default:
llvm_unreachable("<unknown operand type>");
}
- if (CloseParen) O << ")";
+ if (!Spec.empty())
+ O << ")";
}
void SparcAsmPrinter::printMemOperand(const MachineInstr *MI, int opNum,
More information about the llvm-commits
mailing list