LLVM  9.0.0svn
TargetSelect.h
Go to the documentation of this file.
1 //===- TargetSelect.h - Target Selection & Registration ---------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file provides utilities to make sure that certain classes of targets are
10 // linked into the main application executable, and initialize them as
11 // appropriate.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef LLVM_SUPPORT_TARGETSELECT_H
16 #define LLVM_SUPPORT_TARGETSELECT_H
17 
18 #include "llvm/Config/llvm-config.h"
19 
20 extern "C" {
21  // Declare all of the target-initialization functions that are available.
22 #define LLVM_TARGET(TargetName) void LLVMInitialize##TargetName##TargetInfo();
23 #include "llvm/Config/Targets.def"
24 
25 #define LLVM_TARGET(TargetName) void LLVMInitialize##TargetName##Target();
26 #include "llvm/Config/Targets.def"
27 
28  // Declare all of the target-MC-initialization functions that are available.
29 #define LLVM_TARGET(TargetName) void LLVMInitialize##TargetName##TargetMC();
30 #include "llvm/Config/Targets.def"
31 
32  // Declare all of the available assembly printer initialization functions.
33 #define LLVM_ASM_PRINTER(TargetName) void LLVMInitialize##TargetName##AsmPrinter();
34 #include "llvm/Config/AsmPrinters.def"
35 
36  // Declare all of the available assembly parser initialization functions.
37 #define LLVM_ASM_PARSER(TargetName) void LLVMInitialize##TargetName##AsmParser();
38 #include "llvm/Config/AsmParsers.def"
39 
40  // Declare all of the available disassembler initialization functions.
41 #define LLVM_DISASSEMBLER(TargetName) \
42  void LLVMInitialize##TargetName##Disassembler();
43 #include "llvm/Config/Disassemblers.def"
44 }
45 
46 namespace llvm {
47  /// InitializeAllTargetInfos - The main program should call this function if
48  /// it wants access to all available targets that LLVM is configured to
49  /// support, to make them available via the TargetRegistry.
50  ///
51  /// It is legal for a client to make multiple calls to this function.
52  inline void InitializeAllTargetInfos() {
53 #define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetInfo();
54 #include "llvm/Config/Targets.def"
55  }
56 
57  /// InitializeAllTargets - The main program should call this function if it
58  /// wants access to all available target machines that LLVM is configured to
59  /// support, to make them available via the TargetRegistry.
60  ///
61  /// It is legal for a client to make multiple calls to this function.
62  inline void InitializeAllTargets() {
63  // FIXME: Remove this, clients should do it.
65 
66 #define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##Target();
67 #include "llvm/Config/Targets.def"
68  }
69 
70  /// InitializeAllTargetMCs - The main program should call this function if it
71  /// wants access to all available target MC that LLVM is configured to
72  /// support, to make them available via the TargetRegistry.
73  ///
74  /// It is legal for a client to make multiple calls to this function.
75  inline void InitializeAllTargetMCs() {
76 #define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetMC();
77 #include "llvm/Config/Targets.def"
78  }
79 
80  /// InitializeAllAsmPrinters - The main program should call this function if
81  /// it wants all asm printers that LLVM is configured to support, to make them
82  /// available via the TargetRegistry.
83  ///
84  /// It is legal for a client to make multiple calls to this function.
85  inline void InitializeAllAsmPrinters() {
86 #define LLVM_ASM_PRINTER(TargetName) LLVMInitialize##TargetName##AsmPrinter();
87 #include "llvm/Config/AsmPrinters.def"
88  }
89 
90  /// InitializeAllAsmParsers - The main program should call this function if it
91  /// wants all asm parsers that LLVM is configured to support, to make them
92  /// available via the TargetRegistry.
93  ///
94  /// It is legal for a client to make multiple calls to this function.
95  inline void InitializeAllAsmParsers() {
96 #define LLVM_ASM_PARSER(TargetName) LLVMInitialize##TargetName##AsmParser();
97 #include "llvm/Config/AsmParsers.def"
98  }
99 
100  /// InitializeAllDisassemblers - The main program should call this function if
101  /// it wants all disassemblers that LLVM is configured to support, to make
102  /// them available via the TargetRegistry.
103  ///
104  /// It is legal for a client to make multiple calls to this function.
106 #define LLVM_DISASSEMBLER(TargetName) LLVMInitialize##TargetName##Disassembler();
107 #include "llvm/Config/Disassemblers.def"
108  }
109 
110  /// InitializeNativeTarget - The main program should call this function to
111  /// initialize the native target corresponding to the host. This is useful
112  /// for JIT applications to ensure that the target gets linked in correctly.
113  ///
114  /// It is legal for a client to make multiple calls to this function.
115  inline bool InitializeNativeTarget() {
116  // If we have a native target, initialize it to ensure it is linked in.
117 #ifdef LLVM_NATIVE_TARGET
118  LLVM_NATIVE_TARGETINFO();
119  LLVM_NATIVE_TARGET();
120  LLVM_NATIVE_TARGETMC();
121  return false;
122 #else
123  return true;
124 #endif
125  }
126 
127  /// InitializeNativeTargetAsmPrinter - The main program should call
128  /// this function to initialize the native target asm printer.
130  // If we have a native target, initialize the corresponding asm printer.
131 #ifdef LLVM_NATIVE_ASMPRINTER
132  LLVM_NATIVE_ASMPRINTER();
133  return false;
134 #else
135  return true;
136 #endif
137  }
138 
139  /// InitializeNativeTargetAsmParser - The main program should call
140  /// this function to initialize the native target asm parser.
142  // If we have a native target, initialize the corresponding asm parser.
143 #ifdef LLVM_NATIVE_ASMPARSER
144  LLVM_NATIVE_ASMPARSER();
145  return false;
146 #else
147  return true;
148 #endif
149  }
150 
151  /// InitializeNativeTargetDisassembler - The main program should call
152  /// this function to initialize the native target disassembler.
154  // If we have a native target, initialize the corresponding disassembler.
155 #ifdef LLVM_NATIVE_DISASSEMBLER
156  LLVM_NATIVE_DISASSEMBLER();
157  return false;
158 #else
159  return true;
160 #endif
161  }
162 }
163 
164 #endif
bool InitializeNativeTarget()
InitializeNativeTarget - The main program should call this function to initialize the native target c...
Definition: TargetSelect.h:115
This class represents lattice values for constants.
Definition: AllocatorList.h:23
void InitializeAllAsmParsers()
InitializeAllAsmParsers - The main program should call this function if it wants all asm parsers that...
Definition: TargetSelect.h:95
void InitializeAllDisassemblers()
InitializeAllDisassemblers - The main program should call this function if it wants all disassemblers...
Definition: TargetSelect.h:105
void InitializeAllAsmPrinters()
InitializeAllAsmPrinters - The main program should call this function if it wants all asm printers th...
Definition: TargetSelect.h:85
void InitializeAllTargets()
InitializeAllTargets - The main program should call this function if it wants access to all available...
Definition: TargetSelect.h:62
bool InitializeNativeTargetAsmPrinter()
InitializeNativeTargetAsmPrinter - The main program should call this function to initialize the nativ...
Definition: TargetSelect.h:129
bool InitializeNativeTargetDisassembler()
InitializeNativeTargetDisassembler - The main program should call this function to initialize the nat...
Definition: TargetSelect.h:153
void InitializeAllTargetMCs()
InitializeAllTargetMCs - The main program should call this function if it wants access to all availab...
Definition: TargetSelect.h:75
void InitializeAllTargetInfos()
InitializeAllTargetInfos - The main program should call this function if it wants access to all avail...
Definition: TargetSelect.h:52
bool InitializeNativeTargetAsmParser()
InitializeNativeTargetAsmParser - The main program should call this function to initialize the native...
Definition: TargetSelect.h:141