[pypy-commit] pypy arm64: same as

fijal pypy.commits at gmail.com
Wed May 15 06:32:35 EDT 2019


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: arm64
Changeset: r96617:4ba2f313407e
Date: 2019-05-15 10:31 +0000
http://bitbucket.org/pypy/pypy/changeset/4ba2f313407e/

Log:	same as

diff --git a/rpython/jit/backend/aarch64/opassembler.py b/rpython/jit/backend/aarch64/opassembler.py
--- a/rpython/jit/backend/aarch64/opassembler.py
+++ b/rpython/jit/backend/aarch64/opassembler.py
@@ -157,6 +157,17 @@
         self.mc.ADD_ri(value_loc.value, value_loc.value, 1)
         self.mc.STR_ri(value_loc.value, base_loc.value, 0)
 
+    def _genop_same_as(self, op, arglocs):
+        argloc, resloc = arglocs
+        if argloc is not resloc:
+            self.mov_loc_loc(argloc, resloc)
+
+    emit_op_same_as_i = _genop_same_as
+    emit_op_same_as_r = _genop_same_as
+    emit_op_same_as_f = _genop_same_as
+    emit_op_cast_ptr_to_int = _genop_same_as
+    emit_op_cast_int_to_ptr = _genop_same_as
+
     # -------------------------------- fields -------------------------------
 
     def emit_op_gc_store(self, op, arglocs):
diff --git a/rpython/jit/backend/aarch64/regalloc.py b/rpython/jit/backend/aarch64/regalloc.py
--- a/rpython/jit/backend/aarch64/regalloc.py
+++ b/rpython/jit/backend/aarch64/regalloc.py
@@ -675,6 +675,24 @@
     prepare_op_nursery_ptr_increment = prepare_op_int_add
     prepare_comp_op_int_add_ovf = prepare_int_ri
 
+    def _prepare_op_same_as(self, op):
+        arg = op.getarg(0)
+        imm_arg = check_imm_box(arg)
+        if imm_arg:
+            argloc = self.convert_to_imm(arg)
+        else:
+            argloc = self.make_sure_var_in_reg(arg)
+        self.possibly_free_vars_for_op(op)
+        self.free_temp_vars()
+        resloc = self.force_allocate_reg(op)
+        return [argloc, resloc]
+
+    prepare_op_cast_ptr_to_int = _prepare_op_same_as
+    prepare_op_cast_int_to_ptr = _prepare_op_same_as
+    prepare_op_same_as_i = _prepare_op_same_as
+    prepare_op_same_as_r = _prepare_op_same_as
+    prepare_op_same_as_f = _prepare_op_same_as
+
     def prepare_op_jump(self, op):
         assert self.jump_target_descr is None
         descr = op.getdescr()


More information about the pypy-commit mailing list