S/390: Fix warnings in "*setmem_long..." patterns.
authorDominik Vogt <vogt@linux.vnet.ibm.com>
Fri, 11 Dec 2015 11:03:21 +0000 (11:03 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Fri, 11 Dec 2015 11:03:21 +0000 (11:03 +0000)
gcc/ChangeLog

* config/s390/s390.md ("movstr", "*movstr"): Fix warning.
("movstr<P:mode>"): New indirect expanders used by "movstr".

gcc/testsuite/ChangeLog

* gcc.target/s390/md/movstr-1.c: New test.
* gcc.target/s390/s390.exp: Add subdir md.
Do not run hotpatch tests twice.

From-SVN: r231557

gcc/ChangeLog
gcc/config/s390/s390.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/s390/md/movstr-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/s390.exp

index de877d493c9d47cd8df1bcf5cd75b40345023c41..91690698cbdce22c3ecae1e27e648ec693b62716 100644 (file)
@@ -1,5 +1,9 @@
-2015-12-11  Martin Liska  <mliska@suse.cz>
+2015-12-11  Dominik Vogt  <vogt@linux.vnet.ibm.com>
+
+       * config/s390/s390.md ("movstr", "*movstr"): Fix warning.
+       ("movstr<P:mode>"): New indirect expanders used by "movstr".
 
+2015-12-11  Martin Liska  <mliska@suse.cz>
            Uros Bizjak  <ubizjak@gmail.com>
 
        PR target/67484
index e5db537907cdb0a7708b1500fb60ee6f4d9c7818..bc24a3665fb9f20474304bbbc4fbeb73708ff90e 100644 (file)
 ;
 
 (define_expand "movstr"
+  [(match_operand 0 "register_operand" "")
+   (match_operand 1 "memory_operand" "")
+   (match_operand 2 "memory_operand" "")]
+  ""
+{
+  if (TARGET_64BIT)
+    emit_insn (gen_movstrdi (operands[0], operands[1], operands[2]));
+  else
+    emit_insn (gen_movstrsi (operands[0], operands[1], operands[2]));
+  DONE;
+})
+
+(define_expand "movstr<P:mode>"
   [(set (reg:SI 0) (const_int 0))
    (parallel
     [(clobber (match_dup 3))
      (set (match_operand:BLK 1 "memory_operand" "")
          (match_operand:BLK 2 "memory_operand" ""))
-     (set (match_operand 0 "register_operand" "")
-         (unspec [(match_dup 1)
+     (set (match_operand:P 0 "register_operand" "")
+         (unspec:P [(match_dup 1)
                   (match_dup 2)
                   (reg:SI 0)] UNSPEC_MVST))
      (clobber (reg:CC CC_REGNUM))])]
    (set (mem:BLK (match_operand:P 1 "register_operand" "0"))
        (mem:BLK (match_operand:P 3 "register_operand" "2")))
    (set (match_operand:P 0 "register_operand" "=d")
-       (unspec [(mem:BLK (match_dup 1))
+       (unspec:P [(mem:BLK (match_dup 1))
                 (mem:BLK (match_dup 3))
                 (reg:SI 0)] UNSPEC_MVST))
    (clobber (reg:CC CC_REGNUM))]
index 9550dc22ecd0c09af2ac2020f25f8fdbbf750bac..36132762600f59fc84703a0ba430e4563554bdb0 100644 (file)
@@ -1,3 +1,9 @@
+2015-12-11  Dominik Vogt  <vogt@linux.vnet.ibm.com>
+
+       * gcc.target/s390/md/movstr-1.c: New test.
+       * gcc.target/s390/s390.exp: Add subdir md.
+       Do not run hotpatch tests twice.
+
 2015-12-11  Ilya Enkovich  <enkovich.gnu@gmail.com>
 
        * gcc.dg/vect/vect-32-chars.c: New test.
diff --git a/gcc/testsuite/gcc.target/s390/md/movstr-1.c b/gcc/testsuite/gcc.target/s390/md/movstr-1.c
new file mode 100644 (file)
index 0000000..7da749b
--- /dev/null
@@ -0,0 +1,24 @@
+/* Machine description pattern tests.  */
+
+/* { dg-do run } */
+/* { dg-options "-dP -save-temps" } */
+
+__attribute__ ((noinline))
+void test(char *dest, const char *src)
+{
+  __builtin_stpcpy (dest, src);
+}
+
+/* { dg-final { scan-assembler-times {{[*]movstr}} 1 } } */
+
+#define LEN 200
+char buf[LEN];
+
+int main(void)
+{
+  __builtin_memset(buf, 0, LEN);
+  test(buf, "hello world!");
+  if (__builtin_strcmp(buf, "hello world!") != 0)
+    __builtin_abort();
+  return 0;
+}
index 87433ddc6ef7434db24a0de4ada5b233d577baf1..728b8113a90f0c4eefdef6d64e3b309f062fe8aa 100644 (file)
@@ -76,11 +76,11 @@ if ![info exists DEFAULT_CFLAGS] then {
 # Initialize `dg'.
 dg-init
 
-set hotpatch_tests $srcdir/$subdir/hotpatch-\[0-9\]*.c
+set md_tests $srcdir/$subdir/md/*.c
 
 # Main loop.
 dg-runtest [lsort [prune [glob -nocomplain $srcdir/$subdir/*.\[cS\]] \
-                        $hotpatch_tests]] "" $DEFAULT_CFLAGS
+                        $md_tests]] "" $DEFAULT_CFLAGS
 
 dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*vector*/*.\[cS\]]] \
        "" $DEFAULT_CFLAGS
@@ -88,11 +88,26 @@ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*vector*/*.\[cS\]]] \
 dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/target-attribute/*.\[cS\]]] \
        "" $DEFAULT_CFLAGS
 
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/md/*.\[cS\]]] \
+       "" $DEFAULT_CFLAGS
+
 # Additional hotpatch torture tests.
 torture-init
-set HOTPATCH_TEST_OPTS [list -Os -O0 -O1 -O2 -O3]
-set-torture-options $HOTPATCH_TEST_OPTS
-gcc-dg-runtest [lsort [glob -nocomplain $hotpatch_tests]] "" $DEFAULT_CFLAGS
+set-torture-options [list -Os -O0 -O1 -O2 -O3]
+gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/hotpatch-\[0-9\]*.c]] \
+       "" $DEFAULT_CFLAGS
+torture-finish
+
+# Additional md torture tests.
+torture-init
+set MD_TEST_OPTS [list \
+       {-Os -march=z900} {-Os -march=z13} \
+       {-O0 -march=z900} {-O0 -march=z13} \
+       {-O1 -march=z900} {-O1 -march=z13} \
+       {-O2 -march=z900} {-O2 -march=z13} \
+       {-O3 -march=z900} {-O3 -march=z13}]
+set-torture-options $MD_TEST_OPTS
+gcc-dg-runtest [lsort [glob -nocomplain $md_tests]] "" $DEFAULT_CFLAGS
 torture-finish
 
 # All done.