Author: Maciej Fijalkowski <[email protected]>
Branch: arm64
Changeset: r96848:5b330a4bfb72
Date: 2019-06-22 18:58 +0000
http://bitbucket.org/pypy/pypy/changeset/5b330a4bfb72/

Log:    some more obscure loads

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
@@ -116,10 +116,16 @@
 
     def LDR_ri(self, rt, rn, immed):
         base = 0b1111100101
-        assert 0 <= immed <= 1<<15
+        assert 0 <= immed < 1<<16
         assert immed & 0x7 == 0
         self.write32((base << 22) | (immed >> 3 << 10) | (rn << 5) | rt)
 
+    def LDR_uint32_ri(self, rt, rn, immed):
+        base = 0b1011100101
+        assert 0 <= immed < 1<<15
+        assert immed & 0x3 == 0
+        self.write32((base << 22) | (immed >> 2 << 10) | (rn << 5) | rt)
+
     def LDR_di(self, rt, rn, offset):
         assert offset & 0x7 == 0
         assert 0 <= offset < 32768
@@ -132,7 +138,7 @@
 
     def LDRB_ri(self, rt, rn, immed):
         base = 0b0011100101
-        assert 0 <= immed <= 1<<12
+        assert 0 <= immed < 1<<12
         self.write32((base << 22) | (immed << 10) | (rn << 5) | rt)
 
     def LDRSH_ri(self, rt, rn, immed):
@@ -153,6 +159,12 @@
         base = 0b01111000011
         self.write32((base << 21) | (rm << 16) | (0b011010 << 10) | (rn << 5) 
| rt)
 
+    def LDRH_ri(self, rt, rn, immed):
+        assert immed & 0b1 == 0
+        assert 0 <= immed < (1 << 13)
+        base = 0b0111100101
+        self.write32((base << 22) | (immed >> 1 << 10) | (rn << 5) | rt)
+
     def LDRB_rr(self, rt, rn, rm):
         base = 0b00111000011
         self.write32((base << 21) | (rm << 16) | (0b011010 << 10) | (rn << 5) 
| rt)
@@ -161,6 +173,12 @@
         base = 0b10111000101
         self.write32((base << 21) | (rm << 16) | (0b011010 << 10) | (rn << 5) 
| rt)
 
+    def LDRSW_ri(self, rt, rn, immed):
+        assert immed & 0x3 == 0
+        assert 0 <= immed < (1<<14)
+        base = 0b1011100110
+        self.write32((base << 22) | (immed >> 2 << 10) | (rn << 5) | rt)
+
     def LDRSH_rr(self, rt, rn, rm):
         base = 0b01111000101
         self.write32((base << 21) | (rm << 16) | (0b011010 << 10) | (rn << 5) 
| rt)
@@ -169,6 +187,11 @@
         base = 0b00111000101
         self.write32((base << 21) | (rm << 16) | (0b011010 << 10) | (rn << 5) 
| rt)
 
+    def LDRSB_ri(self, rt, rn, immed):
+        base = 0b0011100110
+        assert 0 <= immed < 1 << 12
+        self.write32((base << 22) | (immed << 10) | (rn << 5) | rt)
+
     def LDR_r_literal(self, rt, offset):
         base = 0b01011000
         assert -(1 << 20) <= offset < (1<< 20)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to