]> gitweb.factorcode.org Git - factor.git/blob - extra/llvm/core/core.factor
Added global jit, and convenience words for dealing with it
[factor.git] / extra / llvm / core / core.factor
1 USING: alien.libraries alien.syntax ;
2
3 IN: llvm.core
4
5 <<
6
7 "LLVMSystem" "/usr/local/lib/libLLVMSystem.dylib" "cdecl" add-library
8
9 "LLVMSupport" "/usr/local/lib/libLLVMSupport.dylib" "cdecl" add-library
10
11 "LLVMCore" "/usr/local/lib/libLLVMCore.dylib" "cdecl" add-library
12
13 >>
14
15 ! llvm-c/Core.h
16
17 LIBRARY: LLVMCore
18
19 TYPEDEF: uint unsigned
20 TYPEDEF: unsigned enum
21
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;
34
35 C-ENUM:
36   LLVMVoidTypeKind
37   LLVMFloatTypeKind
38   LLVMDoubleTypeKind
39   LLVMX86_FP80TypeKind
40   LLVMFP128TypeKind
41   LLVMPPC_FP128TypeKind
42   LLVMLabelTypeKind
43   LLVMMetadataTypeKind
44   LLVMIntegerTypeKind
45   LLVMFunctionTypeKind
46   LLVMStructTypeKind
47   LLVMArrayTypeKind
48   LLVMPointerTypeKind
49   LLVMOpaqueTypeKind
50   LLVMVectorTypeKind ;
51 TYPEDEF: enum LLVMTypeKind
52
53 C-ENUM:
54   LLVMExternalLinkage
55   LLVMLinkOnceLinkage
56   LLVMWeakLinkage
57   LLVMAppendingLinkage
58   LLVMInternalLinkage
59   LLVMDLLImportLinkage
60   LLVMDLLExportLinkage
61   LLVMExternalWeakLinkage
62   LLVMGhostLinkage ;
63 TYPEDEF: enum LLVMLinkage
64
65 C-ENUM:
66   LLVMDefaultVisibility
67   LLVMHiddenVisibility
68   LLVMProtectedVisibility ;
69 TYPEDEF: enum LLVMVisibility
70
71 CONSTANT: LLVMCCallConv             0
72 CONSTANT: LLVMFastCallConv          8
73 CONSTANT: LLVMColdCallConv          9
74 CONSTANT: LLVMX86StdcallCallConv    64
75 CONSTANT: LLVMX86FastcallCallConv   65
76 TYPEDEF: enum LLVMCallConv
77
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
89
90 C-ENUM:
91   LLVMRealPredicateFalse
92   LLVMRealOEQ
93   LLVMRealOGT
94   LLVMRealOGE
95   LLVMRealOLT
96   LLVMRealOLE
97   LLVMRealONE
98   LLVMRealORD
99   LLVMRealUNO
100   LLVMRealUEQ
101   LLVMRealUGT
102   LLVMRealUGE
103   LLVMRealULT
104   LLVMRealULE
105   LLVMRealUNE
106   LLVMRealPredicateTrue ;
107 TYPEDEF: enum LLVMRealPredicate
108
109 ! Opaque Types
110
111 TYPEDEF: void* LLVMModuleRef
112
113 TYPEDEF: void* LLVMPassManagerRef
114
115 TYPEDEF: void* LLVMModuleProviderRef
116
117 TYPEDEF: void* LLVMTypeRef
118
119 TYPEDEF: void* LLVMTypeHandleRef
120
121 TYPEDEF: void* LLVMValueRef
122
123 TYPEDEF: void* LLVMBasicBlockRef
124
125 TYPEDEF: void* LLVMBuilderRef
126
127 ! Functions
128
129 FUNCTION: void LLVMDisposeMessage ( char *Message ) ;
130
131 FUNCTION: LLVMModuleRef LLVMModuleCreateWithName ( char* ModuleID ) ;
132
133 FUNCTION: int LLVMAddTypeName ( LLVMModuleRef M, char* Name, LLVMTypeRef Ty ) ;
134
135 FUNCTION: void LLVMDisposeModule ( LLVMModuleRef M ) ;
136
137 FUNCTION: void LLVMDumpModule ( LLVMModuleRef M ) ;
138
139 FUNCTION: LLVMModuleProviderRef
140 LLVMCreateModuleProviderForExistingModule ( LLVMModuleRef M ) ;
141
142 FUNCTION: void LLVMDisposeModuleProvider ( LLVMModuleProviderRef MP ) ;
143
144 ! Types
145
146 ! LLVM types conform to the following hierarchy:
147 !  
148 !    types:
149 !      integer type
150 !      real type
151 !      function type
152 !      sequence types:
153 !        array type
154 !        pointer type
155 !        vector type
156 !      void type
157 !      label type
158 !      opaque type
159
160 ! See llvm::LLVMTypeKind::getTypeID.
161 FUNCTION: LLVMTypeKind LLVMGetTypeKind ( LLVMTypeRef Ty ) ;
162
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 ) ;
171
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 ( ) ;
178
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 ) ;
186
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 ) ;
193
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 ) ;
198
199 FUNCTION: LLVMTypeRef LLVMGetElementType ( LLVMTypeRef Ty ) ;
200 FUNCTION: unsigned LLVMGetArrayLength ( LLVMTypeRef ArrayTy ) ;
201 FUNCTION: unsigned LLVMGetPointerAddressSpace ( LLVMTypeRef PointerTy ) ;
202 FUNCTION: unsigned LLVMGetVectorSize ( LLVMTypeRef VectorTy ) ;
203
204 ! Operations on other types
205 FUNCTION: LLVMTypeRef LLVMVoidType ( ) ;
206 FUNCTION: LLVMTypeRef LLVMLabelType ( ) ;
207 FUNCTION: LLVMTypeRef LLVMOpaqueType ( ) ;
208
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 ) ;
214
215 ! Types end
216
217 FUNCTION: unsigned LLVMCountParams ( LLVMValueRef Fn ) ;
218
219 FUNCTION: void LLVMGetParams ( LLVMValueRef Fn, LLVMValueRef* Params ) ;
220
221 FUNCTION: LLVMValueRef
222 LLVMAddFunction ( LLVMModuleRef M, char* Name, LLVMTypeRef FunctionTy ) ;
223
224 FUNCTION: LLVMValueRef LLVMGetFirstFunction ( LLVMModuleRef M ) ;
225
226 FUNCTION: LLVMValueRef LLVMGetNextFunction ( LLVMValueRef Fn ) ;
227
228 FUNCTION: unsigned LLVMGetFunctionCallConv ( LLVMValueRef Fn ) ;
229
230 FUNCTION: void LLVMSetFunctionCallConv ( LLVMValueRef Fn, unsigned CC ) ;
231
232 FUNCTION: LLVMBasicBlockRef
233 LLVMAppendBasicBlock ( LLVMValueRef Fn, char* Name ) ;
234
235 FUNCTION: LLVMValueRef LLVMGetBasicBlockParent ( LLVMBasicBlockRef BB ) ;
236
237 ! Values
238
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 ) ;
243
244 ! Instruction Builders
245
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 ) ;
261
262 ! IB Terminators
263
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 ) ;
281
282 ! IB Add Case to Switch
283
284 FUNCTION: void LLVMAddCase
285 ( LLVMValueRef Switch, LLVMValueRef OnVal, LLVMBasicBlockRef Dest ) ;
286
287 ! IB Arithmetic
288
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 ) ;
323
324 ! IB Memory
325
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 ) ;
343
344 ! IB Casts
345
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 ) ;
370
371 ! IB Comparisons
372
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 ) ;
377
378 ! IB Misc Instructions
379
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 ) ;