Author: Richard Plangger <planri...@gmail.com>
Branch: ppc-vsx-support
Changeset: r86877:0e4fa815252e
Date: 2016-09-05 09:28 +0200
http://bitbucket.org/pypy/pypy/changeset/0e4fa815252e/

Log:    killed a bug in unpacking multiple

diff --git a/rpython/jit/backend/ppc/vector_ext.py 
b/rpython/jit/backend/ppc/vector_ext.py
--- a/rpython/jit/backend/ppc/vector_ext.py
+++ b/rpython/jit/backend/ppc/vector_ext.py
@@ -534,13 +534,13 @@
             self.mc.load_imm(r.SCRATCH2, PARAM_SAVE_AREA_OFFSET+16)
             self.mc.stvx(res, r.SCRATCH2.value, r.SP.value)
             if count * size == 8:
-                stidx = 0
                 if not IS_BIG_ENDIAN:
-                    idx = (16 // size) - 1 - idx
-                    stidx = 0
-                off = PARAM_SAVE_AREA_OFFSET + idx * size
+                    endian_off = 8
+                off = PARAM_SAVE_AREA_OFFSET
+                off = off + endian_off - (idx * size)
+                assert idx * size + 8 <= 16
                 self.mc.load(r.SCRATCH.value, r.SP.value, off)
-                self.mc.store(r.SCRATCH.value, r.SP.value, 
PARAM_SAVE_AREA_OFFSET+16+stidx)
+                self.mc.store(r.SCRATCH.value, r.SP.value, 
PARAM_SAVE_AREA_OFFSET+16+endian_off)
                 self.mc.lvx(res, r.SCRATCH2.value, r.SP.value)
                 return
 
diff --git a/rpython/jit/metainterp/test/test_vector.py 
b/rpython/jit/metainterp/test/test_vector.py
--- a/rpython/jit/metainterp/test/test_vector.py
+++ b/rpython/jit/metainterp/test/test_vector.py
@@ -826,7 +826,6 @@
                        (2**31-1 if i%2==0 else 0)
 
     def test_unpack_several(self):
-        # count == 2
         values = [1,2,3,4]
         for i,v in enumerate(values):
             j = (i // 2) * 2
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to