OSDN Git Service

* config/mips/mips.md: Name the unspecs with define_constant.
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 May 2002 08:01:35 +0000 (08:01 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 May 2002 08:01:35 +0000 (08:01 +0000)
(*HILO_delay): Rename to 'hilo_delay' (no star).
(reload_indi): Replace gen_rtx_UNSPEC with gen_hilo_delay.
(reload_outdi, reload_outsi): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@53284 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/mips/mips.md

index d7f9913..4e90317 100644 (file)
@@ -1,3 +1,10 @@
+2002-05-08  Richard Sandiford  <rsandifo@redhat.com>
+
+       * config/mips/mips.md: Name the unspecs with define_constant.
+       (*HILO_delay): Rename to 'hilo_delay' (no star).
+       (reload_indi): Replace gen_rtx_UNSPEC with gen_hilo_delay.
+       (reload_outdi, reload_outsi): Likewise.
+
 2002-05-07  Kazu Hirata  <kazu@cs.umass.edu>
 
        * toplev.c: Fix formatting.
index 2229f55..bbce30e 100644 (file)
 ;; ??? Currently does not have define_function_unit support for the R8000.
 ;; Must include new entries for fmadd in addition to existing entries.
 
-;; UNSPEC values used in mips.md
-;; Number      USE
-;; 0           movsi_ul
-;; 1           movsi_usw, get_fnaddr
-;; 2            reload_in*, reload_out* : sets delay on HILO register
-;; 3           eh_set_return
-;; 20          builtin_setjmp_setup
-;; 111         movdi_usd
-;;
-;; UNSPEC_VOLATILE values
-;; 0           blockage
-;; 2           loadgp
-;; 3           builtin_longjmp
-;; 4           exception_receiver
-;; 10          consttable_qi
-;; 11          consttable_hi
-;; 12          consttable_si
-;; 13          consttable_di
-;; 14          consttable_sf
-;; 15          consttable_df
-;; 16          align_2
-;; 17          align_4
-;; 18          align_8
+(define_constants
+  [(UNSPEC_ULW                  0)
+   (UNSPEC_USW                  1)
+   (UNSPEC_ULD                  2)
+   (UNSPEC_USD                  3)
+   (UNSPEC_GET_FNADDR           4)
+   (UNSPEC_HILO_DELAY           5)
+   (UNSPEC_BLOCKAGE             6)
+   (UNSPEC_LOADGP               7)
+   (UNSPEC_SETJMP               8)
+   (UNSPEC_LONGJMP              9)
+   (UNSPEC_EH_RECEIVER         10)
+   (UNSPEC_EH_RETURN           11)
+   (UNSPEC_CONSTTABLE_QI       12)
+   (UNSPEC_CONSTTABLE_HI       13)
+   (UNSPEC_CONSTTABLE_SI       14)
+   (UNSPEC_CONSTTABLE_DI       15)
+   (UNSPEC_CONSTTABLE_SF       16)
+   (UNSPEC_CONSTTABLE_DF       17)
+   (UNSPEC_ALIGN_2             18)
+   (UNSPEC_ALIGN_4             19)
+   (UNSPEC_ALIGN_8             20)])
 \f
 
 ;; ....................
@@ -4831,7 +4830,8 @@ move\\t%0,%z4\\n\\
 
 (define_insn "movsi_ulw"
   [(set (match_operand:SI 0 "register_operand" "=&d,&d")
-       (unspec:SI [(match_operand:BLK 1 "general_operand" "R,o")] 0))]
+       (unspec:SI [(match_operand:BLK 1 "general_operand" "R,o")]
+                  UNSPEC_ULW))]
   "!TARGET_MIPS16"
   "*
 {
@@ -4860,7 +4860,8 @@ move\\t%0,%z4\\n\\
 
 (define_insn "movsi_usw"
   [(set (match_operand:BLK 0 "memory_operand" "=R,o")
-       (unspec:BLK [(match_operand:SI 1 "reg_or_0_operand" "dJ,dJ")] 1))]
+       (unspec:BLK [(match_operand:SI 1 "reg_or_0_operand" "dJ,dJ")]
+                   UNSPEC_USW))]
   "!TARGET_MIPS16"
   "*
 {
@@ -4890,7 +4891,8 @@ move\\t%0,%z4\\n\\
 
 (define_insn "movdi_uld"
   [(set (match_operand:DI 0 "register_operand" "=&d,&d")
-       (unspec:DI [(match_operand:BLK 1 "general_operand" "R,o")] 0))]
+       (unspec:DI [(match_operand:BLK 1 "general_operand" "R,o")]
+                  UNSPEC_ULD))]
   ""
   "*
 {
@@ -4919,7 +4921,8 @@ move\\t%0,%z4\\n\\
 
 (define_insn "movdi_usd"
   [(set (match_operand:BLK 0 "memory_operand" "=R,o")
-       (unspec:BLK [(match_operand:DI 1 "reg_or_0_operand" "dJ,dJ")] 111))]
+       (unspec:BLK [(match_operand:DI 1 "reg_or_0_operand" "dJ,dJ")]
+                   UNSPEC_USD))]
   ""
   "*
 {
@@ -5259,7 +5262,7 @@ move\\t%0,%z4\\n\\
          emit_move_insn (gen_rtx_REG (SImode, 64), scratch);
          emit_move_insn (scratch, lo_word);
          emit_move_insn (gen_rtx (REG, SImode, 65), scratch);
-         emit_insn (gen_rtx_UNSPEC (VOIDmode, gen_rtvec (1, operands[0]), 2));
+         emit_insn (gen_hilo_delay (operands[0]));
        }
       else
        {
@@ -5268,7 +5271,7 @@ move\\t%0,%z4\\n\\
          emit_insn (gen_ashldi3 (scratch, operands[1], GEN_INT (32)));
          emit_insn (gen_ashrdi3 (scratch, scratch, GEN_INT (32)));
          emit_insn (gen_movdi (gen_rtx (REG, DImode, 65), scratch));
-          emit_insn (gen_rtx_UNSPEC (VOIDmode, gen_rtvec (1, operands[0]), 2));
+          emit_insn (gen_hilo_delay (operands[0]));
        }
       DONE;
     }
@@ -5280,7 +5283,7 @@ move\\t%0,%z4\\n\\
       emit_insn (gen_movdi (operands[0], gen_rtx_REG (DImode, 64)));
       emit_insn (gen_ashldi3 (operands[0], operands[0], GEN_INT (32)));
       emit_insn (gen_iordi3 (operands[0], operands[0], scratch));
-      emit_insn (gen_rtx_UNSPEC (VOIDmode, gen_rtvec (1, operands[1]), 2));
+      emit_insn (gen_hilo_delay (operands[1]));
       DONE;
     }
   /* This handles moves between a float register and HI/LO.  */
@@ -5310,7 +5313,7 @@ move\\t%0,%z4\\n\\
       emit_insn (gen_ashldi3 (scratch, operands[1], GEN_INT (32)));
       emit_insn (gen_ashrdi3 (scratch, scratch, GEN_INT (32)));
       emit_insn (gen_movdi (gen_rtx (REG, DImode, 65), scratch));
-      emit_insn (gen_rtx_UNSPEC (VOIDmode, gen_rtvec (1, operands[0]), 2));
+      emit_insn (gen_hilo_delay (operands[0]));
       DONE;
     }
   if (GET_CODE (operands[1]) == REG && REGNO (operands[1]) == HILO_REGNUM)
@@ -5339,7 +5342,7 @@ move\\t%0,%z4\\n\\
          emit_move_insn (hi_word, scratch);
          emit_move_insn (scratch, gen_rtx_REG (SImode, 65));
          emit_move_insn (lo_word, scratch);
-         emit_insn (gen_rtx_UNSPEC (VOIDmode, gen_rtvec (1, operands[1]), 2));
+         emit_insn (gen_hilo_delay (operands[1]));
        }
       else if (TARGET_MIPS16 && ! M16_REG_P (REGNO (operands[0])))
        {
@@ -5354,7 +5357,7 @@ move\\t%0,%z4\\n\\
          emit_insn (gen_ashldi3 (scratch2, scratch2, GEN_INT (32)));
          emit_insn (gen_iordi3 (scratch, scratch, scratch2));
          emit_insn (gen_movdi (operands[0], scratch));
-         emit_insn (gen_rtx_UNSPEC (VOIDmode, gen_rtvec (1, operands[1]), 2));
+         emit_insn (gen_hilo_delay (operands[1]));
        }
       else
        {
@@ -5364,7 +5367,7 @@ move\\t%0,%z4\\n\\
          emit_insn (gen_movdi (operands[0], gen_rtx (REG, DImode, 64)));
          emit_insn (gen_ashldi3 (operands[0], operands[0], GEN_INT (32)));
          emit_insn (gen_iordi3 (operands[0], operands[0], scratch));
-         emit_insn (gen_rtx_UNSPEC (VOIDmode, gen_rtvec (1, operands[1]), 2));
+         emit_insn (gen_hilo_delay (operands[1]));
        }
       DONE;
     }
@@ -5693,7 +5696,7 @@ move\\t%0,%z4\\n\\
       emit_insn (gen_movsi (gen_rtx_REG (SImode, 65), operands[1]));
       emit_insn (gen_ashrsi3 (operands[2], operands[1], GEN_INT (31)));
       emit_insn (gen_movsi (gen_rtx (REG, SImode, 64), operands[2]));
-      emit_insn (gen_rtx_UNSPEC (VOIDmode, gen_rtvec (1, operands[0]), 2));
+      emit_insn (gen_hilo_delay (operands[0]));
       DONE;
     }
   /* Use a mult to reload LO on mips16.  ??? This is hideous.  */
@@ -5820,8 +5823,8 @@ move\\t%0,%z4\\n\\
 
 ;; This insn is for the unspec delay for HILO.
 
-(define_insn "*HILO_delay"
-  [(unspec [(match_operand 0 "register_operand" "=b")] )]
+(define_insn "hilo_delay"
+  [(unspec [(match_operand 0 "register_operand" "=b")] UNSPEC_HILO_DELAY)]
   ""
   ""
   [(set_attr "type" "nop")
@@ -6386,7 +6389,8 @@ move\\t%0,%z4\\n\\
 (define_insn "loadgp"
   [(set (reg:DI 28)
        (unspec_volatile:DI [(match_operand:DI 0 "address_operand" "")
-                            (match_operand:DI 1 "register_operand" "")] 2))
+                            (match_operand:DI 1 "register_operand" "")]
+                           UNSPEC_LOADGP))
    (clobber (reg:DI 1))]
   ""
   "%[lui\\t$1,%%hi(%%neg(%%gp_rel(%a0)))\\n\\taddiu\\t$1,$1,%%lo(%%neg(%%gp_rel(%a0)))\\n\\tdaddu\\t$gp,$1,%1%]"
@@ -9563,7 +9567,7 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2"
 ;; this is easy.
 
 (define_expand "builtin_setjmp_setup"
-  [(unspec [(match_operand 0 "register_operand" "r")] 20)]
+  [(unspec [(match_operand 0 "register_operand" "r")] UNSPEC_SETJMP)]
   "TARGET_ABICALLS"
   "
 {
@@ -9592,7 +9596,7 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2"
 ;; target address in t9 so that we can use it for loading $gp.
 
 (define_expand "builtin_longjmp"
-  [(unspec_volatile [(match_operand 0 "register_operand" "r")] 3)]
+  [(unspec_volatile [(match_operand 0 "register_operand" "r")] UNSPEC_LONGJMP)]
   "TARGET_ABICALLS"
   "
 {
@@ -9642,7 +9646,7 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2"
 ;; saved or used to pass arguments.
 
 (define_insn "blockage"
-  [(unspec_volatile [(const_int 0)] 0)]
+  [(unspec_volatile [(const_int 0)] UNSPEC_BLOCKAGE)]
   ""
   ""
   [(set_attr "type"    "unknown")
@@ -9688,7 +9692,7 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2"
 
 (define_insn "get_fnaddr"
   [(set (match_operand 0 "register_operand" "=d")
-       (unspec [(match_operand 1 "" "")] 1))
+       (unspec [(match_operand 1 "" "")] UNSPEC_GET_FNADDR))
    (clobber (reg:SI 31))]
   "TARGET_EMBEDDED_PIC
    && GET_CODE (operands[1]) == SYMBOL_REF"
@@ -9721,19 +9725,19 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2"
 ;; until we know where it will be put in the stack frame.
 
 (define_insn "eh_set_lr_si"
-  [(unspec [(match_operand:SI 0 "register_operand" "r")] 3)
+  [(unspec [(match_operand:SI 0 "register_operand" "r")] UNSPEC_EH_RETURN)
    (clobber (match_scratch:SI 1 "=&r"))]
   "! TARGET_64BIT"
   "#")
 
 (define_insn "eh_set_lr_di"
-  [(unspec [(match_operand:DI 0 "register_operand" "r")] 3)
+  [(unspec [(match_operand:DI 0 "register_operand" "r")] UNSPEC_EH_RETURN)
    (clobber (match_scratch:DI 1 "=&r"))]
   "TARGET_64BIT"
   "#")
 
 (define_split
-  [(unspec [(match_operand 0 "register_operand" "")] 3)
+  [(unspec [(match_operand 0 "register_operand" "")] UNSPEC_EH_RETURN)
    (clobber (match_scratch 1 ""))]
   "reload_completed && !TARGET_DEBUG_D_MODE"
   [(const_int 0)]
@@ -9766,7 +9770,7 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2"
 }")
 
 (define_insn "exception_receiver"
-  [(unspec_volatile [(const_int 0)] 4)]
+  [(unspec_volatile [(const_int 0)] UNSPEC_EH_RECEIVER)]
   "TARGET_ABICALLS && (mips_abi == ABI_32 || mips_abi == ABI_O64)"
   "*
 {
@@ -10567,7 +10571,8 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2"
 ;;
 
 (define_insn "consttable_qi"
-  [(unspec_volatile [(match_operand:QI 0 "consttable_operand" "=g")] 10)]
+  [(unspec_volatile [(match_operand:QI 0 "consttable_operand" "=g")]
+                   UNSPEC_CONSTTABLE_QI)]
   "TARGET_MIPS16"
   "*
 {
@@ -10579,7 +10584,8 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2"
    (set_attr "length"  "8")])
 
 (define_insn "consttable_hi"
-  [(unspec_volatile [(match_operand:HI 0 "consttable_operand" "=g")] 11)]
+  [(unspec_volatile [(match_operand:HI 0 "consttable_operand" "=g")]
+                   UNSPEC_CONSTTABLE_HI)]
   "TARGET_MIPS16"
   "*
 {
@@ -10591,7 +10597,8 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2"
    (set_attr "length"  "8")])
 
 (define_insn "consttable_si"
-  [(unspec_volatile [(match_operand:SI 0 "consttable_operand" "=g")] 12)]
+  [(unspec_volatile [(match_operand:SI 0 "consttable_operand" "=g")]
+                   UNSPEC_CONSTTABLE_SI)]
   "TARGET_MIPS16"
   "*
 {
@@ -10603,7 +10610,8 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2"
    (set_attr "length"  "8")])
 
 (define_insn "consttable_di"
-  [(unspec_volatile [(match_operand:DI 0 "consttable_operand" "=g")] 13)]
+  [(unspec_volatile [(match_operand:DI 0 "consttable_operand" "=g")]
+                   UNSPEC_CONSTTABLE_DI)]
   "TARGET_MIPS16"
   "*
 {
@@ -10615,7 +10623,8 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2"
    (set_attr "length"  "16")])
 
 (define_insn "consttable_sf"
-  [(unspec_volatile [(match_operand:SF 0 "consttable_operand" "=g")] 14)]
+  [(unspec_volatile [(match_operand:SF 0 "consttable_operand" "=g")]
+                   UNSPEC_CONSTTABLE_SF)]
   "TARGET_MIPS16"
   "*
 {
@@ -10632,7 +10641,8 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2"
    (set_attr "length"  "8")])
 
 (define_insn "consttable_df"
-  [(unspec_volatile [(match_operand:DF 0 "consttable_operand" "=g")] 15)]
+  [(unspec_volatile [(match_operand:DF 0 "consttable_operand" "=g")]
+                   UNSPEC_CONSTTABLE_DF)]
   "TARGET_MIPS16"
   "*
 {
@@ -10649,7 +10659,7 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2"
    (set_attr "length"  "16")])
 
 (define_insn "align_2"
-  [(unspec_volatile [(const_int 0)] 16)]
+  [(unspec_volatile [(const_int 0)] UNSPEC_ALIGN_2)]
   "TARGET_MIPS16"
   ".align 1"
   [(set_attr "type"    "unknown")
@@ -10657,7 +10667,7 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2"
    (set_attr "length"  "8")])
 
 (define_insn "align_4"
-  [(unspec_volatile [(const_int 0)] 17)]
+  [(unspec_volatile [(const_int 0)] UNSPEC_ALIGN_4)]
   "TARGET_MIPS16"
   ".align 2"
   [(set_attr "type"    "unknown")
@@ -10665,7 +10675,7 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\\n\\t%*j\\t%2"
    (set_attr "length"  "8")])
 
 (define_insn "align_8"
-  [(unspec_volatile [(const_int 0)] 18)]
+  [(unspec_volatile [(const_int 0)] UNSPEC_ALIGN_8)]
   "TARGET_MIPS16"
   ".align 3"
   [(set_attr "type"    "unknown")