[pypy-commit] pypy arm64: casts
fijal
pypy.commits at gmail.com
Tue Jun 18 11:14:19 EDT 2019
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: arm64
Changeset: r96822:9453a6ab3fe2
Date: 2019-06-18 14:57 +0000
http://bitbucket.org/pypy/pypy/changeset/9453a6ab3fe2/
Log: casts
diff --git a/rpython/jit/backend/aarch64/codebuilder.py b/rpython/jit/backend/aarch64/codebuilder.py
--- a/rpython/jit/backend/aarch64/codebuilder.py
+++ b/rpython/jit/backend/aarch64/codebuilder.py
@@ -199,6 +199,14 @@
base = 0b0001111001100000110000
self.write32((base << 10) | (rn << 5) | rd)
+ def FCVTZS_d(self, rd, rn):
+ base = 0b1001111001111000
+ self.write32((base << 16) | (rn << 5) | rd)
+
+ def SCVTF_r(self, rd, rn):
+ base = 0b1001111001100010
+ self.write32((base << 16) | (rn << 5) | rd)
+
def SUB_rr(self, rd, rn, rm, s=0):
base = 0b11001011001 | (s << 8)
self.write32((base << 21) | (rm << 16) | (0b11 << 13) | (rn << 5) | (rd))
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
@@ -253,6 +253,14 @@
arg, res = arglocs
self.mc.FABS_d(res.value, arg.value)
+ def emit_op_cast_float_to_int(self, op, arglocs):
+ arg, res = arglocs
+ self.mc.FCVTZS_d(res.value, arg.value)
+
+ def emit_op_cast_int_to_float(self, op, arglocs):
+ arg, res = arglocs
+ self.mc.SCVTF_r(res.value, arg.value)
+
def emit_op_load_from_gc_table(self, op, arglocs):
res_loc, = arglocs
index = op.getarg(0).getint()
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
@@ -464,6 +464,9 @@
prepare_op_float_neg = prepare_unary
prepare_op_float_abs = prepare_unary
+ prepare_op_cast_float_to_int = prepare_unary
+ prepare_op_cast_int_to_float = prepare_unary
+
# --------------------------------- fields --------------------------
More information about the pypy-commit
mailing list