]> 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)
committerPeter Bergner <bergner@linux.ibm.com>
Thu, 23 Jul 2020 17:17:21 +0000 (12:17 -0500)
commit5497677b497b95a261089d19f5295cc80f99a2b6
tree814f66bdec3da1c08bfa696fd3e9784efc9ccb72
parent5b9f6489081520b7cb10d3ddfae6f010e0986314
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.

(cherry picked from commit ae575662833d70cb7d74b9538096c7becc79af14)
gcc/config/rs6000/rs6000-call.c
gcc/testsuite/gcc.target/powerpc/mma-double-test.c
gcc/testsuite/gcc.target/powerpc/mma-single-test.c