]> gcc.gnu.org Git - gcc.git/commitdiff
i386.h (SPECIAL_MODE_PREDICATES): New.
authorRichard Henderson <rth@cygnus.com>
Thu, 14 Oct 1999 10:34:05 +0000 (03:34 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 14 Oct 1999 10:34:05 +0000 (03:34 -0700)
        * i386.h (SPECIAL_MODE_PREDICATES): New.
        * i386.md (movstricthi_1): Use nonimmediate_operand for op 0.
        (movqi_1, movdi_1, movdi_2, some splits): Likewise.
        (addsi_lea_3): Add missing mode for op 3.
        (prologue_set_got, prologue_get_pc): Add missing modes.
        (*) Add missing output reload constraints.

From-SVN: r29972

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

index 3acfc06d8ecbeb93e890dcaaedef8e1974afcfe6..5914e7a9db7270394aa0479d1638ea6d1305026d 100644 (file)
@@ -4,6 +4,13 @@ Thu Oct 14 03:23:08 1999  Richard Henderson  <rth@cygnus.com>
        (*): Add missing output reload constraints.  Remove constraints
        from define_splits.
 
+       * i386.h (SPECIAL_MODE_PREDICATES): New.
+       * i386.md (movstricthi_1): Use nonimmediate_operand for op 0.
+       (movqi_1, movdi_1, movdi_2, some splits): Likewise.
+       (addsi_lea_3): Add missing mode for op 3.
+       (prologue_set_got, prologue_get_pc): Add missing modes.
+       (*) Add missing output reload constraints.
+
 Thu Oct 14 03:59:57 1999  Stephane Carrez  <stcarrez@worldnet.fr>
 
        * stor-layout.c (layout_union): Use HOST_WIDE_INT for const_size;
index 29c63447d68f2c47a673f34133e599957d93d8c0..579b132468b235af8c0cb0f9614d70669559964f 100644 (file)
@@ -2397,6 +2397,12 @@ do { long l;                                             \
   {"cmpsi_operand", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF,       \
                     LABEL_REF, SUBREG, REG, MEM, AND}},                \
   {"long_memory_operand", {MEM}},
+
+/* A list of predicates that do special things with modes, and so
+   should not elicit warnings for VOIDmode match_operand.  */
+
+#define SPECIAL_MODE_PREDICATES \
+  "ext_register_operand",
 \f
 /* Variables in i386.c */
 extern const char *ix86_cpu_string;            /* for -mcpu=<xxx> */
index 2574c490ec3d18625a63e6e771deeeff5b6a5922..1feb05d6735fe8e4475dc385eee60015993aa7b8 100644 (file)
 }")
 
 (define_insn "*movstricthi_1"
-  [(set (strict_low_part (match_operand:HI 0 "general_operand" "+g,r"))
+  [(set (strict_low_part (match_operand:HI 0 "nonimmediate_operand" "+m,r"))
        (match_operand:HI 1 "general_operand" "rn,m"))]
   "! TARGET_PARTIAL_REG_STALL
    && (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
    (set_attr "length_prefix" "1")])
 
 (define_insn "*movqi_1"
-  [(set (match_operand:QI 0 "general_operand" "=q,q,*r,*r,m")
+  [(set (match_operand:QI 0 "nonimmediate_operand" "=q,q,*r,*r,m")
        (match_operand:QI 1 "general_operand" "qn,qm,*rn,qm,qn"))
    (clobber (reg:CC 17))]
   "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
   "#")
 
 (define_insn "*movdi_1"
-  [(set (match_operand:DI 0 "general_operand" "=r,o")
+  [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o")
        (match_operand:DI 1 "general_operand" "riFo,riF"))
    (clobber (reg:CC 17))]
   "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
   "#")
 
 (define_insn "*movdi_2"
-  [(set (match_operand:DI 0 "general_operand" "=r,o")
+  [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o")
        (match_operand:DI 1 "general_operand" "riFo,riF"))]
   "GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
   "#")
 
 ;; %%% This multiword shite has got to go.
 (define_split
-  [(set (match_operand:DI 0 "general_operand" "")
+  [(set (match_operand:DI 0 "nonimmediate_operand" "")
         (match_operand:DI 1 "general_operand" ""))
    (clobber (reg:CC 17))]
   "reload_completed"
   "if (ix86_split_movdi (operands)) DONE;")
   
 (define_split
-  [(set (match_operand:DI 0 "general_operand" "")
+  [(set (match_operand:DI 0 "nonimmediate_operand" "")
         (match_operand:DI 1 "general_operand" ""))]
   "reload_completed"
   [(set (match_dup 2) (match_dup 4))
   [(set (match_operand:SF 0 "nonimmediate_operand" "=m,f")
        (float_truncate:SF
         (match_operand:DF 1 "register_operand" "f,0")))
-   (clobber (match_operand:SF 2 "memory_operand" "m,m"))]
+   (clobber (match_operand:SF 2 "memory_operand" "=m,m"))]
   "TARGET_80387"
   "*
 {
   [(set (match_operand:SF 0 "nonimmediate_operand" "=m,f")
        (float_truncate:SF
         (match_operand:XF 1 "register_operand" "f,0")))
-   (clobber (match_operand:SF 2 "memory_operand" "m,m"))]
+   (clobber (match_operand:SF 2 "memory_operand" "=m,m"))]
   "TARGET_80387"
   "*
 {
   [(set (match_operand:DF 0 "nonimmediate_operand" "=m,f")
        (float_truncate:DF
         (match_operand:XF 1 "register_operand" "f,0")))
-   (clobber (match_operand:DF 2 "memory_operand" "m,m"))]
+   (clobber (match_operand:DF 2 "memory_operand" "=m,m"))]
   "TARGET_80387"
   "*
 {
    operands[3] = assign_386_stack_local (DImode, 1);")
 
 (define_insn "*fix_truncdi_1"
-  [(set (match_operand:DI 0 "nonimmediate_operand" "m,?r")
+  [(set (match_operand:DI 0 "nonimmediate_operand" "=m,?r")
        (fix:DI (match_operand 1 "register_operand" "f,f")))
-   (clobber (match_operand:SI 2 "memory_operand" "o,o"))
-   (clobber (match_operand:DI 3 "memory_operand" "m,m"))
+   (clobber (match_operand:SI 2 "memory_operand" "=o,o"))
+   (clobber (match_operand:DI 3 "memory_operand" "=m,m"))
    (clobber (match_scratch:SI 4 "=&r,=&r"))
    (clobber (match_scratch:XF 5 "=f,f"))]
   "TARGET_80387 && FLOAT_MODE_P (GET_MODE (operands[1]))"
    operands[3] = assign_386_stack_local (SImode, 1);")
 
 (define_insn "*fix_truncsi_1"
-  [(set (match_operand:SI 0 "nonimmediate_operand" "m,?r")
+  [(set (match_operand:SI 0 "nonimmediate_operand" "=m,?r")
        (fix:SI (match_operand 1 "register_operand" "f,f")))
-   (clobber (match_operand:SI 2 "memory_operand" "o,o"))
-   (clobber (match_operand:SI 3 "memory_operand" "m,m"))
+   (clobber (match_operand:SI 2 "memory_operand" "=o,o"))
+   (clobber (match_operand:SI 3 "memory_operand" "=m,m"))
    (clobber (match_scratch:SI 4 "=&r,r"))]
   "TARGET_80387 && FLOAT_MODE_P (GET_MODE (operands[1]))"
   "* return output_fix_trunc (insn, operands);"
 
 ;; %% Not used yet.
 (define_insn "x86_fnstcw_1"
-  [(set (match_operand:HI 0 "memory_operand" "m")
-       (unspec [(reg:HI 18)] 11))]
+  [(set (match_operand:HI 0 "memory_operand" "=m")
+       (unspec:HI [(reg:HI 18)] 11))]
   "TARGET_80387"
   "fnstcw\\t%0"
   [(set_attr "length_opcode" "2")
 
 (define_insn "x86_fldcw_1"
   [(set (reg:HI 18)
-       (unspec [(match_operand:HI 0 "memory_operand" "m")] 12))]
+       (unspec:HI [(match_operand:HI 0 "memory_operand" "m")] 12))]
   "TARGET_80387"
   "fldcw\\t%0"
   [(set_attr "length_opcode" "2")
   [(set (match_operand:SI 0 "register_operand" "=r")
         (plus:SI (plus:SI (mult:SI (match_operand:SI 1 "reg_no_sp_operand" "r")
                                   (match_operand:SI 2 "const248_operand" "I"))
-                         (match_operand 3 "register_operand" "%r"))
+                         (match_operand:SI 3 "register_operand" "%r"))
                 (match_operand:SI 4 "immediate_operand" "i")))]
   ""
   "*
   [(set_attr "type" "alu")])
 
 (define_insn "*addqi_low_1"
-  [(set (strict_low_part (match_operand:QI 0 "register_operand" "q"))
+  [(set (strict_low_part (match_operand:QI 0 "register_operand" "+q"))
        (plus:QI (match_operand:QI 1 "register_operand" "0")
                 (match_operand:QI 2 "general_operand" "qmn")))
    (clobber (reg:CC 17))]
 
 (define_insn "prologue_set_got"
   [(set (match_operand:SI 0 "" "")
-       (unspec_volatile
+       (unspec_volatile:SI
         [(plus:SI (match_dup 0)
                   (plus:SI (match_operand:SI 1 "symbolic_operand" "")
                            (minus:SI (pc) (match_operand 2 "" ""))))] 1))
 
 (define_insn "prologue_get_pc"
   [(set (match_operand:SI 0 "" "")
-    (unspec_volatile [(plus:SI (pc) (match_operand 1 "" ""))] 2))]
+    (unspec_volatile:SI [(plus:SI (pc) (match_operand 1 "" ""))] 2))]
   ""
   "*
 {
   [(set (match_operand:SI 0 "register_operand" "=r")
        (plus:SI (match_operand:SI 1 "register_operand" "0")
                 (match_operand:SI 2 "nonmemory_operand" "ri")))
-   (set (match_operand:SI 3 "register_operand" "r")
+   (set (match_operand:SI 3 "register_operand" "=r")
        (match_dup 3))
    (clobber (reg:CC 17))]
   ""
   [(set_attr "type" "alu")])
 
 (define_insn "epilogue_deallocate_stack"
-  [(set (match_operand:SI 0 "register_operand" "r")
-       (match_operand:SI 1 "register_operand" "r"))
+  [(set (match_operand:SI 0 "register_operand" "=r")
+       (match_operand:SI 1 "register_operand" "+r"))
    (set (match_dup 1) (match_dup 1))]
   ""
   "mov{l}\\t{%1, %0|%0, %1}"
This page took 0.088574 seconds and 5 git commands to generate.