summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC/PPCAsmBackend.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-12-16 03:20:06 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-12-16 03:20:06 +0000
commit0c9d9fdd81a248369c822025dea11ddd0884944c (patch)
tree0732de3a40ff43349299cb306d47e68697b4f635 /llvm/lib/Target/PowerPC/PPCAsmBackend.cpp
parente4ec90e990e0d84282c79cae6e221a36b81d7665 (diff)
downloadbcm5719-llvm-0c9d9fdd81a248369c822025dea11ddd0884944c.tar.gz
bcm5719-llvm-0c9d9fdd81a248369c822025dea11ddd0884944c.zip
MC: Move target specific fixup info descriptors to TargetAsmBackend instead of
the MCCodeEmitter, which seems like a better organization. - Also, cleaned up some magic constants while in the area. llvm-svn: 121953
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCAsmBackend.cpp')
-rw-r--r--llvm/lib/Target/PowerPC/PPCAsmBackend.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCAsmBackend.cpp b/llvm/lib/Target/PowerPC/PPCAsmBackend.cpp
index 29598adfd43..3ee8e8e7899 100644
--- a/llvm/lib/Target/PowerPC/PPCAsmBackend.cpp
+++ b/llvm/lib/Target/PowerPC/PPCAsmBackend.cpp
@@ -22,6 +22,26 @@ namespace {
const Target &TheTarget;
public:
PPCAsmBackend(const Target &T) : TargetAsmBackend(), TheTarget(T) {}
+
+ unsigned getNumFixupKinds() const { return PPC::NumTargetFixupKinds; }
+
+ const MCFixupKindInfo &getFixupKindInfo(MCFixupKind Kind) const {
+ const static MCFixupKindInfo Infos[PPC::NumTargetFixupKinds] = {
+ // name offset bits flags
+ { "fixup_ppc_br24", 6, 24, MCFixupKindInfo::FKF_IsPCRel },
+ { "fixup_ppc_brcond14", 16, 14, MCFixupKindInfo::FKF_IsPCRel },
+ { "fixup_ppc_lo16", 16, 16, 0 },
+ { "fixup_ppc_ha16", 16, 16, 0 },
+ { "fixup_ppc_lo14", 16, 14, 0 }
+ };
+
+ if (Kind < FirstTargetFixupKind)
+ return TargetAsmBackend::getFixupKindInfo(Kind);
+
+ assert(unsigned(Kind - FirstTargetFixupKind) < getNumFixupKinds() &&
+ "Invalid kind!");
+ return Infos[Kind - FirstTargetFixupKind];
+ }
bool MayNeedRelaxation(const MCInst &Inst) const {
// FIXME.
OpenPOWER on IntegriCloud