X86.h revision 6c27f5e5743481c6a519c60135cf85ac238c150a
1//===-- X86.h - Top-level interface for X86 representation ------*- C++ -*-===// 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// 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 "llvm/Target/TargetMachine.h" 19 20namespace llvm { 21 22class FunctionPass; 23class JITCodeEmitter; 24class MCCodeEmitter; 25class MCContext; 26class MachineCodeEmitter; 27class Target; 28class TargetAsmBackend; 29class X86TargetMachine; 30class formatted_raw_ostream; 31 32/// createX86ISelDag - This pass converts a legalized DAG into a 33/// X86-specific DAG, ready for instruction scheduling. 34/// 35FunctionPass *createX86ISelDag(X86TargetMachine &TM, 36 CodeGenOpt::Level OptLevel); 37 38/// createX86FloatingPointStackifierPass - This function returns a pass which 39/// converts floating point register references and pseudo instructions into 40/// floating point stack references and physical instructions. 41/// 42FunctionPass *createX86FloatingPointStackifierPass(); 43 44/// createX87FPRegKillInserterPass - This function returns a pass which 45/// inserts FP_REG_KILL instructions where needed. 46/// 47FunctionPass *createX87FPRegKillInserterPass(); 48 49/// createX86CodeEmitterPass - Return a pass that emits the collected X86 code 50/// to the specified MCE object. 51FunctionPass *createX86JITCodeEmitterPass(X86TargetMachine &TM, 52 JITCodeEmitter &JCE); 53 54MCCodeEmitter *createX86_32MCCodeEmitter(const Target &, TargetMachine &TM, 55 MCContext &Ctx); 56MCCodeEmitter *createX86_64MCCodeEmitter(const Target &, TargetMachine &TM, 57 MCContext &Ctx); 58 59TargetAsmBackend *createX86_32AsmBackend(const Target &, const std::string &); 60TargetAsmBackend *createX86_64AsmBackend(const Target &, const std::string &); 61 62/// createX86EmitCodeToMemory - Returns a pass that converts a register 63/// allocated function into raw machine code in a dynamically 64/// allocated chunk of memory. 65/// 66FunctionPass *createEmitX86CodeToMemory(); 67 68extern Target TheX86_32Target, TheX86_64Target; 69 70} // End llvm namespace 71 72// Defines symbolic names for X86 registers. This defines a mapping from 73// register name to register number. 74// 75#include "X86GenRegisterNames.inc" 76 77// Defines symbolic names for the X86 instructions. 78// 79#include "X86GenInstrNames.inc" 80 81#endif 82