|
13 | 13 | ) |
14 | 14 | from mypyc.ir.ops import ( |
15 | 15 | Value, BasicBlock, LoadInt, Branch, Register, AssignmentTarget, TupleGet, |
16 | | - AssignmentTargetTuple, TupleSet, OpDescription |
| 16 | + AssignmentTargetTuple, TupleSet, OpDescription, BinaryIntOp |
17 | 17 | ) |
18 | 18 | from mypyc.ir.rtypes import ( |
19 | 19 | RType, is_short_int_rprimitive, is_list_rprimitive, is_sequence_rprimitive, |
20 | | - RTuple, is_dict_rprimitive |
| 20 | + RTuple, is_dict_rprimitive, short_int_rprimitive |
21 | 21 | ) |
22 | 22 | from mypyc.primitives.dict_ops import ( |
23 | 23 | dict_next_key_op, dict_next_value_op, dict_next_item_op, dict_check_size_op, |
24 | 24 | dict_key_iter_op, dict_value_iter_op, dict_item_iter_op |
25 | 25 | ) |
26 | | -from mypyc.primitives.int_ops import unsafe_short_add |
27 | 26 | from mypyc.primitives.list_ops import new_list_op, list_append_op, list_get_item_unsafe_op |
28 | 27 | from mypyc.primitives.generic_ops import iter_op, next_op |
29 | 28 | from mypyc.primitives.exc_ops import no_err_occurred_op |
@@ -465,10 +464,10 @@ def gen_step(self) -> None: |
465 | 464 | builder = self.builder |
466 | 465 | line = self.line |
467 | 466 | step = 1 if not self.reverse else -1 |
468 | | - builder.assign(self.index_target, builder.primitive_op( |
469 | | - unsafe_short_add, |
470 | | - [builder.read(self.index_target, line), |
471 | | - builder.add(LoadInt(step))], line), line) |
| 467 | + add = builder.binary_int_op(short_int_rprimitive, |
| 468 | + builder.read(self.index_target, line), |
| 469 | + builder.add(LoadInt(step)), BinaryIntOp.ADD, line) |
| 470 | + builder.assign(self.index_target, add, line) |
472 | 471 |
|
473 | 472 |
|
474 | 473 | class ForDictionaryCommon(ForGenerator): |
@@ -635,9 +634,9 @@ def gen_step(self) -> None: |
635 | 634 | # short ints. |
636 | 635 | if (is_short_int_rprimitive(self.start_reg.type) |
637 | 636 | and is_short_int_rprimitive(self.end_reg.type)): |
638 | | - new_val = builder.primitive_op( |
639 | | - unsafe_short_add, [builder.read(self.index_reg, line), |
640 | | - builder.add(LoadInt(self.step))], line) |
| 637 | + new_val = builder.binary_int_op(short_int_rprimitive, |
| 638 | + builder.read(self.index_reg, line), |
| 639 | + builder.add(LoadInt(self.step)), BinaryIntOp.ADD, line) |
641 | 640 |
|
642 | 641 | else: |
643 | 642 | new_val = builder.binary_op( |
@@ -665,9 +664,9 @@ def gen_step(self) -> None: |
665 | 664 | # We can safely assume that the integer is short, since we are not going to wrap |
666 | 665 | # around a 63-bit integer. |
667 | 666 | # NOTE: This would be questionable if short ints could be 32 bits. |
668 | | - new_val = builder.primitive_op( |
669 | | - unsafe_short_add, [builder.read(self.index_reg, line), |
670 | | - builder.add(LoadInt(1))], line) |
| 667 | + new_val = builder.binary_int_op(short_int_rprimitive, |
| 668 | + builder.read(self.index_reg, line), |
| 669 | + builder.add(LoadInt(1)), BinaryIntOp.ADD, line) |
671 | 670 | builder.assign(self.index_reg, new_val, line) |
672 | 671 | builder.assign(self.index_target, new_val, line) |
673 | 672 |
|
|
0 commit comments