Home | History | Annotate | Download | only in Alpha
      1 //===-- AlphaTargetMachine.cpp - Define TargetMachine for Alpha -----------===//
      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 //
     11 //===----------------------------------------------------------------------===//
     12 
     13 #include "Alpha.h"
     14 #include "AlphaTargetMachine.h"
     15 #include "llvm/PassManager.h"
     16 #include "llvm/Support/FormattedStream.h"
     17 #include "llvm/Support/TargetRegistry.h"
     18 using namespace llvm;
     19 
     20 extern "C" void LLVMInitializeAlphaTarget() {
     21   // Register the target.
     22   RegisterTargetMachine<AlphaTargetMachine> X(TheAlphaTarget);
     23 }
     24 
     25 AlphaTargetMachine::AlphaTargetMachine(const Target &T, StringRef TT,
     26                                        StringRef CPU, StringRef FS,
     27                                        Reloc::Model RM, CodeModel::Model CM)
     28   : LLVMTargetMachine(T, TT, CPU, FS, RM, CM),
     29     DataLayout("e-f128:128:128-n64"),
     30     FrameLowering(Subtarget),
     31     Subtarget(TT, CPU, FS),
     32     TLInfo(*this),
     33     TSInfo(*this) {
     34 }
     35 
     36 //===----------------------------------------------------------------------===//
     37 // Pass Pipeline Configuration
     38 //===----------------------------------------------------------------------===//
     39 
     40 bool AlphaTargetMachine::addInstSelector(PassManagerBase &PM,
     41                                          CodeGenOpt::Level OptLevel) {
     42   PM.add(createAlphaISelDag(*this));
     43   return false;
     44 }
     45 bool AlphaTargetMachine::addPreEmitPass(PassManagerBase &PM,
     46                                         CodeGenOpt::Level OptLevel) {
     47   // Must run branch selection immediately preceding the asm printer
     48   PM.add(createAlphaBranchSelectionPass());
     49   PM.add(createAlphaLLRPPass(*this));
     50   return false;
     51 }
     52