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