X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FX86%2FX86.h;h=9b1fcedb963ae7fb453a878ae91e43e44dc37412;hb=9f44b3a4111f8f766511fdb5dd7cf2c3eae5fc54;hp=3f5332368c51625bfef2c5ee48b1bfba3d016d2c;hpb=559806f575297866609c7bef0e5c1084dcdda9a5;p=oota-llvm.git diff --git a/lib/Target/X86/X86.h b/lib/Target/X86/X86.h index 3f5332368c5..9b1fcedb963 100644 --- a/lib/Target/X86/X86.h +++ b/lib/Target/X86/X86.h @@ -2,8 +2,8 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // @@ -15,33 +15,21 @@ #ifndef TARGET_X86_H #define TARGET_X86_H -#include +#include "llvm/Target/TargetMachine.h" namespace llvm { -class TargetMachine; -class PassManager; +class X86TargetMachine; class FunctionPass; -class IntrinsicLowering; class MachineCodeEmitter; - -extern bool X86DAGIsel; - -/// createX86ISelPattern - This pass converts an LLVM function into a -/// machine code representation using pattern matching and a machine -/// description file. -/// -FunctionPass *createX86ISelPattern(TargetMachine &TM); +class JITCodeEmitter; +class raw_ostream; /// createX86ISelDag - This pass converts a legalized DAG into a /// X86-specific DAG, ready for instruction scheduling. /// -FunctionPass *createX86ISelDag(TargetMachine &TM); - -/// createX86PeepholeOptimizer - Create a pass to perform X86 specific peephole -/// optimizations. -/// -FunctionPass *createX86PeepholeOptimizerPass(); +FunctionPass *createX86ISelDag(X86TargetMachine &TM, + CodeGenOpt::Level OptLevel); /// createX86FloatingPointStackifierPass - This function returns a pass which /// converts floating point register references and pseudo instructions into @@ -49,21 +37,27 @@ FunctionPass *createX86PeepholeOptimizerPass(); /// FunctionPass *createX86FloatingPointStackifierPass(); +/// createX87FPRegKillInserterPass - This function returns a pass which +/// inserts FP_REG_KILL instructions where needed. +/// +FunctionPass *createX87FPRegKillInserterPass(); + /// createX86CodePrinterPass - Returns a pass that prints the X86 /// assembly code for a MachineFunction to the given output stream, /// using the given target machine description. /// -FunctionPass *createX86CodePrinterPass(std::ostream &o, TargetMachine &tm); +FunctionPass *createX86CodePrinterPass(raw_ostream &o, X86TargetMachine &tm, + bool Verbose); /// createX86CodeEmitterPass - Return a pass that emits the collected X86 code /// to the specified MCE object. -FunctionPass *createX86CodeEmitterPass(MachineCodeEmitter &MCE); -/// addX86ELFObjectWriterPass - Add passes to the FPM that output the generated -/// code as an ELF object file. -/// -void addX86ELFObjectWriterPass(PassManager &FPM, - std::ostream &o, TargetMachine &tm); +FunctionPass *createX86CodeEmitterPass(X86TargetMachine &TM, + MachineCodeEmitter &MCE); +FunctionPass *createX86JITCodeEmitterPass(X86TargetMachine &TM, + JITCodeEmitter &JCE); +FunctionPass *createX86ObjectCodeEmitterPass(X86TargetMachine &TM, + ObjectCodeEmitter &OCE); /// createX86EmitCodeToMemory - Returns a pass that converts a register /// allocated function into raw machine code in a dynamically @@ -71,6 +65,11 @@ void addX86ELFObjectWriterPass(PassManager &FPM, /// FunctionPass *createEmitX86CodeToMemory(); +/// createX86MaxStackAlignmentCalculatorPass - This function returns a pass +/// which calculates maximal stack alignment required for function +/// +FunctionPass *createX86MaxStackAlignmentCalculatorPass(); + } // End llvm namespace // Defines symbolic names for X86 registers. This defines a mapping from