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;
51 TYPEDEF: enum LLVMTypeKind
61 LLVMExternalWeakLinkage
63 TYPEDEF: enum LLVMLinkage
68 LLVMProtectedVisibility ;
69 TYPEDEF: enum LLVMVisibility
71 CONSTANT: LLVMCCallConv 0
72 CONSTANT: LLVMFastCallConv 8
73 CONSTANT: LLVMColdCallConv 9
74 CONSTANT: LLVMX86StdcallCallConv 64
75 CONSTANT: LLVMX86FastcallCallConv 65
76 TYPEDEF: enum LLVMCallConv
78 CONSTANT: LLVMIntEQ 32
79 CONSTANT: LLVMIntNE 33
80 CONSTANT: LLVMIntUGT 34
81 CONSTANT: LLVMIntUGE 35
82 CONSTANT: LLVMIntULT 36
83 CONSTANT: LLVMIntULE 37
84 CONSTANT: LLVMIntSGT 38
85 CONSTANT: LLVMIntSGE 39
86 CONSTANT: LLVMIntSLT 40
87 CONSTANT: LLVMIntSLE 41
88 TYPEDEF: enum LLVMIntPredicate
91 LLVMRealPredicateFalse
106 LLVMRealPredicateTrue ;
107 TYPEDEF: enum LLVMRealPredicate
111 TYPEDEF: void* LLVMModuleRef
113 TYPEDEF: void* LLVMPassManagerRef
115 TYPEDEF: void* LLVMModuleProviderRef
117 TYPEDEF: void* LLVMTypeRef
119 TYPEDEF: void* LLVMTypeHandleRef
121 TYPEDEF: void* LLVMValueRef
123 TYPEDEF: void* LLVMBasicBlockRef
125 TYPEDEF: void* LLVMBuilderRef
129 FUNCTION: void LLVMDisposeMessage ( char *Message ) ;
131 FUNCTION: LLVMModuleRef LLVMModuleCreateWithName ( char* ModuleID ) ;
133 FUNCTION: int LLVMAddTypeName ( LLVMModuleRef M, char* Name, LLVMTypeRef Ty ) ;
135 FUNCTION: void LLVMDisposeModule ( LLVMModuleRef M ) ;
137 FUNCTION: void LLVMDumpModule ( LLVMModuleRef M ) ;
139 FUNCTION: LLVMModuleProviderRef
140 LLVMCreateModuleProviderForExistingModule ( LLVMModuleRef M ) ;
142 FUNCTION: void LLVMDisposeModuleProvider ( LLVMModuleProviderRef MP ) ;
146 ! LLVM types conform to the following hierarchy:
160 ! See llvm::LLVMTypeKind::getTypeID.
161 FUNCTION: LLVMTypeKind LLVMGetTypeKind ( LLVMTypeRef Ty ) ;
163 ! Operations on integer types
164 FUNCTION: LLVMTypeRef LLVMInt1Type ( ) ;
165 FUNCTION: LLVMTypeRef LLVMInt8Type ( ) ;
166 FUNCTION: LLVMTypeRef LLVMInt16Type ( ) ;
167 FUNCTION: LLVMTypeRef LLVMInt32Type ( ) ;
168 FUNCTION: LLVMTypeRef LLVMInt64Type ( ) ;
169 FUNCTION: LLVMTypeRef LLVMIntType ( unsigned NumBits ) ;
170 FUNCTION: unsigned LLVMGetIntTypeWidth ( LLVMTypeRef IntegerTy ) ;
172 ! Operations on real types
173 FUNCTION: LLVMTypeRef LLVMFloatType ( ) ;
174 FUNCTION: LLVMTypeRef LLVMDoubleType ( ) ;
175 FUNCTION: LLVMTypeRef LLVMX86FP80Type ( ) ;
176 FUNCTION: LLVMTypeRef LLVMFP128Type ( ) ;
177 FUNCTION: LLVMTypeRef LLVMPPCFP128Type ( ) ;
179 ! Operations on function types
180 FUNCTION: LLVMTypeRef
181 LLVMFunctionType ( LLVMTypeRef ReturnType, LLVMTypeRef* ParamTypes, unsigned ParamCount, int IsVarArg ) ;
182 FUNCTION: int LLVMIsFunctionVarArg ( LLVMTypeRef FunctionTy ) ;
183 FUNCTION: LLVMTypeRef LLVMGetReturnType ( LLVMTypeRef FunctionTy ) ;
184 FUNCTION: unsigned LLVMCountParamTypes ( LLVMTypeRef FunctionTy ) ;
185 FUNCTION: void LLVMGetParamTypes ( LLVMTypeRef FunctionTy, LLVMTypeRef* Dest ) ;
187 ! Operations on struct types
188 FUNCTION: LLVMTypeRef
189 LLVMStructType ( LLVMTypeRef* ElementTypes, unsigned ElementCount, int Packed ) ;
190 FUNCTION: unsigned LLVMCountStructElementTypes ( LLVMTypeRef StructTy ) ;
191 FUNCTION: void LLVMGetStructElementTypes ( LLVMTypeRef StructTy, LLVMTypeRef* Dest ) ;
192 FUNCTION: int LLVMIsPackedStruct ( LLVMTypeRef StructTy ) ;
194 ! Operations on array, pointer, and vector types (sequence types)
195 FUNCTION: LLVMTypeRef LLVMArrayType ( LLVMTypeRef ElementType, unsigned ElementCount ) ;
196 FUNCTION: LLVMTypeRef LLVMPointerType ( LLVMTypeRef ElementType, unsigned AddressSpace ) ;
197 FUNCTION: LLVMTypeRef LLVMVectorType ( LLVMTypeRef ElementType, unsigned ElementCount ) ;
199 FUNCTION: LLVMTypeRef LLVMGetElementType ( LLVMTypeRef Ty ) ;
200 FUNCTION: unsigned LLVMGetArrayLength ( LLVMTypeRef ArrayTy ) ;
201 FUNCTION: unsigned LLVMGetPointerAddressSpace ( LLVMTypeRef PointerTy ) ;
202 FUNCTION: unsigned LLVMGetVectorSize ( LLVMTypeRef VectorTy ) ;
204 ! Operations on other types
205 FUNCTION: LLVMTypeRef LLVMVoidType ( ) ;
206 FUNCTION: LLVMTypeRef LLVMLabelType ( ) ;
207 FUNCTION: LLVMTypeRef LLVMOpaqueType ( ) ;
209 ! Operations on type handles
210 FUNCTION: LLVMTypeHandleRef LLVMCreateTypeHandle ( LLVMTypeRef PotentiallyAbstractTy ) ;
211 FUNCTION: void LLVMRefineType ( LLVMTypeRef AbstractTy, LLVMTypeRef ConcreteTy ) ;
212 FUNCTION: LLVMTypeRef LLVMResolveTypeHandle ( LLVMTypeHandleRef TypeHandle ) ;
213 FUNCTION: void LLVMDisposeTypeHandle ( LLVMTypeHandleRef TypeHandle ) ;
217 FUNCTION: unsigned LLVMCountParams ( LLVMValueRef Fn ) ;
219 FUNCTION: void LLVMGetParams ( LLVMValueRef Fn, LLVMValueRef* Params ) ;
221 FUNCTION: LLVMValueRef
222 LLVMAddFunction ( LLVMModuleRef M, char* Name, LLVMTypeRef FunctionTy ) ;
224 FUNCTION: LLVMValueRef LLVMGetFirstFunction ( LLVMModuleRef M ) ;
226 FUNCTION: LLVMValueRef LLVMGetNextFunction ( LLVMValueRef Fn ) ;
228 FUNCTION: unsigned LLVMGetFunctionCallConv ( LLVMValueRef Fn ) ;
230 FUNCTION: void LLVMSetFunctionCallConv ( LLVMValueRef Fn, unsigned CC ) ;
232 FUNCTION: LLVMBasicBlockRef
233 LLVMAppendBasicBlock ( LLVMValueRef Fn, char* Name ) ;
235 FUNCTION: LLVMValueRef LLVMGetBasicBlockParent ( LLVMBasicBlockRef BB ) ;
239 FUNCTION: LLVMTypeRef LLVMTypeOf ( LLVMValueRef Val ) ;
240 FUNCTION: char* LLVMGetValueName ( LLVMValueRef Val ) ;
241 FUNCTION: void LLVMSetValueName ( LLVMValueRef Val, char* Name ) ;
242 FUNCTION: void LLVMDumpValue ( LLVMValueRef Val ) ;
244 ! Instruction Builders
246 FUNCTION: LLVMBuilderRef LLVMCreateBuilder ( ) ;
247 FUNCTION: void LLVMPositionBuilder
248 ( LLVMBuilderRef Builder, LLVMBasicBlockRef Block, LLVMValueRef Instr ) ;
249 FUNCTION: void LLVMPositionBuilderBefore
250 ( LLVMBuilderRef Builder, LLVMValueRef Instr ) ;
251 FUNCTION: void LLVMPositionBuilderAtEnd
252 ( LLVMBuilderRef Builder, LLVMBasicBlockRef Block ) ;
253 FUNCTION: LLVMBasicBlockRef LLVMGetInsertBlock
254 ( LLVMBuilderRef Builder ) ;
255 FUNCTION: void LLVMClearInsertionPosition
256 ( LLVMBuilderRef Builder ) ;
257 FUNCTION: void LLVMInsertIntoBuilder
258 ( LLVMBuilderRef Builder, LLVMValueRef Instr ) ;
259 FUNCTION: void LLVMDisposeBuilder
260 ( LLVMBuilderRef Builder ) ;
264 FUNCTION: LLVMValueRef LLVMBuildRetVoid
265 ( LLVMBuilderRef Builder ) ;
266 FUNCTION: LLVMValueRef LLVMBuildRet
267 ( LLVMBuilderRef Builder, LLVMValueRef V ) ;
268 FUNCTION: LLVMValueRef LLVMBuildBr
269 ( LLVMBuilderRef Builder, LLVMBasicBlockRef Dest ) ;
270 FUNCTION: LLVMValueRef LLVMBuildCondBr
271 ( LLVMBuilderRef Builder, LLVMValueRef If, LLVMBasicBlockRef Then, LLVMBasicBlockRef Else ) ;
272 FUNCTION: LLVMValueRef LLVMBuildSwitch
273 ( LLVMBuilderRef Builder, LLVMValueRef V, LLVMBasicBlockRef Else, unsigned NumCases ) ;
274 FUNCTION: LLVMValueRef LLVMBuildInvoke
275 ( LLVMBuilderRef Builder, LLVMValueRef Fn, LLVMValueRef* Args, unsigned NumArgs,
276 LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, char* Name ) ;
277 FUNCTION: LLVMValueRef LLVMBuildUnwind
278 ( LLVMBuilderRef Builder ) ;
279 FUNCTION: LLVMValueRef LLVMBuildUnreachable
280 ( LLVMBuilderRef Builder ) ;
282 ! IB Add Case to Switch
284 FUNCTION: void LLVMAddCase
285 ( LLVMValueRef Switch, LLVMValueRef OnVal, LLVMBasicBlockRef Dest ) ;
289 FUNCTION: LLVMValueRef LLVMBuildAdd
290 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
291 FUNCTION: LLVMValueRef LLVMBuildSub
292 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
293 FUNCTION: LLVMValueRef LLVMBuildMul
294 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
295 FUNCTION: LLVMValueRef LLVMBuildUDiv
296 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
297 FUNCTION: LLVMValueRef LLVMBuildSDiv
298 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
299 FUNCTION: LLVMValueRef LLVMBuildFDiv
300 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
301 FUNCTION: LLVMValueRef LLVMBuildURem
302 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
303 FUNCTION: LLVMValueRef LLVMBuildSRem
304 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
305 FUNCTION: LLVMValueRef LLVMBuildFRem
306 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
307 FUNCTION: LLVMValueRef LLVMBuildShl
308 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
309 FUNCTION: LLVMValueRef LLVMBuildLShr
310 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
311 FUNCTION: LLVMValueRef LLVMBuildAShr
312 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
313 FUNCTION: LLVMValueRef LLVMBuildAnd
314 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
315 FUNCTION: LLVMValueRef LLVMBuildOr
316 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
317 FUNCTION: LLVMValueRef LLVMBuildXor
318 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
319 FUNCTION: LLVMValueRef LLVMBuildNeg
320 ( LLVMBuilderRef Builder, LLVMValueRef V, char* Name ) ;
321 FUNCTION: LLVMValueRef LLVMBuildNot
322 ( LLVMBuilderRef Builder, LLVMValueRef V, char* Name ) ;
326 FUNCTION: LLVMValueRef LLVMBuildMalloc
327 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, char* Name ) ;
328 FUNCTION: LLVMValueRef LLVMBuildArrayMalloc
329 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, LLVMValueRef Val, char* Name ) ;
330 FUNCTION: LLVMValueRef LLVMBuildAlloca
331 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, char* Name ) ;
332 FUNCTION: LLVMValueRef LLVMBuildArrayAlloca
333 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, LLVMValueRef Val, char* Name ) ;
334 FUNCTION: LLVMValueRef LLVMBuildFree
335 ( LLVMBuilderRef Builder, LLVMValueRef PointerVal ) ;
336 FUNCTION: LLVMValueRef LLVMBuildLoad
337 ( LLVMBuilderRef Builder, LLVMValueRef PointerVal, char* Name ) ;
338 FUNCTION: LLVMValueRef LLVMBuildStore
339 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMValueRef Ptr ) ;
340 FUNCTION: LLVMValueRef LLVMBuildGEP
341 ( LLVMBuilderRef B, LLVMValueRef Pointer, LLVMValueRef* Indices,
342 unsigned NumIndices, char* Name ) ;
346 FUNCTION: LLVMValueRef LLVMBuildTrunc
347 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
348 FUNCTION: LLVMValueRef LLVMBuildZExt
349 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
350 FUNCTION: LLVMValueRef LLVMBuildSExt
351 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
352 FUNCTION: LLVMValueRef LLVMBuildFPToUI
353 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
354 FUNCTION: LLVMValueRef LLVMBuildFPToSI
355 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
356 FUNCTION: LLVMValueRef LLVMBuildUIToFP
357 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
358 FUNCTION: LLVMValueRef LLVMBuildSIToFP
359 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
360 FUNCTION: LLVMValueRef LLVMBuildFPTrunc
361 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
362 FUNCTION: LLVMValueRef LLVMBuildFPExt
363 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
364 FUNCTION: LLVMValueRef LLVMBuildPtrToInt
365 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
366 FUNCTION: LLVMValueRef LLVMBuildIntToPtr
367 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
368 FUNCTION: LLVMValueRef LLVMBuildBitCast
369 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
373 FUNCTION: LLVMValueRef LLVMBuildICmp
374 ( LLVMBuilderRef Builder, LLVMIntPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
375 FUNCTION: LLVMValueRef LLVMBuildFCmp
376 ( LLVMBuilderRef Builder, LLVMRealPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
378 ! IB Misc Instructions
380 FUNCTION: LLVMValueRef LLVMBuildPhi
381 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, char* Name ) ;
382 FUNCTION: LLVMValueRef LLVMBuildCall
383 ( LLVMBuilderRef Builder, LLVMValueRef Fn, LLVMValueRef* Args, unsigned NumArgs, char* Name ) ;
384 FUNCTION: LLVMValueRef LLVMBuildSelect
385 ( LLVMBuilderRef Builder, LLVMValueRef If, LLVMValueRef Then, LLVMValueRef Else, char* Name ) ;
386 FUNCTION: LLVMValueRef LLVMBuildVAArg
387 ( LLVMBuilderRef Builder, LLVMValueRef List, LLVMTypeRef Ty, char* Name ) ;
388 FUNCTION: LLVMValueRef LLVMBuildExtractElement
389 ( LLVMBuilderRef Builder, LLVMValueRef VecVal, LLVMValueRef Index, char* Name ) ;
390 FUNCTION: LLVMValueRef LLVMBuildInsertElement
391 ( LLVMBuilderRef Builder, LLVMValueRef VecVal, LLVMValueRef EltVal, LLVMValueRef Index, char* Name ) ;
392 FUNCTION: LLVMValueRef LLVMBuildShuffleVector
393 ( LLVMBuilderRef Builder, LLVMValueRef V1, LLVMValueRef V2, LLVMValueRef Mask, char* Name ) ;
394 FUNCTION: LLVMValueRef LLVMBuildExtractValue
395 ( LLVMBuilderRef Builder, LLVMValueRef AggVal, unsigned Index, char* Name ) ;
396 FUNCTION: LLVMValueRef LLVMBuildInsertValue
397 ( LLVMBuilderRef Builder, LLVMValueRef AggVal, LLVMValueRef EltVal, unsigned Index, char* Name ) ;