]> gcc.gnu.org Git - gcc.git/commit
PowerPC: Switch to dense math names for all MMA operations.
authorMichael Meissner <meissner@linux.ibm.com>
Sat, 3 Dec 2022 01:21:13 +0000 (20:21 -0500)
committerMichael Meissner <meissner@linux.ibm.com>
Sat, 3 Dec 2022 01:21:13 +0000 (20:21 -0500)
commit11d1c693fe8f974f6106ab5e81fecc29d1fa37d1
treec3e1cfa18b5bd3defc1456855c413019a9581e46
parentc6e31f7f9febe98c831bfaa51adf5cf5df192701
PowerPC: Switch to dense math names for all MMA operations.

This patch changes the assembler instruction names for MMA instructions from
the original name used in power10 to the new name when used with the dense math
system.  I.e. xvf64gerpp becomes dmxvf64gerpp.  The assembler will emit the
same bits for either spelling.

The patches have been tested on the following platforms.  I added the patches
for PR target/107299 that I submitted on November 2nd before doing the builds so
that GCC would build on systems using IEEE 128-bit long double.
    * https://gcc.gnu.org/pipermail/gcc-patches/2022-November/604834.html

There were no regressions with doing bootstrap builds and running the regression
tests:

    1) Power10 LE using --with-cpu=power10 --with-long-double-format=ieee;
    2) Power10 LE using --with-cpu=power10 --with-long-double-format=ibm;
    3) Power9 LE using --with-cpu=power9 --with-long-double-format=ibm; and
    4) Power8 BE using --with-cpu=power8 (both 32-bit & 64-bit tested).

Can I check this patch into the GCC 13 master branch?

2022-11-09   Michael Meissner  <meissner@linux.ibm.com>

gcc/

* config/rs6000/mma.md (vvi4i4i8_dm): New int attribute.
(avvi4i4i8_dm): Likewise.
(vvi4i4i2_dm): Likewise.
(avvi4i4i2_dm): Likewise.
(vvi4i4_dm): Likewise.
(avvi4i4_dm): Likewise.
(pvi4i2_dm): Likewise.
(apvi4i2_dm): Likewise.
(vvi4i4i4_dm): Likewise.
(avvi4i4i4_dm): Likewise.
(mma_<vv>): Add support for running on DMF systems, generating the dense
math instruction and using the dense math accumulators.
(mma_<avv>): Likewise.
(mma_<pv>): Likewise.
(mma_<apv>): Likewise.
(mma_<vvi4i4i8>): Likewise.
(mma_<avvi4i4i8>): Likewise.
(mma_<vvi4i4i2>): Likewise.
(mma_<avvi4i4i2>): Likewise.
(mma_<vvi4i4>): Likewise.
(mma_<avvi4i4): Likewise.
(mma_<pvi4i2>): Likewise.
(mma_<apvi4i2): Likewise.
(mma_<vvi4i4i4>): Likewise.
(mma_<avvi4i4i4>): Likewise.

gcc/testsuite/

* gcc.target/powerpc/dm-double-test.c: New test.
* lib/target-supports.exp (check_effective_target_ppc_dmr_ok): New
target test.
gcc/config/rs6000/mma.md
gcc/testsuite/gcc.target/powerpc/dm-double-test.c [new file with mode: 0644]
gcc/testsuite/lib/target-supports.exp
This page took 0.064383 seconds and 6 git commands to generate.