Added class LLVMExamples
authorJan Vrany <jan.vrany@fit.cvut.cz>
Fri, 17 Jul 2015 12:40:26 +0100
changeset 8 890eb7591eca
parent 7 a41b88b05f9a
child 9 540c1c31a33d
Added class LLVMExamples ...with low-level examples how to use LLVM
LLVMExamples.st
Make.proto
Make.spec
abbrev.stc
bc.mak
jv_libllvms.st
libInit.cc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LLVMExamples.st	Fri Jul 17 12:40:26 2015 +0100
@@ -0,0 +1,45 @@
+"{ Package: 'jv:libllvms' }"
+
+"{ NameSpace: Smalltalk }"
+
+Object subclass:#LLVMExamples
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'LLVM-Core-Examples'
+!
+
+
+!LLVMExamples class methodsFor:'examples'!
+
+example1_sum
+    | module functionType function functionEntry asm jit externalFunction |
+
+    module := LLVMModule newWithName: thisContext selector.
+    functionType := LLVMType function: { LLVMType intptr . LLVMType intptr } returning: LLVMType intptr.
+    function := module addFunctionNamed: 'sum' type: functionType.
+
+    functionEntry := function addBasicBlockNamed: 'entry'.
+    asm := LLVMBuilder new.
+    asm positionAtEnd: functionEntry.
+    asm ret: (asm add: (function parameterAt: 1) and: (function parameterAt: 2)).
+
+    jit := LLVMExecutionEngine newForModule: module.
+    externalFunction := jit externalOfFunction: function.
+
+    ^ externalFunction callWith: 3 with: 4.
+
+    "
+    LLVMExamples example1_sum
+    "
+
+    "Created: / 17-07-2015 / 11:47:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!LLVMExamples class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/Make.proto	Fri Jul 17 12:38:30 2015 +0100
+++ b/Make.proto	Fri Jul 17 12:40:26 2015 +0100
@@ -129,6 +129,7 @@
 $(OUTDIR)LLVMCallConv.$(O) LLVMCallConv.$(H): LLVMCallConv.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMDLLStorageClass.$(O) LLVMDLLStorageClass.$(H): LLVMDLLStorageClass.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMDiagnosticSeverity.$(O) LLVMDiagnosticSeverity.$(H): LLVMDiagnosticSeverity.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
+$(OUTDIR)LLVMExamples.$(O) LLVMExamples.$(H): LLVMExamples.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMIntPredicate.$(O) LLVMIntPredicate.$(H): LLVMIntPredicate.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMLandingPadClauseTy.$(O) LLVMLandingPadClauseTy.$(H): LLVMLandingPadClauseTy.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMLinkage.$(O) LLVMLinkage.$(H): LLVMLinkage.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
--- a/Make.spec	Fri Jul 17 12:38:30 2015 +0100
+++ b/Make.spec	Fri Jul 17 12:40:26 2015 +0100
@@ -59,6 +59,7 @@
 	LLVMCallConv \
 	LLVMDLLStorageClass \
 	LLVMDiagnosticSeverity \
+	LLVMExamples \
 	LLVMIntPredicate \
 	LLVMLandingPadClauseTy \
 	LLVMLinkage \
@@ -104,6 +105,7 @@
     $(OUTDIR_SLASH)LLVMCallConv.$(O) \
     $(OUTDIR_SLASH)LLVMDLLStorageClass.$(O) \
     $(OUTDIR_SLASH)LLVMDiagnosticSeverity.$(O) \
+    $(OUTDIR_SLASH)LLVMExamples.$(O) \
     $(OUTDIR_SLASH)LLVMIntPredicate.$(O) \
     $(OUTDIR_SLASH)LLVMLandingPadClauseTy.$(O) \
     $(OUTDIR_SLASH)LLVMLinkage.$(O) \
--- a/abbrev.stc	Fri Jul 17 12:38:30 2015 +0100
+++ b/abbrev.stc	Fri Jul 17 12:40:26 2015 +0100
@@ -9,6 +9,7 @@
 LLVMCallConv LLVMCallConv jv:libllvms 'LLVM-Core-Constants' 0
 LLVMDLLStorageClass LLVMDLLStorageClass jv:libllvms 'LLVM-Core-Constants' 0
 LLVMDiagnosticSeverity LLVMDiagnosticSeverity jv:libllvms 'LLVM-Core-Constants' 0
+LLVMExamples LLVMExamples jv:libllvms 'LLVM-Core-Examples' 0
 LLVMIntPredicate LLVMIntPredicate jv:libllvms 'LLVM-Core-Constants' 0
 LLVMLandingPadClauseTy LLVMLandingPadClauseTy jv:libllvms 'LLVM-Core-Constants' 0
 LLVMLinkage LLVMLinkage jv:libllvms 'LLVM-Core-Constants' 0
--- a/bc.mak	Fri Jul 17 12:38:30 2015 +0100
+++ b/bc.mak	Fri Jul 17 12:40:26 2015 +0100
@@ -76,6 +76,7 @@
 $(OUTDIR)LLVMCallConv.$(O) LLVMCallConv.$(H): LLVMCallConv.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMDLLStorageClass.$(O) LLVMDLLStorageClass.$(H): LLVMDLLStorageClass.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMDiagnosticSeverity.$(O) LLVMDiagnosticSeverity.$(H): LLVMDiagnosticSeverity.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
+$(OUTDIR)LLVMExamples.$(O) LLVMExamples.$(H): LLVMExamples.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMIntPredicate.$(O) LLVMIntPredicate.$(H): LLVMIntPredicate.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMLandingPadClauseTy.$(O) LLVMLandingPadClauseTy.$(H): LLVMLandingPadClauseTy.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMLinkage.$(O) LLVMLinkage.$(H): LLVMLinkage.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
--- a/jv_libllvms.st	Fri Jul 17 12:38:30 2015 +0100
+++ b/jv_libllvms.st	Fri Jul 17 12:40:26 2015 +0100
@@ -76,6 +76,7 @@
         LLVMCallConv
         LLVMDLLStorageClass
         LLVMDiagnosticSeverity
+        LLVMExamples
         LLVMIntPredicate
         LLVMLandingPadClauseTy
         LLVMLinkage
--- a/libInit.cc	Fri Jul 17 12:38:30 2015 +0100
+++ b/libInit.cc	Fri Jul 17 12:40:26 2015 +0100
@@ -35,6 +35,7 @@
 _LLVMCallConv_Init(pass,__pRT__,snd);
 _LLVMDLLStorageClass_Init(pass,__pRT__,snd);
 _LLVMDiagnosticSeverity_Init(pass,__pRT__,snd);
+_LLVMExamples_Init(pass,__pRT__,snd);
 _LLVMIntPredicate_Init(pass,__pRT__,snd);
 _LLVMLandingPadClauseTy_Init(pass,__pRT__,snd);
 _LLVMLinkage_Init(pass,__pRT__,snd);