@@ -30,62 +30,59 @@ const SparcMCExpr *SparcMCExpr::create(Specifier S, const MCExpr *Expr,
3030}
3131
3232void SparcMCExpr::printImpl (raw_ostream &OS, const MCAsmInfo *MAI) const {
33-
34- bool closeParen = printSpecifier (OS, specifier);
35-
36- const MCExpr *Expr = getSubExpr ();
37- Expr->print (OS, MAI);
38-
39- if (closeParen)
33+ StringRef S = getSpecifierName (specifier);
34+ if (!S.empty ())
35+ OS << ' %' << S << ' (' ;
36+ getSubExpr ()->print (OS, MAI);
37+ if (!S.empty ())
4038 OS << ' )' ;
4139}
4240
43- bool SparcMCExpr::printSpecifier (raw_ostream &OS, Specifier S) {
41+ StringRef SparcMCExpr::getSpecifierName (SparcMCExpr:: Specifier S) {
4442 // clang-format off
4543 switch (S) {
46- case VK_None: return false ;
47- case VK_LO: OS << " %lo( " ; return true ;
48- case VK_HI: OS << " %hi( " ; return true ;
49- case VK_H44: OS << " % h44( " ; return true ;
50- case VK_M44: OS << " % m44( " ; return true ;
51- case VK_L44: OS << " % l44( " ; return true ;
52- case VK_HH: OS << " %hh( " ; return true ;
53- case VK_HM: OS << " %hm( " ; return true ;
54- case VK_LM: OS << " %lm( " ; return true ;
44+ case VK_None: return {} ;
45+ case VK_LO: return " lo " ;
46+ case VK_HI: return " hi " ;
47+ case VK_H44: return " h44" ;
48+ case VK_M44: return " m44" ;
49+ case VK_L44: return " l44" ;
50+ case VK_HH: return " hh " ;
51+ case VK_HM: return " hm " ;
52+ case VK_LM: return " lm " ;
5553 // FIXME: use %pc22/%pc10, if system assembler supports them.
56- case VK_PC22: OS << " %hi(" ; return true ;
57- case VK_PC10: OS << " %lo(" ; return true ;
58- // FIXME: use %got22/%got10, if system assembler supports them.
59- case VK_GOT22: OS << " %hi(" ; return true ;
60- case VK_GOT10: OS << " %lo(" ; return true ;
61- case VK_GOT13: return false ;
62- case VK_13: return false ;
63- case VK_WDISP30: return false ;
64- case VK_WPLT30: return false ;
65- case VK_R_DISP32: OS << " %r_disp32(" ; return true ;
66- case VK_TLS_GD_HI22: OS << " %tgd_hi22(" ; return true ;
67- case VK_TLS_GD_LO10: OS << " %tgd_lo10(" ; return true ;
68- case VK_TLS_GD_ADD: OS << " %tgd_add(" ; return true ;
69- case VK_TLS_GD_CALL: OS << " %tgd_call(" ; return true ;
70- case VK_TLS_LDM_HI22: OS << " %tldm_hi22(" ; return true ;
71- case VK_TLS_LDM_LO10: OS << " %tldm_lo10(" ; return true ;
72- case VK_TLS_LDM_ADD: OS << " %tldm_add(" ; return true ;
73- case VK_TLS_LDM_CALL: OS << " %tldm_call(" ; return true ;
74- case VK_TLS_LDO_HIX22: OS << " %tldo_hix22(" ; return true ;
75- case VK_TLS_LDO_LOX10: OS << " %tldo_lox10(" ; return true ;
76- case VK_TLS_LDO_ADD: OS << " %tldo_add(" ; return true ;
77- case VK_TLS_IE_HI22: OS << " %tie_hi22(" ; return true ;
78- case VK_TLS_IE_LO10: OS << " %tie_lo10(" ; return true ;
79- case VK_TLS_IE_LD: OS << " %tie_ld(" ; return true ;
80- case VK_TLS_IE_LDX: OS << " %tie_ldx(" ; return true ;
81- case VK_TLS_IE_ADD: OS << " %tie_add(" ; return true ;
82- case VK_TLS_LE_HIX22: OS << " %tle_hix22(" ; return true ;
83- case VK_TLS_LE_LOX10: OS << " %tle_lox10(" ; return true ;
84- case VK_HIX22: OS << " %hix(" ; return true ;
85- case VK_LOX10: OS << " %lox(" ; return true ;
86- case VK_GOTDATA_HIX22: OS << " %gdop_hix22(" ; return true ;
87- case VK_GOTDATA_LOX10: OS << " %gdop_lox10(" ; return true ;
88- case VK_GOTDATA_OP: OS << " %gdop(" ; return true ;
54+ case VK_PC22: return " hi" ;
55+ case VK_PC10: return " lo" ;
56+ case VK_GOT22: return " hi" ;
57+ case VK_GOT10: return " lo" ;
58+ case VK_GOT13: return {};
59+ case VK_13: return {};
60+ case VK_WDISP30: return {};
61+ case VK_WPLT30: return {};
62+ case VK_R_DISP32: return " r_disp32" ;
63+ case VK_TLS_GD_HI22: return " tgd_hi22" ;
64+ case VK_TLS_GD_LO10: return " tgd_lo10" ;
65+ case VK_TLS_GD_ADD: return " tgd_add" ;
66+ case VK_TLS_GD_CALL: return " tgd_call" ;
67+ case VK_TLS_LDM_HI22: return " tldm_hi22" ;
68+ case VK_TLS_LDM_LO10: return " tldm_lo10" ;
69+ case VK_TLS_LDM_ADD: return " tldm_add" ;
70+ case VK_TLS_LDM_CALL: return " tldm_call" ;
71+ case VK_TLS_LDO_HIX22: return " tldo_hix22" ;
72+ case VK_TLS_LDO_LOX10: return " tldo_lox10" ;
73+ case VK_TLS_LDO_ADD: return " tldo_add" ;
74+ case VK_TLS_IE_HI22: return " tie_hi22" ;
75+ case VK_TLS_IE_LO10: return " tie_lo10" ;
76+ case VK_TLS_IE_LD: return " tie_ld" ;
77+ case VK_TLS_IE_LDX: return " tie_ldx" ;
78+ case VK_TLS_IE_ADD: return " tie_add" ;
79+ case VK_TLS_LE_HIX22: return " tle_hix22" ;
80+ case VK_TLS_LE_LOX10: return " tle_lox10" ;
81+ case VK_HIX22: return " hix" ;
82+ case VK_LOX10: return " lox" ;
83+ case VK_GOTDATA_HIX22: return " gdop_hix22" ;
84+ case VK_GOTDATA_LOX10: return " gdop_lox10" ;
85+ case VK_GOTDATA_OP: return " gdop" ;
8986 }
9087 // clang-format on
9188 llvm_unreachable (" Unhandled SparcMCExpr::Specifier" );
0 commit comments