Anton Blanchard <an...@ozlabs.org> writes: > From: Anton Blanchard <an...@samba.org> > > Add a POWER9 optimised copy_page() loop. This loop uses the new D form > vector loads and stores, and uses dcbz to pre zero the destination. > ... > + > +#ifdef CONFIG_ALTIVEC > + mflr r0 > + std r3,-STACKFRAMESIZE+STK_REG(R31)(r1) > + std r4,-STACKFRAMESIZE+STK_REG(R30)(r1) > + std r0,16(r1) > + stdu r1,-STACKFRAMESIZE(r1) > + bl enter_vmx_copy > + cmpwi r3,0 > + ld r0,STACKFRAMESIZE+16(r1) > + ld r3,STK_REG(R31)(r1) > + ld r4,STK_REG(R30)(r1) > + addi r1,r1,STACKFRAMESIZE > + mtlr r0 > + > + li r0,((PAGE_SIZE/128)-2) > + mtctr r0 > + > + li r8,256 > + > + beq .Lnonvmx_copy > + > + .balign 16 > +1: dcbz r8,r3 > + lxv vs32,0(r4) > + lxv vs33,16(r4)
Unfortunately this doesn't build: arch/powerpc/lib/copypage_power9.S: Assembler messages: arch/powerpc/lib/copypage_power9.S:66: Error: unrecognized opcode: `lxv' arch/powerpc/lib/copypage_power9.S:67: Error: unrecognized opcode: `lxv' arch/powerpc/lib/copypage_power9.S:68: Error: unrecognized opcode: `stxv' arch/powerpc/lib/copypage_power9.S:69: Error: unrecognized opcode: `stxv' Presumably we need to a .long macro version for older toolchains? cheers