9ff2a427869e844f8d5fa5960b2f7ea7d30288cb
[WebKit-https.git] / Source / JavaScriptCore / 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, LinkInJIT, (void)) \
547     macro(void, LinkInMCJIT, (void)) \
548     macro(void, LinkInInterpreter, (void)) \
549     macro(LLVMGenericValueRef, CreateGenericValueOfInt, (LLVMTypeRef Ty, unsigned long long N, LLVMBool IsSigned)) \
550     macro(LLVMGenericValueRef, CreateGenericValueOfPointer, (void *P)) \
551     macro(LLVMGenericValueRef, CreateGenericValueOfFloat, (LLVMTypeRef Ty, double N)) \
552     macro(unsigned, GenericValueIntWidth, (LLVMGenericValueRef GenValRef)) \
553     macro(unsigned long long, GenericValueToInt, (LLVMGenericValueRef GenVal, LLVMBool IsSigned)) \
554     macro(void *, GenericValueToPointer, (LLVMGenericValueRef GenVal)) \
555     macro(double, GenericValueToFloat, (LLVMTypeRef TyRef, LLVMGenericValueRef GenVal)) \
556     macro(void, DisposeGenericValue, (LLVMGenericValueRef GenVal)) \
557     macro(LLVMBool, CreateExecutionEngineForModule, (LLVMExecutionEngineRef *OutEE, LLVMModuleRef M, char **OutError)) \
558     macro(LLVMBool, CreateInterpreterForModule, (LLVMExecutionEngineRef *OutInterp, LLVMModuleRef M, char **OutError)) \
559     macro(LLVMBool, CreateJITCompilerForModule, (LLVMExecutionEngineRef *OutJIT, LLVMModuleRef M, unsigned OptLevel, char **OutError)) \
560     macro(void, InitializeMCJITCompilerOptions, (struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions)) \
561     macro(LLVMBool, CreateMCJITCompilerForModule, (LLVMExecutionEngineRef *OutJIT, LLVMModuleRef M, struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions, char **OutError)) \
562     macro(LLVMBool, CreateExecutionEngine, (LLVMExecutionEngineRef *OutEE, LLVMModuleProviderRef MP, char **OutError)) \
563     macro(LLVMBool, CreateInterpreter, (LLVMExecutionEngineRef *OutInterp, LLVMModuleProviderRef MP, char **OutError)) \
564     macro(LLVMBool, CreateJITCompiler, (LLVMExecutionEngineRef *OutJIT, LLVMModuleProviderRef MP, unsigned OptLevel, char **OutError)) \
565     macro(void, DisposeExecutionEngine, (LLVMExecutionEngineRef EE)) \
566     macro(void, RunStaticConstructors, (LLVMExecutionEngineRef EE)) \
567     macro(void, RunStaticDestructors, (LLVMExecutionEngineRef EE)) \
568     macro(int, RunFunctionAsMain, (LLVMExecutionEngineRef EE, LLVMValueRef F, unsigned ArgC, const char * const *ArgV, const char * const *EnvP)) \
569     macro(LLVMGenericValueRef, RunFunction, (LLVMExecutionEngineRef EE, LLVMValueRef F, unsigned NumArgs, LLVMGenericValueRef *Args)) \
570     macro(void, FreeMachineCodeForFunction, (LLVMExecutionEngineRef EE, LLVMValueRef F)) \
571     macro(void, AddModule, (LLVMExecutionEngineRef EE, LLVMModuleRef M)) \
572     macro(void, AddModuleProvider, (LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP)) \
573     macro(LLVMBool, RemoveModule, (LLVMExecutionEngineRef EE, LLVMModuleRef M, LLVMModuleRef *OutMod, char **OutError)) \
574     macro(LLVMBool, RemoveModuleProvider, (LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP, LLVMModuleRef *OutMod, char **OutError)) \
575     macro(LLVMBool, FindFunction, (LLVMExecutionEngineRef EE, const char *Name, LLVMValueRef *OutFn)) \
576     macro(void *, RecompileAndRelinkFunction, (LLVMExecutionEngineRef EE, LLVMValueRef Fn)) \
577     macro(LLVMTargetDataRef, GetExecutionEngineTargetData, (LLVMExecutionEngineRef EE)) \
578     macro(void, AddGlobalMapping, (LLVMExecutionEngineRef EE, LLVMValueRef Global, void* Addr)) \
579     macro(void *, GetPointerToGlobal, (LLVMExecutionEngineRef EE, LLVMValueRef Global)) \
580     macro(LLVMMCJITMemoryManagerRef, CreateSimpleMCJITMemoryManager, (void *Opaque, LLVMMemoryManagerAllocateCodeSectionCallback AllocateCodeSection, LLVMMemoryManagerAllocateDataSectionCallback AllocateDataSection, LLVMMemoryManagerFinalizeMemoryCallback FinalizeMemory, LLVMMemoryManagerDestroyCallback Destory)) \
581     macro(void, DisposeMCJITMemoryManager, (LLVMMCJITMemoryManagerRef MM)) \
582     macro(LLVMBool, VerifyModule, (LLVMModuleRef M, LLVMVerifierFailureAction Action, char **OutMessage)) \
583     macro(LLVMBool, VerifyFunction, (LLVMValueRef Fn, LLVMVerifierFailureAction Action)) \
584     macro(void, ViewFunctionCFG, (LLVMValueRef Fn)) \
585     macro(void, ViewFunctionCFGOnly, (LLVMValueRef Fn)) \
586     macro(LLVMDisasmContextRef, CreateDisasm, (const char *TripleName, void *DisInfo, int TagType, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp)) \
587     macro(LLVMDisasmContextRef, CreateDisasmCPU, (const char *Triple, const char *CPU, void *DisInfo, int TagType, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp)) \
588     macro(int, SetDisasmOptions, (LLVMDisasmContextRef DC, uint64_t Options)) \
589     macro(void, DisasmDispose, (LLVMDisasmContextRef DC)) \
590     macro(size_t, DisasmInstruction, (LLVMDisasmContextRef DC, uint8_t *Bytes, uint64_t BytesSize, uint64_t PC, char *OutString, size_t OutStringSize)) \
591     macro(unsigned, PointerSizeForAS, (LLVMTargetDataRef, unsigned AS)) \
592     macro(LLVMTypeRef, IntPtrTypeForAS, (LLVMTargetDataRef, unsigned AS)) \
593     macro(LLVMPassManagerBuilderRef, PassManagerBuilderCreate, (void)) \
594     macro(void, PassManagerBuilderDispose, (LLVMPassManagerBuilderRef PMB)) \
595     macro(void, PassManagerBuilderSetOptLevel, (LLVMPassManagerBuilderRef PMB, unsigned OptLevel)) \
596     macro(void, PassManagerBuilderSetSizeLevel, (LLVMPassManagerBuilderRef PMB, unsigned SizeLevel)) \
597     macro(void, PassManagerBuilderSetDisableUnitAtATime, (LLVMPassManagerBuilderRef PMB, LLVMBool Value)) \
598     macro(void, PassManagerBuilderSetDisableUnrollLoops, (LLVMPassManagerBuilderRef PMB, LLVMBool Value)) \
599     macro(void, PassManagerBuilderSetDisableSimplifyLibCalls, (LLVMPassManagerBuilderRef PMB, LLVMBool Value)) \
600     macro(void, PassManagerBuilderUseInlinerWithThreshold, (LLVMPassManagerBuilderRef PMB, unsigned Threshold)) \
601     macro(void, PassManagerBuilderPopulateFunctionPassManager, (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM)) \
602     macro(void, PassManagerBuilderPopulateModulePassManager, (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM)) \
603     macro(void, PassManagerBuilderPopulateLTOPassManager, (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM, LLVMBool Internalize, LLVMBool RunInliner)) \
604     macro(void, AddAggressiveDCEPass, (LLVMPassManagerRef PM)) \
605     macro(void, AddCFGSimplificationPass, (LLVMPassManagerRef PM)) \
606     macro(void, AddDeadStoreEliminationPass, (LLVMPassManagerRef PM)) \
607     macro(void, AddGVNPass, (LLVMPassManagerRef PM)) \
608     macro(void, AddIndVarSimplifyPass, (LLVMPassManagerRef PM)) \
609     macro(void, AddInstructionCombiningPass, (LLVMPassManagerRef PM)) \
610     macro(void, AddJumpThreadingPass, (LLVMPassManagerRef PM)) \
611     macro(void, AddLICMPass, (LLVMPassManagerRef PM)) \
612     macro(void, AddLoopDeletionPass, (LLVMPassManagerRef PM)) \
613     macro(void, AddLoopIdiomPass, (LLVMPassManagerRef PM)) \
614     macro(void, AddLoopRotatePass, (LLVMPassManagerRef PM)) \
615     macro(void, AddLoopUnrollPass, (LLVMPassManagerRef PM)) \
616     macro(void, AddLoopUnswitchPass, (LLVMPassManagerRef PM)) \
617     macro(void, AddMemCpyOptPass, (LLVMPassManagerRef PM)) \
618     macro(void, AddPartiallyInlineLibCallsPass, (LLVMPassManagerRef PM)) \
619     macro(void, AddPromoteMemoryToRegisterPass, (LLVMPassManagerRef PM)) \
620     macro(void, AddReassociatePass, (LLVMPassManagerRef PM)) \
621     macro(void, AddSCCPPass, (LLVMPassManagerRef PM)) \
622     macro(void, AddScalarReplAggregatesPass, (LLVMPassManagerRef PM)) \
623     macro(void, AddScalarReplAggregatesPassSSA, (LLVMPassManagerRef PM)) \
624     macro(void, AddScalarReplAggregatesPassWithThreshold, (LLVMPassManagerRef PM, int Threshold)) \
625     macro(void, AddSimplifyLibCallsPass, (LLVMPassManagerRef PM)) \
626     macro(void, AddTailCallEliminationPass, (LLVMPassManagerRef PM)) \
627     macro(void, AddConstantPropagationPass, (LLVMPassManagerRef PM)) \
628     macro(void, AddDemoteMemoryToRegisterPass, (LLVMPassManagerRef PM)) \
629     macro(void, AddVerifierPass, (LLVMPassManagerRef PM)) \
630     macro(void, AddCorrelatedValuePropagationPass, (LLVMPassManagerRef PM)) \
631     macro(void, AddEarlyCSEPass, (LLVMPassManagerRef PM)) \
632     macro(void, AddLowerExpectIntrinsicPass, (LLVMPassManagerRef PM)) \
633     macro(void, AddTypeBasedAliasAnalysisPass, (LLVMPassManagerRef PM)) \
634     macro(void, AddBasicAliasAnalysisPass, (LLVMPassManagerRef PM))
635
636 #endif // LLVMAPIFunctions_h
637