fr30.md: Only allow splits of immediate loads if the destination is a register.
authorScott Marks <SMarks@mobile-mind.com>
Mon, 13 May 2002 10:55:31 +0000 (10:55 +0000)
committerNick Clifton <nickc@gcc.gnu.org>
Mon, 13 May 2002 10:55:31 +0000 (10:55 +0000)
2002-05-13  Scott Marks <SMarks@mobile-mind.com>
* config/fr30/fr30.md: Only allow splits of immediate loads if the destination
is a register.

From-SVN: r53418

gcc/ChangeLog
gcc/config/fr30/fr30.md

index 6381456b82223ac434bbc35776cb3b47d04e1425..a4fc0d880a1374008d63f6aa23e39682e9d0fb8a 100644 (file)
@@ -1,3 +1,8 @@
+2002-05-13  Scott Marks <SMarks@mobile-mind.com>
+
+       * config/fr30/fr30.md: Only allow splits of immediate loads
+       if the destination is a register.
+
 2002-05-13  Neil Booth  <neil@daikokuya.demon.co.uk>
 
        * Makefile.in (c-common.o, cppinit.o): Update.
index 1177c680b42f7643705fcc2490c3edf39740d54d..fe13326818b38d01c3671746eff40d4b45b4ac14 100644 (file)
@@ -21,7 +21,6 @@
 
 ;;- See file "rtl.def" for documentation on define_insn, match_*, et. al.
 
-;;}}} \f
 ;;{{{ Attributes 
 
 (define_attr "length" "" (const_int 2))
 (define_split
   [(set (match_operand:SI 0 "register_operand"  "")
        (match_operand:SI 1 "immediate_operand" ""))]
-   "INTVAL (operands[1]) <= -1 && INTVAL (operands[1]) >= -128"
+   "INTVAL (operands[1]) <= -1 && INTVAL (operands[1]) >= -128
+   && GET_CODE (operands[0]) == REG"
    [(set:SI (match_dup 0) (match_dup 2))
     (set:SI (match_dup 0) (sign_extend:SI (subreg:QI (match_dup 0) 0)))]
    "{
 (define_split
   [(set (match_operand:SI 0 "register_operand"  "")
        (match_operand:SI 1 "immediate_operand" ""))]
-   "(INTVAL (operands[1]) < 0) && ((INTVAL (operands[1]) & 0x00ffffff) == 0)"
+   "(INTVAL (operands[1]) < 0) && ((INTVAL (operands[1]) & 0x00ffffff) == 0)
+    && GET_CODE (operands[0]) == REG"
    [(set:SI (match_dup 0) (match_dup 2))
     (parallel [(set:SI (match_dup 0) (ashift:SI (match_dup 0) (const_int 24)))
               (clobber (reg:CC 16))])]
   [(set (match_operand:SI 0 "register_operand"  "")
        (match_operand:SI 1 "immediate_operand" ""))]
    "(INTVAL (operands[1]) > 0x00ffffff)
-   && ((INTVAL (operands[1]) >> exact_log2 (INTVAL (operands[1]) & (- INTVAL (operands[1])))) < 0x100)"
+   && ((INTVAL (operands[1]) >> exact_log2 (INTVAL (operands[1]) & (- INTVAL (operands[1])))) < 0x100)
+   && GET_CODE (operands[0]) == REG"
    [(set:SI (match_dup 0) (match_dup 2))
     (parallel [(set:SI (match_dup 0) (ashift:SI (match_dup 0) (match_dup 3)))
               (clobber (reg:CC 16))])]