[gcc]
commit9fc5a5fc32c9e0c75029f56688899e74c157fea7
authormeissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 1 Nov 2016 00:41:30 +0000 (1 00:41 +0000)
committermeissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 1 Nov 2016 00:41:30 +0000 (1 00:41 +0000)
tree0b64ac057b25bef1487ad672b70544c9e0daf4ab
parent1ca93b05c623aee47695f152150b597127c3be16
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241731 138bc75d-0d04-0410-961f-82ee72b054a4
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]