1169689Skan;; Generic DFA-based pipeline description for MIPS targets
2169689Skan;;   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
3169689Skan;;
4169689Skan;; This file is part of GCC.
5169689Skan
6169689Skan;; GCC is free software; you can redistribute it and/or modify it
7169689Skan;; under the terms of the GNU General Public License as published
8169689Skan;; by the Free Software Foundation; either version 2, or (at your
9169689Skan;; option) any later version.
10169689Skan
11169689Skan;; GCC is distributed in the hope that it will be useful, but WITHOUT
12169689Skan;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13169689Skan;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
14169689Skan;; License for more details.
15169689Skan
16169689Skan;; You should have received a copy of the GNU General Public License
17169689Skan;; along with GCC; see the file COPYING.  If not, write to the
18169689Skan;; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
19169689Skan;; MA 02110-1301, USA.
20169689Skan
21169689Skan
22169689Skan;; This file is derived from the old define_function_unit description.
23169689Skan;; Each reservation can be overridden on a processor-by-processor basis.
24169689Skan
25169689Skan(define_insn_reservation "generic_alu" 1
26169689Skan  (eq_attr "type" "unknown,prefetch,prefetchx,condmove,const,arith,
27169689Skan		   shift,slt,clz,trap,multi,nop")
28169689Skan  "alu")
29169689Skan
30169689Skan(define_insn_reservation "generic_load" 3
31169689Skan  (eq_attr "type" "load,fpload,fpidxload")
32169689Skan  "alu")
33169689Skan
34169689Skan(define_insn_reservation "generic_store" 1
35169689Skan  (eq_attr "type" "store,fpstore,fpidxstore")
36169689Skan  "alu")
37169689Skan
38169689Skan(define_insn_reservation "generic_xfer" 2
39169689Skan  (eq_attr "type" "xfer")
40169689Skan  "alu")
41169689Skan
42169689Skan(define_insn_reservation "generic_branch" 1
43169689Skan  (eq_attr "type" "branch,jump,call")
44169689Skan  "alu")
45169689Skan
46169689Skan(define_insn_reservation "generic_hilo" 1
47169689Skan  (eq_attr "type" "mfhilo,mthilo")
48169689Skan  "imuldiv*3")
49169689Skan
50169689Skan(define_insn_reservation "generic_imul" 17
51169689Skan  (eq_attr "type" "imul,imul3,imadd")
52169689Skan  "imuldiv*17")
53169689Skan
54169689Skan(define_insn_reservation "generic_idiv" 38
55169689Skan  (eq_attr "type" "idiv")
56169689Skan  "imuldiv*38")
57169689Skan
58169689Skan(define_insn_reservation "generic_fcvt" 1
59169689Skan  (eq_attr "type" "fcvt")
60169689Skan  "alu")
61169689Skan
62169689Skan(define_insn_reservation "generic_fmove" 2
63169689Skan  (eq_attr "type" "fabs,fneg,fmove")
64169689Skan  "alu")
65169689Skan
66169689Skan(define_insn_reservation "generic_fcmp" 3
67169689Skan  (eq_attr "type" "fcmp")
68169689Skan  "alu")
69169689Skan
70169689Skan(define_insn_reservation "generic_fadd" 4
71169689Skan  (eq_attr "type" "fadd")
72169689Skan  "alu")
73169689Skan
74169689Skan(define_insn_reservation "generic_fmul_single" 7
75169689Skan  (and (eq_attr "type" "fmul,fmadd")
76169689Skan       (eq_attr "mode" "SF"))
77169689Skan  "alu")
78169689Skan
79169689Skan(define_insn_reservation "generic_fmul_double" 8
80169689Skan  (and (eq_attr "type" "fmul,fmadd")
81169689Skan       (eq_attr "mode" "DF"))
82169689Skan  "alu")
83169689Skan
84169689Skan(define_insn_reservation "generic_fdiv_single" 23
85169689Skan  (and (eq_attr "type" "fdiv,frdiv")
86169689Skan       (eq_attr "mode" "SF"))
87169689Skan  "alu")
88169689Skan
89169689Skan(define_insn_reservation "generic_fdiv_double" 36
90169689Skan  (and (eq_attr "type" "fdiv,frdiv")
91169689Skan       (eq_attr "mode" "DF"))
92169689Skan  "alu")
93169689Skan
94169689Skan(define_insn_reservation "generic_fsqrt_single" 54
95169689Skan  (and (eq_attr "type" "fsqrt,frsqrt")
96169689Skan       (eq_attr "mode" "SF"))
97169689Skan  "alu")
98169689Skan
99169689Skan(define_insn_reservation "generic_fsqrt_double" 112
100169689Skan  (and (eq_attr "type" "fsqrt,frsqrt")
101169689Skan       (eq_attr "mode" "DF"))
102169689Skan  "alu")
103169689Skan
104169689Skan(define_insn_reservation "generic_frecip_fsqrt_step" 5
105169689Skan  (eq_attr "type" "frdiv1,frdiv2,frsqrt1,frsqrt2")
106169689Skan  "alu")
107