]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/53988 ([SH] tst Rm,Rn not used for QI/HImode)
authorOleg Endo <olegendo@gcc.gnu.org>
Tue, 10 Mar 2015 08:09:56 +0000 (08:09 +0000)
committerOleg Endo <olegendo@gcc.gnu.org>
Tue, 10 Mar 2015 08:09:56 +0000 (08:09 +0000)
gcc/
PR target/53988
* config/sh/sh.md (*tst<mode>_t_zero): Remove insns.

gcc/testsuite/
PR target/53988
* gcc.target/sh/pr53988.c: Mark tests as xfail.

From-SVN: r221305

gcc/ChangeLog
gcc/config/sh/sh.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/sh/pr53988.c

index 9aa980d166ecd307f246fddc79bd231ba305b206..eb5177792bc81b175f041d34ba4c88d0bc725e21 100644 (file)
@@ -1,3 +1,8 @@
+2015-03-10  Oleg Endo  <olegendo@gcc.gnu.org>
+
+       PR target/53988
+       * config/sh/sh.md (*tst<mode>_t_zero): Remove insns.
+
 2015-03-10  Alan Modra  <amodra@gmail.com>
 
        PR target/65286
index 9327c20030a093aabe1a98c97517f9360a3c4da4..a0688e63645978a95b76046f1f625c700985e085 100644 (file)
   "tst #255,%0"
   [(set_attr "type" "mt_group")])
 
-;; This pattern might be risky because it also tests the upper bits and not
-;; only the subreg.  However, it seems that combine will get to this only
-;; when testing sign/zero extended values.  In this case the extended upper
-;; bits do not matter.
-(define_insn "*tst<mode>_t_zero"
-  [(set (reg:SI T_REG)
-       (eq:SI
-         (subreg:QIHI
-           (and:SI (match_operand:SI 0 "arith_reg_operand" "%r")
-                   (match_operand:SI 1 "arith_reg_operand" "r")) <lowpart_le>)
-         (const_int 0)))]
-  "TARGET_SH1 && TARGET_LITTLE_ENDIAN"
-  "tst %0,%1"
-  [(set_attr "type" "mt_group")])
-
-(define_insn "*tst<mode>_t_zero"
-  [(set (reg:SI T_REG)
-       (eq:SI
-         (subreg:QIHI
-           (and:SI (match_operand:SI 0 "arith_reg_operand" "%r")
-                   (match_operand:SI 1 "arith_reg_operand" "r")) <lowpart_be>)
-         (const_int 0)))]
-  "TARGET_SH1 && TARGET_BIG_ENDIAN"
-  "tst %0,%1"
-  [(set_attr "type" "mt_group")])
-
 ;; Extract LSB, negate and store in T bit.
 (define_insn "tstsi_t_and_not"
   [(set (reg:SI T_REG)
index 0008927443942bc8719747f071e09c520f05ea8f..bf73c5a0ba16e1f941c4fba14de263d4aa85cde4 100644 (file)
@@ -1,3 +1,8 @@
+2015-03-10  Oleg Endo  <olegendo@gcc.gnu.org>
+
+       PR target/53988
+       * gcc.target/sh/pr53988.c: Mark tests as xfail.
+
 2015-03-06  Eric Botcazou  <ebotcazou@adacore.com>
 
        * g++.dg/other/dump-ada-spec-3.C: Remove include and adjust.
index a2e7213cd8f0e3b104483dcb33651083f24f726e..926bb047385bd3743385706e905d7612f1728b18 100644 (file)
@@ -5,9 +5,9 @@
 /* { dg-do compile }  */
 /* { dg-options "-O1" } */
 /* { dg-skip-if "" { "sh*-*-*" } { "-m5*"} { "" } }  */
-/* { dg-final { scan-assembler-times "tst\tr" 8 } } */
-/* { dg-final { scan-assembler-not "tst\t#255" } } */
-/* { dg-final { scan-assembler-not "exts|extu|and|movu" } } */
+/* { dg-final { scan-assembler-times "tst\tr" 8 { xfail *-*-*} } }  */
+/* { dg-final { scan-assembler-not "tst\t#255" { xfail *-*-*} } }  */
+/* { dg-final { scan-assembler-not "exts|extu|and|movu" { xfail *-*-*} } }  */
 
 int
 test00 (char* a, char* b, int c, int d)