]> git.ipfire.org Git - thirdparty/gcc.git/commit
rs6000: __builtin_mma_disassemble_acc() doesn't store elements correctly in LE mode
authorPeter Bergner <bergner@linux.ibm.com>
Wed, 22 Jul 2020 16:44:35 +0000 (11:44 -0500)
committerGiuliano Belinassi <giuliano.belinassi@usp.br>
Mon, 17 Aug 2020 16:19:01 +0000 (13:19 -0300)
commit11acfd4f381bb882135b134687de86fdce85eb1f
tree9d185131819fc8df30f6e0248ec28dad93939c5d
parent800649d79ed7e215edd4f47ec438fa870a1dc9f1
rs6000: __builtin_mma_disassemble_acc() doesn't store elements correctly in LE mode

PR96236 shows a problem where we don't correctly store our 512-bit accumulators
correctly in little-endian mode.  The patch below detects when we're doing a
little-endian memory access and stores to the correct memory locations.

2020-07-22  Peter Bergner  <bergner@linux.ibm.com>

gcc/
PR target/96236
* config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Handle
little-endian memory ordering.

gcc/testsuite/
PR target/96236
* gcc.target/powerpc/mma-double-test.c: Update storing results for
correct little-endian ordering.
* gcc.target/powerpc/mma-single-test.c: Likewise.
gcc/config/rs6000/rs6000-call.c
gcc/testsuite/gcc.target/powerpc/mma-double-test.c
gcc/testsuite/gcc.target/powerpc/mma-single-test.c