@@ -30,62 +30,59 @@ const SparcMCExpr *SparcMCExpr::create(Specifier S, const MCExpr *Expr,
30
30
}
31
31
32
32
void 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 ())
40
38
OS << ' )' ;
41
39
}
42
40
43
- bool SparcMCExpr::printSpecifier (raw_ostream &OS, Specifier S) {
41
+ StringRef SparcMCExpr::getSpecifierName (SparcMCExpr:: Specifier S) {
44
42
// clang-format off
45
43
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 " ;
55
53
// 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" ;
89
86
}
90
87
// clang-format on
91
88
llvm_unreachable (" Unhandled SparcMCExpr::Specifier" );
0 commit comments