Add bitcast.

This commit is contained in:
cfreksen 2017-10-29 19:41:40 +01:00
parent b509ba2595
commit d48042b01e
No known key found for this signature in database
GPG Key ID: EAC13EE101008978
2 changed files with 14 additions and 0 deletions

4
ll.py
View File

@ -102,6 +102,10 @@ def insn2s(insn):
return ('icmp {} {} {}, {}' return ('icmp {} {} {}, {}'
.format(insn.cnd, ty2s(insn.ty), .format(insn.cnd, ty2s(insn.ty),
oper2s(insn.left), oper2s(insn.right))) oper2s(insn.left), oper2s(insn.right)))
elif isinstance(insn, Bitcast):
return ('bitcast {} {} to {}'
.format(ty2s(insn.from_ty), oper2s(insn.oper),
ty2s(insn.to_ty)))
elif isinstance(insn, Zext): elif isinstance(insn, Zext):
return ('zext {} {} to {}' return ('zext {} {} to {}'
.format(ty2s(insn.from_ty), oper2s(insn.oper), .format(ty2s(insn.from_ty), oper2s(insn.oper),

View File

@ -51,6 +51,16 @@ def step(insns, terminator, blocks, stack_frames, ssa_env, global_env, memory,
# TODO # TODO
print('icmp {} {}, {}' print('icmp {} {}, {}'
.format(cnd, left_v, right_v)) .format(cnd, left_v, right_v))
elif isinstance(next_insn, ll.Bitcast):
oper = next_insn.oper
from_ty = next_insn.from_ty
to_ty = next_insn.to_ty
oper_v = eval_oper(oper, ssa_env, global_env)
res = oper_v
# TODO
print('bitcast {} {} to {}'
.format(ll.ty2s(from_ty), oper_v, ll.ty2s(to_ty)))
elif isinstance(next_insn, ll.Zext): elif isinstance(next_insn, ll.Zext):
oper = next_insn.oper oper = next_insn.oper
from_ty = next_insn.from_ty from_ty = next_insn.from_ty