X86.h revision 1911fd4f85aebcd4d7b8f27313c5a363eebf49cb
1//===-- X86.h - Top-level interface for X86 representation ------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file was developed by the LLVM research group and is distributed under 6// the University of Illinois Open Source License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file contains the entry points for global functions defined in the x86 11// target library, as used by the LLVM JIT. 12// 13//===----------------------------------------------------------------------===// 14 15#ifndef TARGET_X86_H 16#define TARGET_X86_H 17 18#include <iosfwd> 19 20namespace llvm { 21 22class X86TargetMachine; 23class FunctionPassManager; 24class FunctionPass; 25class IntrinsicLowering; 26class MachineCodeEmitter; 27 28/// createX86ISelDag - This pass converts a legalized DAG into a 29/// X86-specific DAG, ready for instruction scheduling. 30/// 31FunctionPass *createX86ISelDag(X86TargetMachine &TM, bool Fast); 32 33/// createX86FloatingPointStackifierPass - This function returns a pass which 34/// converts floating point register references and pseudo instructions into 35/// floating point stack references and physical instructions. 36/// 37FunctionPass *createX86FloatingPointStackifierPass(); 38 39/// createX86CodePrinterPass - Returns a pass that prints the X86 40/// assembly code for a MachineFunction to the given output stream, 41/// using the given target machine description. 42/// 43FunctionPass *createX86CodePrinterPass(std::ostream &o, X86TargetMachine &tm); 44 45/// createX86CodeEmitterPass - Return a pass that emits the collected X86 code 46/// to the specified MCE object. 47FunctionPass *createX86CodeEmitterPass(X86TargetMachine &TM, 48 MachineCodeEmitter &MCE); 49 50/// addX86ELFObjectWriterPass - Add passes to the FPM that output the generated 51/// code as an ELF object file. 52/// 53void addX86ELFObjectWriterPass(FunctionPassManager &FPM, 54 std::ostream &o, X86TargetMachine &tm); 55 56/// createX86EmitCodeToMemory - Returns a pass that converts a register 57/// allocated function into raw machine code in a dynamically 58/// allocated chunk of memory. 59/// 60FunctionPass *createEmitX86CodeToMemory(); 61 62} // End llvm namespace 63 64// Defines symbolic names for X86 registers. This defines a mapping from 65// register name to register number. 66// 67#include "X86GenRegisterNames.inc" 68 69// Defines symbolic names for the X86 instructions. 70// 71#include "X86GenInstrNames.inc" 72 73#endif 74