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