]> gcc.gnu.org Git - gcc.git/commit
Add IEEE 128-bit min/max support on PowerPC.
authorMichael Meissner <meissner@linux.ibm.com>
Thu, 29 Apr 2021 00:20:44 +0000 (20:20 -0400)
committerMichael Meissner <meissner@linux.ibm.com>
Thu, 29 Apr 2021 00:20:44 +0000 (20:20 -0400)
commitf49961af961ecd7619325f151e31c4f61072a583
tree5de4d9e15bfa6138fc969cb93e1bce6a04340ebb
parent54fa6545fd5824a15ed09bdf055c0696f83671f5
Add IEEE 128-bit min/max support on PowerPC.

This patch adds the support for the IEEE 128-bit floating point C minimum and
maximum instructions.  The next patch will add the support for using the
compare and set mask instruction to implement conditional moves.

This patch does not try to re-use the code used for SF/DF min/max
support.  It defines a separate insn for the IEEE 128-bit support.  It
uses the code iterator <minmax> to simplify adding both operations.

The middle end will not convert ?: operations into using min/max
instructions provided in this patch unless the user uses -Ofast or similar
switches due to issues with NaNs.  The next patch that adds conditional
move instructions will enable the ?: conversion in many cases.

gcc/
2021-04-28  Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/rs6000.c (rs6000_emit_minmax): Add support for ISA
3.1 IEEE 128-bit floating point xsmaxcqp and xsmincqp instructions.
* config/rs6000/rs6000.md (s<minmax><mode>3, IEEE128 iterator):
New insns.

gcc/testsuite/
2021-04-28  Michael Meissner  <meissner@linux.ibm.com>

* gcc.target/powerpc/float128-minmax-2.c: New test.
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.md
gcc/testsuite/gcc.target/powerpc/float128-minmax-2.c [new file with mode: 0644]
This page took 0.068717 seconds and 6 git commands to generate.