public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [RS6000] Adjust testcases for power10 instructions
@ 2020-10-22  7:03 Alan Modra
  2020-10-22 12:55 ` Alan Modra
  0 siblings, 1 reply; 8+ messages in thread
From: Alan Modra @ 2020-10-22  7:03 UTC (permalink / raw)
  To: gcc-patches; +Cc: Segher Boessenkool

	* gcc.dg/pr56727-2.c,
	* 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-st-double.c,
	* gcc.target/powerpc/fold-vec-st-longlong.c,
	* gcc.target/powerpc/fold-vec-st-pixel.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-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.target/powerpc/ppc-eq0-1.c,
	* gcc.target/powerpc/ppc-ne0-1.c,
	* gcc.target/powerpc/pr86731-fwrapv-longlong.c: Match power10 insns.
	* gcc.target/powerpc/lvsl-lvsr.c: Avoid file name match.

Regstrapped powerpc64le-linux power10 and power8.  OK?

diff --git a/gcc/testsuite/gcc.dg/pr56727-2.c b/gcc/testsuite/gcc.dg/pr56727-2.c
index c54369ed25e..f055116772a 100644
--- a/gcc/testsuite/gcc.dg/pr56727-2.c
+++ b/gcc/testsuite/gcc.dg/pr56727-2.c
@@ -18,4 +18,4 @@ void h ()
 
 /* { dg-final { scan-assembler "@(PLT|plt)" { target i?86-*-* x86_64-*-* } } } */
 /* { dg-final { scan-assembler "@(PLT|plt)" { target { powerpc*-*-linux* && ilp32 } } } } */
-/* { dg-final { scan-assembler "bl f\n\\s*nop" { target { powerpc*-*-linux* && lp64 } } } } */
+/* { dg-final { scan-assembler {bl f(\n\s*nop|@notoc\n)} { target { powerpc*-*-linux* && lp64 } } } } */
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..867b4f00e76 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,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 {\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..611ec8a8ae4 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
@@ -21,7 +21,7 @@ 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 } } */
+/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxv\M|\mplxv\M} 2 } } */
 
 /* For float types, we generate a splat.  */
 /* { dg-final { scan-assembler-times "vspltw|xxspltw" 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..8de7d529f63 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|\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-st-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-st-double.c
index 100caf486c7..0f1b7d4377d 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-st-double.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-st-double.c
@@ -19,4 +19,4 @@ testst_cst1 (vector double vd1, int i1, vector double * vdp)
 	return vec_st(vd1, 12, vdp);
 }
 
-/* { dg-final { scan-assembler-times {\mstvx\M}  2 } } */
+/* { dg-final { scan-assembler-times {\mstvx\M|\mpstxv\M}  2 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-st-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-st-longlong.c
index a33f64e3727..33213ea1a36 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-st-longlong.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-st-longlong.c
@@ -38,4 +38,4 @@ testst_cst5 (vector bool long long vbll1, int i1, vector bool long long * vbllp)
 	return vec_st(vbll1, 36, vbllp);
 }
 
-/* { dg-final { scan-assembler-times {\mstvx\M}  6 } } */
+/* { dg-final { scan-assembler-times {\mstvx\M|\mpstxv\M}  6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-st-pixel.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-st-pixel.c
index 5b95cc73d8d..0a3aaec6d8d 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-st-pixel.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-st-pixel.c
@@ -19,4 +19,4 @@ testst_cst1 (vector pixel vp1, int i1, vector pixel * vpp)
 	return vec_st(vp1, 12, vpp);
 }
 
-/* { dg-final { scan-assembler-times {\mstvx\M}  2 } } */
+/* { dg-final { scan-assembler-times {\mstvx\M|\mpstxv\M}  2 } } */
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-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..8020b5b51b6 100644
--- a/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
+++ b/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
@@ -1,12 +1,10 @@
-/* Test expected code generation for lvsl and lvsr on little endian.
-   Note that lvsl and lvsr are each produced once, but the filename
-   causes them to appear twice in the file.  */
+/* Test expected code generation for lvsl and lvsr on little endian.  */
 
 /* { dg-do compile { target { powerpc64le-*-* } } } */
 /* { 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 {\slvsl\s} 1 } } */
+/* { dg-final { scan-assembler-times {\slvsr\s} 1 } } */
+/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M|\mplxv\M} 2 } } */
 /* { dg-final { scan-assembler-times {\m(?:v|xx)permr?\M} 2 } } */
 
 
diff --git a/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c b/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
index 496a6e340c0..63799a6c8a8 100644
--- a/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
@@ -7,4 +7,4 @@ int foo(int x)
   return x == 0;
 }
 
-/* { dg-final { scan-assembler "cntlzw|isel" } } */
+/* { dg-final { scan-assembler {\mcntlzw\M|\misel\M|\msetbc\M} } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c b/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
index 63c4b6087df..31627b192ab 100644
--- a/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
@@ -2,9 +2,9 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -mno-isel" } */
 
-/* { dg-final { scan-assembler-times "addic" 4 } } */
-/* { dg-final { scan-assembler-times "subfe" 1 } } */
-/* { dg-final { scan-assembler-times "addze" 3 } } */
+/* { dg-final { scan-assembler-times {\maddic\M|\msetbcr\M} 4 } } */
+/* { dg-final { scan-assembler-times {\msubfe\M|\msetbcr\M} 1 } } */
+/* { dg-final { scan-assembler-times {\maddze\M} 3 } } */
 
 long ne0(long a)
 {
diff --git a/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c b/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
index 1269fe635c6..b2cbc420922 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|\mplxv\M} 2 } } */
 

-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RS6000] Adjust testcases for power10 instructions
  2020-10-22  7:03 [RS6000] Adjust testcases for power10 instructions Alan Modra
@ 2020-10-22 12:55 ` Alan Modra
  2020-10-23  6:15   ` Alan Modra
  0 siblings, 1 reply; 8+ messages in thread
From: Alan Modra @ 2020-10-22 12:55 UTC (permalink / raw)
  To: gcc-patches; +Cc: Segher Boessenkool

On Thu, Oct 22, 2020 at 05:33:46PM +1030, Alan Modra wrote:
> 	* gcc.dg/pr56727-2.c,
> 	* 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-st-double.c,
> 	* gcc.target/powerpc/fold-vec-st-longlong.c,
> 	* gcc.target/powerpc/fold-vec-st-pixel.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-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.target/powerpc/ppc-eq0-1.c,
> 	* gcc.target/powerpc/ppc-ne0-1.c,
> 	* gcc.target/powerpc/pr86731-fwrapv-longlong.c: Match power10 insns.
> 	* gcc.target/powerpc/lvsl-lvsr.c: Avoid file name match.
> 
> Regstrapped powerpc64le-linux power10 and power8.  OK?

Some of these are wrong, sorry.  I need to go over and check them
thoroughly.  Please consider the patch withdrawn.

> diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-st-pixel.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-st-pixel.c
> index 5b95cc73d8d..0a3aaec6d8d 100644
> --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-st-pixel.c
> +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-st-pixel.c
> @@ -19,4 +19,4 @@ testst_cst1 (vector pixel vp1, int i1, vector pixel * vpp)
>  	return vec_st(vp1, 12, vpp);
>  }
>  
> -/* { dg-final { scan-assembler-times {\mstvx\M}  2 } } */
> +/* { dg-final { scan-assembler-times {\mstvx\M|\mpstxv\M}  2 } } */

For example, this one.  We don't get two stvx insns here on power10,
as we should, but we do need altivec style addressing (ie. & -16).  So
pstxv should not be a pass.

-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RS6000] Adjust testcases for power10 instructions
  2020-10-22 12:55 ` Alan Modra
@ 2020-10-23  6:15   ` Alan Modra
  2020-10-23 18:22     ` Segher Boessenkool
  0 siblings, 1 reply; 8+ messages in thread
From: Alan Modra @ 2020-10-23  6:15 UTC (permalink / raw)
  To: gcc-patches; +Cc: Segher Boessenkool

On Thu, Oct 22, 2020 at 11:25:09PM +1030, Alan Modra wrote:
> Some of these are wrong, sorry.  I need to go over and check them
> thoroughly.  Please consider the patch withdrawn.

Revised patch, removing changes to
gcc.target/powerpc/fold-vec-st-double.c,
gcc.target/powerpc/fold-vec-st-longlong.c,
gcc.target/powerpc/fold-vec-st-pixel.c.  Fixing fails on those three
tests will be the subject of another patch.

Most of these changes are fairly obvious.  Duplicated setbcr in
+/* { dg-final { scan-assembler-times {\maddic\M|\msetbcr\M} 4 } } */
+/* { dg-final { scan-assembler-times {\msubfe\M|\msetbcr\M} 1 } } */
is due to addic;subfe being replaced in one function with setbcr.

	* gcc.dg/pr56727-2.c,
	* 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-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.target/powerpc/ppc-eq0-1.c,
	* gcc.target/powerpc/ppc-ne0-1.c,
	* gcc.target/powerpc/pr86731-fwrapv-longlong.c: Match power10 insns.
	* gcc.target/powerpc/lvsl-lvsr.c: Avoid file name match.

diff --git a/gcc/testsuite/gcc.dg/pr56727-2.c b/gcc/testsuite/gcc.dg/pr56727-2.c
index c54369ed25e..f055116772a 100644
--- a/gcc/testsuite/gcc.dg/pr56727-2.c
+++ b/gcc/testsuite/gcc.dg/pr56727-2.c
@@ -18,4 +18,4 @@ void h ()
 
 /* { dg-final { scan-assembler "@(PLT|plt)" { target i?86-*-* x86_64-*-* } } } */
 /* { dg-final { scan-assembler "@(PLT|plt)" { target { powerpc*-*-linux* && ilp32 } } } } */
-/* { dg-final { scan-assembler "bl f\n\\s*nop" { target { powerpc*-*-linux* && lp64 } } } } */
+/* { dg-final { scan-assembler {bl f(\n\s*nop|@notoc\n)} { target { powerpc*-*-linux* && lp64 } } } } */
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..867b4f00e76 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,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 {\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..611ec8a8ae4 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
@@ -21,7 +21,7 @@ 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 } } */
+/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxv\M|\mplxv\M} 2 } } */
 
 /* For float types, we generate a splat.  */
 /* { dg-final { scan-assembler-times "vspltw|xxspltw" 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..8de7d529f63 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|\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-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..8020b5b51b6 100644
--- a/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
+++ b/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
@@ -1,12 +1,10 @@
-/* Test expected code generation for lvsl and lvsr on little endian.
-   Note that lvsl and lvsr are each produced once, but the filename
-   causes them to appear twice in the file.  */
+/* Test expected code generation for lvsl and lvsr on little endian.  */
 
 /* { dg-do compile { target { powerpc64le-*-* } } } */
 /* { 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 {\slvsl\s} 1 } } */
+/* { dg-final { scan-assembler-times {\slvsr\s} 1 } } */
+/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M|\mplxv\M} 2 } } */
 /* { dg-final { scan-assembler-times {\m(?:v|xx)permr?\M} 2 } } */
 
 
diff --git a/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c b/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
index 496a6e340c0..63799a6c8a8 100644
--- a/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
@@ -7,4 +7,4 @@ int foo(int x)
   return x == 0;
 }
 
-/* { dg-final { scan-assembler "cntlzw|isel" } } */
+/* { dg-final { scan-assembler {\mcntlzw\M|\misel\M|\msetbc\M} } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c b/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
index 63c4b6087df..31627b192ab 100644
--- a/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
@@ -2,9 +2,9 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -mno-isel" } */
 
-/* { dg-final { scan-assembler-times "addic" 4 } } */
-/* { dg-final { scan-assembler-times "subfe" 1 } } */
-/* { dg-final { scan-assembler-times "addze" 3 } } */
+/* { dg-final { scan-assembler-times {\maddic\M|\msetbcr\M} 4 } } */
+/* { dg-final { scan-assembler-times {\msubfe\M|\msetbcr\M} 1 } } */
+/* { dg-final { scan-assembler-times {\maddze\M} 3 } } */
 
 long ne0(long a)
 {
diff --git a/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c b/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
index 1269fe635c6..b2cbc420922 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|\mplxv\M} 2 } } */
 

-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RS6000] Adjust testcases for power10 instructions
  2020-10-23  6:15   ` Alan Modra
@ 2020-10-23 18:22     ` Segher Boessenkool
  2020-10-24  0:59       ` Alan Modra
  0 siblings, 1 reply; 8+ messages in thread
From: Segher Boessenkool @ 2020-10-23 18:22 UTC (permalink / raw)
  To: Alan Modra; +Cc: gcc-patches

On Fri, Oct 23, 2020 at 04:45:29PM +1030, Alan Modra wrote:
> Revised patch, removing changes to
> gcc.target/powerpc/fold-vec-st-double.c,
> gcc.target/powerpc/fold-vec-st-longlong.c,
> gcc.target/powerpc/fold-vec-st-pixel.c.  Fixing fails on those three
> tests will be the subject of another patch.

Okido.

> Most of these changes are fairly obvious.  Duplicated setbcr in
> +/* { dg-final { scan-assembler-times {\maddic\M|\msetbcr\M} 4 } } */
> +/* { dg-final { scan-assembler-times {\msubfe\M|\msetbcr\M} 1 } } */
> is due to addic;subfe being replaced in one function with setbcr.

But that won't really work.  If there is more than one addic replaced by
setbcr, that second scan fails (because it matches at least two times
then).

> 	* gcc.dg/pr56727-2.c,
...
> 	* gcc.target/powerpc/ppc-eq0-1.c,
> 	* gcc.target/powerpc/ppc-ne0-1.c,
> 	* gcc.target/powerpc/pr86731-fwrapv-longlong.c: Match power10 insns.

This should all be behind only one "*" (so delete it on all but the
first line here).

> --- 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 "\t(lvx|p?lxv|lvsr|p?stxv)" } } */
might be more readable/maintainable/extensible?


> --- 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 } } */

Here, it did not allow lxv before.  Should it?

(in many files)

Have you verified the p10 code generation actually makes sense?

> --- 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|\mplxv\M} 3 } } */

You have plxv twice here.

> --- 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 } } */

Similarly, should it have plain stxv as well?

> --- a/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
> +++ b/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
> @@ -1,12 +1,10 @@
> -/* Test expected code generation for lvsl and lvsr on little endian.
> -   Note that lvsl and lvsr are each produced once, but the filename
> -   causes them to appear twice in the file.  */
> +/* Test expected code generation for lvsl and lvsr on little endian.  */
>  
>  /* { dg-do compile { target { powerpc64le-*-* } } } */
>  /* { 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 {\slvsl\s} 1 } } */
> +/* { dg-final { scan-assembler-times {\slvsr\s} 1 } } */

This could use a comment (we normally use \m \M).

Better is to just rename the file, of course :-)

> +/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M|\mplxv\M} 2 } } */

\mp?lxv\M

> --- a/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
> +++ b/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
> @@ -7,4 +7,4 @@ int foo(int x)
>    return x == 0;
>  }
>  
> -/* { dg-final { scan-assembler "cntlzw|isel" } } */
> +/* { dg-final { scan-assembler {\mcntlzw\M|\misel\M|\msetbc\M} } } */

> --- a/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
> +++ b/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
> @@ -2,9 +2,9 @@
>  /* { dg-do compile } */
>  /* { dg-options "-O2 -mno-isel" } */
>  
> -/* { dg-final { scan-assembler-times "addic" 4 } } */
> -/* { dg-final { scan-assembler-times "subfe" 1 } } */
> -/* { dg-final { scan-assembler-times "addze" 3 } } */
> +/* { dg-final { scan-assembler-times {\maddic\M|\msetbcr\M} 4 } } */
> +/* { dg-final { scan-assembler-times {\msubfe\M|\msetbcr\M} 1 } } */
> +/* { dg-final { scan-assembler-times {\maddze\M} 3 } } */

So this one won't work like this.

Easiest is to make an has_arch_pwr10 (in target-supports.exp), and use
that in the scan statements?

(As always, make sure this generates expected code :-) )

> --- 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|\mplxv\M} 2 } } */

\mp?lxv\M


Segher

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RS6000] Adjust testcases for power10 instructions
  2020-10-23 18:22     ` Segher Boessenkool
@ 2020-10-24  0:59       ` Alan Modra
  2020-10-27  0:29         ` [RS6000] Adjust testcases for power10 instructions V2 Alan Modra
  0 siblings, 1 reply; 8+ messages in thread
From: Alan Modra @ 2020-10-24  0:59 UTC (permalink / raw)
  To: Segher Boessenkool; +Cc: gcc-patches

On Fri, Oct 23, 2020 at 01:22:31PM -0500, Segher Boessenkool wrote:
> On Fri, Oct 23, 2020 at 04:45:29PM +1030, Alan Modra wrote:
> > Revised patch, removing changes to
> > gcc.target/powerpc/fold-vec-st-double.c,
> > gcc.target/powerpc/fold-vec-st-longlong.c,
> > gcc.target/powerpc/fold-vec-st-pixel.c.  Fixing fails on those three
> > tests will be the subject of another patch.
> 
> Okido.
> 
> > Most of these changes are fairly obvious.  Duplicated setbcr in
> > +/* { dg-final { scan-assembler-times {\maddic\M|\msetbcr\M} 4 } } */
> > +/* { dg-final { scan-assembler-times {\msubfe\M|\msetbcr\M} 1 } } */
> > is due to addic;subfe being replaced in one function with setbcr.
> 
> But that won't really work.  If there is more than one addic replaced by
> setbcr, that second scan fails (because it matches at least two times
> then).

Sure it works.  I did test the patch!  If future code gen changes, the
test will need updating at that point.  scan-assembler tests require
maintenance..

> > 	* gcc.dg/pr56727-2.c,
> ...
> > 	* gcc.target/powerpc/ppc-eq0-1.c,
> > 	* gcc.target/powerpc/ppc-ne0-1.c,
> > 	* gcc.target/powerpc/pr86731-fwrapv-longlong.c: Match power10 insns.
> 
> This should all be behind only one "*" (so delete it on all but the
> first line here).

Huh, ok.

> > --- 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 "\t(lvx|p?lxv|lvsr|p?stxv)" } } */
> might be more readable/maintainable/extensible?

OK.

> > --- 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 } } */
> 
> Here, it did not allow lxv before.  Should it?
> 
> (in many files)

We don't generate lxv due to the insn only supporting DQ offsets.  For
example, on power9 test3_cst from this test is
        li 9,2
        lxvx 34,3,9
        blr
On power10
        plxv 34,2(3)
        blr

> Have you verified the p10 code generation actually makes sense?

Yes, I did.

> > --- 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|\mplxv\M} 3 } } */
> 
> You have plxv twice here.

Oops.

> > --- 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 } } */
> 
> Similarly, should it have plain stxv as well?

No.  Same reason as to why lxv isn't generated.

> > --- a/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
> > +++ b/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
> > @@ -1,12 +1,10 @@
> > -/* Test expected code generation for lvsl and lvsr on little endian.
> > -   Note that lvsl and lvsr are each produced once, but the filename
> > -   causes them to appear twice in the file.  */
> > +/* Test expected code generation for lvsl and lvsr on little endian.  */
> >  
> >  /* { dg-do compile { target { powerpc64le-*-* } } } */
> >  /* { 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 {\slvsl\s} 1 } } */
> > +/* { dg-final { scan-assembler-times {\slvsr\s} 1 } } */
> 
> This could use a comment (we normally use \m \M).

Seriously?  That's about as useful as "i++; /* increment i */"

> Better is to just rename the file, of course :-)

I thought of that, but I'm not doing it.

> > +/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M|\mplxv\M} 2 } } */
> 
> \mp?lxv\M

Yeah, I'll change all of those.

> > --- a/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
> > +++ b/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
> > @@ -2,9 +2,9 @@
> >  /* { dg-do compile } */
> >  /* { dg-options "-O2 -mno-isel" } */
> >  
> > -/* { dg-final { scan-assembler-times "addic" 4 } } */
> > -/* { dg-final { scan-assembler-times "subfe" 1 } } */
> > -/* { dg-final { scan-assembler-times "addze" 3 } } */
> > +/* { dg-final { scan-assembler-times {\maddic\M|\msetbcr\M} 4 } } */
> > +/* { dg-final { scan-assembler-times {\msubfe\M|\msetbcr\M} 1 } } */
> > +/* { dg-final { scan-assembler-times {\maddze\M} 3 } } */
> 
> So this one won't work like this.

But it does.

-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [RS6000] Adjust testcases for power10 instructions V2
  2020-10-24  0:59       ` Alan Modra
@ 2020-10-27  0:29         ` Alan Modra
  2020-10-30  8:30           ` [RS6000] Adjust testcases for power10 instructions V3 Alan Modra
  0 siblings, 1 reply; 8+ messages in thread
From: Alan Modra @ 2020-10-27  0:29 UTC (permalink / raw)
  To: Segher Boessenkool; +Cc: gcc-patches

Revised version.

	* gcc.dg/pr56727-2.c,
	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-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.target/powerpc/ppc-eq0-1.c,
	gcc.target/powerpc/ppc-ne0-1.c,
	gcc.target/powerpc/pr86731-fwrapv-longlong.c: Match power10 insns.
	* gcc.target/powerpc/lvsl-lvsr.c: Avoid file name match.

diff --git a/gcc/testsuite/gcc.dg/pr56727-2.c b/gcc/testsuite/gcc.dg/pr56727-2.c
index c54369ed25e..f055116772a 100644
--- a/gcc/testsuite/gcc.dg/pr56727-2.c
+++ b/gcc/testsuite/gcc.dg/pr56727-2.c
@@ -18,4 +18,4 @@ void h ()
 
 /* { dg-final { scan-assembler "@(PLT|plt)" { target i?86-*-* x86_64-*-* } } } */
 /* { dg-final { scan-assembler "@(PLT|plt)" { target { powerpc*-*-linux* && ilp32 } } } } */
-/* { dg-final { scan-assembler "bl f\n\\s*nop" { target { powerpc*-*-linux* && lp64 } } } } */
+/* { dg-final { scan-assembler {bl f(\n\s*nop|@notoc\n)} { target { powerpc*-*-linux* && lp64 } } } } */
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..1cff4550f28 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|p?lxv|lvsr|p?stxv)" } } */
 /* { 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..867b4f00e76 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,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 {\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..9b0f839ded4 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
@@ -21,7 +21,7 @@ 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 } } */
+/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mp?lxv\M} 2 } } */
 
 /* For float types, we generate a splat.  */
 /* { dg-final { scan-assembler-times "vspltw|xxspltw" 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..079e9509fd2 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|\mp?lxv\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-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..640e6d1cccb 100644
--- a/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
+++ b/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
@@ -1,12 +1,10 @@
-/* Test expected code generation for lvsl and lvsr on little endian.
-   Note that lvsl and lvsr are each produced once, but the filename
-   causes them to appear twice in the file.  */
+/* Test expected code generation for lvsl and lvsr on little endian.  */
 
 /* { dg-do compile { target { powerpc64le-*-* } } } */
 /* { 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 {\slvsl\s} 1 } } */
+/* { dg-final { scan-assembler-times {\slvsr\s} 1 } } */
+/* { 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/ppc-eq0-1.c b/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
index 496a6e340c0..63799a6c8a8 100644
--- a/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
@@ -7,4 +7,4 @@ int foo(int x)
   return x == 0;
 }
 
-/* { dg-final { scan-assembler "cntlzw|isel" } } */
+/* { dg-final { scan-assembler {\mcntlzw\M|\misel\M|\msetbc\M} } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c b/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
index 63c4b6087df..31627b192ab 100644
--- a/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
@@ -2,9 +2,9 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -mno-isel" } */
 
-/* { dg-final { scan-assembler-times "addic" 4 } } */
-/* { dg-final { scan-assembler-times "subfe" 1 } } */
-/* { dg-final { scan-assembler-times "addze" 3 } } */
+/* { dg-final { scan-assembler-times {\maddic\M|\msetbcr\M} 4 } } */
+/* { dg-final { scan-assembler-times {\msubfe\M|\msetbcr\M} 1 } } */
+/* { dg-final { scan-assembler-times {\maddze\M} 3 } } */
 
 long ne0(long a)
 {
diff --git a/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c b/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
index 1269fe635c6..72b83ef9d08 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|\mp?lxv\M|\mlxvd2x\M} 2 } } */
 

-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [RS6000] Adjust testcases for power10 instructions V3
  2020-10-27  0:29         ` [RS6000] Adjust testcases for power10 instructions V2 Alan Modra
@ 2020-10-30  8:30           ` Alan Modra
       [not found]             ` <20210112033318.GG26219@bubble.grove.modra.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Alan Modra @ 2020-10-30  8:30 UTC (permalink / raw)
  To: Segher Boessenkool; +Cc: gcc-patches

And now waking up to what you meant by the lvsl-lvsr.c \s comment,
plus a revised ppc-ne0-1.c scan-assembler.

I think this covers all previous review corrections.  Regression tested
powerpc64-linux power7 and powerpc64le-linux power10.  OK?

	* lib/target-supports.exp (check_effective_target_has_arch_pwr10): New.
	* gcc.dg/pr56727-2.c,
	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-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.target/powerpc/ppc-eq0-1.c,
	gcc.target/powerpc/ppc-ne0-1.c,
	gcc.target/powerpc/pr86731-fwrapv-longlong.c: Match power10 insns.
	* gcc.target/powerpc/lvsl-lvsr.c: Avoid file name match.

diff --git a/gcc/testsuite/gcc.dg/pr56727-2.c b/gcc/testsuite/gcc.dg/pr56727-2.c
index c54369ed25e..f055116772a 100644
--- a/gcc/testsuite/gcc.dg/pr56727-2.c
+++ b/gcc/testsuite/gcc.dg/pr56727-2.c
@@ -18,4 +18,4 @@ void h ()
 
 /* { dg-final { scan-assembler "@(PLT|plt)" { target i?86-*-* x86_64-*-* } } } */
 /* { dg-final { scan-assembler "@(PLT|plt)" { target { powerpc*-*-linux* && ilp32 } } } } */
-/* { dg-final { scan-assembler "bl f\n\\s*nop" { target { powerpc*-*-linux* && lp64 } } } } */
+/* { dg-final { scan-assembler {bl f(\n\s*nop|@notoc\n)} { target { powerpc*-*-linux* && lp64 } } } } */
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..1cff4550f28 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|p?lxv|lvsr|p?stxv)" } } */
 /* { 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..867b4f00e76 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,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 {\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..9b0f839ded4 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
@@ -21,7 +21,7 @@ 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 } } */
+/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mp?lxv\M} 2 } } */
 
 /* For float types, we generate a splat.  */
 /* { dg-final { scan-assembler-times "vspltw|xxspltw" 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..079e9509fd2 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|\mp?lxv\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-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..45cf2c8b352 100644
--- a/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
+++ b/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
@@ -1,12 +1,12 @@
 /* Test expected code generation for lvsl and lvsr on little endian.
-   Note that lvsl and lvsr are each produced once, but the filename
-   causes them to appear twice in the file.  */
+   Note that \s is used in the lvsl/lvsr matches so we don't match
+   on '.file "lvsl-lvsr.c"'.  */
 
 /* { dg-do compile { target { powerpc64le-*-* } } } */
 /* { 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 {\slvsl\s} 1 } } */
+/* { dg-final { scan-assembler-times {\slvsr\s} 1 } } */
+/* { 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/ppc-eq0-1.c b/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
index 496a6e340c0..63799a6c8a8 100644
--- a/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
@@ -7,4 +7,4 @@ int foo(int x)
   return x == 0;
 }
 
-/* { dg-final { scan-assembler "cntlzw|isel" } } */
+/* { dg-final { scan-assembler {\mcntlzw\M|\misel\M|\msetbc\M} } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c b/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
index 63c4b6087df..dd9597a68fa 100644
--- a/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
@@ -2,9 +2,11 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -mno-isel" } */
 
-/* { dg-final { scan-assembler-times "addic" 4 } } */
-/* { dg-final { scan-assembler-times "subfe" 1 } } */
-/* { dg-final { scan-assembler-times "addze" 3 } } */
+/* { dg-final { scan-assembler-times {\maddic\M} 4 { target { ! has_arch_pwr10 } } } } */
+/* { dg-final { scan-assembler-times {\msubfe\M} 1 { target { ! has_arch_pwr10 } } } } */
+/* { dg-final { scan-assembler-times {\maddic\M} 3 { target { has_arch_pwr10 } } } } */
+/* { dg-final { scan-assembler-times {\msetbcr\M} 1 { target { has_arch_pwr10 } } } } */
+/* { dg-final { scan-assembler-times {\maddze\M} 3 } } */
 
 long ne0(long a)
 {
diff --git a/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c b/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
index 1269fe635c6..72b83ef9d08 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|\mp?lxv\M|\mlxvd2x\M} 2 } } */
 
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 8439720baea..7e2dd358640 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -5903,6 +5903,16 @@ proc check_effective_target_has_arch_pwr9 { } {
 	}]
 }
 
+proc check_effective_target_has_arch_pwr10 { } {
+	return [check_no_compiler_messages arch_pwr10 assembly {
+		#ifndef _ARCH_PWR10
+		#error does not have power10 support.
+		#else
+		/* "has power10 support" */
+		#endif
+	}]
+}
+
 # Return 1 if this is a PowerPC target supporting -mcpu=power10.
 # Limit this to 64-bit linux systems for now until other targets support
 # power10.

-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RS6000] Adjust testcases for power10 instructions V3
       [not found]             ` <20210112033318.GG26219@bubble.grove.modra.org>
@ 2021-01-21 23:12               ` Alan Modra
  0 siblings, 0 replies; 8+ messages in thread
From: Alan Modra @ 2021-01-21 23:12 UTC (permalink / raw)
  To: Segher Boessenkool; +Cc: gcc-patches

Ping.

On Tue, Jan 12, 2021 at 02:03:18PM +1030, Alan Modra wrote:
> Ping
> https://gcc.gnu.org/pipermail/gcc-patches/2020-October/557587.html
> 
> On Fri, Oct 30, 2020 at 07:00:14PM +1030, Alan Modra wrote:
> > And now waking up to what you meant by the lvsl-lvsr.c \s comment,
> > plus a revised ppc-ne0-1.c scan-assembler.
> > 
> > I think this covers all previous review corrections.  Regression tested
> > powerpc64-linux power7 and powerpc64le-linux power10.  OK?
> > 
> > 	* lib/target-supports.exp (check_effective_target_has_arch_pwr10): New.
> > 	* gcc.dg/pr56727-2.c,
> > 	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-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.target/powerpc/ppc-eq0-1.c,
> > 	gcc.target/powerpc/ppc-ne0-1.c,
> > 	gcc.target/powerpc/pr86731-fwrapv-longlong.c: Match power10 insns.
> > 	* gcc.target/powerpc/lvsl-lvsr.c: Avoid file name match.
> > 
> > diff --git a/gcc/testsuite/gcc.dg/pr56727-2.c b/gcc/testsuite/gcc.dg/pr56727-2.c
> > index c54369ed25e..f055116772a 100644
> > --- a/gcc/testsuite/gcc.dg/pr56727-2.c
> > +++ b/gcc/testsuite/gcc.dg/pr56727-2.c
> > @@ -18,4 +18,4 @@ void h ()
> >  
> >  /* { dg-final { scan-assembler "@(PLT|plt)" { target i?86-*-* x86_64-*-* } } } */
> >  /* { dg-final { scan-assembler "@(PLT|plt)" { target { powerpc*-*-linux* && ilp32 } } } } */
> > -/* { dg-final { scan-assembler "bl f\n\\s*nop" { target { powerpc*-*-linux* && lp64 } } } } */
> > +/* { dg-final { scan-assembler {bl f(\n\s*nop|@notoc\n)} { target { powerpc*-*-linux* && lp64 } } } } */
> > 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..1cff4550f28 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|p?lxv|lvsr|p?stxv)" } } */
> >  /* { 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..867b4f00e76 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,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 {\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..9b0f839ded4 100644
> > --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
> > +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c
> > @@ -21,7 +21,7 @@ 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 } } */
> > +/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mp?lxv\M} 2 } } */
> >  
> >  /* For float types, we generate a splat.  */
> >  /* { dg-final { scan-assembler-times "vspltw|xxspltw" 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..079e9509fd2 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|\mp?lxv\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-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..45cf2c8b352 100644
> > --- a/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
> > +++ b/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
> > @@ -1,12 +1,12 @@
> >  /* Test expected code generation for lvsl and lvsr on little endian.
> > -   Note that lvsl and lvsr are each produced once, but the filename
> > -   causes them to appear twice in the file.  */
> > +   Note that \s is used in the lvsl/lvsr matches so we don't match
> > +   on '.file "lvsl-lvsr.c"'.  */
> >  
> >  /* { dg-do compile { target { powerpc64le-*-* } } } */
> >  /* { 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 {\slvsl\s} 1 } } */
> > +/* { dg-final { scan-assembler-times {\slvsr\s} 1 } } */
> > +/* { 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/ppc-eq0-1.c b/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
> > index 496a6e340c0..63799a6c8a8 100644
> > --- a/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
> > +++ b/gcc/testsuite/gcc.target/powerpc/ppc-eq0-1.c
> > @@ -7,4 +7,4 @@ int foo(int x)
> >    return x == 0;
> >  }
> >  
> > -/* { dg-final { scan-assembler "cntlzw|isel" } } */
> > +/* { dg-final { scan-assembler {\mcntlzw\M|\misel\M|\msetbc\M} } } */
> > diff --git a/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c b/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
> > index 63c4b6087df..dd9597a68fa 100644
> > --- a/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
> > +++ b/gcc/testsuite/gcc.target/powerpc/ppc-ne0-1.c
> > @@ -2,9 +2,11 @@
> >  /* { dg-do compile } */
> >  /* { dg-options "-O2 -mno-isel" } */
> >  
> > -/* { dg-final { scan-assembler-times "addic" 4 } } */
> > -/* { dg-final { scan-assembler-times "subfe" 1 } } */
> > -/* { dg-final { scan-assembler-times "addze" 3 } } */
> > +/* { dg-final { scan-assembler-times {\maddic\M} 4 { target { ! has_arch_pwr10 } } } } */
> > +/* { dg-final { scan-assembler-times {\msubfe\M} 1 { target { ! has_arch_pwr10 } } } } */
> > +/* { dg-final { scan-assembler-times {\maddic\M} 3 { target { has_arch_pwr10 } } } } */
> > +/* { dg-final { scan-assembler-times {\msetbcr\M} 1 { target { has_arch_pwr10 } } } } */
> > +/* { dg-final { scan-assembler-times {\maddze\M} 3 } } */
> >  
> >  long ne0(long a)
> >  {
> > diff --git a/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c b/gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
> > index 1269fe635c6..72b83ef9d08 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|\mp?lxv\M|\mlxvd2x\M} 2 } } */
> >  
> > diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
> > index 8439720baea..7e2dd358640 100644
> > --- a/gcc/testsuite/lib/target-supports.exp
> > +++ b/gcc/testsuite/lib/target-supports.exp
> > @@ -5903,6 +5903,16 @@ proc check_effective_target_has_arch_pwr9 { } {
> >  	}]
> >  }
> >  
> > +proc check_effective_target_has_arch_pwr10 { } {
> > +	return [check_no_compiler_messages arch_pwr10 assembly {
> > +		#ifndef _ARCH_PWR10
> > +		#error does not have power10 support.
> > +		#else
> > +		/* "has power10 support" */
> > +		#endif
> > +	}]
> > +}
> > +
> >  # Return 1 if this is a PowerPC target supporting -mcpu=power10.
> >  # Limit this to 64-bit linux systems for now until other targets support
> >  # power10.

-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-01-21 23:12 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-22  7:03 [RS6000] Adjust testcases for power10 instructions Alan Modra
2020-10-22 12:55 ` Alan Modra
2020-10-23  6:15   ` Alan Modra
2020-10-23 18:22     ` Segher Boessenkool
2020-10-24  0:59       ` Alan Modra
2020-10-27  0:29         ` [RS6000] Adjust testcases for power10 instructions V2 Alan Modra
2020-10-30  8:30           ` [RS6000] Adjust testcases for power10 instructions V3 Alan Modra
     [not found]             ` <20210112033318.GG26219@bubble.grove.modra.org>
2021-01-21 23:12               ` Alan Modra

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).