LLVM API Documentation

X86.h

Go to the documentation of this file.
00001 //===-- X86.h - Top-level interface for X86 representation ------*- C++ -*-===//
00002 //
00003 //                     The LLVM Compiler Infrastructure
00004 //
00005 // This file was developed by the LLVM research group and is distributed under
00006 // the University of Illinois Open Source License. See LICENSE.TXT for details.
00007 //
00008 //===----------------------------------------------------------------------===//
00009 //
00010 // This file contains the entry points for global functions defined in the x86
00011 // target library, as used by the LLVM JIT.
00012 //
00013 //===----------------------------------------------------------------------===//
00014 
00015 #ifndef TARGET_X86_H
00016 #define TARGET_X86_H
00017 
00018 #include <iosfwd>
00019 
00020 namespace llvm {
00021 
00022 class X86TargetMachine;
00023 class PassManager;
00024 class FunctionPass;
00025 class IntrinsicLowering;
00026 class MachineCodeEmitter;
00027 
00028 /// createX86ISelDag - This pass converts a legalized DAG into a 
00029 /// X86-specific DAG, ready for instruction scheduling.
00030 ///
00031 FunctionPass *createX86ISelDag(X86TargetMachine &TM);
00032 
00033 /// createX86FloatingPointStackifierPass - This function returns a pass which
00034 /// converts floating point register references and pseudo instructions into
00035 /// floating point stack references and physical instructions.
00036 ///
00037 FunctionPass *createX86FloatingPointStackifierPass();
00038 
00039 /// createX86CodePrinterPass - Returns a pass that prints the X86
00040 /// assembly code for a MachineFunction to the given output stream,
00041 /// using the given target machine description.
00042 ///
00043 FunctionPass *createX86CodePrinterPass(std::ostream &o, X86TargetMachine &tm);
00044 
00045 /// createX86CodeEmitterPass - Return a pass that emits the collected X86 code
00046 /// to the specified MCE object.
00047 FunctionPass *createX86CodeEmitterPass(MachineCodeEmitter &MCE);
00048 
00049 /// addX86ELFObjectWriterPass - Add passes to the FPM that output the generated
00050 /// code as an ELF object file.
00051 ///
00052 void addX86ELFObjectWriterPass(PassManager &FPM,
00053                                std::ostream &o, X86TargetMachine &tm);
00054 
00055 /// createX86EmitCodeToMemory - Returns a pass that converts a register
00056 /// allocated function into raw machine code in a dynamically
00057 /// allocated chunk of memory.
00058 ///
00059 FunctionPass *createEmitX86CodeToMemory();
00060 
00061 } // End llvm namespace
00062 
00063 // Defines symbolic names for X86 registers.  This defines a mapping from
00064 // register name to register number.
00065 //
00066 #include "X86GenRegisterNames.inc"
00067 
00068 // Defines symbolic names for the X86 instructions.
00069 //
00070 #include "X86GenInstrNames.inc"
00071 
00072 #endif