P9LE generated instruction is not worse than P8LE.
mtvsrdd;xxlnot;stxv vs. not;not;std;std.
Update the test case to fix failures.

v3:
Define and use check_effective_target_xxx etc.
pre_power8: ... power6, power7.
power8: power8 only.
post_power8: power8, power9 ...
post_power9: power9, power10 ...

gcc/testsuite/ChangeLog:

        2019-11-15  Luo Xiong Hu  <luo...@linux.ibm.com>

        testsuite/pr92398
        * gcc.target/powerpc/pr72804.c: Update instruction count per
        platform.
        * lib/target-supports.exp (check_effective_target_pre_power8): New.
        (check_effective_target_power8): New.
        (check_effective_target_post_power8): New.
        (check_effective_target_post_power9): New.
---
 gcc/testsuite/gcc.target/powerpc/pr72804.c | 39 ++++++++++++++++----
 gcc/testsuite/lib/target-supports.exp      | 43 ++++++++++++++++++++++
 2 files changed, 74 insertions(+), 8 deletions(-)

diff --git a/gcc/testsuite/gcc.target/powerpc/pr72804.c 
b/gcc/testsuite/gcc.target/powerpc/pr72804.c
index 10e37caed6b..69da8942ddd 100644
--- a/gcc/testsuite/gcc.target/powerpc/pr72804.c
+++ b/gcc/testsuite/gcc.target/powerpc/pr72804.c
@@ -1,7 +1,6 @@
 /* { dg-do compile { target { lp64 } } } */
-/* { dg-skip-if "" { powerpc*-*-darwin* } } */
-/* { dg-require-effective-target powerpc_vsx_ok } */
-/* { dg-options "-O2 -mvsx -fno-inline-functions --param 
max-inline-insns-single-O2=200" } */
+/* { dg-require-effective-target powerpc_vsx_ok  } */
+/* { dg-options "-O2 -mvsx" } */
 
 __int128_t
 foo (__int128_t *src)
@@ -15,11 +14,35 @@ bar (__int128_t *dst, __int128_t src)
   *dst =  ~src;
 }
 
-/* { dg-final { scan-assembler-times "not " 4 } } */
-/* { dg-final { scan-assembler-times "std " 2 } } */
+/* { dg-final { scan-assembler-times "not " 2 { target post_power9 } } } */
+/* { dg-final { scan-assembler-not "std " { target post_power9 } } } */
+/* { dg-final { scan-assembler-not "stxvd2x" { target post_power9 } } } */
+/* { dg-final { scan-assembler-not "xxpermdi" { target post_power9 } } } */
+
+/* { dg-final { scan-assembler-times "not " 2 { target { {power8} && {be} } } 
} } */
+/* { dg-final { scan-assembler-not "std " { target { {power8} && {be} } } } } 
*/
+/* { dg-final { scan-assembler-times "stxvd2x" 1 { target { {power8} && {be} } 
} } } */
+/* { dg-final { scan-assembler-times "xxpermdi" 1 { target { {power8} && {be} 
} } } } */
+
+/* { dg-final { scan-assembler-times "not " 4 { target { {power8} && {le} } } 
} } */
+/* { dg-final { scan-assembler-times "std " 2 { target { {power8} && {le} } } 
} } */
+/* { dg-final { scan-assembler-not "stxvd2x" { target { {power8} && {le} } } } 
} */
+/* { dg-final { scan-assembler-not "xxpermdi" { target { {power8} && {le} } } 
} } */
+
+/* { dg-final { scan-assembler-not "lxvd2x" { target post_power8 } } } */
+
+/* { dg-final { scan-assembler-times "not " 2 { target { {pre_power8} && {be} 
} } } } */
+/* { dg-final { scan-assembler-not "std " { target { {pre_power8} && {be} } } 
} } */
+/* { dg-final { scan-assembler-times "lxvd2x" 1 { target { {pre_power8} && 
{be} } } } } */
+/* { dg-final { scan-assembler-times "stxvd2x" 1 { target { {pre_power8} && 
{be} } } } } */
+
+/* { dg-final { scan-assembler-times "not " 4 { target { {pre_power8} && {le} 
} } } } */
+/* { dg-final { scan-assembler-times "std " 2 { target { {pre_power8} && {le} 
} } } } */
+/* { dg-final { scan-assembler-not "lxvd2x" { target { {pre_power8} && {le} } 
} } } */
+/* { dg-final { scan-assembler-not "stxvd2x" { target { {pre_power8} && {le} } 
} } } */
+
+/* { dg-final { scan-assembler-not "xxpermdi" { target pre_power8 } } } */
+
 /* { dg-final { scan-assembler-times "ld " 2 } } */
-/* { dg-final { scan-assembler-not "lxvd2x" } } */
-/* { dg-final { scan-assembler-not "stxvd2x" } } */
-/* { dg-final { scan-assembler-not "xxpermdi" } } */
 /* { dg-final { scan-assembler-not "mfvsrd" } } */
 /* { dg-final { scan-assembler-not "mfvsrd" } } */
diff --git a/gcc/testsuite/lib/target-supports.exp 
b/gcc/testsuite/lib/target-supports.exp
index 751045d4744..324ec152544 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -2585,6 +2585,49 @@ proc check_effective_target_le { } {
     }]
 }
 
+# Return 1 if we're generating code for pre-power8 platforms.
+# Power8 is NOT included.
+
+proc check_effective_target_pre_power8 {  } {
+  return [check_no_compiler_messages_nocache pre_power8 assembly {
+       #if defined(_ARCH_PWR8)
+       #error NO
+       #endif
+  } ""]
+}
+
+# Return 1 if we're generating code for power8 platforms.
+
+proc check_effective_target_power8 {  } {
+  return [check_no_compiler_messages_nocache power8 assembly {
+       #if !(!defined(_ARCH_PWR9) && defined(_ARCH_PWR8))
+       #error NO
+       #endif
+  } ""]
+}
+
+# Return 1 if we're generating code for post-power8 platforms.
+# Power8 is included.
+
+proc check_effective_target_post_power8 {  } {
+  return [check_no_compiler_messages_nocache post_power8 assembly {
+       #if !(defined(_ARCH_PWR8))
+       #error NO
+       #endif
+  } ""]
+}
+
+# Return 1 if we're generating code for post-power9 platforms.
+# Power9 is included.
+
+proc check_effective_target_post_power9 {  } {
+  return [check_no_compiler_messages_nocache post_power9 assembly {
+       #if !(defined(_ARCH_PWR9))
+       #error NO
+       #endif
+  } ""]
+}
+
 # Return 1 if we're generating 32-bit code using default options, 0
 # otherwise.
 
-- 
2.21.0.777.g83232e3864


Reply via email to