diff options
| author | Christian Pirker <cpirker@a-bix.com> | 2014-02-24 11:34:50 +0000 |
|---|---|---|
| committer | Christian Pirker <cpirker@a-bix.com> | 2014-02-24 11:34:50 +0000 |
| commit | 6c2f4d45e1bb039d51bab4100fbc2b8200fc60eb (patch) | |
| tree | b78374e0fcca386f38bcf672fc3402f3f08ebb92 /llvm/lib/Target/AArch64/AArch64TargetMachine.cpp | |
| parent | a2fee5d907ddf9eed6a7e147032ca09e6f6016b8 (diff) | |
| download | bcm5719-llvm-6c2f4d45e1bb039d51bab4100fbc2b8200fc60eb.tar.gz bcm5719-llvm-6c2f4d45e1bb039d51bab4100fbc2b8200fc60eb.zip | |
Add AArch64 big endian Target (aarch64_be)
llvm-svn: 202024
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64TargetMachine.cpp')
| -rw-r--r-- | llvm/lib/Target/AArch64/AArch64TargetMachine.cpp | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp index 77bdf002f74..d9c990d7d56 100644 --- a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp +++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp @@ -23,24 +23,46 @@ using namespace llvm; extern "C" void LLVMInitializeAArch64Target() { - RegisterTargetMachine<AArch64TargetMachine> X(TheAArch64Target); + RegisterTargetMachine<AArch64leTargetMachine> X(TheAArch64leTarget); + RegisterTargetMachine<AArch64beTargetMachine> Y(TheAArch64beTarget); } AArch64TargetMachine::AArch64TargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, - CodeGenOpt::Level OL) + CodeGenOpt::Level OL, + bool LittleEndian) : LLVMTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL), - Subtarget(TT, CPU, FS), + Subtarget(TT, CPU, FS, LittleEndian), InstrInfo(Subtarget), - DL("e-m:e-i64:64-i128:128-n32:64-S128"), + DL(LittleEndian ? + "e-m:e-i64:64-i128:128-n32:64-S128" : + "E-m:e-i64:64-i128:128-n32:64-S128"), TLInfo(*this), TSInfo(*this), FrameLowering(Subtarget) { initAsmInfo(); } +void AArch64leTargetMachine::anchor() { } + +AArch64leTargetMachine:: +AArch64leTargetMachine(const Target &T, StringRef TT, + StringRef CPU, StringRef FS, const TargetOptions &Options, + Reloc::Model RM, CodeModel::Model CM, + CodeGenOpt::Level OL) + : AArch64TargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, true) {} + +void AArch64beTargetMachine::anchor() { } + +AArch64beTargetMachine:: +AArch64beTargetMachine(const Target &T, StringRef TT, + StringRef CPU, StringRef FS, const TargetOptions &Options, + Reloc::Model RM, CodeModel::Model CM, + CodeGenOpt::Level OL) + : AArch64TargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, false) {} + void AArch64TargetMachine::addAnalysisPasses(PassManagerBase &PM) { // Add first the target-independent BasicTTI pass, then our AArch64 pass. This // allows the AArch64 pass to delegate to the target independent layer when |

