OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [binutils-2.18.50/] [include/] [opcode/] [score-datadep.h] - Blame information for rev 38

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 38 julius
/* score-datadep.h -- Score Instructions data dependency table
2
   Copyright 2006 Free Software Foundation, Inc.
3
   Contributed by:
4
   Mei Ligang (ligang@sunnorth.com.cn)
5
   Pei-Lin Tsai (pltsai@sunplus.com)
6
 
7
   This file is part of GAS, the GNU Assembler.
8
 
9
   GAS is free software; you can redistribute it and/or modify
10
   it under the terms of the GNU General Public License as published by
11
   the Free Software Foundation; either version 2, or (at your option)
12
   any later version.
13
 
14
   GAS is distributed in the hope that it will be useful,
15
   but WITHOUT ANY WARRANTY; without even the implied warranty of
16
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
   GNU General Public License for more details.
18
 
19
   You should have received a copy of the GNU General Public License
20
   along with GAS; see the file COPYING.  If not, write to the Free
21
   Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
22
   Boston, MA 02110-1301, USA.  */
23
 
24
#ifndef SCORE_DATA_DEPENDENCY_H
25
#define SCORE_DATA_DEPENDENCY_H
26
 
27
#define INSN_NAME_LEN 16
28
 
29
enum insn_type_for_dependency
30
{
31
  D_pce,
32
  D_cond_br,
33
  D_cond_mv,
34
  D_cached,
35
  D_cachei,
36
  D_ldst,
37
  D_ldcombine,
38
  D_mtcr,
39
  D_mfcr,
40
  D_mfsr,
41
  D_mftlb,
42
  D_mtptlb,
43
  D_mtrtlb,
44
  D_stlb,
45
  D_all_insn
46
};
47
 
48
struct insn_to_dependency
49
{
50
  char *insn_name;
51
  enum insn_type_for_dependency type;
52
};
53
 
54
struct data_dependency
55
{
56
  enum insn_type_for_dependency pre_insn_type;
57
  char pre_reg[6];
58
  enum insn_type_for_dependency cur_insn_type;
59
  char cur_reg[6];
60
  int bubblenum_7;
61
  int bubblenum_5;
62
  int warn_or_error;           /* warning - 0; error - 1  */
63
};
64
 
65
static const struct insn_to_dependency insn_to_dependency_table[] =
66
{
67
  /* pce instruction.  */
68
  {"pce",       D_pce},
69
  /* conditional branch instruction.  */
70
  {"bcs",       D_cond_br},
71
  {"bcc",       D_cond_br},
72
  {"bgtu",      D_cond_br},
73
  {"bleu",      D_cond_br},
74
  {"beq",       D_cond_br},
75
  {"bne",       D_cond_br},
76
  {"bgt",       D_cond_br},
77
  {"ble",       D_cond_br},
78
  {"bge",       D_cond_br},
79
  {"blt",       D_cond_br},
80
  {"bmi",       D_cond_br},
81
  {"bpl",       D_cond_br},
82
  {"bvs",       D_cond_br},
83
  {"bvc",       D_cond_br},
84
  {"bcsl",      D_cond_br},
85
  {"bccl",      D_cond_br},
86
  {"bgtul",     D_cond_br},
87
  {"bleul",     D_cond_br},
88
  {"beql",      D_cond_br},
89
  {"bnel",      D_cond_br},
90
  {"bgtl",      D_cond_br},
91
  {"blel",      D_cond_br},
92
  {"bgel",      D_cond_br},
93
  {"bltl",      D_cond_br},
94
  {"bmil",      D_cond_br},
95
  {"bpll",      D_cond_br},
96
  {"bvsl",      D_cond_br},
97
  {"bvcl",      D_cond_br},
98
  {"bcs!",      D_cond_br},
99
  {"bcc!",      D_cond_br},
100
  {"bgtu!",     D_cond_br},
101
  {"bleu!",     D_cond_br},
102
  {"beq!",      D_cond_br},
103
  {"bne!",      D_cond_br},
104
  {"bgt!",      D_cond_br},
105
  {"ble!",      D_cond_br},
106
  {"bge!",      D_cond_br},
107
  {"blt!",      D_cond_br},
108
  {"bmi!",      D_cond_br},
109
  {"bpl!",      D_cond_br},
110
  {"bvs!",      D_cond_br},
111
  {"bvc!",      D_cond_br},
112
  {"brcs",      D_cond_br},
113
  {"brcc",      D_cond_br},
114
  {"brgtu",     D_cond_br},
115
  {"brleu",     D_cond_br},
116
  {"breq",      D_cond_br},
117
  {"brne",      D_cond_br},
118
  {"brgt",      D_cond_br},
119
  {"brle",      D_cond_br},
120
  {"brge",      D_cond_br},
121
  {"brlt",      D_cond_br},
122
  {"brmi",      D_cond_br},
123
  {"brpl",      D_cond_br},
124
  {"brvs",      D_cond_br},
125
  {"brvc",      D_cond_br},
126
  {"brcsl",     D_cond_br},
127
  {"brccl",     D_cond_br},
128
  {"brgtul",    D_cond_br},
129
  {"brleul",    D_cond_br},
130
  {"breql",     D_cond_br},
131
  {"brnel",     D_cond_br},
132
  {"brgtl",     D_cond_br},
133
  {"brlel",     D_cond_br},
134
  {"brgel",     D_cond_br},
135
  {"brltl",     D_cond_br},
136
  {"brmil",     D_cond_br},
137
  {"brpll",     D_cond_br},
138
  {"brvsl",     D_cond_br},
139
  {"brvcl",     D_cond_br},
140
  {"brcs!",     D_cond_br},
141
  {"brcc!",     D_cond_br},
142
  {"brgtu!",    D_cond_br},
143
  {"brleu!",    D_cond_br},
144
  {"breq!",     D_cond_br},
145
  {"brne!",     D_cond_br},
146
  {"brgt!",     D_cond_br},
147
  {"brle!",     D_cond_br},
148
  {"brge!",     D_cond_br},
149
  {"brlt!",     D_cond_br},
150
  {"brmi!",     D_cond_br},
151
  {"brpl!",     D_cond_br},
152
  {"brvs!",     D_cond_br},
153
  {"brvc!",     D_cond_br},
154
  {"brcsl!",    D_cond_br},
155
  {"brccl!",    D_cond_br},
156
  {"brgtul!",   D_cond_br},
157
  {"brleul!",   D_cond_br},
158
  {"breql!",    D_cond_br},
159
  {"brnel!",    D_cond_br},
160
  {"brgtl!",    D_cond_br},
161
  {"brlel!",    D_cond_br},
162
  {"brgel!",    D_cond_br},
163
  {"brltl!",    D_cond_br},
164
  {"brmil!",    D_cond_br},
165
  {"brpll!",    D_cond_br},
166
  {"brvsl!",    D_cond_br},
167
  {"brvcl!",    D_cond_br},
168
  /* conditional move instruction.  */
169
  {"mvcs",      D_cond_mv},
170
  {"mvcc",      D_cond_mv},
171
  {"mvgtu",     D_cond_mv},
172
  {"mvleu",     D_cond_mv},
173
  {"mveq",      D_cond_mv},
174
  {"mvne",      D_cond_mv},
175
  {"mvgt",      D_cond_mv},
176
  {"mvle",      D_cond_mv},
177
  {"mvge",      D_cond_mv},
178
  {"mvlt",      D_cond_mv},
179
  {"mvmi",      D_cond_mv},
180
  {"mvpl",      D_cond_mv},
181
  {"mvvs",      D_cond_mv},
182
  {"mvvc",      D_cond_mv},
183
  /* move spectial instruction.  */
184
  {"mtcr",      D_mtcr},
185
  {"mftlb",     D_mftlb},
186
  {"mtptlb",    D_mtptlb},
187
  {"mtrtlb",    D_mtrtlb},
188
  {"stlb",      D_stlb},
189
  {"mfcr",      D_mfcr},
190
  {"mfsr",      D_mfsr},
191
  /* cache instruction.  */
192
  {"cache 8",   D_cached},
193
  {"cache 9",   D_cached},
194
  {"cache 10",  D_cached},
195
  {"cache 11",  D_cached},
196
  {"cache 12",  D_cached},
197
  {"cache 13",  D_cached},
198
  {"cache 14",  D_cached},
199
  {"cache 24",  D_cached},
200
  {"cache 26",  D_cached},
201
  {"cache 27",  D_cached},
202
  {"cache 29",  D_cached},
203
  {"cache 30",  D_cached},
204
  {"cache 31",  D_cached},
205
  {"cache 0",   D_cachei},
206
  {"cache 1",   D_cachei},
207
  {"cache 2",   D_cachei},
208
  {"cache 3",   D_cachei},
209
  {"cache 4",   D_cachei},
210
  {"cache 16",  D_cachei},
211
  {"cache 17",  D_cachei},
212
  /* load/store instruction.  */
213
  {"lb",        D_ldst},
214
  {"lbu",       D_ldst},
215
  {"lbu!",      D_ldst},
216
  {"lbup!",     D_ldst},
217
  {"lh",        D_ldst},
218
  {"lhu",       D_ldst},
219
  {"lh!",       D_ldst},
220
  {"lhp!",      D_ldst},
221
  {"lw",        D_ldst},
222
  {"lw!",       D_ldst},
223
  {"lwp!",      D_ldst},
224
  {"sb",        D_ldst},
225
  {"sb!",       D_ldst},
226
  {"sbp!",      D_ldst},
227
  {"sh",        D_ldst},
228
  {"sh!",       D_ldst},
229
  {"shp!",      D_ldst},
230
  {"sw",        D_ldst},
231
  {"sw!",       D_ldst},
232
  {"swp!",      D_ldst},
233
  {"alw",       D_ldst},
234
  {"asw",       D_ldst},
235
  {"push!",     D_ldst},
236
  {"pushhi!",   D_ldst},
237
  {"pop!",      D_ldst},
238
  {"pophi!",    D_ldst},
239
  {"ldc1",      D_ldst},
240
  {"ldc2",      D_ldst},
241
  {"ldc3",      D_ldst},
242
  {"stc1",      D_ldst},
243
  {"stc2",      D_ldst},
244
  {"stc3",      D_ldst},
245
  {"scb",       D_ldst},
246
  {"scw",       D_ldst},
247
  {"sce",       D_ldst},
248
  /* load combine instruction.  */
249
  {"lcb",       D_ldcombine},
250
  {"lcw",       D_ldcombine},
251
  {"lce",       D_ldcombine},
252
};
253
 
254
static const struct data_dependency data_dependency_table[] =
255
{
256
  /* Condition register.  */
257
  {D_mtcr, "cr1", D_pce, "", 2, 1, 1},
258
  {D_mtcr, "cr1", D_cond_br, "", 1, 0, 1},
259
  {D_mtcr, "cr1", D_cond_mv, "", 1, 0, 1},
260
  /* Status regiser.  */
261
  {D_mtcr, "cr0", D_all_insn, "", 5, 4, 0},
262
  /* CCR regiser.  */
263
  {D_mtcr, "cr4", D_all_insn, "", 6, 5, 0},
264
  /* EntryHi/EntryLo register.  */
265
  {D_mftlb, "", D_mtptlb, "", 1, 1, 1},
266
  {D_mftlb, "", D_mtrtlb, "", 1, 1, 1},
267
  {D_mftlb, "", D_stlb, "", 1, 1,1},
268
  {D_mftlb, "", D_mfcr, "cr11", 1, 1, 1},
269
  {D_mftlb, "", D_mfcr, "cr12", 1, 1, 1},
270
  /* Index register.  */
271
  {D_stlb, "", D_mtptlb, "", 1, 1, 1},
272
  {D_stlb, "", D_mftlb, "", 1, 1, 1},
273
  {D_stlb, "", D_mfcr, "cr8", 2, 2, 1},
274
  /* Cache.  */
275
  {D_cached, "", D_ldst, "", 1, 1, 0},
276
  {D_cached, "", D_ldcombine, "", 1, 1, 0},
277
  {D_cachei, "", D_all_insn, "", 5, 4, 0},
278
  /* Load combine.  */
279
  {D_ldcombine, "", D_mfsr, "sr1", 3, 3, 1},
280
};
281
 
282
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.