On 11/24/25 10:49 PM, Avinash Jayakar wrote:
> As discussed, we need to relax the requirement on __vector_pair and
> __vector_quad so that it is not tied up to MMA.

I can believe enabling __vector_pair on pre-Power10 cpus would work,
but I don't think you can do the same for __vector_quad, given its
use as a proxy for the Power10 MMA accumulators.  The rs6000 port
has some nasty code that was hard to get right that automatically
emits the MMA insns xxmtacc & xxmfacc to prime & deprime the
accumulators on XOmode loads and stores.  That would all have to
be disabled on pre-Power10 cpus.

Can you remind me what problem you are trying to solve?

Peter



bergner@cfarm120:~$ cat vec_quad.c
void
food (__vector_quad *dst, __vector_quad *src)
{
  *dst = *src;
}
bergner@cfarm120:~$ gcc -O2 -mcpu=power10 -S vec_quad.c
bergner@cfarm120:~$ cat vec_quad.s
        .file   "vec_quad.c"
        .machine power10
        .abiversion 2
        .section        ".text"
        .align 2
        .p2align 4,,15
        .globl food
        .type   food, @function
food:
.LFB0:
        .cfi_startproc
        .localentry     food,1
        lxvp 2,0(4)
        lxvp 0,32(4)
        xxmtacc 0
        xxmfacc 0
        stxvp 2,0(3)
        stxvp 0,32(3)
        blr
        .long 0
        .byte 0,0,0,0,0,0,0,0
        .cfi_endproc
.LFE0:
        .size   food,.-food
        .ident  "GCC: (GNU) 11.5.0 20240719 (Red Hat 11.5.0-11)"
        .section        .note.GNU-stack,"",@progbits

Reply via email to