LLVM API Documentation
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