[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