diff options
Diffstat (limited to 'contrib/gcc/config/s390/2064.md')
-rw-r--r-- | contrib/gcc/config/s390/2064.md | 55 |
1 files changed, 30 insertions, 25 deletions
diff --git a/contrib/gcc/config/s390/2064.md b/contrib/gcc/config/s390/2064.md index 143cd1b9ca2a2..2f958a5253fc5 100644 --- a/contrib/gcc/config/s390/2064.md +++ b/contrib/gcc/config/s390/2064.md @@ -1,5 +1,5 @@ ;; Scheduling description for z900 (cpu 2064). -;; Copyright (C) 2003 Free Software Foundation, Inc. +;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. ;; Contributed by Hartmut Penner (hpenner@de.ibm.com) and ;; Ulrich Weigand (uweigand@de.ibm.com). @@ -17,8 +17,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GCC; see the file COPYING. If not, write to the Free -;; Software Foundation, 59 Temple Place - Suite 330, Boston, MA -;; 02111-1307, USA. +;; Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +;; 02110-1301, USA. ;; ;; References: @@ -40,62 +40,67 @@ ;; | ;; wr +;; This scheduler description is also used for the g5 and g6. + (define_automaton "z_ipu") (define_cpu_unit "z_e1" "z_ipu") (define_cpu_unit "z_wr" "z_ipu") (define_insn_reservation "z_la" 1 - (and (eq_attr "cpu" "z900") + (and (eq_attr "cpu" "z900,g5,g6") (eq_attr "type" "la")) "z_e1,z_wr") (define_insn_reservation "z_larl" 1 - (and (eq_attr "cpu" "z900") + (and (eq_attr "cpu" "z900,g5,g6") (eq_attr "type" "larl")) "z_e1,z_wr") (define_insn_reservation "z_load" 1 - (and (eq_attr "cpu" "z900") + (and (eq_attr "cpu" "z900,g5,g6") (eq_attr "type" "load")) "z_e1,z_wr") (define_insn_reservation "z_store" 1 - (and (eq_attr "cpu" "z900") + (and (eq_attr "cpu" "z900,g5,g6") (eq_attr "type" "store")) "z_e1,z_wr") +(define_insn_reservation "z_sem" 2 + (and (eq_attr "cpu" "z900,g5,g6") + (eq_attr "type" "sem")) + "z_e1*2,z_wr") + (define_insn_reservation "z_call" 5 - (and (eq_attr "cpu" "z900") + (and (eq_attr "cpu" "z900,g5,g6") (eq_attr "type" "jsr")) "z_e1*5,z_wr") -(define_insn_reservation "z_o2" 2 - (and (eq_attr "cpu" "z900") - (eq_attr "type" "o2")) - "z_e1*2,z_wr") +(define_insn_reservation "z_mul" 5 + (and (eq_attr "cpu" "g5,g6,z900") + (eq_attr "type" "imulsi,imulhi")) + "z_e1*5,z_wr") -(define_insn_reservation "z_o3" 3 - (and (eq_attr "cpu" "z900") - (eq_attr "type" "o3")) - "z_e1*3,z_wr") +(define_insn_reservation "z_inf" 10 + (and (eq_attr "cpu" "g5,g6,z900") + (eq_attr "type" "idiv,imuldi")) + "z_e1*10,z_wr") -; -; Insn still not mentioned are check for -; the usage of the agen unit -; +;; For everything else we check the atype flag. (define_insn_reservation "z_int" 1 - (and (eq_attr "cpu" "z900") - (eq_attr "atype" "reg")) + (and (eq_attr "cpu" "z900,g5,g6") + (and (not (eq_attr "type" "la,larl,load,store,jsr")) + (eq_attr "atype" "reg"))) "z_e1,z_wr") (define_insn_reservation "z_agen" 1 - (and (eq_attr "cpu" "z900") - (eq_attr "atype" "agen")) + (and (eq_attr "cpu" "z900,g5,g6") + (and (not (eq_attr "type" "la,larl,load,store,jsr")) + (eq_attr "atype" "agen"))) "z_e1,z_wr") - ;; ;; s390_agen_dep_p returns 1, if a register is set in the ;; first insn and used in the dependent insn to form a address. |