]> git.saurik.com Git - apple/javascriptcore.git/blob - llvm/LLVMAPIFunctions.h
JavaScriptCore-7600.1.4.15.12.tar.gz
[apple/javascriptcore.git] / llvm / LLVMAPIFunctions.h
1 /*
2 * Copyright (C) 2013 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26 #ifndef LLVMAPIFunctions_h
27 #define LLVMAPIFunctions_h
28
29 #include "LLVMHeaders.h"
30
31 #define FOR_EACH_LLVM_API_FUNCTION(macro) \
32 macro(void, InitializeCore, (LLVMPassRegistryRef R)) \
33 macro(void, Shutdown, ()) \
34 macro(char *, CreateMessage, (const char *Message)) \
35 macro(void, DisposeMessage, (char *Message)) \
36 macro(void, InstallFatalErrorHandler, (LLVMFatalErrorHandler Handler)) \
37 macro(LLVMContextRef, ContextCreate, (void)) \
38 macro(LLVMContextRef, GetGlobalContext, (void)) \
39 macro(void, ContextDispose, (LLVMContextRef C)) \
40 macro(unsigned, GetMDKindIDInContext, (LLVMContextRef C, const char* Name, unsigned SLen)) \
41 macro(unsigned, GetMDKindID, (const char* Name, unsigned SLen)) \
42 macro(LLVMModuleRef, ModuleCreateWithName, (const char *ModuleID)) \
43 macro(LLVMModuleRef, ModuleCreateWithNameInContext, (const char *ModuleID, LLVMContextRef C)) \
44 macro(void, DisposeModule, (LLVMModuleRef M)) \
45 macro(const char *, GetDataLayout, (LLVMModuleRef M)) \
46 macro(void, SetDataLayout, (LLVMModuleRef M, const char *Triple)) \
47 macro(const char *, GetTarget, (LLVMModuleRef M)) \
48 macro(void, SetTarget, (LLVMModuleRef M, const char *Triple)) \
49 macro(void, DumpModule, (LLVMModuleRef M)) \
50 macro(LLVMBool, PrintModuleToFile, (LLVMModuleRef M, const char *Filename, char **ErrorMessage)) \
51 macro(void, SetModuleInlineAsm, (LLVMModuleRef M, const char *Asm)) \
52 macro(LLVMContextRef, GetModuleContext, (LLVMModuleRef M)) \
53 macro(LLVMTypeRef, GetTypeByName, (LLVMModuleRef M, const char *Name)) \
54 macro(unsigned, GetNamedMetadataNumOperands, (LLVMModuleRef M, const char* name)) \
55 macro(void, GetNamedMetadataOperands, (LLVMModuleRef M, const char* name, LLVMValueRef *Dest)) \
56 macro(void, AddNamedMetadataOperand, (LLVMModuleRef M, const char* name, LLVMValueRef Val)) \
57 macro(LLVMValueRef, AddFunction, (LLVMModuleRef M, const char *Name, LLVMTypeRef FunctionTy)) \
58 macro(LLVMValueRef, GetNamedFunction, (LLVMModuleRef M, const char *Name)) \
59 macro(LLVMValueRef, GetFirstFunction, (LLVMModuleRef M)) \
60 macro(LLVMValueRef, GetLastFunction, (LLVMModuleRef M)) \
61 macro(LLVMValueRef, GetNextFunction, (LLVMValueRef Fn)) \
62 macro(LLVMValueRef, GetPreviousFunction, (LLVMValueRef Fn)) \
63 macro(LLVMTypeKind, GetTypeKind, (LLVMTypeRef Ty)) \
64 macro(LLVMBool, TypeIsSized, (LLVMTypeRef Ty)) \
65 macro(LLVMContextRef, GetTypeContext, (LLVMTypeRef Ty)) \
66 macro(LLVMTypeRef, Int1TypeInContext, (LLVMContextRef C)) \
67 macro(LLVMTypeRef, Int8TypeInContext, (LLVMContextRef C)) \
68 macro(LLVMTypeRef, Int16TypeInContext, (LLVMContextRef C)) \
69 macro(LLVMTypeRef, Int32TypeInContext, (LLVMContextRef C)) \
70 macro(LLVMTypeRef, Int64TypeInContext, (LLVMContextRef C)) \
71 macro(LLVMTypeRef, IntTypeInContext, (LLVMContextRef C, unsigned NumBits)) \
72 macro(LLVMTypeRef, Int1Type, (void)) \
73 macro(LLVMTypeRef, Int8Type, (void)) \
74 macro(LLVMTypeRef, Int16Type, (void)) \
75 macro(LLVMTypeRef, Int32Type, (void)) \
76 macro(LLVMTypeRef, Int64Type, (void)) \
77 macro(LLVMTypeRef, IntType, (unsigned NumBits)) \
78 macro(unsigned, GetIntTypeWidth, (LLVMTypeRef IntegerTy)) \
79 macro(LLVMTypeRef, HalfTypeInContext, (LLVMContextRef C)) \
80 macro(LLVMTypeRef, FloatTypeInContext, (LLVMContextRef C)) \
81 macro(LLVMTypeRef, DoubleTypeInContext, (LLVMContextRef C)) \
82 macro(LLVMTypeRef, X86FP80TypeInContext, (LLVMContextRef C)) \
83 macro(LLVMTypeRef, FP128TypeInContext, (LLVMContextRef C)) \
84 macro(LLVMTypeRef, PPCFP128TypeInContext, (LLVMContextRef C)) \
85 macro(LLVMTypeRef, HalfType, (void)) \
86 macro(LLVMTypeRef, FloatType, (void)) \
87 macro(LLVMTypeRef, DoubleType, (void)) \
88 macro(LLVMTypeRef, X86FP80Type, (void)) \
89 macro(LLVMTypeRef, FP128Type, (void)) \
90 macro(LLVMTypeRef, PPCFP128Type, (void)) \
91 macro(LLVMTypeRef, FunctionType, (LLVMTypeRef ReturnType, LLVMTypeRef *ParamTypes, unsigned ParamCount, LLVMBool IsVarArg)) \
92 macro(LLVMBool, IsFunctionVarArg, (LLVMTypeRef FunctionTy)) \
93 macro(LLVMTypeRef, GetReturnType, (LLVMTypeRef FunctionTy)) \
94 macro(unsigned, CountParamTypes, (LLVMTypeRef FunctionTy)) \
95 macro(void, GetParamTypes, (LLVMTypeRef FunctionTy, LLVMTypeRef *Dest)) \
96 macro(LLVMTypeRef, StructTypeInContext, (LLVMContextRef C, LLVMTypeRef *ElementTypes, unsigned ElementCount, LLVMBool Packed)) \
97 macro(LLVMTypeRef, StructType, (LLVMTypeRef *ElementTypes, unsigned ElementCount, LLVMBool Packed)) \
98 macro(LLVMTypeRef, StructCreateNamed, (LLVMContextRef C, const char *Name)) \
99 macro(const char *, GetStructName, (LLVMTypeRef Ty)) \
100 macro(void, StructSetBody, (LLVMTypeRef StructTy, LLVMTypeRef *ElementTypes, unsigned ElementCount, LLVMBool Packed)) \
101 macro(unsigned, CountStructElementTypes, (LLVMTypeRef StructTy)) \
102 macro(void, GetStructElementTypes, (LLVMTypeRef StructTy, LLVMTypeRef *Dest)) \
103 macro(LLVMBool, IsPackedStruct, (LLVMTypeRef StructTy)) \
104 macro(LLVMBool, IsOpaqueStruct, (LLVMTypeRef StructTy)) \
105 macro(LLVMTypeRef, GetElementType, (LLVMTypeRef Ty)) \
106 macro(LLVMTypeRef, ArrayType, (LLVMTypeRef ElementType, unsigned ElementCount)) \
107 macro(unsigned, GetArrayLength, (LLVMTypeRef ArrayTy)) \
108 macro(LLVMTypeRef, PointerType, (LLVMTypeRef ElementType, unsigned AddressSpace)) \
109 macro(unsigned, GetPointerAddressSpace, (LLVMTypeRef PointerTy)) \
110 macro(LLVMTypeRef, VectorType, (LLVMTypeRef ElementType, unsigned ElementCount)) \
111 macro(unsigned, GetVectorSize, (LLVMTypeRef VectorTy)) \
112 macro(LLVMTypeRef, VoidTypeInContext, (LLVMContextRef C)) \
113 macro(LLVMTypeRef, LabelTypeInContext, (LLVMContextRef C)) \
114 macro(LLVMTypeRef, X86MMXTypeInContext, (LLVMContextRef C)) \
115 macro(LLVMTypeRef, VoidType, (void)) \
116 macro(LLVMTypeRef, LabelType, (void)) \
117 macro(LLVMTypeRef, X86MMXType, (void)) \
118 macro(LLVMTypeRef, TypeOf, (LLVMValueRef Val)) \
119 macro(const char *, GetValueName, (LLVMValueRef Val)) \
120 macro(void, SetValueName, (LLVMValueRef Val, const char *Name)) \
121 macro(void, DumpValue, (LLVMValueRef Val)) \
122 macro(void, ReplaceAllUsesWith, (LLVMValueRef OldVal, LLVMValueRef NewVal)) \
123 macro(LLVMBool, IsConstant, (LLVMValueRef Val)) \
124 macro(LLVMBool, IsUndef, (LLVMValueRef Val)) \
125 macro(LLVMValueRef, IsAArgument, (LLVMValueRef Val)) \
126 macro(LLVMValueRef, IsABasicBlock, (LLVMValueRef Val)) \
127 macro(LLVMValueRef, IsAInlineAsm, (LLVMValueRef Val)) \
128 macro(LLVMValueRef, IsAMDNode, (LLVMValueRef Val)) \
129 macro(LLVMValueRef, IsAMDString, (LLVMValueRef Val)) \
130 macro(LLVMValueRef, IsAUser, (LLVMValueRef Val)) \
131 macro(LLVMValueRef, IsAConstant, (LLVMValueRef Val)) \
132 macro(LLVMValueRef, IsABlockAddress, (LLVMValueRef Val)) \
133 macro(LLVMValueRef, IsAConstantAggregateZero, (LLVMValueRef Val)) \
134 macro(LLVMValueRef, IsAConstantArray, (LLVMValueRef Val)) \
135 macro(LLVMValueRef, IsAConstantExpr, (LLVMValueRef Val)) \
136 macro(LLVMValueRef, IsAConstantFP, (LLVMValueRef Val)) \
137 macro(LLVMValueRef, IsAConstantInt, (LLVMValueRef Val)) \
138 macro(LLVMValueRef, IsAConstantPointerNull, (LLVMValueRef Val)) \
139 macro(LLVMValueRef, IsAConstantStruct, (LLVMValueRef Val)) \
140 macro(LLVMValueRef, IsAConstantVector, (LLVMValueRef Val)) \
141 macro(LLVMValueRef, IsAGlobalValue, (LLVMValueRef Val)) \
142 macro(LLVMValueRef, IsAFunction, (LLVMValueRef Val)) \
143 macro(LLVMValueRef, IsAGlobalAlias, (LLVMValueRef Val)) \
144 macro(LLVMValueRef, IsAGlobalVariable, (LLVMValueRef Val)) \
145 macro(LLVMValueRef, IsAUndefValue, (LLVMValueRef Val)) \
146 macro(LLVMValueRef, IsAInstruction, (LLVMValueRef Val)) \
147 macro(LLVMValueRef, IsABinaryOperator, (LLVMValueRef Val)) \
148 macro(LLVMValueRef, IsACallInst, (LLVMValueRef Val)) \
149 macro(LLVMValueRef, IsAIntrinsicInst, (LLVMValueRef Val)) \
150 macro(LLVMValueRef, IsADbgInfoIntrinsic, (LLVMValueRef Val)) \
151 macro(LLVMValueRef, IsADbgDeclareInst, (LLVMValueRef Val)) \
152 macro(LLVMValueRef, IsAMemIntrinsic, (LLVMValueRef Val)) \
153 macro(LLVMValueRef, IsAMemCpyInst, (LLVMValueRef Val)) \
154 macro(LLVMValueRef, IsAMemMoveInst, (LLVMValueRef Val)) \
155 macro(LLVMValueRef, IsAMemSetInst, (LLVMValueRef Val)) \
156 macro(LLVMValueRef, IsACmpInst, (LLVMValueRef Val)) \
157 macro(LLVMValueRef, IsAFCmpInst, (LLVMValueRef Val)) \
158 macro(LLVMValueRef, IsAICmpInst, (LLVMValueRef Val)) \
159 macro(LLVMValueRef, IsAExtractElementInst, (LLVMValueRef Val)) \
160 macro(LLVMValueRef, IsAGetElementPtrInst, (LLVMValueRef Val)) \
161 macro(LLVMValueRef, IsAInsertElementInst, (LLVMValueRef Val)) \
162 macro(LLVMValueRef, IsAInsertValueInst, (LLVMValueRef Val)) \
163 macro(LLVMValueRef, IsALandingPadInst, (LLVMValueRef Val)) \
164 macro(LLVMValueRef, IsAPHINode, (LLVMValueRef Val)) \
165 macro(LLVMValueRef, IsASelectInst, (LLVMValueRef Val)) \
166 macro(LLVMValueRef, IsAShuffleVectorInst, (LLVMValueRef Val)) \
167 macro(LLVMValueRef, IsAStoreInst, (LLVMValueRef Val)) \
168 macro(LLVMValueRef, IsATerminatorInst, (LLVMValueRef Val)) \
169 macro(LLVMValueRef, IsABranchInst, (LLVMValueRef Val)) \
170 macro(LLVMValueRef, IsAIndirectBrInst, (LLVMValueRef Val)) \
171 macro(LLVMValueRef, IsAInvokeInst, (LLVMValueRef Val)) \
172 macro(LLVMValueRef, IsAReturnInst, (LLVMValueRef Val)) \
173 macro(LLVMValueRef, IsASwitchInst, (LLVMValueRef Val)) \
174 macro(LLVMValueRef, IsAUnreachableInst, (LLVMValueRef Val)) \
175 macro(LLVMValueRef, IsAResumeInst, (LLVMValueRef Val)) \
176 macro(LLVMValueRef, IsAUnaryInstruction, (LLVMValueRef Val)) \
177 macro(LLVMValueRef, IsAAllocaInst, (LLVMValueRef Val)) \
178 macro(LLVMValueRef, IsACastInst, (LLVMValueRef Val)) \
179 macro(LLVMValueRef, IsABitCastInst, (LLVMValueRef Val)) \
180 macro(LLVMValueRef, IsAFPExtInst, (LLVMValueRef Val)) \
181 macro(LLVMValueRef, IsAFPToSIInst, (LLVMValueRef Val)) \
182 macro(LLVMValueRef, IsAFPToUIInst, (LLVMValueRef Val)) \
183 macro(LLVMValueRef, IsAFPTruncInst, (LLVMValueRef Val)) \
184 macro(LLVMValueRef, IsAIntToPtrInst, (LLVMValueRef Val)) \
185 macro(LLVMValueRef, IsAPtrToIntInst, (LLVMValueRef Val)) \
186 macro(LLVMValueRef, IsASExtInst, (LLVMValueRef Val)) \
187 macro(LLVMValueRef, IsASIToFPInst, (LLVMValueRef Val)) \
188 macro(LLVMValueRef, IsATruncInst, (LLVMValueRef Val)) \
189 macro(LLVMValueRef, IsAUIToFPInst, (LLVMValueRef Val)) \
190 macro(LLVMValueRef, IsAZExtInst, (LLVMValueRef Val)) \
191 macro(LLVMValueRef, IsAExtractValueInst, (LLVMValueRef Val)) \
192 macro(LLVMValueRef, IsALoadInst, (LLVMValueRef Val)) \
193 macro(LLVMValueRef, IsAVAArgInst, (LLVMValueRef Val)) \
194 macro(LLVMUseRef, GetFirstUse, (LLVMValueRef Val)) \
195 macro(LLVMUseRef, GetNextUse, (LLVMUseRef U)) \
196 macro(LLVMValueRef, GetUser, (LLVMUseRef U)) \
197 macro(LLVMValueRef, GetUsedValue, (LLVMUseRef U)) \
198 macro(LLVMValueRef, GetOperand, (LLVMValueRef Val, unsigned Index)) \
199 macro(void, SetOperand, (LLVMValueRef User, unsigned Index, LLVMValueRef Val)) \
200 macro(int, GetNumOperands, (LLVMValueRef Val)) \
201 macro(LLVMValueRef, ConstNull, (LLVMTypeRef Ty)) \
202 macro(LLVMValueRef, ConstAllOnes, (LLVMTypeRef Ty)) \
203 macro(LLVMValueRef, GetUndef, (LLVMTypeRef Ty)) \
204 macro(LLVMBool, IsNull, (LLVMValueRef Val)) \
205 macro(LLVMValueRef, ConstPointerNull, (LLVMTypeRef Ty)) \
206 macro(LLVMValueRef, ConstInt, (LLVMTypeRef IntTy, unsigned long long N, LLVMBool SignExtend)) \
207 macro(LLVMValueRef, ConstIntOfArbitraryPrecision, (LLVMTypeRef IntTy, unsigned NumWords, const uint64_t Words[])) \
208 macro(LLVMValueRef, ConstIntOfString, (LLVMTypeRef IntTy, const char *Text, uint8_t Radix)) \
209 macro(LLVMValueRef, ConstIntOfStringAndSize, (LLVMTypeRef IntTy, const char *Text, unsigned SLen, uint8_t Radix)) \
210 macro(LLVMValueRef, ConstReal, (LLVMTypeRef RealTy, double N)) \
211 macro(LLVMValueRef, ConstRealOfString, (LLVMTypeRef RealTy, const char *Text)) \
212 macro(LLVMValueRef, ConstRealOfStringAndSize, (LLVMTypeRef RealTy, const char *Text, unsigned SLen)) \
213 macro(unsigned long long, ConstIntGetZExtValue, (LLVMValueRef ConstantVal)) \
214 macro(long long, ConstIntGetSExtValue, (LLVMValueRef ConstantVal)) \
215 macro(LLVMValueRef, ConstStringInContext, (LLVMContextRef C, const char *Str, unsigned Length, LLVMBool DontNullTerminate)) \
216 macro(LLVMValueRef, ConstString, (const char *Str, unsigned Length, LLVMBool DontNullTerminate)) \
217 macro(LLVMValueRef, ConstStructInContext, (LLVMContextRef C, LLVMValueRef *ConstantVals, unsigned Count, LLVMBool Packed)) \
218 macro(LLVMValueRef, ConstStruct, (LLVMValueRef *ConstantVals, unsigned Count, LLVMBool Packed)) \
219 macro(LLVMValueRef, ConstArray, (LLVMTypeRef ElementTy, LLVMValueRef *ConstantVals, unsigned Length)) \
220 macro(LLVMValueRef, ConstNamedStruct, (LLVMTypeRef StructTy, LLVMValueRef *ConstantVals, unsigned Count)) \
221 macro(LLVMValueRef, ConstVector, (LLVMValueRef *ScalarConstantVals, unsigned Size)) \
222 macro(LLVMOpcode, GetConstOpcode, (LLVMValueRef ConstantVal)) \
223 macro(LLVMValueRef, AlignOf, (LLVMTypeRef Ty)) \
224 macro(LLVMValueRef, SizeOf, (LLVMTypeRef Ty)) \
225 macro(LLVMValueRef, ConstNeg, (LLVMValueRef ConstantVal)) \
226 macro(LLVMValueRef, ConstNSWNeg, (LLVMValueRef ConstantVal)) \
227 macro(LLVMValueRef, ConstNUWNeg, (LLVMValueRef ConstantVal)) \
228 macro(LLVMValueRef, ConstFNeg, (LLVMValueRef ConstantVal)) \
229 macro(LLVMValueRef, ConstNot, (LLVMValueRef ConstantVal)) \
230 macro(LLVMValueRef, ConstAdd, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
231 macro(LLVMValueRef, ConstNSWAdd, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
232 macro(LLVMValueRef, ConstNUWAdd, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
233 macro(LLVMValueRef, ConstFAdd, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
234 macro(LLVMValueRef, ConstSub, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
235 macro(LLVMValueRef, ConstNSWSub, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
236 macro(LLVMValueRef, ConstNUWSub, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
237 macro(LLVMValueRef, ConstFSub, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
238 macro(LLVMValueRef, ConstMul, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
239 macro(LLVMValueRef, ConstNSWMul, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
240 macro(LLVMValueRef, ConstNUWMul, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
241 macro(LLVMValueRef, ConstFMul, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
242 macro(LLVMValueRef, ConstUDiv, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
243 macro(LLVMValueRef, ConstSDiv, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
244 macro(LLVMValueRef, ConstExactSDiv, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
245 macro(LLVMValueRef, ConstFDiv, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
246 macro(LLVMValueRef, ConstURem, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
247 macro(LLVMValueRef, ConstSRem, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
248 macro(LLVMValueRef, ConstFRem, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
249 macro(LLVMValueRef, ConstAnd, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
250 macro(LLVMValueRef, ConstOr, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
251 macro(LLVMValueRef, ConstXor, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
252 macro(LLVMValueRef, ConstICmp, (LLVMIntPredicate Predicate, LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
253 macro(LLVMValueRef, ConstFCmp, (LLVMRealPredicate Predicate, LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
254 macro(LLVMValueRef, ConstShl, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
255 macro(LLVMValueRef, ConstLShr, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
256 macro(LLVMValueRef, ConstAShr, (LLVMValueRef LHSConstant, LLVMValueRef RHSConstant)) \
257 macro(LLVMValueRef, ConstGEP, (LLVMValueRef ConstantVal, LLVMValueRef *ConstantIndices, unsigned NumIndices)) \
258 macro(LLVMValueRef, ConstInBoundsGEP, (LLVMValueRef ConstantVal, LLVMValueRef *ConstantIndices, unsigned NumIndices)) \
259 macro(LLVMValueRef, ConstTrunc, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
260 macro(LLVMValueRef, ConstSExt, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
261 macro(LLVMValueRef, ConstZExt, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
262 macro(LLVMValueRef, ConstFPTrunc, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
263 macro(LLVMValueRef, ConstFPExt, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
264 macro(LLVMValueRef, ConstUIToFP, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
265 macro(LLVMValueRef, ConstSIToFP, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
266 macro(LLVMValueRef, ConstFPToUI, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
267 macro(LLVMValueRef, ConstFPToSI, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
268 macro(LLVMValueRef, ConstPtrToInt, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
269 macro(LLVMValueRef, ConstIntToPtr, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
270 macro(LLVMValueRef, ConstBitCast, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
271 macro(LLVMValueRef, ConstZExtOrBitCast, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
272 macro(LLVMValueRef, ConstSExtOrBitCast, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
273 macro(LLVMValueRef, ConstTruncOrBitCast, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
274 macro(LLVMValueRef, ConstPointerCast, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
275 macro(LLVMValueRef, ConstIntCast, (LLVMValueRef ConstantVal, LLVMTypeRef ToType, LLVMBool isSigned)) \
276 macro(LLVMValueRef, ConstFPCast, (LLVMValueRef ConstantVal, LLVMTypeRef ToType)) \
277 macro(LLVMValueRef, ConstSelect, (LLVMValueRef ConstantCondition, LLVMValueRef ConstantIfTrue, LLVMValueRef ConstantIfFalse)) \
278 macro(LLVMValueRef, ConstExtractElement, (LLVMValueRef VectorConstant, LLVMValueRef IndexConstant)) \
279 macro(LLVMValueRef, ConstInsertElement, (LLVMValueRef VectorConstant, LLVMValueRef ElementValueConstant, LLVMValueRef IndexConstant)) \
280 macro(LLVMValueRef, ConstShuffleVector, (LLVMValueRef VectorAConstant, LLVMValueRef VectorBConstant, LLVMValueRef MaskConstant)) \
281 macro(LLVMValueRef, ConstExtractValue, (LLVMValueRef AggConstant, unsigned *IdxList, unsigned NumIdx)) \
282 macro(LLVMValueRef, ConstInsertValue, (LLVMValueRef AggConstant, LLVMValueRef ElementValueConstant, unsigned *IdxList, unsigned NumIdx)) \
283 macro(LLVMValueRef, ConstInlineAsm, (LLVMTypeRef Ty, const char *AsmString, const char *Constraints, LLVMBool HasSideEffects, LLVMBool IsAlignStack)) \
284 macro(LLVMValueRef, BlockAddress, (LLVMValueRef F, LLVMBasicBlockRef BB)) \
285 macro(LLVMModuleRef, GetGlobalParent, (LLVMValueRef Global)) \
286 macro(LLVMBool, IsDeclaration, (LLVMValueRef Global)) \
287 macro(LLVMLinkage, GetLinkage, (LLVMValueRef Global)) \
288 macro(void, SetLinkage, (LLVMValueRef Global, LLVMLinkage Linkage)) \
289 macro(const char *, GetSection, (LLVMValueRef Global)) \
290 macro(void, SetSection, (LLVMValueRef Global, const char *Section)) \
291 macro(LLVMVisibility, GetVisibility, (LLVMValueRef Global)) \
292 macro(void, SetVisibility, (LLVMValueRef Global, LLVMVisibility Viz)) \
293 macro(unsigned, GetAlignment, (LLVMValueRef Global)) \
294 macro(void, SetAlignment, (LLVMValueRef Global, unsigned Bytes)) \
295 macro(LLVMValueRef, AddGlobal, (LLVMModuleRef M, LLVMTypeRef Ty, const char *Name)) \
296 macro(LLVMValueRef, AddGlobalInAddressSpace, (LLVMModuleRef M, LLVMTypeRef Ty, const char *Name, unsigned AddressSpace)) \
297 macro(LLVMValueRef, GetNamedGlobal, (LLVMModuleRef M, const char *Name)) \
298 macro(LLVMValueRef, GetFirstGlobal, (LLVMModuleRef M)) \
299 macro(LLVMValueRef, GetLastGlobal, (LLVMModuleRef M)) \
300 macro(LLVMValueRef, GetNextGlobal, (LLVMValueRef GlobalVar)) \
301 macro(LLVMValueRef, GetPreviousGlobal, (LLVMValueRef GlobalVar)) \
302 macro(void, DeleteGlobal, (LLVMValueRef GlobalVar)) \
303 macro(LLVMValueRef, GetInitializer, (LLVMValueRef GlobalVar)) \
304 macro(void, SetInitializer, (LLVMValueRef GlobalVar, LLVMValueRef ConstantVal)) \
305 macro(LLVMBool, IsThreadLocal, (LLVMValueRef GlobalVar)) \
306 macro(void, SetThreadLocal, (LLVMValueRef GlobalVar, LLVMBool IsThreadLocal)) \
307 macro(LLVMBool, IsGlobalConstant, (LLVMValueRef GlobalVar)) \
308 macro(void, SetGlobalConstant, (LLVMValueRef GlobalVar, LLVMBool IsConstant)) \
309 macro(LLVMThreadLocalMode, GetThreadLocalMode, (LLVMValueRef GlobalVar)) \
310 macro(void, SetThreadLocalMode, (LLVMValueRef GlobalVar, LLVMThreadLocalMode Mode)) \
311 macro(LLVMBool, IsExternallyInitialized, (LLVMValueRef GlobalVar)) \
312 macro(void, SetExternallyInitialized, (LLVMValueRef GlobalVar, LLVMBool IsExtInit)) \
313 macro(LLVMValueRef, AddAlias, (LLVMModuleRef M, LLVMTypeRef Ty, LLVMValueRef Aliasee, const char *Name)) \
314 macro(void, DeleteFunction, (LLVMValueRef Fn)) \
315 macro(unsigned, GetIntrinsicID, (LLVMValueRef Fn)) \
316 macro(unsigned, GetFunctionCallConv, (LLVMValueRef Fn)) \
317 macro(void, SetFunctionCallConv, (LLVMValueRef Fn, unsigned CC)) \
318 macro(const char *, GetGC, (LLVMValueRef Fn)) \
319 macro(void, SetGC, (LLVMValueRef Fn, const char *Name)) \
320 macro(void, AddFunctionAttr, (LLVMValueRef Fn, LLVMAttribute PA)) \
321 macro(void, AddTargetDependentFunctionAttr, (LLVMValueRef Fn, const char *A, const char *V)) \
322 macro(LLVMAttribute, GetFunctionAttr, (LLVMValueRef Fn)) \
323 macro(void, RemoveFunctionAttr, (LLVMValueRef Fn, LLVMAttribute PA)) \
324 macro(unsigned, CountParams, (LLVMValueRef Fn)) \
325 macro(void, GetParams, (LLVMValueRef Fn, LLVMValueRef *Params)) \
326 macro(LLVMValueRef, GetParam, (LLVMValueRef Fn, unsigned Index)) \
327 macro(LLVMValueRef, GetParamParent, (LLVMValueRef Inst)) \
328 macro(LLVMValueRef, GetFirstParam, (LLVMValueRef Fn)) \
329 macro(LLVMValueRef, GetLastParam, (LLVMValueRef Fn)) \
330 macro(LLVMValueRef, GetNextParam, (LLVMValueRef Arg)) \
331 macro(LLVMValueRef, GetPreviousParam, (LLVMValueRef Arg)) \
332 macro(void, AddAttribute, (LLVMValueRef Arg, LLVMAttribute PA)) \
333 macro(void, RemoveAttribute, (LLVMValueRef Arg, LLVMAttribute PA)) \
334 macro(LLVMAttribute, GetAttribute, (LLVMValueRef Arg)) \
335 macro(void, SetParamAlignment, (LLVMValueRef Arg, unsigned align)) \
336 macro(LLVMValueRef, MDStringInContext, (LLVMContextRef C, const char *Str, unsigned SLen)) \
337 macro(LLVMValueRef, MDString, (const char *Str, unsigned SLen)) \
338 macro(LLVMValueRef, MDNodeInContext, (LLVMContextRef C, LLVMValueRef *Vals, unsigned Count)) \
339 macro(LLVMValueRef, MDNode, (LLVMValueRef *Vals, unsigned Count)) \
340 macro(const char *, GetMDString, (LLVMValueRef V, unsigned* Len)) \
341 macro(unsigned, GetMDNodeNumOperands, (LLVMValueRef V)) \
342 macro(void, GetMDNodeOperands, (LLVMValueRef V, LLVMValueRef *Dest)) \
343 macro(LLVMValueRef, BasicBlockAsValue, (LLVMBasicBlockRef BB)) \
344 macro(LLVMBool, ValueIsBasicBlock, (LLVMValueRef Val)) \
345 macro(LLVMBasicBlockRef, ValueAsBasicBlock, (LLVMValueRef Val)) \
346 macro(LLVMValueRef, GetBasicBlockParent, (LLVMBasicBlockRef BB)) \
347 macro(LLVMValueRef, GetBasicBlockTerminator, (LLVMBasicBlockRef BB)) \
348 macro(unsigned, CountBasicBlocks, (LLVMValueRef Fn)) \
349 macro(void, GetBasicBlocks, (LLVMValueRef Fn, LLVMBasicBlockRef *BasicBlocks)) \
350 macro(LLVMBasicBlockRef, GetFirstBasicBlock, (LLVMValueRef Fn)) \
351 macro(LLVMBasicBlockRef, GetLastBasicBlock, (LLVMValueRef Fn)) \
352 macro(LLVMBasicBlockRef, GetNextBasicBlock, (LLVMBasicBlockRef BB)) \
353 macro(LLVMBasicBlockRef, GetPreviousBasicBlock, (LLVMBasicBlockRef BB)) \
354 macro(LLVMBasicBlockRef, GetEntryBasicBlock, (LLVMValueRef Fn)) \
355 macro(LLVMBasicBlockRef, AppendBasicBlockInContext, (LLVMContextRef C, LLVMValueRef Fn, const char *Name)) \
356 macro(LLVMBasicBlockRef, AppendBasicBlock, (LLVMValueRef Fn, const char *Name)) \
357 macro(LLVMBasicBlockRef, InsertBasicBlockInContext, (LLVMContextRef C, LLVMBasicBlockRef BB, const char *Name)) \
358 macro(LLVMBasicBlockRef, InsertBasicBlock, (LLVMBasicBlockRef InsertBeforeBB, const char *Name)) \
359 macro(void, DeleteBasicBlock, (LLVMBasicBlockRef BB)) \
360 macro(void, RemoveBasicBlockFromParent, (LLVMBasicBlockRef BB)) \
361 macro(void, MoveBasicBlockBefore, (LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos)) \
362 macro(void, MoveBasicBlockAfter, (LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos)) \
363 macro(LLVMValueRef, GetFirstInstruction, (LLVMBasicBlockRef BB)) \
364 macro(LLVMValueRef, GetLastInstruction, (LLVMBasicBlockRef BB)) \
365 macro(int, HasMetadata, (LLVMValueRef Val)) \
366 macro(LLVMValueRef, GetMetadata, (LLVMValueRef Val, unsigned KindID)) \
367 macro(void, SetMetadata, (LLVMValueRef Val, unsigned KindID, LLVMValueRef Node)) \
368 macro(LLVMBasicBlockRef, GetInstructionParent, (LLVMValueRef Inst)) \
369 macro(LLVMValueRef, GetNextInstruction, (LLVMValueRef Inst)) \
370 macro(LLVMValueRef, GetPreviousInstruction, (LLVMValueRef Inst)) \
371 macro(void, InstructionEraseFromParent, (LLVMValueRef Inst)) \
372 macro(LLVMOpcode, GetInstructionOpcode, (LLVMValueRef Inst)) \
373 macro(LLVMIntPredicate, GetICmpPredicate, (LLVMValueRef Inst)) \
374 macro(void, SetInstructionCallConv, (LLVMValueRef Instr, unsigned CC)) \
375 macro(unsigned, GetInstructionCallConv, (LLVMValueRef Instr)) \
376 macro(void, AddInstrAttribute, (LLVMValueRef Instr, unsigned index, LLVMAttribute)) \
377 macro(void, RemoveInstrAttribute, (LLVMValueRef Instr, unsigned index, LLVMAttribute)) \
378 macro(void, SetInstrParamAlignment, (LLVMValueRef Instr, unsigned index, unsigned align)) \
379 macro(LLVMBool, IsTailCall, (LLVMValueRef CallInst)) \
380 macro(void, SetTailCall, (LLVMValueRef CallInst, LLVMBool IsTailCall)) \
381 macro(LLVMBasicBlockRef, GetSwitchDefaultDest, (LLVMValueRef SwitchInstr)) \
382 macro(void, AddIncoming, (LLVMValueRef PhiNode, LLVMValueRef *IncomingValues, LLVMBasicBlockRef *IncomingBlocks, unsigned Count)) \
383 macro(unsigned, CountIncoming, (LLVMValueRef PhiNode)) \
384 macro(LLVMValueRef, GetIncomingValue, (LLVMValueRef PhiNode, unsigned Index)) \
385 macro(LLVMBasicBlockRef, GetIncomingBlock, (LLVMValueRef PhiNode, unsigned Index)) \
386 macro(LLVMBuilderRef, CreateBuilderInContext, (LLVMContextRef C)) \
387 macro(LLVMBuilderRef, CreateBuilder, (void)) \
388 macro(void, PositionBuilder, (LLVMBuilderRef Builder, LLVMBasicBlockRef Block, LLVMValueRef Instr)) \
389 macro(void, PositionBuilderBefore, (LLVMBuilderRef Builder, LLVMValueRef Instr)) \
390 macro(void, PositionBuilderAtEnd, (LLVMBuilderRef Builder, LLVMBasicBlockRef Block)) \
391 macro(LLVMBasicBlockRef, GetInsertBlock, (LLVMBuilderRef Builder)) \
392 macro(void, ClearInsertionPosition, (LLVMBuilderRef Builder)) \
393 macro(void, InsertIntoBuilder, (LLVMBuilderRef Builder, LLVMValueRef Instr)) \
394 macro(void, InsertIntoBuilderWithName, (LLVMBuilderRef Builder, LLVMValueRef Instr, const char *Name)) \
395 macro(void, DisposeBuilder, (LLVMBuilderRef Builder)) \
396 macro(void, SetCurrentDebugLocation, (LLVMBuilderRef Builder, LLVMValueRef L)) \
397 macro(LLVMValueRef, GetCurrentDebugLocation, (LLVMBuilderRef Builder)) \
398 macro(void, SetInstDebugLocation, (LLVMBuilderRef Builder, LLVMValueRef Inst)) \
399 macro(LLVMValueRef, BuildRetVoid, (LLVMBuilderRef)) \
400 macro(LLVMValueRef, BuildRet, (LLVMBuilderRef, LLVMValueRef V)) \
401 macro(LLVMValueRef, BuildAggregateRet, (LLVMBuilderRef, LLVMValueRef *RetVals, unsigned N)) \
402 macro(LLVMValueRef, BuildBr, (LLVMBuilderRef, LLVMBasicBlockRef Dest)) \
403 macro(LLVMValueRef, BuildCondBr, (LLVMBuilderRef, LLVMValueRef If, LLVMBasicBlockRef Then, LLVMBasicBlockRef Else)) \
404 macro(LLVMValueRef, BuildSwitch, (LLVMBuilderRef, LLVMValueRef V, LLVMBasicBlockRef Else, unsigned NumCases)) \
405 macro(LLVMValueRef, BuildIndirectBr, (LLVMBuilderRef B, LLVMValueRef Addr, unsigned NumDests)) \
406 macro(LLVMValueRef, BuildInvoke, (LLVMBuilderRef, LLVMValueRef Fn, LLVMValueRef *Args, unsigned NumArgs, LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, const char *Name)) \
407 macro(LLVMValueRef, BuildLandingPad, (LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef PersFn, unsigned NumClauses, const char *Name)) \
408 macro(LLVMValueRef, BuildResume, (LLVMBuilderRef B, LLVMValueRef Exn)) \
409 macro(LLVMValueRef, BuildUnreachable, (LLVMBuilderRef)) \
410 macro(void, AddCase, (LLVMValueRef Switch, LLVMValueRef OnVal, LLVMBasicBlockRef Dest)) \
411 macro(void, AddDestination, (LLVMValueRef IndirectBr, LLVMBasicBlockRef Dest)) \
412 macro(void, AddClause, (LLVMValueRef LandingPad, LLVMValueRef ClauseVal)) \
413 macro(void, SetCleanup, (LLVMValueRef LandingPad, LLVMBool Val)) \
414 macro(LLVMValueRef, BuildAdd, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
415 macro(LLVMValueRef, BuildNSWAdd, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
416 macro(LLVMValueRef, BuildNUWAdd, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
417 macro(LLVMValueRef, BuildFAdd, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
418 macro(LLVMValueRef, BuildSub, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
419 macro(LLVMValueRef, BuildNSWSub, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
420 macro(LLVMValueRef, BuildNUWSub, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
421 macro(LLVMValueRef, BuildFSub, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
422 macro(LLVMValueRef, BuildMul, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
423 macro(LLVMValueRef, BuildNSWMul, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
424 macro(LLVMValueRef, BuildNUWMul, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
425 macro(LLVMValueRef, BuildFMul, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
426 macro(LLVMValueRef, BuildUDiv, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
427 macro(LLVMValueRef, BuildSDiv, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
428 macro(LLVMValueRef, BuildExactSDiv, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
429 macro(LLVMValueRef, BuildFDiv, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
430 macro(LLVMValueRef, BuildURem, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
431 macro(LLVMValueRef, BuildSRem, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
432 macro(LLVMValueRef, BuildFRem, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
433 macro(LLVMValueRef, BuildShl, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
434 macro(LLVMValueRef, BuildLShr, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
435 macro(LLVMValueRef, BuildAShr, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
436 macro(LLVMValueRef, BuildAnd, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
437 macro(LLVMValueRef, BuildOr, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
438 macro(LLVMValueRef, BuildXor, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
439 macro(LLVMValueRef, BuildBinOp, (LLVMBuilderRef B, LLVMOpcode Op, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
440 macro(LLVMValueRef, BuildNeg, (LLVMBuilderRef, LLVMValueRef V, const char *Name)) \
441 macro(LLVMValueRef, BuildNSWNeg, (LLVMBuilderRef B, LLVMValueRef V, const char *Name)) \
442 macro(LLVMValueRef, BuildNUWNeg, (LLVMBuilderRef B, LLVMValueRef V, const char *Name)) \
443 macro(LLVMValueRef, BuildFNeg, (LLVMBuilderRef, LLVMValueRef V, const char *Name)) \
444 macro(LLVMValueRef, BuildNot, (LLVMBuilderRef, LLVMValueRef V, const char *Name)) \
445 macro(LLVMValueRef, BuildMalloc, (LLVMBuilderRef, LLVMTypeRef Ty, const char *Name)) \
446 macro(LLVMValueRef, BuildArrayMalloc, (LLVMBuilderRef, LLVMTypeRef Ty, LLVMValueRef Val, const char *Name)) \
447 macro(LLVMValueRef, BuildAlloca, (LLVMBuilderRef, LLVMTypeRef Ty, const char *Name)) \
448 macro(LLVMValueRef, BuildArrayAlloca, (LLVMBuilderRef, LLVMTypeRef Ty, LLVMValueRef Val, const char *Name)) \
449 macro(LLVMValueRef, BuildFree, (LLVMBuilderRef, LLVMValueRef PointerVal)) \
450 macro(LLVMValueRef, BuildLoad, (LLVMBuilderRef, LLVMValueRef PointerVal, const char *Name)) \
451 macro(LLVMValueRef, BuildStore, (LLVMBuilderRef, LLVMValueRef Val, LLVMValueRef Ptr)) \
452 macro(LLVMValueRef, BuildGEP, (LLVMBuilderRef B, LLVMValueRef Pointer, LLVMValueRef *Indices, unsigned NumIndices, const char *Name)) \
453 macro(LLVMValueRef, BuildInBoundsGEP, (LLVMBuilderRef B, LLVMValueRef Pointer, LLVMValueRef *Indices, unsigned NumIndices, const char *Name)) \
454 macro(LLVMValueRef, BuildStructGEP, (LLVMBuilderRef B, LLVMValueRef Pointer, unsigned Idx, const char *Name)) \
455 macro(LLVMValueRef, BuildGlobalString, (LLVMBuilderRef B, const char *Str, const char *Name)) \
456 macro(LLVMValueRef, BuildGlobalStringPtr, (LLVMBuilderRef B, const char *Str, const char *Name)) \
457 macro(LLVMBool, GetVolatile, (LLVMValueRef MemoryAccessInst)) \
458 macro(void, SetVolatile, (LLVMValueRef MemoryAccessInst, LLVMBool IsVolatile)) \
459 macro(LLVMValueRef, BuildTrunc, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
460 macro(LLVMValueRef, BuildZExt, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
461 macro(LLVMValueRef, BuildSExt, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
462 macro(LLVMValueRef, BuildFPToUI, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
463 macro(LLVMValueRef, BuildFPToSI, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
464 macro(LLVMValueRef, BuildUIToFP, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
465 macro(LLVMValueRef, BuildSIToFP, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
466 macro(LLVMValueRef, BuildFPTrunc, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
467 macro(LLVMValueRef, BuildFPExt, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
468 macro(LLVMValueRef, BuildPtrToInt, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
469 macro(LLVMValueRef, BuildIntToPtr, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
470 macro(LLVMValueRef, BuildBitCast, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
471 macro(LLVMValueRef, BuildZExtOrBitCast, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
472 macro(LLVMValueRef, BuildSExtOrBitCast, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
473 macro(LLVMValueRef, BuildTruncOrBitCast, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
474 macro(LLVMValueRef, BuildCast, (LLVMBuilderRef B, LLVMOpcode Op, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
475 macro(LLVMValueRef, BuildPointerCast, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
476 macro(LLVMValueRef, BuildIntCast, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
477 macro(LLVMValueRef, BuildFPCast, (LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const char *Name)) \
478 macro(LLVMValueRef, BuildICmp, (LLVMBuilderRef, LLVMIntPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
479 macro(LLVMValueRef, BuildFCmp, (LLVMBuilderRef, LLVMRealPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
480 macro(LLVMValueRef, BuildPhi, (LLVMBuilderRef, LLVMTypeRef Ty, const char *Name)) \
481 macro(LLVMValueRef, BuildCall, (LLVMBuilderRef, LLVMValueRef Fn, LLVMValueRef *Args, unsigned NumArgs, const char *Name)) \
482 macro(LLVMValueRef, BuildSelect, (LLVMBuilderRef, LLVMValueRef If, LLVMValueRef Then, LLVMValueRef Else, const char *Name)) \
483 macro(LLVMValueRef, BuildVAArg, (LLVMBuilderRef, LLVMValueRef List, LLVMTypeRef Ty, const char *Name)) \
484 macro(LLVMValueRef, BuildExtractElement, (LLVMBuilderRef, LLVMValueRef VecVal, LLVMValueRef Index, const char *Name)) \
485 macro(LLVMValueRef, BuildInsertElement, (LLVMBuilderRef, LLVMValueRef VecVal, LLVMValueRef EltVal, LLVMValueRef Index, const char *Name)) \
486 macro(LLVMValueRef, BuildShuffleVector, (LLVMBuilderRef, LLVMValueRef V1, LLVMValueRef V2, LLVMValueRef Mask, const char *Name)) \
487 macro(LLVMValueRef, BuildExtractValue, (LLVMBuilderRef, LLVMValueRef AggVal, unsigned Index, const char *Name)) \
488 macro(LLVMValueRef, BuildInsertValue, (LLVMBuilderRef, LLVMValueRef AggVal, LLVMValueRef EltVal, unsigned Index, const char *Name)) \
489 macro(LLVMValueRef, BuildIsNull, (LLVMBuilderRef, LLVMValueRef Val, const char *Name)) \
490 macro(LLVMValueRef, BuildIsNotNull, (LLVMBuilderRef, LLVMValueRef Val, const char *Name)) \
491 macro(LLVMValueRef, BuildPtrDiff, (LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name)) \
492 macro(LLVMValueRef, BuildFence, (LLVMBuilderRef B, LLVMAtomicOrdering Ordering, LLVMBool isSingleThread, const char *Name)) \
493 macro(LLVMValueRef, BuildAtomicRMW, (LLVMBuilderRef B, LLVMAtomicRMWBinOp op, LLVMValueRef PTR, LLVMValueRef Val, LLVMAtomicOrdering ordering, LLVMBool singleThread)) \
494 macro(LLVMModuleProviderRef, CreateModuleProviderForExistingModule, (LLVMModuleRef M)) \
495 macro(void, DisposeModuleProvider, (LLVMModuleProviderRef M)) \
496 macro(LLVMBool, CreateMemoryBufferWithContentsOfFile, (const char *Path, LLVMMemoryBufferRef *OutMemBuf, char **OutMessage)) \
497 macro(LLVMBool, CreateMemoryBufferWithSTDIN, (LLVMMemoryBufferRef *OutMemBuf, char **OutMessage)) \
498 macro(LLVMMemoryBufferRef, CreateMemoryBufferWithMemoryRange, (const char *InputData, size_t InputDataLength, const char *BufferName, LLVMBool RequiresNullTerminator)) \
499 macro(LLVMMemoryBufferRef, CreateMemoryBufferWithMemoryRangeCopy, (const char *InputData, size_t InputDataLength, const char *BufferName)) \
500 macro(const char *, GetBufferStart, (LLVMMemoryBufferRef MemBuf)) \
501 macro(size_t, GetBufferSize, (LLVMMemoryBufferRef MemBuf)) \
502 macro(void, DisposeMemoryBuffer, (LLVMMemoryBufferRef MemBuf)) \
503 macro(LLVMPassRegistryRef, GetGlobalPassRegistry, (void)) \
504 macro(LLVMPassManagerRef, CreatePassManager, (void)) \
505 macro(LLVMPassManagerRef, CreateFunctionPassManagerForModule, (LLVMModuleRef M)) \
506 macro(LLVMPassManagerRef, CreateFunctionPassManager, (LLVMModuleProviderRef MP)) \
507 macro(LLVMBool, RunPassManager, (LLVMPassManagerRef PM, LLVMModuleRef M)) \
508 macro(LLVMBool, InitializeFunctionPassManager, (LLVMPassManagerRef FPM)) \
509 macro(LLVMBool, RunFunctionPassManager, (LLVMPassManagerRef FPM, LLVMValueRef F)) \
510 macro(LLVMBool, FinalizeFunctionPassManager, (LLVMPassManagerRef FPM)) \
511 macro(void, DisposePassManager, (LLVMPassManagerRef PM)) \
512 macro(LLVMBool, StartMultithreaded, ()) \
513 macro(void, StopMultithreaded, ()) \
514 macro(LLVMBool, IsMultithreaded, ()) \
515 macro(LLVMTargetDataRef, CreateTargetData, (const char *StringRep)) \
516 macro(void, AddTargetData, (LLVMTargetDataRef, LLVMPassManagerRef)) \
517 macro(void, AddTargetLibraryInfo, (LLVMTargetLibraryInfoRef, LLVMPassManagerRef)) \
518 macro(char *, CopyStringRepOfTargetData, (LLVMTargetDataRef)) \
519 macro(enum LLVMByteOrdering, ByteOrder, (LLVMTargetDataRef)) \
520 macro(unsigned, PointerSize, (LLVMTargetDataRef)) \
521 macro(LLVMTypeRef, IntPtrType, (LLVMTargetDataRef)) \
522 macro(unsigned long long, SizeOfTypeInBits, (LLVMTargetDataRef, LLVMTypeRef)) \
523 macro(unsigned long long, StoreSizeOfType, (LLVMTargetDataRef, LLVMTypeRef)) \
524 macro(unsigned long long, ABISizeOfType, (LLVMTargetDataRef, LLVMTypeRef)) \
525 macro(unsigned, ABIAlignmentOfType, (LLVMTargetDataRef, LLVMTypeRef)) \
526 macro(unsigned, CallFrameAlignmentOfType, (LLVMTargetDataRef, LLVMTypeRef)) \
527 macro(unsigned, PreferredAlignmentOfType, (LLVMTargetDataRef, LLVMTypeRef)) \
528 macro(unsigned, PreferredAlignmentOfGlobal, (LLVMTargetDataRef, LLVMValueRef GlobalVar)) \
529 macro(unsigned, ElementAtOffset, (LLVMTargetDataRef, LLVMTypeRef StructTy, unsigned long long Offset)) \
530 macro(unsigned long long, OffsetOfElement, (LLVMTargetDataRef, LLVMTypeRef StructTy, unsigned Element)) \
531 macro(void, DisposeTargetData, (LLVMTargetDataRef)) \
532 macro(LLVMTargetRef, GetFirstTarget, ()) \
533 macro(LLVMTargetRef, GetNextTarget, (LLVMTargetRef T)) \
534 macro(const char *, GetTargetName, (LLVMTargetRef T)) \
535 macro(const char *, GetTargetDescription, (LLVMTargetRef T)) \
536 macro(LLVMBool, TargetHasJIT, (LLVMTargetRef T)) \
537 macro(LLVMBool, TargetHasTargetMachine, (LLVMTargetRef T)) \
538 macro(LLVMBool, TargetHasAsmBackend, (LLVMTargetRef T)) \
539 macro(void, DisposeTargetMachine, (LLVMTargetMachineRef T)) \
540 macro(LLVMTargetRef, GetTargetMachineTarget, (LLVMTargetMachineRef T)) \
541 macro(char *, GetTargetMachineTriple, (LLVMTargetMachineRef T)) \
542 macro(char *, GetTargetMachineCPU, (LLVMTargetMachineRef T)) \
543 macro(char *, GetTargetMachineFeatureString, (LLVMTargetMachineRef T)) \
544 macro(LLVMTargetDataRef, GetTargetMachineData, (LLVMTargetMachineRef T)) \
545 macro(LLVMBool, TargetMachineEmitToFile, (LLVMTargetMachineRef T, LLVMModuleRef M, char *Filename, LLVMCodeGenFileType codegen, char **ErrorMessage)) \
546 macro(void, LinkInMCJIT, (void)) \
547 macro(LLVMGenericValueRef, CreateGenericValueOfInt, (LLVMTypeRef Ty, unsigned long long N, LLVMBool IsSigned)) \
548 macro(LLVMGenericValueRef, CreateGenericValueOfPointer, (void *P)) \
549 macro(LLVMGenericValueRef, CreateGenericValueOfFloat, (LLVMTypeRef Ty, double N)) \
550 macro(unsigned, GenericValueIntWidth, (LLVMGenericValueRef GenValRef)) \
551 macro(unsigned long long, GenericValueToInt, (LLVMGenericValueRef GenVal, LLVMBool IsSigned)) \
552 macro(void *, GenericValueToPointer, (LLVMGenericValueRef GenVal)) \
553 macro(double, GenericValueToFloat, (LLVMTypeRef TyRef, LLVMGenericValueRef GenVal)) \
554 macro(void, DisposeGenericValue, (LLVMGenericValueRef GenVal)) \
555 macro(LLVMBool, CreateExecutionEngineForModule, (LLVMExecutionEngineRef *OutEE, LLVMModuleRef M, char **OutError)) \
556 macro(LLVMBool, CreateInterpreterForModule, (LLVMExecutionEngineRef *OutInterp, LLVMModuleRef M, char **OutError)) \
557 macro(LLVMBool, CreateJITCompilerForModule, (LLVMExecutionEngineRef *OutJIT, LLVMModuleRef M, unsigned OptLevel, char **OutError)) \
558 macro(void, InitializeMCJITCompilerOptions, (struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions)) \
559 macro(LLVMBool, CreateMCJITCompilerForModule, (LLVMExecutionEngineRef *OutJIT, LLVMModuleRef M, struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions, char **OutError)) \
560 macro(LLVMBool, CreateExecutionEngine, (LLVMExecutionEngineRef *OutEE, LLVMModuleProviderRef MP, char **OutError)) \
561 macro(LLVMBool, CreateInterpreter, (LLVMExecutionEngineRef *OutInterp, LLVMModuleProviderRef MP, char **OutError)) \
562 macro(LLVMBool, CreateJITCompiler, (LLVMExecutionEngineRef *OutJIT, LLVMModuleProviderRef MP, unsigned OptLevel, char **OutError)) \
563 macro(void, DisposeExecutionEngine, (LLVMExecutionEngineRef EE)) \
564 macro(void, RunStaticConstructors, (LLVMExecutionEngineRef EE)) \
565 macro(void, RunStaticDestructors, (LLVMExecutionEngineRef EE)) \
566 macro(int, RunFunctionAsMain, (LLVMExecutionEngineRef EE, LLVMValueRef F, unsigned ArgC, const char * const *ArgV, const char * const *EnvP)) \
567 macro(LLVMGenericValueRef, RunFunction, (LLVMExecutionEngineRef EE, LLVMValueRef F, unsigned NumArgs, LLVMGenericValueRef *Args)) \
568 macro(void, FreeMachineCodeForFunction, (LLVMExecutionEngineRef EE, LLVMValueRef F)) \
569 macro(void, AddModule, (LLVMExecutionEngineRef EE, LLVMModuleRef M)) \
570 macro(void, AddModuleProvider, (LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP)) \
571 macro(LLVMBool, RemoveModule, (LLVMExecutionEngineRef EE, LLVMModuleRef M, LLVMModuleRef *OutMod, char **OutError)) \
572 macro(LLVMBool, RemoveModuleProvider, (LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP, LLVMModuleRef *OutMod, char **OutError)) \
573 macro(LLVMBool, FindFunction, (LLVMExecutionEngineRef EE, const char *Name, LLVMValueRef *OutFn)) \
574 macro(void *, RecompileAndRelinkFunction, (LLVMExecutionEngineRef EE, LLVMValueRef Fn)) \
575 macro(LLVMTargetDataRef, GetExecutionEngineTargetData, (LLVMExecutionEngineRef EE)) \
576 macro(void, AddGlobalMapping, (LLVMExecutionEngineRef EE, LLVMValueRef Global, void* Addr)) \
577 macro(void *, GetPointerToGlobal, (LLVMExecutionEngineRef EE, LLVMValueRef Global)) \
578 macro(LLVMMCJITMemoryManagerRef, CreateSimpleMCJITMemoryManager, (void *Opaque, LLVMMemoryManagerAllocateCodeSectionCallback AllocateCodeSection, LLVMMemoryManagerAllocateDataSectionCallback AllocateDataSection, LLVMMemoryManagerFinalizeMemoryCallback FinalizeMemory, LLVMMemoryManagerDestroyCallback Destory)) \
579 macro(void, DisposeMCJITMemoryManager, (LLVMMCJITMemoryManagerRef MM)) \
580 macro(LLVMBool, VerifyModule, (LLVMModuleRef M, LLVMVerifierFailureAction Action, char **OutMessage)) \
581 macro(LLVMBool, VerifyFunction, (LLVMValueRef Fn, LLVMVerifierFailureAction Action)) \
582 macro(void, ViewFunctionCFG, (LLVMValueRef Fn)) \
583 macro(void, ViewFunctionCFGOnly, (LLVMValueRef Fn)) \
584 macro(LLVMDisasmContextRef, CreateDisasm, (const char *TripleName, void *DisInfo, int TagType, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp)) \
585 macro(LLVMDisasmContextRef, CreateDisasmCPU, (const char *Triple, const char *CPU, void *DisInfo, int TagType, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp)) \
586 macro(int, SetDisasmOptions, (LLVMDisasmContextRef DC, uint64_t Options)) \
587 macro(void, DisasmDispose, (LLVMDisasmContextRef DC)) \
588 macro(size_t, DisasmInstruction, (LLVMDisasmContextRef DC, uint8_t *Bytes, uint64_t BytesSize, uint64_t PC, char *OutString, size_t OutStringSize)) \
589 macro(unsigned, PointerSizeForAS, (LLVMTargetDataRef, unsigned AS)) \
590 macro(LLVMTypeRef, IntPtrTypeForAS, (LLVMTargetDataRef, unsigned AS)) \
591 macro(LLVMPassManagerBuilderRef, PassManagerBuilderCreate, (void)) \
592 macro(void, PassManagerBuilderDispose, (LLVMPassManagerBuilderRef PMB)) \
593 macro(void, PassManagerBuilderSetOptLevel, (LLVMPassManagerBuilderRef PMB, unsigned OptLevel)) \
594 macro(void, PassManagerBuilderSetSizeLevel, (LLVMPassManagerBuilderRef PMB, unsigned SizeLevel)) \
595 macro(void, PassManagerBuilderSetDisableUnitAtATime, (LLVMPassManagerBuilderRef PMB, LLVMBool Value)) \
596 macro(void, PassManagerBuilderSetDisableUnrollLoops, (LLVMPassManagerBuilderRef PMB, LLVMBool Value)) \
597 macro(void, PassManagerBuilderSetDisableSimplifyLibCalls, (LLVMPassManagerBuilderRef PMB, LLVMBool Value)) \
598 macro(void, PassManagerBuilderUseInlinerWithThreshold, (LLVMPassManagerBuilderRef PMB, unsigned Threshold)) \
599 macro(void, PassManagerBuilderPopulateFunctionPassManager, (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM)) \
600 macro(void, PassManagerBuilderPopulateModulePassManager, (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM)) \
601 macro(void, PassManagerBuilderPopulateLTOPassManager, (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM, LLVMBool Internalize, LLVMBool RunInliner)) \
602 macro(void, AddAggressiveDCEPass, (LLVMPassManagerRef PM)) \
603 macro(void, AddCFGSimplificationPass, (LLVMPassManagerRef PM)) \
604 macro(void, AddDeadStoreEliminationPass, (LLVMPassManagerRef PM)) \
605 macro(void, AddGVNPass, (LLVMPassManagerRef PM)) \
606 macro(void, AddIndVarSimplifyPass, (LLVMPassManagerRef PM)) \
607 macro(void, AddInstructionCombiningPass, (LLVMPassManagerRef PM)) \
608 macro(void, AddJumpThreadingPass, (LLVMPassManagerRef PM)) \
609 macro(void, AddLICMPass, (LLVMPassManagerRef PM)) \
610 macro(void, AddLoopDeletionPass, (LLVMPassManagerRef PM)) \
611 macro(void, AddLoopIdiomPass, (LLVMPassManagerRef PM)) \
612 macro(void, AddLoopRotatePass, (LLVMPassManagerRef PM)) \
613 macro(void, AddLoopUnrollPass, (LLVMPassManagerRef PM)) \
614 macro(void, AddLoopUnswitchPass, (LLVMPassManagerRef PM)) \
615 macro(void, AddMemCpyOptPass, (LLVMPassManagerRef PM)) \
616 macro(void, AddPartiallyInlineLibCallsPass, (LLVMPassManagerRef PM)) \
617 macro(void, AddPromoteMemoryToRegisterPass, (LLVMPassManagerRef PM)) \
618 macro(void, AddReassociatePass, (LLVMPassManagerRef PM)) \
619 macro(void, AddSCCPPass, (LLVMPassManagerRef PM)) \
620 macro(void, AddScalarReplAggregatesPass, (LLVMPassManagerRef PM)) \
621 macro(void, AddScalarReplAggregatesPassSSA, (LLVMPassManagerRef PM)) \
622 macro(void, AddScalarReplAggregatesPassWithThreshold, (LLVMPassManagerRef PM, int Threshold)) \
623 macro(void, AddSimplifyLibCallsPass, (LLVMPassManagerRef PM)) \
624 macro(void, AddTailCallEliminationPass, (LLVMPassManagerRef PM)) \
625 macro(void, AddConstantPropagationPass, (LLVMPassManagerRef PM)) \
626 macro(void, AddDemoteMemoryToRegisterPass, (LLVMPassManagerRef PM)) \
627 macro(void, AddVerifierPass, (LLVMPassManagerRef PM)) \
628 macro(void, AddCorrelatedValuePropagationPass, (LLVMPassManagerRef PM)) \
629 macro(void, AddEarlyCSEPass, (LLVMPassManagerRef PM)) \
630 macro(void, AddLowerExpectIntrinsicPass, (LLVMPassManagerRef PM)) \
631 macro(void, AddTypeBasedAliasAnalysisPass, (LLVMPassManagerRef PM)) \
632 macro(void, AddBasicAliasAnalysisPass, (LLVMPassManagerRef PM))
633
634 #endif // LLVMAPIFunctions_h
635