diff options
author | Bill Schmidt <wschmidt@linux.vnet.ibm.com> | 2014-09-09 16:53:07 +0000 |
---|---|---|
committer | William Schmidt <wschmidt@gcc.gnu.org> | 2014-09-09 16:53:07 +0000 |
commit | 65cf8039d32910001c273c983969825597f00d5b (patch) | |
tree | 3873519b76ba2ef7abf0fa9fe985713de31a460b /gcc/config/rs6000/rs6000.c | |
parent | 647d790d2f08bf28e5972644efd563057ff7634d (diff) | |
download | gcc-65cf8039d32910001c273c983969825597f00d5b.zip gcc-65cf8039d32910001c273c983969825597f00d5b.tar.gz gcc-65cf8039d32910001c273c983969825597f00d5b.tar.bz2 |
rs6000.c (rtx_is_swappable_p): Add UNSPEC_VSX_CVDPSPN as an unswappable operand...
[gcc]
2014-09-09 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/rs6000.c (rtx_is_swappable_p): Add
UNSPEC_VSX_CVDPSPN as an unswappable operand, and add commentary
on how to make it legal in future.
[gcc/testsuite]
2014-09-09 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gcc.target/powerpc/swaps-p8-15.c: Remove scan-assembler-not for
xxpermdi and add commentary about adding it back later; remove
unused typedef.
From-SVN: r215088
Diffstat (limited to 'gcc/config/rs6000/rs6000.c')
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 3ed8107..dcd8c72 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -33761,8 +33761,6 @@ rtx_is_swappable_p (rtx op, unsigned int *special) case UNSPEC_VSUMSWS: case UNSPEC_VSUMSWS_DIRECT: case UNSPEC_VSX_CONCAT: - case UNSPEC_VSX_CVSPDP: - case UNSPEC_VSX_CVSPDPN: case UNSPEC_VSX_SET: case UNSPEC_VSX_SLDWI: case UNSPEC_VUNPACK_HI_SIGN: @@ -33775,6 +33773,15 @@ rtx_is_swappable_p (rtx op, unsigned int *special) case UNSPEC_VUPKLPX: case UNSPEC_VUPKLS_V4SF: case UNSPEC_VUPKLU_V4SF: + /* The following could be handled as an idiom with XXSPLTW. + These place a scalar in BE element zero, but the XXSPLTW + will currently expect it in BE element 2 in a swapped + region. When one of these feeds an XXSPLTW with no other + defs/uses either way, we can avoid the lane change for + XXSPLTW and things will be correct. TBD. */ + case UNSPEC_VSX_CVDPSPN: + case UNSPEC_VSX_CVSPDP: + case UNSPEC_VSX_CVSPDPN: return 0; case UNSPEC_VSPLT_DIRECT: *special = SH_SPLAT; |