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
13 "LLVMBitReader" "/usr/local/lib/libLLVMBitReader.dylib" "cdecl" add-library
21 TYPEDEF: uint unsigned
22 TYPEDEF: unsigned enum
24 CONSTANT: LLVMZExtAttribute BIN: 1
25 CONSTANT: LLVMSExtAttribute BIN: 10
26 CONSTANT: LLVMNoReturnAttribute BIN: 100
27 CONSTANT: LLVMInRegAttribute BIN: 1000
28 CONSTANT: LLVMStructRetAttribute BIN: 10000
29 CONSTANT: LLVMNoUnwindAttribute BIN: 100000
30 CONSTANT: LLVMNoAliasAttribute BIN: 1000000
31 CONSTANT: LLVMByValAttribute BIN: 10000000
32 CONSTANT: LLVMNestAttribute BIN: 100000000
33 CONSTANT: LLVMReadNoneAttribute BIN: 1000000000
34 CONSTANT: LLVMReadOnlyAttribute BIN: 10000000000
35 TYPEDEF: enum LLVMAttribute;
53 TYPEDEF: enum LLVMTypeKind
63 LLVMExternalWeakLinkage
65 TYPEDEF: enum LLVMLinkage
70 LLVMProtectedVisibility ;
71 TYPEDEF: enum LLVMVisibility
73 CONSTANT: LLVMCCallConv 0
74 CONSTANT: LLVMFastCallConv 8
75 CONSTANT: LLVMColdCallConv 9
76 CONSTANT: LLVMX86StdcallCallConv 64
77 CONSTANT: LLVMX86FastcallCallConv 65
78 TYPEDEF: enum LLVMCallConv
80 CONSTANT: LLVMIntEQ 32
81 CONSTANT: LLVMIntNE 33
82 CONSTANT: LLVMIntUGT 34
83 CONSTANT: LLVMIntUGE 35
84 CONSTANT: LLVMIntULT 36
85 CONSTANT: LLVMIntULE 37
86 CONSTANT: LLVMIntSGT 38
87 CONSTANT: LLVMIntSGE 39
88 CONSTANT: LLVMIntSLT 40
89 CONSTANT: LLVMIntSLE 41
90 TYPEDEF: enum LLVMIntPredicate
93 LLVMRealPredicateFalse
108 LLVMRealPredicateTrue ;
109 TYPEDEF: enum LLVMRealPredicate
113 TYPEDEF: void* LLVMModuleRef
115 TYPEDEF: void* LLVMPassManagerRef
117 TYPEDEF: void* LLVMModuleProviderRef
119 TYPEDEF: void* LLVMTypeRef
121 TYPEDEF: void* LLVMTypeHandleRef
123 TYPEDEF: void* LLVMValueRef
125 TYPEDEF: void* LLVMBasicBlockRef
127 TYPEDEF: void* LLVMBuilderRef
129 TYPEDEF: void* LLVMMemoryBufferRef
133 FUNCTION: void LLVMDisposeMessage ( char* Message ) ;
135 FUNCTION: LLVMModuleRef LLVMModuleCreateWithName ( char* ModuleID ) ;
137 FUNCTION: int LLVMAddTypeName ( LLVMModuleRef M, char* Name, LLVMTypeRef Ty ) ;
139 FUNCTION: void LLVMDisposeModule ( LLVMModuleRef M ) ;
141 FUNCTION: void LLVMDumpModule ( LLVMModuleRef M ) ;
143 FUNCTION: LLVMModuleProviderRef
144 LLVMCreateModuleProviderForExistingModule ( LLVMModuleRef M ) ;
146 FUNCTION: void LLVMDisposeModuleProvider ( LLVMModuleProviderRef MP ) ;
150 ! LLVM types conform to the following hierarchy:
164 ! See llvm::LLVMTypeKind::getTypeID.
165 FUNCTION: LLVMTypeKind LLVMGetTypeKind ( LLVMTypeRef Ty ) ;
167 ! Operations on integer types
168 FUNCTION: LLVMTypeRef LLVMInt1Type ( ) ;
169 FUNCTION: LLVMTypeRef LLVMInt8Type ( ) ;
170 FUNCTION: LLVMTypeRef LLVMInt16Type ( ) ;
171 FUNCTION: LLVMTypeRef LLVMInt32Type ( ) ;
172 FUNCTION: LLVMTypeRef LLVMInt64Type ( ) ;
173 FUNCTION: LLVMTypeRef LLVMIntType ( unsigned NumBits ) ;
174 FUNCTION: unsigned LLVMGetIntTypeWidth ( LLVMTypeRef IntegerTy ) ;
176 ! Operations on real types
177 FUNCTION: LLVMTypeRef LLVMFloatType ( ) ;
178 FUNCTION: LLVMTypeRef LLVMDoubleType ( ) ;
179 FUNCTION: LLVMTypeRef LLVMX86FP80Type ( ) ;
180 FUNCTION: LLVMTypeRef LLVMFP128Type ( ) ;
181 FUNCTION: LLVMTypeRef LLVMPPCFP128Type ( ) ;
183 ! Operations on function types
184 FUNCTION: LLVMTypeRef
185 LLVMFunctionType ( LLVMTypeRef ReturnType, LLVMTypeRef* ParamTypes, unsigned ParamCount, int IsVarArg ) ;
186 FUNCTION: int LLVMIsFunctionVarArg ( LLVMTypeRef FunctionTy ) ;
187 FUNCTION: LLVMTypeRef LLVMGetReturnType ( LLVMTypeRef FunctionTy ) ;
188 FUNCTION: unsigned LLVMCountParamTypes ( LLVMTypeRef FunctionTy ) ;
189 FUNCTION: void LLVMGetParamTypes ( LLVMTypeRef FunctionTy, LLVMTypeRef* Dest ) ;
191 ! Operations on struct types
192 FUNCTION: LLVMTypeRef
193 LLVMStructType ( LLVMTypeRef* ElementTypes, unsigned ElementCount, int Packed ) ;
194 FUNCTION: unsigned LLVMCountStructElementTypes ( LLVMTypeRef StructTy ) ;
195 FUNCTION: void LLVMGetStructElementTypes ( LLVMTypeRef StructTy, LLVMTypeRef* Dest ) ;
196 FUNCTION: int LLVMIsPackedStruct ( LLVMTypeRef StructTy ) ;
198 ! Operations on array, pointer, and vector types (sequence types)
199 FUNCTION: LLVMTypeRef LLVMArrayType ( LLVMTypeRef ElementType, unsigned ElementCount ) ;
200 FUNCTION: LLVMTypeRef LLVMPointerType ( LLVMTypeRef ElementType, unsigned AddressSpace ) ;
201 FUNCTION: LLVMTypeRef LLVMVectorType ( LLVMTypeRef ElementType, unsigned ElementCount ) ;
203 FUNCTION: LLVMTypeRef LLVMGetElementType ( LLVMTypeRef Ty ) ;
204 FUNCTION: unsigned LLVMGetArrayLength ( LLVMTypeRef ArrayTy ) ;
205 FUNCTION: unsigned LLVMGetPointerAddressSpace ( LLVMTypeRef PointerTy ) ;
206 FUNCTION: unsigned LLVMGetVectorSize ( LLVMTypeRef VectorTy ) ;
208 ! Operations on other types
209 FUNCTION: LLVMTypeRef LLVMVoidType ( ) ;
210 FUNCTION: LLVMTypeRef LLVMLabelType ( ) ;
211 FUNCTION: LLVMTypeRef LLVMOpaqueType ( ) ;
213 ! Operations on type handles
214 FUNCTION: LLVMTypeHandleRef LLVMCreateTypeHandle ( LLVMTypeRef PotentiallyAbstractTy ) ;
215 FUNCTION: void LLVMRefineType ( LLVMTypeRef AbstractTy, LLVMTypeRef ConcreteTy ) ;
216 FUNCTION: LLVMTypeRef LLVMResolveTypeHandle ( LLVMTypeHandleRef TypeHandle ) ;
217 FUNCTION: void LLVMDisposeTypeHandle ( LLVMTypeHandleRef TypeHandle ) ;
221 FUNCTION: unsigned LLVMCountParams ( LLVMValueRef Fn ) ;
223 FUNCTION: void LLVMGetParams ( LLVMValueRef Fn, LLVMValueRef* Params ) ;
225 FUNCTION: LLVMValueRef
226 LLVMAddFunction ( LLVMModuleRef M, char* Name, LLVMTypeRef FunctionTy ) ;
228 FUNCTION: LLVMValueRef LLVMGetFirstFunction ( LLVMModuleRef M ) ;
230 FUNCTION: LLVMValueRef LLVMGetNextFunction ( LLVMValueRef Fn ) ;
232 FUNCTION: unsigned LLVMGetFunctionCallConv ( LLVMValueRef Fn ) ;
234 FUNCTION: void LLVMSetFunctionCallConv ( LLVMValueRef Fn, unsigned CC ) ;
236 FUNCTION: LLVMBasicBlockRef
237 LLVMAppendBasicBlock ( LLVMValueRef Fn, char* Name ) ;
239 FUNCTION: LLVMValueRef LLVMGetBasicBlockParent ( LLVMBasicBlockRef BB ) ;
243 FUNCTION: LLVMTypeRef LLVMTypeOf ( LLVMValueRef Val ) ;
244 FUNCTION: char* LLVMGetValueName ( LLVMValueRef Val ) ;
245 FUNCTION: void LLVMSetValueName ( LLVMValueRef Val, char* Name ) ;
246 FUNCTION: void LLVMDumpValue ( LLVMValueRef Val ) ;
248 ! Instruction Builders
250 FUNCTION: LLVMBuilderRef LLVMCreateBuilder ( ) ;
251 FUNCTION: void LLVMPositionBuilder
252 ( LLVMBuilderRef Builder, LLVMBasicBlockRef Block, LLVMValueRef Instr ) ;
253 FUNCTION: void LLVMPositionBuilderBefore
254 ( LLVMBuilderRef Builder, LLVMValueRef Instr ) ;
255 FUNCTION: void LLVMPositionBuilderAtEnd
256 ( LLVMBuilderRef Builder, LLVMBasicBlockRef Block ) ;
257 FUNCTION: LLVMBasicBlockRef LLVMGetInsertBlock
258 ( LLVMBuilderRef Builder ) ;
259 FUNCTION: void LLVMClearInsertionPosition
260 ( LLVMBuilderRef Builder ) ;
261 FUNCTION: void LLVMInsertIntoBuilder
262 ( LLVMBuilderRef Builder, LLVMValueRef Instr ) ;
263 FUNCTION: void LLVMDisposeBuilder
264 ( LLVMBuilderRef Builder ) ;
268 FUNCTION: LLVMValueRef LLVMBuildRetVoid
269 ( LLVMBuilderRef Builder ) ;
270 FUNCTION: LLVMValueRef LLVMBuildRet
271 ( LLVMBuilderRef Builder, LLVMValueRef V ) ;
272 FUNCTION: LLVMValueRef LLVMBuildBr
273 ( LLVMBuilderRef Builder, LLVMBasicBlockRef Dest ) ;
274 FUNCTION: LLVMValueRef LLVMBuildCondBr
275 ( LLVMBuilderRef Builder, LLVMValueRef If, LLVMBasicBlockRef Then, LLVMBasicBlockRef Else ) ;
276 FUNCTION: LLVMValueRef LLVMBuildSwitch
277 ( LLVMBuilderRef Builder, LLVMValueRef V, LLVMBasicBlockRef Else, unsigned NumCases ) ;
278 FUNCTION: LLVMValueRef LLVMBuildInvoke
279 ( LLVMBuilderRef Builder, LLVMValueRef Fn, LLVMValueRef* Args, unsigned NumArgs,
280 LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, char* Name ) ;
281 FUNCTION: LLVMValueRef LLVMBuildUnwind
282 ( LLVMBuilderRef Builder ) ;
283 FUNCTION: LLVMValueRef LLVMBuildUnreachable
284 ( LLVMBuilderRef Builder ) ;
286 ! IB Add Case to Switch
288 FUNCTION: void LLVMAddCase
289 ( LLVMValueRef Switch, LLVMValueRef OnVal, LLVMBasicBlockRef Dest ) ;
293 FUNCTION: LLVMValueRef LLVMBuildAdd
294 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
295 FUNCTION: LLVMValueRef LLVMBuildSub
296 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
297 FUNCTION: LLVMValueRef LLVMBuildMul
298 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
299 FUNCTION: LLVMValueRef LLVMBuildUDiv
300 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
301 FUNCTION: LLVMValueRef LLVMBuildSDiv
302 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
303 FUNCTION: LLVMValueRef LLVMBuildFDiv
304 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
305 FUNCTION: LLVMValueRef LLVMBuildURem
306 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
307 FUNCTION: LLVMValueRef LLVMBuildSRem
308 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
309 FUNCTION: LLVMValueRef LLVMBuildFRem
310 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
311 FUNCTION: LLVMValueRef LLVMBuildShl
312 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
313 FUNCTION: LLVMValueRef LLVMBuildLShr
314 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
315 FUNCTION: LLVMValueRef LLVMBuildAShr
316 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
317 FUNCTION: LLVMValueRef LLVMBuildAnd
318 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
319 FUNCTION: LLVMValueRef LLVMBuildOr
320 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
321 FUNCTION: LLVMValueRef LLVMBuildXor
322 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
323 FUNCTION: LLVMValueRef LLVMBuildNeg
324 ( LLVMBuilderRef Builder, LLVMValueRef V, char* Name ) ;
325 FUNCTION: LLVMValueRef LLVMBuildNot
326 ( LLVMBuilderRef Builder, LLVMValueRef V, char* Name ) ;
330 FUNCTION: LLVMValueRef LLVMBuildMalloc
331 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, char* Name ) ;
332 FUNCTION: LLVMValueRef LLVMBuildArrayMalloc
333 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, LLVMValueRef Val, char* Name ) ;
334 FUNCTION: LLVMValueRef LLVMBuildAlloca
335 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, char* Name ) ;
336 FUNCTION: LLVMValueRef LLVMBuildArrayAlloca
337 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, LLVMValueRef Val, char* Name ) ;
338 FUNCTION: LLVMValueRef LLVMBuildFree
339 ( LLVMBuilderRef Builder, LLVMValueRef PointerVal ) ;
340 FUNCTION: LLVMValueRef LLVMBuildLoad
341 ( LLVMBuilderRef Builder, LLVMValueRef PointerVal, char* Name ) ;
342 FUNCTION: LLVMValueRef LLVMBuildStore
343 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMValueRef Ptr ) ;
344 FUNCTION: LLVMValueRef LLVMBuildGEP
345 ( LLVMBuilderRef B, LLVMValueRef Pointer, LLVMValueRef* Indices,
346 unsigned NumIndices, char* Name ) ;
350 FUNCTION: LLVMValueRef LLVMBuildTrunc
351 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
352 FUNCTION: LLVMValueRef LLVMBuildZExt
353 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
354 FUNCTION: LLVMValueRef LLVMBuildSExt
355 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
356 FUNCTION: LLVMValueRef LLVMBuildFPToUI
357 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
358 FUNCTION: LLVMValueRef LLVMBuildFPToSI
359 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
360 FUNCTION: LLVMValueRef LLVMBuildUIToFP
361 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
362 FUNCTION: LLVMValueRef LLVMBuildSIToFP
363 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
364 FUNCTION: LLVMValueRef LLVMBuildFPTrunc
365 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
366 FUNCTION: LLVMValueRef LLVMBuildFPExt
367 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
368 FUNCTION: LLVMValueRef LLVMBuildPtrToInt
369 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
370 FUNCTION: LLVMValueRef LLVMBuildIntToPtr
371 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
372 FUNCTION: LLVMValueRef LLVMBuildBitCast
373 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
377 FUNCTION: LLVMValueRef LLVMBuildICmp
378 ( LLVMBuilderRef Builder, LLVMIntPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
379 FUNCTION: LLVMValueRef LLVMBuildFCmp
380 ( LLVMBuilderRef Builder, LLVMRealPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
382 ! IB Misc Instructions
384 FUNCTION: LLVMValueRef LLVMBuildPhi
385 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, char* Name ) ;
386 FUNCTION: LLVMValueRef LLVMBuildCall
387 ( LLVMBuilderRef Builder, LLVMValueRef Fn, LLVMValueRef* Args, unsigned NumArgs, char* Name ) ;
388 FUNCTION: LLVMValueRef LLVMBuildSelect
389 ( LLVMBuilderRef Builder, LLVMValueRef If, LLVMValueRef Then, LLVMValueRef Else, char* Name ) ;
390 FUNCTION: LLVMValueRef LLVMBuildVAArg
391 ( LLVMBuilderRef Builder, LLVMValueRef List, LLVMTypeRef Ty, char* Name ) ;
392 FUNCTION: LLVMValueRef LLVMBuildExtractElement
393 ( LLVMBuilderRef Builder, LLVMValueRef VecVal, LLVMValueRef Index, char* Name ) ;
394 FUNCTION: LLVMValueRef LLVMBuildInsertElement
395 ( LLVMBuilderRef Builder, LLVMValueRef VecVal, LLVMValueRef EltVal, LLVMValueRef Index, char* Name ) ;
396 FUNCTION: LLVMValueRef LLVMBuildShuffleVector
397 ( LLVMBuilderRef Builder, LLVMValueRef V1, LLVMValueRef V2, LLVMValueRef Mask, char* Name ) ;
398 FUNCTION: LLVMValueRef LLVMBuildExtractValue
399 ( LLVMBuilderRef Builder, LLVMValueRef AggVal, unsigned Index, char* Name ) ;
400 FUNCTION: LLVMValueRef LLVMBuildInsertValue
401 ( LLVMBuilderRef Builder, LLVMValueRef AggVal, LLVMValueRef EltVal, unsigned Index, char* Name ) ;
403 ! Memory Buffers/Bit Reader
405 FUNCTION: int LLVMCreateMemoryBufferWithContentsOfFile
406 ( char* Path, LLVMMemoryBufferRef* OutMemBuf, char** OutMessage ) ;
408 FUNCTION: void LLVMDisposeMemoryBuffer ( LLVMMemoryBufferRef MemBuf ) ;
410 LIBRARY: LLVMBitReader
412 FUNCTION: int LLVMParseBitcode
413 ( LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutModule, char** OutMessage ) ;
415 FUNCTION: int LLVMGetBitcodeModuleProvider
416 ( LLVMMemoryBufferRef MemBuf, LLVMModuleProviderRef* OutMP, char** OutMessage ) ;