rs6000.md (define_attr "type"): Add insert_word.
authorDavid Edelsohn <edelsohn@gnu.org>
Mon, 9 Jun 2003 17:16:15 +0000 (17:16 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Mon, 9 Jun 2003 17:16:15 +0000 (13:16 -0400)
        * config/rs6000/rs6000.md (define_attr "type"): Add insert_word.
        (insvsi*): Add insert_word attribute.
        * config/rs6000/rs6000.c (rs6000_variable_issue): Add TYPE_INSERT_WORD.
        * config/rs6000/{40x.md,603.md,6xx.md,7450.md,7xx.md,mpc.md,
        power4.md,rios1.md,rios2.md,rs64.md}: Add insert_word.

Co-Authored-By: Ayal Zaks <gcchaifa@us.ibm.com>
From-SVN: r67668

15 files changed:
gcc/ChangeLog
gcc/config/rs6000/40x.md
gcc/config/rs6000/440.md
gcc/config/rs6000/603.md
gcc/config/rs6000/6xx.md
gcc/config/rs6000/7450.md
gcc/config/rs6000/7xx.md
gcc/config/rs6000/8540.md
gcc/config/rs6000/mpc.md
gcc/config/rs6000/power4.md
gcc/config/rs6000/rios1.md
gcc/config/rs6000/rios2.md
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.md
gcc/config/rs6000/rs64.md

index 91346e014457c5ac718ae3f14e0bdb92e8d15d34..ac969be79840a71cbd0418053cba9c1b2c7aae2d 100644 (file)
@@ -1,3 +1,12 @@
+2003-06-09  David Edelsohn  <edelsohn@gnu.org>
+           Ayal Zaks  <gcchaifa@us.ibm.com>
+
+       * config/rs6000/rs6000.md (define_attr "type"): Add insert_word.
+       (insvsi*): Add insert_word attribute.
+       * config/rs6000/rs6000.c (rs6000_variable_issue): Add TYPE_INSERT_WORD.
+       * config/rs6000/{40x.md,603.md,6xx.md,7450.md,7xx.md,mpc.md,
+       power4.md,rios1.md,rios2.md,rs64.md}: Add insert_word.
+
 2003-06-09  Kazu Hirata  <kazu@cs.umass.edu>
 
        * fold-const.c (fold): Fix a comment typo.
index bc42e396d1f594ed09cb9b8a91925a8fd7c92cbf..9d229b4c8d7ef4199c20637d3cb53253ddcf4d94 100644 (file)
@@ -36,7 +36,7 @@
   "iu_40x")
 
 (define_insn_reservation "ppc403-integer" 1
-  (and (eq_attr "type" "integer")
+  (and (eq_attr "type" "integer,insert_word")
        (eq_attr "cpu" "ppc403,ppc405"))
   "iu_40x")
 
index 660fc196d7c214e9b097e5055598b5111249ab0e..e98d5be782d14b6f82476859c957a3e47fe30786 100644 (file)
@@ -54,7 +54,7 @@
   "ppc440_issue,ppc440_l_pipe")
 
 (define_insn_reservation "ppc440-integer" 1
-  (and (eq_attr "type" "integer")
+  (and (eq_attr "type" "integer,insert_word")
        (eq_attr "cpu" "ppc440"))
   "ppc440_issue,ppc440_i_pipe|ppc440_j_pipe")
 
index 5420cb9177405b42e870f8755bca16c9e03d1285..fe37fbedfdddc243e8df4faf5558afe62734ae86 100644 (file)
@@ -54,7 +54,7 @@
   "lsu_603")
 
 (define_insn_reservation "ppc603-integer" 1
-  (and (eq_attr "type" "integer")
+  (and (eq_attr "type" "integer,insert_word")
        (eq_attr "cpu" "ppc603"))
   "iu_603")
 
index a4ac520e37f05abf9085e3d9f36aba547a11cd3b..d28d3738bb795f99688b32d136b3d544bac7ec1b 100644 (file)
@@ -64,7 +64,7 @@
   "lsu_6xx")
 
 (define_insn_reservation "ppc604-integer" 1
-  (and (eq_attr "type" "integer")
+  (and (eq_attr "type" "integer,insert_word")
        (eq_attr "cpu" "ppc604,ppc604e,ppc620,ppc630"))
   "iu1_6xx|iu2_6xx")
 
index 7c136a5b8a8cc32430ff603345b58437f89ef02c..55bd4d8636863229a9d251d9f6603ec793bbd0c2 100644 (file)
@@ -64,7 +64,7 @@
   "ppc7450_du,lsu_7450*3")
 
 (define_insn_reservation "ppc7450-integer" 1
-  (and (eq_attr "type" "integer")
+  (and (eq_attr "type" "integer,insert_word")
        (eq_attr "cpu" "ppc7450"))
   "ppc7450_du,(iu1_7450|iu2_7450|iu3_7450)")
 
index e46366929d04ec3b302e6bfd83ef1399cbf0a1fe..eb84f29fbacf517a27b07d7d0fc8446f9678d3a5 100644 (file)
@@ -59,7 +59,7 @@
   "ppc750_du,lsu_7xx")
 
 (define_insn_reservation "ppc750-integer" 1
-  (and (eq_attr "type" "integer")
+  (and (eq_attr "type" "integer,insert_word")
        (eq_attr "cpu" "ppc750,ppc7400"))
   "ppc750_du,(iu1_7xx|iu2_7xx)")
 
index 3ed69d17e538aef766a10ba4c28a2511a17a1ff2..737c39958978cf7b01816f3e83c7e1530a94b52d 100644 (file)
@@ -85,7 +85,7 @@
 
 ;; Simple SU insns
 (define_insn_reservation "ppc8540_su" 1
-  (and (eq_attr "type" "integer,cmp,compare,delayed_compare,fast_compare")
+  (and (eq_attr "type" "integer,insert_word,cmp,compare,delayed_compare,fast_compare")
        (eq_attr "cpu" "ppc8540"))
   "ppc8540_decode,ppc8540_issue+ppc8540_su_stage0+ppc8540_retire")
 
index a97b2b8ac4abcd4f35ce597f948f1424c1a733bc..b95bba5c33a08962ad89083639fec834e0f66701 100644 (file)
@@ -42,7 +42,7 @@
   "lsu_mpc")
 
 (define_insn_reservation "mpccore-integer" 1
-  (and (eq_attr "type" "integer")
+  (and (eq_attr "type" "integer,insert_word")
        (eq_attr "cpu" "mpccore"))
   "iu_mpc")
 
index b6af77bc0dbd3b33c341caccba7e181687740313..e19df2ddade10f499829e247b7004f85ca7c1755 100644 (file)
        (eq_attr "cpu" "power4"))
   "iq_power4")
 
+(define_insn_reservation "power4-insert" 4
+  (and (eq_attr "type" "insert_word")
+       (eq_attr "cpu" "power4"))
+  "(du1_power4+du2_power4,iu1_power4,nothing,iu2_power4)\
+  |(du2_power4+du3_power4,iu2_power4,nothing,iu2_power4)\
+  |(du3_power4+du4_power4,iu2_power4,nothing,iu1_power4)")
+
 (define_insn_reservation "power4-cmp" 3
   (and (eq_attr "type" "cmp,fast_compare")
        (eq_attr "cpu" "power4"))
index 5d370b036ef50a571ea9bd684028fe3be58ca477..5e77a67fe2c95e09b1ef14fa6dca7b9e04b8c10b 100644 (file)
@@ -51,7 +51,7 @@
   "iu_rios1+fpu_rios1")
 
 (define_insn_reservation "rios1-integer" 1
-  (and (eq_attr "type" "integer")
+  (and (eq_attr "type" "integer,insert_word")
        (eq_attr "cpu" "rios1,ppc601"))
   "iu_rios1")
 
index 219127f641cbb3aa0cb4e432dc59dc67e6ad1f05..36690acf06e79c2e5e62db5083eefbf0e86710e7 100644 (file)
@@ -39,7 +39,7 @@
   "iu1_rios2|iu2_rios2")
 
 (define_insn_reservation "rios2-integer" 1
-  (and (eq_attr "type" "integer")
+  (and (eq_attr "type" "integer,insert_word")
        (eq_attr "cpu" "rios2"))
   "iu1_rios2|iu2_rios2")
 
index 68d0e964ace23a5a9d6a94b04e69848292fa395b..1fa2ede8851d8072877cb38a75bda2bf5e42bdc3 100644 (file)
@@ -13055,7 +13055,8 @@ rs6000_variable_issue (stream, verbose, insn, more)
               || type == TYPE_LOAD_EXT || type == TYPE_DELAYED_CR
               || type == TYPE_COMPARE || type == TYPE_DELAYED_COMPARE
               || type == TYPE_IMUL_COMPARE || type == TYPE_LMUL_COMPARE
-              || type == TYPE_IDIV || type == TYPE_LDIV)
+              || type == TYPE_IDIV || type == TYPE_LDIV
+              || type == TYPE_INSERT_WORD)
        return more > 2 ? more - 2 : 0;
     }
 
index fc4d2a7628572a789b61d330811424ea12670e8f..ef98de053320b1734be7e580c00a572813909cb7 100644 (file)
@@ -62,7 +62,7 @@
 \f
 ;; Define an insn type attribute.  This is used in function unit delay
 ;; computations.
-(define_attr "type" "integer,load,load_ext,load_ext_u,load_ext_ux,load_ux,load_u,store,store_ux,store_u,fpload,fpload_ux,fpload_u,fpstore,fpstore_ux,fpstore_u,vecload,vecstore,imul,imul2,imul3,lmul,idiv,ldiv,branch,cmp,fast_compare,compare,delayed_compare,imul_compare,lmul_compare,fpcompare,cr_logical,delayed_cr,mfcr,mtcr,mfjmpr,mtjmpr,fp,fpsimple,dmul,sdiv,ddiv,ssqrt,dsqrt,jmpreg,brinc,vecsimple,veccomplex,vecdiv,veccmp,veccmpsimple,vecperm,vecfloat,vecfdiv"
+(define_attr "type" "integer,load,load_ext,load_ext_u,load_ext_ux,load_ux,load_u,store,store_ux,store_u,fpload,fpload_ux,fpload_u,fpstore,fpstore_ux,fpstore_u,vecload,vecstore,imul,imul2,imul3,lmul,idiv,ldiv,insert_word,branch,cmp,fast_compare,compare,delayed_compare,imul_compare,lmul_compare,fpcompare,cr_logical,delayed_cr,mfcr,mtcr,mfjmpr,mtjmpr,fp,fpsimple,dmul,sdiv,ddiv,ssqrt,dsqrt,jmpreg,brinc,vecsimple,veccomplex,vecdiv,veccmp,veccmpsimple,vecperm,vecfloat,vecfdiv"
   (const_string "integer"))
 
 ;; Length (in bytes).
   operands[4] = GEN_INT (32 - start - size);
   operands[1] = GEN_INT (start + size - 1);
   return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\";
-}")
+}"
+  [(set_attr "type" "insert_word")])
 
 (define_insn "*insvsi_internal1"
   [(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r")
   operands[4] = GEN_INT (shift - start - size);
   operands[1] = GEN_INT (start + size - 1);
   return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\";
-}")
+}"
+  [(set_attr "type" "insert_word")])
 
 (define_insn "*insvsi_internal2"
   [(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r")
   operands[4] = GEN_INT (32 - shift - start - size);
   operands[1] = GEN_INT (start + size - 1);
   return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\";
-}")
+}"
+  [(set_attr "type" "insert_word")])
 
 (define_insn "*insvsi_internal3"
   [(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r")
   operands[4] = GEN_INT (32 - shift - start - size);
   operands[1] = GEN_INT (start + size - 1);
   return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\";
-}")
+}"
+  [(set_attr "type" "insert_word")])
 
 (define_insn "*insvsi_internal4"
   [(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r")
   operands[5] = GEN_INT (extract_start + extract_size - insert_start - insert_size);
   operands[1] = GEN_INT (insert_start + insert_size - 1);
   return \"{rlimi|rlwimi} %0,%3,%h5,%h2,%h1\";
-}")
+}"
+  [(set_attr "type" "insert_word")])
 
 (define_insn "insvdi"
   [(set (zero_extract:DI (match_operand:DI 0 "gpc_reg_operand" "+r")
index 3de2bddcee04c2319a9ae46edf81c8239cf77086..4d9987523f46d19a3dbf91c18933cb646d66d41c 100644 (file)
@@ -42,7 +42,7 @@
   "lsu_rs64")
 
 (define_insn_reservation "rs64a-integer" 1
-  (and (eq_attr "type" "integer")
+  (and (eq_attr "type" "integer,insert_word")
        (eq_attr "cpu" "rs64a"))
   "iu_rs64")