[Bug target/96236] New: __builtin_mma_disassemble_acc() doesn't store elements correctly in LE mode
bergner at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jul 17 20:08:07 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96236
Bug ID: 96236
Summary: __builtin_mma_disassemble_acc() doesn't store elements
correctly in LE mode
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: bergner at gcc dot gnu.org
Target Milestone: ---
The __builtin_mma_disassemble_acc built-in doesn't correctly account for little
endian byte ordering of the pointer type passed to it is not a __vector_quad
pointer as the following test case shows:
bergner@pike:~/$ cat disassemble.c
void
buggy (void *dst)
{
__vector_quad acc;
__builtin_mma_xxsetaccz (&acc);
__builtin_mma_disassemble_acc (dst, &acc);
}
void
foo (__vector_quad *dst)
{
__vector_quad acc;
__builtin_mma_xxsetaccz (&acc);
__builtin_mma_disassemble_acc (dst, &acc);
}
bergner@pike:~/$ gcc -S -O2 -mcpu=power10 disassemble.c
bergner@pike:~/$ cat disassemble.s
buggy:
xxsetaccz 0
xxmfacc 0
stxv 0,0(3)
stxv 1,16(3)
stxv 2,32(3)
stxv 3,48(3)
blr
foo:
xxsetaccz 0
xxmfacc 0
stxvp 2,0(3)
stxvp 0,32(3)
blr
More information about the Gcc-bugs
mailing list