diff options
author | Evan Cheng <evan.cheng@apple.com> | 2011-07-14 23:50:31 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2011-07-14 23:50:31 +0000 |
commit | 1abf2cb59b8d63415780a03329307c0997b2670c (patch) | |
tree | 40bd0acf3a26bd3417cfc81af3ef5f22631d7903 /lib/Target/CellSPU/MCTargetDesc | |
parent | e696436a7ef32d892e3f76f38e84146dacc232b5 (diff) | |
download | external_llvm-1abf2cb59b8d63415780a03329307c0997b2670c.zip external_llvm-1abf2cb59b8d63415780a03329307c0997b2670c.tar.gz external_llvm-1abf2cb59b8d63415780a03329307c0997b2670c.tar.bz2 |
Rename createAsmInfo to createMCAsmInfo and move registration code to MCTargetDesc to prepare for next round of changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135219 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/CellSPU/MCTargetDesc')
-rw-r--r-- | lib/Target/CellSPU/MCTargetDesc/CMakeLists.txt | 5 | ||||
-rw-r--r-- | lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.cpp | 39 | ||||
-rw-r--r-- | lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.h | 28 | ||||
-rw-r--r-- | lib/Target/CellSPU/MCTargetDesc/SPUMCTargetDesc.cpp | 11 |
4 files changed, 79 insertions, 4 deletions
diff --git a/lib/Target/CellSPU/MCTargetDesc/CMakeLists.txt b/lib/Target/CellSPU/MCTargetDesc/CMakeLists.txt index 87bc856..85fb258 100644 --- a/lib/Target/CellSPU/MCTargetDesc/CMakeLists.txt +++ b/lib/Target/CellSPU/MCTargetDesc/CMakeLists.txt @@ -1 +1,4 @@ -add_llvm_library(LLVMCellSPUDesc SPUMCTargetDesc.cpp) +add_llvm_library(LLVMCellSPUDesc + SPUMCTargetDesc.cpp + SPUMCAsmInfo.cpp + ) diff --git a/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.cpp b/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.cpp new file mode 100644 index 0000000..99aaeb0 --- /dev/null +++ b/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.cpp @@ -0,0 +1,39 @@ +//===-- SPUMCAsmInfo.cpp - Cell SPU asm properties ------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file contains the declarations of the SPUMCAsmInfo properties. +// +//===----------------------------------------------------------------------===// + +#include "SPUMCAsmInfo.h" +using namespace llvm; + +SPULinuxMCAsmInfo::SPULinuxMCAsmInfo(const Target &T, StringRef TT) { + ZeroDirective = "\t.space\t"; + Data64bitsDirective = "\t.quad\t"; + AlignmentIsInBytes = false; + + PCSymbol = "."; + CommentString = "#"; + GlobalPrefix = ""; + PrivateGlobalPrefix = ".L"; + + // Has leb128 + HasLEB128 = true; + + SupportsDebugInformation = true; + + // Exception handling is not supported on CellSPU (think about it: you only + // have 256K for code+data. Would you support exception handling?) + ExceptionsType = ExceptionHandling::None; + + // SPU assembly requires ".section" before ".bss" + UsesELFSectionDirectiveForBSS = true; +} + diff --git a/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.h b/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.h new file mode 100644 index 0000000..7f850d3 --- /dev/null +++ b/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.h @@ -0,0 +1,28 @@ +//===-- SPUMCAsmInfo.h - Cell SPU asm properties ---------------*- C++ -*--===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file contains the declaration of the SPUMCAsmInfo class. +// +//===----------------------------------------------------------------------===// + +#ifndef SPUTARGETASMINFO_H +#define SPUTARGETASMINFO_H + +#include "llvm/ADT/StringRef.h" +#include "llvm/MC/MCAsmInfo.h" + +namespace llvm { + class Target; + + struct SPULinuxMCAsmInfo : public MCAsmInfo { + explicit SPULinuxMCAsmInfo(const Target &T, StringRef TT); + }; +} // namespace llvm + +#endif /* SPUTARGETASMINFO_H */ diff --git a/lib/Target/CellSPU/MCTargetDesc/SPUMCTargetDesc.cpp b/lib/Target/CellSPU/MCTargetDesc/SPUMCTargetDesc.cpp index a323625..26c5a4b 100644 --- a/lib/Target/CellSPU/MCTargetDesc/SPUMCTargetDesc.cpp +++ b/lib/Target/CellSPU/MCTargetDesc/SPUMCTargetDesc.cpp @@ -12,6 +12,7 @@ //===----------------------------------------------------------------------===// #include "SPUMCTargetDesc.h" +#include "SPUMCAsmInfo.h" #include "llvm/MC/MCInstrInfo.h" #include "llvm/MC/MCRegisterInfo.h" #include "llvm/MC/MCSubtargetInfo.h" @@ -28,7 +29,7 @@ using namespace llvm; -MCInstrInfo *createSPUMCInstrInfo() { +static MCInstrInfo *createSPUMCInstrInfo() { MCInstrInfo *X = new MCInstrInfo(); InitSPUMCInstrInfo(X); return X; @@ -38,8 +39,8 @@ extern "C" void LLVMInitializeCellSPUMCInstrInfo() { TargetRegistry::RegisterMCInstrInfo(TheCellSPUTarget, createSPUMCInstrInfo); } -MCSubtargetInfo *createSPUMCSubtargetInfo(StringRef TT, StringRef CPU, - StringRef FS) { +static MCSubtargetInfo *createSPUMCSubtargetInfo(StringRef TT, StringRef CPU, + StringRef FS) { MCSubtargetInfo *X = new MCSubtargetInfo(); InitSPUMCSubtargetInfo(X, TT, CPU, FS); return X; @@ -49,3 +50,7 @@ extern "C" void LLVMInitializeCellSPUMCSubtargetInfo() { TargetRegistry::RegisterMCSubtargetInfo(TheCellSPUTarget, createSPUMCSubtargetInfo); } + +extern "C" void LLVMInitializeCellSPUMCAsmInfo() { + RegisterMCAsmInfo<SPULinuxMCAsmInfo> X(TheCellSPUTarget); +} |