X86.h revision 9826bdb7d829b2e48669a3ab69b0e6286f524001
1//===-- X86.h - Top-level interface for X86 representation ------*- C++ -*-===//
2//
3// This file contains the entry points for global functions defined in the x86
4// target library, as used by the LLVM JIT.
5//
6//===----------------------------------------------------------------------===//
7
8#ifndef TARGET_X86_H
9#define TARGET_X86_H
10
11#include <iosfwd>
12class TargetMachine;
13class FunctionPass;
14
15/// createX86SimpleInstructionSelector - This pass converts an LLVM function
16/// into a machine code representation in a very simple peep-hole fashion.  The
17/// generated code sucks but the implementation is nice and simple.
18///
19FunctionPass *createX86SimpleInstructionSelector(TargetMachine &TM);
20
21/// createX86PatternInstructionSelector - This pass converts an LLVM function
22/// into a machine code representation using pattern matching and a machine
23/// description file.
24///
25FunctionPass *createX86PatternInstructionSelector(TargetMachine &TM);
26
27/// createX86PeepholeOptimizer - Create a pass to perform X86 specific peephole
28/// optimizations.
29///
30FunctionPass *createX86PeepholeOptimizerPass();
31
32/// createX86FloatingPointStackifierPass - This function returns a pass which
33/// converts floating point register references and pseudo instructions into
34/// floating point stack references and physical instructions.
35///
36FunctionPass *createX86FloatingPointStackifierPass();
37
38/// createX86CodePrinterPass - Returns a pass that prints the X86
39/// assembly code for a MachineFunction to the given output stream,
40/// using the given target machine description.  This should work
41/// regardless of whether the function is in SSA form.
42///
43FunctionPass *createX86CodePrinterPass(std::ostream &o,TargetMachine &tm);
44
45/// createX86EmitCodeToMemory - Returns a pass that converts a register
46/// allocated function into raw machine code in a dynamically
47/// allocated chunk of memory.
48///
49FunctionPass *createEmitX86CodeToMemory();
50
51// Defines symbolic names for X86 registers.  This defines a mapping from
52// register name to register number.
53//
54#include "X86GenRegisterNames.inc"
55
56// Defines symbolic names for the X86 instructions.
57//
58#include "X86GenInstrNames.inc"
59
60#endif
61