Author: Richard Plangger <[email protected]>
Branch: ppc-vsx-support
Changeset: r86439:01d2126c6305
Date: 2016-08-23 11:08 +0200
http://bitbucket.org/pypy/pypy/changeset/01d2126c6305/

Log:    wrong offset loaded wrong value (passing unpack for i64)

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
@@ -470,8 +470,6 @@
                 self.mc.load_imm(r.SCRATCH2, PARAM_SAVE_AREA_OFFSET)
                 self.mc.stvx(vector, r.SCRATCH2.value, r.SP.value)
                 idx = residx
-                if not IS_BIG_ENDIAN:
-                    idx = 1 - idx
                 self.mc.store(src, r.SP.value, PARAM_SAVE_AREA_OFFSET+8*idx)
                 self.mc.lvx(res, r.SCRATCH2.value, r.SP.value)
             else:
@@ -499,7 +497,7 @@
             self.mc.stvx(src, r.SCRATCH2.value, r.SP.value)
             off = off + size * idx
             if size == 8:
-                self.mc.load(res, r.SP.value, off+size*idx)
+                self.mc.load(res, r.SP.value, off)
                 return
             elif size == 4:
                 self.mc.lwa(res, r.SP.value, off)
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
@@ -789,7 +789,7 @@
         #
         looptoken = JitCellToken()
         cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
-        import pdb; pdb.set_trace()
+        #import pdb; pdb.set_trace()
         deadframe = cpu.execute_token(looptoken, *args_values)
         print(source)
         if float:
@@ -805,10 +805,10 @@
                                "[2xf64]", {'x': (50.33,4321.0)}) == 4321.0
     def test_unpack_i64(self):
         # int64
+        assert self.run_unpack("i{i} = vec_unpack_i({x}, 1, 1)",
+                               "[2xi64]", {'x': (14,15)}, float=False) == 15
         assert self.run_unpack("i{i} = vec_unpack_i({x}, 0, 1)",
                                "[2xi64]", {'x': (11,12)}, float=False) == 11
-        assert self.run_unpack("i{i} = vec_unpack_i({x}, 1, 1)",
-                               "[2xi64]", {'x': (14,15)}, float=False) == 15
 
     def test_unpack_i(self):
         for i in range(16):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to