vsx.md (VSX_EXTRACT_FL): New iterator for all binary floating point types supported...
authorMichael Meissner <meissner@linux.vnet.ibm.com>
Tue, 1 Nov 2016 00:41:30 +0000 (00:41 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Tue, 1 Nov 2016 00:41:30 +0000 (00:41 +0000)
commit156b5ccae7b1542a23d4d42b0a6cf9672c7b6e7d
tree0b64ac057b25bef1487ad672b70544c9e0daf4ab
parentfb4c92aabcbb34c33584d4c60df8d9baed3dca7a
vsx.md (VSX_EXTRACT_FL): New iterator for all binary floating point types supported by the hardware...

[gcc]
2016-10-31  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/vsx.md (VSX_EXTRACT_FL): New iterator for all
binary floating point types supported by the hardware except for
double.
(vsx_xvcvsxwdp_df): Provide scalar result alternative to the
vector instruction for optimizing extracting a SImode from a
V4SImode vector and converting it to floating point.
(vsx_xvcvuxwdp_df): Likewise.
(vsx_extract_si): On ISA 3.0, allow extract target and temporary
registers to be any VSX register.  Move stores to the end of the
constraints.
(vsx_extract_si_<uns>float_df): New combiner pattern and splitter
to optimize extracting a SImode from a V4SImode vector and
converting it to a binary floating point type supported by the
hardware.  Use the vector converts instead of extracting the
element, sign extending it, and then converting it to double.
Other floating point types  than double first convert to double,
then the double is converted to that type.
(vsx_extract_si_<uns>float_<mode>): Likewise.

[gcc/testsuite]
2016-10-31  Michael Meissner  <meissner@linux.vnet.ibm.com>

* gcc.target/powerpc/vsx-extract-4.c: New test.
* gcc.target/powerpc/vsx-extract-5.c: Likewise.

From-SVN: r241731
gcc/ChangeLog
gcc/config/rs6000/vsx.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/vsx-extract-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vsx-extract-5.c [new file with mode: 0644]