LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PPC.h
Go to the documentation of this file.
1 //===-- PPC.h - Top-level interface for PowerPC Target ----------*- 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 LLVM
11 // PowerPC back-end.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef LLVM_TARGET_POWERPC_H
16 #define LLVM_TARGET_POWERPC_H
17 
19 #include <string>
20 
21 // GCC #defines PPC on Linux but we use it as our namespace name
22 #undef PPC
23 
24 namespace llvm {
25  class PPCTargetMachine;
26  class FunctionPass;
27  class ImmutablePass;
28  class JITCodeEmitter;
29  class MachineInstr;
30  class AsmPrinter;
31  class MCInst;
32 
33  FunctionPass *createPPCCTRLoops(PPCTargetMachine &TM);
34 #ifndef NDEBUG
35  FunctionPass *createPPCCTRLoopsVerify();
36 #endif
37  FunctionPass *createPPCEarlyReturnPass();
38  FunctionPass *createPPCBranchSelectionPass();
39  FunctionPass *createPPCISelDag(PPCTargetMachine &TM);
40  FunctionPass *createPPCJITCodeEmitterPass(PPCTargetMachine &TM,
41  JITCodeEmitter &MCE);
42  void LowerPPCMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI,
43  AsmPrinter &AP, bool isDarwin);
44 
45  /// \brief Creates an PPC-specific Target Transformation Info pass.
46  ImmutablePass *createPPCTargetTransformInfoPass(const PPCTargetMachine *TM);
47 
48  namespace PPCII {
49 
50  /// Target Operand Flag enum.
51  enum TOF {
52  //===------------------------------------------------------------------===//
53  // PPC Specific MachineOperand flags.
55 
56  /// MO_DARWIN_STUB - On a symbol operand "FOO", this indicates that the
57  /// reference is actually to the "FOO$stub" symbol. This is used for calls
58  /// and jumps to external functions on Tiger and earlier.
60 
61  /// MO_PIC_FLAG - If this bit is set, the symbol reference is relative to
62  /// the function's picbase, e.g. lo16(symbol-picbase).
64 
65  /// MO_NLP_FLAG - If this bit is set, the symbol reference is actually to
66  /// the non_lazy_ptr for the global, e.g. lo16(symbol$non_lazy_ptr-picbase).
68 
69  /// MO_NLP_HIDDEN_FLAG - If this bit is set, the symbol reference is to a
70  /// symbol with hidden visibility. This causes a different kind of
71  /// non-lazy-pointer to be generated.
73 
74  /// The next are not flags but distinct values.
76 
77  /// MO_LO, MO_HA - lo16(symbol) and ha16(symbol)
78  MO_LO = 1 << 4,
79  MO_HA = 2 << 4,
80 
81  MO_TPREL_LO = 4 << 4,
82  MO_TPREL_HA = 3 << 4,
83 
84  /// These values identify relocations on immediates folded
85  /// into memory operations.
86  MO_DTPREL_LO = 5 << 4,
87  MO_TLSLD_LO = 6 << 4,
88  MO_TOC_LO = 7 << 4,
89 
90  // Symbol for VK_PPC_TLS fixup attached to an ADD instruction
91  MO_TLS = 8 << 4
92  };
93  } // end namespace PPCII
94 
95 } // end namespace llvm;
96 
97 #endif
MO_LO, MO_HA - lo16(symbol) and ha16(symbol)
Definition: PPC.h:78
TOF
Target Operand Flag enum.
Definition: PPC.h:51
FunctionPass * createPPCJITCodeEmitterPass(PPCTargetMachine &TM, JITCodeEmitter &MCE)
FunctionPass * createPPCCTRLoopsVerify()
FunctionPass * createPPCBranchSelectionPass()
FunctionPass * createPPCEarlyReturnPass()
The next are not flags but distinct values.
Definition: PPC.h:75
FunctionPass * createPPCCTRLoops(PPCTargetMachine &TM)
ImmutablePass * createPPCTargetTransformInfoPass(const PPCTargetMachine *TM)
Creates an PPC-specific Target Transformation Info pass.
void LowerPPCMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI, AsmPrinter &AP, bool isDarwin)
FunctionPass * createPPCISelDag(PPCTargetMachine &TM)