Add more binops to stepper.
This commit is contained in:
parent
1c48ccb6c6
commit
7319479e9a
25
stepper.py
25
stepper.py
|
@ -88,6 +88,24 @@ def eval_oper(operand, ssa_env, global_env):
|
||||||
def eval_binop(bop, left, right):
|
def eval_binop(bop, left, right):
|
||||||
if bop == 'add':
|
if bop == 'add':
|
||||||
return left + right
|
return left + right
|
||||||
|
elif bop == 'sub':
|
||||||
|
return left - right
|
||||||
|
elif bop == 'mul':
|
||||||
|
return left * right
|
||||||
|
elif bop == 'sdiv':
|
||||||
|
return left // right
|
||||||
|
elif bop == 'shl':
|
||||||
|
return left << right
|
||||||
|
elif bop == 'ashr':
|
||||||
|
return left >> right
|
||||||
|
elif bop == 'lshr':
|
||||||
|
return (left >> right) % 0x10000000000000000
|
||||||
|
elif bop == 'and':
|
||||||
|
return left & right
|
||||||
|
elif bop == 'or':
|
||||||
|
return left | right
|
||||||
|
elif bop == 'xor':
|
||||||
|
return left ^ right
|
||||||
else:
|
else:
|
||||||
err('Unknown LLVM Binary operator: {}'
|
err('Unknown LLVM Binary operator: {}'
|
||||||
.format(bop))
|
.format(bop))
|
||||||
|
@ -103,7 +121,12 @@ define i64 @tigermain (i64 %U_mainSL_8, i64 %U_mainDummy_9) {
|
||||||
%b = add i64 %a, %a
|
%b = add i64 %a, %a
|
||||||
%c = add i64 %a, %b
|
%c = add i64 %a, %b
|
||||||
%d = add i64 100, %c
|
%d = add i64 100, %c
|
||||||
ret i64 %d
|
%e = mul i64 7, %b
|
||||||
|
%f = sdiv i64 %e, 2
|
||||||
|
%g = sub i64 %d, %f
|
||||||
|
%h = or i64 1, %g
|
||||||
|
%i = shl i64 %h, 2
|
||||||
|
ret i64 %g
|
||||||
}
|
}
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user