Author: Maciej Fijalkowski <[email protected]>
Branch: arm64
Changeset: r96930:c13e72242f19
Date: 2019-07-03 07:58 +0000
http://bitbucket.org/pypy/pypy/changeset/c13e72242f19/

Log:    (arigo)

        Add the newer synchronization instructions to use

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
@@ -411,11 +411,25 @@
         base = 0b11101010000
         self.write32((base << 21) | (rm << 16) | (shift << 10) | (rn << 5) | 
0b11111)
 
+    def STLR(self, rt, rn):
+        base = 0b11001000100
+        self.write32((base << 21) | (0b11111 << 16) | (0b111111 << 10) | (rn 
<< 5) | rt)
+
+    def LDXR(self, rt, rn):
+        base = 0b1100100001011111011111
+        self.write32((base << 10) | (rn << 5) | rt)
+
+    def STXR(self, rs, rt, rn):
+        base = 0b11001000000
+        self.write32((base << 21) | (rs << 16) | (0b011111 << 10) | (rn << 5) 
| rt)
+
     def LDAXR(self, rt, rn):
+        # XXX DON'T USE
         base = 0b1100100001011111111111
         self.write32((base << 10) | (rn << 5) | rt)
 
     def STLXR(self, rt, rn, rs):
+        # XXX DON'T USE
         base = 0b11001000000
         self.write32((base << 21) | (rs << 16) | (0b111111 << 10) | (rn << 5) 
| rt)
 
@@ -463,6 +477,7 @@
         self.write32(0b11010100001 << 21)
 
     def DMB(self):
+        # XXX DON'T USE
         self.write32(0b11010101000000110011111110111111)
 
     def gen_load_int_full(self, r, value):
diff --git a/rpython/jit/backend/aarch64/test/test_instr_builder.py 
b/rpython/jit/backend/aarch64/test/test_instr_builder.py
--- a/rpython/jit/backend/aarch64/test/test_instr_builder.py
+++ b/rpython/jit/backend/aarch64/test/test_instr_builder.py
@@ -157,3 +157,18 @@
         cb = CodeBuilder()
         cb.BRK()
         assert cb.hexdump() == assemble("BRK 0")
+
+    def test_STLR(self):
+        cb = CodeBuilder()
+        cb.STLR(r.x11.value, r.x22.value)
+        assert cb.hexdump() == assemble("STLR x11, [x22]")
+
+    def test_LDXR(self):
+        cb = CodeBuilder()
+        cb.LDXR(r.x11.value, r.x22.value)
+        assert cb.hexdump() == assemble("LDXR x11, [x22]")
+
+    def test_STXR(self):
+        cb = CodeBuilder()
+        cb.STXR(r.x6.value, r.x11.value, r.x22.value)
+        assert cb.hexdump() == assemble("STXR w6, x11, [x22]")
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to