]> gitweb.factorcode.org Git - factor.git/blob - extra/llvm/core/core.factor
Merge branch 'master' of git://factorcode.org/git/factor into llvm
[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   LLVMIntegerTypeKind
44   LLVMFunctionTypeKind
45   LLVMStructTypeKind
46   LLVMArrayTypeKind
47   LLVMPointerTypeKind
48   LLVMOpaqueTypeKind
49   LLVMVectorTypeKind ;
50 TYPEDEF: enum LLVMTypeKind
51
52 C-ENUM:
53   LLVMExternalLinkage
54   LLVMLinkOnceLinkage
55   LLVMWeakLinkage
56   LLVMAppendingLinkage
57   LLVMInternalLinkage
58   LLVMDLLImportLinkage
59   LLVMDLLExportLinkage
60   LLVMExternalWeakLinkage
61   LLVMGhostLinkage ;
62 TYPEDEF: enum LLVMLinkage
63
64 C-ENUM:
65   LLVMDefaultVisibility
66   LLVMHiddenVisibility
67   LLVMProtectedVisibility ;
68 TYPEDEF: enum LLVMVisibility
69
70 CONSTANT: LLVMCCallConv             0
71 CONSTANT: LLVMFastCallConv          8
72 CONSTANT: LLVMColdCallConv          9
73 CONSTANT: LLVMX86StdcallCallConv    64
74 CONSTANT: LLVMX86FastcallCallConv   65
75 TYPEDEF: enum LLVMCallConv
76
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
88
89 C-ENUM:
90   LLVMRealPredicateFalse
91   LLVMRealOEQ
92   LLVMRealOGT
93   LLVMRealOGE
94   LLVMRealOLT
95   LLVMRealOLE
96   LLVMRealONE
97   LLVMRealORD
98   LLVMRealUNO
99   LLVMRealUEQ
100   LLVMRealUGT
101   LLVMRealUGE
102   LLVMRealULT
103   LLVMRealULE
104   LLVMRealUNE
105   LLVMRealPredicateTrue ;
106 TYPEDEF: enum LLVMRealPredicate
107
108 ! Opaque Types
109
110 TYPEDEF: void* LLVMModuleRef
111
112 TYPEDEF: void* LLVMPassManagerRef
113
114 TYPEDEF: void* LLVMModuleProviderRef
115
116 TYPEDEF: void* LLVMTypeRef
117
118 TYPEDEF: void* LLVMTypeHandleRef
119
120 TYPEDEF: void* LLVMValueRef
121
122 TYPEDEF: void* LLVMBasicBlockRef
123
124 TYPEDEF: void* LLVMBuilderRef
125
126 ! Functions
127
128 FUNCTION: void LLVMDisposeMessage ( char *Message ) ;
129
130 FUNCTION: LLVMModuleRef LLVMModuleCreateWithName ( char* ModuleID ) ;
131
132 FUNCTION: int LLVMAddTypeName ( LLVMModuleRef M, char* Name, LLVMTypeRef Ty ) ;
133
134 FUNCTION: void LLVMDisposeModule ( LLVMModuleRef M ) ;
135
136 FUNCTION: void LLVMDumpModule ( LLVMModuleRef M ) ;
137
138 FUNCTION: LLVMModuleProviderRef
139 LLVMCreateModuleProviderForExistingModule ( LLVMModuleRef M ) ;
140
141 FUNCTION: void LLVMDisposeModuleProvider ( LLVMModuleProviderRef MP ) ;
142
143 ! Types
144
145 ! LLVM types conform to the following hierarchy:
146 !  
147 !    types:
148 !      integer type
149 !      real type
150 !      function type
151 !      sequence types:
152 !        array type
153 !        pointer type
154 !        vector type
155 !      void type
156 !      label type
157 !      opaque type
158
159 ! See llvm::LLVMTypeKind::getTypeID.
160 FUNCTION: LLVMTypeKind LLVMGetTypeKind ( LLVMTypeRef Ty ) ;
161
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 ) ;
170
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 ( ) ;
177
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 ) ;
185
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 ) ;
192
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 ) ;
197
198 FUNCTION: LLVMTypeRef LLVMGetElementType ( LLVMTypeRef Ty ) ;
199 FUNCTION: unsigned LLVMGetArrayLength ( LLVMTypeRef ArrayTy ) ;
200 FUNCTION: unsigned LLVMGetPointerAddressSpace ( LLVMTypeRef PointerTy ) ;
201 FUNCTION: unsigned LLVMGetVectorSize ( LLVMTypeRef VectorTy ) ;
202
203 ! Operations on other types
204 FUNCTION: LLVMTypeRef LLVMVoidType ( ) ;
205 FUNCTION: LLVMTypeRef LLVMLabelType ( ) ;
206 FUNCTION: LLVMTypeRef LLVMOpaqueType ( ) ;
207
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 ) ;
213
214 ! Types end
215
216 FUNCTION: unsigned LLVMCountParams ( LLVMValueRef Fn ) ;
217
218 FUNCTION: void LLVMGetParams ( LLVMValueRef Fn, LLVMValueRef* Params ) ;
219
220 FUNCTION: LLVMValueRef
221 LLVMAddFunction ( LLVMModuleRef M, char* Name, LLVMTypeRef FunctionTy ) ;
222
223 FUNCTION: unsigned LLVMGetFunctionCallConv ( LLVMValueRef Fn ) ;
224
225 FUNCTION: void LLVMSetFunctionCallConv ( LLVMValueRef Fn, unsigned CC ) ;
226
227 FUNCTION: LLVMBasicBlockRef
228 LLVMAppendBasicBlock ( LLVMValueRef Fn, char* Name ) ;
229
230 FUNCTION: LLVMValueRef LLVMGetBasicBlockParent ( LLVMBasicBlockRef BB ) ;
231
232 ! Values
233
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 ) ;
238
239 ! Instruction Builders
240
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 ) ;
256
257 ! IB Terminators
258
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 ) ;
276
277 ! IB Add Case to Switch
278
279 FUNCTION: void LLVMAddCase
280 ( LLVMValueRef Switch, LLVMValueRef OnVal, LLVMBasicBlockRef Dest ) ;
281
282 ! IB Arithmetic
283
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 ) ;
318
319 ! IB Memory
320
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 ) ;
338
339 ! IB Casts
340
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 ) ;
365
366 ! IB Comparisons
367
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 ) ;
372
373 ! IB Misc Instructions
374
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 ) ;