blob: bdf9127b722a42c3aed7a7d00341b2cbfa736c1e [file] [log] [blame] [edit]
[case testIntNeq]
def f(x: int, y: int) -> bool:
return x != y
[out]
def f(x, y):
x, y :: int
r0 :: bit
L0:
r0 = int_ne x, y
return r0
[case testShortIntComparisons]
def f(x: int) -> int:
if x == 3:
return 1
elif x != 4:
return 2
elif 5 == x:
return 3
elif 6 != x:
return 4
elif x < 4:
return 5
return 6
[out]
def f(x):
x :: int
r0, r1, r2, r3, r4 :: bit
L0:
r0 = int_eq x, 6
if r0 goto L1 else goto L2 :: bool
L1:
return 2
L2:
r1 = int_ne x, 8
if r1 goto L3 else goto L4 :: bool
L3:
return 4
L4:
r2 = int_eq 10, x
if r2 goto L5 else goto L6 :: bool
L5:
return 6
L6:
r3 = int_ne 12, x
if r3 goto L7 else goto L8 :: bool
L7:
return 8
L8:
r4 = int_lt x, 8
if r4 goto L9 else goto L10 :: bool
L9:
return 10
L10:
L11:
L12:
L13:
L14:
return 12
[case testIntMin]
def f(x: int, y: int) -> int:
return min(x, y)
[out]
def f(x, y):
x, y :: int
r0 :: bit
r1 :: int
L0:
r0 = int_lt y, x
if r0 goto L1 else goto L2 :: bool
L1:
r1 = y
goto L3
L2:
r1 = x
L3:
return r1
[case testIntFloorDivideByPowerOfTwo]
def divby1(x: int) -> int:
return x // 1
def divby2(x: int) -> int:
return x // 2
def divby3(x: int) -> int:
return x // 3
def divby4(x: int) -> int:
return x // 4
def divby8(x: int) -> int:
return x // 8
[out]
def divby1(x):
x, r0 :: int
L0:
r0 = CPyTagged_FloorDivide(x, 2)
return r0
def divby2(x):
x, r0 :: int
L0:
r0 = CPyTagged_Rshift(x, 2)
return r0
def divby3(x):
x, r0 :: int
L0:
r0 = CPyTagged_FloorDivide(x, 6)
return r0
def divby4(x):
x, r0 :: int
L0:
r0 = CPyTagged_Rshift(x, 4)
return r0
def divby8(x):
x, r0 :: int
L0:
r0 = CPyTagged_Rshift(x, 6)
return r0
[case testFinalConstantFolding]
from typing import Final
X: Final = -1
Y: Final = -(1 + 3*2)
Z: Final = Y + 1
class C:
A: Final = 1
B: Final = -1
def f1() -> int:
return X
def f2() -> int:
return X + Y
def f3() -> int:
return Z
def f4() -> int:
return C.A
def f5() -> int:
return C.B
[out]
def C.__mypyc_defaults_setup(__mypyc_self__):
__mypyc_self__ :: __main__.C
L0:
__mypyc_self__.A = 2
__mypyc_self__.B = -2
return 1
def f1():
L0:
return -2
def f2():
L0:
return -16
def f3():
L0:
return -12
def f4():
L0:
return 2
def f5():
L0:
return -2
[case testConvertIntegralToInt]
def bool_to_int(b: bool) -> int:
return int(b)
def int_to_int(n: int) -> int:
return int(n)
[out]
def bool_to_int(b):
b, r0 :: bool
r1 :: int
L0:
r0 = b << 1
r1 = extend r0: builtins.bool to builtins.int
return r1
def int_to_int(n):
n :: int
L0:
return n
[case testIntUnaryOps]
def unary_minus(n: int) -> int:
x = -n
return x
def unary_plus(n: int) -> int:
x = +n
return x
def unary_invert(n: int) -> int:
x = ~n
return x
[out]
def unary_minus(n):
n, r0, x :: int
L0:
r0 = CPyTagged_Negate(n)
x = r0
return x
def unary_plus(n):
n, x :: int
L0:
x = n
return x
def unary_invert(n):
n, r0, x :: int
L0:
r0 = CPyTagged_Invert(n)
x = r0
return x