i386.md (length_immediate attribute): Fix typo.
authorEric Botcazou <ebotcazou@multimania.com>
Wed, 3 Jul 2002 17:02:39 +0000 (17:02 +0000)
committerJeff Law <law@gcc.gnu.org>
Wed, 3 Jul 2002 17:02:39 +0000 (11:02 -0600)
        * i386.md (length_immediate attribute): Fix typo.
        (length_address attribute): Likewise.
        (modrm attribute): Set it to 0 for immediate call instructions.
        (jcc_1 pattern): Set modrm attribute to 0.
        (jcc_2 pattern ): Likewise.
        (jump pattern): Likewise.
        (doloop_end_internal pattern): Explicitly set length.
        (leave pattern): Fix typo.
        (leave_rex64 pattern): Likewise.

Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r55215

gcc/ChangeLog
gcc/config/i386/i386.md

index 704ed18abd7a885a523bc33b566a6608139ce20a..4000c79de8a2f887b9d6cea2fe6d795b86e5a828 100644 (file)
@@ -1,3 +1,16 @@
+2002-07-03  Eric Botcazou  <ebotcazou@multimania.com>
+           Jeff Law  <law@redhat.com>
+
+       * i386.md (length_immediate attribute): Fix typo.
+       (length_address attribute): Likewise.
+       (modrm attribute): Set it to 0 for immediate call instructions.
+       (jcc_1 pattern): Set modrm attribute to 0.
+       (jcc_2 pattern ): Likewise.
+       (jump pattern): Likewise.
+       (doloop_end_internal pattern): Explicitly set length.
+       (leave pattern): Fix typo.
+       (leave_rex64 pattern): Likewise.
+
 2002-07-03  David Edelsohn  <edelsohn@gnu.org>
 
        * config/rs6000/rs6000.md (fix_truncdfsi2_internal): Ignore DImode
index c2ef896543989abd43cfc336b402275710b39226..419d45c76729df23746ff409b9aa23516fafb33a 100644 (file)
 
 ;; The (bounding maximum) length of an instruction immediate.
 (define_attr "length_immediate" ""
-  (cond [(eq_attr "type" "incdec,setcc,icmov,ibr,str,cld,lea,other,multi,idiv")
+  (cond [(eq_attr "type" "incdec,setcc,icmov,str,cld,lea,other,multi,idiv")
           (const_int 0)
         (eq_attr "unit" "i387,sse,mmx")
           (const_int 0)
   (cond [(eq_attr "type" "str,cld,other,multi,fxch")
           (const_int 0)
         (and (eq_attr "type" "call")
-             (match_operand 1 "constant_call_address_operand" ""))
+             (match_operand 0 "constant_call_address_operand" ""))
             (const_int 0)
         (and (eq_attr "type" "callv")
              (match_operand 1 "constant_call_address_operand" ""))
              (and (match_operand 0 "register_operand" "")
                   (match_operand 1 "immediate_operand" "")))
           (const_int 0)
+        (and (eq_attr "type" "call")
+             (match_operand 0 "constant_call_address_operand" ""))
+            (const_int 0)
+        (and (eq_attr "type" "callv")
+             (match_operand 1 "constant_call_address_operand" ""))
+            (const_int 0)
         ]
         (const_int 1)))
 
   ""
   "%+j%C1\t%l0"
   [(set_attr "type" "ibr")
+   (set_attr "modrm" "0")
    (set (attr "prefix_0f")
           (if_then_else (and (ge (minus (match_dup 0) (pc))
                                  (const_int -128))
   ""
   "%+j%c1\t%l0"
   [(set_attr "type" "ibr")
+   (set_attr "modrm" "0")
    (set (attr "prefix_0f")
           (if_then_else (and (ge (minus (match_dup 0) (pc))
                                  (const_int -128))
        (label_ref (match_operand 0 "" "")))]
   ""
   "jmp\t%l0"
-  [(set_attr "type" "ibr")])
+  [(set_attr "type" "ibr")
+   (set_attr "modrm" "0")])
 
 (define_expand "indirect_jump"
   [(set (pc) (match_operand 0 "nonimmediate_operand" "rm"))]
     return "dec{l}\t%1\;%+jne\t%l0";
 }
   [(set_attr "ppro_uops" "many")
+   (set (attr "length")
+       (if_then_else (and (eq_attr "alternative" "0")
+                          (and (ge (minus (match_dup 0) (pc))
+                                   (const_int -128))
+                               (lt (minus (match_dup 0) (pc))
+                                   (const_int 124))))
+                     (const_int 2)
+                     (const_int 16)))
    (set (attr "type")
        (if_then_else (and (eq_attr "alternative" "0")
                           (and (ge (minus (match_dup 0) (pc))
   [(set_attr "length_immediate" "0")
    (set_attr "length" "1")
    (set_attr "modrm" "0")
-   (set_attr "modrm" "0")
    (set_attr "athlon_decode" "vector")
    (set_attr "ppro_uops" "few")])
 
   [(set_attr "length_immediate" "0")
    (set_attr "length" "1")
    (set_attr "modrm" "0")
-   (set_attr "modrm" "0")
    (set_attr "athlon_decode" "vector")
    (set_attr "ppro_uops" "few")])
 \f