llvm.org GIT mirror llvm / release_28 lib / Target / X86 / X86.h
release_28

Tree @release_28 (Download .tar.gz)

X86.h @release_28

7261408
0e0a7a4
856ba76
 
4ee451d
 
0e0a7a4
856ba76
7261408
 
 
 
 
 
 
 
 
98a366d
 
d0fde30
 
9826bdb
12783d1
7168a7d
86020e4
12783d1
7168a7d
12783d1
 
7184781
7261408
dbdbf0c
 
 
434dd4f
 
95cdb36
84023e0
 
 
 
31ad5dd
 
 
f2ab412
9826bdb
b4f68ed
352aa50
 
 
 
81b6ed7
 
434dd4f
 
81b6ed7
86020e4
 
 
 
7168a7d
6c27f5e
 
12783d1
9826bdb
 
 
7261408
9826bdb
7261408
fa85eb6
 
 
 
 
 
4cb1e13
 
95cdb36
 
8320035
 
 
 
 
8d44ba8
 
 
7261408
 
//===-- X86.h - Top-level interface for X86 representation ------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file contains the entry points for global functions defined in the x86
// target library, as used by the LLVM JIT.
//
//===----------------------------------------------------------------------===//

#ifndef TARGET_X86_H
#define TARGET_X86_H

#include "llvm/Target/TargetMachine.h"

namespace llvm {

class FunctionPass;
class JITCodeEmitter;
class MCCodeEmitter;
class MCContext;
class MachineCodeEmitter;
class Target;
class TargetAsmBackend;
class X86TargetMachine;
class formatted_raw_ostream;

/// createX86ISelDag - This pass converts a legalized DAG into a 
/// X86-specific DAG, ready for instruction scheduling.
///
FunctionPass *createX86ISelDag(X86TargetMachine &TM,
                               CodeGenOpt::Level OptLevel);

/// createGlobalBaseRegPass - This pass initializes a global base
/// register for PIC on x86-32.
FunctionPass* createGlobalBaseRegPass();

/// createX86FloatingPointStackifierPass - This function returns a pass which
/// converts floating point register references and pseudo instructions into
/// floating point stack references and physical instructions.
///
FunctionPass *createX86FloatingPointStackifierPass();

/// createSSEDomainFixPass - This pass twiddles SSE opcodes to prevent domain
/// crossings.
FunctionPass *createSSEDomainFixPass();

/// createX86CodeEmitterPass - Return a pass that emits the collected X86 code
/// to the specified MCE object.
FunctionPass *createX86JITCodeEmitterPass(X86TargetMachine &TM,
                                          JITCodeEmitter &JCE);

MCCodeEmitter *createX86_32MCCodeEmitter(const Target &, TargetMachine &TM,
                                         MCContext &Ctx);
MCCodeEmitter *createX86_64MCCodeEmitter(const Target &, TargetMachine &TM,
                                         MCContext &Ctx);

TargetAsmBackend *createX86_32AsmBackend(const Target &, const std::string &);
TargetAsmBackend *createX86_64AsmBackend(const Target &, const std::string &);

/// createX86EmitCodeToMemory - Returns a pass that converts a register
/// allocated function into raw machine code in a dynamically
/// allocated chunk of memory.
///
FunctionPass *createEmitX86CodeToMemory();

/// createX86MaxStackAlignmentHeuristicPass - This function returns a pass
/// which determines whether the frame pointer register should be
/// reserved in case dynamic stack alignment is later required.
///
FunctionPass *createX86MaxStackAlignmentHeuristicPass();

extern Target TheX86_32Target, TheX86_64Target;

} // End llvm namespace

// Defines symbolic names for X86 registers.  This defines a mapping from
// register name to register number.
//
#include "X86GenRegisterNames.inc"

// Defines symbolic names for the X86 instructions.
//
#include "X86GenInstrNames.inc"

#endif