]> gcc.gnu.org Git - gcc.git/commit
Do not generate vmaddfp and vnmsubfp
authorMichael Meissner <meissner@linux.ibm.com>
Sat, 8 Apr 2023 00:54:53 +0000 (20:54 -0400)
committerMichael Meissner <meissner@linux.ibm.com>
Sat, 8 Apr 2023 00:54:53 +0000 (20:54 -0400)
commite2681bd1160190c7efb88bfd4ad1d55af6f6a45e
treeb404d094177af54e9120a36ca5e9352b5c9c8c8f
parent1ceebb869a56a354e47268c2d7419a3ff583ffa2
Do not generate vmaddfp and vnmsubfp

This is version 3 of the patch.  This is essentially version 1 with the removal
of changes to altivec.md, and cleanup of the comments.

Version 2 generated the vmaddfp and vnmsubfp instructions if -Ofast was used,
and those changes are deleted in this patch.

The Altivec instructions vmaddfp and vnmsubfp have different rounding behaviors
than the VSX xvmaddsp and xvnmsubsp instructions.  In particular, generating
these instructions seems to break Eigen on big endian systems.

I have done bootstrap builds on power9 little endian (with both IEEE long
double and IBM long double).  I have also done the builds and test on a power8
big endian system (testing both 32-bit and 64-bit code generation).  Chip has
verified that it fixes the problem that Eigen encountered.  Can I check this
into the master GCC branch?  After a burn-in period, can I check this patch
into the active GCC branches?

Thanks in advance.

2023-04-07   Michael Meissner  <meissner@linux.ibm.com>

gcc/

PR target/70243
* config/rs6000/rs6000.md (vsx_fmav4sf4): Do not generate vmaddfp.
(vsx_nfmsv4sf4): Do not generate vnmsubfp.

gcc/testsuite/

PR target/70243
* gcc.target/powerpc/pr70243.c: New test.
gcc/config/rs6000/vsx.md
gcc/testsuite/gcc.target/powerpc/pr70243.c [new file with mode: 0644]
This page took 0.06826 seconds and 6 git commands to generate.