OSDN Git Service

* configure.ac (mips*-*-*linux*, mips*-*-gnu*): Use mt-mips-gnu.
[pf3gnuchains/gcc-fork.git] / gcc / config / mips / 5400.md
1 ;; DFA-based pipeline description for 5400
2 (define_automaton "vr54")
3 (define_cpu_unit "vr54_dp0"     "vr54")
4 (define_cpu_unit "vr54_dp1"     "vr54")
5 (define_cpu_unit "vr54_mem"     "vr54")
6 (define_cpu_unit "vr54_mac"     "vr54")
7
8 ;;
9 ;; The ordering of the instruction-execution-path/resource-usage
10 ;; descriptions (also known as reservation RTL) is roughly ordered
11 ;; based on the define attribute RTL for the "type" classification.
12 ;; When modifying, remember that the first test that matches is the
13 ;; reservation used!
14 ;;
15
16 (define_insn_reservation "ir_vr54_unknown" 1
17   (and (eq_attr "cpu" "r5400")
18        (eq_attr "type" "unknown"))
19   "vr54_dp0+vr54_dp1+vr54_mem+vr54_mac")
20
21 ;; Assume prediction fails.
22 (define_insn_reservation "ir_vr54_branch" 3
23   (and (eq_attr "cpu" "r5400")
24        (eq_attr "type" "branch,jump,call"))
25   "vr54_dp0|vr54_dp1")
26
27 (define_insn_reservation "ir_vr54_load" 2
28   (and (eq_attr "cpu" "r5400")
29        (eq_attr "type" "load,fpload,fpidxload"))
30   "vr54_mem")
31
32 (define_insn_reservation "ir_vr54_store" 1
33   (and (eq_attr "cpu" "r5400")
34        (eq_attr "type" "store"))
35   "vr54_mem")
36
37 (define_insn_reservation "ir_vr54_fstore" 1
38   (and (eq_attr "cpu" "r5400")
39        (eq_attr "type" "fpstore,fpidxstore"))
40   "vr54_mem")
41
42
43 ;; This reservation is for conditional move based on integer
44 ;; or floating point CC.
45 (define_insn_reservation "ir_vr54_condmove" 4
46   (and (eq_attr "cpu" "r5400")
47        (eq_attr "type" "condmove"))
48   "vr54_dp0|vr54_dp1")
49
50 ;; Move to/from FPU registers
51 (define_insn_reservation "ir_vr54_xfer" 2
52   (and (eq_attr "cpu" "r5400")
53        (eq_attr "type" "mfc,mtc"))
54   "vr54_dp0|vr54_dp1")
55
56 (define_insn_reservation "ir_vr54_hilo" 1
57   (and (eq_attr "cpu" "r5400")
58        (eq_attr "type" "mthilo,mfhilo"))
59   "vr54_dp0|vr54_dp1")
60
61 (define_insn_reservation "ir_vr54_arith" 1
62   (and (eq_attr "cpu" "r5400")
63        (eq_attr "type" "arith,shift,signext,slt,clz,const,logical,move,nop,trap"))
64   "vr54_dp0|vr54_dp1")
65
66 (define_insn_reservation "ir_vr54_imul_si" 3
67   (and (eq_attr "cpu" "r5400")
68        (and (eq_attr "type" "imul,imul3")
69             (eq_attr "mode" "SI")))
70   "vr54_dp0|vr54_dp1")
71
72 (define_insn_reservation "ir_vr54_imul_di" 4
73   (and (eq_attr "cpu" "r5400")
74        (and (eq_attr "type" "imul,imul3")
75             (eq_attr "mode" "DI")))
76   "vr54_dp0|vr54_dp1")
77
78 (define_insn_reservation "ir_vr54_imadd_si" 3
79   (and (eq_attr "cpu" "r5400")
80        (eq_attr "type" "imul,imul3"))
81   "vr54_mac")
82
83 (define_insn_reservation "ir_vr54_idiv_si" 42
84   (and (eq_attr "cpu" "r5400")
85        (and (eq_attr "type" "idiv")
86             (eq_attr "mode" "SI")))
87   "vr54_dp0|vr54_dp1")
88
89 (define_insn_reservation "ir_vr54_idiv_di" 74
90   (and (eq_attr "cpu" "r5400")
91        (and (eq_attr "type" "idiv")
92             (eq_attr "mode" "DI")))
93   "vr54_dp0|vr54_dp1")
94
95 (define_insn_reservation "ir_vr54_fadd" 4
96   (and (eq_attr "cpu" "r5400")
97        (eq_attr "type" "fadd"))
98   "vr54_dp0|vr54_dp1")
99
100 (define_insn_reservation "ir_vr54_fmul_sf" 5
101   (and (eq_attr "cpu" "r5400")
102        (and (eq_attr "type" "fmul")
103             (eq_attr "mode" "SF")))
104   "vr54_dp0|vr54_dp1")
105
106 (define_insn_reservation "ir_vr54_fmul_df" 6
107   (and (eq_attr "cpu" "r5400")
108        (and (eq_attr "type" "fmul")
109             (eq_attr "mode" "DF")))
110   "vr54_dp0|vr54_dp1")
111
112 (define_insn_reservation "ir_vr54_fmadd_sf" 9
113   (and (eq_attr "cpu" "r5400")
114        (and (eq_attr "type" "fmadd")
115             (eq_attr "mode" "SF")))
116   "vr54_dp0|vr54_dp1")
117
118 (define_insn_reservation "ir_vr54_fmadd_df" 10
119   (and (eq_attr "cpu" "r5400")
120        (and (eq_attr "type" "fmadd")
121             (eq_attr "mode" "DF")))
122   "vr54_dp0|vr54_dp1")
123
124 (define_insn_reservation "ir_vr54_fdiv_sf" 42
125   (and (eq_attr "cpu" "r5400")
126        (and (eq_attr "type" "fdiv,frdiv,fsqrt")
127             (eq_attr "mode" "SF")))
128   "vr54_dp0|vr54_dp1")
129
130 (define_insn_reservation "ir_vr54_fdiv_df" 72
131   (and (eq_attr "cpu" "r5400")
132        (and (eq_attr "type" "fdiv,frdiv,fsqrt")
133             (eq_attr "mode" "DF")))
134   "vr54_dp0|vr54_dp1")
135
136 (define_insn_reservation "ir_vr54_fabs" 2
137   (and (eq_attr "cpu" "r5400")
138        (eq_attr "type" "fabs,fneg,fmove"))
139   "vr54_dp0|vr54_dp1")
140
141 (define_insn_reservation "ir_vr54_fcmp" 2
142   (and (eq_attr "cpu" "r5400")
143        (eq_attr "type" "fcmp"))
144   "vr54_dp0|vr54_dp1")
145
146 (define_insn_reservation "ir_vr54_fcvt" 6
147   (and (eq_attr "cpu" "r5400")
148        (eq_attr "type" "fcvt"))
149   "vr54_dp0|vr54_dp1")
150
151 (define_insn_reservation "ir_vr54_frsqrt_sf" 61
152   (and (eq_attr "cpu" "r5400")
153        (and (eq_attr "type" "frsqrt")
154             (eq_attr "mode" "SF")))
155   "vr54_dp0|vr54_dp1")
156
157 (define_insn_reservation "ir_vr54_frsqrt_df" 121
158   (and (eq_attr "cpu" "r5400")
159        (and (eq_attr "type" "frsqrt")
160             (eq_attr "mode" "DF")))
161   "vr54_dp0|vr54_dp1")
162
163 (define_insn_reservation "ir_vr54_multi" 1
164   (and (eq_attr "cpu" "r5400")
165        (eq_attr "type" "multi"))
166   "vr54_dp0+vr54_dp1+vr54_mem+vr54_mac")