This patch is the initial support for the General Dynamic Thread Local
Local Storage model to produce code sequence and relocations correct
to the ABI for the model when using PC relative memory operations.
Patch by: NeHuang
Paths
| Differential D82315
[PowerPC][PCRelative] Thread Local Storage Support for General Dynamic ClosedPublic Authored by kamaub on Jun 22 2020, 9:46 AM.
Details
Summary This patch is the initial support for the General Dynamic Thread Local Patch by: NeHuang
Diff Detail
Unit TestsFailed Event TimelineComment Actions Adding a combination flag to more explicitly set the bits needed to produce kamaub added a child revision: D81947: [PowerPC][PCRelative] Thread Local Storage Support for Initial Exec.Jun 26 2020, 9:57 AM Comment Actions Bunch of nits but overall the idea is fine. I only had one real concern with respect to the setup of InReg and you can find that in the comments.
Comment Actions
kamaub marked 7 inline comments as done. Comment Actions
Comment Actions I think the tests can be cleaned up a little but otherwise this LGTM.
This revision is now accepted and ready to land.Jul 16 2020, 2:45 PM Comment Actions Addressing review comments and updating test cases:
kamaub added a parent revision: D85448: [PowerPC][PCRelative] Set TLS unsupported with PC relative memops.Aug 6 2020, 12:10 PM This revision was landed with ongoing or failed builds.Aug 20 2020, 1:08 PM Closed by commit rGb74b80bb2d31: [PowerPC][PCRelative] Thread Local Storage Support for General Dynamic (authored by kamaub). · Explain Why This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 273481 llvm/include/llvm/BinaryFormat/ELFRelocs/PowerPC64.def
llvm/include/llvm/MC/MCExpr.h
llvm/lib/MC/MCExpr.cpp
llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp
llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp
llvm/lib/Target/PowerPC/PPC.h
llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
llvm/lib/Target/PowerPC/PPCISelLowering.h
llvm/lib/Target/PowerPC/PPCISelLowering.cpp
llvm/lib/Target/PowerPC/PPCInstr64Bit.td
llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
llvm/lib/Target/PowerPC/PPCInstrInfo.td
llvm/lib/Target/PowerPC/PPCInstrPrefix.td
llvm/lib/Target/PowerPC/PPCMCInstLower.cpp
llvm/lib/Target/PowerPC/PPCTLSDynamicCall.cpp
llvm/test/CodeGen/PowerPC/pcrel-tls-general-dynamic.ll
llvm/test/MC/PowerPC/pcrel-tls-general-dynamic-address-load-reloc.s
llvm/test/MC/PowerPC/pcrel-tls-general-dynamic-value-load-reloc.s
|
nit:
That comment is confusing a couple of things.
The reason we have to do all of this special handling is because we don't want:
We want:
Maybe: