re PR target/52941 (SH Target: Add support for movco.l / movli.l atomics on SH4A)
authorOleg Endo <olegendo@gcc.gnu.org>
Wed, 8 Oct 2014 23:13:02 +0000 (23:13 +0000)
committerOleg Endo <olegendo@gcc.gnu.org>
Wed, 8 Oct 2014 23:13:02 +0000 (23:13 +0000)
gcc/
PR target/52941
* config/sh/sync.md (atomic_exchangesi_hard, atomic_exchange<mode>_hard,
atomic_fetch_<fetchop_name>si_hard,
atomic_fetch_<fetchop_name><mode>_hard, atomic_fetch_nandsi_hard,
atomic_fetch_nand<mode>_hard, atomic_<fetchop_name>_fetchsi_hard,
atomic_<fetchop_name>_fetch<mode>_hard, atomic_nand_fetchsi_hard,
atomic_nand_fetch<mode>_hard): Add missing set of T_REG.

From-SVN: r216018

gcc/ChangeLog
gcc/config/sh/sync.md

index 9491d8bbadbe522b3f692f1e87fa115964f34ead..30d3c021a81b72130295cc494589dcee140d158d 100644 (file)
@@ -1,3 +1,13 @@
+2014-10-08  Oleg Endo  <olegendo@gcc.gnu.org>
+
+       PR target/52941
+       * config/sh/sync.md (atomic_exchangesi_hard, atomic_exchange<mode>_hard,
+       atomic_fetch_<fetchop_name>si_hard,
+       atomic_fetch_<fetchop_name><mode>_hard, atomic_fetch_nandsi_hard,
+       atomic_fetch_nand<mode>_hard, atomic_<fetchop_name>_fetchsi_hard,
+       atomic_<fetchop_name>_fetch<mode>_hard, atomic_nand_fetchsi_hard,
+       atomic_nand_fetch<mode>_hard): Add missing set of T_REG.
+
 2014-10-08  Rong Xu  <xur@google.com>
 
        * gcov-tool.c (profile_overlap): New driver function
index 7dcf6971e6e86fe5b1c3681c3551eb6d9fe432ef..a3acaac5617d5017fbeb4d0c584a58e89f6a12af 100644 (file)
    (set (mem:SI (match_dup 1))
        (unspec:SI
          [(match_operand:SI 2 "arith_operand" "rI08")] UNSPEC_ATOMIC))
+   (set (reg:SI T_REG) (const_int 1))
    (clobber (reg:SI R0_REG))]
   "TARGET_ATOMIC_HARD_LLCS
    || (TARGET_SH4A_ARCH && TARGET_ATOMIC_ANY && !TARGET_ATOMIC_STRICT)"
    (set (mem:QIHI (match_dup 1))
        (unspec:QIHI
          [(match_operand:QIHI 2 "register_operand" "r")] UNSPEC_ATOMIC))
+   (set (reg:SI T_REG) (const_int 1))
    (clobber (reg:SI R0_REG))
    (clobber (match_scratch:SI 3 "=&r"))
    (clobber (match_scratch:SI 4 "=1"))]
          [(FETCHOP:SI (mem:SI (match_dup 1))
             (match_operand:SI 2 "<fetchop_predicate>" "<fetchop_constraint>"))]
          UNSPEC_ATOMIC))
+   (set (reg:SI T_REG) (const_int 1))
    (clobber (reg:SI R0_REG))]
   "TARGET_ATOMIC_HARD_LLCS
    || (TARGET_SH4A_ARCH && TARGET_ATOMIC_ANY && !TARGET_ATOMIC_STRICT)"
          [(FETCHOP:QIHI (mem:QIHI (match_dup 1))
             (match_operand:QIHI 2 "<fetchop_predicate>" "<fetchop_constraint>"))]
          UNSPEC_ATOMIC))
+   (set (reg:SI T_REG) (const_int 1))
    (clobber (reg:SI R0_REG))
    (clobber (match_scratch:SI 3 "=&r"))
    (clobber (match_scratch:SI 4 "=1"))]
          [(not:SI (and:SI (mem:SI (match_dup 1))
                   (match_operand:SI 2 "logical_operand" "rK08")))]
          UNSPEC_ATOMIC))
+   (set (reg:SI T_REG) (const_int 1))
    (clobber (reg:SI R0_REG))]
   "TARGET_ATOMIC_HARD_LLCS
    || (TARGET_SH4A_ARCH && TARGET_ATOMIC_ANY && !TARGET_ATOMIC_STRICT)"
          [(not:QIHI (and:QIHI (mem:QIHI (match_dup 1))
                     (match_operand:QIHI 2 "logical_operand" "rK08")))]
          UNSPEC_ATOMIC))
+   (set (reg:SI T_REG) (const_int 1))
    (clobber (reg:SI R0_REG))
    (clobber (match_scratch:SI 3 "=&r"))
    (clobber (match_scratch:SI 4 "=1"))]
    (set (mem:SI (match_dup 1))
        (unspec:SI
          [(FETCHOP:SI (mem:SI (match_dup 1)) (match_dup 2))]
-         UNSPEC_ATOMIC))]
+         UNSPEC_ATOMIC))
+   (set (reg:SI T_REG) (const_int 1))]
   "TARGET_ATOMIC_HARD_LLCS
    || (TARGET_SH4A_ARCH && TARGET_ATOMIC_ANY && !TARGET_ATOMIC_STRICT)"
 {
        (unspec:QIHI
          [(FETCHOP:QIHI (mem:QIHI (match_dup 1)) (match_dup 2))]
          UNSPEC_ATOMIC))
+   (set (reg:SI T_REG) (const_int 1))
    (clobber (reg:SI R0_REG))
    (clobber (match_scratch:SI 3 "=&r"))
    (clobber (match_scratch:SI 4 "=1"))]
    (set (mem:SI (match_dup 1))
        (unspec:SI
          [(not:SI (and:SI (mem:SI (match_dup 1)) (match_dup 2)))]
-         UNSPEC_ATOMIC))]
+         UNSPEC_ATOMIC))
+   (set (reg:SI T_REG) (const_int 1))]
   "TARGET_ATOMIC_HARD_LLCS
    || (TARGET_SH4A_ARCH && TARGET_ATOMIC_ANY && !TARGET_ATOMIC_STRICT)"
 {
        (unspec:QIHI
          [(not:QIHI (and:QIHI (mem:QIHI (match_dup 1)) (match_dup 2)))]
          UNSPEC_ATOMIC))
+   (set (reg:SI T_REG) (const_int 1))
    (clobber (reg:SI R0_REG))
    (clobber (match_scratch:SI 3 "=&r"))
    (clobber (match_scratch:SI 4 "=1"))]