Author: Richard Plangger <[email protected]>
Branch: ppc-vsx-support
Changeset: r85159:9072f071d260
Date: 2016-06-14 14:47 +0200
http://bitbucket.org/pypy/pypy/changeset/9072f071d260/
Log: added vector store instruction and test for a load store combination
diff --git a/rpython/jit/backend/ppc/codebuilder.py
b/rpython/jit/backend/ppc/codebuilder.py
--- a/rpython/jit/backend/ppc/codebuilder.py
+++ b/rpython/jit/backend/ppc/codebuilder.py
@@ -268,7 +268,6 @@
lwbrx = XD(31, XO1=534)
lwzux = XD(31, XO1=55)
lwzx = XD(31, XO1=23)
- lxvd2x = XX1(31, XO1=844)
mcrfs = Form("crfD", "crfS", "XO1")(63, XO1=64)
mcrxr = Form("crfD", "XO1")(31, XO1=512)
@@ -571,7 +570,21 @@
xor = XS(31, XO1=316, Rc=0)
xorx = XS(31, XO1=316, Rc=1)
-class PPCAssembler(BasicPPCAssembler):
+ #
+
+class PPCVSXAssembler(object):
+ _mixin_ = True
+
+ # load
+ lxvdsx = XX1(31, XO1=332) # splat first element
+ lxvd2x = XX1(31, XO1=844)
+ lxvw4x = XX1(31, XO1=780)
+
+ # store
+ stxvd2x = XX1(31, XO1=972)
+ stxvw4x = XX1(31, XO1=908)
+
+class PPCAssembler(BasicPPCAssembler, PPCVSXAssembler):
BA = BasicPPCAssembler
# awkward mnemonics:
diff --git a/rpython/jit/backend/ppc/test/test_vector_instr.py
b/rpython/jit/backend/ppc/test/test_vector_instr.py
--- a/rpython/jit/backend/ppc/test/test_vector_instr.py
+++ b/rpython/jit/backend/ppc/test/test_vector_instr.py
@@ -58,10 +58,19 @@
if cpu not in ["ppc", "ppc64", "ppc-64"]:
py.test.skip("can't test all of ppcgen on non-PPC!")
- @vec_asmtest(memory=[(8, signed, [0,0])])
+ @vec_asmtest(memory=[(16, signed, [0,0])])
def test_unaligned_load(self, a, mem):
a.load_imm(r15, mem)
a.lxvd2x(vr0.value, 0, r15.value)
a.blr()
return [ (0, signed, mem), (0, signed, mem+8) ]
+ @vec_asmtest(memory=[(16, signed, [1,2]), (16, signed, [0,0])])
+ def test_unaligned_load_and_store(self, a, mem_l, mem_t):
+ a.load_imm(r15, mem_l)
+ a.load_imm(r14, mem_t)
+ a.lxvd2x(vr0.value, 0, r15.value)
+ a.stxvd2x(vr0.value, 0, r14.value)
+ a.blr()
+ return [ (1, signed, mem_t), (2, signed, mem_t+8) ]
+
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit