diff mbox series

Repost: [PATCH] Deal with prefixed loads/stores in tests, PR testsuite/100166

Message ID 20210707200320.GA29089@ibm-toto.the-meissners.org
State New
Headers show
Series Repost: [PATCH] Deal with prefixed loads/stores in tests, PR testsuite/100166 | expand

Commit Message

Michael Meissner July 7, 2021, 8:03 p.m. UTC
[PATCH] Deal with prefixed loads/stores in tests, PR testsuite/100166

This patch updates the various tests in the testsuite to treat plxv
and pstxv as being vector loads/stores.  This shows up if you run the
testsuite with a compiler configured with the option: --with-cpu=power10.

I have verified that these tests now all pass when I build and test a compiler
on a power10 system using --with-cpu=power10.  I have verified that they
continue to run on power9 little endian and power8 big endian systems.

Can I check this into the master branch?

2021-07-07  Michael Meissner  <meissner@linux.ibm.com>

gcc/testsuite/
	PR testsuite/100166
	* gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c:
	* gcc.target/powerpc/fold-vec-load-builtin_vec_xl-char.c:
	* gcc.target/powerpc/fold-vec-load-builtin_vec_xl-double.c:
	* gcc.target/powerpc/fold-vec-load-builtin_vec_xl-float.c:
	* gcc.target/powerpc/fold-vec-load-builtin_vec_xl-int.c:
	* gcc.target/powerpc/fold-vec-load-builtin_vec_xl-longlong.c:
	* gcc.target/powerpc/fold-vec-load-builtin_vec_xl-short.c:
	* gcc.target/powerpc/fold-vec-load-vec_vsx_ld-char.c:
	* gcc.target/powerpc/fold-vec-load-vec_vsx_ld-double.c:
	* gcc.target/powerpc/fold-vec-load-vec_vsx_ld-float.c:
	* gcc.target/powerpc/fold-vec-load-vec_vsx_ld-int.c:
	* gcc.target/powerpc/fold-vec-load-vec_vsx_ld-longlong.c:
	* gcc.target/powerpc/fold-vec-load-vec_vsx_ld-short.c:
	* gcc.target/powerpc/fold-vec-load-vec_xl-char.c:
	* gcc.target/powerpc/fold-vec-load-vec_xl-double.c:
	* gcc.target/powerpc/fold-vec-load-vec_xl-float.c:
	* gcc.target/powerpc/fold-vec-load-vec_xl-int.c:
	* gcc.target/powerpc/fold-vec-load-vec_xl-longlong.c:
	* gcc.target/powerpc/fold-vec-load-vec_xl-short.c:
	* gcc.target/powerpc/fold-vec-splat-floatdouble.c:
	* gcc.target/powerpc/fold-vec-splat-longlong.c:
	* gcc.target/powerpc/fold-vec-store-builtin_vec_xst-char.c:
	* gcc.target/powerpc/fold-vec-store-builtin_vec_xst-double.c:
	* gcc.target/powerpc/fold-vec-store-builtin_vec_xst-float.c:
	* gcc.target/powerpc/fold-vec-store-builtin_vec_xst-int.c:
	* gcc.target/powerpc/fold-vec-store-builtin_vec_xst-longlong.c:
	* gcc.target/powerpc/fold-vec-store-builtin_vec_xst-short.c:
	* gcc.target/powerpc/fold-vec-store-vec_vsx_st-char.c:
	* gcc.target/powerpc/fold-vec-store-vec_vsx_st-double.c:
	* gcc.target/powerpc/fold-vec-store-vec_vsx_st-float.c:
	* gcc.target/powerpc/fold-vec-store-vec_vsx_st-int.c:
	* gcc.target/powerpc/fold-vec-store-vec_vsx_st-longlong.c:
	* gcc.target/powerpc/fold-vec-store-vec_vsx_st-short.c:
	* gcc.target/powerpc/fold-vec-store-vec_xst-char.c:
	* gcc.target/powerpc/fold-vec-store-vec_xst-double.c:
	* gcc.target/powerpc/fold-vec-store-vec_xst-float.c:
	* gcc.target/powerpc/fold-vec-store-vec_xst-int.c:
	* gcc.target/powerpc/fold-vec-store-vec_xst-longlong.c:
	* gcc.target/powerpc/fold-vec-store-vec_xst-short.c:
	* gcc.target/powerpc/lvsl-lvsr.c:
	* gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c:
	Update insn counts to account for power10 prefixed loads and
	stores.
---
 .../vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c       | 2 +-
 .../gcc.target/powerpc/fold-vec-load-builtin_vec_xl-char.c | 2 +-
 .../powerpc/fold-vec-load-builtin_vec_xl-double.c          | 2 +-
 .../powerpc/fold-vec-load-builtin_vec_xl-float.c           | 2 +-
 .../gcc.target/powerpc/fold-vec-load-builtin_vec_xl-int.c  | 2 +-
 .../powerpc/fold-vec-load-builtin_vec_xl-longlong.c        | 2 +-
 .../powerpc/fold-vec-load-builtin_vec_xl-short.c           | 2 +-
 .../gcc.target/powerpc/fold-vec-load-vec_vsx_ld-char.c     | 2 +-
 .../gcc.target/powerpc/fold-vec-load-vec_vsx_ld-double.c   | 2 +-
 .../gcc.target/powerpc/fold-vec-load-vec_vsx_ld-float.c    | 2 +-
 .../gcc.target/powerpc/fold-vec-load-vec_vsx_ld-int.c      | 2 +-
 .../gcc.target/powerpc/fold-vec-load-vec_vsx_ld-longlong.c | 2 +-
 .../gcc.target/powerpc/fold-vec-load-vec_vsx_ld-short.c    | 2 +-
 .../gcc.target/powerpc/fold-vec-load-vec_xl-char.c         | 2 +-
 .../gcc.target/powerpc/fold-vec-load-vec_xl-double.c       | 2 +-
 .../gcc.target/powerpc/fold-vec-load-vec_xl-float.c        | 2 +-
 .../gcc.target/powerpc/fold-vec-load-vec_xl-int.c          | 2 +-
 .../gcc.target/powerpc/fold-vec-load-vec_xl-longlong.c     | 2 +-
 .../gcc.target/powerpc/fold-vec-load-vec_xl-short.c        | 2 +-
 .../gcc.target/powerpc/fold-vec-splat-floatdouble.c        | 7 ++++---
 gcc/testsuite/gcc.target/powerpc/fold-vec-splat-longlong.c | 2 +-
 .../powerpc/fold-vec-store-builtin_vec_xst-char.c          | 2 +-
 .../powerpc/fold-vec-store-builtin_vec_xst-double.c        | 2 +-
 .../powerpc/fold-vec-store-builtin_vec_xst-float.c         | 2 +-
 .../powerpc/fold-vec-store-builtin_vec_xst-int.c           | 2 +-
 .../powerpc/fold-vec-store-builtin_vec_xst-longlong.c      | 2 +-
 .../powerpc/fold-vec-store-builtin_vec_xst-short.c         | 2 +-
 .../gcc.target/powerpc/fold-vec-store-vec_vsx_st-char.c    | 2 +-
 .../gcc.target/powerpc/fold-vec-store-vec_vsx_st-double.c  | 2 +-
 .../gcc.target/powerpc/fold-vec-store-vec_vsx_st-float.c   | 2 +-
 .../gcc.target/powerpc/fold-vec-store-vec_vsx_st-int.c     | 2 +-
 .../powerpc/fold-vec-store-vec_vsx_st-longlong.c           | 2 +-
 .../gcc.target/powerpc/fold-vec-store-vec_vsx_st-short.c   | 2 +-
 .../gcc.target/powerpc/fold-vec-store-vec_xst-char.c       | 2 +-
 .../gcc.target/powerpc/fold-vec-store-vec_xst-double.c     | 2 +-
 .../gcc.target/powerpc/fold-vec-store-vec_xst-float.c      | 2 +-
 .../gcc.target/powerpc/fold-vec-store-vec_xst-int.c        | 2 +-
 .../gcc.target/powerpc/fold-vec-store-vec_xst-longlong.c   | 2 +-
 .../gcc.target/powerpc/fold-vec-store-vec_xst-short.c      | 2 +-
 gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c               | 2 +-
 gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c | 2 +-
 41 files changed, 44 insertions(+), 43 deletions(-)

Comments

Li, Pan2 via Gcc-patches July 12, 2021, 3:32 p.m. UTC | #1
Hi Mike,

On 7/7/21 3:03 PM, Michael Meissner wrote:
> [PATCH] Deal with prefixed loads/stores in tests, PR testsuite/100166
>
> This patch updates the various tests in the testsuite to treat plxv
> and pstxv as being vector loads/stores.  This shows up if you run the
> testsuite with a compiler configured with the option: --with-cpu=power10.
>
> I have verified that these tests now all pass when I build and test a compiler
> on a power10 system using --with-cpu=power10.  I have verified that they
> continue to run on power9 little endian and power8 big endian systems.
>
> Can I check this into the master branch?
>
> 2021-07-07  Michael Meissner  <meissner@linux.ibm.com>
>
> gcc/testsuite/
> 	PR testsuite/100166
> 	* gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c:
Please drop the gcc/testsuite/ part from this line.
> 	* gcc.target/powerpc/fold-vec-load-builtin_vec_xl-char.c:
> 	* gcc.target/powerpc/fold-vec-load-builtin_vec_xl-double.c:
> 	* gcc.target/powerpc/fold-vec-load-builtin_vec_xl-float.c:
> 	* gcc.target/powerpc/fold-vec-load-builtin_vec_xl-int.c:
> 	* gcc.target/powerpc/fold-vec-load-builtin_vec_xl-longlong.c:
> 	* gcc.target/powerpc/fold-vec-load-builtin_vec_xl-short.c:
> 	* gcc.target/powerpc/fold-vec-load-vec_vsx_ld-char.c:
> 	* gcc.target/powerpc/fold-vec-load-vec_vsx_ld-double.c:
> 	* gcc.target/powerpc/fold-vec-load-vec_vsx_ld-float.c:
> 	* gcc.target/powerpc/fold-vec-load-vec_vsx_ld-int.c:
> 	* gcc.target/powerpc/fold-vec-load-vec_vsx_ld-longlong.c:
> 	* gcc.target/powerpc/fold-vec-load-vec_vsx_ld-short.c:
> 	* gcc.target/powerpc/fold-vec-load-vec_xl-char.c:
> 	* gcc.target/powerpc/fold-vec-load-vec_xl-double.c:
> 	* gcc.target/powerpc/fold-vec-load-vec_xl-float.c:
> 	* gcc.target/powerpc/fold-vec-load-vec_xl-int.c:
> 	* gcc.target/powerpc/fold-vec-load-vec_xl-longlong.c:
> 	* gcc.target/powerpc/fold-vec-load-vec_xl-short.c:
> 	* gcc.target/powerpc/fold-vec-splat-floatdouble.c:
> 	* gcc.target/powerpc/fold-vec-splat-longlong.c:
> 	* gcc.target/powerpc/fold-vec-store-builtin_vec_xst-char.c:
> 	* gcc.target/powerpc/fold-vec-store-builtin_vec_xst-double.c:
> 	* gcc.target/powerpc/fold-vec-store-builtin_vec_xst-float.c:
> 	* gcc.target/powerpc/fold-vec-store-builtin_vec_xst-int.c:
> 	* gcc.target/powerpc/fold-vec-store-builtin_vec_xst-longlong.c:
> 	* gcc.target/powerpc/fold-vec-store-builtin_vec_xst-short.c:
> 	* gcc.target/powerpc/fold-vec-store-vec_vsx_st-char.c:
> 	* gcc.target/powerpc/fold-vec-store-vec_vsx_st-double.c:
> 	* gcc.target/powerpc/fold-vec-store-vec_vsx_st-float.c:
> 	* gcc.target/powerpc/fold-vec-store-vec_vsx_st-int.c:
> 	* gcc.target/powerpc/fold-vec-store-vec_vsx_st-longlong.c:
> 	* gcc.target/powerpc/fold-vec-store-vec_vsx_st-short.c:
> 	* gcc.target/powerpc/fold-vec-store-vec_xst-char.c:
> 	* gcc.target/powerpc/fold-vec-store-vec_xst-double.c:
> 	* gcc.target/powerpc/fold-vec-store-vec_xst-float.c:
> 	* gcc.target/powerpc/fold-vec-store-vec_xst-int.c:
> 	* gcc.target/powerpc/fold-vec-store-vec_xst-longlong.c:
> 	* gcc.target/powerpc/fold-vec-store-vec_xst-short.c:
> 	* gcc.target/powerpc/lvsl-lvsr.c:
> 	* gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c:
> 	Update insn counts to account for power10 prefixed loads and
> 	stores.
Also here.
> ---
>   .../vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c       | 2 +-
>   .../gcc.target/powerpc/fold-vec-load-builtin_vec_xl-char.c | 2 +-
>   .../powerpc/fold-vec-load-builtin_vec_xl-double.c          | 2 +-
>   .../powerpc/fold-vec-load-builtin_vec_xl-float.c           | 2 +-
>   .../gcc.target/powerpc/fold-vec-load-builtin_vec_xl-int.c  | 2 +-
>   .../powerpc/fold-vec-load-builtin_vec_xl-longlong.c        | 2 +-
>   .../powerpc/fold-vec-load-builtin_vec_xl-short.c           | 2 +-
>   .../gcc.target/powerpc/fold-vec-load-vec_vsx_ld-char.c     | 2 +-
>   .../gcc.target/powerpc/fold-vec-load-vec_vsx_ld-double.c   | 2 +-
>   .../gcc.target/powerpc/fold-vec-load-vec_vsx_ld-float.c    | 2 +-
>   .../gcc.target/powerpc/fold-vec-load-vec_vsx_ld-int.c      | 2 +-
>   .../gcc.target/powerpc/fold-vec-load-vec_vsx_ld-longlong.c | 2 +-
>   .../gcc.target/powerpc/fold-vec-load-vec_vsx_ld-short.c    | 2 +-
>   .../gcc.target/powerpc/fold-vec-load-vec_xl-char.c         | 2 +-
>   .../gcc.target/powerpc/fold-vec-load-vec_xl-double.c       | 2 +-
>   .../gcc.target/powerpc/fold-vec-load-vec_xl-float.c        | 2 +-
>   .../gcc.target/powerpc/fold-vec-load-vec_xl-int.c          | 2 +-
>   .../gcc.target/powerpc/fold-vec-load-vec_xl-longlong.c     | 2 +-
>   .../gcc.target/powerpc/fold-vec-load-vec_xl-short.c        | 2 +-
>   .../gcc.target/powerpc/fold-vec-splat-floatdouble.c        | 7 ++++---
>   gcc/testsuite/gcc.target/powerpc/fold-vec-splat-longlong.c | 2 +-
>   .../powerpc/fold-vec-store-builtin_vec_xst-char.c          | 2 +-
>   .../powerpc/fold-vec-store-builtin_vec_xst-double.c        | 2 +-
>   .../powerpc/fold-vec-store-builtin_vec_xst-float.c         | 2 +-
>   .../powerpc/fold-vec-store-builtin_vec_xst-int.c           | 2 +-
>   .../powerpc/fold-vec-store-builtin_vec_xst-longlong.c      | 2 +-
>   .../powerpc/fold-vec-store-builtin_vec_xst-short.c         | 2 +-
>   .../gcc.target/powerpc/fold-vec-store-vec_vsx_st-char.c    | 2 +-
>   .../gcc.target/powerpc/fold-vec-store-vec_vsx_st-double.c  | 2 +-
>   .../gcc.target/powerpc/fold-vec-store-vec_vsx_st-float.c   | 2 +-
>   .../gcc.target/powerpc/fold-vec-store-vec_vsx_st-int.c     | 2 +-
>   .../powerpc/fold-vec-store-vec_vsx_st-longlong.c           | 2 +-
>   .../gcc.target/powerpc/fold-vec-store-vec_vsx_st-short.c   | 2 +-
>   .../gcc.target/powerpc/fold-vec-store-vec_xst-char.c       | 2 +-
>   .../gcc.target/powerpc/fold-vec-store-vec_xst-double.c     | 2 +-
>   .../gcc.target/powerpc/fold-vec-store-vec_xst-float.c      | 2 +-
>   .../gcc.target/powerpc/fold-vec-store-vec_xst-int.c        | 2 +-
>   .../gcc.target/powerpc/fold-vec-store-vec_xst-longlong.c   | 2 +-
>   .../gcc.target/powerpc/fold-vec-store-vec_xst-short.c      | 2 +-
>   gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c               | 2 +-
>   gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c | 2 +-
>   41 files changed, 44 insertions(+), 43 deletions(-)
>
> diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c
> index 246f38fa6d1..d9f173b521e 100644
> --- a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c
> +++ b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c
> @@ -25,6 +25,6 @@ main1 (void)
>      with no word loads (lw, lwu, lwz, lwzu, or their indexed forms)
>      or word stores (stw, stwu, stwx, stwux, or their indexed forms).  */
>   
> -/* { dg-final { scan-assembler "\t(lvx|lxv|lvsr|stxv)" } } */
> +/* { dg-final { scan-assembler "\t(lvx|lxv|lvsr|stxv|plxv|pstxv)" } } */
>   /* { dg-final { scan-assembler-not "\tlwz?u?x? " { xfail { powerpc-ibm-aix* } } } } */
>   /* { dg-final { scan-assembler-not "\tstwu?x? " } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-char.c
> index 9b199c219bf..104710700c8 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-char.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-char.c
> @@ -36,4 +36,4 @@ BUILD_VAR_TEST( test10, vector unsigned char, signed long long, vector unsigned
>   BUILD_VAR_TEST( test11, vector unsigned char, signed int, vector unsigned char);
>   BUILD_CST_TEST( test12, vector unsigned char, 8, vector unsigned char);
>   
> -/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-double.c
> index c49dfe8d95b..bfb3cfbc081 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-double.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-double.c
> @@ -28,4 +28,4 @@ BUILD_VAR_TEST( test4, vector double, signed long long, vector double);
>   BUILD_VAR_TEST( test5, vector double, signed int, vector double);
>   BUILD_CST_TEST( test6, vector double, 12, vector double);
>   
> -/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M} 6 } } */
> +/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 6 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-float.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-float.c
> index cdded361b12..373bead2e60 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-float.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-float.c
> @@ -28,4 +28,4 @@ BUILD_VAR_TEST( test4, vector float, signed long long, vector float);
>   BUILD_VAR_TEST( test5, vector float, signed int, vector float);
>   BUILD_CST_TEST( test6, vector float, 12, vector float);
>   
> -/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 6 } } */
> +/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 6 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-int.c
> index bc18bebb1d6..744b96780f1 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-int.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-int.c
> @@ -36,4 +36,4 @@ BUILD_VAR_TEST( test10, vector unsigned int, signed long long, vector unsigned i
>   BUILD_VAR_TEST( test11, vector unsigned int, signed int, vector unsigned int);
>   BUILD_CST_TEST( test12, vector unsigned int, 12, vector unsigned int);
>   
> -/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-longlong.c
> index 66e953a2fbc..249b3eb8cff 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-longlong.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-longlong.c
> @@ -36,4 +36,4 @@ BUILD_VAR_TEST( test10,  vector unsigned long long, signed long long, vector uns
>   BUILD_VAR_TEST( test11,  vector unsigned long long, signed int, vector unsigned long long);
>   BUILD_CST_TEST( test12,  vector unsigned long long, 12, vector unsigned long long);
>   
> -/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-short.c
> index 0ef1c590d94..997f6f89a9d 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-short.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-short.c
> @@ -36,4 +36,4 @@ BUILD_VAR_TEST( test10,  vector unsigned short, signed long long, vector unsigne
>   BUILD_VAR_TEST( test11,  vector unsigned short, signed int, vector unsigned short);
>   BUILD_CST_TEST( test12,  vector unsigned short, 12, vector unsigned short);
>   
> -/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-char.c
> index 0b76341b1de..6aae43583f6 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-char.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-char.c
> @@ -35,5 +35,5 @@ BUILD_VAR_TEST( test10,  vector unsigned char, signed long long, vector unsigned
>   BUILD_VAR_TEST( test11,  vector unsigned char, signed int, vector unsigned char);
>   BUILD_CST_TEST( test12,  vector unsigned char, 12, vector unsigned char);
>   
> -/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
>   
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-double.c
> index beb6d037a6b..b3f3b7fcd07 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-double.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-double.c
> @@ -27,4 +27,4 @@ BUILD_VAR_TEST( test4, vector  double, int, vector double);
>   BUILD_VAR_TEST( test5, vector  double, long long, vector double);
>   BUILD_CST_TEST( test6, vector  double, 12, vector double);
>   
> -/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M} 6 } } */
> +/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 6 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-float.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-float.c
> index 5f9b6d35830..56cbe9ad102 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-float.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-float.c
> @@ -27,4 +27,4 @@ BUILD_VAR_TEST( test5,  vector float, signed long long, vector float);
>   BUILD_VAR_TEST( test7,  vector float, signed int, vector float);
>   BUILD_CST_TEST( test8,  vector float, 12, vector float);
>   
> -/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 6 } } */
> +/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 6 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-int.c
> index a59f52fbb1e..2cde9f5b6dd 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-int.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-int.c
> @@ -35,4 +35,4 @@ BUILD_VAR_TEST( test10,  vector unsigned int, signed long long, vector unsigned
>   BUILD_VAR_TEST( test11,  vector unsigned int, signed int, vector unsigned int);
>   BUILD_CST_TEST( test12,  vector unsigned int, 12, vector unsigned int);
>   
> -/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-longlong.c
> index 5c121fa26bd..cf2b7f9b5bc 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-longlong.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-longlong.c
> @@ -35,4 +35,4 @@ BUILD_VAR_TEST( test10,  vector unsigned long long, signed long long, vector uns
>   BUILD_VAR_TEST( test11,  vector unsigned long long, signed int, vector unsigned long long);
>   BUILD_CST_TEST( test12,  vector unsigned long long, 12, vector unsigned long long);
>   
> -/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-short.c
> index 07154d811a1..cfc0e307d80 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-short.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-short.c
> @@ -35,4 +35,4 @@ BUILD_VAR_TEST( test10,  vector unsigned short, signed long long, vector unsigne
>   BUILD_VAR_TEST( test11,  vector unsigned short, signed int, vector unsigned short);
>   BUILD_CST_TEST( test12,  vector unsigned short, 12, vector unsigned short);
>   
> -/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-char.c
> index 04c4f31deef..7281b3cca7a 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-char.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-char.c
> @@ -35,4 +35,4 @@ BUILD_VAR_TEST( test10,  vector unsigned char, signed long long, unsigned char);
>   BUILD_VAR_TEST( test11,  vector unsigned char, signed int, unsigned char);
>   BUILD_CST_TEST( test12,  vector unsigned char, 12, unsigned char);
>   
> -/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-double.c
> index 1958d65be89..3f3d985c45b 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-double.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-double.c
> @@ -28,4 +28,4 @@ BUILD_VAR_TEST( test4,  vector double, signed long long, double);
>   BUILD_VAR_TEST( test5,  vector double, signed int, double);
>   BUILD_CST_TEST( test6,  vector double, 12, double);
>   
> -/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M} 6 } } */
> +/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 6 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-float.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-float.c
> index 5578138d2f1..eafe3053771 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-float.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-float.c
> @@ -27,4 +27,4 @@ BUILD_VAR_TEST( test4,  vector float, signed long long, vector float);
>   BUILD_VAR_TEST( test5,  vector float, signed int, vector float);
>   BUILD_CST_TEST( test6,  vector float, 12, vector float);
>   
> -/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 6 } } */
> +/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 6 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-int.c
> index 8ba880ea61f..a2267218af9 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-int.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-int.c
> @@ -35,4 +35,4 @@ BUILD_VAR_TEST( test10,  vector unsigned int, signed long long, vector unsigned
>   BUILD_VAR_TEST( test11,  vector unsigned int, signed int, vector unsigned int);
>   BUILD_CST_TEST( test12,  vector unsigned int, 12, vector unsigned int);
>   
> -/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-longlong.c
> index 6df3c79fd1b..f2e5469ab74 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-longlong.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-longlong.c
> @@ -35,4 +35,4 @@ BUILD_VAR_TEST( test10,  vector unsigned long long, signed long long, vector uns
>   BUILD_VAR_TEST( test11,  vector unsigned long long, signed int, vector unsigned long long);
>   BUILD_CST_TEST( test12,  vector unsigned long long, 12, vector unsigned long long);
>   
> -/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-short.c
> index c5088ab177e..2d64b4f11d2 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-short.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-short.c
> @@ -35,4 +35,4 @@ BUILD_VAR_TEST( test10,  vector unsigned short, signed long long, vector unsigne
>   BUILD_VAR_TEST( test11,  vector unsigned short, signed int, vector unsigned short);
>   BUILD_CST_TEST( test12,  vector unsigned short, 12, vector unsigned short);
>   
> -/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
> index ab396967c3d..76619177388 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
> @@ -20,11 +20,12 @@ vector double testd_01 (vector double x) { return vec_splat (x, 0b00001); }
>   vector double test_dc ()
>   { const vector double y = { 3.0, 5.0 }; return vec_splat (y, 0b00010); }
>   
> -/* If the source vector is a known constant, we will generate a load.  */
> -/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxv\M} 2 } } */
> +/* If the source vector is a known constant, we will generate a load or possibly
> +   XXSPLTIW.  */
> +/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxv\M|\mplxv\M|\mxxspltiw\M} 2 } } */
>   
>   /* For float types, we generate a splat.  */
> -/* { dg-final { scan-assembler-times "vspltw|xxspltw" 3 } } */
> +/* { dg-final { scan-assembler-times {\mvspltw\M|\mxxspltw\M} 3 } } */
>   
>   /* For double types, we will generate xxpermdi instructions.  */
>   /* { dg-final { scan-assembler-times "xxpermdi" 3 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-longlong.c
> index 4fa06c85ecc..b95b987abce 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-longlong.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-longlong.c
> @@ -25,7 +25,7 @@ vector signed long long test_sll () { const vector signed long long y = {34, 45}
>   vector unsigned long long test_ull () { const vector unsigned long long y = {56, 67}; return vec_splat (y, 0b00010); }
>   
>   /* Assorted load instructions for the initialization with known constants. */
> -/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxv\M} 3 } } */
> +/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxv\M|\mplxv\M} 3 } } */
>   
>   /* xxpermdi for vec_splat of long long vectors.
>    At the time of this writing, the number of xxpermdi instructions
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-char.c
> index d1100d01a83..162563caed4 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-char.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-char.c
> @@ -36,4 +36,4 @@ BUILD_VAR_TEST( test10,  vector unsigned char, signed long long, vector unsigned
>   BUILD_VAR_TEST( test11,  vector unsigned char, signed int, vector unsigned char );
>   BUILD_CST_TEST( test12,  vector unsigned char, 12, vector unsigned char );
>   
> -/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-double.c
> index 74e34c307fd..c42a720d361 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-double.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-double.c
> @@ -28,4 +28,4 @@ BUILD_VAR_TEST( test4,  vector double, signed long long, double );
>   BUILD_VAR_TEST( test5,  vector double, signed int, double );
>   BUILD_CST_TEST( test6,  vector double, 12, double );
>   
> -/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 6 } } */
> +/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 6 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-float.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-float.c
> index db6bd331829..b200c47fd2f 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-float.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-float.c
> @@ -28,4 +28,4 @@ BUILD_VAR_TEST( test4,  vector float, signed long long, vector float );
>   BUILD_VAR_TEST( test5,  vector float, signed int, vector float );
>   BUILD_CST_TEST( test6,  vector float, 12, vector float );
>   
> -/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 6 } } */
> +/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 6 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-int.c
> index 2a328897cbb..d9848820b3a 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-int.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-int.c
> @@ -36,4 +36,4 @@ BUILD_VAR_TEST( test10, vector unsigned int, signed long long, vector unsigned i
>   BUILD_VAR_TEST( test11, vector unsigned int, signed int, vector unsigned int );
>   BUILD_CST_TEST( test12, vector unsigned int, 12, vector unsigned int );
>   
> -/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-longlong.c
> index a62ca516f95..bb72d9b2a99 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-longlong.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-longlong.c
> @@ -36,4 +36,4 @@ BUILD_VAR_TEST( test10,  vector unsigned long long, signed long long, vector uns
>   BUILD_VAR_TEST( test11,  vector unsigned long long, signed int, vector unsigned long long );
>   BUILD_CST_TEST( test12,  vector unsigned long long, 12, vector unsigned long long );
>   
> -/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-short.c
> index 2b1e1c0b90e..f4dbb702583 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-short.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-short.c
> @@ -36,4 +36,4 @@ BUILD_VAR_TEST( test10, vector unsigned short, signed long long, vector unsigned
>   BUILD_VAR_TEST( test11, vector unsigned short, signed int, vector unsigned short );
>   BUILD_CST_TEST( test12, vector unsigned short, 12, vector unsigned short );
>   
> -/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-char.c
> index 82bb891a9c9..ae5cf8ef0b4 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-char.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-char.c
> @@ -36,4 +36,4 @@ BUILD_VAR_TEST( test10, vector unsigned char, signed long long, vector unsigned
>   BUILD_VAR_TEST( test11, vector unsigned char, signed int, vector unsigned char );
>   BUILD_CST_TEST( test12, vector unsigned char, 12, vector unsigned char );
>   
> -/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-double.c
> index 34772cfe135..1360f4d4ce9 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-double.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-double.c
> @@ -28,4 +28,4 @@ BUILD_VAR_TEST( test7,  vector double, signed long long, vector double );
>   BUILD_VAR_TEST( test8,  vector double, signed int, vector double );
>   BUILD_CST_TEST( test9,  vector double, 12, vector double );
>   
> -/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 6 } } */
> +/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 6 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-float.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-float.c
> index cf13f2a7ec1..1b70f2a80f7 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-float.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-float.c
> @@ -28,4 +28,4 @@ BUILD_VAR_TEST( test7,  vector float, signed long long, vector float );
>   BUILD_VAR_TEST( test8,  vector float, signed int, vector float );
>   BUILD_CST_TEST( test9,  vector float, 12, vector float );
>   
> -/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 6 } } */
> +/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 6 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-int.c
> index a9e189ddadd..4e4a499eaad 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-int.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-int.c
> @@ -36,4 +36,4 @@ BUILD_VAR_TEST( test10, vector unsigned int, signed long long, vector unsigned i
>   BUILD_VAR_TEST( test11, vector unsigned int, signed int, vector unsigned int );
>   BUILD_CST_TEST( test12, vector unsigned int, 12, vector unsigned int );
>   
> -/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-longlong.c
> index f50e2b93da1..b57c126b9ab 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-longlong.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-longlong.c
> @@ -36,4 +36,4 @@ BUILD_VAR_TEST( test10, vector unsigned long long, signed long long, vector unsi
>   BUILD_VAR_TEST( test11, vector unsigned long long, signed int, vector unsigned long long );
>   BUILD_CST_TEST( test12, vector unsigned long long, 12, vector unsigned long long );
>   
> -/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-short.c
> index 0f8a93ad371..7593f425258 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-short.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-short.c
> @@ -36,4 +36,4 @@ BUILD_VAR_TEST( test10, vector unsigned short, signed long long, vector unsigned
>   BUILD_VAR_TEST( test11, vector unsigned short, signed int, vector unsigned short );
>   BUILD_CST_TEST( test12, vector unsigned short, 12, vector unsigned short );
>   
> -/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-char.c
> index 4f5930aa909..fdd2ed5648d 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-char.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-char.c
> @@ -35,4 +35,4 @@ BUILD_VAR_TEST( test10, vector unsigned char, signed long long, vector unsigned
>   BUILD_VAR_TEST( test11, vector unsigned char, signed int, vector unsigned char );
>   BUILD_CST_TEST( test12, vector unsigned char, 12, vector unsigned char );
>   
> -/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-double.c
> index 511d5fe7299..62f8552fdde 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-double.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-double.c
> @@ -27,4 +27,4 @@ BUILD_VAR_TEST( test7,  vector double, signed long long, vector double );
>   BUILD_VAR_TEST( test8,  vector double, signed int, vector double );
>   BUILD_CST_TEST( test9,  vector double, 12, vector double );
>   
> -/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 6 } } */
> +/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 6 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-float.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-float.c
> index 13e6cb6e7af..ad15a5a2b51 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-float.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-float.c
> @@ -27,4 +27,4 @@ BUILD_VAR_TEST( test7,  vector float, signed long long, vector float );
>   BUILD_VAR_TEST( test8,  vector float, signed int, vector float );
>   BUILD_CST_TEST( test9,  vector float, 12, vector float );
>   
> -/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 6 } } */
> +/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 6 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-int.c
> index fd6ff78509b..abe93dfb235 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-int.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-int.c
> @@ -35,4 +35,4 @@ BUILD_VAR_TEST( test10, vector unsigned int, signed long long, vector unsigned i
>   BUILD_VAR_TEST( test11, vector unsigned int, signed int, vector unsigned int );
>   BUILD_CST_TEST( test12, vector unsigned int, 12, vector unsigned int );
>   
> -/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-longlong.c
> index a669481b0d8..6859593bf0a 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-longlong.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-longlong.c
> @@ -35,4 +35,4 @@ BUILD_VAR_TEST( test10, vector unsigned long long, signed long long, vector unsi
>   BUILD_VAR_TEST( test11, vector unsigned long long, signed int, vector unsigned long long );
>   BUILD_CST_TEST( test12,  vector unsigned long long, 12, vector unsigned long long );
>   
> -/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-short.c
> index 78eae57fb23..6c54873db20 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-short.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-short.c
> @@ -35,4 +35,4 @@ BUILD_VAR_TEST( test10, vector unsigned short, signed long long, vector unsigned
>   BUILD_VAR_TEST( test11, vector unsigned short, signed int, vector unsigned short );
>   BUILD_CST_TEST( test12, vector unsigned short, 12, vector unsigned short );
>   
> -/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
> +/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
> diff --git a/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c b/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
> index 93843c09f35..26aadbcbc63 100644
> --- a/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
> +++ b/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
> @@ -6,7 +6,7 @@
>   /* { dg-options "-O0 -Wno-deprecated" } */
>   /* { dg-final { scan-assembler-times "lvsl" 2 } } */
>   /* { dg-final { scan-assembler-times "lvsr" 2 } } */
> -/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M} 2 } } */
> +/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mp?lxv\M} 2 } } */
>   /* { dg-final { scan-assembler-times {\m(?:v|xx)permr?\M} 2 } } */
>   
>   
> diff --git a/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c b/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
> index 1269fe635c6..d5ed700b9bc 100644
> --- a/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
> +++ b/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
> @@ -30,5 +30,5 @@ vector signed long long splats4(void)
>   
>   /* { dg-final { scan-assembler-times {\mvspltis[bhw]\M} 0 } } */
>   /* { dg-final { scan-assembler-times {\mvsl[bhwd]\M} 0 } } */
> -/* { dg-final { scan-assembler-times {\mlvx\M|\mlxv\M|\mlxvd2x\M} 2 } } */
> +/* { dg-final { scan-assembler-times {\mlvx\M|\mlxv\M|\mlxvd2x\M|\mplvx\M} 2 } } */

Oopsie.  I think you mean "plxv" for this one.

Otherwise LGTM.  I can't approve, but recommend approval with those changes.

Thanks,
Bill

>
David Edelsohn July 12, 2021, 7:32 p.m. UTC | #2
On Wed, Jul 7, 2021 at 4:03 PM Michael Meissner <meissner@linux.ibm.com> wrote:
>
> [PATCH] Deal with prefixed loads/stores in tests, PR testsuite/100166
>
> This patch updates the various tests in the testsuite to treat plxv
> and pstxv as being vector loads/stores.  This shows up if you run the
> testsuite with a compiler configured with the option: --with-cpu=power10.
>
> I have verified that these tests now all pass when I build and test a compiler
> on a power10 system using --with-cpu=power10.  I have verified that they
> continue to run on power9 little endian and power8 big endian systems.
>
> Can I check this into the master branch?
>
> 2021-07-07  Michael Meissner  <meissner@linux.ibm.com>
>
> gcc/testsuite/
>         PR testsuite/100166
>         * gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c:
>         * gcc.target/powerpc/fold-vec-load-builtin_vec_xl-char.c:
>         * gcc.target/powerpc/fold-vec-load-builtin_vec_xl-double.c:
>         * gcc.target/powerpc/fold-vec-load-builtin_vec_xl-float.c:
>         * gcc.target/powerpc/fold-vec-load-builtin_vec_xl-int.c:
>         * gcc.target/powerpc/fold-vec-load-builtin_vec_xl-longlong.c:
>         * gcc.target/powerpc/fold-vec-load-builtin_vec_xl-short.c:
>         * gcc.target/powerpc/fold-vec-load-vec_vsx_ld-char.c:
>         * gcc.target/powerpc/fold-vec-load-vec_vsx_ld-double.c:
>         * gcc.target/powerpc/fold-vec-load-vec_vsx_ld-float.c:
>         * gcc.target/powerpc/fold-vec-load-vec_vsx_ld-int.c:
>         * gcc.target/powerpc/fold-vec-load-vec_vsx_ld-longlong.c:
>         * gcc.target/powerpc/fold-vec-load-vec_vsx_ld-short.c:
>         * gcc.target/powerpc/fold-vec-load-vec_xl-char.c:
>         * gcc.target/powerpc/fold-vec-load-vec_xl-double.c:
>         * gcc.target/powerpc/fold-vec-load-vec_xl-float.c:
>         * gcc.target/powerpc/fold-vec-load-vec_xl-int.c:
>         * gcc.target/powerpc/fold-vec-load-vec_xl-longlong.c:
>         * gcc.target/powerpc/fold-vec-load-vec_xl-short.c:
>         * gcc.target/powerpc/fold-vec-splat-floatdouble.c:
>         * gcc.target/powerpc/fold-vec-splat-longlong.c:
>         * gcc.target/powerpc/fold-vec-store-builtin_vec_xst-char.c:
>         * gcc.target/powerpc/fold-vec-store-builtin_vec_xst-double.c:
>         * gcc.target/powerpc/fold-vec-store-builtin_vec_xst-float.c:
>         * gcc.target/powerpc/fold-vec-store-builtin_vec_xst-int.c:
>         * gcc.target/powerpc/fold-vec-store-builtin_vec_xst-longlong.c:
>         * gcc.target/powerpc/fold-vec-store-builtin_vec_xst-short.c:
>         * gcc.target/powerpc/fold-vec-store-vec_vsx_st-char.c:
>         * gcc.target/powerpc/fold-vec-store-vec_vsx_st-double.c:
>         * gcc.target/powerpc/fold-vec-store-vec_vsx_st-float.c:
>         * gcc.target/powerpc/fold-vec-store-vec_vsx_st-int.c:
>         * gcc.target/powerpc/fold-vec-store-vec_vsx_st-longlong.c:
>         * gcc.target/powerpc/fold-vec-store-vec_vsx_st-short.c:
>         * gcc.target/powerpc/fold-vec-store-vec_xst-char.c:
>         * gcc.target/powerpc/fold-vec-store-vec_xst-double.c:
>         * gcc.target/powerpc/fold-vec-store-vec_xst-float.c:
>         * gcc.target/powerpc/fold-vec-store-vec_xst-int.c:
>         * gcc.target/powerpc/fold-vec-store-vec_xst-longlong.c:
>         * gcc.target/powerpc/fold-vec-store-vec_xst-short.c:
>         * gcc.target/powerpc/lvsl-lvsr.c:
>         * gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c:
>         Update insn counts to account for power10 prefixed loads and
>         stores.

This is okay, modulo the one plvx -> plxv typo mentioned by Bill.

Thanks, David
Segher Boessenkool July 12, 2021, 8:46 p.m. UTC | #3
On Mon, Jul 12, 2021 at 10:32:47AM -0500, Bill Schmidt wrote:
> >	* gcc.target/powerpc/fold-vec-load-builtin_vec_xl-char.c:

There should be something after the ":".  If you want to say the same
thing for many files, you can say somethin like "ditto" for all but the
first.

> >-/* { dg-final { scan-assembler "\t(lvx|lxv|lvsr|stxv)" } } */
> >+/* { dg-final { scan-assembler "\t(lvx|lxv|lvsr|stxv|plxv|pstxv)" } } */

Please use p?lxv etc.

> >-/* { dg-final { scan-assembler-times 
> >{\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
> >+/* { dg-final { scan-assembler-times 
> >{\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */

Same here.  p?lxvx? I suppose.  Unless there is a reason plain lxv
would be bad here?

> >-/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M} 6 } } 
> >*/
> >+/* { dg-final { scan-assembler-times 
> >{\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 6 } } */

Maybe you even want

/* { dg-final { scan-assembler-times {\m(?:p?lxv|lvx\M)} 6 } } */

or such?

> >-/* { dg-final { scan-assembler-times 
> >{\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 6 } } */
> >+/* { dg-final { scan-assembler-times 
> >{\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 6 } } */

(Something caused these lines to be wrapped btw, please fix that in the
mail config -- not sure where it happened)

> >--- a/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
> >+++ b/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
> >@@ -30,5 +30,5 @@ vector signed long long splats4(void)
> >  
> >  /* { dg-final { scan-assembler-times {\mvspltis[bhw]\M} 0 } } */
> >  /* { dg-final { scan-assembler-times {\mvsl[bhwd]\M} 0 } } */
> >-/* { dg-final { scan-assembler-times {\mlvx\M|\mlxv\M|\mlxvd2x\M} 2 } } */
> >+/* { dg-final { scan-assembler-times 
> >{\mlvx\M|\mlxv\M|\mlxvd2x\M|\mplvx\M} 2 } } */
> 
> Oopsie.  I think you mean "plxv" for this one.

So why did testing not catch it?

Thanks for the review Bill!  :-)


Segher
Segher Boessenkool July 12, 2021, 8:52 p.m. UTC | #4
On Wed, Jul 07, 2021 at 04:03:20PM -0400, Michael Meissner wrote:
> This patch updates the various tests in the testsuite to treat plxv
> and pstxv as being vector loads/stores.

(That is a not a very good description)

The reason it is hard to review this patch is there was no rationale
whatsoever for any of these changes, and the approach is different for
every case as well.  This means every case needs separate checking
whether it is correct, which is more work than doing the changes in the
first place.

Mechanically just changing things so the test cases pass is **wrong**.


Segher
Michael Meissner July 13, 2021, 4:19 a.m. UTC | #5
On Mon, Jul 12, 2021 at 10:32:47AM -0500, Bill Schmidt wrote:
> Hi Mike,
> >diff --git a/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c b/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
> >index 1269fe635c6..d5ed700b9bc 100644
> >--- a/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
> >+++ b/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
> >@@ -30,5 +30,5 @@ vector signed long long splats4(void)
> >  /* { dg-final { scan-assembler-times {\mvspltis[bhw]\M} 0 } } */
> >  /* { dg-final { scan-assembler-times {\mvsl[bhwd]\M} 0 } } */
> >-/* { dg-final { scan-assembler-times {\mlvx\M|\mlxv\M|\mlxvd2x\M} 2 } } */
> >+/* { dg-final { scan-assembler-times {\mlvx\M|\mlxv\M|\mlxvd2x\M|\mplvx\M} 2 } } */
> 
> Oopsie.  I think you mean "plxv" for this one.
> 
> Otherwise LGTM.  I can't approve, but recommend approval with those changes.

Yes I did.  Good catch.
diff mbox series

Patch

diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c
index 246f38fa6d1..d9f173b521e 100644
--- a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c
+++ b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c
@@ -25,6 +25,6 @@  main1 (void)
    with no word loads (lw, lwu, lwz, lwzu, or their indexed forms)
    or word stores (stw, stwu, stwx, stwux, or their indexed forms).  */
 
-/* { dg-final { scan-assembler "\t(lvx|lxv|lvsr|stxv)" } } */
+/* { dg-final { scan-assembler "\t(lvx|lxv|lvsr|stxv|plxv|pstxv)" } } */
 /* { dg-final { scan-assembler-not "\tlwz?u?x? " { xfail { powerpc-ibm-aix* } } } } */
 /* { dg-final { scan-assembler-not "\tstwu?x? " } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-char.c
index 9b199c219bf..104710700c8 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-char.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-char.c
@@ -36,4 +36,4 @@  BUILD_VAR_TEST( test10, vector unsigned char, signed long long, vector unsigned
 BUILD_VAR_TEST( test11, vector unsigned char, signed int, vector unsigned char);
 BUILD_CST_TEST( test12, vector unsigned char, 8, vector unsigned char);
 
-/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-double.c
index c49dfe8d95b..bfb3cfbc081 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-double.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-double.c
@@ -28,4 +28,4 @@  BUILD_VAR_TEST( test4, vector double, signed long long, vector double);
 BUILD_VAR_TEST( test5, vector double, signed int, vector double);
 BUILD_CST_TEST( test6, vector double, 12, vector double);
 
-/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-float.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-float.c
index cdded361b12..373bead2e60 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-float.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-float.c
@@ -28,4 +28,4 @@  BUILD_VAR_TEST( test4, vector float, signed long long, vector float);
 BUILD_VAR_TEST( test5, vector float, signed int, vector float);
 BUILD_CST_TEST( test6, vector float, 12, vector float);
 
-/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-int.c
index bc18bebb1d6..744b96780f1 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-int.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-int.c
@@ -36,4 +36,4 @@  BUILD_VAR_TEST( test10, vector unsigned int, signed long long, vector unsigned i
 BUILD_VAR_TEST( test11, vector unsigned int, signed int, vector unsigned int);
 BUILD_CST_TEST( test12, vector unsigned int, 12, vector unsigned int);
 
-/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-longlong.c
index 66e953a2fbc..249b3eb8cff 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-longlong.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-longlong.c
@@ -36,4 +36,4 @@  BUILD_VAR_TEST( test10,  vector unsigned long long, signed long long, vector uns
 BUILD_VAR_TEST( test11,  vector unsigned long long, signed int, vector unsigned long long);
 BUILD_CST_TEST( test12,  vector unsigned long long, 12, vector unsigned long long);
 
-/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-short.c
index 0ef1c590d94..997f6f89a9d 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-short.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-builtin_vec_xl-short.c
@@ -36,4 +36,4 @@  BUILD_VAR_TEST( test10,  vector unsigned short, signed long long, vector unsigne
 BUILD_VAR_TEST( test11,  vector unsigned short, signed int, vector unsigned short);
 BUILD_CST_TEST( test12,  vector unsigned short, 12, vector unsigned short);
 
-/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-char.c
index 0b76341b1de..6aae43583f6 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-char.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-char.c
@@ -35,5 +35,5 @@  BUILD_VAR_TEST( test10,  vector unsigned char, signed long long, vector unsigned
 BUILD_VAR_TEST( test11,  vector unsigned char, signed int, vector unsigned char);
 BUILD_CST_TEST( test12,  vector unsigned char, 12, vector unsigned char);
 
-/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
 
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-double.c
index beb6d037a6b..b3f3b7fcd07 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-double.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-double.c
@@ -27,4 +27,4 @@  BUILD_VAR_TEST( test4, vector  double, int, vector double);
 BUILD_VAR_TEST( test5, vector  double, long long, vector double);
 BUILD_CST_TEST( test6, vector  double, 12, vector double);
 
-/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-float.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-float.c
index 5f9b6d35830..56cbe9ad102 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-float.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-float.c
@@ -27,4 +27,4 @@  BUILD_VAR_TEST( test5,  vector float, signed long long, vector float);
 BUILD_VAR_TEST( test7,  vector float, signed int, vector float);
 BUILD_CST_TEST( test8,  vector float, 12, vector float);
 
-/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-int.c
index a59f52fbb1e..2cde9f5b6dd 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-int.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-int.c
@@ -35,4 +35,4 @@  BUILD_VAR_TEST( test10,  vector unsigned int, signed long long, vector unsigned
 BUILD_VAR_TEST( test11,  vector unsigned int, signed int, vector unsigned int);
 BUILD_CST_TEST( test12,  vector unsigned int, 12, vector unsigned int);
 
-/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-longlong.c
index 5c121fa26bd..cf2b7f9b5bc 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-longlong.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-longlong.c
@@ -35,4 +35,4 @@  BUILD_VAR_TEST( test10,  vector unsigned long long, signed long long, vector uns
 BUILD_VAR_TEST( test11,  vector unsigned long long, signed int, vector unsigned long long);
 BUILD_CST_TEST( test12,  vector unsigned long long, 12, vector unsigned long long);
 
-/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-short.c
index 07154d811a1..cfc0e307d80 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-short.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_vsx_ld-short.c
@@ -35,4 +35,4 @@  BUILD_VAR_TEST( test10,  vector unsigned short, signed long long, vector unsigne
 BUILD_VAR_TEST( test11,  vector unsigned short, signed int, vector unsigned short);
 BUILD_CST_TEST( test12,  vector unsigned short, 12, vector unsigned short);
 
-/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-char.c
index 04c4f31deef..7281b3cca7a 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-char.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-char.c
@@ -35,4 +35,4 @@  BUILD_VAR_TEST( test10,  vector unsigned char, signed long long, unsigned char);
 BUILD_VAR_TEST( test11,  vector unsigned char, signed int, unsigned char);
 BUILD_CST_TEST( test12,  vector unsigned char, 12, unsigned char);
 
-/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-double.c
index 1958d65be89..3f3d985c45b 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-double.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-double.c
@@ -28,4 +28,4 @@  BUILD_VAR_TEST( test4,  vector double, signed long long, double);
 BUILD_VAR_TEST( test5,  vector double, signed int, double);
 BUILD_CST_TEST( test6,  vector double, 12, double);
 
-/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-float.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-float.c
index 5578138d2f1..eafe3053771 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-float.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-float.c
@@ -27,4 +27,4 @@  BUILD_VAR_TEST( test4,  vector float, signed long long, vector float);
 BUILD_VAR_TEST( test5,  vector float, signed int, vector float);
 BUILD_CST_TEST( test6,  vector float, 12, vector float);
 
-/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-int.c
index 8ba880ea61f..a2267218af9 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-int.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-int.c
@@ -35,4 +35,4 @@  BUILD_VAR_TEST( test10,  vector unsigned int, signed long long, vector unsigned
 BUILD_VAR_TEST( test11,  vector unsigned int, signed int, vector unsigned int);
 BUILD_CST_TEST( test12,  vector unsigned int, 12, vector unsigned int);
 
-/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-longlong.c
index 6df3c79fd1b..f2e5469ab74 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-longlong.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-longlong.c
@@ -35,4 +35,4 @@  BUILD_VAR_TEST( test10,  vector unsigned long long, signed long long, vector uns
 BUILD_VAR_TEST( test11,  vector unsigned long long, signed int, vector unsigned long long);
 BUILD_CST_TEST( test12,  vector unsigned long long, 12, vector unsigned long long);
 
-/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-short.c
index c5088ab177e..2d64b4f11d2 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-short.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-load-vec_xl-short.c
@@ -35,4 +35,4 @@  BUILD_VAR_TEST( test10,  vector unsigned short, signed long long, vector unsigne
 BUILD_VAR_TEST( test11,  vector unsigned short, signed int, vector unsigned short);
 BUILD_CST_TEST( test12,  vector unsigned short, 12, vector unsigned short);
 
-/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mlxvw4x\M|\mlxvd2x\M|\mlxvx\M|\mlvx\M|\mplxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
index ab396967c3d..76619177388 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
@@ -20,11 +20,12 @@  vector double testd_01 (vector double x) { return vec_splat (x, 0b00001); }
 vector double test_dc ()
 { const vector double y = { 3.0, 5.0 }; return vec_splat (y, 0b00010); }
 
-/* If the source vector is a known constant, we will generate a load.  */
-/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxv\M} 2 } } */
+/* If the source vector is a known constant, we will generate a load or possibly
+   XXSPLTIW.  */
+/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxv\M|\mplxv\M|\mxxspltiw\M} 2 } } */
 
 /* For float types, we generate a splat.  */
-/* { dg-final { scan-assembler-times "vspltw|xxspltw" 3 } } */
+/* { dg-final { scan-assembler-times {\mvspltw\M|\mxxspltw\M} 3 } } */
 
 /* For double types, we will generate xxpermdi instructions.  */
 /* { dg-final { scan-assembler-times "xxpermdi" 3 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-longlong.c
index 4fa06c85ecc..b95b987abce 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-longlong.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-longlong.c
@@ -25,7 +25,7 @@  vector signed long long test_sll () { const vector signed long long y = {34, 45}
 vector unsigned long long test_ull () { const vector unsigned long long y = {56, 67}; return vec_splat (y, 0b00010); }
 
 /* Assorted load instructions for the initialization with known constants. */
-/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxv\M} 3 } } */
+/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxv\M|\mplxv\M} 3 } } */
 
 /* xxpermdi for vec_splat of long long vectors.
  At the time of this writing, the number of xxpermdi instructions
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-char.c
index d1100d01a83..162563caed4 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-char.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-char.c
@@ -36,4 +36,4 @@  BUILD_VAR_TEST( test10,  vector unsigned char, signed long long, vector unsigned
 BUILD_VAR_TEST( test11,  vector unsigned char, signed int, vector unsigned char );
 BUILD_CST_TEST( test12,  vector unsigned char, 12, vector unsigned char );
 
-/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-double.c
index 74e34c307fd..c42a720d361 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-double.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-double.c
@@ -28,4 +28,4 @@  BUILD_VAR_TEST( test4,  vector double, signed long long, double );
 BUILD_VAR_TEST( test5,  vector double, signed int, double );
 BUILD_CST_TEST( test6,  vector double, 12, double );
 
-/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-float.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-float.c
index db6bd331829..b200c47fd2f 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-float.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-float.c
@@ -28,4 +28,4 @@  BUILD_VAR_TEST( test4,  vector float, signed long long, vector float );
 BUILD_VAR_TEST( test5,  vector float, signed int, vector float );
 BUILD_CST_TEST( test6,  vector float, 12, vector float );
 
-/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-int.c
index 2a328897cbb..d9848820b3a 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-int.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-int.c
@@ -36,4 +36,4 @@  BUILD_VAR_TEST( test10, vector unsigned int, signed long long, vector unsigned i
 BUILD_VAR_TEST( test11, vector unsigned int, signed int, vector unsigned int );
 BUILD_CST_TEST( test12, vector unsigned int, 12, vector unsigned int );
 
-/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-longlong.c
index a62ca516f95..bb72d9b2a99 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-longlong.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-longlong.c
@@ -36,4 +36,4 @@  BUILD_VAR_TEST( test10,  vector unsigned long long, signed long long, vector uns
 BUILD_VAR_TEST( test11,  vector unsigned long long, signed int, vector unsigned long long );
 BUILD_CST_TEST( test12,  vector unsigned long long, 12, vector unsigned long long );
 
-/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-short.c
index 2b1e1c0b90e..f4dbb702583 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-short.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-builtin_vec_xst-short.c
@@ -36,4 +36,4 @@  BUILD_VAR_TEST( test10, vector unsigned short, signed long long, vector unsigned
 BUILD_VAR_TEST( test11, vector unsigned short, signed int, vector unsigned short );
 BUILD_CST_TEST( test12, vector unsigned short, 12, vector unsigned short );
 
-/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-char.c
index 82bb891a9c9..ae5cf8ef0b4 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-char.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-char.c
@@ -36,4 +36,4 @@  BUILD_VAR_TEST( test10, vector unsigned char, signed long long, vector unsigned
 BUILD_VAR_TEST( test11, vector unsigned char, signed int, vector unsigned char );
 BUILD_CST_TEST( test12, vector unsigned char, 12, vector unsigned char );
 
-/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-double.c
index 34772cfe135..1360f4d4ce9 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-double.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-double.c
@@ -28,4 +28,4 @@  BUILD_VAR_TEST( test7,  vector double, signed long long, vector double );
 BUILD_VAR_TEST( test8,  vector double, signed int, vector double );
 BUILD_CST_TEST( test9,  vector double, 12, vector double );
 
-/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-float.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-float.c
index cf13f2a7ec1..1b70f2a80f7 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-float.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-float.c
@@ -28,4 +28,4 @@  BUILD_VAR_TEST( test7,  vector float, signed long long, vector float );
 BUILD_VAR_TEST( test8,  vector float, signed int, vector float );
 BUILD_CST_TEST( test9,  vector float, 12, vector float );
 
-/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-int.c
index a9e189ddadd..4e4a499eaad 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-int.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-int.c
@@ -36,4 +36,4 @@  BUILD_VAR_TEST( test10, vector unsigned int, signed long long, vector unsigned i
 BUILD_VAR_TEST( test11, vector unsigned int, signed int, vector unsigned int );
 BUILD_CST_TEST( test12, vector unsigned int, 12, vector unsigned int );
 
-/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-longlong.c
index f50e2b93da1..b57c126b9ab 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-longlong.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-longlong.c
@@ -36,4 +36,4 @@  BUILD_VAR_TEST( test10, vector unsigned long long, signed long long, vector unsi
 BUILD_VAR_TEST( test11, vector unsigned long long, signed int, vector unsigned long long );
 BUILD_CST_TEST( test12, vector unsigned long long, 12, vector unsigned long long );
 
-/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-short.c
index 0f8a93ad371..7593f425258 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-short.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_vsx_st-short.c
@@ -36,4 +36,4 @@  BUILD_VAR_TEST( test10, vector unsigned short, signed long long, vector unsigned
 BUILD_VAR_TEST( test11, vector unsigned short, signed int, vector unsigned short );
 BUILD_CST_TEST( test12, vector unsigned short, 12, vector unsigned short );
 
-/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-char.c
index 4f5930aa909..fdd2ed5648d 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-char.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-char.c
@@ -35,4 +35,4 @@  BUILD_VAR_TEST( test10, vector unsigned char, signed long long, vector unsigned
 BUILD_VAR_TEST( test11, vector unsigned char, signed int, vector unsigned char );
 BUILD_CST_TEST( test12, vector unsigned char, 12, vector unsigned char );
 
-/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-double.c
index 511d5fe7299..62f8552fdde 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-double.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-double.c
@@ -27,4 +27,4 @@  BUILD_VAR_TEST( test7,  vector double, signed long long, vector double );
 BUILD_VAR_TEST( test8,  vector double, signed int, vector double );
 BUILD_CST_TEST( test9,  vector double, 12, vector double );
 
-/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-float.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-float.c
index 13e6cb6e7af..ad15a5a2b51 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-float.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-float.c
@@ -27,4 +27,4 @@  BUILD_VAR_TEST( test7,  vector float, signed long long, vector float );
 BUILD_VAR_TEST( test8,  vector float, signed int, vector float );
 BUILD_CST_TEST( test9,  vector float, 12, vector float );
 
-/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-int.c
index fd6ff78509b..abe93dfb235 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-int.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-int.c
@@ -35,4 +35,4 @@  BUILD_VAR_TEST( test10, vector unsigned int, signed long long, vector unsigned i
 BUILD_VAR_TEST( test11, vector unsigned int, signed int, vector unsigned int );
 BUILD_CST_TEST( test12, vector unsigned int, 12, vector unsigned int );
 
-/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-longlong.c
index a669481b0d8..6859593bf0a 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-longlong.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-longlong.c
@@ -35,4 +35,4 @@  BUILD_VAR_TEST( test10, vector unsigned long long, signed long long, vector unsi
 BUILD_VAR_TEST( test11, vector unsigned long long, signed int, vector unsigned long long );
 BUILD_CST_TEST( test12,  vector unsigned long long, 12, vector unsigned long long );
 
-/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-short.c
index 78eae57fb23..6c54873db20 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-short.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-store-vec_xst-short.c
@@ -35,4 +35,4 @@  BUILD_VAR_TEST( test10, vector unsigned short, signed long long, vector unsigned
 BUILD_VAR_TEST( test11, vector unsigned short, signed int, vector unsigned short );
 BUILD_CST_TEST( test12, vector unsigned short, 12, vector unsigned short );
 
-/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstxvd2x\M|\mstxvx\M|\mstvx\M|\mpstxv\M} 12 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c b/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
index 93843c09f35..26aadbcbc63 100644
--- a/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
+++ b/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
@@ -6,7 +6,7 @@ 
 /* { dg-options "-O0 -Wno-deprecated" } */
 /* { dg-final { scan-assembler-times "lvsl" 2 } } */
 /* { dg-final { scan-assembler-times "lvsr" 2 } } */
-/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M} 2 } } */
+/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mp?lxv\M} 2 } } */
 /* { dg-final { scan-assembler-times {\m(?:v|xx)permr?\M} 2 } } */
 
 
diff --git a/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c b/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
index 1269fe635c6..d5ed700b9bc 100644
--- a/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
+++ b/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
@@ -30,5 +30,5 @@  vector signed long long splats4(void)
 
 /* { dg-final { scan-assembler-times {\mvspltis[bhw]\M} 0 } } */
 /* { dg-final { scan-assembler-times {\mvsl[bhwd]\M} 0 } } */
-/* { dg-final { scan-assembler-times {\mlvx\M|\mlxv\M|\mlxvd2x\M} 2 } } */
+/* { dg-final { scan-assembler-times {\mlvx\M|\mlxv\M|\mlxvd2x\M|\mplvx\M} 2 } } */