]> gitweb.factorcode.org Git - factor.git/blob - extra/llvm/core/core.factor
Update LLVMTypeKind enum
[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: unsigned LLVMGetFunctionCallConv ( LLVMValueRef Fn ) ;
225
226 FUNCTION: void LLVMSetFunctionCallConv ( LLVMValueRef Fn, unsigned CC ) ;
227
228 FUNCTION: LLVMBasicBlockRef
229 LLVMAppendBasicBlock ( LLVMValueRef Fn, char* Name ) ;
230
231 FUNCTION: LLVMValueRef LLVMGetBasicBlockParent ( LLVMBasicBlockRef BB ) ;
232
233 ! Values
234
235 FUNCTION: LLVMTypeRef LLVMTypeOf ( LLVMValueRef Val ) ;
236 FUNCTION: char* LLVMGetValueName ( LLVMValueRef Val ) ;
237 FUNCTION: void LLVMSetValueName ( LLVMValueRef Val, char* Name ) ;
238 FUNCTION: void LLVMDumpValue ( LLVMValueRef Val ) ;
239
240 ! Instruction Builders
241
242 FUNCTION: LLVMBuilderRef LLVMCreateBuilder ( ) ;
243 FUNCTION: void LLVMPositionBuilder
244 ( LLVMBuilderRef Builder, LLVMBasicBlockRef Block, LLVMValueRef Instr ) ;
245 FUNCTION: void LLVMPositionBuilderBefore
246 ( LLVMBuilderRef Builder, LLVMValueRef Instr ) ;
247 FUNCTION: void LLVMPositionBuilderAtEnd
248 ( LLVMBuilderRef Builder, LLVMBasicBlockRef Block ) ;
249 FUNCTION: LLVMBasicBlockRef LLVMGetInsertBlock
250 ( LLVMBuilderRef Builder ) ;
251 FUNCTION: void LLVMClearInsertionPosition
252 ( LLVMBuilderRef Builder ) ;
253 FUNCTION: void LLVMInsertIntoBuilder
254 ( LLVMBuilderRef Builder, LLVMValueRef Instr ) ;
255 FUNCTION: void LLVMDisposeBuilder
256 ( LLVMBuilderRef Builder ) ;
257
258 ! IB Terminators
259
260 FUNCTION: LLVMValueRef LLVMBuildRetVoid
261 ( LLVMBuilderRef Builder ) ;
262 FUNCTION: LLVMValueRef LLVMBuildRet
263 ( LLVMBuilderRef Builder, LLVMValueRef V ) ;
264 FUNCTION: LLVMValueRef LLVMBuildBr
265 ( LLVMBuilderRef Builder, LLVMBasicBlockRef Dest ) ;
266 FUNCTION: LLVMValueRef LLVMBuildCondBr
267 ( LLVMBuilderRef Builder, LLVMValueRef If, LLVMBasicBlockRef Then, LLVMBasicBlockRef Else ) ;
268 FUNCTION: LLVMValueRef LLVMBuildSwitch
269 ( LLVMBuilderRef Builder, LLVMValueRef V, LLVMBasicBlockRef Else, unsigned NumCases ) ;
270 FUNCTION: LLVMValueRef LLVMBuildInvoke
271 ( LLVMBuilderRef Builder, LLVMValueRef Fn, LLVMValueRef* Args, unsigned NumArgs,
272   LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, char* Name ) ;
273 FUNCTION: LLVMValueRef LLVMBuildUnwind
274 ( LLVMBuilderRef Builder ) ;
275 FUNCTION: LLVMValueRef LLVMBuildUnreachable
276 ( LLVMBuilderRef Builder ) ;
277
278 ! IB Add Case to Switch
279
280 FUNCTION: void LLVMAddCase
281 ( LLVMValueRef Switch, LLVMValueRef OnVal, LLVMBasicBlockRef Dest ) ;
282
283 ! IB Arithmetic
284
285 FUNCTION: LLVMValueRef LLVMBuildAdd
286 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
287 FUNCTION: LLVMValueRef LLVMBuildSub
288 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
289 FUNCTION: LLVMValueRef LLVMBuildMul
290 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
291 FUNCTION: LLVMValueRef LLVMBuildUDiv
292 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
293 FUNCTION: LLVMValueRef LLVMBuildSDiv
294 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
295 FUNCTION: LLVMValueRef LLVMBuildFDiv
296 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
297 FUNCTION: LLVMValueRef LLVMBuildURem
298 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
299 FUNCTION: LLVMValueRef LLVMBuildSRem
300 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
301 FUNCTION: LLVMValueRef LLVMBuildFRem
302 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
303 FUNCTION: LLVMValueRef LLVMBuildShl
304 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
305 FUNCTION: LLVMValueRef LLVMBuildLShr
306 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
307 FUNCTION: LLVMValueRef LLVMBuildAShr
308 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
309 FUNCTION: LLVMValueRef LLVMBuildAnd
310 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
311 FUNCTION: LLVMValueRef LLVMBuildOr
312 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
313 FUNCTION: LLVMValueRef LLVMBuildXor
314 ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
315 FUNCTION: LLVMValueRef LLVMBuildNeg
316 ( LLVMBuilderRef Builder, LLVMValueRef V, char* Name ) ;
317 FUNCTION: LLVMValueRef LLVMBuildNot
318 ( LLVMBuilderRef Builder, LLVMValueRef V, char* Name ) ;
319
320 ! IB Memory
321
322 FUNCTION: LLVMValueRef LLVMBuildMalloc
323 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, char* Name ) ;
324 FUNCTION: LLVMValueRef LLVMBuildArrayMalloc
325 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, LLVMValueRef Val, char* Name ) ;
326 FUNCTION: LLVMValueRef LLVMBuildAlloca
327 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, char* Name ) ;
328 FUNCTION: LLVMValueRef LLVMBuildArrayAlloca
329 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, LLVMValueRef Val, char* Name ) ;
330 FUNCTION: LLVMValueRef LLVMBuildFree
331 ( LLVMBuilderRef Builder, LLVMValueRef PointerVal ) ;
332 FUNCTION: LLVMValueRef LLVMBuildLoad
333 ( LLVMBuilderRef Builder, LLVMValueRef PointerVal, char* Name ) ;
334 FUNCTION: LLVMValueRef LLVMBuildStore
335 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMValueRef Ptr ) ;
336 FUNCTION: LLVMValueRef LLVMBuildGEP
337 ( LLVMBuilderRef B, LLVMValueRef Pointer, LLVMValueRef* Indices,
338   unsigned NumIndices, char* Name ) ;
339
340 ! IB Casts
341
342 FUNCTION: LLVMValueRef LLVMBuildTrunc
343 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
344 FUNCTION: LLVMValueRef LLVMBuildZExt
345 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
346 FUNCTION: LLVMValueRef LLVMBuildSExt
347 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
348 FUNCTION: LLVMValueRef LLVMBuildFPToUI
349 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
350 FUNCTION: LLVMValueRef LLVMBuildFPToSI
351 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
352 FUNCTION: LLVMValueRef LLVMBuildUIToFP
353 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
354 FUNCTION: LLVMValueRef LLVMBuildSIToFP
355 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
356 FUNCTION: LLVMValueRef LLVMBuildFPTrunc
357 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
358 FUNCTION: LLVMValueRef LLVMBuildFPExt
359 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
360 FUNCTION: LLVMValueRef LLVMBuildPtrToInt
361 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
362 FUNCTION: LLVMValueRef LLVMBuildIntToPtr
363 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
364 FUNCTION: LLVMValueRef LLVMBuildBitCast
365 ( LLVMBuilderRef Builder, LLVMValueRef Val, LLVMTypeRef DestTy, char* Name ) ;
366
367 ! IB Comparisons
368
369 FUNCTION: LLVMValueRef LLVMBuildICmp
370 ( LLVMBuilderRef Builder, LLVMIntPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
371 FUNCTION: LLVMValueRef LLVMBuildFCmp
372 ( LLVMBuilderRef Builder, LLVMRealPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, char* Name ) ;
373
374 ! IB Misc Instructions
375
376 FUNCTION: LLVMValueRef LLVMBuildPhi
377 ( LLVMBuilderRef Builder, LLVMTypeRef Ty, char* Name ) ;
378 FUNCTION: LLVMValueRef LLVMBuildCall
379 ( LLVMBuilderRef Builder, LLVMValueRef Fn, LLVMValueRef* Args, unsigned NumArgs, char* Name ) ;
380 FUNCTION: LLVMValueRef LLVMBuildSelect
381 ( LLVMBuilderRef Builder, LLVMValueRef If, LLVMValueRef Then, LLVMValueRef Else, char* Name ) ;
382 FUNCTION: LLVMValueRef LLVMBuildVAArg
383 ( LLVMBuilderRef Builder, LLVMValueRef List, LLVMTypeRef Ty, char* Name ) ;
384 FUNCTION: LLVMValueRef LLVMBuildExtractElement
385 ( LLVMBuilderRef Builder, LLVMValueRef VecVal, LLVMValueRef Index, char* Name ) ;
386 FUNCTION: LLVMValueRef LLVMBuildInsertElement
387 ( LLVMBuilderRef Builder, LLVMValueRef VecVal, LLVMValueRef EltVal, LLVMValueRef Index, char* Name ) ;
388 FUNCTION: LLVMValueRef LLVMBuildShuffleVector
389 ( LLVMBuilderRef Builder, LLVMValueRef V1, LLVMValueRef V2, LLVMValueRef Mask, char* Name ) ;
390 FUNCTION: LLVMValueRef LLVMBuildExtractValue
391 ( LLVMBuilderRef Builder, LLVMValueRef AggVal, unsigned Index, char* Name ) ;
392 FUNCTION: LLVMValueRef LLVMBuildInsertValue
393 ( LLVMBuilderRef Builder, LLVMValueRef AggVal, LLVMValueRef EltVal, unsigned Index, char* Name ) ;