LLVM  4.0.0
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_LIB_TARGET_POWERPC_PPC_H
16 #define LLVM_LIB_TARGET_POWERPC_PPC_H
17 
19 
20 // GCC #defines PPC on Linux but we use it as our namespace name
21 #undef PPC
22 
23 namespace llvm {
24  class PPCTargetMachine;
25  class PassRegistry;
26  class FunctionPass;
27  class ImmutablePass;
28  class MachineInstr;
29  class AsmPrinter;
30  class MCInst;
31 
32  FunctionPass *createPPCCTRLoops(PPCTargetMachine &TM);
33 #ifndef NDEBUG
34  FunctionPass *createPPCCTRLoopsVerify();
35 #endif
36  FunctionPass *createPPCLoopPreIncPrepPass(PPCTargetMachine &TM);
37  FunctionPass *createPPCTOCRegDepsPass();
38  FunctionPass *createPPCEarlyReturnPass();
39  FunctionPass *createPPCVSXCopyPass();
40  FunctionPass *createPPCVSXFMAMutatePass();
41  FunctionPass *createPPCVSXSwapRemovalPass();
42  FunctionPass *createPPCMIPeepholePass();
43  FunctionPass *createPPCBranchSelectionPass();
44  FunctionPass *createPPCQPXLoadSplatPass();
45  FunctionPass *createPPCISelDag(PPCTargetMachine &TM);
46  FunctionPass *createPPCTLSDynamicCallPass();
47  FunctionPass *createPPCBoolRetToIntPass();
48  void LowerPPCMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI,
49  AsmPrinter &AP, bool isDarwin);
50 
51  void initializePPCVSXFMAMutatePass(PassRegistry&);
52  void initializePPCBoolRetToIntPass(PassRegistry&);
53  extern char &PPCVSXFMAMutateID;
54 
55  namespace PPCII {
56 
57  /// Target Operand Flag enum.
58  enum TOF {
59  //===------------------------------------------------------------------===//
60  // PPC Specific MachineOperand flags.
62 
63  /// On a symbol operand "FOO", this indicates that the reference is actually
64  /// to "FOO@plt". This is used for calls and jumps to external functions on
65  /// for PIC calls on Linux and ELF systems.
66  MO_PLT = 1,
67 
68  /// MO_PIC_FLAG - If this bit is set, the symbol reference is relative to
69  /// the function's picbase, e.g. lo16(symbol-picbase).
71 
72  /// MO_NLP_FLAG - If this bit is set, the symbol reference is actually to
73  /// the non_lazy_ptr for the global, e.g. lo16(symbol$non_lazy_ptr-picbase).
75 
76  /// MO_NLP_HIDDEN_FLAG - If this bit is set, the symbol reference is to a
77  /// symbol with hidden visibility. This causes a different kind of
78  /// non-lazy-pointer to be generated.
80 
81  /// The next are not flags but distinct values.
83 
84  /// MO_LO, MO_HA - lo16(symbol) and ha16(symbol)
85  MO_LO = 1 << 4,
86  MO_HA = 2 << 4,
87 
88  MO_TPREL_LO = 4 << 4,
89  MO_TPREL_HA = 3 << 4,
90 
91  /// These values identify relocations on immediates folded
92  /// into memory operations.
93  MO_DTPREL_LO = 5 << 4,
94  MO_TLSLD_LO = 6 << 4,
95  MO_TOC_LO = 7 << 4,
96 
97  // Symbol for VK_PPC_TLS fixup attached to an ADD instruction
98  MO_TLS = 8 << 4
99  };
100  } // end namespace PPCII
101 
102 } // end namespace llvm;
103 
104 #endif
FunctionPass * createPPCVSXSwapRemovalPass()
FunctionPass * createPPCVSXFMAMutatePass()
MO_LO, MO_HA - lo16(symbol) and ha16(symbol)
Definition: PPC.h:85
char & PPCVSXFMAMutateID
TOF
Target Operand Flag enum.
Definition: PPC.h:58
FunctionPass * createPPCTLSDynamicCallPass()
FunctionPass * createPPCTOCRegDepsPass()
MO_NLP_HIDDEN_FLAG - If this bit is set, the symbol reference is to a symbol with hidden visibility...
Definition: PPC.h:79
FunctionPass * createPPCCTRLoopsVerify()
FunctionPass * createPPCBoolRetToIntPass()
FunctionPass * createPPCBranchSelectionPass()
void initializePPCBoolRetToIntPass(PassRegistry &)
FunctionPass * createPPCEarlyReturnPass()
MO_NLP_FLAG - If this bit is set, the symbol reference is actually to the non_lazy_ptr for the global...
Definition: PPC.h:74
void initializePPCVSXFMAMutatePass(PassRegistry &)
FunctionPass * createPPCVSXCopyPass()
The next are not flags but distinct values.
Definition: PPC.h:82
FunctionPass * createPPCCTRLoops(PPCTargetMachine &TM)
These values identify relocations on immediates folded into memory operations.
Definition: PPC.h:93
FunctionPass * createPPCQPXLoadSplatPass()
FunctionPass * createPPCMIPeepholePass()
FunctionPass * createPPCLoopPreIncPrepPass(PPCTargetMachine &TM)
void LowerPPCMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI, AsmPrinter &AP, bool isDarwin)
IRTranslator LLVM IR MI
FunctionPass * createPPCISelDag(PPCTargetMachine &TM)
createPPCISelDag - This pass converts a legalized DAG into a PowerPC-specific DAG, ready for instruction scheduling.
On a symbol operand "FOO", this indicates that the reference is actually to "FOO@plt".
Definition: PPC.h:66
MO_PIC_FLAG - If this bit is set, the symbol reference is relative to the function's picbase...
Definition: PPC.h:70