1 USING: alien.libraries alien.syntax ;
7 "LLVMSystem" "/usr/local/lib/libLLVMSystem.dylib" "cdecl" add-library
9 "LLVMSupport" "/usr/local/lib/libLLVMSupport.dylib" "cdecl" add-library
11 "LLVMCore" "/usr/local/lib/libLLVMCore.dylib" "cdecl" add-library
19 TYPEDEF: uint unsigned
20 TYPEDEF: unsigned enum
22 CONSTANT: LLVMZExtAttribute BIN: 1
23 CONSTANT: LLVMSExtAttribute BIN: 10
24 CONSTANT: LLVMNoReturnAttribute BIN: 100
25 CONSTANT: LLVMInRegAttribute BIN: 1000
26 CONSTANT: LLVMStructRetAttribute BIN: 10000
27 CONSTANT: LLVMNoUnwindAttribute BIN: 100000
28 CONSTANT: LLVMNoAliasAttribute BIN: 1000000
29 CONSTANT: LLVMByValAttribute BIN: 10000000
30 CONSTANT: LLVMNestAttribute BIN: 100000000
31 CONSTANT: LLVMReadNoneAttribute BIN: 1000000000
32 CONSTANT: LLVMReadOnlyAttribute BIN: 10000000000
33 TYPEDEF: enum LLVMAttribute;
50 TYPEDEF: enum LLVMTypeKind
60 LLVMExternalWeakLinkage
62 TYPEDEF: enum LLVMLinkage
67 LLVMProtectedVisibility ;
68 TYPEDEF: enum LLVMVisibility
70 CONSTANT: LLVMCCallConv 0
71 CONSTANT: LLVMFastCallConv 8
72 CONSTANT: LLVMColdCallConv 9
73 CONSTANT: LLVMX86StdcallCallConv 64
74 CONSTANT: LLVMX86FastcallCallConv 65
75 TYPEDEF: enum LLVMCallConv
77 CONSTANT: LLVMIntEQ 32
78 CONSTANT: LLVMIntNE 33
79 CONSTANT: LLVMIntUGT 34
80 CONSTANT: LLVMIntUGE 35
81 CONSTANT: LLVMIntULT 36
82 CONSTANT: LLVMIntULE 37
83 CONSTANT: LLVMIntSGT 38
84 CONSTANT: LLVMIntSGE 39
85 CONSTANT: LLVMIntSLT 40
86 CONSTANT: LLVMIntSLE 41
87 TYPEDEF: enum LLVMIntPredicate
90 LLVMRealPredicateFalse
105 LLVMRealPredicateTrue ;
106 TYPEDEF: enum LLVMRealPredicate
110 TYPEDEF: void* LLVMModuleRef
112 TYPEDEF: void* LLVMPassManagerRef
114 TYPEDEF: void* LLVMModuleProviderRef
116 TYPEDEF: void* LLVMTypeRef
118 TYPEDEF: void* LLVMTypeHandleRef
120 TYPEDEF: void* LLVMValueRef
122 TYPEDEF: void* LLVMBasicBlockRef
124 TYPEDEF: void* LLVMBuilderRef
128 FUNCTION: void LLVMDisposeMessage ( char *Message ) ;
130 FUNCTION: LLVMModuleRef LLVMModuleCreateWithName ( char* ModuleID ) ;
132 FUNCTION: int LLVMAddTypeName ( LLVMModuleRef M, char* Name, LLVMTypeRef Ty ) ;
134 FUNCTION: void LLVMDisposeModule ( LLVMModuleRef M ) ;
136 FUNCTION: void LLVMDumpModule ( LLVMModuleRef M ) ;
138 FUNCTION: LLVMModuleProviderRef
139 LLVMCreateModuleProviderForExistingModule ( LLVMModuleRef M ) ;
141 FUNCTION: void LLVMDisposeModuleProvider ( LLVMModuleProviderRef MP ) ;
145 ! LLVM types conform to the following hierarchy:
159 ! See llvm::LLVMTypeKind::getTypeID.
160 FUNCTION: LLVMTypeKind LLVMGetTypeKind ( LLVMTypeRef Ty ) ;
162 ! Operations on integer types
163 FUNCTION: LLVMTypeRef LLVMInt1Type ( ) ;
164 FUNCTION: LLVMTypeRef LLVMInt8Type ( ) ;
165 FUNCTION: LLVMTypeRef LLVMInt16Type ( ) ;
166 FUNCTION: LLVMTypeRef LLVMInt32Type ( ) ;
167 FUNCTION: LLVMTypeRef LLVMInt64Type ( ) ;
168 FUNCTION: LLVMTypeRef LLVMIntType ( unsigned NumBits ) ;
169 FUNCTION: unsigned LLVMGetIntTypeWidth ( LLVMTypeRef IntegerTy ) ;
171 ! Operations on real types
172 FUNCTION: LLVMTypeRef LLVMFloatType ( ) ;
173 FUNCTION: LLVMTypeRef LLVMDoubleType ( ) ;
174 FUNCTION: LLVMTypeRef LLVMX86FP80Type ( ) ;
175 FUNCTION: LLVMTypeRef LLVMFP128Type ( ) ;
176 FUNCTION: LLVMTypeRef LLVMPPCFP128Type ( ) ;
178 ! Operations on function types
179 FUNCTION: LLVMTypeRef
180 LLVMFunctionType ( LLVMTypeRef ReturnType, LLVMTypeRef* ParamTypes, unsigned ParamCount, int IsVarArg ) ;
181 FUNCTION: int LLVMIsFunctionVarArg ( LLVMTypeRef FunctionTy ) ;
182 FUNCTION: LLVMTypeRef LLVMGetReturnType ( LLVMTypeRef FunctionTy ) ;
183 FUNCTION: unsigned LLVMCountParamTypes ( LLVMTypeRef FunctionTy ) ;
184 FUNCTION: void LLVMGetParamTypes ( LLVMTypeRef FunctionTy, LLVMTypeRef* Dest ) ;
186 ! Operations on struct types
187 FUNCTION: LLVMTypeRef
188 LLVMStructType ( LLVMTypeRef* ElementTypes, unsigned ElementCount, int Packed ) ;
189 FUNCTION: unsigned LLVMCountStructElementTypes ( LLVMTypeRef StructTy ) ;
190 FUNCTION: void LLVMGetStructElementTypes ( LLVMTypeRef StructTy, LLVMTypeRef* Dest ) ;
191 FUNCTION: int LLVMIsPackedStruct ( LLVMTypeRef StructTy ) ;
193 ! Operations on array, pointer, and vector types (sequence types)
194 FUNCTION: LLVMTypeRef LLVMArrayType ( LLVMTypeRef ElementType, unsigned ElementCount ) ;
195 FUNCTION: LLVMTypeRef LLVMPointerType ( LLVMTypeRef ElementType, unsigned AddressSpace ) ;
196 FUNCTION: LLVMTypeRef LLVMVectorType ( LLVMTypeRef ElementType, unsigned ElementCount ) ;
198 FUNCTION: LLVMTypeRef LLVMGetElementType ( LLVMTypeRef Ty ) ;
199 FUNCTION: unsigned LLVMGetArrayLength ( LLVMTypeRef ArrayTy ) ;
200 FUNCTION: unsigned LLVMGetPointerAddressSpace ( LLVMTypeRef PointerTy ) ;
201 FUNCTION: unsigned LLVMGetVectorSize ( LLVMTypeRef VectorTy ) ;
203 ! Operations on other types
204 FUNCTION: LLVMTypeRef LLVMVoidType ( ) ;
205 FUNCTION: LLVMTypeRef LLVMLabelType ( ) ;
206 FUNCTION: LLVMTypeRef LLVMOpaqueType ( ) ;
208 ! Operations on type handles
209 FUNCTION: LLVMTypeHandleRef LLVMCreateTypeHandle ( LLVMTypeRef PotentiallyAbstractTy ) ;
210 FUNCTION: void LLVMRefineType ( LLVMTypeRef AbstractTy, LLVMTypeRef ConcreteTy ) ;
211 FUNCTION: LLVMTypeRef LLVMResolveTypeHandle ( LLVMTypeHandleRef TypeHandle ) ;
212 FUNCTION: void LLVMDisposeTypeHandle ( LLVMTypeHandleRef TypeHandle ) ;
216 FUNCTION: unsigned LLVMCountParams ( LLVMValueRef Fn ) ;
218 FUNCTION: void LLVMGetParams ( LLVMValueRef Fn, LLVMValueRef* Params ) ;
220 FUNCTION: LLVMValueRef
221 LLVMAddFunction ( LLVMModuleRef M, char* Name, LLVMTypeRef FunctionTy ) ;
223 FUNCTION: unsigned LLVMGetFunctionCallConv ( LLVMValueRef Fn ) ;
225 FUNCTION: void LLVMSetFunctionCallConv ( LLVMValueRef Fn, unsigned CC ) ;
227 FUNCTION: LLVMBasicBlockRef
228 LLVMAppendBasicBlock ( LLVMValueRef Fn, char* Name ) ;
230 FUNCTION: LLVMValueRef LLVMGetBasicBlockParent ( LLVMBasicBlockRef BB ) ;
234 FUNCTION: LLVMTypeRef LLVMTypeOf ( LLVMValueRef Val ) ;
235 FUNCTION: char* LLVMGetValueName ( LLVMValueRef Val ) ;
236 FUNCTION: void LLVMSetValueName ( LLVMValueRef Val, char* Name ) ;
237 FUNCTION: void LLVMDumpValue ( LLVMValueRef Val ) ;
239 ! Instruction Builders
241 FUNCTION: LLVMBuilderRef LLVMCreateBuilder ( ) ;
242 FUNCTION: void LLVMPositionBuilder
243 ( LLVMBuilderRef Builder, LLVMBasicBlockRef Block, LLVMValueRef Instr ) ;
244 FUNCTION: void LLVMPositionBuilderBefore
245 ( LLVMBuilderRef Builder, LLVMValueRef Instr ) ;
246 FUNCTION: void LLVMPositionBuilderAtEnd
247 ( LLVMBuilderRef Builder, LLVMBasicBlockRef Block ) ;
248 FUNCTION: LLVMBasicBlockRef LLVMGetInsertBlock
249 ( LLVMBuilderRef Builder ) ;
250 FUNCTION: void LLVMClearInsertionPosition
251 ( LLVMBuilderRef Builder ) ;
252 FUNCTION: void LLVMInsertIntoBuilder
253 ( LLVMBuilderRef Builder, LLVMValueRef Instr ) ;
254 FUNCTION: void LLVMDisposeBuilder
255 ( LLVMBuilderRef Builder ) ;
259 FUNCTION: LLVMValueRef LLVMBuildRetVoid
260 ( LLVMBuilderRef Builder ) ;
261 FUNCTION: LLVMValueRef LLVMBuildRet
262 ( LLVMBuilderRef Builder, LLVMValueRef V ) ;
263 FUNCTION: LLVMValueRef LLVMBuildBr
264 ( LLVMBuilderRef Builder, LLVMBasicBlockRef Dest ) ;
265 FUNCTION: LLVMValueRef LLVMBuildCondBr
266 ( LLVMBuilderRef Builder, LLVMValueRef If, LLVMBasicBlockRef Then, LLVMBasicBlockRef Else ) ;
267 FUNCTION: LLVMValueRef LLVMBuildSwitch
268 ( LLVMBuilderRef Builder, LLVMValueRef V, LLVMBasicBlockRef Else, unsigned NumCases ) ;
269 FUNCTION: LLVMValueRef LLVMBuildInvoke
270 ( LLVMBuilderRef Builder, LLVMValueRef Fn, LLVMValueRef* Args, unsigned NumArgs,
271 LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, char* Name ) ;
272 FUNCTION: LLVMValueRef LLVMBuildUnwind
273 ( LLVMBuilderRef Builder ) ;
274 FUNCTION: LLVMValueRef LLVMBuildUnreachable
275 ( LLVMBuilderRef Builder ) ;
277 ! IB Add Case to Switch
279 FUNCTION: void LLVMAddCase
280 ( LLVMValueRef Switch, LLVMValueRef OnVal, LLVMBasicBlockRef Dest ) ;
284 FUNCTION: LLVMValueRef LLVMBuildAdd
285 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
286 FUNCTION: LLVMValueRef LLVMBuildSub
287 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
288 FUNCTION: LLVMValueRef LLVMBuildMul
289 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
290 FUNCTION: LLVMValueRef LLVMBuildUDiv
291 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
292 FUNCTION: LLVMValueRef LLVMBuildSDiv
293 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
294 FUNCTION: LLVMValueRef LLVMBuildFDiv
295 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
296 FUNCTION: LLVMValueRef LLVMBuildURem
297 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
298 FUNCTION: LLVMValueRef LLVMBuildSRem
299 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
300 FUNCTION: LLVMValueRef LLVMBuildFRem
301 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
302 FUNCTION: LLVMValueRef LLVMBuildShl
303 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
304 FUNCTION: LLVMValueRef LLVMBuildLShr
305 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
306 FUNCTION: LLVMValueRef LLVMBuildAShr
307 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
308 FUNCTION: LLVMValueRef LLVMBuildAnd
309 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
310 FUNCTION: LLVMValueRef LLVMBuildOr
311 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
312 FUNCTION: LLVMValueRef LLVMBuildXor
313 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
314 FUNCTION: LLVMValueRef LLVMBuildNeg
315 ( LLVMBuilderRef Builder, LLVMValueRef V, char* Name ) ;
316 FUNCTION: LLVMValueRef LLVMBuildNot
317 ( LLVMBuilderRef Builder, LLVMValueRef V, char* Name ) ;
321 FUNCTION: LLVMValueRef LLVMBuildMalloc
322 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, char* Name ) ;
323 FUNCTION: LLVMValueRef LLVMBuildArrayMalloc
324 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, LLVMValueRef Val, char* Name ) ;
325 FUNCTION: LLVMValueRef LLVMBuildAlloca
326 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, char* Name ) ;
327 FUNCTION: LLVMValueRef LLVMBuildArrayAlloca
328 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, LLVMValueRef Val, char* Name ) ;
329 FUNCTION: LLVMValueRef LLVMBuildFree
330 ( LLVMBuilderRef Builder, LLVMValueRef PointerVal ) ;
331 FUNCTION: LLVMValueRef LLVMBuildLoad
332 ( LLVMBuilderRef Builder, LLVMValueRef PointerVal, char* Name ) ;
333 FUNCTION: LLVMValueRef LLVMBuildStore
334 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMValueRef Ptr ) ;
335 FUNCTION: LLVMValueRef LLVMBuildGEP
336 ( LLVMBuilderRef B, LLVMValueRef Pointer, LLVMValueRef* Indices,
337 unsigned NumIndices, char* Name ) ;
341 FUNCTION: LLVMValueRef LLVMBuildTrunc
342 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
343 FUNCTION: LLVMValueRef LLVMBuildZExt
344 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
345 FUNCTION: LLVMValueRef LLVMBuildSExt
346 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
347 FUNCTION: LLVMValueRef LLVMBuildFPToUI
348 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
349 FUNCTION: LLVMValueRef LLVMBuildFPToSI
350 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
351 FUNCTION: LLVMValueRef LLVMBuildUIToFP
352 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
353 FUNCTION: LLVMValueRef LLVMBuildSIToFP
354 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
355 FUNCTION: LLVMValueRef LLVMBuildFPTrunc
356 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
357 FUNCTION: LLVMValueRef LLVMBuildFPExt
358 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
359 FUNCTION: LLVMValueRef LLVMBuildPtrToInt
360 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
361 FUNCTION: LLVMValueRef LLVMBuildIntToPtr
362 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
363 FUNCTION: LLVMValueRef LLVMBuildBitCast
364 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
368 FUNCTION: LLVMValueRef LLVMBuildICmp
369 ( LLVMBuilderRef Builder, LLVMIntPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
370 FUNCTION: LLVMValueRef LLVMBuildFCmp
371 ( LLVMBuilderRef Builder, LLVMRealPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
373 ! IB Misc Instructions
375 FUNCTION: LLVMValueRef LLVMBuildPhi
376 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, char* Name ) ;
377 FUNCTION: LLVMValueRef LLVMBuildCall
378 ( LLVMBuilderRef Builder, LLVMValueRef Fn, LLVMValueRef* Args, unsigned NumArgs, char* Name ) ;
379 FUNCTION: LLVMValueRef LLVMBuildSelect
380 ( LLVMBuilderRef Builder, LLVMValueRef If, LLVMValueRef Then, LLVMValueRef Else, char* Name ) ;
381 FUNCTION: LLVMValueRef LLVMBuildVAArg
382 ( LLVMBuilderRef Builder, LLVMValueRef List, LLVMTypeRef Ty, char* Name ) ;
383 FUNCTION: LLVMValueRef LLVMBuildExtractElement
384 ( LLVMBuilderRef Builder, LLVMValueRef VecVal, LLVMValueRef Index, char* Name ) ;
385 FUNCTION: LLVMValueRef LLVMBuildInsertElement
386 ( LLVMBuilderRef Builder, LLVMValueRef VecVal, LLVMValueRef EltVal, LLVMValueRef Index, char* Name ) ;
387 FUNCTION: LLVMValueRef LLVMBuildShuffleVector
388 ( LLVMBuilderRef Builder, LLVMValueRef V1, LLVMValueRef V2, LLVMValueRef Mask, char* Name ) ;
389 FUNCTION: LLVMValueRef LLVMBuildExtractValue
390 ( LLVMBuilderRef Builder, LLVMValueRef AggVal, unsigned Index, char* Name ) ;
391 FUNCTION: LLVMValueRef LLVMBuildInsertValue
392 ( LLVMBuilderRef Builder, LLVMValueRef AggVal, LLVMValueRef EltVal, unsigned Index, char* Name ) ;