(load store patterns): Prepend loads and stores with %V and %v to track the type...
authorTom Wood <wood@gnu.org>
Fri, 18 Sep 1992 10:46:32 +0000 (10:46 +0000)
committerTom Wood <wood@gnu.org>
Fri, 18 Sep 1992 10:46:32 +0000 (10:46 +0000)
(load store patterns): Prepend loads and stores with %V
and %v to track the type and address of the access.
(call_movstrsi_loop): Renamed from call_block_move_loop.
Use call-value for the block move patterns.

From-SVN: r2153

gcc/config/m88k/m88k.md

index f334998a93809a5e982f81b1e2a139bfd7c61c12..639d5642d7a1a673b0003ba9e782d5227e87caef 100644 (file)
@@ -28,7 +28,7 @@
 (define_expand "m88k_sccs_id"
   [(match_operand:SI 0 "" "")]
   ""
-  "{ static char sccs_id[] = \"@(#)m88k.md     2.2.7.8 08/26/92 13:41:44\";
+  "{ static char sccs_id[] = \"@(#)m88k.md     2.2.12.1 09/12/92 07:08:29\";
      FAIL; }")
 \f
 ;; Attribute specifications
     || operands[1] == const0_rtx)"
   "@
    or %0,%#r0,%1
-   ld %0,%1
-   st %r1,%0
+   %V1ld %0,%1
+   %v0st %r1,%0
    subu %0,%#r0,%n1
    set %0,%#r0,%s1
    mov.s %0,%1
    mov.s %0,%1
    mov %0,%1
-   ld %0,%1
-   st %1,%0"
+   %V1ld %0,%1
+   %v0st %1,%0"
   [(set_attr "type" "arith,load,store,arith,bit,mov,mov,mov,load,store")])
 
 (define_insn ""
     || operands[1] == const0_rtx)"
   "@
    or %0,%#r0,%h1
-   ld.hu %0,%1
-   st.h %r1,%0
+   %V1ld.hu %0,%1
+   %v0st.h %r1,%0
    subu %0,%#r0,%H1"
   [(set_attr "type" "arith,load,store,arith")])
 
     || operands[1] == const0_rtx)"
   "@
    or %0,%#r0,%q1
-   ld.bu %0,%1
-   st.b %r1,%0
+   %V1ld.bu %0,%1
+   %v0st.b %r1,%0
    subu %r0,%#r0,%Q1"
   [(set_attr "type" "arith,load,store,arith")])
 
   ""
   "@
    or %0,%#r0,%1\;or %d0,%#r0,%d1
-   ld.d %0,%1
-   st.d %1,%0
+   %V1ld.d %0,%1
+   %v0st.d %1,%0
    mov.d %0,%1
    mov.d %0,%1
    mov %0,%1
-   ld.d %0,%1
-   st.d %1,%0"
+   %V1ld.d %0,%1
+   %v0st.d %1,%0"
   [(set_attr "type" "marith,loadd,store,mov,mov,mov,loadd,store")])
 
 (define_insn ""
 ;      return \"or %0,%#r0,0\;or %d0,%#r0,0\";
 ;    case 1:
 ;      operands[1] = adj_offsettable_operand (operands[0], 4);
-;      return \"st %#r0,%0\;st %#r0,%1\";
+;      return \"%v0st %#r0,%0\;st %#r0,%1\";
 ;    }
 ;}")
 
   ""
   "@
    or %0,%#r0,%1\;or %d0,%#r0,%d1
-   ld.d %0,%1
-   st.d %1,%0
+   %V1ld.d %0,%1
+   %v0st.d %1,%0
    mov.d %0,%1
    mov.d %0,%1
    mov %0,%1
-   ld.d %0,%1
-   st.d %1,%0"
+   %V1ld.d %0,%1
+   %v0st.d %1,%0"
   [(set_attr "type" "marith,loadd,store,mov,mov,mov,loadd,store")])
 
 (define_insn ""
   ""
   "@
    or %0,%#r0,%1
-   ld %0,%1
-   st %r1,%0
+   %V1ld %0,%1
+   %v0st %r1,%0
    mov.s %0,%1
    mov.s %0,%1
    mov %0,%1
-   ld %0,%1
-   st %r1,%0"
+   %V1ld %0,%1
+   %v0st %r1,%0"
   [(set_attr "type" "arith,load,store,mov,mov,mov,load,store")])
 
 (define_insn ""
    (use (reg:SI 2))
    (use (reg:SI 3))
    (use (match_dup 5))
-   (parallel [(call (mem:SI (match_operand 0 "" ""))
-                   (const_int 0))
+   (parallel [(set (reg:DI 2)
+                  (call (mem:SI (match_operand 0 "" ""))
+                        (const_int 0)))
              (clobber (reg:SI 1))])]
   ""
   "")
 
-;; Call a looping block move library function (e.g. __movstrSI64n68).
+;; Call an SImode looping block move library function (e.g. __movstrSI64n68).
 ;; operands 0-5 as in the non-looping interface
 ;; operand 6 is the loop count
 
-(define_expand "call_block_move_loop"
+(define_expand "call_movstrsi_loop"
   [(set (reg:SI 3) (minus:SI (match_operand:SI 2 "register_operand" "")
                             (match_operand:SI 3 "immediate_operand" "")))
    (set (match_operand:SI 5 "register_operand" "")
    (use (reg:SI 3))
    (use (match_dup 5))
    (use (reg:SI 6))
-   (parallel [(call (mem:SI (match_operand 0 "" ""))
-                   (const_int 0))
+   (parallel [(set (reg:DI 2)
+                  (call (mem:SI (match_operand 0 "" ""))
+                        (const_int 0)))
              (clobber (reg:SI 1))])]
   ""
   "")
   "@
    mask %0,%1,0xffff
    or %0,%#r0,%h1
-   ld.hu %0,%1"
+   %V1ld.hu %0,%1"
   [(set_attr "type" "arith,arith,load")])
 
 (define_expand "zero_extendqihi2"
   "@
    mask %0,%1,0xff
    or %0,%#r0,%q1
-   ld.bu %0,%1"
+   %V1ld.bu %0,%1"
   [(set_attr "type" "arith,arith,load")])
 
 (define_expand "zero_extendqisi2"
   "@
    mask %0,%1,0xff
    or %0,%#r0,%q1
-   ld.bu %0,%1"
+   %V1ld.bu %0,%1"
   [(set_attr "type" "arith,arith,load")])
 \f
 ;;- sign extension instructions
    ext %0,%1,16<0>
    or %0,%#r0,%h1
    subu %0,%#r0,%H1
-   ld.h %0,%1"
+   %V1ld.h %0,%1"
   [(set_attr "type" "bit,arith,arith,load")])
 
 (define_expand "extendqihi2"
    ext %0,%1,8<0>
    or %0,%#r0,%q1
    subu %0,%#r0,%Q1
-   ld.b %0,%1"
+   %V1ld.b %0,%1"
   [(set_attr "type" "bit,arith,arith,load")])
 
 (define_expand "extendqisi2"
    ext %0,%1,8<0>
    or %0,%#r0,%q1
    subu %0,%#r0,%Q1
-   ld.b %0,%1"
+   %V1ld.b %0,%1"
   [(set_attr "type" "bit,arith,arith,load")])
 \f
 ;; Conversions between float and double.
        (ashiftrt:SI (match_operand:SI 1 "memory_operand" "m")
                     (const_int 24)))]
   "! SCALED_ADDRESS_P (XEXP (operands[1], 0))"
-  "ld.b %0,%1"
+  "%V1ld.b %0,%1"
   [(set_attr "type" "load")])
 
 (define_insn ""
        (lshiftrt:SI (match_operand:SI 1 "memory_operand" "m")
                     (const_int 24)))]
   "! SCALED_ADDRESS_P (XEXP (operands[1], 0))"
-  "ld.bu %0,%1"
+  "%V1ld.bu %0,%1"
   [(set_attr "type" "load")])
 
 (define_insn ""
        (ashiftrt:SI (match_operand:SI 1 "memory_operand" "m")
                     (const_int 16)))]
   "! SCALED_ADDRESS_P (XEXP (operands[1], 0))"
-  "ld.h %0,%1"
+  "%V1ld.h %0,%1"
   [(set_attr "type" "load")])
 
 (define_insn ""
        (lshiftrt:SI (match_operand:SI 1 "memory_operand" "m")
                     (const_int 16)))]
   "! SCALED_ADDRESS_P (XEXP (operands[1], 0))"
-  "ld.hu %0,%1"
+  "%V1ld.hu %0,%1"
   [(set_attr "type" "load")])
 \f
 ;;- arithmetic shift instructions.