aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC/MCExpr.cpp
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2024-09-05 19:45:53 +0200
committerGitHub <noreply@github.com>2024-09-05 19:45:53 +0200
commitbedac64d36dce88ea25bd444c60eaac7d420550e (patch)
tree470b4d38bdbb1995f6b1e34ee87b164a025cfa6c /llvm/lib/MC/MCExpr.cpp
parentebc7f5578033248ce7de52a7f374332a2fc201aa (diff)
downloadllvm-bedac64d36dce88ea25bd444c60eaac7d420550e.zip
llvm-bedac64d36dce88ea25bd444c60eaac7d420550e.tar.gz
llvm-bedac64d36dce88ea25bd444c60eaac7d420550e.tar.bz2
[llvm][SystemZ] Recognize `@GOTENT` modifier in assembler. (#107038)
Closes #105918. I'm unsure if there are other places that need to be updated for this.
Diffstat (limited to 'llvm/lib/MC/MCExpr.cpp')
-rw-r--r--llvm/lib/MC/MCExpr.cpp264
1 files changed, 133 insertions, 131 deletions
diff --git a/llvm/lib/MC/MCExpr.cpp b/llvm/lib/MC/MCExpr.cpp
index e4ca431..c9d5f65 100644
--- a/llvm/lib/MC/MCExpr.cpp
+++ b/llvm/lib/MC/MCExpr.cpp
@@ -226,6 +226,7 @@ StringRef MCSymbolRefExpr::getVariantKindName(VariantKind Kind) {
case VK_DTPOFF: return "DTPOFF";
case VK_DTPREL: return "DTPREL";
case VK_GOT: return "GOT";
+ case VK_GOTENT: return "GOTENT";
case VK_GOTOFF: return "GOTOFF";
case VK_GOTREL: return "GOTREL";
case VK_PCREL: return "PCREL";
@@ -404,137 +405,138 @@ StringRef MCSymbolRefExpr::getVariantKindName(VariantKind Kind) {
MCSymbolRefExpr::VariantKind
MCSymbolRefExpr::getVariantKindForName(StringRef Name) {
return StringSwitch<VariantKind>(Name.lower())
- .Case("dtprel", VK_DTPREL)
- .Case("dtpoff", VK_DTPOFF)
- .Case("got", VK_GOT)
- .Case("gotoff", VK_GOTOFF)
- .Case("gotrel", VK_GOTREL)
- .Case("pcrel", VK_PCREL)
- .Case("gotpcrel", VK_GOTPCREL)
- .Case("gotpcrel_norelax", VK_GOTPCREL_NORELAX)
- .Case("gottpoff", VK_GOTTPOFF)
- .Case("indntpoff", VK_INDNTPOFF)
- .Case("ntpoff", VK_NTPOFF)
- .Case("gotntpoff", VK_GOTNTPOFF)
- .Case("plt", VK_PLT)
- .Case("tlscall", VK_TLSCALL)
- .Case("tlsdesc", VK_TLSDESC)
- .Case("tlsgd", VK_TLSGD)
- .Case("tlsld", VK_TLSLD)
- .Case("tlsldm", VK_TLSLDM)
- .Case("tpoff", VK_TPOFF)
- .Case("tprel", VK_TPREL)
- .Case("tlvp", VK_TLVP)
- .Case("tlvppage", VK_TLVPPAGE)
- .Case("tlvppageoff", VK_TLVPPAGEOFF)
- .Case("page", VK_PAGE)
- .Case("pageoff", VK_PAGEOFF)
- .Case("gotpage", VK_GOTPAGE)
- .Case("gotpageoff", VK_GOTPAGEOFF)
- .Case("imgrel", VK_COFF_IMGREL32)
- .Case("secrel32", VK_SECREL)
- .Case("size", VK_SIZE)
- .Case("abs8", VK_X86_ABS8)
- .Case("pltoff", VK_X86_PLTOFF)
- .Case("l", VK_PPC_LO)
- .Case("h", VK_PPC_HI)
- .Case("ha", VK_PPC_HA)
- .Case("high", VK_PPC_HIGH)
- .Case("higha", VK_PPC_HIGHA)
- .Case("higher", VK_PPC_HIGHER)
- .Case("highera", VK_PPC_HIGHERA)
- .Case("highest", VK_PPC_HIGHEST)
- .Case("highesta", VK_PPC_HIGHESTA)
- .Case("got@l", VK_PPC_GOT_LO)
- .Case("got@h", VK_PPC_GOT_HI)
- .Case("got@ha", VK_PPC_GOT_HA)
- .Case("local", VK_PPC_LOCAL)
- .Case("tocbase", VK_PPC_TOCBASE)
- .Case("toc", VK_PPC_TOC)
- .Case("toc@l", VK_PPC_TOC_LO)
- .Case("toc@h", VK_PPC_TOC_HI)
- .Case("toc@ha", VK_PPC_TOC_HA)
- .Case("u", VK_PPC_U)
- .Case("l", VK_PPC_L)
- .Case("tls", VK_PPC_TLS)
- .Case("dtpmod", VK_PPC_DTPMOD)
- .Case("tprel@l", VK_PPC_TPREL_LO)
- .Case("tprel@h", VK_PPC_TPREL_HI)
- .Case("tprel@ha", VK_PPC_TPREL_HA)
- .Case("tprel@high", VK_PPC_TPREL_HIGH)
- .Case("tprel@higha", VK_PPC_TPREL_HIGHA)
- .Case("tprel@higher", VK_PPC_TPREL_HIGHER)
- .Case("tprel@highera", VK_PPC_TPREL_HIGHERA)
- .Case("tprel@highest", VK_PPC_TPREL_HIGHEST)
- .Case("tprel@highesta", VK_PPC_TPREL_HIGHESTA)
- .Case("dtprel@l", VK_PPC_DTPREL_LO)
- .Case("dtprel@h", VK_PPC_DTPREL_HI)
- .Case("dtprel@ha", VK_PPC_DTPREL_HA)
- .Case("dtprel@high", VK_PPC_DTPREL_HIGH)
- .Case("dtprel@higha", VK_PPC_DTPREL_HIGHA)
- .Case("dtprel@higher", VK_PPC_DTPREL_HIGHER)
- .Case("dtprel@highera", VK_PPC_DTPREL_HIGHERA)
- .Case("dtprel@highest", VK_PPC_DTPREL_HIGHEST)
- .Case("dtprel@highesta", VK_PPC_DTPREL_HIGHESTA)
- .Case("got@tprel", VK_PPC_GOT_TPREL)
- .Case("got@tprel@l", VK_PPC_GOT_TPREL_LO)
- .Case("got@tprel@h", VK_PPC_GOT_TPREL_HI)
- .Case("got@tprel@ha", VK_PPC_GOT_TPREL_HA)
- .Case("got@dtprel", VK_PPC_GOT_DTPREL)
- .Case("got@dtprel@l", VK_PPC_GOT_DTPREL_LO)
- .Case("got@dtprel@h", VK_PPC_GOT_DTPREL_HI)
- .Case("got@dtprel@ha", VK_PPC_GOT_DTPREL_HA)
- .Case("got@tlsgd", VK_PPC_GOT_TLSGD)
- .Case("got@tlsgd@l", VK_PPC_GOT_TLSGD_LO)
- .Case("got@tlsgd@h", VK_PPC_GOT_TLSGD_HI)
- .Case("got@tlsgd@ha", VK_PPC_GOT_TLSGD_HA)
- .Case("got@tlsld", VK_PPC_GOT_TLSLD)
- .Case("got@tlsld@l", VK_PPC_GOT_TLSLD_LO)
- .Case("got@tlsld@h", VK_PPC_GOT_TLSLD_HI)
- .Case("got@tlsld@ha", VK_PPC_GOT_TLSLD_HA)
- .Case("got@pcrel", VK_PPC_GOT_PCREL)
- .Case("got@tlsgd@pcrel", VK_PPC_GOT_TLSGD_PCREL)
- .Case("got@tlsld@pcrel", VK_PPC_GOT_TLSLD_PCREL)
- .Case("got@tprel@pcrel", VK_PPC_GOT_TPREL_PCREL)
- .Case("tls@pcrel", VK_PPC_TLS_PCREL)
- .Case("notoc", VK_PPC_NOTOC)
- .Case("gdgot", VK_Hexagon_GD_GOT)
- .Case("gdplt", VK_Hexagon_GD_PLT)
- .Case("iegot", VK_Hexagon_IE_GOT)
- .Case("ie", VK_Hexagon_IE)
- .Case("ldgot", VK_Hexagon_LD_GOT)
- .Case("ldplt", VK_Hexagon_LD_PLT)
- .Case("lo8", VK_AVR_LO8)
- .Case("hi8", VK_AVR_HI8)
- .Case("hlo8", VK_AVR_HLO8)
- .Case("typeindex", VK_WASM_TYPEINDEX)
- .Case("tbrel", VK_WASM_TBREL)
- .Case("mbrel", VK_WASM_MBREL)
- .Case("tlsrel", VK_WASM_TLSREL)
- .Case("got@tls", VK_WASM_GOT_TLS)
- .Case("funcindex", VK_WASM_FUNCINDEX)
- .Case("gotpcrel32@lo", VK_AMDGPU_GOTPCREL32_LO)
- .Case("gotpcrel32@hi", VK_AMDGPU_GOTPCREL32_HI)
- .Case("rel32@lo", VK_AMDGPU_REL32_LO)
- .Case("rel32@hi", VK_AMDGPU_REL32_HI)
- .Case("rel64", VK_AMDGPU_REL64)
- .Case("abs32@lo", VK_AMDGPU_ABS32_LO)
- .Case("abs32@hi", VK_AMDGPU_ABS32_HI)
- .Case("hi", VK_VE_HI32)
- .Case("lo", VK_VE_LO32)
- .Case("pc_hi", VK_VE_PC_HI32)
- .Case("pc_lo", VK_VE_PC_LO32)
- .Case("got_hi", VK_VE_GOT_HI32)
- .Case("got_lo", VK_VE_GOT_LO32)
- .Case("gotoff_hi", VK_VE_GOTOFF_HI32)
- .Case("gotoff_lo", VK_VE_GOTOFF_LO32)
- .Case("plt_hi", VK_VE_PLT_HI32)
- .Case("plt_lo", VK_VE_PLT_LO32)
- .Case("tls_gd_hi", VK_VE_TLS_GD_HI32)
- .Case("tls_gd_lo", VK_VE_TLS_GD_LO32)
- .Case("tpoff_hi", VK_VE_TPOFF_HI32)
- .Case("tpoff_lo", VK_VE_TPOFF_LO32)
- .Default(VK_Invalid);
+ .Case("dtprel", VK_DTPREL)
+ .Case("dtpoff", VK_DTPOFF)
+ .Case("got", VK_GOT)
+ .Case("gotent", VK_GOTENT)
+ .Case("gotoff", VK_GOTOFF)
+ .Case("gotrel", VK_GOTREL)
+ .Case("pcrel", VK_PCREL)
+ .Case("gotpcrel", VK_GOTPCREL)
+ .Case("gotpcrel_norelax", VK_GOTPCREL_NORELAX)
+ .Case("gottpoff", VK_GOTTPOFF)
+ .Case("indntpoff", VK_INDNTPOFF)
+ .Case("ntpoff", VK_NTPOFF)
+ .Case("gotntpoff", VK_GOTNTPOFF)
+ .Case("plt", VK_PLT)
+ .Case("tlscall", VK_TLSCALL)
+ .Case("tlsdesc", VK_TLSDESC)
+ .Case("tlsgd", VK_TLSGD)
+ .Case("tlsld", VK_TLSLD)
+ .Case("tlsldm", VK_TLSLDM)
+ .Case("tpoff", VK_TPOFF)
+ .Case("tprel", VK_TPREL)
+ .Case("tlvp", VK_TLVP)
+ .Case("tlvppage", VK_TLVPPAGE)
+ .Case("tlvppageoff", VK_TLVPPAGEOFF)
+ .Case("page", VK_PAGE)
+ .Case("pageoff", VK_PAGEOFF)
+ .Case("gotpage", VK_GOTPAGE)
+ .Case("gotpageoff", VK_GOTPAGEOFF)
+ .Case("imgrel", VK_COFF_IMGREL32)
+ .Case("secrel32", VK_SECREL)
+ .Case("size", VK_SIZE)
+ .Case("abs8", VK_X86_ABS8)
+ .Case("pltoff", VK_X86_PLTOFF)
+ .Case("l", VK_PPC_LO)
+ .Case("h", VK_PPC_HI)
+ .Case("ha", VK_PPC_HA)
+ .Case("high", VK_PPC_HIGH)
+ .Case("higha", VK_PPC_HIGHA)
+ .Case("higher", VK_PPC_HIGHER)
+ .Case("highera", VK_PPC_HIGHERA)
+ .Case("highest", VK_PPC_HIGHEST)
+ .Case("highesta", VK_PPC_HIGHESTA)
+ .Case("got@l", VK_PPC_GOT_LO)
+ .Case("got@h", VK_PPC_GOT_HI)
+ .Case("got@ha", VK_PPC_GOT_HA)
+ .Case("local", VK_PPC_LOCAL)
+ .Case("tocbase", VK_PPC_TOCBASE)
+ .Case("toc", VK_PPC_TOC)
+ .Case("toc@l", VK_PPC_TOC_LO)
+ .Case("toc@h", VK_PPC_TOC_HI)
+ .Case("toc@ha", VK_PPC_TOC_HA)
+ .Case("u", VK_PPC_U)
+ .Case("l", VK_PPC_L)
+ .Case("tls", VK_PPC_TLS)
+ .Case("dtpmod", VK_PPC_DTPMOD)
+ .Case("tprel@l", VK_PPC_TPREL_LO)
+ .Case("tprel@h", VK_PPC_TPREL_HI)
+ .Case("tprel@ha", VK_PPC_TPREL_HA)
+ .Case("tprel@high", VK_PPC_TPREL_HIGH)
+ .Case("tprel@higha", VK_PPC_TPREL_HIGHA)
+ .Case("tprel@higher", VK_PPC_TPREL_HIGHER)
+ .Case("tprel@highera", VK_PPC_TPREL_HIGHERA)
+ .Case("tprel@highest", VK_PPC_TPREL_HIGHEST)
+ .Case("tprel@highesta", VK_PPC_TPREL_HIGHESTA)
+ .Case("dtprel@l", VK_PPC_DTPREL_LO)
+ .Case("dtprel@h", VK_PPC_DTPREL_HI)
+ .Case("dtprel@ha", VK_PPC_DTPREL_HA)
+ .Case("dtprel@high", VK_PPC_DTPREL_HIGH)
+ .Case("dtprel@higha", VK_PPC_DTPREL_HIGHA)
+ .Case("dtprel@higher", VK_PPC_DTPREL_HIGHER)
+ .Case("dtprel@highera", VK_PPC_DTPREL_HIGHERA)
+ .Case("dtprel@highest", VK_PPC_DTPREL_HIGHEST)
+ .Case("dtprel@highesta", VK_PPC_DTPREL_HIGHESTA)
+ .Case("got@tprel", VK_PPC_GOT_TPREL)
+ .Case("got@tprel@l", VK_PPC_GOT_TPREL_LO)
+ .Case("got@tprel@h", VK_PPC_GOT_TPREL_HI)
+ .Case("got@tprel@ha", VK_PPC_GOT_TPREL_HA)
+ .Case("got@dtprel", VK_PPC_GOT_DTPREL)
+ .Case("got@dtprel@l", VK_PPC_GOT_DTPREL_LO)
+ .Case("got@dtprel@h", VK_PPC_GOT_DTPREL_HI)
+ .Case("got@dtprel@ha", VK_PPC_GOT_DTPREL_HA)
+ .Case("got@tlsgd", VK_PPC_GOT_TLSGD)
+ .Case("got@tlsgd@l", VK_PPC_GOT_TLSGD_LO)
+ .Case("got@tlsgd@h", VK_PPC_GOT_TLSGD_HI)
+ .Case("got@tlsgd@ha", VK_PPC_GOT_TLSGD_HA)
+ .Case("got@tlsld", VK_PPC_GOT_TLSLD)
+ .Case("got@tlsld@l", VK_PPC_GOT_TLSLD_LO)
+ .Case("got@tlsld@h", VK_PPC_GOT_TLSLD_HI)
+ .Case("got@tlsld@ha", VK_PPC_GOT_TLSLD_HA)
+ .Case("got@pcrel", VK_PPC_GOT_PCREL)
+ .Case("got@tlsgd@pcrel", VK_PPC_GOT_TLSGD_PCREL)
+ .Case("got@tlsld@pcrel", VK_PPC_GOT_TLSLD_PCREL)
+ .Case("got@tprel@pcrel", VK_PPC_GOT_TPREL_PCREL)
+ .Case("tls@pcrel", VK_PPC_TLS_PCREL)
+ .Case("notoc", VK_PPC_NOTOC)
+ .Case("gdgot", VK_Hexagon_GD_GOT)
+ .Case("gdplt", VK_Hexagon_GD_PLT)
+ .Case("iegot", VK_Hexagon_IE_GOT)
+ .Case("ie", VK_Hexagon_IE)
+ .Case("ldgot", VK_Hexagon_LD_GOT)
+ .Case("ldplt", VK_Hexagon_LD_PLT)
+ .Case("lo8", VK_AVR_LO8)
+ .Case("hi8", VK_AVR_HI8)
+ .Case("hlo8", VK_AVR_HLO8)
+ .Case("typeindex", VK_WASM_TYPEINDEX)
+ .Case("tbrel", VK_WASM_TBREL)
+ .Case("mbrel", VK_WASM_MBREL)
+ .Case("tlsrel", VK_WASM_TLSREL)
+ .Case("got@tls", VK_WASM_GOT_TLS)
+ .Case("funcindex", VK_WASM_FUNCINDEX)
+ .Case("gotpcrel32@lo", VK_AMDGPU_GOTPCREL32_LO)
+ .Case("gotpcrel32@hi", VK_AMDGPU_GOTPCREL32_HI)
+ .Case("rel32@lo", VK_AMDGPU_REL32_LO)
+ .Case("rel32@hi", VK_AMDGPU_REL32_HI)
+ .Case("rel64", VK_AMDGPU_REL64)
+ .Case("abs32@lo", VK_AMDGPU_ABS32_LO)
+ .Case("abs32@hi", VK_AMDGPU_ABS32_HI)
+ .Case("hi", VK_VE_HI32)
+ .Case("lo", VK_VE_LO32)
+ .Case("pc_hi", VK_VE_PC_HI32)
+ .Case("pc_lo", VK_VE_PC_LO32)
+ .Case("got_hi", VK_VE_GOT_HI32)
+ .Case("got_lo", VK_VE_GOT_LO32)
+ .Case("gotoff_hi", VK_VE_GOTOFF_HI32)
+ .Case("gotoff_lo", VK_VE_GOTOFF_LO32)
+ .Case("plt_hi", VK_VE_PLT_HI32)
+ .Case("plt_lo", VK_VE_PLT_LO32)
+ .Case("tls_gd_hi", VK_VE_TLS_GD_HI32)
+ .Case("tls_gd_lo", VK_VE_TLS_GD_LO32)
+ .Case("tpoff_hi", VK_VE_TPOFF_HI32)
+ .Case("tpoff_lo", VK_VE_TPOFF_LO32)
+ .Default(VK_Invalid);
}
/* *** */