Home | History | Annotate | Download | only in SystemZ
      1 //===-- SystemZTargetMachine.cpp - Define TargetMachine for SystemZ -------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 #include "SystemZTargetMachine.h"
     11 #include "SystemZ.h"
     12 #include "llvm/PassManager.h"
     13 #include "llvm/Support/TargetRegistry.h"
     14 using namespace llvm;
     15 
     16 extern "C" void LLVMInitializeSystemZTarget() {
     17   // Register the target.
     18   RegisterTargetMachine<SystemZTargetMachine> X(TheSystemZTarget);
     19 }
     20 
     21 /// SystemZTargetMachine ctor - Create an ILP64 architecture model
     22 ///
     23 SystemZTargetMachine::SystemZTargetMachine(const Target &T,
     24                                            StringRef TT, StringRef CPU,
     25                                            StringRef FS, Reloc::Model RM,
     26                                            CodeModel::Model CM)
     27   : LLVMTargetMachine(T, TT, CPU, FS, RM, CM),
     28     Subtarget(TT, CPU, FS),
     29     DataLayout("E-p:64:64:64-i8:8:16-i16:16:16-i32:32:32-i64:64:64-f32:32:32"
     30                "-f64:64:64-f128:128:128-a0:16:16-n32:64"),
     31     InstrInfo(*this), TLInfo(*this), TSInfo(*this),
     32     FrameLowering(Subtarget) {
     33 }
     34 
     35 bool SystemZTargetMachine::addInstSelector(PassManagerBase &PM,
     36                                           CodeGenOpt::Level OptLevel) {
     37   // Install an instruction selector.
     38   PM.add(createSystemZISelDag(*this, OptLevel));
     39   return false;
     40 }
     41