| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- [case testIntNeq]
- def f(x: int, y: int) -> bool:
- return x != y
- [out]
- def f(x, y):
- x, y :: int
- r0 :: native_int
- r1, r2 :: bit
- r3 :: bool
- r4, r5 :: bit
- L0:
- r0 = x & 1
- r1 = r0 == 0
- if r1 goto L1 else goto L2 :: bool
- L1:
- r2 = x != y
- r3 = r2
- goto L3
- L2:
- r4 = CPyTagged_IsEq_(x, y)
- r5 = r4 ^ 1
- r3 = r5
- L3:
- return r3
- [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 :: bit
- r4 :: native_int
- r5, r6, r7 :: bit
- L0:
- r0 = x == 6
- if r0 goto L1 else goto L2 :: bool
- L1:
- return 2
- L2:
- r1 = x != 8
- if r1 goto L3 else goto L4 :: bool
- L3:
- return 4
- L4:
- r2 = 10 == x
- if r2 goto L5 else goto L6 :: bool
- L5:
- return 6
- L6:
- r3 = 12 != x
- if r3 goto L7 else goto L8 :: bool
- L7:
- return 8
- L8:
- r4 = x & 1
- r5 = r4 != 0
- if r5 goto L9 else goto L10 :: bool
- L9:
- r6 = CPyTagged_IsLt_(x, 8)
- if r6 goto L11 else goto L12 :: bool
- L10:
- r7 = x < 8 :: signed
- if r7 goto L11 else goto L12 :: bool
- L11:
- return 10
- L12:
- L13:
- L14:
- L15:
- L16:
- return 12
- [case testIntMin]
- def f(x: int, y: int) -> int:
- return min(x, y)
- [out]
- def f(x, y):
- x, y :: int
- r0 :: native_int
- r1 :: bit
- r2 :: native_int
- r3, r4, r5 :: bit
- r6 :: bool
- r7 :: bit
- r8 :: int
- L0:
- r0 = y & 1
- r1 = r0 == 0
- r2 = x & 1
- r3 = r2 == 0
- r4 = r1 & r3
- if r4 goto L1 else goto L2 :: bool
- L1:
- r5 = y < x :: signed
- r6 = r5
- goto L3
- L2:
- r7 = CPyTagged_IsLt_(y, x)
- r6 = r7
- L3:
- if r6 goto L4 else goto L5 :: bool
- L4:
- r8 = y
- goto L6
- L5:
- r8 = x
- L6:
- return r8
- [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_extensions 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 testIntUnaryPlus]
- def unary_plus(n: int) -> int:
- x = +n
- return x
- [out]
- def unary_plus(n):
- n, x :: int
- L0:
- x = n
- return x
|