X86.h revision ce79a25980da3279f05adf324d9d6adefb9c979c
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 X86TargetMachine; 23class FunctionPass; 24class MachineCodeEmitter; 25class MCCodeEmitter; 26class JITCodeEmitter; 27class Target; 28class formatted_raw_ostream; 29 30/// createX86ISelDag - This pass converts a legalized DAG into a 31/// X86-specific DAG, ready for instruction scheduling. 32/// 33FunctionPass *createX86ISelDag(X86TargetMachine &TM, 34 CodeGenOpt::Level OptLevel); 35 36/// createX86FloatingPointStackifierPass - This function returns a pass which 37/// converts floating point register references and pseudo instructions into 38/// floating point stack references and physical instructions. 39/// 40FunctionPass *createX86FloatingPointStackifierPass(); 41 42/// createX87FPRegKillInserterPass - This function returns a pass which 43/// inserts FP_REG_KILL instructions where needed. 44/// 45FunctionPass *createX87FPRegKillInserterPass(); 46 47/// createX86CodeEmitterPass - Return a pass that emits the collected X86 code 48/// to the specified MCE object. 49FunctionPass *createX86JITCodeEmitterPass(X86TargetMachine &TM, 50 JITCodeEmitter &JCE); 51 52MCCodeEmitter *createHeinousX86MCCodeEmitter(const Target &, TargetMachine &TM); 53 54/// createX86EmitCodeToMemory - Returns a pass that converts a register 55/// allocated function into raw machine code in a dynamically 56/// allocated chunk of memory. 57/// 58FunctionPass *createEmitX86CodeToMemory(); 59 60extern Target TheX86_32Target, TheX86_64Target; 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