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

Reply via email to