[pypy-svn] r33411 - in pypy/dist/pypy/translator/asm/ppcgen: . test

mwh at codespeak.net mwh at codespeak.net
Wed Oct 18 18:39:22 CEST 2006


Author: mwh
Date: Wed Oct 18 18:39:19 2006
New Revision: 33411

Modified:
   pypy/dist/pypy/translator/asm/ppcgen/rassemblermaker.py
   pypy/dist/pypy/translator/asm/ppcgen/test/test_rassemblermaker.py
Log:
support in rassemblermaker for the strange coding of the 'spr' field.


Modified: pypy/dist/pypy/translator/asm/ppcgen/rassemblermaker.py
==============================================================================
--- pypy/dist/pypy/translator/asm/ppcgen/rassemblermaker.py	(original)
+++ pypy/dist/pypy/translator/asm/ppcgen/rassemblermaker.py	Wed Oct 18 18:39:19 2006
@@ -36,6 +36,9 @@
     assert 'v' not in sig # that wouldn't be funny
     #body.append('print %r'%name + ', ' + ', '.join(["'%s:', %s"%(s, s) for s in sig]))
     for field, value in fieldvalues:
+        if field.name == 'spr':
+            body.append('spr = (%s&31) << 5 | (%s >> 5 & 31)'%(value, value))
+            value = 'spr'
         body.append('v |= (%3s & %#05x) << %d'%(value,
                                            field.mask,
                                            (32 - field.right - 1)))

Modified: pypy/dist/pypy/translator/asm/ppcgen/test/test_rassemblermaker.py
==============================================================================
--- pypy/dist/pypy/translator/asm/ppcgen/test/test_rassemblermaker.py	(original)
+++ pypy/dist/pypy/translator/asm/ppcgen/test/test_rassemblermaker.py	Wed Oct 18 18:39:19 2006
@@ -20,7 +20,7 @@
         return ra.insts[0]
     res = interpret(f, [])
     assert res == add_r3_r3_r4
-    
+
 def test_mnemonic():
     mrs = []
     for A in PPCAssembler, RPPCAssembler:
@@ -28,4 +28,12 @@
         a.mr(3, 4)
         mrs.append(a.insts[0])
     assert mrs[0].assemble() == mrs[1]
-    
+
+def test_spr_coding():
+    mrs = []
+    for A in PPCAssembler, RPPCAssembler:
+        a = A()
+        a.mtctr(3)
+        mrs.append(a.insts[0])
+    assert mrs[0].assemble() == mrs[1]
+



More information about the Pypy-commit mailing list