Path: blob/main/docs/source/user-guide/examples/llvmir.py
1154 views
import llvmlite.ir as ll12fntype = ll.FunctionType(ll.IntType(32), [ll.IntType(32), ll.IntType(32)])34module = ll.Module()56func = ll.Function(module, fntype, name='foo')7bb_entry = func.append_basic_block()89builder = ll.IRBuilder()10builder.position_at_end(bb_entry)1112stackint = builder.alloca(ll.IntType(32))13builder.store(ll.Constant(stackint.type.pointee, 123), stackint)14myint = builder.load(stackint)1516addinstr = builder.add(func.args[0], func.args[1])17mulinstr = builder.mul(addinstr, ll.Constant(ll.IntType(32), 123))18pred = builder.icmp_signed('<', addinstr, mulinstr)19builder.ret(mulinstr)2021bb_block = func.append_basic_block()22builder.position_at_end(bb_block)2324bb_exit = func.append_basic_block()2526pred = builder.trunc(addinstr, ll.IntType(1))27builder.cbranch(pred, bb_block, bb_exit)2829builder.position_at_end(bb_exit)30builder.ret(myint)3132print(module)333435