Commit 65cf8039 by Bill Schmidt Committed by William Schmidt

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
parent 647d790d
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.
2014-09-09 David Malcolm <dmalcolm@redhat.com>
* caller-save.c (rtx saveinsn): Strengthen this variable from rtx
......@@ -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;
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.
2014-09-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* gcc.target/arm/vect-lceilf_1.c: Make input and output arrays global
......
......@@ -3,13 +3,14 @@
/* { dg-final { scan-assembler "lxvd2x" } } */
/* { dg-final { scan-assembler "stxvd2x" } } */
/* { dg-final { scan-assembler "xxspltw" } } */
/* { dg-final { scan-assembler-not "xxpermdi" } } */
/* Currently the analyze_swaps phase cannot optimize this loop because
of the presence of an UNSPEC_VSX_CVDPSPN. At such time as this is
handled, we need to add a 'scan-assembler-not "xxpermdi"' directive to
this test. */
#include <altivec.h>
void abort();
typedef struct xx {vector double l; vector double h;} xx;
#define N 4096
#define M 10000000
vector float ca[N][4] = {0};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment