Author: Richard Plangger <[email protected]>
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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit