re PR target/78658 (powerpc64le: ICE with -mcpu=power9 -Og)
authorMichael Meissner <meissner@linux.vnet.ibm.com>
Tue, 6 Dec 2016 22:15:31 +0000 (22:15 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Tue, 6 Dec 2016 22:15:31 +0000 (22:15 +0000)
commitdd5af1d61761e9bf466cd64360e6321cde0a2c5f
tree4c41da816695dbf5956be6f8d316107c9af52dfe
parent00439aef2dbc4f95ba6e4926d5f27d0bb28edcec
re PR target/78658 (powerpc64le: ICE with -mcpu=power9 -Og)

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

PR target/78658
* config/rs6000/rs6000.md (zero_extendqi<mode>2): Use ^ instead of
?* constraints for the ISA 3.0 patterns, so the register allocator
is more likely to allocate QImode/HImode to vector registers for
conversion to floating point unless a reload is needed.
(zero_extendhi<mode>2): Likewise.
(float<QHI:mode><FP_ISA3:mode>2_internal): Properly deal with the
first alternative which is converting QImode/HImode to floating
point and the QImode/HImode value is in a vector register, and
does not allocate the second pseudo register.  Remove zero
extending into traditional floating point registers, since the
instruction used only works on traditional altivec registers.
(floatuns<QHI:mode><FP_ISA3:mode>2_internal): Likewise.

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

PR target/78658
* gcc.target/powerpc/pr78658.c: New test.

From-SVN: r243320
gcc/ChangeLog
gcc/config/rs6000/rs6000.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/pr78658.c [new file with mode: 0644]