5000.md revision 169690
1227825Stheraven;; VR5000 pipeline description.
2227825Stheraven;;   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
3227825Stheraven;;
4227825Stheraven;; This file is part of GCC.
5227825Stheraven
6227825Stheraven;; GCC is free software; you can redistribute it and/or modify it
7227825Stheraven;; under the terms of the GNU General Public License as published
8227825Stheraven;; by the Free Software Foundation; either version 2, or (at your
9227825Stheraven;; option) any later version.
10227825Stheraven
11227825Stheraven;; GCC is distributed in the hope that it will be useful, but WITHOUT
12227825Stheraven;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13227825Stheraven;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
14227825Stheraven;; License for more details.
15227825Stheraven
16227825Stheraven;; You should have received a copy of the GNU General Public License
17227825Stheraven;; along with GCC; see the file COPYING.  If not, write to the
18227825Stheraven;; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
19227825Stheraven;; MA 02110-1301, USA.
20227825Stheraven
21227825Stheraven
22227825Stheraven;; This file overrides parts of generic.md.  It is derived from the
23227825Stheraven;; old define_function_unit description.
24227825Stheraven
25227825Stheraven(define_insn_reservation "r5k_load" 2
26227825Stheraven  (and (eq_attr "cpu" "r5000")
27227825Stheraven       (eq_attr "type" "load,fpload,fpidxload,xfer"))
28227825Stheraven  "alu")
29227825Stheraven
30227825Stheraven(define_insn_reservation "r5k_imul_si" 5
31227825Stheraven  (and (eq_attr "cpu" "r5000")
32227825Stheraven       (and (eq_attr "type" "imul,imul3,imadd")
33227825Stheraven	    (eq_attr "mode" "SI")))
34227825Stheraven  "imuldiv*5")
35227825Stheraven
36227825Stheraven(define_insn_reservation "r5k_imul_di" 9
37227825Stheraven  (and (eq_attr "cpu" "r5000")
38227825Stheraven       (and (eq_attr "type" "imul,imul3,imadd")
39227825Stheraven	    (eq_attr "mode" "DI")))
40227825Stheraven  "imuldiv*9")
41262801Sdim
42262801Sdim(define_insn_reservation "r5k_idiv_si" 36
43227825Stheraven  (and (eq_attr "cpu" "r5000")
44262801Sdim       (and (eq_attr "type" "idiv")
45227825Stheraven	    (eq_attr "mode" "SI")))
46227825Stheraven  "imuldiv*36")
47227825Stheraven
48227825Stheraven(define_insn_reservation "r5k_idiv_di" 68
49227825Stheraven  (and (eq_attr "cpu" "r5000")
50227825Stheraven       (and (eq_attr "type" "idiv")
51227825Stheraven	    (eq_attr "mode" "DI")))
52227825Stheraven  "imuldiv*68")
53262801Sdim
54227825Stheraven(define_insn_reservation "r5k_fmove" 1
55227825Stheraven  (and (eq_attr "cpu" "r5000")
56227825Stheraven       (eq_attr "type" "fcmp,fabs,fneg,fmove"))
57227825Stheraven  "alu")
58227825Stheraven
59227825Stheraven(define_insn_reservation "r5k_fmul_single" 4
60227825Stheraven  (and (eq_attr "cpu" "r5000")
61227825Stheraven       (and (eq_attr "type" "fmul,fmadd")
62227825Stheraven	    (eq_attr "mode" "SF")))
63227825Stheraven  "alu")
64227825Stheraven
65227825Stheraven(define_insn_reservation "r5k_fmul_double" 5
66227825Stheraven  (and (eq_attr "cpu" "r5000")
67227825Stheraven       (and (eq_attr "type" "fmul,fmadd")
68227825Stheraven	    (eq_attr "mode" "DF")))
69262801Sdim  "alu")
70262801Sdim
71262801Sdim(define_insn_reservation "r5k_fdiv_single" 21
72262801Sdim  (and (eq_attr "cpu" "r5000")
73227825Stheraven       (and (eq_attr "type" "fdiv,frdiv,fsqrt,frsqrt")
74227825Stheraven	    (eq_attr "mode" "SF")))
75227825Stheraven  "alu")
76227825Stheraven
77227825Stheraven(define_insn_reservation "r5k_fsqrt_double" 36
78227825Stheraven  (and (eq_attr "cpu" "r5000")
79227825Stheraven       (and (eq_attr "type" "fsqrt,frsqrt")
80227825Stheraven	    (eq_attr "mode" "DF")))
81227825Stheraven  "alu")
82227825Stheraven