rs6000: powerpc_future_ok and powerpc_future_hw
authorKelvin Nilsen <kelvin@gcc.gnu.org>
Mon, 11 May 2020 13:44:48 +0000 (08:44 -0500)
committerBill Schmidt <wschmidt@linux.ibm.com>
Mon, 11 May 2020 13:44:48 +0000 (08:44 -0500)
Dejagnu targets for these.

2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* gcc.target/powerpc/dg-future-0.c: New.
* gcc.target/powerpc/dg-future-1.c: New.
* lib/target-supports.exp (check_powerpc_future_hw_available):
Replace -mfuture with -mcpu=future.
(check_effective_target_powerpc_future_ok): Likewise.
(is-effective-target): Add powerpc_future_hw.

gcc/testsuite/gcc.target/powerpc/dg-future-0.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/dg-future-1.c [new file with mode: 0644]
gcc/testsuite/lib/target-supports.exp

diff --git a/gcc/testsuite/gcc.target/powerpc/dg-future-0.c b/gcc/testsuite/gcc.target/powerpc/dg-future-0.c
new file mode 100644 (file)
index 0000000..abfda82
--- /dev/null
@@ -0,0 +1,14 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-options "-mdejagnu-cpu=future" } */
+
+/* This tests that powerpc_future_ok works.  */
+
+extern void abort (void);
+
+int futurity (void) {
+  long int e = -1;
+  asm ("pli %0,%1": "+r" (e) : "n" (0x12345));
+  return (e == 0x12345);
+}
+
+/* { dg-final { scan-assembler {\mpli\M} } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/dg-future-1.c b/gcc/testsuite/gcc.target/powerpc/dg-future-1.c
new file mode 100644 (file)
index 0000000..6087fe7
--- /dev/null
@@ -0,0 +1,19 @@
+/* { dg-do run { target { powerpc*-*-* } } } */
+/* { dg-require-effective-target powerpc_future_hw } */
+/* { dg-options "-mdejagnu-cpu=future" } */
+
+/* This tests that powerpc_future_hw works.  */
+
+extern void abort (void);
+
+int futurity (void) {
+  long int e = -1;
+  asm ("pli %0,%1": "+r" (e) : "n" (0x12345));
+  return (e == 0x12345);
+}
+
+int main (int argc, char *argv [])
+{
+  if (!futurity ())
+    abort ();
+}
index a96b052..3a6ab87 100644 (file)
@@ -2203,7 +2203,7 @@ proc check_powerpc_future_hw_available { } {
                asm ("pli %0,%1" : "+r" (e) : "n" (0x12345));
                return (e == 0x12345);
            }
-       } "-mfuture"
+       } "-mcpu=future"
     }]
 }
 
@@ -5815,7 +5815,7 @@ proc check_effective_target_powerpc_future_ok { } {
                asm ("pli %0,%1" : "=r" (e) : "n" (0x12345));
                return e;
            }
-       } "-mfuture"]
+       } "-mcpu=future"]
     } else {
        return 0
     }
@@ -7762,6 +7762,7 @@ proc is-effective-target { arg } {
          "named_sections" { set selected [check_named_sections_available] }
          "gc_sections"    { set selected [check_gc_sections_available] }
          "cxa_atexit"     { set selected [check_cxa_atexit_available] }
+         "powerpc_future_hw" { set selected [check_powerpc_future_hw_available] }
          default          { error "unknown effective target keyword `$arg'" }
        }
     }