Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
numba
GitHub Repository: numba/llvmlite
Path: blob/main/examples/parseasm.py
1154 views
1
from llvmlite import binding as llvm
2
from llvmlite import ir as lc
3
4
llvm.initialize_native_target()
5
llvm.initialize_native_asmprinter()
6
7
mod = lc.Module()
8
mod.triple = llvm.get_default_triple()
9
func = lc.Function(mod, lc.FunctionType(lc.VoidType(), [lc.IntType(32)]),
10
name='foo')
11
builder = lc.IRBuilder(func.append_basic_block())
12
builder.ret_void()
13
14
print(mod)
15
16
mod = llvm.parse_assembly(str(mod))
17
18
mod.verify()
19
print(repr(mod))
20
print(mod)
21
22
tm = llvm.Target.from_default_triple().create_target_machine()
23
pto = llvm.create_pipeline_tuning_options()
24
25
with llvm.create_new_module_pass_manager() as pm:
26
pb = llvm.create_pass_builder(tm, pto)
27
pm.run(mod, pb)
28
29
print(mod)
30
31
ee = llvm.create_mcjit_compiler(mod, tm)
32
func = mod.get_function("foo")
33
print(func, ee.get_function_address("foo"))
34
ee.close()
35
36
llvm.shutdown()
37
38
39