Author: fijal
Branch: arm64
Changeset: r96530:1fe592cd9f4d
Date: 2019-04-22 11:17 +0200
http://bitbucket.org/pypy/pypy/changeset/1fe592cd9f4d/

Log:    LSL_ri & ASR_ri

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
@@ -10,6 +10,14 @@
 PC_OFFSET = 0 # XXX
 
 class AbstractAarch64Builder(object):
+    # just copied some values from 
https://gist.github.com/dinfuehr/51a01ac58c0b23e4de9aac313ed6a06a
+    immr_imms = {
+        32: (0b111011, 0b000000),
+        56: (0b111101, 0b000010),
+        48: (0b111100, 0b000001),
+        16: (0b111100, 0b000000),
+    }
+
     def write32(self, word):
         self.writechar(chr(word & 0xFF))
         self.writechar(chr((word >> 8) & 0xFF))
@@ -135,10 +143,20 @@
         base = 0b10011010110
         self.write32((base << 21) | (rm << 16) | (0b001000 << 10) | (rn << 5) 
| rd)
 
+    def LSL_ri(self, rd, rn, shift):
+        immr, imms = self.immr_imms[shift]
+        base = 0b1101001101
+        self.write32((base << 22) | (immr << 16) | (imms << 10) | (rn << 5) | 
rd)
+
     def ASR_rr(self, rd, rn, rm):
         base = 0b10011010110
         self.write32((base << 21) | (rm << 16) | (0b001010 << 10) | (rn << 5) 
| rd)
 
+    def ASR_ri(self, rd, rn, shift):
+        immr, imms = self.immr_imms[shift]
+        base = 0b1001001101
+        self.write32((base << 22) | (immr << 16) | (imms << 10) | (rn << 5) | 
rd)
+
     def LSR_rr(self, rd, rn, rm):
         base = 0b10011010110
         self.write32((base << 21) | (rm << 16) | (0b001001 << 10) | (rn << 5) 
| rd)
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to