118334Speter;; R3000 and TX39 pipeline description.
252298Sobrien;;   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
318334Speter;;
418334Speter;; This file is part of GCC.
518334Speter
618334Speter;; GCC is free software; you can redistribute it and/or modify it
718334Speter;; under the terms of the GNU General Public License as published
818334Speter;; by the Free Software Foundation; either version 2, or (at your
918334Speter;; option) any later version.
1018334Speter
1118334Speter;; GCC is distributed in the hope that it will be useful, but WITHOUT
1218334Speter;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
1318334Speter;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
1418334Speter;; License for more details.
1518334Speter
1618334Speter;; You should have received a copy of the GNU General Public License
1718334Speter;; along with GCC; see the file COPYING.  If not, write to the
1818334Speter;; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
1918334Speter;; MA 02110-1301, USA.
2018334Speter
2152298Sobrien
2252298Sobrien;; This file overrides parts of generic.md.  It is derived from the
2318334Speter;; old define_function_unit description.
2418334Speter
2518334Speter(define_insn_reservation "r3k_load" 2
2618334Speter  (and (eq_attr "cpu" "r3000,r3900")
2718334Speter       (eq_attr "type" "load,fpload,fpidxload"))
2818334Speter  "alu")
2918334Speter
3018334Speter(define_insn_reservation "r3k_imul" 12
3150448Sobrien  (and (eq_attr "cpu" "r3000,r3900")
3250448Sobrien       (eq_attr "type" "imul,imul3,imadd"))
3350448Sobrien  "imuldiv*12")
3450448Sobrien
3518334Speter(define_insn_reservation "r3k_idiv" 35
3618334Speter  (and (eq_attr "cpu" "r3000,r3900")
3718334Speter       (eq_attr "type" "idiv"))
3818334Speter  "imuldiv*35")
3918334Speter
4050448Sobrien(define_insn_reservation "r3k_fmove" 1
4118334Speter  (and (eq_attr "cpu" "r3000,r3900")
4218334Speter       (eq_attr "type" "fabs,fneg,fmove"))
4318334Speter  "alu")
4452298Sobrien
4552298Sobrien(define_insn_reservation "r3k_fadd" 2
4618334Speter  (and (eq_attr "cpu" "r3000,r3900")
4752298Sobrien       (eq_attr "type" "fcmp,fadd"))
4852298Sobrien  "alu")
4952298Sobrien
5052298Sobrien(define_insn_reservation "r3k_fmul_single" 4
5152298Sobrien  (and (eq_attr "cpu" "r3000,r3900")
5250448Sobrien       (and (eq_attr "type" "fmul,fmadd")
5350448Sobrien	    (eq_attr "mode" "SF")))
5450448Sobrien  "alu")
5550448Sobrien
5618334Speter(define_insn_reservation "r3k_fmul_double" 5
5718334Speter  (and (eq_attr "cpu" "r3000,r3900")
5818334Speter       (and (eq_attr "type" "fmul,fmadd")
5918334Speter	    (eq_attr "mode" "DF")))
6018334Speter  "alu")
6118334Speter
6218334Speter(define_insn_reservation "r3k_fdiv_single" 12
6318334Speter  (and (eq_attr "cpu" "r3000,r3900")
6452298Sobrien       (and (eq_attr "type" "fdiv,frdiv")
6552298Sobrien	    (eq_attr "mode" "SF")))
6650448Sobrien  "alu")
6750448Sobrien
6850448Sobrien(define_insn_reservation "r3k_fdiv_double" 19
6918334Speter  (and (eq_attr "cpu" "r3000,r3900")
7050448Sobrien       (and (eq_attr "type" "fdiv,frdiv")
7118334Speter	    (eq_attr "mode" "DF")))
7250448Sobrien  "alu")
7352298Sobrien