pa.md (movqi, [...]): Fix attributes which involve fp<->gr copies to match current...
authorJeff Law <law@gcc.gnu.org>
Fri, 1 Jan 1993 17:20:36 +0000 (10:20 -0700)
committerJeff Law <law@gcc.gnu.org>
Fri, 1 Jan 1993 17:20:36 +0000 (10:20 -0700)
        * pa.md (movqi, movhi, movsi, movdi, movsf, movdf): Fix attributes
        which involve fp<->gr copies to match current reality.
        (indexed loads): These should have "load" attributes, not "move".

From-SVN: r3043

gcc/config/pa/pa.md

index bd629d52cbb8f00432a65c43d25b02e670693e68..5ccc83dc5354dfb230e82c0fdbea99f16d1a1ecd 100644 (file)
    fstws %1,-16(30)\;ldw -16(30),%0
    stw %1,-16(30)\;fldws -16(30),%0
    fcpy,sgl %1,%0"
-  [(set_attr "type" "move,load,store,move,move,fpalu")
+  [(set_attr "type" "move,load,store,load,fpload,fpalu")
    (set_attr "length" "1,1,1,2,2,1")])
 
 ;; For pic
    fstws %1,-16(30)\;ldw -16(30),%0
    stw %1,-16(30)\;fldws -16(30),%0
    fcpy,sgl %1,%0"
-  [(set_attr "type" "move,load,store,move,move,fpalu")
+  [(set_attr "type" "move,load,store,load,fpload,fpalu")
    (set_attr "length" "1,1,1,2,2,1")])
 
 (define_insn ""
    fstws %1,-16(30)\;ldw -16(30),%0
    stw %1,-16(30)\;fldws -16(30),%0
    fcpy,sgl %1,%0"
-  [(set_attr "type" "move,load,store,move,move,fpalu")
+  [(set_attr "type" "move,load,store,load,fpload,fpalu")
    (set_attr "length" "1,1,1,2,2,1")])
 
 (define_insn ""
                         (match_operand:SI 2 "register_operand" "r"))))]
   ""
   "ldwx,s %1(0,%2),%0"
-  [(set_attr "type" "move")
+  [(set_attr "type" "load")
    (set_attr "length" "1")])
 
 ; this will never match
 ;               (match_dup 1)))]
 ;  ""
 ;  "ldwx,sm %2(0,%1),%0"
-;  [(set_attr "type" "move")
+;  [(set_attr "type" "load")
 ;   (set_attr "length" "1")])
 
 (define_insn ""
                         (match_operand:SI 1 "register_operand" "r"))))]
   ""
   "ldhx,s %2(0,%1),%0"
-  [(set_attr "type" "move")
+  [(set_attr "type" "load")
    (set_attr "length" "1")])
 
 ; this will never match
 ;               (match_dup 1)))]
 ;  ""
 ;  "ldhx,sm %2(0,%1),%0"
-;  [(set_attr "type" "move")
+;  [(set_attr "type" "load")
 ;   (set_attr "length" "1")])
 
 ;; The definition of this insn does not really explain what it does,
     return output_fp_move_double (operands);
   return output_move_double (operands);
 }"
-  [(set_attr "type" "fpalu,move,fpstore,store,fpload,load,multi,multi")
+  [(set_attr "type" "fpalu,move,fpstore,store,fpload,load,fpload,load")
    (set_attr "length" "1,2,1,2,1,2,3,3")])
 
 (define_expand "movdi"
     return output_fp_move_double (operands);
   return output_move_double (operands);
 }"
-  [(set_attr "type" "move,store,load,misc,multi,fpalu,multi")
-   (set_attr "length" "2,3,3,3,3,2,3")])
+;; Use move in the last type..  This case happens often with xmpyu
+;; and in nearly all cases we only access the data from the first 
+;; of the two loads generated, and that can't stall on a data conflict
+;; be cause of the second load.
+  [(set_attr "type" "move,store,load,misc,fpload,fpalu,move")
+   (set_attr "length" "2,3,3,3,3,1,3")])
 
 (define_insn ""
   [(set (match_operand:DI 0 "register_operand" "=r,r")
    ldw%M1 %1,%0
    fstws%F0 %r1,%0
    stw%M0 %r1,%0"
-  [(set_attr "type" "fpalu,move,multi,multi,fpload,load,fpstore,store")
+  [(set_attr "type" "fpalu,move,load,fpload,fpload,load,fpstore,store")
    (set_attr "length" "1,1,2,2,1,1,1,1")])
 
 \f