1 
2 module llvm.c.functions;
3 
4 private
5 {
6 	import llvm.util.templates;
7 
8 	import llvm.c.versions;
9 	import llvm.c.types;
10 }
11 
12 extern(System)
13 {
14 	mixin(MixinMap(LLVMC_Functions, delegate string(string symbol, string[] signature) {
15 		if(matchVersionQualifiers(signature[1 .. $]))
16 		{
17 			return "alias nothrow " ~ signature[0] ~ " da_" ~ symbol ~ ";";
18 		}
19 		return "";
20 	}));
21 }
22 
23 //TODO: make sure to update these!
24 static if(LLVM_Version >= LLVMDVersion(3, 3, 0))
25 {
26 	private enum string[][string] LLVMC_TargetCapabilities =
27 		[
28 		 "AArch64" : ["TargetInfo", "Target", "TargetMC", "AsmParser", "AsmPrinter", "Disassembler"],
29 		 "ARM" : ["TargetInfo", "Target", "TargetMC", "AsmParser", "AsmPrinter", "Disassembler"],
30 		 "CppBackend" : ["TargetInfo", "Target", "TargetMC"],
31 		 "Hexagon" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
32 		 "MBlaze" : ["TargetInfo", "Target", "TargetMC", "AsmParser", "AsmPrinter", "Disassembler"],
33 		 "Mips" : ["TargetInfo", "Target", "TargetMC", "AsmParser", "AsmPrinter", "Disassembler"],
34 		 "MSP430" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
35 		 "NVPTX" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
36 		 "PowerPC" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
37 		 "Sparc" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
38 		 "X86" : ["TargetInfo", "Target", "TargetMC", "AsmParser", "AsmPrinter", "Disassembler"],
39 		 "XCore" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter", "Disassembler"],
40 		 ];
41 }
42 else static if(LLVM_Version >= 3.2)
43 {
44 	private enum string[][string] LLVMC_TargetCapabilities =
45 		[
46 		 "ARM" : ["TargetInfo", "Target", "TargetMC", "AsmParser", "AsmPrinter", "Disassembler"],
47 		 "CellSPU" : ["TargetInfo", "Target", "TargetMC"],
48 		 "CppBackend" : ["TargetInfo", "Target", "TargetMC"],
49 		 "Hexagon" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
50 		 "MBlaze" : ["TargetInfo", "Target", "TargetMC", "AsmParser", "AsmPrinter", "Disassembler"],
51 		 "Mips" : ["TargetInfo", "Target", "TargetMC", "AsmParser", "AsmPrinter", "Disassembler"],
52 		 "MSP430" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
53 		 "NVPTX" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
54 		 "PowerPC" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
55 		 "PTX" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
56 		 "Sparc" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
57 		 "X86" : ["TargetInfo", "Target", "TargetMC", "AsmParser", "AsmPrinter", "Disassembler"],
58 		 "XCore" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter", "Disassembler"],
59 		 ];
60 
61 }
62 else
63 {
64 	private enum string[][string] LLVMC_TargetCapabilities =
65 		[
66 		 "ARM" : ["TargetInfo", "Target", "TargetMC", "AsmParser", "AsmPrinter", "Disassembler"],
67 		 "CellSPU" : ["TargetInfo", "Target", "TargetMC"],
68 		 "CppBackend" : ["TargetInfo", "Target", "TargetMC"],
69 		 "Hexagon" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
70 		 "MBlaze" : ["TargetInfo", "Target", "TargetMC", "AsmParser", "AsmPrinter", "Disassembler"],
71 		 "Mips" : ["TargetInfo", "Target", "TargetMC", "AsmParser", "AsmPrinter", "Disassembler"],
72 		 "MSP430" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
73 		 "PTX" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
74 		 "PowerPC" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
75 		 "Sparc" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter"],
76 		 "X86" : ["TargetInfo", "Target", "TargetMC", "AsmParser", "AsmPrinter", "Disassembler"],
77 		 "XCore" : ["TargetInfo", "Target", "TargetMC", "AsmPrinter", "Disassembler"],
78 		 ];
79 }
80 
81 __gshared
82 {
83 	mixin(MixinMap(
84 		      LLVMC_Functions,
85 		      delegate string(string symbol, string[] signature)
86 		      {
87 			      if(matchVersionQualifiers(signature[1 .. $]))
88 			      {
89 				      return "da_" ~ symbol ~ " " ~ symbol ~ ";";
90 			      }
91 			      return "";
92 		      }
93 		      ));
94 
95 	mixin(MixinMap([
96 		                "TargetInfo",
97 		                "Target",
98 		                "TargetMC",
99 		                "AsmPrinter",
100 		                "AsmParser",
101 		                "Disassembler"],
102 	                delegate string(size_t i, string capability)
103 	                {
104 		                string genOnlyTargetsWithCapability()
105 		                {
106 			                auto capabilities = LLVMC_TargetCapabilities;
107 			                string code = "";
108 
109 			                foreach(string target; capabilities.keys)
110 			                {
111 				                foreach(string targetCapability; capabilities[target])
112 				                {
113 					                if(capability == targetCapability)
114 					                {
115 						                code ~= "if(LLVMInitialize"
116 							                ~ target ~ capability
117 							                ~ " !is null) { LLVMInitialize"
118 							                ~ target ~ capability
119 							                ~ "(); } ";
120 						                break;
121 					                }
122 				                }
123 			                }
124 
125 			                return code;
126 		                }
127 
128 		                return "nothrow void LLVMInitializeAll" ~ capability ~ "s() { "
129 			                ~ genOnlyTargetsWithCapability()
130 			                ~ " }";
131 	                }));
132 
133 	nothrow LLVMBool LLVMInitializeNativeTarget()
134 	{
135 		mixin(MixinMap(["ARM64" : "AArch64",
136 		                 "ARM" : "ARM",
137 		                 "X86" : "X86",
138 		                 "X86_64" : "X86",
139 		                 "MIPS" : "Mips",
140 		                 "PPC" : "PowerPC",
141 		                 "PPC64" : "PowerPC",
142 		                 "SPARC" : "Sparc",
143 		                 "SPARC64" : "SPARC64"],
144 		                delegate string(string arch, string target)
145 		                {
146 			                return "version(" ~ arch ~ ") {"
147 				                ~ " if((LLVMInitialize" ~ target ~ "TargetInfo !is null)"
148 				                ~ " && (LLVMInitialize" ~ target ~ "Target !is null)"
149 				                ~ " && (LLVMInitialize" ~ target ~ "TargetMC !is null)) {"
150 				                ~ " LLVMInitialize" ~ target ~ "TargetInfo();"
151 				                ~ " LLVMInitialize" ~ target ~ "Target();"
152 				                ~ " LLVMInitialize" ~ target ~ "TargetMC();"
153 				                ~ " return 0; }}";
154 		                }
155 			      ));
156 
157 		return 1;
158 	}
159 
160 	static if(LLVM_Version >= 3.4)
161 	{
162 		nothrow LLVMBool LLVMInitializeNativeAsmParser()
163 		{
164 			mixin(MixinMap(["ARM64" : "AArch64",
165 							"ARM" : "ARM",
166 							"X86" : "X86",
167 							"X86_64" : "X86",
168 							"MIPS" : "Mips"],
169 						   delegate string(string arch, string target)
170 						   {
171 							   return "version(" ~ arch ~ ") {"
172 									   ~ " if(LLVMInitialize" ~ target ~ "AsmParser !is null) {"
173 									   ~ " LLVMInitialize" ~ target ~ "AsmParser();"
174 									   ~ " return 0; }}";
175 						   }
176 						  ));
177 
178 			return 1;
179 		}
180 
181 		nothrow LLVMBool LLVMInitializeNativeAsmPrinter()
182 		{
183 			mixin(MixinMap(["ARM64" : "AArch64",
184 							"ARM" : "ARM",
185 							"X86" : "X86",
186 							"X86_64" : "X86",
187 							"MIPS" : "Mips",
188 							"PPC" : "PowerPC",
189 							"PPC64" : "PowerPC",
190 							"SPARC" : "Sparc",
191 							"SPARC64" : "SPARC64"],
192 						   delegate string(string arch, string target)
193 						   {
194 							   return "version(" ~ arch ~ ") {"
195 									   ~ " if(LLVMInitialize" ~ target ~ "AsmPrinter !is null) {"
196 									   ~ " LLVMInitialize" ~ target ~ "AsmPrinter();"
197 									   ~ " return 0; }}";
198 						   }
199 						  ));
200 
201 			return 1;
202 		}
203 
204 		nothrow LLVMBool LLVMInitializeNativeDisassembler()
205 		{
206 			mixin(MixinMap(["ARM64" : "AArch64",
207 							"ARM" : "ARM",
208 							"X86" : "X86",
209 							"X86_64" : "X86",
210 							"MIPS" : "Mips"],
211 						   delegate string(string arch, string target)
212 						   {
213 							   return "version(" ~ arch ~ ") {"
214 									   ~ " if(LLVMInitialize" ~ target ~ "Disassembler !is null) {"
215 									   ~ " LLVMInitialize" ~ target ~ "Disassembler();"
216 									   ~ " return 0; }}";
217 						   }
218 						  ));
219 
220 			return 1;
221 		}
222 	}
223 }
224 
225 package enum string[][string] LLVMC_Functions = [
226 
227 	/+ Analysis +/
228 
229 	"LLVMVerifyModule" : ["LLVMBool function(LLVMModuleRef M, LLVMVerifierFailureAction Action, char** OutMessage)"],
230 	"LLVMVerifyFunction" : ["LLVMBool function(LLVMValueRef Fn, LLVMVerifierFailureAction Action)"],
231 	"LLVMViewFunctionCFG" : ["void function(LLVMValueRef Fn)"],
232 	"LLVMViewFunctionCFGOnly" : ["void function(LLVMValueRef Fn)"],
233 
234 	/+ Bit Reader +/
235 
236 	"LLVMParseBitcode" : ["LLVMBool function(LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutModule, char** OutMessage)"],
237 	"LLVMParseBitcode2": ["LLVMBool function(LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutModule)",
238 	                      "+", "3", "8", "0"],
239 	"LLVMParseBitcodeInContext" : ["LLVMBool function(LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutModule, char** OutMessage)"],
240 	"LLVMParseBitcodeInContext2": ["LLVMBool function(LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutModule)",
241 	                               "+", "3", "8", "0"],
242 	"LLVMGetBitcodeModuleInContext" : ["LLVMBool function(LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutM, char** OutMessage)"],
243 	"LLVMGetBitcodeModuleInContext2": ["LLVMBool function(LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutM)",
244 	                                   "+", "3", "8", "0"],
245 	"LLVMGetBitcodeModule" : ["LLVMBool function(LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutM, char** OutMessage)"],
246 	"LLVMGetBitcodeModule2": ["LLVMBool function(LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutM)",
247 	                          "+", "3", "8", "0"],
248 	"LLVMGetBitcodeModuleProviderInContext" : ["LLVMBool function(LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleProviderRef* OutMP, char** OutMessage)",
249 	                                           "-", "3", "8", "0"],
250 	"LLVMGetBitcodeModuleProvider" : ["LLVMBool function(LLVMMemoryBufferRef MemBuf, LLVMModuleProviderRef* OutMP, char** OutMessage)",
251 	                                  "-", "3", "8", "0"],
252 
253 	/+ Bit Writer +/
254 
255 	"LLVMWriteBitcodeToFile" : ["int function(LLVMModuleRef M, const(char)* Path)"],
256 	"LLVMWriteBitcodeToFD" : ["int function(LLVMModuleRef M, int FD, int ShouldClose, int Unbuffered)"],
257 	"LLVMWriteBitcodeToFileHandle" : ["int function(LLVMModuleRef M, int Handle)"],
258 	"LLLVMWriteBitcodeToMemoryBuffer" : ["LLVMMemoryBufferRef function(LLVMModuleRef M)",
259 							"+", "3", "6", "0"],
260 
261 	/+ Transforms +/
262 
263 	/++ Interprocedural transformations ++/
264 
265 	"LLVMAddArgumentPromotionPass" : ["void function(LLVMPassManagerRef PM)"],
266 	"LLVMAddConstantMergePass" : ["void function(LLVMPassManagerRef PM)"],
267 	"LLVMAddDeadArgEliminationPass" : ["void function(LLVMPassManagerRef PM)"],
268 	"LLVMAddFunctionAttrsPass" : ["void function(LLVMPassManagerRef PM)"],
269 	"LLVMAddFunctionInliningPass" : ["void function(LLVMPassManagerRef PM)"],
270 	"LLVMAddAlwaysInlinerPass" : ["void function(LLVMPassManagerRef PM)"],
271 	"LLVMAddGlobalDCEPass" : ["void function(LLVMPassManagerRef PM)"],
272 	"LLVMAddGlobalOptimizerPass" : ["void function(LLVMPassManagerRef PM)"],
273 	"LLVMAddIPConstantPropagationPass" : ["void function(LLVMPassManagerRef PM)"],
274 	"LLVMAddPruneEHPass" : ["void function(LLVMPassManagerRef PM)"],
275 	"LLVMAddIPSCCPPass" : ["void function(LLVMPassManagerRef PM)"],
276 	"LLVMAddInternalizePass" : ["void function(LLVMPassManagerRef, uint AllButMain)"],
277 	"LLVMAddStripDeadPrototypesPass" : ["void function(LLVMPassManagerRef PM)"],
278 	"LLVMAddStripSymbolsPass" : ["void function(LLVMPassManagerRef PM)"],
279 
280 	/++ Pass manager builder ++/
281 
282 	"LLVMPassManagerBuilderCreate" : ["LLVMPassManagerBuilderRef function()"],
283 	"LLVMPassManagerBuilderDispose" : ["void function(LLVMPassManagerBuilderRef PMB)"],
284 	"LLVMPassManagerBuilderSetOptLevel" : ["void function(LLVMPassManagerBuilderRef PMB, uint OptLevel)"],
285 	"LLVMPassManagerBuilderSetSizeLevel" : ["void function(LLVMPassManagerBuilderRef PMB, uint SizeLevel)"],
286 	"LLVMPassManagerBuilderSetDisableUnitAtATime" : ["void function(LLVMPassManagerBuilderRef PMB, LLVMBool Value)"],
287 	"LLVMPassManagerBuilderSetDisableUnrollLoops" : ["void function(LLVMPassManagerBuilderRef PMB, LLVMBool Value)"],
288 	"LLVMPassManagerBuilderSetDisableSimplifyLibCalls" : ["void function(LLVMPassManagerBuilderRef PMB, LLVMBool Value)"],
289 	"LLVMPassManagerBuilderUseInlinerWithThreshold" : ["void function(LLVMPassManagerBuilderRef PMB, uint Threshold)"],
290 	"LLVMPassManagerBuilderPopulateFunctionPassManager" : ["void function(LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM)"],
291 	"LLVMPassManagerBuilderPopulateModulePassManager" : ["void function(LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM)"],
292 	"LLVMPassManagerBuilderPopulateLTOPassManager" : ["void function(LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM, LLVMBool Internalize, LLVMBool RunInliner)"],
293 
294 	/++ Scalar transformations ++/
295 
296 	"LLVMAddAggressiveDCEPass" : ["void function(LLVMPassManagerRef PM)"],
297 	"LLVMAddBitTrackingDCEPass" : ["void function(LLVMPassManagerRef PM)",
298 								   "+", "3", "7", "0"],
299 	"LLVMAddAlignmentFromAssumptionsPass" : ["void function(LLVMPassManagerRef PM)",
300 											"+", "3", "6", "0"],
301 	"LLVMAddCFGSimplificationPass" : ["void function(LLVMPassManagerRef PM)"],
302 	"LLVMAddDeadStoreEliminationPass" : ["void function(LLVMPassManagerRef PM)"],
303 	"LLVMAddScalarizerPass" : ["void function(LLVMPassManagerRef PM)",
304 							  "+", "3", "5", "0"],
305 	"LLVMAddMergedLoadStoreMotionPass" : ["void function(LLVMPassManagerRef PM)",
306 										 "+", "3", "5", "0"],
307 	"LLVMAddGVNPass" : ["void function(LLVMPassManagerRef PM)"],
308 	"LLVMAddIndVarSimplifyPass" : ["void function(LLVMPassManagerRef PM)"],
309 	"LLVMAddInstructionCombiningPass" : ["void function(LLVMPassManagerRef PM)"],
310 	"LLVMAddJumpThreadingPass" : ["void function(LLVMPassManagerRef PM)"],
311 	"LLVMAddLICMPass" : ["void function(LLVMPassManagerRef PM)"],
312 	"LLVMAddLoopDeletionPass" : ["void function(LLVMPassManagerRef PM)"],
313 	"LLVMAddLoopIdiomPass" : ["void function(LLVMPassManagerRef PM)"],
314 	"LLVMAddLoopRotatePass" : ["void function(LLVMPassManagerRef PM)"],
315 	"LLVMAddLoopRerollPass" : ["void function(LLVMPassManagerRef PM)",
316 							   "+", "3", "4", "0"],
317 	"LLVMAddLoopUnrollPass" : ["void function(LLVMPassManagerRef PM)"],
318 	"LLVMAddLoopUnswitchPass" : ["void function(LLVMPassManagerRef PM)"],
319 	"LLVMAddMemCpyOptPass" : ["void function(LLVMPassManagerRef PM)"],
320 	"LLVMAddPartiallyInlineLibCallsPass" : ["void function(LLVMPassManagerRef PM)",
321 											"+", "3", "4", "0"],
322 	"LLVMAddLowerSwitchPass" : ["void function(LLVMPassManagerRef PM)",
323 							   "+", "3", "6", "0"],
324 	"LLVMAddPromoteMemoryToRegisterPass" : ["void function(LLVMPassManagerRef PM)"],
325 	"LLVMAddReassociatePass" : ["void function(LLVMPassManagerRef PM)"],
326 	"LLVMAddSCCPPass" : ["void function(LLVMPassManagerRef PM)"],
327 	"LLVMAddScalarReplAggregatesPass" : ["void function(LLVMPassManagerRef PM)"],
328 	"LLVMAddScalarReplAggregatesPassSSA" : ["void function(LLVMPassManagerRef PM)"],
329 	"LLVMAddScalarReplAggregatesPassWithThreshold" : ["void function(LLVMPassManagerRef PM, int Threshold)"],
330 	"LLVMAddSimplifyLibCallsPass" : ["void function(LLVMPassManagerRef PM)"],
331 	"LLVMAddTailCallEliminationPass" : ["void function(LLVMPassManagerRef PM)"],
332 	"LLVMAddConstantPropagationPass" : ["void function(LLVMPassManagerRef PM)"],
333 	"LLVMAddDemoteMemoryToRegisterPass" : ["void function(LLVMPassManagerRef PM)"],
334 	"LLVMAddVerifierPass" : ["void function(LLVMPassManagerRef PM)"],
335 	"LLVMAddCorrelatedValuePropagationPass" : ["void function(LLVMPassManagerRef PM)"],
336 	"LLVMAddEarlyCSEPass" : ["void function(LLVMPassManagerRef PM)"],
337 	"LLVMAddLowerExpectIntrinsicPass" : ["void function(LLVMPassManagerRef PM)"],
338 	"LLVMAddTypeBasedAliasAnalysisPass" : ["void function(LLVMPassManagerRef PM)"],
339 	"LLVMAddScopedNoAliasAAPass" : ["void function(LLVMPassManagerRef PM)",
340 								   "+", "3", "6", "0"],
341 	"LLVMAddBasicAliasAnalysisPass" : ["void function(LLVMPassManagerRef PM)"],
342 
343 	/++ Vectorization transformations ++/
344 
345 	"LLVMAddBBVectorizePass" : ["void function(LLVMPassManagerRef PM)"],
346 	"LLVMAddLoopVectorizePass" : ["void function(LLVMPassManagerRef PM)",
347 	                              "+", "3", "2", "0"],
348 
349 	/+ Core +/
350 
351 	"LLVMShutdown" : ["void function()",
352 	                  "+", "3", "3", "0"],
353 	"LLVMCreateMessage" : ["char* function(const(char)* Message)",
354 						   "+", "3", "4", "0"],
355 	"LLVMDisposeMessage" : ["void function(char* Message)"],
356 	"LLVMInstallFatalErrorHandler" : ["void function(LLVMFatalErrorHandler Handler)",
357 									  "+", "3", "4", "0"],
358 	"LLVMResetFatalErrorHandler" : ["void function()",
359 									"+", "3", "4", "0"],
360 	"LLVMEnablePrettyStackTrace" : ["void function()",
361 									"+", "3", "4", "0"],
362 
363 	/++ Contexts ++/
364 
365 	"LLVMContextCreate" : ["LLVMContextRef function()"],
366 	"LLVMGetGlobalContext" : ["LLVMContextRef function()"],
367 	"LLVMContextDispose" : ["void function(LLVMContextRef C)"],
368 	"LLVMGetMDKindIDInContext" : ["uint function(LLVMContextRef C, const(char)* Name, uint SLen)"],
369 	"LLVMGetMDKindID" : ["uint function(const(char)* Name, uint SLen)"],
370 	"LLVMContextSetDiagnosticHandler" :  ["void function (LLVMContextRef C, LLVMDiagnosticHandler Handler, void *DiagnosticContext)",
371 										  "+", "3", "5", "0"],
372 
373 	"LLVMGetDiagInfoDescription" : ["char* function(LLVMDiagnosticInfoRef DI)",
374 								   "+", "3", "5", "0"],
375 
376 	"LLVMGetDiagInfoSeverity" : ["LLVMDiagnosticSeverity function(LLVMDiagnosticInfoRef DI)",
377 								"+", "3", "5", "0"],
378 	"LLVMContextSetYieldCallback" : ["void function(LLVMContextRef C, LLVMYieldCallback Callback, void *OpaqueHandle)",
379 									 "+", "3", "5", "0"],
380 
381 	/++ Modules ++/
382 
383 	"LLVMModuleCreateWithName" : ["LLVMModuleRef function(const(char)* ModuleID)"],
384 	"LLVMModuleCreateWithNameInContext" : ["LLVMModuleRef function(const(char)* ModuleID, LLVMContextRef C)"],
385 	"LLLVMCloneModule" : ["LLVMModuleRef function(LLVMModuleRef M)",
386 					 "+", "3", "6", "0"],
387 	"LLVMDisposeModule" : ["void function(LLVMModuleRef M)"],
388 	"LLVMGetDataLayout" : ["const(char)* function(LLVMModuleRef M)"],
389 	"LLVMSetDataLayout" : ["void function(LLVMModuleRef M, const(char)* Triple)"],
390 	"LLVMGetTarget" : ["const(char)* function(LLVMModuleRef M)"],
391 	"LLVMSetTarget" : ["void function(LLVMModuleRef M, const(char)* Triple)"],
392 	"LLVMDumpModule" : ["void function(LLVMModuleRef M)"],
393 	"LLVMPrintModuleToFile" : ["LLVMBool function(LLVMModuleRef M, const(char)* Filename, char** ErrorMessage)",
394 	                           "+", "3", "2", "0"],
395 	"LLVMPrintModuleToString" : ["char* function(LLVMModuleRef M)",
396 								 "+", "3", "4", "0"],
397 	"LLVMSetModuleInlineAsm" : ["void function(LLVMModuleRef M, const(char)* Asm)"],
398 	"LLVMGetModuleContext" : ["LLVMContextRef function(LLVMModuleRef M)"],
399 	"LLVMGetTypeByName" : ["LLVMTypeRef function(LLVMModuleRef M, const(char)* Name)"],
400 	"LLVMGetNamedMetadataNumOperands" : ["uint function(LLVMModuleRef M, const(char)* name)"],
401 	"LLVMGetNamedMetadataOperands" : ["void function(LLVMModuleRef M, const(char)* name, LLVMValueRef *Dest)"],
402 	"LLVMAddNamedMetadataOperand" : ["void function(LLVMModuleRef M, const(char)* name, LLVMValueRef Val)"],
403 	"LLVMAddFunction" : ["LLVMValueRef function(LLVMModuleRef M, const(char)* Name, LLVMTypeRef FunctionTy)"],
404 	"LLVMGetNamedFunction" : ["LLVMValueRef function(LLVMModuleRef M, const(char)* Name)"],
405 	"LLVMGetFirstFunction" : ["LLVMValueRef function(LLVMModuleRef M)"],
406 	"LLVMGetLastFunction" : ["LLVMValueRef function(LLVMModuleRef M)"],
407 	"LLVMGetNextFunction" : ["LLVMValueRef function(LLVMValueRef Fn)"],
408 	"LLVMGetPreviousFunction" : ["LLVMValueRef function(LLVMValueRef Fn)"],
409 
410 	/++ Types ++/
411 
412 	"LLVMGetTypeKind" : ["LLVMTypeKind function(LLVMTypeRef Ty)"],
413 	"LLVMTypeIsSized" : ["LLVMBool function(LLVMTypeRef Ty)"],
414 	"LLVMGetTypeContext" : ["LLVMContextRef function(LLVMTypeRef Ty)"],
415 	"LLVMDumpType" : ["void function(LLVMTypeRef Val)",
416 					  "+", "3", "4", "0"],
417 	"LLVMPrintTypeToString" : ["char* function(LLVMTypeRef Val)",
418 							   "+", "3", "4", "0"],
419 
420 	/+++ Integer Types +++/
421 
422 	"LLVMInt1TypeInContext" : ["LLVMTypeRef function(LLVMContextRef C)"],
423 	"LLVMInt8TypeInContext" : ["LLVMTypeRef function(LLVMContextRef C)"],
424 	"LLVMInt16TypeInContext" : ["LLVMTypeRef function(LLVMContextRef C)"],
425 	"LLVMInt32TypeInContext" : ["LLVMTypeRef function(LLVMContextRef C)"],
426 	"LLVMInt64TypeInContext" : ["LLVMTypeRef function(LLVMContextRef C)"],
427 	"LLVMInt128TypeInContext" : ["LLVMTypeRef function(LLVMContextRef C)",
428 	                             "+", "3", "8", "0"],
429 	"LLVMIntTypeInContext" : ["LLVMTypeRef function(LLVMContextRef C, uint NumBits)"],
430 	"LLVMInt1Type" : ["LLVMTypeRef function()"],
431 	"LLVMInt8Type" : ["LLVMTypeRef function()"],
432 	"LLVMInt16Type" : ["LLVMTypeRef function()"],
433 	"LLVMInt32Type" : ["LLVMTypeRef function()"],
434 	"LLVMInt64Type" : ["LLVMTypeRef function()"],
435 	"LLVMInt128Type" : ["LLVMTypeRef function()",
436 	                    "+", "3", "8", "0"],
437 	"LLVMIntType" : ["LLVMTypeRef function(uint NumBits)"],
438 	"LLVMGetIntTypeWidth" : ["uint function(LLVMTypeRef IntegerTy)"],
439 
440 	/+++ Floating Point Types +++/
441 
442 	"LLVMHalfTypeInContext" : ["LLVMTypeRef function(LLVMContextRef C)"],
443 	"LLVMFloatTypeInContext" : ["LLVMTypeRef function(LLVMContextRef C)"],
444 	"LLVMDoubleTypeInContext" : ["LLVMTypeRef function(LLVMContextRef C)"],
445 	"LLVMX86FP80TypeInContext" : ["LLVMTypeRef function(LLVMContextRef C)"],
446 	"LLVMFP128TypeInContext" : ["LLVMTypeRef function(LLVMContextRef C)"],
447 	"LLVMPPCFP128TypeInContext" : ["LLVMTypeRef function(LLVMContextRef C)"],
448 	"LLVMHalfType" : ["LLVMTypeRef function()"],
449 	"LLVMFloatType" : ["LLVMTypeRef function()"],
450 	"LLVMDoubleType" : ["LLVMTypeRef function()"],
451 	"LLVMX86FP80Type" : ["LLVMTypeRef function()"],
452 	"LLVMFP128Type" : ["LLVMTypeRef function()"],
453 	"LLVMPPCFP128Type" : ["LLVMTypeRef function()"],
454 
455 	/+++ Function Types +++/
456 
457 	"LLVMFunctionType" : ["LLVMTypeRef function(LLVMTypeRef ReturnType, LLVMTypeRef* ParamTypes, uint ParamCount, LLVMBool IsVarArg)"],
458 	"LLVMIsFunctionVarArg" : ["LLVMBool function(LLVMTypeRef FunctionTy)"],
459 	"LLVMGetReturnType" : ["LLVMTypeRef function(LLVMTypeRef FunctionTy)"],
460 	"LLVMCountParamTypes" : ["uint function(LLVMTypeRef FunctionTy)"],
461 	"LLVMGetParamTypes" : ["void function(LLVMTypeRef FunctionTy, LLVMTypeRef* Dest)"],
462 
463 	/+++ Structure Types +++/
464 
465 	"LLVMStructTypeInContext" : ["LLVMTypeRef function(LLVMContextRef C, LLVMTypeRef* ElementTypes, uint ElementCount, LLVMBool Packed)"],
466 	"LLVMStructType" : ["LLVMTypeRef function(LLVMTypeRef* ElementTypes, uint ElementCount, LLVMBool Packed)"],
467 	"LLVMStructCreateNamed" : ["LLVMTypeRef function(LLVMContextRef C, const(char)* Name)"],
468 	"LLVMGetStructName" : ["const(char)* function(LLVMTypeRef Ty)"],
469 	"LLVMStructSetBody" : ["void function(LLVMTypeRef StructTy, LLVMTypeRef* ElementTypes, uint ElementCount, LLVMBool Packed)"],
470 	"LLVMCountStructElementTypes" : ["uint function(LLVMTypeRef StructTy)"],
471 	"LLVMGetStructElementTypes" : ["void function(LLVMTypeRef StructTy, LLVMTypeRef* Dest)"],
472 	"LLVMStructGetTypeAtIndex" : ["LLVMTypeRef function(LLVMTypeRef StructTy, uint i)",
473 								 "+", "3", "7", "0"],
474 	"LLVMIsPackedStruct" : ["LLVMBool function(LLVMTypeRef StructTy)"],
475 	"LLVMIsOpaqueStruct" : ["LLVMBool function(LLVMTypeRef StructTy)"],
476 
477 	/+++ Sequential Types +++/
478 
479 	"LLVMGetElementType" : ["LLVMTypeRef function(LLVMTypeRef Ty)"],
480 	"LLVMArrayType" : ["LLVMTypeRef function(LLVMTypeRef ElementType, uint ElementCount)"],
481 	"LLVMGetArrayLength" : ["uint function(LLVMTypeRef ArrayTy)"],
482 	"LLVMPointerType" : ["LLVMTypeRef function(LLVMTypeRef ElementType, uint AddressSpace)"],
483 	"LLVMGetPointerAddressSpace" : ["uint function(LLVMTypeRef PointerTy)"],
484 	"LLVMVectorType" : ["LLVMTypeRef function(LLVMTypeRef ElementType, uint ElementCount)"],
485 	"LLVMGetVectorSize" : ["uint function(LLVMTypeRef VectorTy)"],
486 
487 	/+++ Other Types +++/
488 
489 	"LLVMVoidTypeInContext" : ["LLVMTypeRef function(LLVMContextRef C)"],
490 	"LLVMLabelTypeInContext" : ["LLVMTypeRef function(LLVMContextRef C)"],
491 	"LLVMX86MMXTypeInContext" : ["LLVMTypeRef function(LLVMContextRef C)"],
492 	"LLVMVoidType" : ["LLVMTypeRef function()"],
493 	"LLVMLabelType" : ["LLVMTypeRef function()"],
494 	"LLVMX86MMXType" : ["LLVMTypeRef function()"],
495 
496 	/++ Values ++/
497 
498 	/+++ General APIs +++/
499 
500 	"LLVMTypeOf" : ["LLVMTypeRef function(LLVMValueRef Val)"],
501 	"LLVMGetValueName" : ["const(char)* function(LLVMValueRef Val)"],
502 	"LLVMSetValueName" : ["void function(LLVMValueRef Val, const(char )*Name)"],
503 	"LLVMDumpValue" : ["void function(LLVMValueRef Val)"],
504 	"LLVMPrintValueToString" : ["char* function(LLVMValueRef Val)",
505 								"+", "3", "4", "0"],
506 	"LLVMReplaceAllUsesWith" : ["void function(LLVMValueRef OldVal, LLVMValueRef NewVal)"],
507 	"LLVMIsConstant" : ["LLVMBool function(LLVMValueRef Val)"],
508 	"LLVMIsUndef" : ["LLVMBool function(LLVMValueRef Val)"],
509 
510 	"LLVMIsAAllocaInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
511 	"LLVMIsAArgument" : ["LLVMValueRef function(LLVMValueRef Val)"],
512 	"LLVMIsABasicBlock" : ["LLVMValueRef function(LLVMValueRef Val)"],
513 	"LLVMIsABinaryOperator" : ["LLVMValueRef function(LLVMValueRef Val)"],
514 	"LLVMIsABitCastInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
515 	"LLVMIsABlockAddress" : ["LLVMValueRef function(LLVMValueRef Val)"],
516 	"LLVMIsABranchInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
517 	"LLVMIsACallInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
518 	"LLVMIsACastInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
519 	"LLVMIsAAddrSpaceCastInst" : ["LLVMValueRef function(LLVMValueRef Val)",
520 								  "+", "3", "4", "0"],
521 	"LLVMIsACmpInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
522 	"LLVMIsAConstantAggregateZero" : ["LLVMValueRef function(LLVMValueRef Val)"],
523 	"LLVMIsAConstantArray" : ["LLVMValueRef function(LLVMValueRef Val)"],
524 	"LLVMIsAConstantDataSequential" : ["LLVMValueRef function(LLVMValueRef Val)",
525 		  "+", "3", "4", "0"],
526 	"LLVMIsAConstantDataArray" : ["LLVMValueRef function(LLVMValueRef Val)",
527 		  "+", "3", "4", "0"],
528 	"LLVMIsAConstantDataVector" : ["LLVMValueRef function(LLVMValueRef Val)",
529 		  "+", "3", "4", "0"],
530 
531 	"LLVMIsAConstantExpr" : ["LLVMValueRef function(LLVMValueRef Val)"],
532 	"LLVMIsAConstantFP" : ["LLVMValueRef function(LLVMValueRef Val)"],
533 	"LLVMIsAConstantInt" : ["LLVMValueRef function(LLVMValueRef Val)"],
534 	"LLVMIsAConstant" : ["LLVMValueRef function(LLVMValueRef Val)"],
535 	"LLVMIsAConstantPointerNull" : ["LLVMValueRef function(LLVMValueRef Val)"],
536 	"LLVMIsAConstantStruct" : ["LLVMValueRef function(LLVMValueRef Val)"],
537 	"LLVMIsAConstantTokenNone" : ["LLVMValueRef function(LLVMValueRef Val)",
538 	                              "+", "3", "8", "0"],
539 	"LLVMIsAConstantVector" : ["LLVMValueRef function(LLVMValueRef Val)"],
540 	"LLVMIsADbgDeclareInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
541 	"LLVMIsADbgInfoIntrinsic" : ["LLVMValueRef function(LLVMValueRef Val)"],
542 	"LLVMIsAExtractElementInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
543 	"LLVMIsAExtractValueInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
544 	"LLVMIsAFCmpInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
545 	"LLVMIsAFPExtInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
546 	"LLVMIsAFPToSIInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
547 	"LLVMIsAFPToUIInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
548 	"LLVMIsAFPTruncInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
549 	"LLVMIsAGetElementPtrInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
550 	"LLVMIsAGlobalValue" : ["LLVMValueRef function(LLVMValueRef Val)"],
551 	"LLVMIsAGlobalAlias" : ["LLVMValueRef function(LLVMValueRef Val)"],
552 	"LLVMIsAGlobalObject" : ["LLVMValueRef function(LLVMValueRef Val)"],
553 	"LLVMIsAFunction" : ["LLVMValueRef function(LLVMValueRef Val)"],
554 	"LLVMIsAGlobalVariable" : ["LLVMValueRef function(LLVMValueRef Val)"],
555 	"LLVMIsAICmpInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
556 	"LLVMIsAIndirectBrInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
557 	"LLVMIsAInlineAsm" : ["LLVMValueRef function(LLVMValueRef Val)"],
558 	"LLVMIsAInsertElementInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
559 	"LLVMIsAInsertValueInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
560 	"LLVMIsAInstruction" : ["LLVMValueRef function(LLVMValueRef Val)"],
561 	"LLVMIsAIntrinsicInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
562 	"LLVMIsAIntToPtrInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
563 	"LLVMIsAInvokeInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
564 	"LLVMIsALandingPadInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
565 	"LLVMIsALoadInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
566 	"LLVMIsAMDNode" : ["LLVMValueRef function(LLVMValueRef Val)"],
567 	"LLVMIsAMDString" : ["LLVMValueRef function(LLVMValueRef Val)"],
568 	"LLVMIsAMemCpyInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
569 	"LLVMIsAMemIntrinsic" : ["LLVMValueRef function(LLVMValueRef Val)"],
570 	"LLVMIsAMemMoveInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
571 	"LLVMIsAMemSetInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
572 	"LLVMIsAPHINode" : ["LLVMValueRef function(LLVMValueRef Val)"],
573 	"LLVMIsAPtrToIntInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
574 	"LLVMIsAResumeInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
575 	"LLVMIsACleanupReturnInst" : ["LLVMValueRef function(LLVMValueRef Val)",
576 	                              "+", "3", "8", "0"],
577 	"LLVMIsACatchReturnInst" : ["LLVMValueRef function(LLVMValueRef Val)",
578 	                            "+", "3", "8", "0"],
579 	"LLVMIsAFuncletPadInst" : ["LLVMValueRef function(LLVMValueRef Val)",
580 	                           "+", "3", "8", "0"],
581 	"LLVMIsACatchPadInst" : ["LLVMValueRef function(LLVMValueRef Val)",
582 	                         "+", "3", "8", "0"],
583 	"LLVMIsACleanupPadInst" : ["LLVMValueRef function(LLVMValueRef Val)",
584 	                           "+", "3", "8", "0"],
585 	"LLVMIsAReturnInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
586 	"LLVMIsASelectInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
587 	"LLVMIsASExtInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
588 	"LLVMIsAShuffleVectorInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
589 	"LLVMIsASIToFPInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
590 	"LLVMIsAStoreInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
591 	"LLVMIsASwitchInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
592 	"LLVMIsATerminatorInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
593 	"LLVMIsATruncInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
594 	"LLVMIsAUIToFPInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
595 	"LLVMIsAUnaryInstruction" : ["LLVMValueRef function(LLVMValueRef Val)"],
596 	"LLVMIsAUndefValue" : ["LLVMValueRef function(LLVMValueRef Val)"],
597 	"LLVMIsAUnreachableInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
598 	"LLVMIsAUser" : ["LLVMValueRef function(LLVMValueRef Val)"],
599 	"LLVMIsAVAArgInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
600 	"LLVMIsAZExtInst" : ["LLVMValueRef function(LLVMValueRef Val)"],
601 
602 	/+++ Usage +++/
603 
604 	"LLVMGetFirstUse" : ["LLVMUseRef function(LLVMValueRef Val)"],
605 	"LLVMGetNextUse" : ["LLVMUseRef function(LLVMUseRef U)"],
606 	"LLVMGetUser" : ["LLVMValueRef function(LLVMUseRef U)"],
607 	"LLVMGetUsedValue" : ["LLVMValueRef function(LLVMUseRef U)"],
608 
609 	/+++ User value +++/
610 
611 	"LLVMGetOperand" : ["LLVMValueRef function(LLVMValueRef Val, uint Index)"],
612 	"LLVMGetOperandUse" : ["LLVMUseRef function(LLVMValueRef Val, uint Index)",
613 						  "+", "3", "6", "0"],
614 	"LLVMSetOperand" : ["void function(LLVMValueRef User, uint Index, LLVMValueRef Val)"],
615 	"LLVMGetNumOperands" : ["int function(LLVMValueRef Val)"],
616 
617 	/+++ Constants +++/
618 
619 	"LLVMConstNull" : ["LLVMValueRef function(LLVMTypeRef Ty)"],
620 	"LLVMConstAllOnes" : ["LLVMValueRef function(LLVMTypeRef Ty)"],
621 	"LLVMGetUndef" : ["LLVMValueRef function(LLVMTypeRef Ty)"],
622 	"LLVMIsNull" : ["LLVMBool function(LLVMValueRef Val)"],
623 	"LLVMConstPointerNull" : ["LLVMValueRef function(LLVMTypeRef Ty)"],
624 
625 	/++++ Scalar constants ++++/
626 
627 	"LLVMConstInt" : ["LLVMValueRef function(LLVMTypeRef IntTy, ulong N, LLVMBool SignExtend)"],
628 	"LLVMConstIntOfArbitraryPrecision" : ["LLVMValueRef function(LLVMTypeRef IntTy, uint NumWords, const(ulong)* Words)"],
629 	"LLVMConstIntOfString" : ["LLVMValueRef function(LLVMTypeRef IntTy, const(char)* Text, ubyte Radix)"],
630 	"LLVMConstIntOfStringAndSize" : ["LLVMValueRef function(LLVMTypeRef IntTy, const(char)* Text, uint SLen, ubyte Radix)"],
631 	"LLVMConstReal" : ["LLVMValueRef function(LLVMTypeRef RealTy, double N)"],
632 	"LLVMConstRealOfString" : ["LLVMValueRef function(LLVMTypeRef RealTy, const(char)* Text)"],
633 	"LLVMConstRealOfStringAndSize" : ["LLVMValueRef function(LLVMTypeRef RealTy, const(char)* Text, uint SLen)"],
634 	"LLVMConstIntGetZExtValue" : ["ulong function(LLVMValueRef ConstantVal)"],
635 	"LLVMConstIntGetSExtValue" : ["long function(LLVMValueRef ConstantVal)"],
636 	"LLVMConstRealGetDouble" : ["double function(LLVMValueRef ConstantVal, LLVMBool *losesInfo)",
637 							   "+", "3", "6", "0"],
638 
639 	/++++ Composite Constants ++++/
640 
641 	"LLVMConstStringInContext" : ["LLVMValueRef function(LLVMContextRef C, const(char)* Str, uint Length, LLVMBool DontNullTerminate)"],
642 	"LLVMConstString" : ["LLVMValueRef function(const(char)* Str, uint Length, LLVMBool DontNullTerminate)"],
643 	"LLVMIsConstantString" : ["LLVMBool function(LLVMValueRef c)",
644 							 "+", "3", "6", "0"],
645 	"LLVMGetAsString" : ["const(char*) function(LLVMValueRef c, size_t* out_)",
646 						"+", "3", "6", "0"],
647 	"LLVMConstStructInContext" : ["LLVMValueRef function(LLVMContextRef C, LLVMValueRef* ConstantVals, uint Count, LLVMBool Packed)"],
648 	"LLVMConstStruct" : ["LLVMValueRef function(LLVMValueRef* ConstantVals, uint Count, LLVMBool Packed)"],
649 	"LLVMConstArray" : ["LLVMValueRef function(LLVMTypeRef ElementTy, LLVMValueRef* ConstantVals, uint Length)"],
650 	"LLVMConstNamedStruct" : ["LLVMValueRef function(LLVMTypeRef StructTy, LLVMValueRef* ConstantVals, uint Count)"],
651 	"LLVMGetElementAsConstant" : ["LLVMValueRef function(LLVMValueRef c, uint idx)",
652 								 "+", "3", "6", "0"],
653 	"LLVMConstVector" : ["LLVMValueRef function(LLVMValueRef* ScalarConstantVals, uint Size)"],
654 
655 	/++++ Constant Expressions ++++/
656 
657 	"LLVMGetConstOpcode" : ["LLVMOpcode function(LLVMValueRef ConstantVal)"],
658 	"LLVMAlignOf" : ["LLVMValueRef function(LLVMTypeRef Ty)"],
659 	"LLVMSizeOf" : ["LLVMValueRef function(LLVMTypeRef Ty)"],
660 	"LLVMConstNeg" : ["LLVMValueRef function(LLVMValueRef ConstantVal)"],
661 	"LLVMConstNSWNeg" : ["LLVMValueRef function(LLVMValueRef ConstantVal)"],
662 	"LLVMConstNUWNeg" : ["LLVMValueRef function(LLVMValueRef ConstantVal)"],
663 	"LLVMConstFNeg" : ["LLVMValueRef function(LLVMValueRef ConstantVal)"],
664 	"LLVMConstNot" : ["LLVMValueRef function(LLVMValueRef ConstantVal)"],
665 	"LLVMConstAdd" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
666 	"LLVMConstNSWAdd" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
667 	"LLVMConstNUWAdd" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
668 	"LLVMConstFAdd" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
669 	"LLVMConstSub" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
670 	"LLVMConstNSWSub" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
671 	"LLVMConstNUWSub" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
672 	"LLVMConstFSub" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
673 	"LLVMConstMul" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
674 	"LLVMConstNSWMul" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
675 	"LLVMConstNUWMul" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
676 	"LLVMConstFMul" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
677 	"LLVMConstUDiv" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
678 	"LLVMConstSDiv" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
679 	"LLVMConstExactSDiv" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
680 	"LLVMConstFDiv" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
681 	"LLVMConstURem" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
682 	"LLVMConstSRem" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
683 	"LLVMConstFRem" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
684 	"LLVMConstAnd" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
685 	"LLVMConstOr" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
686 	"LLVMConstXor" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
687 	"LLVMConstICmp" : ["LLVMValueRef function(LLVMIntPredicate Predicate, LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
688 	"LLVMConstFCmp" : ["LLVMValueRef function(LLVMRealPredicate Predicate, LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
689 	"LLVMConstShl" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
690 	"LLVMConstLShr" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
691 	"LLVMConstAShr" : ["LLVMValueRef function(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)"],
692 	"LLVMConstGEP" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMValueRef* ConstantIndices, uint NumIndices)"],
693 	"LLVMConstInBoundsGEP" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMValueRef* ConstantIndices, uint NumIndices)"],
694 	"LLVMConstTrunc" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
695 	"LLVMConstSExt" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
696 	"LLVMConstZExt" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
697 	"LLVMConstFPTrunc" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
698 	"LLVMConstFPExt" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
699 	"LLVMConstUIToFP" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
700 	"LLVMConstSIToFP" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
701 	"LLVMConstFPToUI" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
702 	"LLVMConstFPToSI" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
703 	"LLVMConstPtrToInt" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
704 	"LLVMConstIntToPtr" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
705 	"LLVMConstBitCast" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
706 	"LLVMConstAddrSpaceCast" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)",
707 								"+", "3", "4", "0"],
708 	"LLVMConstZExtOrBitCast" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
709 	"LLVMConstSExtOrBitCast" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
710 	"LLVMConstTruncOrBitCast" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
711 	"LLVMConstPointerCast" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
712 	"LLVMConstIntCast" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType, LLVMBool isSigned)"],
713 	"LLVMConstFPCast" : ["LLVMValueRef function(LLVMValueRef ConstantVal, LLVMTypeRef ToType)"],
714 	"LLVMConstSelect" : ["LLVMValueRef function(LLVMValueRef ConstantCondition, LLVMValueRef ConstantIfTrue, LLVMValueRef ConstantIfFalse)"],
715 	"LLVMConstExtractElement" : ["LLVMValueRef function(LLVMValueRef VectorConstant, LLVMValueRef IndexConstant)"],
716 	"LLVMConstInsertElement" : ["LLVMValueRef function(LLVMValueRef VectorConstant, LLVMValueRef ElementValueConstant, LLVMValueRef IndexConstant)"],
717 	"LLVMConstShuffleVector" : ["LLVMValueRef function(LLVMValueRef VectorAConstant, LLVMValueRef VectorBConstant, LLVMValueRef MaskConstant)"],
718 	"LLVMConstExtractValue" : ["LLVMValueRef function(LLVMValueRef AggConstant, uint* IdxList, uint NumIdx)"],
719 	"LLVMConstInsertValue" : ["LLVMValueRef function(LLVMValueRef AggConstant, LLVMValueRef ElementValueConstant, uint* IdxList, uint NumIdx)"],
720 	"LLVMConstInlineAsm" : ["LLVMValueRef function(LLVMTypeRef Ty, const(char)* AsmString, const(char)* Constraints, LLVMBool HasSideEffects, LLVMBool IsAlignStack)"],
721 	"LLVMBlockAddress" : ["LLVMValueRef function(LLVMValueRef F, LLVMBasicBlockRef BB)"],
722 
723 	/++++ Global Values ++++/
724 
725 	"LLVMGetGlobalParent" : ["LLVMModuleRef function(LLVMValueRef Global)"],
726 	"LLVMIsDeclaration" : ["LLVMBool function(LLVMValueRef Global)"],
727 	"LLVMGetLinkage" : ["LLVMLinkage function(LLVMValueRef Global)"],
728 	"LLVMSetLinkage" : ["void function(LLVMValueRef Global, LLVMLinkage Linkage)"],
729 	"LLVMGetSection" : ["const(char)* function(LLVMValueRef Global)"],
730 	"LLVMSetSection" : ["void function(LLVMValueRef Global, const(char)* Section)"],
731 	"LLVMGetVisibility" : ["LLVMVisibility function(LLVMValueRef Global)"],
732 	"LLVMSetVisibility" : ["void function(LLVMValueRef Global, LLVMVisibility Viz)"],
733 	"LLVMGetDLLStorageClass" : ["LLVMDLLStorageClass function(LLVMValueRef Global)",
734 							   "+", "3", "5", "0"],
735 	"LLVMSetDLLStorageClass" : ["void function(LLVMValueRef Global, LLVMDLLStorageClass Class)",
736 							   "+", "3", "5", "0"],
737 	"LLVMHasUnnamedAddr" : ["LLVMBool function(LLVMValueRef Global)",
738 						   "+", "3", "5", "0"],
739 	"LLVMSetUnnamedAddr" : ["void function(LLVMValueRef Global, LLVMBool HasUnnamedAddr)",
740 						   "+", "3", "5", "0"],
741 	"LLVMGetAlignment" : ["uint function(LLVMValueRef Global)"],
742 	"LLVMSetAlignment" : ["void function(LLVMValueRef Global, uint Bytes)"],
743 
744 	/+++++ Global Variables +++++/
745 
746 	"LLVMAddGlobal" : ["LLVMValueRef function(LLVMModuleRef M, LLVMTypeRef Ty, const(char)* Name)"],
747 	"LLVMAddGlobalInAddressSpace" : ["LLVMValueRef function(LLVMModuleRef M, LLVMTypeRef Ty, const(char)* Name, uint AddressSpace)"],
748 	"LLVMGetNamedGlobal" : ["LLVMValueRef function(LLVMModuleRef M, const(char)* Name)"],
749 	"LLVMGetFirstGlobal" : ["LLVMValueRef function(LLVMModuleRef M)"],
750 	"LLVMGetLastGlobal" : ["LLVMValueRef function(LLVMModuleRef M)"],
751 	"LLVMGetNextGlobal" : ["LLVMValueRef function(LLVMValueRef GlobalVar)"],
752 	"LLVMGetPreviousGlobal" : ["LLVMValueRef function(LLVMValueRef GlobalVar)"],
753 	"LLVMDeleteGlobal" : ["void function(LLVMValueRef GlobalVar)"],
754 	"LLVMGetInitializer" : ["LLVMValueRef function(LLVMValueRef GlobalVar)"],
755 	"LLVMSetInitializer" : ["void function(LLVMValueRef GlobalVar, LLVMValueRef ConstantVal)"],
756 	"LLVMIsThreadLocal" : ["LLVMBool function(LLVMValueRef GlobalVar)"],
757 	"LLVMSetThreadLocal" : ["void function(LLVMValueRef GlobalVar, LLVMBool IsThreadLocal)"],
758 	"LLVMIsGlobalConstant" : ["LLVMBool function(LLVMValueRef GlobalVar)"],
759 	"LLVMSetGlobalConstant" : ["void function(LLVMValueRef GlobalVar, LLVMBool IsConstant)"],
760 	"LLVMGetThreadLocalMode" : ["LLVMThreadLocalMode function(LLVMValueRef GlobalVar)",
761 	                                  "+", "3", "3", "0"],
762 	"LLVMSetThreadLocalMode" : ["void function(LLVMValueRef GlobalVar, LLVMThreadLocalMode Mode)",
763 	                            "+", "3", "3", "0"],
764 	"LLVMIsExternallyInitialized" : ["LLVMBool function(LLVMValueRef GlobalVar)",
765 	                                 "+", "3", "3", "0"],
766 	"LLVMSetExternallyInitialized" : ["void function(LLVMValueRef GlobalVar, LLVMBool IsExtInit)",
767 	                                  "+", "3", "3", "0"],
768 
769 	/+++++ Global Aliases +++++/
770 
771 	"LLVMAddAlias" : ["LLVMValueRef function(LLVMModuleRef M, LLVMTypeRef Ty, LLVMValueRef Aliasee, const(char)* Name)"],
772 
773 	/+++++ Function values +++++/
774 
775 	"LLVMDeleteFunction" : ["void function(LLVMValueRef Fn)"],
776 	"LLVMGetPersonalityFn" : ["LLVMValueRef function(LLVMValueRef Fn)",
777 							 "+", "3", "7", "0"],
778 	"LLVMSetPersonalityFn" : ["void function(LLVMValueRef Fn, LLVMValueRef PersonalityFn)",
779 							 "+", "3", "7", "0"],
780 	"LLVMGetIntrinsicID" : ["uint function(LLVMValueRef Fn)"],
781 	"LLVMGetFunctionCallConv" : ["uint function(LLVMValueRef Fn)"],
782 	"LLVMSetFunctionCallConv" : ["void function(LLVMValueRef Fn, uint CC)"],
783 	"LLVMGetGC" : ["const(char)* function(LLVMValueRef Fn)"],
784 	"LLVMSetGC" : ["void function(LLVMValueRef Fn, const(char)* Name)"],
785 	"LLVMAddFunctionAttr" : ["void function(LLVMValueRef Fn, LLVMAttribute PA)"],
786 	"LLVMAddTargetDependentFunctionAttr" : ["void function(LLVMValueRef Fn, const(char)* A, const(char)* V)",
787 	                                        "+", "3", "3", "0"],
788 	"LLVMGetFunctionAttr" : ["LLVMAttribute function(LLVMValueRef Fn)"],
789 	"LLVMRemoveFunctionAttr" : ["void function(LLVMValueRef Fn, LLVMAttribute PA)"],
790 
791 	/++++++ Function Parameters ++++++/
792 
793 	"LLVMCountParams" : ["uint function(LLVMValueRef Fn)"],
794 	"LLVMGetParams" : ["void function(LLVMValueRef Fn, LLVMValueRef* Params)"],
795 	"LLVMGetParam" : ["LLVMValueRef function(LLVMValueRef Fn, uint Index)"],
796 	"LLVMGetParamParent" : ["LLVMValueRef function(LLVMValueRef Inst)"],
797 	"LLVMGetFirstParam" : ["LLVMValueRef function(LLVMValueRef Fn)"],
798 	"LLVMGetLastParam" : ["LLVMValueRef function(LLVMValueRef Fn)"],
799 	"LLVMGetNextParam" : ["LLVMValueRef function(LLVMValueRef Arg)"],
800 	"LLVMGetPreviousParam" : ["LLVMValueRef function(LLVMValueRef Arg)"],
801 	"LLVMAddAttribute" : ["void function(LLVMValueRef Arg, LLVMAttribute PA)"],
802 	"LLVMRemoveAttribute" : ["void function(LLVMValueRef Arg, LLVMAttribute PA)"],
803 	"LLVMGetAttribute" : ["LLVMAttribute function(LLVMValueRef Arg)"],
804 	"LLVMSetParamAlignment" : ["void function(LLVMValueRef Arg, uint Align)"],
805 
806 	/+++ Metadata +++/
807 
808 	"LLVMMDStringInContext" : ["LLVMValueRef function(LLVMContextRef C, const(char)* Str, uint SLen)"],
809 	"LLVMMDString" : ["LLVMValueRef function(const(char)* Str, uint SLen)"],
810 	"LLVMMDNodeInContext" : ["LLVMValueRef function(LLVMContextRef C, LLVMValueRef* Vals, uint Count)"],
811 	"LLVMMDNode" : ["LLVMValueRef function(LLVMValueRef* Vals, uint Count)"],
812 	"LLVMGetMDString" : ["const(char)* function(LLVMValueRef V, uint* Len)"],
813 	"LLVMGetMDNodeNumOperands" : ["uint function(LLVMValueRef V)",
814 	                              "+", "3", "2", "0"],
815 	"LLVMGetMDNodeOperands" : ["void function(LLVMValueRef V, LLVMValueRef *Dest)",
816 	                           "+", "3", "2", "0"],
817 
818 	/+++ Basic Block +++/
819 
820 	"LLVMBasicBlockAsValue" : ["LLVMValueRef function(LLVMBasicBlockRef BB)"],
821 	"LLVMValueIsBasicBlock" : ["LLVMBool function(LLVMValueRef Val)"],
822 	"LLVMValueAsBasicBlock" : ["LLVMBasicBlockRef function(LLVMValueRef Val)"],
823 	"LLVMGetBasicBlockParent" : ["LLVMValueRef function(LLVMBasicBlockRef BB)"],
824 	"LLVMGetBasicBlockTerminator" : ["LLVMValueRef function(LLVMBasicBlockRef BB)"],
825 	"LLVMCountBasicBlocks" : ["uint function(LLVMValueRef Fn)"],
826 	"LLVMGetBasicBlocks" : ["void function(LLVMValueRef Fn, LLVMBasicBlockRef* BasicBlocks)"],
827 	"LLVMGetFirstBasicBlock" : ["LLVMBasicBlockRef function(LLVMValueRef Fn)"],
828 	"LLVMGetLastBasicBlock" : ["LLVMBasicBlockRef function(LLVMValueRef Fn)"],
829 	"LLVMGetNextBasicBlock" : ["LLVMBasicBlockRef function(LLVMBasicBlockRef BB)"],
830 	"LLVMGetPreviousBasicBlock" : ["LLVMBasicBlockRef function(LLVMBasicBlockRef BB)"],
831 	"LLVMGetEntryBasicBlock" : ["LLVMBasicBlockRef function(LLVMValueRef Fn)"],
832 	"LLVMAppendBasicBlockInContext" : ["LLVMBasicBlockRef function(LLVMContextRef C, LLVMValueRef Fn, const(char)* Name)"],
833 	"LLVMAppendBasicBlock" : ["LLVMBasicBlockRef function(LLVMValueRef Fn, const(char)* Name)"],
834 	"LLVMInsertBasicBlockInContext" : ["LLVMBasicBlockRef function(LLVMContextRef C, LLVMBasicBlockRef BB, const(char)* Name)"],
835 	"LLVMInsertBasicBlock" : ["LLVMBasicBlockRef function(LLVMBasicBlockRef InsertBeforeBB, const(char)* Name)"],
836 	"LLVMDeleteBasicBlock" : ["void function(LLVMBasicBlockRef BB)"],
837 	"LLVMRemoveBasicBlockFromParent" : ["void function(LLVMBasicBlockRef BB)"],
838 	"LLVMMoveBasicBlockBefore" : ["void function(LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos)"],
839 	"LLVMMoveBasicBlockAfter" : ["void function(LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos)"],
840 	"LLVMGetFirstInstruction" : ["LLVMValueRef function(LLVMBasicBlockRef BB)"],
841 	"LLVMGetLastInstruction" : ["LLVMValueRef function(LLVMBasicBlockRef BB)"],
842 
843 	/+++ Instructions +++/
844 
845 	"LLVMHasMetadata" : ["int function(LLVMValueRef Val)"],
846 	"LLVMGetMetadata" : ["LLVMValueRef function(LLVMValueRef Val, uint KindID)"],
847 	"LLVMSetMetadata" : ["void function(LLVMValueRef Val, uint KindID, LLVMValueRef Node)"],
848 	"LLVMGetInstructionParent" : ["LLVMBasicBlockRef function(LLVMValueRef Inst)"],
849 	"LLVMGetNextInstruction" : ["LLVMValueRef function(LLVMValueRef Inst)"],
850 	"LLVMGetPreviousInstruction" : ["LLVMValueRef function(LLVMValueRef Inst)"],
851 	"LLVMInstructionEraseFromParent" : ["void function(LLVMValueRef Inst)"],
852 	"LLVMGetInstructionOpcode" : ["LLVMOpcode function(LLVMValueRef Inst)"],
853 	"LLVMGetICmpPredicate" : ["LLVMIntPredicate function(LLVMValueRef Inst)"],
854 	"LLVMGetFCmpPredicate" : ["LLVMRealPredicate function(LLVMValueRef Inst)",
855 							 "+", "3", "6", "0"],
856 	"LLVMInstructionClone" : ["LLVMValueRef function(LLVMValueRef Inst)",
857 							 "+", "3", "6", "0"],
858 	"LLVMGetSwitchDefaultDest" : ["LLVMBasicBlockRef function(LLVMValueRef SwitchInstr)"],
859 
860 	/++++ Call Sites and Invocations ++++/
861 
862 	"LLVMSetInstructionCallConv" : ["void function(LLVMValueRef Instr, uint CC)"],
863 	"LLVMGetInstructionCallConv" : ["uint function(LLVMValueRef Instr)"],
864 	"LLVMAddInstrAttribute" : ["void function(LLVMValueRef Instr, uint index, LLVMAttribute)"],
865 	"LLVMRemoveInstrAttribute" : ["void function(LLVMValueRef Instr, uint index, LLVMAttribute)"],
866 	"LLVMSetInstrParamAlignment" : ["void function(LLVMValueRef Instr, uint index, uint Align)"],
867 	"LLVMIsTailCall" : ["LLVMBool function(LLVMValueRef CallInst)"],
868 	"LLVMSetTailCall" : ["void function(LLVMValueRef CallInst, LLVMBool IsTailCall)"],
869 	"LLVMGetNumSuccessors" : ["uint function(LLVMValueRef Term)",
870 							 "+", "3", "6", "0"],
871 	"LLVMGetSuccessor" : ["LLVMBasicBlockRef function(LLVMValueRef Term, uint i)",
872 						 "+", "3", "6", "0"],
873 	"LLVMSetSuccessor" : ["void function(LLVMValueRef Term, uint i, LLVMBasicBlockRef block)",
874 						 "+", "3", "6", "0"],
875 	"LLVMIsConditional" : ["LLVMBool function(LLVMValueRef Branch)",
876 						  "+", "3", "6", "0"],
877 	"LLVMGetCondition" : ["LLVMValueRef function(LLVMValueRef Branch)",
878 						 "+", "3", "6", "0"],
879 	"LLVMSetCondition" : ["void function(LLVMValueRef Branch, LLVMValueRef Cond)",
880 						 "+", "3", "6", "0"],
881 
882 	/++++ PHI Nodes ++++/
883 
884 	"LLVMAddIncoming" : ["void function(LLVMValueRef PhiNode, LLVMValueRef* IncomingValues, LLVMBasicBlockRef* IncomingBlocks, uint Count)"],
885 	"LLVMCountIncoming" : ["uint function(LLVMValueRef PhiNode)"],
886 	"LLVMGetIncomingValue" : ["LLVMValueRef function(LLVMValueRef PhiNode, uint Index)"],
887 	"LLVMGetIncomingBlock" : ["LLVMBasicBlockRef function(LLVMValueRef PhiNode, uint Index)"],
888 
889 	/++ Instruction Builders ++/
890 
891 	"LLVMCreateBuilderInContext" : ["LLVMBuilderRef function(LLVMContextRef C)"],
892 	"LLVMCreateBuilder" : ["LLVMBuilderRef function()"],
893 	"LLVMPositionBuilder" : ["void function(LLVMBuilderRef Builder, LLVMBasicBlockRef Block, LLVMValueRef Instr)"],
894 	"LLVMPositionBuilderBefore" : ["void function(LLVMBuilderRef Builder, LLVMValueRef Instr)"],
895 	"LLVMPositionBuilderAtEnd" : ["void function(LLVMBuilderRef Builder, LLVMBasicBlockRef Block)"],
896 	"LLVMGetInsertBlock" : ["LLVMBasicBlockRef function(LLVMBuilderRef Builder)"],
897 	"LLVMClearInsertionPosition" : ["void function(LLVMBuilderRef Builder)"],
898 	"LLVMInsertIntoBuilder" : ["void function(LLVMBuilderRef Builder, LLVMValueRef Instr)"],
899 	"LLVMInsertIntoBuilderWithName" : ["void function(LLVMBuilderRef Builder, LLVMValueRef Instr, const(char)* Name)"],
900 	"LLVMDisposeBuilder" : ["void function(LLVMBuilderRef Builder)"],
901 	"LLVMSetCurrentDebugLocation" : ["void function(LLVMBuilderRef Builder, LLVMValueRef L)"],
902 	"LLVMGetCurrentDebugLocation" : ["LLVMValueRef function(LLVMBuilderRef Builder)"],
903 	"LLVMSetInstDebugLocation" : ["void function(LLVMBuilderRef Builder, LLVMValueRef Inst)"],
904 	"LLVMBuildRetVoid" : ["LLVMValueRef function(LLVMBuilderRef)"],
905 	"LLVMBuildRet" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef V)"],
906 	"LLVMBuildAggregateRet" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef* RetVals, uint N)"],
907 	"LLVMBuildBr" : ["LLVMValueRef function(LLVMBuilderRef, LLVMBasicBlockRef Dest)"],
908 	"LLVMBuildCondBr" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef If, LLVMBasicBlockRef Then, LLVMBasicBlockRef Else)"],
909 	"LLVMBuildSwitch" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef V, LLVMBasicBlockRef Else, uint NumCases)"],
910 	"LLVMBuildIndirectBr" : ["LLVMValueRef function(LLVMBuilderRef B, LLVMValueRef Addr, uint NumDests)"],
911 	"LLVMBuildInvoke" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Fn, LLVMValueRef* Args, uint NumArgs, LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, const(char)* Name)"],
912 	"LLVMBuildLandingPad" : (LLVM_Version >= 3.7) ?
913 			["LLVMValueRef function(LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef PersFn, uint NumClauses, const(char)* Name)"] :
914 			["LLVMValueRef function(LLVMBuilderRef B, LLVMTypeRef Ty, uint NumClauses, const(char)* Name)"],
915 	"LLVMBuildResume" : ["LLVMValueRef function(LLVMBuilderRef B, LLVMValueRef Exn)"],
916 	"LLVMBuildUnreachable" : ["LLVMValueRef function(LLVMBuilderRef)"],
917 	"LLVMAddCase" : ["void function(LLVMValueRef Switch, LLVMValueRef OnVal, LLVMBasicBlockRef Dest)"],
918 	"LLVMAddDestination" : ["void function(LLVMValueRef IndirectBr, LLVMBasicBlockRef Dest)"],
919 	"LLVMAddClause" : ["void function(LLVMValueRef LandingPad, LLVMValueRef ClauseVal)"],
920 	"LLVMSetCleanup" : ["void function(LLVMValueRef LandingPad, LLVMBool Val)"],
921 	"LLVMBuildAdd" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
922 	"LLVMBuildNSWAdd" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
923 	"LLVMBuildNUWAdd" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
924 	"LLVMBuildFAdd" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
925 	"LLVMBuildSub" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
926 	"LLVMBuildNSWSub" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
927 	"LLVMBuildNUWSub" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
928 	"LLVMBuildFSub" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
929 	"LLVMBuildMul" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
930 	"LLVMBuildNSWMul" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
931 	"LLVMBuildNUWMul" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
932 	"LLVMBuildFMul" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
933 	"LLVMBuildUDiv" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
934 	"LLVMBuildSDiv" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
935 	"LLVMBuildExactSDiv" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
936 	"LLVMBuildFDiv" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
937 	"LLVMBuildURem" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
938 	"LLVMBuildSRem" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
939 	"LLVMBuildFRem" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
940 	"LLVMBuildShl" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
941 	"LLVMBuildLShr" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
942 	"LLVMBuildAShr" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
943 	"LLVMBuildAnd" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
944 	"LLVMBuildOr" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
945 	"LLVMBuildXor" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
946 	"LLVMBuildBinOp" : ["LLVMValueRef function(LLVMBuilderRef B, LLVMOpcode Op, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
947 	"LLVMBuildNeg" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef V, const(char)* Name)"],
948 	"LLVMBuildNSWNeg" : ["LLVMValueRef function(LLVMBuilderRef B, LLVMValueRef V, const(char)* Name)"],
949 	"LLVMBuildNUWNeg" : ["LLVMValueRef function(LLVMBuilderRef B, LLVMValueRef V, const(char)* Name)"],
950 	"LLVMBuildFNeg" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef V, const(char)* Name)"],
951 	"LLVMBuildNot" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef V, const(char)* Name)"],
952 	"LLVMBuildMalloc" : ["LLVMValueRef function(LLVMBuilderRef, LLVMTypeRef Ty, const(char)* Name)"],
953 	"LLVMBuildArrayMalloc" : ["LLVMValueRef function(LLVMBuilderRef, LLVMTypeRef Ty, LLVMValueRef Val, const(char)* Name)"],
954 	"LLVMBuildAlloca" : ["LLVMValueRef function(LLVMBuilderRef, LLVMTypeRef Ty, const(char)* Name)"],
955 	"LLVMBuildArrayAlloca" : ["LLVMValueRef function(LLVMBuilderRef, LLVMTypeRef Ty, LLVMValueRef Val, const(char)* Name)"],
956 	"LLVMBuildFree" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef PointerVal)"],
957 	"LLVMBuildLoad" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef PointerVal, const(char)* Name)"],
958 	"LLVMBuildStore" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMValueRef Ptr)"],
959 	"LLVMBuildGEP" : ["LLVMValueRef function(LLVMBuilderRef B, LLVMValueRef Pointer, LLVMValueRef* Indices, uint NumIndices, const(char)* Name)"],
960 	"LLVMBuildInBoundsGEP" : ["LLVMValueRef function(LLVMBuilderRef B, LLVMValueRef Pointer, LLVMValueRef* Indices, uint NumIndices, const(char)* Name)"],
961 	"LLVMBuildStructGEP" : ["LLVMValueRef function(LLVMBuilderRef B, LLVMValueRef Pointer, uint Idx, const(char)* Name)"],
962 	"LLVMBuildGlobalString" : ["LLVMValueRef function(LLVMBuilderRef B, const(char)* Str, const(char)* Name)"],
963 	"LLVMBuildGlobalStringPtr" : ["LLVMValueRef function(LLVMBuilderRef B, const(char)* Str, const(char)* Name)"],
964 	"LLVMGetVolatile" : ["LLVMBool function(LLVMValueRef MemoryAccessInst)"],
965 	"LLVMSetVolatile" : ["void function(LLVMValueRef MemoryAccessInst, LLVMBool IsVolatile)"],
966 	"LLVMGetOrdering" : ["LLVMAtomicOrdering function(LLVMValueRef MemoryAccessInst)",
967 	                     "+", "3", "8", "0"],
968 	"LLVMSetOrdering" : ["void function(LLVMValueRef MemoryAccessInst, LLVMAtomicOrdering Ordering)",
969 	                     "+", "3", "8", "0"],
970 	"LLVMBuildTrunc" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
971 	"LLVMBuildZExt" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
972 	"LLVMBuildSExt" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
973 	"LLVMBuildFPToUI" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
974 	"LLVMBuildFPToSI" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
975 	"LLVMBuildUIToFP" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
976 	"LLVMBuildSIToFP" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
977 	"LLVMBuildFPTrunc" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
978 	"LLVMBuildFPExt" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
979 	"LLVMBuildPtrToInt" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
980 	"LLVMBuildIntToPtr" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
981 	"LLVMBuildBitCast" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
982 	"LLVMBuildAddrSpaceCast" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)",
983 								"+", "3", "4", "0"],
984 	"LLVMBuildZExtOrBitCast" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
985 	"LLVMBuildSExtOrBitCast" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
986 	"LLVMBuildTruncOrBitCast" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
987 	"LLVMBuildCast" : ["LLVMValueRef function(LLVMBuilderRef B, LLVMOpcode Op, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
988 	"LLVMBuildPointerCast" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
989 	"LLVMBuildIntCast" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
990 	"LLVMBuildFPCast" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name)"],
991 	"LLVMBuildICmp" : ["LLVMValueRef function(LLVMBuilderRef, LLVMIntPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
992 	"LLVMBuildFCmp" : ["LLVMValueRef function(LLVMBuilderRef, LLVMRealPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
993 	"LLVMBuildPhi" : ["LLVMValueRef function(LLVMBuilderRef, LLVMTypeRef Ty, const(char)* Name)"],
994 	"LLVMBuildCall" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Fn, LLVMValueRef* Args, uint NumArgs, const(char)* Name)"],
995 	"LLVMBuildSelect" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef If, LLVMValueRef Then, LLVMValueRef Else, const(char)* Name)"],
996 	"LLVMBuildVAArg" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef List, LLVMTypeRef Ty, const(char)* Name)"],
997 	"LLVMBuildExtractElement" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef VecVal, LLVMValueRef Index, const(char)* Name)"],
998 	"LLVMBuildInsertElement" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef VecVal, LLVMValueRef EltVal, LLVMValueRef Index, const(char)* Name)"],
999 	"LLVMBuildShuffleVector" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef V1, LLVMValueRef V2, LLVMValueRef Mask, const(char)* Name)"],
1000 	"LLVMBuildExtractValue" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef AggVal, uint Index, const(char)* Name)"],
1001 	"LLVMBuildInsertValue" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef AggVal, LLVMValueRef EltVal, uint Index, const(char)* Name)"],
1002 	"LLVMBuildIsNull" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, const(char)* Name)"],
1003 	"LLVMBuildIsNotNull" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef Val, const(char)* Name)"],
1004 	"LLVMBuildPtrDiff" : ["LLVMValueRef function(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name)"],
1005 	"LLVMBuildAtomicRMW" : ["LLVMValueRef function(LLVMBuilderRef B, LLVMAtomicRMWBinOp op, LLVMValueRef PTR, LLVMValueRef Val, LLVMAtomicOrdering ordering, LLVMBool singleThread)",
1006 	                        "+", "3", "3", "0"],
1007 	"LLVMBuildFence" : ["LLVMValueRef function(LLVMBuilderRef B, LLVMAtomicOrdering ordering, LLVMBool singleThread, const char *Name)",
1008 					   "+", "3", "5", "0"],
1009 
1010 	/++ Module Providers ++/
1011 
1012 	"LLVMCreateModuleProviderForExistingModule" : ["LLVMModuleProviderRef function(LLVMModuleRef M)"],
1013 	"LLVMDisposeModuleProvider" : ["void function(LLVMModuleProviderRef M)"],
1014 
1015 	/++ Memory Buffers ++/
1016 
1017 	"LLVMCreateMemoryBufferWithContentsOfFile" : ["LLVMBool function(const(char)* Path, LLVMMemoryBufferRef* OutMemBuf, char** OutMessage)"],
1018 	"LLVMCreateMemoryBufferWithSTDIN" : ["LLVMBool function(LLVMMemoryBufferRef* OutMemBuf, char** OutMessage)"],
1019 	"LLVMCreateMemoryBufferWithMemoryRange" : ["LLVMMemoryBufferRef function(const(char)* InputData, size_t InputDataLength, const(char)* BufferName, LLVMBool RequiresNullTerminator)",
1020 	                                           "+", "3", "3", "0"],
1021 	"LLVMCreateMemoryBufferWithMemoryRangeCopy" : ["LLVMMemoryBufferRef function(const(char)* InputData, size_t InputDataLength, const(char)* BufferName)",
1022 	                                               "+", "3", "3", "0"],
1023 	"LLVMGetBufferStart" : ["const(char)* function(LLVMMemoryBufferRef MemBuf)",
1024 	                        "+", "3", "3", "0"],
1025 	"LLVMGetBufferSize" : ["size_t function(LLVMMemoryBufferRef MemBuf)",
1026 	                       "+", "3", "3", "0"],
1027 	"LLVMDisposeMemoryBuffer" : ["void function(LLVMMemoryBufferRef MemBuf)"],
1028 
1029 	/++ Pass Registry ++/
1030 
1031 	"LLVMGetGlobalPassRegistry" : ["LLVMPassRegistryRef function()"],
1032 
1033 	/++ Pass Managers ++/
1034 
1035 	"LLVMCreatePassManager" : ["LLVMPassManagerRef function()"],
1036 	"LLVMCreateFunctionPassManagerForModule" : ["LLVMPassManagerRef function(LLVMModuleRef M)"],
1037 	"LLVMCreateFunctionPassManager" : ["LLVMPassManagerRef function(LLVMModuleProviderRef MP)"],
1038 	"LLVMRunPassManager" : ["LLVMBool function(LLVMPassManagerRef PM, LLVMModuleRef M)"],
1039 	"LLVMInitializeFunctionPassManager" : ["LLVMBool function(LLVMPassManagerRef FPM)"],
1040 	"LLVMRunFunctionPassManager" : ["LLVMBool function(LLVMPassManagerRef FPM, LLVMValueRef F)"],
1041 	"LLVMFinalizeFunctionPassManager" : ["LLVMBool function(LLVMPassManagerRef FPM)"],
1042 	"LLVMDisposePassManager" : ["void function(LLVMPassManagerRef PM)"],
1043 
1044 	/++ Threading ++/
1045 
1046 	"LLVMStartMultithreaded" : ["LLVMBool function()",
1047 	                            "+", "3", "3", "0", "-", "3", "5", "0"],
1048 	"LLVMStopMultithreaded" : ["void function()",
1049 	                            "+", "3", "3", "0", "-", "3", "5", "0"],
1050 	"LLVMIsMultithreaded" : ["LLVMBool function()",
1051 	                            "+", "3", "3", "0"],
1052 
1053 	/+ Disassembler +/
1054 
1055 	"LLVMCreateDisasm" : ["LLVMDisasmContextRef function(const(char)* TripleName, void* DisInfo, int TagType, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp)"],
1056 	"LLVMCreateDisasmCPU" : ["LLVMDisasmContextRef function(const(char)* Triple, const(char)* CPU, void* DisInfo, int TagType, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp)",
1057 	                         "+", "3", "3", "0"],
1058 	"LLVMCreateDisasmCPUFeatures" : ["LLVMDisasmContextRef function(const char *Triple, const char *CPU, const char *Features, void *DisInfo, int TagType, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp)",
1059 									"+", "3", "6", "0"],
1060 	"LLVMSetDisasmOptions" : ["int function(LLVMDisasmContextRef DC, ulong Options)",
1061 	                          "+", "3", "2", "0"],
1062 	"LLVMDisasmDispose" : ["void function(LLVMDisasmContextRef DC)"],
1063 	"LLVMDisasmInstruction" : ["size_t function(LLVMDisasmContextRef DC, ubyte* Bytes, ulong BytesSize, ulong PC, char* OutString, size_t OutStringSize)"],
1064 
1065 	/+ Enhanced Disassembly +/
1066 
1067 	"EDGetDisassembler" : ["int function(EDDisassemblerRef* disassembler, const(char)* triple, EDAssemblySyntax_t syntax)",
1068 	                       "-", "3", "3", "0"],
1069 	"EDGetRegisterName" : ["int function(const(char)** regName, EDDisassemblerRef disassembler, uint regID)",
1070 	                       "-", "3", "3", "0"],
1071 	"EDRegisterIsStackPointer" : ["int function(EDDisassemblerRef disassembler, uint regID)",
1072 	                              "-", "3", "3", "0"],
1073 	"EDRegisterIsProgramCounter" : ["int function(EDDisassemblerRef disassembler, uint regID)",
1074 	                                "-", "3", "3", "0"],
1075 	"EDCreateInsts" : ["uint function(EDInstRef* insts, uint count, EDDisassemblerRef disassembler, EDByteReaderCallback byteReader, ulong address, void* arg)",
1076 	                   "-", "3", "3", "0"],
1077 	"EDReleaseInst" : ["void function(EDInstRef inst)",
1078 	                   "-", "3", "3", "0"],
1079 	"EDInstByteSize" : ["int function(EDInstRef inst)",
1080 	                    "-", "3", "3", "0"],
1081 	"EDGetInstString" : ["int function(const(char)** buf, EDInstRef inst)",
1082 	                     "-", "3", "3", "0"],
1083 	"EDInstID" : ["int function(uint* instID, EDInstRef inst)",
1084 	              "-", "3", "3", "0"],
1085 	"EDInstIsBranch" : ["int function(EDInstRef inst)",
1086 	                    "-", "3", "3", "0"],
1087 	"EDInstIsMove" : ["int function(EDInstRef inst)",
1088 	                  "-", "3", "3", "0"],
1089 	"EDBranchTargetID" : ["int function(EDInstRef inst)",
1090 	                      "-", "3", "3", "0"],
1091 	"EDMoveSourceID" : ["int function(EDInstRef inst)",
1092 	                    "-", "3", "3", "0"],
1093 	"EDMoveTargetID" : ["int function(EDInstRef inst)",
1094 	                    "-", "3", "3", "0"],
1095 	"EDNumTokens" : ["int function(EDInstRef inst)",
1096 	                 "-", "3", "3", "0"],
1097 	"EDGetToken" : ["int function(EDTokenRef* token, EDInstRef inst, int index)",
1098 	                "-", "3", "3", "0"],
1099 	"EDGetTokenString" : ["int function(const(char)** buf, EDTokenRef token)",
1100 	                      "-", "3", "3", "0"],
1101 	"EDOperandIndexForToken" : ["int function(EDTokenRef token)",
1102 	                            "-", "3", "3", "0"],
1103 	"EDTokenIsWhitespace" : ["int function(EDTokenRef token)",
1104 	                         "-", "3", "3", "0"],
1105 	"EDTokenIsPunctuation" : ["int function(EDTokenRef token)",
1106 	                          "-", "3", "3", "0"],
1107 	"EDTokenIsOpcode" : ["int function(EDTokenRef token)",
1108 	                     "-", "3", "3", "0"],
1109 	"EDTokenIsLiteral" : ["int function(EDTokenRef token)",
1110 	                      "-", "3", "3", "0"],
1111 	"EDTokenIsRegister" : ["int function(EDTokenRef token)",
1112 	                       "-", "3", "3", "0"],
1113 	"EDTokenIsNegativeLiteral" : ["int function(EDTokenRef token)",
1114 	                              "-", "3", "3", "0"],
1115 	"EDLiteralTokenAbsoluteValue" : ["int function(ulong* value, EDTokenRef token)",
1116 	                                 "-", "3", "3", "0"],
1117 	"EDRegisterTokenValue" : ["int function(uint* registerID, EDTokenRef token)",
1118 	                          "-", "3", "3", "0"],
1119 	"EDNumOperands" : ["int function(EDInstRef inst)",
1120 	                   "-", "3", "3", "0"],
1121 	"EDGetOperand" : ["int function(EDOperandRef* operand, EDInstRef inst, int index)",
1122 	                  "-", "3", "3", "0"],
1123 	"EDOperandIsRegister" : ["int function(EDOperandRef operand)",
1124 	                         "-", "3", "3", "0"],
1125 	"EDOperandIsImmediate" : ["int function(EDOperandRef operand)",
1126 	                          "-", "3", "3", "0"],
1127 	"EDOperandIsMemory" : ["int function(EDOperandRef operand)",
1128 	                       "-", "3", "3", "0"],
1129 	"EDRegisterOperandValue" : ["int function(uint* value, EDOperandRef operand)",
1130 	                            "-", "3", "3", "0"],
1131 	"EDImmediateOperandValue" : ["int function(ulong* value, EDOperandRef operand)",
1132 	                             "-", "3", "3", "0"],
1133 	"EDEvaluateOperand" : ["int function(ulong* result, EDOperandRef operand, EDRegisterReaderCallback regReader, void* arg)",
1134 	                       "-", "3", "3", "0"],
1135 	"EDBlockCreateInsts" : ["uint function(EDInstRef* insts, int count, EDDisassemblerRef disassembler, EDByteBlock_t byteBlock, ulong address)",
1136 	                        "-", "3", "3", "0"],
1137 	"EDBlockEvaluateOperand" : ["int function(ulong* result, EDOperandRef operand, EDRegisterBlock_t regBlock)",
1138 	                            "-", "3", "3", "0"],
1139 	"EDBlockVisitTokens" : ["int function(EDInstRef inst, EDTokenVisitor_t visitor)",
1140 	                        "-", "3", "3", "0"],
1141 
1142 	/+ Execution Engine +/
1143 
1144 	"LLVMCreateGenericValueOfInt" : ["LLVMGenericValueRef function(LLVMTypeRef Ty, ulong N, LLVMBool IsSigned)"],
1145 	"LLVMCreateGenericValueOfPointer" : ["LLVMGenericValueRef function(void* P)"],
1146 	"LLVMCreateGenericValueOfFloat" : ["LLVMGenericValueRef function(LLVMTypeRef Ty, double N)"],
1147 	"LLVMGenericValueIntWidth" : ["uint function(LLVMGenericValueRef GenValRef)"],
1148 	"LLVMGenericValueToInt" : ["ulong function(LLVMGenericValueRef GenVal, LLVMBool IsSigned)"],
1149 	"LLVMGenericValueToPointer" : ["void* function(LLVMGenericValueRef GenVal)"],
1150 	"LLVMGenericValueToFloat" : ["double function(LLVMTypeRef TyRef, LLVMGenericValueRef GenVal)"],
1151 	"LLVMDisposeGenericValue" : ["void function(LLVMGenericValueRef GenVal)"],
1152 	"LLVMCreateExecutionEngineForModule" : ["LLVMBool function(LLVMExecutionEngineRef* OutEE, LLVMModuleRef M, char** OutError)"],
1153 	"LLVMCreateInterpreterForModule" : ["LLVMBool function(LLVMExecutionEngineRef* OutInterp, LLVMModuleRef M, char** OutError)"],
1154 	"LLVMCreateJITCompilerForModule" : ["LLVMBool function(LLVMExecutionEngineRef* OutJIT, LLVMModuleRef M, uint OptLevel, char** OutError)"],
1155 	"LLVMInitializeMCJITCompilerOptions" : ["void function(LLVMMCJITCompilerOptions* Options, size_t SizeOfOptions)",
1156 	                                        "+", "3", "3", "0"],
1157 	"LLVMCreateMCJITCompilerForModule" : ["LLVMBool function(LLVMExecutionEngineRef* OutJIT, LLVMModuleRef M, LLVMMCJITCompilerOptions* Options, size_t SizeOfOptions, char** OutError)",
1158 	                                      "+", "3", "3", "0"],
1159 	"LLVMCreateExecutionEngine" : ["LLVMBool function(LLVMExecutionEngineRef* OutEE, LLVMModuleProviderRef MP, char** OutError)",
1160 	                               "-", "3", "8", "0"],
1161 	"LLVMCreateInterpreter" : ["LLVMBool function(LLVMExecutionEngineRef* OutInterp, LLVMModuleProviderRef MP, char** OutError)",
1162 	                           "-", "3", "8", "0"],
1163 	"LLVMCreateJITCompiler" : ["LLVMBool function(LLVMExecutionEngineRef* OutJIT, LLVMModuleProviderRef MP, uint OptLevel, char** OutError)",
1164 	                           "-", "3", "8", "0"],
1165 	"LLVMDisposeExecutionEngine" : ["void function(LLVMExecutionEngineRef EE)"],
1166 	"LLVMRunStaticConstructors" : ["void function(LLVMExecutionEngineRef EE)"],
1167 	"LLVMRunStaticDestructors" : ["void function(LLVMExecutionEngineRef EE)"],
1168 	"LLVMRunFunctionAsMain" : ["int function(LLVMExecutionEngineRef EE, LLVMValueRef F, uint ArgC, const(char*)* ArgV, const(char*)* EnvP)"],
1169 	"LLVMRunFunction" : ["LLVMGenericValueRef function(LLVMExecutionEngineRef EE, LLVMValueRef F, uint NumArgs, LLVMGenericValueRef* Args)"],
1170 	"LLVMFreeMachineCodeForFunction" : ["void function(LLVMExecutionEngineRef EE, LLVMValueRef F)"],
1171 	"LLVMAddModule" : ["void function(LLVMExecutionEngineRef EE, LLVMModuleRef M)"],
1172 	"LLVMAddModuleProvider" : ["void function(LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP)",
1173 	                           "-", "3", "8", "0"],
1174 	"LLVMRemoveModule" : ["LLVMBool function(LLVMExecutionEngineRef EE, LLVMModuleRef M, LLVMModuleRef* OutMod, char** OutError)"],
1175 	"LLVMRemoveModuleProvider" : ["LLVMBool function(LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP, LLVMModuleRef* OutMod, char** OutError)",
1176 	                              "-", "3", "8", "0"],
1177 	"LLVMFindFunction" : ["LLVMBool function(LLVMExecutionEngineRef EE, const(char)* Name, LLVMValueRef* OutFn)"],
1178 	"LLVMRecompileAndRelinkFunction" : ["void* function(LLVMExecutionEngineRef EE, LLVMValueRef Fn)"],
1179 	"LLVMGetExecutionEngineTargetData" : ["LLVMTargetDataRef function(LLVMExecutionEngineRef EE)"],
1180 	"LLVMGetExecutionEngineTargetMachine" : ["LLVMTargetMachineRef function(LLVMExecutionEngineRef EE)",
1181 											"+", "3", "5", "0"],
1182 	"LLVMAddGlobalMapping" : ["void function(LLVMExecutionEngineRef EE, LLVMValueRef Global, void* Addr)"],
1183 	"LLVMGetPointerToGlobal" : ["void* function(LLVMExecutionEngineRef EE, LLVMValueRef Global)"],
1184 	"LLVMGetGlobalValueAddress" : ["ulong function(LLVMExecutionEngineRef EE, const char *Name)",
1185 								  "+", "3", "6", "0"],
1186 	"LLVMGetFunctionAddress" : ["ulong function(LLVMExecutionEngineRef EE, const char *Name)",
1187 							   "+", "3", "6", "0"],
1188 	"LLVMCreateSimpleMCJITMemoryManager" : ["LLVMMCJITMemoryManagerRef function(void* Opaque, LLVMMemoryManagerAllocateCodeSectionCallback AllocateCodeSection, LLVMMemoryManagerAllocateDataSectionCallback AllocateDataSection, LLVMMemoryManagerFinalizeMemoryCallback FinalizeMemory, LLVMMemoryManagerDestroyCallback Destroy)",
1189 											"+", "3", "4", "0"],
1190 	"LLVMDisposeMCJITMemoryManager" : ["void function(LLVMMCJITMemoryManagerRef MM)",
1191 									   "+", "3", "4", "0"],
1192 
1193 	/+ Initialization Routines +/
1194 
1195 	"LLVMInitializeCore" : ["void function(LLVMPassRegistryRef R)"],
1196 	"LLVMInitializeTransformUtils" : ["void function(LLVMPassRegistryRef R)"],
1197 	"LLVMInitializeScalarOpts" : ["void function(LLVMPassRegistryRef R)"],
1198 	"LLVMInitializeObjCARCOpts" : ["void function(LLVMPassRegistryRef R)",
1199 	                               "+", "3", "3", "0"],
1200 	"LLVMInitializeVectorization" : ["void function(LLVMPassRegistryRef R)"],
1201 	"LLVMInitializeInstCombine" : ["void function(LLVMPassRegistryRef R)"],
1202 	"LLVMInitializeIPO" : ["void function(LLVMPassRegistryRef R)"],
1203 	"LLVMInitializeInstrumentation" : ["void function(LLVMPassRegistryRef R)"],
1204 	"LLVMInitializeAnalysis" : ["void function(LLVMPassRegistryRef R)"],
1205 	"LLVMInitializeIPA" : ["void function(LLVMPassRegistryRef R)"],
1206 	"LLVMInitializeCodeGen" : ["void function(LLVMPassRegistryRef R)"],
1207 	"LLVMInitializeTarget" : ["void function(LLVMPassRegistryRef R)"],
1208 
1209 	/+ Linker +/
1210 
1211 	"LLVMLinkModules" : ["LLVMBool function(LLVMModuleRef Dest, LLVMModuleRef Src, LLVMLinkerMode Mode, char** OutMessage)",
1212 	                     "+", "3", "2", "0"],
1213 
1214 	/+ Link Time Optimization +/
1215 
1216 	"llvm_create_optimizer" : ["llvm_lto_t function()"],
1217 	"llvm_destroy_optimizer" : ["void function(llvm_lto_t lto)"],
1218 	"llvm_read_object_file" : ["llvm_lto_status_t function(llvm_lto_t lto, const(char)* input_filename)"],
1219 	"llvm_optimize_modules" : ["llvm_lto_status_t function(llvm_lto_t lto, const(char)* output_filename)"],
1220 
1221 	/+ LTO +/
1222 
1223 	"lto_get_version" : ["const(char)* function()"],
1224 	"lto_get_error_message" : ["const(char)* function()"],
1225 	"lto_module_is_object_file" : ["bool function(const(char)* path)"],
1226 	"lto_module_is_object_file_for_target" : ["bool function(const(char)* path, const(char)* target_triple_prefix)"],
1227 	"lto_module_is_object_file_in_memory" : ["bool function(const(void)* mem, size_t length)"],
1228 	"lto_module_is_object_file_in_memory_for_target" : ["bool function(const(void)* mem, size_t length, const(char)* target_triple_prefix)"],
1229 	"lto_module_create" : ["lto_module_t function(const(char)* path)"],
1230 	"lto_module_create_from_memory" : ["lto_module_t function(const(void)* mem, size_t length)"],
1231 	"lto_module_create_from_memory_with_path" : ["lto_module_t function(const void* mem, size_t length, const char *path)",
1232 												"+", "3", "5", "0"],
1233 
1234 	"lto_module_create_in_local_context" : ["lto_module_t function(const void *mem, size_t length, const char *path)",
1235 										   "+", "3", "6", "0"],
1236 	"lto_module_create_in_codegen_context" : ["lto_module_t function(const void *mem, size_t length, const char *path, lto_code_gen_t cg)",
1237 											 "+", "3", "6", "0"],
1238 	"lto_module_create_from_fd" : ["lto_module_t function(int fd, const(char)* path, size_t file_size)"],
1239 	/+ "offset" is originally of type "off_t", which is 64 bit on 64 bit machines,
1240 	 + but can be 32 bit or 64 bit on 32 bit machines depending on compilation.
1241 	 + Since there is no way to be sure how LLVM was compiled, the type "size_t"
1242 	 + is used instead as a compromise, which is 64 bit on 64 bit machines and
1243 	 + 32 bit on 32 bit machines. On 32 bit machines you will thus lose the extra
1244 	 + 32 bit if LLVM was compiled with off_t as 64 bit, but it seems to be
1245 	 + a reasonable tradeoff for the sake of compatibility at this time. +/
1246 	"lto_module_create_from_fd_at_offset" : ["lto_module_t function(int fd, const(char)* path, size_t file_size, size_t map_size, size_t offset)"],
1247 	"lto_module_dispose" : ["void function(lto_module_t mod)"],
1248 	"lto_module_get_target_triple" : ["const(char)* function(lto_module_t mod)"],
1249 	"lto_module_set_target_triple" : ["void function(lto_module_t mod, const(char)* triple)"],
1250 	"lto_module_get_num_symbols" : ["uint function(lto_module_t mod)"],
1251 	"lto_module_get_symbol_name" : ["const(char)* function(lto_module_t mod, uint index)"],
1252 	"lto_module_get_symbol_attribute" : ["lto_symbol_attributes function(lto_module_t mod, uint index)"],
1253 	"lto_module_get_num_deplibs" : ["uint function(lto_module_t mod)",
1254 								   "+", "3", "5", "0", "-", "3", "7", "0"],
1255 	"lto_module_get_deplib" : ["const(char)* function(lto_module_t mod, uint index)",
1256 							  "+", "3", "5", "0", "-", "3", "7", "0"],
1257 	"lto_module_get_num_linkeropts" : ["uint function(lto_module_t mod)",
1258 									  "+", "3", "5", "0", "-", "3", "7", "0"],
1259 	"lto_module_get_linkeropt" : ["const(char)* function(lto_module_t mod, uint index)",
1260 								  "+", "3", "5", "0", "-", "3", "7", "0"],
1261 	"lto_module_get_linkeropts" : ["const(char)* function(lto_module_t mod)",
1262 								   "+", "3", "7", "0"],
1263 	"lto_codegen_set_diagnostic_handler" : ["void function(lto_code_gen_t, lto_diagnostic_handler_t, void *)",
1264 											"+", "3", "5", "0"],
1265 	"lto_codegen_create" : ["lto_code_gen_t function()"],
1266 	"lto_codegen_create_in_local_context" : ["lto_code_gen_t function()",
1267 											"+", "3", "6", "0"],
1268 	"lto_codegen_dispose" : ["void function(lto_code_gen_t)"],
1269 	"lto_codegen_add_module" : ["bool function(lto_code_gen_t cg, lto_module_t mod)"],
1270 	"lto_codegen_add_module" : ["void function(lto_code_gen_t cg, lto_module_t mod)",
1271 								"+", "3", "7", "0"],
1272 	"lto_codegen_set_debug_model" : ["bool function(lto_code_gen_t cg, lto_debug_model)"],
1273 	"lto_codegen_set_pic_model" : ["bool function(lto_code_gen_t cg, lto_codegen_model)"],
1274 	"lto_codegen_set_cpu" : ["void function(lto_code_gen_t cg, const(char)* cpu)"],
1275 	"lto_codegen_set_assembler_path" : ["void function(lto_code_gen_t cg, const(char)* path)"],
1276 	"lto_codegen_set_assembler_args" : ["void function(lto_code_gen_t cg, const(char)** args, int nargs)"],
1277 	"lto_codegen_add_must_preserve_symbol" : ["void function(lto_code_gen_t cg, const(char)* symbol)"],
1278 	"lto_codegen_write_merged_modules" : ["bool function(lto_code_gen_t cg, const(char)* path)"],
1279 	"lto_codegen_compile" : ["const(void)* function(lto_code_gen_t cg, size_t* length)"],
1280 	"lto_codegen_compile_to_file" : ["bool function(lto_code_gen_t cg, const(char)** name)"],
1281 	"lto_codegen_optimize" : ["bool function(lto_code_gen_t cg)",
1282 							  "+", "3", "7", "0"],
1283 	"lto_codegen_compile_optimized" : ["const(void)* function(lto_code_gen_t cg, size_t* length)",
1284 									   "+", "3", "7", "0"],
1285 	"lto_api_version" : ["uint function()",
1286 						 "+", "3", "7", "0"],
1287 	"lto_codegen_debug_options" : ["void function(lto_code_gen_t cg, const(char)* )"],
1288 	"lto_initialize_disassembler" : ["void function()",
1289 	                                 "+", "3", "3", "0"],
1290 	"lto_codegen_set_should_internalize" : ["void function(lto_code_gen_t cg, bool ShouldInternalize)",
1291 											"+", "3", "7", "0"],
1292 	"lto_codegen_set_should_embed_uselists" : ["void function(lto_code_gen_t cg, bool ShouldEmbedUselists)",
1293 											   "+", "3", "7", "0"],
1294 
1295 	/+ Object file reading and writing +/
1296 
1297 	"LLVMCreateObjectFile" : ["LLVMObjectFileRef function(LLVMMemoryBufferRef MemBuf)"],
1298 	"LLVMDisposeObjectFile" : ["void function(LLVMObjectFileRef ObjectFile)"],
1299 	"LLVMGetSections" : ["LLVMSectionIteratorRef function(LLVMObjectFileRef ObjectFile)"],
1300 	"LLVMDisposeSectionIterator" : ["void function(LLVMSectionIteratorRef SI)"],
1301 	"LLVMIsSectionIteratorAtEnd" : ["LLVMBool function(LLVMObjectFileRef ObjectFile, LLVMSectionIteratorRef SI)"],
1302 	"LLVMMoveToNextSection" : ["void function(LLVMSectionIteratorRef SI)"],
1303 	"LLVMMoveToContainingSection" : ["void function(LLVMSectionIteratorRef Sect, LLVMSymbolIteratorRef Sym)"],
1304 	"LLVMGetSymbols" : ["LLVMSymbolIteratorRef function(LLVMObjectFileRef ObjectFile)"],
1305 	"LLVMDisposeSymbolIterator" : ["void function(LLVMSymbolIteratorRef SI)"],
1306 	"LLVMIsSymbolIteratorAtEnd" : ["LLVMBool function(LLVMObjectFileRef ObjectFile, LLVMSymbolIteratorRef SI)"],
1307 	"LLVMMoveToNextSymbol" : ["void function(LLVMSymbolIteratorRef SI)"],
1308 	"LLVMGetSectionName" : ["const(char)* function(LLVMSectionIteratorRef SI)"],
1309 	"LLVMGetSectionSize" : ["ulong function(LLVMSectionIteratorRef SI)"],
1310 	"LLVMGetSectionContents" : ["const(char)* function(LLVMSectionIteratorRef SI)"],
1311 	"LLVMGetSectionAddress" : ["ulong function(LLVMSectionIteratorRef SI)"],
1312 	"LLVMGetSectionContainsSymbol" : ["LLVMBool function(LLVMSectionIteratorRef SI, LLVMSymbolIteratorRef Sym)"],
1313 	"LLVMGetRelocations" : ["LLVMRelocationIteratorRef function(LLVMSectionIteratorRef Section)"],
1314 	"LLVMDisposeRelocationIterator" : ["void function(LLVMRelocationIteratorRef RI)"],
1315 	"LLVMIsRelocationIteratorAtEnd" : ["LLVMBool function(LLVMSectionIteratorRef Section, LLVMRelocationIteratorRef RI)"],
1316 	"LLVMMoveToNextRelocation" : ["void function(LLVMRelocationIteratorRef RI)"],
1317 	"LLVMGetSymbolName" : ["const(char)* function(LLVMSymbolIteratorRef SI)"],
1318 	"LLVMGetSymbolAddress" : ["ulong function(LLVMSymbolIteratorRef SI)"],
1319 	"LLVMGetSymbolFileOffset" : ["ulong function(LLVMSymbolIteratorRef SI)",
1320 								 "-", "3", "5", "0"],
1321 	"LLVMGetSymbolSize" : ["ulong function(LLVMSymbolIteratorRef SI)"],
1322 	"LLVMGetRelocationAddress" : ["ulong function(LLVMRelocationIteratorRef RI)",
1323 								  "-", "3", "7", "0"],
1324 	"LLVMGetRelocationOffset" : ["ulong function(LLVMRelocationIteratorRef RI)"],
1325 	"LLVMGetRelocationSymbol" : ["LLVMSymbolIteratorRef function(LLVMRelocationIteratorRef RI)"],
1326 	"LLVMGetRelocationType" : ["ulong function(LLVMRelocationIteratorRef RI)"],
1327 	"LLVMGetRelocationTypeName" : ["const(char)* function(LLVMRelocationIteratorRef RI)"],
1328 	"LLVMGetRelocationValueString" : ["const(char)* function(LLVMRelocationIteratorRef RI)"],
1329 
1330 	/+ Target information +/
1331 
1332 	/+
1333 	 + These are all inline functions, meaning their bodies are
1334 	 + defined in the C headers, so currently they do not get exported
1335 	 + and are not loadable from LLVM's dynamic library.
1336 	 + The functions they themselves call, however, are, even though
1337 	 + they are not in the official llvm-c documentation - because
1338 	 + they are split across LLVMs target libraries.
1339 	 + That is why these functions are loaded instead and then used
1340 	 + further down in appropriate reimplementations of these
1341 	 + inline functions.
1342 	 + The list of targets is:
1343 	 + AArch64
1344 	 + ARM
1345 	 + CppBackend
1346 	 + Hexagon
1347 	 + MBlaze
1348 	 + MSP430
1349 	 + Mips
1350 	 + NVPTX
1351 	 + PowerPC
1352 	 + Sparc
1353 	 + X86
1354 	 + XCore
1355 	 +
1356 	 +
1357 	 "LLVMInitializeAllTargetInfos" : ["static void function()"],
1358 	 "LLVMInitializeAllTargets" : ["static void function()"],
1359 	 "LLVMInitializeAllTargetMCs" : ["static void function()"],
1360 	 "LLVMInitializeAllAsmPrinters" : ["static void function()"],
1361 	 "LLVMInitializeAllAsmParsers" : ["static void function()"],
1362 	 "LLVMInitializeAllDisassemblers" : ["static void function()"],
1363 	 "LLVMInitializeNativeTarget" : ["static LLVMBool function()"],
1364 	 Added in LLVM 3.4:
1365 	 "LLVMInitializeNativeAsmParser" : ["static LLVMBool function()"],
1366 	 "LLVMInitializeNativeAsmPrinter" : ["static LLVMBool function()"],
1367 	 "LLVMInitializeNativeDisassembler" : ["static LLVMBool function()"], +/
1368 	"LLVMInitializeAArch64TargetInfo" : ["void function()"],
1369 	"LLVMInitializeAArch64Target" : ["void function()"],
1370 	"LLVMInitializeAArch64TargetMC" : ["void function()"],
1371 	"LLVMInitializeAArch64AsmPrinter" : ["void function()"],
1372 	"LLVMInitializeAArch64AsmParser" : ["void function()"],
1373 	"LLVMInitializeAArch64Disassembler" : ["void function()"],
1374 
1375 	"LLVMInitializeARMTargetInfo" : ["void function()"],
1376 	"LLVMInitializeARMTarget" : ["void function()"],
1377 	"LLVMInitializeARMTargetMC" : ["void function()"],
1378 	"LLVMInitializeARMAsmPrinter" : ["void function()"],
1379 	"LLVMInitializeARMAsmParser" : ["void function()"],
1380 	"LLVMInitializeARMDisassembler" : ["void function()"],
1381 
1382 	"LLVMInitializeCellSPUTargetInfo" : ["void function()"],
1383 	"LLVMInitializeCellSPUTarget" : ["void function()"],
1384 	"LLVMInitializeCellSPUTargetMC" : ["void function()"],
1385 
1386 	"LLVMInitializeCppBackendTargetInfo" : ["void function()"],
1387 	"LLVMInitializeCppBackendTarget" : ["void function()"],
1388 	"LLVMInitializeCppBackendTargetMC" : ["void function()"],
1389 
1390 	"LLVMInitializeHexagonTargetInfo" : ["void function()"],
1391 	"LLVMInitializeHexagonTarget" : ["void function()"],
1392 	"LLVMInitializeHexagonTargetMC" : ["void function()"],
1393 	"LLVMInitializeHexagonAsmPrinter" : ["void function()"],
1394 
1395 	"LLVMInitializeMBlazeTargetInfo" : ["void function()"],
1396 	"LLVMInitializeMBlazeTarget" : ["void function()"],
1397 	"LLVMInitializeMBlazeTargetMC" : ["void function()"],
1398 	"LLVMInitializeMBlazeAsmPrinter" : ["void function()"],
1399 	"LLVMInitializeMBlazeAsmParser" : ["void function()"],
1400 	"LLVMInitializeMBlazeDisassembler" : ["void function()"],
1401 
1402 	"LLVMInitializeMSP430TargetInfo" : ["void function()"],
1403 	"LLVMInitializeMSP430Target" : ["void function()"],
1404 	"LLVMInitializeMSP430TargetMC" : ["void function()"],
1405 	"LLVMInitializeMSP430AsmPrinter" : ["void function()"],
1406 
1407 	"LLVMInitializeMipsTargetInfo" : ["void function()"],
1408 	"LLVMInitializeMipsTarget" : ["void function()"],
1409 	"LLVMInitializeMipsTargetMC" : ["void function()"],
1410 	"LLVMInitializeMipsAsmPrinter" : ["void function()"],
1411 	"LLVMInitializeMipsAsmParser" : ["void function()"],
1412 	"LLVMInitializeMipsDisassembler" : ["void function()"],
1413 
1414 	"LLVMInitializeNVPTXTargetInfo" : ["void function()"],
1415 	"LLVMInitializeNVPTXTarget" : ["void function()"],
1416 	"LLVMInitializeNVPTXTargetMC" : ["void function()"],
1417 	"LLVMInitializeNVPTXAsmPrinter" : ["void function()"],
1418 
1419 	"LLVMInitializePTXTargetInfo" : ["void function()"],
1420 	"LLVMInitializePTXTarget" : ["void function()"],
1421 	"LLVMInitializePTXTargetMC" : ["void function()"],
1422 	"LLVMInitializePTXAsmPrinter" : ["void function()"],
1423 
1424 	"LLVMInitializePowerPCTargetInfo" : ["void function()"],
1425 	"LLVMInitializePowerPCTarget" : ["void function()"],
1426 	"LLVMInitializePowerPCTargetMC" : ["void function()"],
1427 	"LLVMInitializePowerPCAsmPrinter" : ["void function()"],
1428 
1429 	"LLVMInitializeSparcTargetInfo" : ["void function()"],
1430 	"LLVMInitializeSparcTarget" : ["void function()"],
1431 	"LLVMInitializeSparcTargetMC" : ["void function()"],
1432 	"LLVMInitializeSparcAsmPrinter" : ["void function()"],
1433 
1434 	"LLVMInitializeX86TargetInfo" : ["void function()"],
1435 	"LLVMInitializeX86Target" : ["void function()"],
1436 	"LLVMInitializeX86TargetMC" : ["void function()"],
1437 	"LLVMInitializeX86AsmPrinter" : ["void function()"],
1438 	"LLVMInitializeX86AsmParser" : ["void function()"],
1439 	"LLVMInitializeX86Disassembler" : ["void function()"],
1440 
1441 	"LLVMInitializeXCoreTargetInfo" : ["void function()"],
1442 	"LLVMInitializeXCoreTarget" : ["void function()"],
1443 	"LLVMInitializeXCoreTargetMC" : ["void function()"],
1444 	"LLVMInitializeXCoreAsmPrinter" : ["void function()"],
1445 	"LLVMInitializeXCoreDisassembler" : ["void function()"],
1446 
1447 	"LLVMCreateTargetData" : ["LLVMTargetDataRef function(const(char)* StringRep)"],
1448 	"LLVMAddTargetData" : ["void function(LLVMTargetDataRef TD, LLVMPassManagerRef PM)"],
1449 	"LLVMAddTargetLibraryInfo" : ["void function(LLVMTargetLibraryInfoRef TLI, LLVMPassManagerRef PM)"],
1450 	"LLVMCopyStringRepOfTargetData" : ["char* function(LLVMTargetDataRef TD)"],
1451 	"LLVMByteOrder" : ["enum LLVMByteOrdering function(LLVMTargetDataRef TD)"],
1452 	"LLVMPointerSize" : ["uint function(LLVMTargetDataRef TD)"],
1453 	"LLVMPointerSizeForAS" : ["uint function(LLVMTargetDataRef TD, uint AS)",
1454 	                          "+", "3", "2", "0"],
1455 	"LLVMIntPtrType" : ["LLVMTypeRef function(LLVMTargetDataRef TD)"],
1456 	"LLVMIntPtrTypeForAS" : ["LLVMTypeRef function(LLVMTargetDataRef TD, uint AS)",
1457 	                         "+", "3", "2", "0"],
1458 	"LLVMIntPtrTypeInContext" : ["LLVMTypeRef function(LLVMContextRef C, LLVMTargetDataRef TD)",
1459 								 "+", "3", "4", "0"],
1460 	"LLVMIntPtrTypeForASInContext" : ["LLVMTypeRef function(LLVMContextRef C, LLVMTargetDataRef TD, uint AS)",
1461 									  "+", "3", "4", "0"],
1462 	"LLVMSizeOfTypeInBits" : ["ulong function(LLVMTargetDataRef TD, LLVMTypeRef Ty)"],
1463 	"LLVMStoreSizeOfType" : ["ulong function(LLVMTargetDataRef TD, LLVMTypeRef Ty)"],
1464 	"LLVMABISizeOfType" : ["ulong function(LLVMTargetDataRef TD, LLVMTypeRef Ty)"],
1465 	"LLVMABIAlignmentOfType" : ["uint function(LLVMTargetDataRef TD, LLVMTypeRef Ty)"],
1466 	"LLVMCallFrameAlignmentOfType" : ["uint function(LLVMTargetDataRef TD, LLVMTypeRef Ty)"],
1467 	"LLVMPreferredAlignmentOfType" : ["uint function(LLVMTargetDataRef TD, LLVMTypeRef Ty)"],
1468 	"LLVMPreferredAlignmentOfGlobal" : ["uint function(LLVMTargetDataRef TD, LLVMValueRef GlobalVar)"],
1469 	"LLVMElementAtOffset" : ["uint function(LLVMTargetDataRef TD, LLVMTypeRef StructTy, ulong Offset)"],
1470 	"LLVMOffsetOfElement" : ["ulong function(LLVMTargetDataRef TD, LLVMTypeRef StructTy, uint Element)"],
1471 	"LLVMDisposeTargetData" : ["void function(LLVMTargetDataRef TD)"],
1472 
1473 	/+ Target machine +/
1474 
1475 	"LLVMGetFirstTarget" : ["LLVMTargetRef function()"],
1476 	"LLVMGetNextTarget" :  ["LLVMTargetRef function(LLVMTargetRef T)"],
1477 	"LLVMGetTargetFromName" : ["LLVMTargetRef function(const(char)* Name)",
1478 							   "+", "3", "4", "0"],
1479 	"LLVMGetTargetFromTriple" : ["LLVMBool function(const(char)* Triple, LLVMTargetRef* T, char** ErrorMessage)",
1480 								 "+", "3", "4", "0"],
1481 	"LLVMGetTargetName" : ["const(char)* function(LLVMTargetRef T)"],
1482 	"LLVMGetTargetDescription" : ["const(char)* function(LLVMTargetRef T)"],
1483 	"LLVMTargetHasJIT" : ["LLVMBool function(LLVMTargetRef T)"],
1484 	"LLVMTargetHasTargetMachine" : ["LLVMBool function(LLVMTargetRef T)"],
1485 	"LLVMTargetHasAsmBackend" : ["LLVMBool function(LLVMTargetRef T)"],
1486 	"LLVMCreateTargetMachine" : ["LLVMTargetMachineRef function(LLVMTargetRef T, const(char)* Triple,  const(char)* CPU, const(char)* Features, LLVMCodeGenOptLevel Level, LLVMRelocMode Reloc, LLVMCodeModel CodeModel)"],
1487 	"LLVMDisposeTargetMachine" : ["void function(LLVMTargetMachineRef T)"],
1488 	"LLVMGetTargetMachineTarget" : ["LLVMTargetRef function(LLVMTargetMachineRef T)"],
1489 	"LLVMGetTargetMachineTriple" : ["char* function(LLVMTargetMachineRef T)"],
1490 	"LLVMGetTargetMachineCPU" : ["char* function(LLVMTargetMachineRef T)"],
1491 	"LLVMGetTargetMachineFeatureString" : ["char* function(LLVMTargetMachineRef T)"],
1492 	"LLVMGetTargetMachineData" : ["LLVMTargetDataRef function(LLVMTargetMachineRef T)",
1493 								  "-", "3", "7", "0"],
1494 	"LLVMSetTargetMachineAsmVerbosity" : ["void function(LLVMTargetMachineRef T, LLVMBool VerboseAsm)",
1495 										  "+", "3", "4", "0"],
1496 	"LLVMTargetMachineEmitToFile" : ["LLVMBool function(LLVMTargetMachineRef T, LLVMModuleRef M,  char* Filename, LLVMCodeGenFileType codegen, char** ErrorMessage)"],
1497 	"LLVMTargetMachineEmitToMemoryBuffer" : ["LLVMBool function(LLVMTargetMachineRef T, LLVMModuleRef M, LLVMCodeGenFileType codegen, char** ErrorMessage, LLVMMemoryBufferRef* OutMemBuf)",
1498 											 "+", "3", "3", "0"],
1499 	"LLVMGetDefaultTargetTriple" : ["char* function()",
1500 									"+", "3", "4", "0"],
1501 	"LLVMAddAnalysisPasses" : ["void function(LLVMTargetMachineRef T, LLVMPassManagerRef PM)",
1502 							  "+", "3", "5", "0"],
1503 
1504 	/+ Support +/
1505 	"LLVMLoadLibraryPermanently" : ["LLVMBool function(const(char)* Filename)",
1506 									"+", "3", "4", "0"],
1507 	"LLVMParseCommandLineOptions" : ["void function(int argc, const(char*)* argv, const(char)* Overview)",
1508 									"+", "3", "6", "0"],
1509 	"LLVMSearchForAddressOfSymbol" : ["void* function(const char *symbolName)",
1510 									  "+", "3", "7", "0"],
1511 	"LLVMAddSymbol" : ["void function(const char *symbolName, void *symbolValue)",
1512 					   "+", "3", "7", "0"],
1513 
1514 	/+ IRReader +/
1515 	"LLVMParseIRInContext" : ["LLVMBool function(LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutM, char** OutMessage)",
1516 							  "+", "3", "4", "0"],
1517 
1518 	/+ JIT compilation of LLVM IR +/
1519 	"LLVMOrcCreateInstance" : ["LLVMOrcJITStackRef function(LLVMTargetMachineRef TM)",
1520 	                           "+", "3", "8", "0"],
1521 	"LLVMOrcGetMangledSymbol" : ["void function(LLVMOrcJITStackRef JITStack, char** MangledSymbol, const(char)* Symbol)",
1522 	                             "+", "3", "8", "0"],
1523 	"LLVMOrcDisposeMangledSymbol" : ["void function(char* MangledSymbol)",
1524 	                                 "+", "3", "8", "0"],
1525 	"LLVMOrcCreateLazyCompileCallback" : ["LLVMOrcTargetAddress function(LLVMOrcJITStackRef JITStack, LLVMOrcLazyCompileCallbackFn Callback, void* CallbackCtx)",
1526 	                                      "+", "3", "8", "0"],
1527 	"LLVMOrcCreateIndirectStub" : ["void function(LLVMOrcJITStackRef JITStack, const(char)* StubName, LLVMOrcTargetAddress InitAddr)",
1528 	                               "+", "3", "8", "0"],
1529 	"LLVMOrcSetIndirectStubPointer" : ["void function(LLVMOrcJITStackRef JITStack, const(char)* StubName, LLVMOrcTargetAddress NewAddr)",
1530 	                                   "+", "3", "8", "0"],
1531 	"LLVMOrcAddEagerlyCompiledIR" : ["LLVMOrcModuleHandle function(LLVMOrcJITStackRef JITStack, LLVMModuleRef Mod, LLVMOrcSymbolResolverFn SymbolResolver, void* SymbolResolverCtx)",
1532 	                                 "+", "3", "8", "0"],
1533 	"LLVMOrcAddLazilyCompiledIR" : ["LLVMOrcModuleHandle function(LLVMOrcJITStackRef JITStack, LLVMModuleRef Mod, LLVMOrcSymbolResolverFn SymbolResolver, void* SymbolResolverCtx)",
1534 	                                "+", "3", "8", "0"],
1535 	"LLVMOrcAddObjectFile" : ["LLVMOrcModuleHandle function(LLVMOrcJITStackRef JITStack, LLVMObjectFileRef Obj, LLVMOrcSymbolResolverFn SymbolResolver, void* SymbolResolverCtx)",
1536 	                          "+", "3", "8", "0"],
1537 	"LLVMOrcRemoveModule" : ["void function(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle H)",
1538 	                         "+", "3", "8", "0"],
1539 	"LLVMOrcGetSymbolAddress" : ["LLVMOrcTargetAddress function(LLVMOrcJITStackRef JITStack, const(char)* SymbolName)",
1540 	                             "+", "3", "8", "0"],
1541 	"LLVMOrcDisposeInstance" : ["void function(LLVMOrcJITStackRef JITStack)",
1542 	                            "+", "3", "8", "0"],
1543 	];