c4x.md (repeat_block_top, [...]): Deleted.
authorMichael Hayes <m.hayes@elec.canterbury.ac.nz>
Tue, 20 Oct 1998 03:01:10 +0000 (03:01 +0000)
committerMichael Hayes <m.hayes@gcc.gnu.org>
Tue, 20 Oct 1998 03:01:10 +0000 (03:01 +0000)
* config/c4x/c4x.md (repeat_block_top, repeat_block_end,
  repeat_block_filler): Deleted.
(*ashlqi3_set, *ashrqi3_const_set, *ashrqi3_nonconst_clobber):
  Condition code not set if destination register from 'c' class.
(*subbqi3_carry_clobber): Fix typo.

From-SVN: r23195

gcc/ChangeLog
gcc/config/c4x/c4x.md

index 254788dce15c1fbd6b6842259ccdb5c9219a3331..8753149652fd7b8969c2638d8ed237423bcffea4 100644 (file)
@@ -1,3 +1,11 @@
+Tue Oct 20 21:56:05 1998  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
+
+       * config/c4x/c4x.md (repeat_block_top, repeat_block_end,
+       repeat_block_filler): Deleted.
+       (*ashlqi3_set, *ashrqi3_const_set, *ashrqi3_nonconst_clobber):
+       Condition code not set if destination register from 'c' class.
+       (*subbqi3_carry_clobber): Fix typo.
+
 1998-10-18 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
 
        * reorg.c (steal_delay_list_from_target) Check for insns that
index bfcc7b0e33bbe1aab8beee5755cc92eaf09d1d00..58033f02c7a190fd23b4d59f59424a4c7454c61b 100644 (file)
 (define_insn "*subqi3_carry_clobber"
   [(set (match_operand:QI 0 "reg_operand" "=d,?d,d,d,c,?c,c,c")
         (minus:QI (match_operand:QI 1 "src_operand" "rR,rS<>,0,g,rR,rS<>,0,g")
-                  (match_operand:QI 2 "src_operand" "JR,rS<>,0,g,JR,rS<>,g,0")))
+                  (match_operand:QI 2 "src_operand" "JR,rS<>,g,0,JR,rS<>,g,0")))
    (use (reg:CC_NOOV 21))
    (clobber (reg:CC_NOOV 21))]
   "valid_operands (MINUS, operands, QImode)"
 (define_insn "*ashlqi3_set"
   [(set (reg:CC 21)
         (compare:CC
-          (ashift:QI (match_operand:QI 1 "src_operand" "rR,rS<>,0,rR,rS<>,0")
-                     (match_operand:QI 2 "src_operand" "JR,rS<>,g,JR,rS<>,g"))
+          (ashift:QI (match_operand:QI 1 "src_operand" "rR,rS<>,0")
+                     (match_operand:QI 2 "src_operand" "JR,rS<>,g"))
           (const_int 0)))
-   (set (match_operand:QI 0 "reg_operand" "=d,?d,d,c,?c,c")
+   (set (match_operand:QI 0 "reg_operand" "=d,?d,d")
         (ashift:QI (match_dup 1)
                    (match_dup 2)))]
   "valid_operands (ASHIFT, operands, QImode)"
   "@
-   ash3\\t%2,%1,%0
-   ash3\\t%2,%1,%0
-   ash\\t%2,%0
    ash3\\t%2,%1,%0
    ash3\\t%2,%1,%0
    ash\\t%2,%0"
-  [(set_attr "type" "binarycc,binarycc,binarycc,binary,binary,binary")])
+  [(set_attr "type" "binarycc,binarycc,binarycc")])
 ; Default to int16 data attr.
 
 ; This is only used by lshrhi3_reg where we need a LSH insn that will
 (define_insn "*ashrqi3_const_set"
   [(set (reg:CC 21)
         (compare:CC
-          (ashiftrt:QI (match_operand:QI 1 "src_operand" "0,0,r,r")
-                       (match_operand:QI 2 "const_int_operand" "n,n,J,J"))
+          (ashiftrt:QI (match_operand:QI 1 "src_operand" "0,r")
+                       (match_operand:QI 2 "const_int_operand" "n,J"))
           (const_int 0)))
-   (set (match_operand:QI 0 "reg_operand" "=?d,?c,d,c")
+   (set (match_operand:QI 0 "reg_operand" "=?d,d")
         (ashiftrt:QI (match_dup 1)
                      (match_dup 2)))]
   "valid_operands (ASHIFTRT, operands, QImode)"
   "@
    ash\\t%n2,%0
-   ash\\t%n2,%0
-   ash3\\t%n2,%1,%0
    ash3\\t%n2,%1,%0"
-  [(set_attr "type" "binarycc,binarycc,binarycc,binarycc")])
+  [(set_attr "type" "binarycc,binarycc")])
 
 (define_insn "*ashrqi3_nonconst_clobber"
   [(set (match_operand:QI 0 "reg_operand" "=d,?d,d,c,?c,c")
   "
   [(set_attr "type" "repeat_top")])
 
-; operand 0 is the loop depth
-; operand 1 is the loop count
-; operand 2 is the start label
-; operand 3 is the end label
-(define_expand "repeat_block_top"
-  [(set (reg:QI 27) (match_operand:QI 1 "src_operand" ""))
-   (use (match_operand:QI 0 "immediate_operand" ""))
-   (parallel[(set (reg:QI 25) (label_ref (match_operand 2 "" "")))
-             (set (reg:QI 26) (label_ref (match_operand 3 "" "")))])]
-  ""
-  "if (CONSTANT_P (operands[1])
-       && !const_operand (operands[1], QImode))
-     operands[1] = force_const_mem (QImode, operands[1]);"
- )
-
-; operand 0 is the loop depth
-(define_insn "repeat_block_end"
-  [(set (pc)
-        (if_then_else (ne (reg:QI 27) (const_int 0))
-                      (label_ref (match_operand 1 "" ""))
-                      (pc)))
-   (use (match_operand:QI 0 "immediate_operand" ""))
-   (use (reg:QI 25))
-   (use (reg:QI 26))
-   (set (reg:QI 27)
-        (plus:QI (reg:QI 27)
-                 (const_int -1)))]
-  ""
-  "*
-   return c4x_rptb_nop_p(insn) ? \"nop\" : \"\";"
-  [(set_attr "type" "repeat")])
-
-; to prevent labels being coalesced and to leave a space to sink insns
-; out of a repeat block loop.
-(define_insn "repeat_block_filler"
-  [(unspec [(const_int 0)] 7)]
-  ""
-  ""
-  [(set_attr "type" "repeat")])
-
 
 (define_insn "rptb_end"
   [(set (pc)
 
 (define_expand "decrement_and_branch_on_count"
   [(parallel [(set (pc)
-                   (if_then_else (ge (match_operand:QI 0 "rc_reg_operand" "v")
+                   (if_then_else (ge (match_operand:QI 0 "rc_reg_operand" "")
                                      (const_int 0))
                                  (label_ref (match_operand 1 "" ""))
                                  (pc)))