modelv10.c revision 1.1 1 1.1 christos /* Simulator model support for crisv10f.
2 1.1 christos
3 1.1 christos THIS FILE IS MACHINE GENERATED WITH CGEN.
4 1.1 christos
5 1.1 christos Copyright 1996-2014 Free Software Foundation, Inc.
6 1.1 christos
7 1.1 christos This file is part of the GNU simulators.
8 1.1 christos
9 1.1 christos This file is free software; you can redistribute it and/or modify
10 1.1 christos it under the terms of the GNU General Public License as published by
11 1.1 christos the Free Software Foundation; either version 3, or (at your option)
12 1.1 christos any later version.
13 1.1 christos
14 1.1 christos It is distributed in the hope that it will be useful, but WITHOUT
15 1.1 christos ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 1.1 christos or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 1.1 christos License for more details.
18 1.1 christos
19 1.1 christos You should have received a copy of the GNU General Public License along
20 1.1 christos with this program; if not, see <http://www.gnu.org/licenses/>.
21 1.1 christos
22 1.1 christos */
23 1.1 christos
24 1.1 christos #define WANT_CPU crisv10f
25 1.1 christos #define WANT_CPU_CRISV10F
26 1.1 christos
27 1.1 christos #include "sim-main.h"
28 1.1 christos
29 1.1 christos /* The profiling data is recorded here, but is accessed via the profiling
30 1.1 christos mechanism. After all, this is information for profiling. */
31 1.1 christos
32 1.1 christos #if WITH_PROFILE_MODEL_P
33 1.1 christos
34 1.1 christos /* Model handlers for each insn. */
35 1.1 christos
36 1.1 christos static int
37 1.1 christos model_crisv10_nop (SIM_CPU *current_cpu, void *sem_arg)
38 1.1 christos {
39 1.1 christos #define FLD(f) abuf->fields.sfmt_empty.f
40 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
41 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
42 1.1 christos int cycles = 0;
43 1.1 christos {
44 1.1 christos int referenced = 0;
45 1.1 christos int UNUSED insn_referenced = abuf->written;
46 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
47 1.1 christos }
48 1.1 christos return cycles;
49 1.1 christos #undef FLD
50 1.1 christos }
51 1.1 christos
52 1.1 christos static int
53 1.1 christos model_crisv10_move_b_r (SIM_CPU *current_cpu, void *sem_arg)
54 1.1 christos {
55 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
56 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
57 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
58 1.1 christos int cycles = 0;
59 1.1 christos {
60 1.1 christos int referenced = 0;
61 1.1 christos int UNUSED insn_referenced = abuf->written;
62 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
63 1.1 christos }
64 1.1 christos return cycles;
65 1.1 christos #undef FLD
66 1.1 christos }
67 1.1 christos
68 1.1 christos static int
69 1.1 christos model_crisv10_move_w_r (SIM_CPU *current_cpu, void *sem_arg)
70 1.1 christos {
71 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
72 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
73 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
74 1.1 christos int cycles = 0;
75 1.1 christos {
76 1.1 christos int referenced = 0;
77 1.1 christos int UNUSED insn_referenced = abuf->written;
78 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
79 1.1 christos }
80 1.1 christos return cycles;
81 1.1 christos #undef FLD
82 1.1 christos }
83 1.1 christos
84 1.1 christos static int
85 1.1 christos model_crisv10_move_d_r (SIM_CPU *current_cpu, void *sem_arg)
86 1.1 christos {
87 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
88 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
89 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
90 1.1 christos int cycles = 0;
91 1.1 christos {
92 1.1 christos int referenced = 0;
93 1.1 christos int UNUSED insn_referenced = abuf->written;
94 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
95 1.1 christos }
96 1.1 christos return cycles;
97 1.1 christos #undef FLD
98 1.1 christos }
99 1.1 christos
100 1.1 christos static int
101 1.1 christos model_crisv10_movepcr (SIM_CPU *current_cpu, void *sem_arg)
102 1.1 christos {
103 1.1 christos #define FLD(f) abuf->fields.sfmt_moveq.f
104 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
105 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
106 1.1 christos int cycles = 0;
107 1.1 christos {
108 1.1 christos int referenced = 0;
109 1.1 christos int UNUSED insn_referenced = abuf->written;
110 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
111 1.1 christos }
112 1.1 christos return cycles;
113 1.1 christos #undef FLD
114 1.1 christos }
115 1.1 christos
116 1.1 christos static int
117 1.1 christos model_crisv10_moveq (SIM_CPU *current_cpu, void *sem_arg)
118 1.1 christos {
119 1.1 christos #define FLD(f) abuf->fields.sfmt_moveq.f
120 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
121 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
122 1.1 christos int cycles = 0;
123 1.1 christos {
124 1.1 christos int referenced = 0;
125 1.1 christos int UNUSED insn_referenced = abuf->written;
126 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
127 1.1 christos }
128 1.1 christos return cycles;
129 1.1 christos #undef FLD
130 1.1 christos }
131 1.1 christos
132 1.1 christos static int
133 1.1 christos model_crisv10_movs_b_r (SIM_CPU *current_cpu, void *sem_arg)
134 1.1 christos {
135 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
136 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
137 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
138 1.1 christos int cycles = 0;
139 1.1 christos {
140 1.1 christos int referenced = 0;
141 1.1 christos int UNUSED insn_referenced = abuf->written;
142 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
143 1.1 christos }
144 1.1 christos return cycles;
145 1.1 christos #undef FLD
146 1.1 christos }
147 1.1 christos
148 1.1 christos static int
149 1.1 christos model_crisv10_movs_w_r (SIM_CPU *current_cpu, void *sem_arg)
150 1.1 christos {
151 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
152 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
153 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
154 1.1 christos int cycles = 0;
155 1.1 christos {
156 1.1 christos int referenced = 0;
157 1.1 christos int UNUSED insn_referenced = abuf->written;
158 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
159 1.1 christos }
160 1.1 christos return cycles;
161 1.1 christos #undef FLD
162 1.1 christos }
163 1.1 christos
164 1.1 christos static int
165 1.1 christos model_crisv10_movu_b_r (SIM_CPU *current_cpu, void *sem_arg)
166 1.1 christos {
167 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
168 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
169 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
170 1.1 christos int cycles = 0;
171 1.1 christos {
172 1.1 christos int referenced = 0;
173 1.1 christos int UNUSED insn_referenced = abuf->written;
174 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
175 1.1 christos }
176 1.1 christos return cycles;
177 1.1 christos #undef FLD
178 1.1 christos }
179 1.1 christos
180 1.1 christos static int
181 1.1 christos model_crisv10_movu_w_r (SIM_CPU *current_cpu, void *sem_arg)
182 1.1 christos {
183 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
184 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
185 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
186 1.1 christos int cycles = 0;
187 1.1 christos {
188 1.1 christos int referenced = 0;
189 1.1 christos int UNUSED insn_referenced = abuf->written;
190 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
191 1.1 christos }
192 1.1 christos return cycles;
193 1.1 christos #undef FLD
194 1.1 christos }
195 1.1 christos
196 1.1 christos static int
197 1.1 christos model_crisv10_movecbr (SIM_CPU *current_cpu, void *sem_arg)
198 1.1 christos {
199 1.1 christos #define FLD(f) abuf->fields.sfmt_addcbr.f
200 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
201 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
202 1.1 christos int cycles = 0;
203 1.1 christos {
204 1.1 christos int referenced = 0;
205 1.1 christos int UNUSED insn_referenced = abuf->written;
206 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
207 1.1 christos }
208 1.1 christos {
209 1.1 christos int referenced = 0;
210 1.1 christos int UNUSED insn_referenced = abuf->written;
211 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
212 1.1 christos }
213 1.1 christos return cycles;
214 1.1 christos #undef FLD
215 1.1 christos }
216 1.1 christos
217 1.1 christos static int
218 1.1 christos model_crisv10_movecwr (SIM_CPU *current_cpu, void *sem_arg)
219 1.1 christos {
220 1.1 christos #define FLD(f) abuf->fields.sfmt_addcwr.f
221 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
222 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
223 1.1 christos int cycles = 0;
224 1.1 christos {
225 1.1 christos int referenced = 0;
226 1.1 christos int UNUSED insn_referenced = abuf->written;
227 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
228 1.1 christos }
229 1.1 christos {
230 1.1 christos int referenced = 0;
231 1.1 christos int UNUSED insn_referenced = abuf->written;
232 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
233 1.1 christos }
234 1.1 christos return cycles;
235 1.1 christos #undef FLD
236 1.1 christos }
237 1.1 christos
238 1.1 christos static int
239 1.1 christos model_crisv10_movecdr (SIM_CPU *current_cpu, void *sem_arg)
240 1.1 christos {
241 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
242 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
243 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
244 1.1 christos int cycles = 0;
245 1.1 christos {
246 1.1 christos int referenced = 0;
247 1.1 christos int UNUSED insn_referenced = abuf->written;
248 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
249 1.1 christos }
250 1.1 christos {
251 1.1 christos int referenced = 0;
252 1.1 christos int UNUSED insn_referenced = abuf->written;
253 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
254 1.1 christos }
255 1.1 christos return cycles;
256 1.1 christos #undef FLD
257 1.1 christos }
258 1.1 christos
259 1.1 christos static int
260 1.1 christos model_crisv10_movscbr (SIM_CPU *current_cpu, void *sem_arg)
261 1.1 christos {
262 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
263 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
264 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
265 1.1 christos int cycles = 0;
266 1.1 christos {
267 1.1 christos int referenced = 0;
268 1.1 christos int UNUSED insn_referenced = abuf->written;
269 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
270 1.1 christos }
271 1.1 christos {
272 1.1 christos int referenced = 0;
273 1.1 christos int UNUSED insn_referenced = abuf->written;
274 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
275 1.1 christos }
276 1.1 christos return cycles;
277 1.1 christos #undef FLD
278 1.1 christos }
279 1.1 christos
280 1.1 christos static int
281 1.1 christos model_crisv10_movscwr (SIM_CPU *current_cpu, void *sem_arg)
282 1.1 christos {
283 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
284 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
285 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
286 1.1 christos int cycles = 0;
287 1.1 christos {
288 1.1 christos int referenced = 0;
289 1.1 christos int UNUSED insn_referenced = abuf->written;
290 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
291 1.1 christos }
292 1.1 christos {
293 1.1 christos int referenced = 0;
294 1.1 christos int UNUSED insn_referenced = abuf->written;
295 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
296 1.1 christos }
297 1.1 christos return cycles;
298 1.1 christos #undef FLD
299 1.1 christos }
300 1.1 christos
301 1.1 christos static int
302 1.1 christos model_crisv10_movucbr (SIM_CPU *current_cpu, void *sem_arg)
303 1.1 christos {
304 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
305 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
306 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
307 1.1 christos int cycles = 0;
308 1.1 christos {
309 1.1 christos int referenced = 0;
310 1.1 christos int UNUSED insn_referenced = abuf->written;
311 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
312 1.1 christos }
313 1.1 christos {
314 1.1 christos int referenced = 0;
315 1.1 christos int UNUSED insn_referenced = abuf->written;
316 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
317 1.1 christos }
318 1.1 christos return cycles;
319 1.1 christos #undef FLD
320 1.1 christos }
321 1.1 christos
322 1.1 christos static int
323 1.1 christos model_crisv10_movucwr (SIM_CPU *current_cpu, void *sem_arg)
324 1.1 christos {
325 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
326 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
327 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
328 1.1 christos int cycles = 0;
329 1.1 christos {
330 1.1 christos int referenced = 0;
331 1.1 christos int UNUSED insn_referenced = abuf->written;
332 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
333 1.1 christos }
334 1.1 christos {
335 1.1 christos int referenced = 0;
336 1.1 christos int UNUSED insn_referenced = abuf->written;
337 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
338 1.1 christos }
339 1.1 christos return cycles;
340 1.1 christos #undef FLD
341 1.1 christos }
342 1.1 christos
343 1.1 christos static int
344 1.1 christos model_crisv10_addq (SIM_CPU *current_cpu, void *sem_arg)
345 1.1 christos {
346 1.1 christos #define FLD(f) abuf->fields.sfmt_addq.f
347 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
348 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
349 1.1 christos int cycles = 0;
350 1.1 christos {
351 1.1 christos int referenced = 0;
352 1.1 christos int UNUSED insn_referenced = abuf->written;
353 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
354 1.1 christos }
355 1.1 christos return cycles;
356 1.1 christos #undef FLD
357 1.1 christos }
358 1.1 christos
359 1.1 christos static int
360 1.1 christos model_crisv10_subq (SIM_CPU *current_cpu, void *sem_arg)
361 1.1 christos {
362 1.1 christos #define FLD(f) abuf->fields.sfmt_addq.f
363 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
364 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
365 1.1 christos int cycles = 0;
366 1.1 christos {
367 1.1 christos int referenced = 0;
368 1.1 christos int UNUSED insn_referenced = abuf->written;
369 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
370 1.1 christos }
371 1.1 christos return cycles;
372 1.1 christos #undef FLD
373 1.1 christos }
374 1.1 christos
375 1.1 christos static int
376 1.1 christos model_crisv10_cmp_r_b_r (SIM_CPU *current_cpu, void *sem_arg)
377 1.1 christos {
378 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
379 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
380 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
381 1.1 christos int cycles = 0;
382 1.1 christos {
383 1.1 christos int referenced = 0;
384 1.1 christos int UNUSED insn_referenced = abuf->written;
385 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
386 1.1 christos }
387 1.1 christos return cycles;
388 1.1 christos #undef FLD
389 1.1 christos }
390 1.1 christos
391 1.1 christos static int
392 1.1 christos model_crisv10_cmp_r_w_r (SIM_CPU *current_cpu, void *sem_arg)
393 1.1 christos {
394 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
395 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
396 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
397 1.1 christos int cycles = 0;
398 1.1 christos {
399 1.1 christos int referenced = 0;
400 1.1 christos int UNUSED insn_referenced = abuf->written;
401 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
402 1.1 christos }
403 1.1 christos return cycles;
404 1.1 christos #undef FLD
405 1.1 christos }
406 1.1 christos
407 1.1 christos static int
408 1.1 christos model_crisv10_cmp_r_d_r (SIM_CPU *current_cpu, void *sem_arg)
409 1.1 christos {
410 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
411 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
412 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
413 1.1 christos int cycles = 0;
414 1.1 christos {
415 1.1 christos int referenced = 0;
416 1.1 christos int UNUSED insn_referenced = abuf->written;
417 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
418 1.1 christos }
419 1.1 christos return cycles;
420 1.1 christos #undef FLD
421 1.1 christos }
422 1.1 christos
423 1.1 christos static int
424 1.1 christos model_crisv10_cmp_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
425 1.1 christos {
426 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
427 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
428 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
429 1.1 christos int cycles = 0;
430 1.1 christos {
431 1.1 christos int referenced = 0;
432 1.1 christos int UNUSED insn_referenced = abuf->written;
433 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
434 1.1 christos }
435 1.1 christos {
436 1.1 christos int referenced = 0;
437 1.1 christos int UNUSED insn_referenced = abuf->written;
438 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
439 1.1 christos }
440 1.1 christos return cycles;
441 1.1 christos #undef FLD
442 1.1 christos }
443 1.1 christos
444 1.1 christos static int
445 1.1 christos model_crisv10_cmp_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
446 1.1 christos {
447 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
448 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
449 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
450 1.1 christos int cycles = 0;
451 1.1 christos {
452 1.1 christos int referenced = 0;
453 1.1 christos int UNUSED insn_referenced = abuf->written;
454 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
455 1.1 christos }
456 1.1 christos {
457 1.1 christos int referenced = 0;
458 1.1 christos int UNUSED insn_referenced = abuf->written;
459 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
460 1.1 christos }
461 1.1 christos return cycles;
462 1.1 christos #undef FLD
463 1.1 christos }
464 1.1 christos
465 1.1 christos static int
466 1.1 christos model_crisv10_cmp_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
467 1.1 christos {
468 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
469 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
470 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
471 1.1 christos int cycles = 0;
472 1.1 christos {
473 1.1 christos int referenced = 0;
474 1.1 christos int UNUSED insn_referenced = abuf->written;
475 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
476 1.1 christos }
477 1.1 christos {
478 1.1 christos int referenced = 0;
479 1.1 christos int UNUSED insn_referenced = abuf->written;
480 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
481 1.1 christos }
482 1.1 christos return cycles;
483 1.1 christos #undef FLD
484 1.1 christos }
485 1.1 christos
486 1.1 christos static int
487 1.1 christos model_crisv10_cmpcbr (SIM_CPU *current_cpu, void *sem_arg)
488 1.1 christos {
489 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
490 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
491 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
492 1.1 christos int cycles = 0;
493 1.1 christos {
494 1.1 christos int referenced = 0;
495 1.1 christos int UNUSED insn_referenced = abuf->written;
496 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
497 1.1 christos }
498 1.1 christos {
499 1.1 christos int referenced = 0;
500 1.1 christos int UNUSED insn_referenced = abuf->written;
501 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
502 1.1 christos }
503 1.1 christos return cycles;
504 1.1 christos #undef FLD
505 1.1 christos }
506 1.1 christos
507 1.1 christos static int
508 1.1 christos model_crisv10_cmpcwr (SIM_CPU *current_cpu, void *sem_arg)
509 1.1 christos {
510 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
511 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
512 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
513 1.1 christos int cycles = 0;
514 1.1 christos {
515 1.1 christos int referenced = 0;
516 1.1 christos int UNUSED insn_referenced = abuf->written;
517 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
518 1.1 christos }
519 1.1 christos {
520 1.1 christos int referenced = 0;
521 1.1 christos int UNUSED insn_referenced = abuf->written;
522 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
523 1.1 christos }
524 1.1 christos return cycles;
525 1.1 christos #undef FLD
526 1.1 christos }
527 1.1 christos
528 1.1 christos static int
529 1.1 christos model_crisv10_cmpcdr (SIM_CPU *current_cpu, void *sem_arg)
530 1.1 christos {
531 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
532 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
533 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
534 1.1 christos int cycles = 0;
535 1.1 christos {
536 1.1 christos int referenced = 0;
537 1.1 christos int UNUSED insn_referenced = abuf->written;
538 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
539 1.1 christos }
540 1.1 christos {
541 1.1 christos int referenced = 0;
542 1.1 christos int UNUSED insn_referenced = abuf->written;
543 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
544 1.1 christos }
545 1.1 christos return cycles;
546 1.1 christos #undef FLD
547 1.1 christos }
548 1.1 christos
549 1.1 christos static int
550 1.1 christos model_crisv10_cmpq (SIM_CPU *current_cpu, void *sem_arg)
551 1.1 christos {
552 1.1 christos #define FLD(f) abuf->fields.sfmt_andq.f
553 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
554 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
555 1.1 christos int cycles = 0;
556 1.1 christos {
557 1.1 christos int referenced = 0;
558 1.1 christos int UNUSED insn_referenced = abuf->written;
559 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
560 1.1 christos }
561 1.1 christos return cycles;
562 1.1 christos #undef FLD
563 1.1 christos }
564 1.1 christos
565 1.1 christos static int
566 1.1 christos model_crisv10_cmps_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
567 1.1 christos {
568 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
569 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
570 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
571 1.1 christos int cycles = 0;
572 1.1 christos {
573 1.1 christos int referenced = 0;
574 1.1 christos int UNUSED insn_referenced = abuf->written;
575 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
576 1.1 christos }
577 1.1 christos {
578 1.1 christos int referenced = 0;
579 1.1 christos int UNUSED insn_referenced = abuf->written;
580 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
581 1.1 christos }
582 1.1 christos return cycles;
583 1.1 christos #undef FLD
584 1.1 christos }
585 1.1 christos
586 1.1 christos static int
587 1.1 christos model_crisv10_cmps_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
588 1.1 christos {
589 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
590 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
591 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
592 1.1 christos int cycles = 0;
593 1.1 christos {
594 1.1 christos int referenced = 0;
595 1.1 christos int UNUSED insn_referenced = abuf->written;
596 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
597 1.1 christos }
598 1.1 christos {
599 1.1 christos int referenced = 0;
600 1.1 christos int UNUSED insn_referenced = abuf->written;
601 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
602 1.1 christos }
603 1.1 christos return cycles;
604 1.1 christos #undef FLD
605 1.1 christos }
606 1.1 christos
607 1.1 christos static int
608 1.1 christos model_crisv10_cmpscbr (SIM_CPU *current_cpu, void *sem_arg)
609 1.1 christos {
610 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
611 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
612 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
613 1.1 christos int cycles = 0;
614 1.1 christos {
615 1.1 christos int referenced = 0;
616 1.1 christos int UNUSED insn_referenced = abuf->written;
617 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
618 1.1 christos }
619 1.1 christos {
620 1.1 christos int referenced = 0;
621 1.1 christos int UNUSED insn_referenced = abuf->written;
622 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
623 1.1 christos }
624 1.1 christos return cycles;
625 1.1 christos #undef FLD
626 1.1 christos }
627 1.1 christos
628 1.1 christos static int
629 1.1 christos model_crisv10_cmpscwr (SIM_CPU *current_cpu, void *sem_arg)
630 1.1 christos {
631 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
632 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
633 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
634 1.1 christos int cycles = 0;
635 1.1 christos {
636 1.1 christos int referenced = 0;
637 1.1 christos int UNUSED insn_referenced = abuf->written;
638 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
639 1.1 christos }
640 1.1 christos {
641 1.1 christos int referenced = 0;
642 1.1 christos int UNUSED insn_referenced = abuf->written;
643 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
644 1.1 christos }
645 1.1 christos return cycles;
646 1.1 christos #undef FLD
647 1.1 christos }
648 1.1 christos
649 1.1 christos static int
650 1.1 christos model_crisv10_cmpu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
651 1.1 christos {
652 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
653 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
654 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
655 1.1 christos int cycles = 0;
656 1.1 christos {
657 1.1 christos int referenced = 0;
658 1.1 christos int UNUSED insn_referenced = abuf->written;
659 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
660 1.1 christos }
661 1.1 christos {
662 1.1 christos int referenced = 0;
663 1.1 christos int UNUSED insn_referenced = abuf->written;
664 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
665 1.1 christos }
666 1.1 christos return cycles;
667 1.1 christos #undef FLD
668 1.1 christos }
669 1.1 christos
670 1.1 christos static int
671 1.1 christos model_crisv10_cmpu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
672 1.1 christos {
673 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
674 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
675 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
676 1.1 christos int cycles = 0;
677 1.1 christos {
678 1.1 christos int referenced = 0;
679 1.1 christos int UNUSED insn_referenced = abuf->written;
680 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
681 1.1 christos }
682 1.1 christos {
683 1.1 christos int referenced = 0;
684 1.1 christos int UNUSED insn_referenced = abuf->written;
685 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
686 1.1 christos }
687 1.1 christos return cycles;
688 1.1 christos #undef FLD
689 1.1 christos }
690 1.1 christos
691 1.1 christos static int
692 1.1 christos model_crisv10_cmpucbr (SIM_CPU *current_cpu, void *sem_arg)
693 1.1 christos {
694 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
695 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
696 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
697 1.1 christos int cycles = 0;
698 1.1 christos {
699 1.1 christos int referenced = 0;
700 1.1 christos int UNUSED insn_referenced = abuf->written;
701 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
702 1.1 christos }
703 1.1 christos {
704 1.1 christos int referenced = 0;
705 1.1 christos int UNUSED insn_referenced = abuf->written;
706 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
707 1.1 christos }
708 1.1 christos return cycles;
709 1.1 christos #undef FLD
710 1.1 christos }
711 1.1 christos
712 1.1 christos static int
713 1.1 christos model_crisv10_cmpucwr (SIM_CPU *current_cpu, void *sem_arg)
714 1.1 christos {
715 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
716 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
717 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
718 1.1 christos int cycles = 0;
719 1.1 christos {
720 1.1 christos int referenced = 0;
721 1.1 christos int UNUSED insn_referenced = abuf->written;
722 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
723 1.1 christos }
724 1.1 christos {
725 1.1 christos int referenced = 0;
726 1.1 christos int UNUSED insn_referenced = abuf->written;
727 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
728 1.1 christos }
729 1.1 christos return cycles;
730 1.1 christos #undef FLD
731 1.1 christos }
732 1.1 christos
733 1.1 christos static int
734 1.1 christos model_crisv10_move_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
735 1.1 christos {
736 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
737 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
738 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
739 1.1 christos int cycles = 0;
740 1.1 christos {
741 1.1 christos int referenced = 0;
742 1.1 christos int UNUSED insn_referenced = abuf->written;
743 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
744 1.1 christos }
745 1.1 christos {
746 1.1 christos int referenced = 0;
747 1.1 christos int UNUSED insn_referenced = abuf->written;
748 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
749 1.1 christos }
750 1.1 christos return cycles;
751 1.1 christos #undef FLD
752 1.1 christos }
753 1.1 christos
754 1.1 christos static int
755 1.1 christos model_crisv10_move_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
756 1.1 christos {
757 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
758 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
759 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
760 1.1 christos int cycles = 0;
761 1.1 christos {
762 1.1 christos int referenced = 0;
763 1.1 christos int UNUSED insn_referenced = abuf->written;
764 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
765 1.1 christos }
766 1.1 christos {
767 1.1 christos int referenced = 0;
768 1.1 christos int UNUSED insn_referenced = abuf->written;
769 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
770 1.1 christos }
771 1.1 christos return cycles;
772 1.1 christos #undef FLD
773 1.1 christos }
774 1.1 christos
775 1.1 christos static int
776 1.1 christos model_crisv10_move_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
777 1.1 christos {
778 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
779 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
780 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
781 1.1 christos int cycles = 0;
782 1.1 christos {
783 1.1 christos int referenced = 0;
784 1.1 christos int UNUSED insn_referenced = abuf->written;
785 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
786 1.1 christos }
787 1.1 christos {
788 1.1 christos int referenced = 0;
789 1.1 christos int UNUSED insn_referenced = abuf->written;
790 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
791 1.1 christos }
792 1.1 christos return cycles;
793 1.1 christos #undef FLD
794 1.1 christos }
795 1.1 christos
796 1.1 christos static int
797 1.1 christos model_crisv10_movs_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
798 1.1 christos {
799 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
800 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
801 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
802 1.1 christos int cycles = 0;
803 1.1 christos {
804 1.1 christos int referenced = 0;
805 1.1 christos int UNUSED insn_referenced = abuf->written;
806 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
807 1.1 christos }
808 1.1 christos {
809 1.1 christos int referenced = 0;
810 1.1 christos int UNUSED insn_referenced = abuf->written;
811 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
812 1.1 christos }
813 1.1 christos return cycles;
814 1.1 christos #undef FLD
815 1.1 christos }
816 1.1 christos
817 1.1 christos static int
818 1.1 christos model_crisv10_movs_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
819 1.1 christos {
820 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
821 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
822 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
823 1.1 christos int cycles = 0;
824 1.1 christos {
825 1.1 christos int referenced = 0;
826 1.1 christos int UNUSED insn_referenced = abuf->written;
827 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
828 1.1 christos }
829 1.1 christos {
830 1.1 christos int referenced = 0;
831 1.1 christos int UNUSED insn_referenced = abuf->written;
832 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
833 1.1 christos }
834 1.1 christos return cycles;
835 1.1 christos #undef FLD
836 1.1 christos }
837 1.1 christos
838 1.1 christos static int
839 1.1 christos model_crisv10_movu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
840 1.1 christos {
841 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
842 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
843 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
844 1.1 christos int cycles = 0;
845 1.1 christos {
846 1.1 christos int referenced = 0;
847 1.1 christos int UNUSED insn_referenced = abuf->written;
848 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
849 1.1 christos }
850 1.1 christos {
851 1.1 christos int referenced = 0;
852 1.1 christos int UNUSED insn_referenced = abuf->written;
853 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
854 1.1 christos }
855 1.1 christos return cycles;
856 1.1 christos #undef FLD
857 1.1 christos }
858 1.1 christos
859 1.1 christos static int
860 1.1 christos model_crisv10_movu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
861 1.1 christos {
862 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
863 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
864 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
865 1.1 christos int cycles = 0;
866 1.1 christos {
867 1.1 christos int referenced = 0;
868 1.1 christos int UNUSED insn_referenced = abuf->written;
869 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
870 1.1 christos }
871 1.1 christos {
872 1.1 christos int referenced = 0;
873 1.1 christos int UNUSED insn_referenced = abuf->written;
874 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
875 1.1 christos }
876 1.1 christos return cycles;
877 1.1 christos #undef FLD
878 1.1 christos }
879 1.1 christos
880 1.1 christos static int
881 1.1 christos model_crisv10_move_r_sprv10 (SIM_CPU *current_cpu, void *sem_arg)
882 1.1 christos {
883 1.1 christos #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
884 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
885 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
886 1.1 christos int cycles = 0;
887 1.1 christos {
888 1.1 christos int referenced = 0;
889 1.1 christos int UNUSED insn_referenced = abuf->written;
890 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
891 1.1 christos }
892 1.1 christos return cycles;
893 1.1 christos #undef FLD
894 1.1 christos }
895 1.1 christos
896 1.1 christos static int
897 1.1 christos model_crisv10_move_spr_rv10 (SIM_CPU *current_cpu, void *sem_arg)
898 1.1 christos {
899 1.1 christos #define FLD(f) abuf->fields.sfmt_move_spr_rv10.f
900 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
901 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
902 1.1 christos int cycles = 0;
903 1.1 christos {
904 1.1 christos int referenced = 0;
905 1.1 christos int UNUSED insn_referenced = abuf->written;
906 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
907 1.1 christos }
908 1.1 christos return cycles;
909 1.1 christos #undef FLD
910 1.1 christos }
911 1.1 christos
912 1.1 christos static int
913 1.1 christos model_crisv10_ret_type (SIM_CPU *current_cpu, void *sem_arg)
914 1.1 christos {
915 1.1 christos #define FLD(f) abuf->fields.sfmt_move_spr_rv10.f
916 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
917 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
918 1.1 christos int cycles = 0;
919 1.1 christos {
920 1.1 christos int referenced = 0;
921 1.1 christos int UNUSED insn_referenced = abuf->written;
922 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
923 1.1 christos }
924 1.1 christos return cycles;
925 1.1 christos #undef FLD
926 1.1 christos }
927 1.1 christos
928 1.1 christos static int
929 1.1 christos model_crisv10_move_m_sprv10 (SIM_CPU *current_cpu, void *sem_arg)
930 1.1 christos {
931 1.1 christos #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
932 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
933 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
934 1.1 christos int cycles = 0;
935 1.1 christos {
936 1.1 christos int referenced = 0;
937 1.1 christos int UNUSED insn_referenced = abuf->written;
938 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
939 1.1 christos }
940 1.1 christos {
941 1.1 christos int referenced = 0;
942 1.1 christos int UNUSED insn_referenced = abuf->written;
943 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
944 1.1 christos }
945 1.1 christos return cycles;
946 1.1 christos #undef FLD
947 1.1 christos }
948 1.1 christos
949 1.1 christos static int
950 1.1 christos model_crisv10_move_c_sprv10_p5 (SIM_CPU *current_cpu, void *sem_arg)
951 1.1 christos {
952 1.1 christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p5.f
953 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
954 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
955 1.1 christos int cycles = 0;
956 1.1 christos {
957 1.1 christos int referenced = 0;
958 1.1 christos int UNUSED insn_referenced = abuf->written;
959 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
960 1.1 christos }
961 1.1 christos {
962 1.1 christos int referenced = 0;
963 1.1 christos int UNUSED insn_referenced = abuf->written;
964 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
965 1.1 christos }
966 1.1 christos return cycles;
967 1.1 christos #undef FLD
968 1.1 christos }
969 1.1 christos
970 1.1 christos static int
971 1.1 christos model_crisv10_move_c_sprv10_p9 (SIM_CPU *current_cpu, void *sem_arg)
972 1.1 christos {
973 1.1 christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
974 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
975 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
976 1.1 christos int cycles = 0;
977 1.1 christos {
978 1.1 christos int referenced = 0;
979 1.1 christos int UNUSED insn_referenced = abuf->written;
980 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
981 1.1 christos }
982 1.1 christos {
983 1.1 christos int referenced = 0;
984 1.1 christos int UNUSED insn_referenced = abuf->written;
985 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
986 1.1 christos }
987 1.1 christos return cycles;
988 1.1 christos #undef FLD
989 1.1 christos }
990 1.1 christos
991 1.1 christos static int
992 1.1 christos model_crisv10_move_c_sprv10_p10 (SIM_CPU *current_cpu, void *sem_arg)
993 1.1 christos {
994 1.1 christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
995 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
996 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
997 1.1 christos int cycles = 0;
998 1.1 christos {
999 1.1 christos int referenced = 0;
1000 1.1 christos int UNUSED insn_referenced = abuf->written;
1001 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
1002 1.1 christos }
1003 1.1 christos {
1004 1.1 christos int referenced = 0;
1005 1.1 christos int UNUSED insn_referenced = abuf->written;
1006 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1007 1.1 christos }
1008 1.1 christos return cycles;
1009 1.1 christos #undef FLD
1010 1.1 christos }
1011 1.1 christos
1012 1.1 christos static int
1013 1.1 christos model_crisv10_move_c_sprv10_p11 (SIM_CPU *current_cpu, void *sem_arg)
1014 1.1 christos {
1015 1.1 christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
1016 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1017 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1018 1.1 christos int cycles = 0;
1019 1.1 christos {
1020 1.1 christos int referenced = 0;
1021 1.1 christos int UNUSED insn_referenced = abuf->written;
1022 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
1023 1.1 christos }
1024 1.1 christos {
1025 1.1 christos int referenced = 0;
1026 1.1 christos int UNUSED insn_referenced = abuf->written;
1027 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1028 1.1 christos }
1029 1.1 christos return cycles;
1030 1.1 christos #undef FLD
1031 1.1 christos }
1032 1.1 christos
1033 1.1 christos static int
1034 1.1 christos model_crisv10_move_c_sprv10_p12 (SIM_CPU *current_cpu, void *sem_arg)
1035 1.1 christos {
1036 1.1 christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
1037 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1038 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1039 1.1 christos int cycles = 0;
1040 1.1 christos {
1041 1.1 christos int referenced = 0;
1042 1.1 christos int UNUSED insn_referenced = abuf->written;
1043 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
1044 1.1 christos }
1045 1.1 christos {
1046 1.1 christos int referenced = 0;
1047 1.1 christos int UNUSED insn_referenced = abuf->written;
1048 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1049 1.1 christos }
1050 1.1 christos return cycles;
1051 1.1 christos #undef FLD
1052 1.1 christos }
1053 1.1 christos
1054 1.1 christos static int
1055 1.1 christos model_crisv10_move_c_sprv10_p13 (SIM_CPU *current_cpu, void *sem_arg)
1056 1.1 christos {
1057 1.1 christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
1058 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1059 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1060 1.1 christos int cycles = 0;
1061 1.1 christos {
1062 1.1 christos int referenced = 0;
1063 1.1 christos int UNUSED insn_referenced = abuf->written;
1064 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
1065 1.1 christos }
1066 1.1 christos {
1067 1.1 christos int referenced = 0;
1068 1.1 christos int UNUSED insn_referenced = abuf->written;
1069 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1070 1.1 christos }
1071 1.1 christos return cycles;
1072 1.1 christos #undef FLD
1073 1.1 christos }
1074 1.1 christos
1075 1.1 christos static int
1076 1.1 christos model_crisv10_move_c_sprv10_p7 (SIM_CPU *current_cpu, void *sem_arg)
1077 1.1 christos {
1078 1.1 christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
1079 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1080 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1081 1.1 christos int cycles = 0;
1082 1.1 christos {
1083 1.1 christos int referenced = 0;
1084 1.1 christos int UNUSED insn_referenced = abuf->written;
1085 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
1086 1.1 christos }
1087 1.1 christos {
1088 1.1 christos int referenced = 0;
1089 1.1 christos int UNUSED insn_referenced = abuf->written;
1090 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1091 1.1 christos }
1092 1.1 christos return cycles;
1093 1.1 christos #undef FLD
1094 1.1 christos }
1095 1.1 christos
1096 1.1 christos static int
1097 1.1 christos model_crisv10_move_c_sprv10_p14 (SIM_CPU *current_cpu, void *sem_arg)
1098 1.1 christos {
1099 1.1 christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
1100 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1101 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1102 1.1 christos int cycles = 0;
1103 1.1 christos {
1104 1.1 christos int referenced = 0;
1105 1.1 christos int UNUSED insn_referenced = abuf->written;
1106 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
1107 1.1 christos }
1108 1.1 christos {
1109 1.1 christos int referenced = 0;
1110 1.1 christos int UNUSED insn_referenced = abuf->written;
1111 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1112 1.1 christos }
1113 1.1 christos return cycles;
1114 1.1 christos #undef FLD
1115 1.1 christos }
1116 1.1 christos
1117 1.1 christos static int
1118 1.1 christos model_crisv10_move_c_sprv10_p15 (SIM_CPU *current_cpu, void *sem_arg)
1119 1.1 christos {
1120 1.1 christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
1121 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1122 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1123 1.1 christos int cycles = 0;
1124 1.1 christos {
1125 1.1 christos int referenced = 0;
1126 1.1 christos int UNUSED insn_referenced = abuf->written;
1127 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
1128 1.1 christos }
1129 1.1 christos {
1130 1.1 christos int referenced = 0;
1131 1.1 christos int UNUSED insn_referenced = abuf->written;
1132 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1133 1.1 christos }
1134 1.1 christos return cycles;
1135 1.1 christos #undef FLD
1136 1.1 christos }
1137 1.1 christos
1138 1.1 christos static int
1139 1.1 christos model_crisv10_move_spr_mv10 (SIM_CPU *current_cpu, void *sem_arg)
1140 1.1 christos {
1141 1.1 christos #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
1142 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1143 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1144 1.1 christos int cycles = 0;
1145 1.1 christos {
1146 1.1 christos int referenced = 0;
1147 1.1 christos int UNUSED insn_referenced = abuf->written;
1148 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
1149 1.1 christos }
1150 1.1 christos {
1151 1.1 christos int referenced = 0;
1152 1.1 christos int UNUSED insn_referenced = abuf->written;
1153 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1154 1.1 christos }
1155 1.1 christos return cycles;
1156 1.1 christos #undef FLD
1157 1.1 christos }
1158 1.1 christos
1159 1.1 christos static int
1160 1.1 christos model_crisv10_sbfs (SIM_CPU *current_cpu, void *sem_arg)
1161 1.1 christos {
1162 1.1 christos #define FLD(f) abuf->fields.sfmt_empty.f
1163 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1164 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1165 1.1 christos int cycles = 0;
1166 1.1 christos {
1167 1.1 christos int referenced = 0;
1168 1.1 christos int UNUSED insn_referenced = abuf->written;
1169 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
1170 1.1 christos }
1171 1.1 christos return cycles;
1172 1.1 christos #undef FLD
1173 1.1 christos }
1174 1.1 christos
1175 1.1 christos static int
1176 1.1 christos model_crisv10_movem_r_m (SIM_CPU *current_cpu, void *sem_arg)
1177 1.1 christos {
1178 1.1 christos #define FLD(f) abuf->fields.sfmt_movem_r_m.f
1179 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1180 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1181 1.1 christos int cycles = 0;
1182 1.1 christos {
1183 1.1 christos int referenced = 0;
1184 1.1 christos int UNUSED insn_referenced = abuf->written;
1185 1.1 christos INT in_Rd = -1;
1186 1.1 christos in_Rd = FLD (in_Rd);
1187 1.1 christos referenced |= 1 << 0;
1188 1.1 christos cycles += crisv10f_model_crisv10_u_movem (current_cpu, idesc, 0, referenced, in_Rd);
1189 1.1 christos }
1190 1.1 christos {
1191 1.1 christos int referenced = 0;
1192 1.1 christos int UNUSED insn_referenced = abuf->written;
1193 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1194 1.1 christos }
1195 1.1 christos return cycles;
1196 1.1 christos #undef FLD
1197 1.1 christos }
1198 1.1 christos
1199 1.1 christos static int
1200 1.1 christos model_crisv10_movem_m_r (SIM_CPU *current_cpu, void *sem_arg)
1201 1.1 christos {
1202 1.1 christos #define FLD(f) abuf->fields.sfmt_movem_m_r.f
1203 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1204 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1205 1.1 christos int cycles = 0;
1206 1.1 christos {
1207 1.1 christos int referenced = 0;
1208 1.1 christos int UNUSED insn_referenced = abuf->written;
1209 1.1 christos INT in_Rd = -1;
1210 1.1 christos in_Rd = FLD (in_Rd);
1211 1.1 christos referenced |= 1 << 0;
1212 1.1 christos cycles += crisv10f_model_crisv10_u_movem (current_cpu, idesc, 0, referenced, in_Rd);
1213 1.1 christos }
1214 1.1 christos {
1215 1.1 christos int referenced = 0;
1216 1.1 christos int UNUSED insn_referenced = abuf->written;
1217 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1218 1.1 christos }
1219 1.1 christos return cycles;
1220 1.1 christos #undef FLD
1221 1.1 christos }
1222 1.1 christos
1223 1.1 christos static int
1224 1.1 christos model_crisv10_movem_m_pc (SIM_CPU *current_cpu, void *sem_arg)
1225 1.1 christos {
1226 1.1 christos #define FLD(f) abuf->fields.sfmt_movem_m_r.f
1227 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1228 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1229 1.1 christos int cycles = 0;
1230 1.1 christos {
1231 1.1 christos int referenced = 0;
1232 1.1 christos int UNUSED insn_referenced = abuf->written;
1233 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
1234 1.1 christos }
1235 1.1 christos {
1236 1.1 christos int referenced = 0;
1237 1.1 christos int UNUSED insn_referenced = abuf->written;
1238 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1239 1.1 christos }
1240 1.1 christos return cycles;
1241 1.1 christos #undef FLD
1242 1.1 christos }
1243 1.1 christos
1244 1.1 christos static int
1245 1.1 christos model_crisv10_add_b_r (SIM_CPU *current_cpu, void *sem_arg)
1246 1.1 christos {
1247 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
1248 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1249 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1250 1.1 christos int cycles = 0;
1251 1.1 christos {
1252 1.1 christos int referenced = 0;
1253 1.1 christos int UNUSED insn_referenced = abuf->written;
1254 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
1255 1.1 christos }
1256 1.1 christos return cycles;
1257 1.1 christos #undef FLD
1258 1.1 christos }
1259 1.1 christos
1260 1.1 christos static int
1261 1.1 christos model_crisv10_add_w_r (SIM_CPU *current_cpu, void *sem_arg)
1262 1.1 christos {
1263 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
1264 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1265 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1266 1.1 christos int cycles = 0;
1267 1.1 christos {
1268 1.1 christos int referenced = 0;
1269 1.1 christos int UNUSED insn_referenced = abuf->written;
1270 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
1271 1.1 christos }
1272 1.1 christos return cycles;
1273 1.1 christos #undef FLD
1274 1.1 christos }
1275 1.1 christos
1276 1.1 christos static int
1277 1.1 christos model_crisv10_add_d_r (SIM_CPU *current_cpu, void *sem_arg)
1278 1.1 christos {
1279 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
1280 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1281 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1282 1.1 christos int cycles = 0;
1283 1.1 christos {
1284 1.1 christos int referenced = 0;
1285 1.1 christos int UNUSED insn_referenced = abuf->written;
1286 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
1287 1.1 christos }
1288 1.1 christos return cycles;
1289 1.1 christos #undef FLD
1290 1.1 christos }
1291 1.1 christos
1292 1.1 christos static int
1293 1.1 christos model_crisv10_add_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
1294 1.1 christos {
1295 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1296 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1297 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1298 1.1 christos int cycles = 0;
1299 1.1 christos {
1300 1.1 christos int referenced = 0;
1301 1.1 christos int UNUSED insn_referenced = abuf->written;
1302 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
1303 1.1 christos }
1304 1.1 christos {
1305 1.1 christos int referenced = 0;
1306 1.1 christos int UNUSED insn_referenced = abuf->written;
1307 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1308 1.1 christos }
1309 1.1 christos return cycles;
1310 1.1 christos #undef FLD
1311 1.1 christos }
1312 1.1 christos
1313 1.1 christos static int
1314 1.1 christos model_crisv10_add_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
1315 1.1 christos {
1316 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1317 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1318 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1319 1.1 christos int cycles = 0;
1320 1.1 christos {
1321 1.1 christos int referenced = 0;
1322 1.1 christos int UNUSED insn_referenced = abuf->written;
1323 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
1324 1.1 christos }
1325 1.1 christos {
1326 1.1 christos int referenced = 0;
1327 1.1 christos int UNUSED insn_referenced = abuf->written;
1328 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1329 1.1 christos }
1330 1.1 christos return cycles;
1331 1.1 christos #undef FLD
1332 1.1 christos }
1333 1.1 christos
1334 1.1 christos static int
1335 1.1 christos model_crisv10_add_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
1336 1.1 christos {
1337 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1338 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1339 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1340 1.1 christos int cycles = 0;
1341 1.1 christos {
1342 1.1 christos int referenced = 0;
1343 1.1 christos int UNUSED insn_referenced = abuf->written;
1344 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
1345 1.1 christos }
1346 1.1 christos {
1347 1.1 christos int referenced = 0;
1348 1.1 christos int UNUSED insn_referenced = abuf->written;
1349 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1350 1.1 christos }
1351 1.1 christos return cycles;
1352 1.1 christos #undef FLD
1353 1.1 christos }
1354 1.1 christos
1355 1.1 christos static int
1356 1.1 christos model_crisv10_addcbr (SIM_CPU *current_cpu, void *sem_arg)
1357 1.1 christos {
1358 1.1 christos #define FLD(f) abuf->fields.sfmt_addcbr.f
1359 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1360 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1361 1.1 christos int cycles = 0;
1362 1.1 christos {
1363 1.1 christos int referenced = 0;
1364 1.1 christos int UNUSED insn_referenced = abuf->written;
1365 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
1366 1.1 christos }
1367 1.1 christos {
1368 1.1 christos int referenced = 0;
1369 1.1 christos int UNUSED insn_referenced = abuf->written;
1370 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1371 1.1 christos }
1372 1.1 christos return cycles;
1373 1.1 christos #undef FLD
1374 1.1 christos }
1375 1.1 christos
1376 1.1 christos static int
1377 1.1 christos model_crisv10_addcwr (SIM_CPU *current_cpu, void *sem_arg)
1378 1.1 christos {
1379 1.1 christos #define FLD(f) abuf->fields.sfmt_addcwr.f
1380 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1381 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1382 1.1 christos int cycles = 0;
1383 1.1 christos {
1384 1.1 christos int referenced = 0;
1385 1.1 christos int UNUSED insn_referenced = abuf->written;
1386 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
1387 1.1 christos }
1388 1.1 christos {
1389 1.1 christos int referenced = 0;
1390 1.1 christos int UNUSED insn_referenced = abuf->written;
1391 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1392 1.1 christos }
1393 1.1 christos return cycles;
1394 1.1 christos #undef FLD
1395 1.1 christos }
1396 1.1 christos
1397 1.1 christos static int
1398 1.1 christos model_crisv10_addcdr (SIM_CPU *current_cpu, void *sem_arg)
1399 1.1 christos {
1400 1.1 christos #define FLD(f) abuf->fields.sfmt_addcdr.f
1401 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1402 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1403 1.1 christos int cycles = 0;
1404 1.1 christos {
1405 1.1 christos int referenced = 0;
1406 1.1 christos int UNUSED insn_referenced = abuf->written;
1407 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
1408 1.1 christos }
1409 1.1 christos {
1410 1.1 christos int referenced = 0;
1411 1.1 christos int UNUSED insn_referenced = abuf->written;
1412 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1413 1.1 christos }
1414 1.1 christos return cycles;
1415 1.1 christos #undef FLD
1416 1.1 christos }
1417 1.1 christos
1418 1.1 christos static int
1419 1.1 christos model_crisv10_addcpc (SIM_CPU *current_cpu, void *sem_arg)
1420 1.1 christos {
1421 1.1 christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
1422 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1423 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1424 1.1 christos int cycles = 0;
1425 1.1 christos {
1426 1.1 christos int referenced = 0;
1427 1.1 christos int UNUSED insn_referenced = abuf->written;
1428 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
1429 1.1 christos }
1430 1.1 christos {
1431 1.1 christos int referenced = 0;
1432 1.1 christos int UNUSED insn_referenced = abuf->written;
1433 1.1 christos cycles += crisv10f_model_crisv10_u_stall (current_cpu, idesc, 1, referenced);
1434 1.1 christos }
1435 1.1 christos {
1436 1.1 christos int referenced = 0;
1437 1.1 christos int UNUSED insn_referenced = abuf->written;
1438 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 2, referenced);
1439 1.1 christos }
1440 1.1 christos return cycles;
1441 1.1 christos #undef FLD
1442 1.1 christos }
1443 1.1 christos
1444 1.1 christos static int
1445 1.1 christos model_crisv10_adds_b_r (SIM_CPU *current_cpu, void *sem_arg)
1446 1.1 christos {
1447 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
1448 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1449 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1450 1.1 christos int cycles = 0;
1451 1.1 christos {
1452 1.1 christos int referenced = 0;
1453 1.1 christos int UNUSED insn_referenced = abuf->written;
1454 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
1455 1.1 christos }
1456 1.1 christos return cycles;
1457 1.1 christos #undef FLD
1458 1.1 christos }
1459 1.1 christos
1460 1.1 christos static int
1461 1.1 christos model_crisv10_adds_w_r (SIM_CPU *current_cpu, void *sem_arg)
1462 1.1 christos {
1463 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
1464 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1465 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1466 1.1 christos int cycles = 0;
1467 1.1 christos {
1468 1.1 christos int referenced = 0;
1469 1.1 christos int UNUSED insn_referenced = abuf->written;
1470 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
1471 1.1 christos }
1472 1.1 christos return cycles;
1473 1.1 christos #undef FLD
1474 1.1 christos }
1475 1.1 christos
1476 1.1 christos static int
1477 1.1 christos model_crisv10_adds_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
1478 1.1 christos {
1479 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1480 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1481 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1482 1.1 christos int cycles = 0;
1483 1.1 christos {
1484 1.1 christos int referenced = 0;
1485 1.1 christos int UNUSED insn_referenced = abuf->written;
1486 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
1487 1.1 christos }
1488 1.1 christos {
1489 1.1 christos int referenced = 0;
1490 1.1 christos int UNUSED insn_referenced = abuf->written;
1491 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1492 1.1 christos }
1493 1.1 christos return cycles;
1494 1.1 christos #undef FLD
1495 1.1 christos }
1496 1.1 christos
1497 1.1 christos static int
1498 1.1 christos model_crisv10_adds_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
1499 1.1 christos {
1500 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1501 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1502 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1503 1.1 christos int cycles = 0;
1504 1.1 christos {
1505 1.1 christos int referenced = 0;
1506 1.1 christos int UNUSED insn_referenced = abuf->written;
1507 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
1508 1.1 christos }
1509 1.1 christos {
1510 1.1 christos int referenced = 0;
1511 1.1 christos int UNUSED insn_referenced = abuf->written;
1512 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1513 1.1 christos }
1514 1.1 christos return cycles;
1515 1.1 christos #undef FLD
1516 1.1 christos }
1517 1.1 christos
1518 1.1 christos static int
1519 1.1 christos model_crisv10_addscbr (SIM_CPU *current_cpu, void *sem_arg)
1520 1.1 christos {
1521 1.1 christos #define FLD(f) abuf->fields.sfmt_addcbr.f
1522 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1523 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1524 1.1 christos int cycles = 0;
1525 1.1 christos {
1526 1.1 christos int referenced = 0;
1527 1.1 christos int UNUSED insn_referenced = abuf->written;
1528 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
1529 1.1 christos }
1530 1.1 christos {
1531 1.1 christos int referenced = 0;
1532 1.1 christos int UNUSED insn_referenced = abuf->written;
1533 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1534 1.1 christos }
1535 1.1 christos return cycles;
1536 1.1 christos #undef FLD
1537 1.1 christos }
1538 1.1 christos
1539 1.1 christos static int
1540 1.1 christos model_crisv10_addscwr (SIM_CPU *current_cpu, void *sem_arg)
1541 1.1 christos {
1542 1.1 christos #define FLD(f) abuf->fields.sfmt_addcwr.f
1543 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1544 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1545 1.1 christos int cycles = 0;
1546 1.1 christos {
1547 1.1 christos int referenced = 0;
1548 1.1 christos int UNUSED insn_referenced = abuf->written;
1549 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
1550 1.1 christos }
1551 1.1 christos {
1552 1.1 christos int referenced = 0;
1553 1.1 christos int UNUSED insn_referenced = abuf->written;
1554 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1555 1.1 christos }
1556 1.1 christos return cycles;
1557 1.1 christos #undef FLD
1558 1.1 christos }
1559 1.1 christos
1560 1.1 christos static int
1561 1.1 christos model_crisv10_addspcpc (SIM_CPU *current_cpu, void *sem_arg)
1562 1.1 christos {
1563 1.1 christos #define FLD(f) abuf->fields.sfmt_empty.f
1564 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1565 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1566 1.1 christos int cycles = 0;
1567 1.1 christos {
1568 1.1 christos int referenced = 0;
1569 1.1 christos int UNUSED insn_referenced = abuf->written;
1570 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
1571 1.1 christos }
1572 1.1 christos {
1573 1.1 christos int referenced = 0;
1574 1.1 christos int UNUSED insn_referenced = abuf->written;
1575 1.1 christos cycles += crisv10f_model_crisv10_u_stall (current_cpu, idesc, 1, referenced);
1576 1.1 christos }
1577 1.1 christos {
1578 1.1 christos int referenced = 0;
1579 1.1 christos int UNUSED insn_referenced = abuf->written;
1580 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 2, referenced);
1581 1.1 christos }
1582 1.1 christos return cycles;
1583 1.1 christos #undef FLD
1584 1.1 christos }
1585 1.1 christos
1586 1.1 christos static int
1587 1.1 christos model_crisv10_addu_b_r (SIM_CPU *current_cpu, void *sem_arg)
1588 1.1 christos {
1589 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
1590 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1591 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1592 1.1 christos int cycles = 0;
1593 1.1 christos {
1594 1.1 christos int referenced = 0;
1595 1.1 christos int UNUSED insn_referenced = abuf->written;
1596 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
1597 1.1 christos }
1598 1.1 christos return cycles;
1599 1.1 christos #undef FLD
1600 1.1 christos }
1601 1.1 christos
1602 1.1 christos static int
1603 1.1 christos model_crisv10_addu_w_r (SIM_CPU *current_cpu, void *sem_arg)
1604 1.1 christos {
1605 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
1606 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1607 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1608 1.1 christos int cycles = 0;
1609 1.1 christos {
1610 1.1 christos int referenced = 0;
1611 1.1 christos int UNUSED insn_referenced = abuf->written;
1612 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
1613 1.1 christos }
1614 1.1 christos return cycles;
1615 1.1 christos #undef FLD
1616 1.1 christos }
1617 1.1 christos
1618 1.1 christos static int
1619 1.1 christos model_crisv10_addu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
1620 1.1 christos {
1621 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1622 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1623 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1624 1.1 christos int cycles = 0;
1625 1.1 christos {
1626 1.1 christos int referenced = 0;
1627 1.1 christos int UNUSED insn_referenced = abuf->written;
1628 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
1629 1.1 christos }
1630 1.1 christos {
1631 1.1 christos int referenced = 0;
1632 1.1 christos int UNUSED insn_referenced = abuf->written;
1633 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1634 1.1 christos }
1635 1.1 christos return cycles;
1636 1.1 christos #undef FLD
1637 1.1 christos }
1638 1.1 christos
1639 1.1 christos static int
1640 1.1 christos model_crisv10_addu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
1641 1.1 christos {
1642 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1643 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1644 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1645 1.1 christos int cycles = 0;
1646 1.1 christos {
1647 1.1 christos int referenced = 0;
1648 1.1 christos int UNUSED insn_referenced = abuf->written;
1649 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
1650 1.1 christos }
1651 1.1 christos {
1652 1.1 christos int referenced = 0;
1653 1.1 christos int UNUSED insn_referenced = abuf->written;
1654 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1655 1.1 christos }
1656 1.1 christos return cycles;
1657 1.1 christos #undef FLD
1658 1.1 christos }
1659 1.1 christos
1660 1.1 christos static int
1661 1.1 christos model_crisv10_adducbr (SIM_CPU *current_cpu, void *sem_arg)
1662 1.1 christos {
1663 1.1 christos #define FLD(f) abuf->fields.sfmt_addcbr.f
1664 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1665 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1666 1.1 christos int cycles = 0;
1667 1.1 christos {
1668 1.1 christos int referenced = 0;
1669 1.1 christos int UNUSED insn_referenced = abuf->written;
1670 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
1671 1.1 christos }
1672 1.1 christos {
1673 1.1 christos int referenced = 0;
1674 1.1 christos int UNUSED insn_referenced = abuf->written;
1675 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1676 1.1 christos }
1677 1.1 christos return cycles;
1678 1.1 christos #undef FLD
1679 1.1 christos }
1680 1.1 christos
1681 1.1 christos static int
1682 1.1 christos model_crisv10_adducwr (SIM_CPU *current_cpu, void *sem_arg)
1683 1.1 christos {
1684 1.1 christos #define FLD(f) abuf->fields.sfmt_addcwr.f
1685 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1686 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1687 1.1 christos int cycles = 0;
1688 1.1 christos {
1689 1.1 christos int referenced = 0;
1690 1.1 christos int UNUSED insn_referenced = abuf->written;
1691 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
1692 1.1 christos }
1693 1.1 christos {
1694 1.1 christos int referenced = 0;
1695 1.1 christos int UNUSED insn_referenced = abuf->written;
1696 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1697 1.1 christos }
1698 1.1 christos return cycles;
1699 1.1 christos #undef FLD
1700 1.1 christos }
1701 1.1 christos
1702 1.1 christos static int
1703 1.1 christos model_crisv10_sub_b_r (SIM_CPU *current_cpu, void *sem_arg)
1704 1.1 christos {
1705 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
1706 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1707 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1708 1.1 christos int cycles = 0;
1709 1.1 christos {
1710 1.1 christos int referenced = 0;
1711 1.1 christos int UNUSED insn_referenced = abuf->written;
1712 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
1713 1.1 christos }
1714 1.1 christos return cycles;
1715 1.1 christos #undef FLD
1716 1.1 christos }
1717 1.1 christos
1718 1.1 christos static int
1719 1.1 christos model_crisv10_sub_w_r (SIM_CPU *current_cpu, void *sem_arg)
1720 1.1 christos {
1721 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
1722 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1723 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1724 1.1 christos int cycles = 0;
1725 1.1 christos {
1726 1.1 christos int referenced = 0;
1727 1.1 christos int UNUSED insn_referenced = abuf->written;
1728 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
1729 1.1 christos }
1730 1.1 christos return cycles;
1731 1.1 christos #undef FLD
1732 1.1 christos }
1733 1.1 christos
1734 1.1 christos static int
1735 1.1 christos model_crisv10_sub_d_r (SIM_CPU *current_cpu, void *sem_arg)
1736 1.1 christos {
1737 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
1738 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1739 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1740 1.1 christos int cycles = 0;
1741 1.1 christos {
1742 1.1 christos int referenced = 0;
1743 1.1 christos int UNUSED insn_referenced = abuf->written;
1744 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
1745 1.1 christos }
1746 1.1 christos return cycles;
1747 1.1 christos #undef FLD
1748 1.1 christos }
1749 1.1 christos
1750 1.1 christos static int
1751 1.1 christos model_crisv10_sub_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
1752 1.1 christos {
1753 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1754 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1755 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1756 1.1 christos int cycles = 0;
1757 1.1 christos {
1758 1.1 christos int referenced = 0;
1759 1.1 christos int UNUSED insn_referenced = abuf->written;
1760 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
1761 1.1 christos }
1762 1.1 christos {
1763 1.1 christos int referenced = 0;
1764 1.1 christos int UNUSED insn_referenced = abuf->written;
1765 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1766 1.1 christos }
1767 1.1 christos return cycles;
1768 1.1 christos #undef FLD
1769 1.1 christos }
1770 1.1 christos
1771 1.1 christos static int
1772 1.1 christos model_crisv10_sub_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
1773 1.1 christos {
1774 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1775 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1776 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1777 1.1 christos int cycles = 0;
1778 1.1 christos {
1779 1.1 christos int referenced = 0;
1780 1.1 christos int UNUSED insn_referenced = abuf->written;
1781 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
1782 1.1 christos }
1783 1.1 christos {
1784 1.1 christos int referenced = 0;
1785 1.1 christos int UNUSED insn_referenced = abuf->written;
1786 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1787 1.1 christos }
1788 1.1 christos return cycles;
1789 1.1 christos #undef FLD
1790 1.1 christos }
1791 1.1 christos
1792 1.1 christos static int
1793 1.1 christos model_crisv10_sub_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
1794 1.1 christos {
1795 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1796 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1797 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1798 1.1 christos int cycles = 0;
1799 1.1 christos {
1800 1.1 christos int referenced = 0;
1801 1.1 christos int UNUSED insn_referenced = abuf->written;
1802 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
1803 1.1 christos }
1804 1.1 christos {
1805 1.1 christos int referenced = 0;
1806 1.1 christos int UNUSED insn_referenced = abuf->written;
1807 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1808 1.1 christos }
1809 1.1 christos return cycles;
1810 1.1 christos #undef FLD
1811 1.1 christos }
1812 1.1 christos
1813 1.1 christos static int
1814 1.1 christos model_crisv10_subcbr (SIM_CPU *current_cpu, void *sem_arg)
1815 1.1 christos {
1816 1.1 christos #define FLD(f) abuf->fields.sfmt_addcbr.f
1817 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1818 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1819 1.1 christos int cycles = 0;
1820 1.1 christos {
1821 1.1 christos int referenced = 0;
1822 1.1 christos int UNUSED insn_referenced = abuf->written;
1823 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
1824 1.1 christos }
1825 1.1 christos {
1826 1.1 christos int referenced = 0;
1827 1.1 christos int UNUSED insn_referenced = abuf->written;
1828 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1829 1.1 christos }
1830 1.1 christos return cycles;
1831 1.1 christos #undef FLD
1832 1.1 christos }
1833 1.1 christos
1834 1.1 christos static int
1835 1.1 christos model_crisv10_subcwr (SIM_CPU *current_cpu, void *sem_arg)
1836 1.1 christos {
1837 1.1 christos #define FLD(f) abuf->fields.sfmt_addcwr.f
1838 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1839 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1840 1.1 christos int cycles = 0;
1841 1.1 christos {
1842 1.1 christos int referenced = 0;
1843 1.1 christos int UNUSED insn_referenced = abuf->written;
1844 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
1845 1.1 christos }
1846 1.1 christos {
1847 1.1 christos int referenced = 0;
1848 1.1 christos int UNUSED insn_referenced = abuf->written;
1849 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1850 1.1 christos }
1851 1.1 christos return cycles;
1852 1.1 christos #undef FLD
1853 1.1 christos }
1854 1.1 christos
1855 1.1 christos static int
1856 1.1 christos model_crisv10_subcdr (SIM_CPU *current_cpu, void *sem_arg)
1857 1.1 christos {
1858 1.1 christos #define FLD(f) abuf->fields.sfmt_addcdr.f
1859 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1860 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1861 1.1 christos int cycles = 0;
1862 1.1 christos {
1863 1.1 christos int referenced = 0;
1864 1.1 christos int UNUSED insn_referenced = abuf->written;
1865 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
1866 1.1 christos }
1867 1.1 christos {
1868 1.1 christos int referenced = 0;
1869 1.1 christos int UNUSED insn_referenced = abuf->written;
1870 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1871 1.1 christos }
1872 1.1 christos return cycles;
1873 1.1 christos #undef FLD
1874 1.1 christos }
1875 1.1 christos
1876 1.1 christos static int
1877 1.1 christos model_crisv10_subs_b_r (SIM_CPU *current_cpu, void *sem_arg)
1878 1.1 christos {
1879 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
1880 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1881 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1882 1.1 christos int cycles = 0;
1883 1.1 christos {
1884 1.1 christos int referenced = 0;
1885 1.1 christos int UNUSED insn_referenced = abuf->written;
1886 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
1887 1.1 christos }
1888 1.1 christos return cycles;
1889 1.1 christos #undef FLD
1890 1.1 christos }
1891 1.1 christos
1892 1.1 christos static int
1893 1.1 christos model_crisv10_subs_w_r (SIM_CPU *current_cpu, void *sem_arg)
1894 1.1 christos {
1895 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
1896 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1897 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1898 1.1 christos int cycles = 0;
1899 1.1 christos {
1900 1.1 christos int referenced = 0;
1901 1.1 christos int UNUSED insn_referenced = abuf->written;
1902 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
1903 1.1 christos }
1904 1.1 christos return cycles;
1905 1.1 christos #undef FLD
1906 1.1 christos }
1907 1.1 christos
1908 1.1 christos static int
1909 1.1 christos model_crisv10_subs_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
1910 1.1 christos {
1911 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1912 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1913 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1914 1.1 christos int cycles = 0;
1915 1.1 christos {
1916 1.1 christos int referenced = 0;
1917 1.1 christos int UNUSED insn_referenced = abuf->written;
1918 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
1919 1.1 christos }
1920 1.1 christos {
1921 1.1 christos int referenced = 0;
1922 1.1 christos int UNUSED insn_referenced = abuf->written;
1923 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1924 1.1 christos }
1925 1.1 christos return cycles;
1926 1.1 christos #undef FLD
1927 1.1 christos }
1928 1.1 christos
1929 1.1 christos static int
1930 1.1 christos model_crisv10_subs_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
1931 1.1 christos {
1932 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1933 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1934 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1935 1.1 christos int cycles = 0;
1936 1.1 christos {
1937 1.1 christos int referenced = 0;
1938 1.1 christos int UNUSED insn_referenced = abuf->written;
1939 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
1940 1.1 christos }
1941 1.1 christos {
1942 1.1 christos int referenced = 0;
1943 1.1 christos int UNUSED insn_referenced = abuf->written;
1944 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1945 1.1 christos }
1946 1.1 christos return cycles;
1947 1.1 christos #undef FLD
1948 1.1 christos }
1949 1.1 christos
1950 1.1 christos static int
1951 1.1 christos model_crisv10_subscbr (SIM_CPU *current_cpu, void *sem_arg)
1952 1.1 christos {
1953 1.1 christos #define FLD(f) abuf->fields.sfmt_addcbr.f
1954 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1955 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1956 1.1 christos int cycles = 0;
1957 1.1 christos {
1958 1.1 christos int referenced = 0;
1959 1.1 christos int UNUSED insn_referenced = abuf->written;
1960 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
1961 1.1 christos }
1962 1.1 christos {
1963 1.1 christos int referenced = 0;
1964 1.1 christos int UNUSED insn_referenced = abuf->written;
1965 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1966 1.1 christos }
1967 1.1 christos return cycles;
1968 1.1 christos #undef FLD
1969 1.1 christos }
1970 1.1 christos
1971 1.1 christos static int
1972 1.1 christos model_crisv10_subscwr (SIM_CPU *current_cpu, void *sem_arg)
1973 1.1 christos {
1974 1.1 christos #define FLD(f) abuf->fields.sfmt_addcwr.f
1975 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1976 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1977 1.1 christos int cycles = 0;
1978 1.1 christos {
1979 1.1 christos int referenced = 0;
1980 1.1 christos int UNUSED insn_referenced = abuf->written;
1981 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
1982 1.1 christos }
1983 1.1 christos {
1984 1.1 christos int referenced = 0;
1985 1.1 christos int UNUSED insn_referenced = abuf->written;
1986 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
1987 1.1 christos }
1988 1.1 christos return cycles;
1989 1.1 christos #undef FLD
1990 1.1 christos }
1991 1.1 christos
1992 1.1 christos static int
1993 1.1 christos model_crisv10_subu_b_r (SIM_CPU *current_cpu, void *sem_arg)
1994 1.1 christos {
1995 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
1996 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1997 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1998 1.1 christos int cycles = 0;
1999 1.1 christos {
2000 1.1 christos int referenced = 0;
2001 1.1 christos int UNUSED insn_referenced = abuf->written;
2002 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2003 1.1 christos }
2004 1.1 christos return cycles;
2005 1.1 christos #undef FLD
2006 1.1 christos }
2007 1.1 christos
2008 1.1 christos static int
2009 1.1 christos model_crisv10_subu_w_r (SIM_CPU *current_cpu, void *sem_arg)
2010 1.1 christos {
2011 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
2012 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2013 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2014 1.1 christos int cycles = 0;
2015 1.1 christos {
2016 1.1 christos int referenced = 0;
2017 1.1 christos int UNUSED insn_referenced = abuf->written;
2018 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2019 1.1 christos }
2020 1.1 christos return cycles;
2021 1.1 christos #undef FLD
2022 1.1 christos }
2023 1.1 christos
2024 1.1 christos static int
2025 1.1 christos model_crisv10_subu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
2026 1.1 christos {
2027 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2028 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2029 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2030 1.1 christos int cycles = 0;
2031 1.1 christos {
2032 1.1 christos int referenced = 0;
2033 1.1 christos int UNUSED insn_referenced = abuf->written;
2034 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
2035 1.1 christos }
2036 1.1 christos {
2037 1.1 christos int referenced = 0;
2038 1.1 christos int UNUSED insn_referenced = abuf->written;
2039 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2040 1.1 christos }
2041 1.1 christos return cycles;
2042 1.1 christos #undef FLD
2043 1.1 christos }
2044 1.1 christos
2045 1.1 christos static int
2046 1.1 christos model_crisv10_subu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
2047 1.1 christos {
2048 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2049 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2050 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2051 1.1 christos int cycles = 0;
2052 1.1 christos {
2053 1.1 christos int referenced = 0;
2054 1.1 christos int UNUSED insn_referenced = abuf->written;
2055 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
2056 1.1 christos }
2057 1.1 christos {
2058 1.1 christos int referenced = 0;
2059 1.1 christos int UNUSED insn_referenced = abuf->written;
2060 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2061 1.1 christos }
2062 1.1 christos return cycles;
2063 1.1 christos #undef FLD
2064 1.1 christos }
2065 1.1 christos
2066 1.1 christos static int
2067 1.1 christos model_crisv10_subucbr (SIM_CPU *current_cpu, void *sem_arg)
2068 1.1 christos {
2069 1.1 christos #define FLD(f) abuf->fields.sfmt_addcbr.f
2070 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2071 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2072 1.1 christos int cycles = 0;
2073 1.1 christos {
2074 1.1 christos int referenced = 0;
2075 1.1 christos int UNUSED insn_referenced = abuf->written;
2076 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
2077 1.1 christos }
2078 1.1 christos {
2079 1.1 christos int referenced = 0;
2080 1.1 christos int UNUSED insn_referenced = abuf->written;
2081 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2082 1.1 christos }
2083 1.1 christos return cycles;
2084 1.1 christos #undef FLD
2085 1.1 christos }
2086 1.1 christos
2087 1.1 christos static int
2088 1.1 christos model_crisv10_subucwr (SIM_CPU *current_cpu, void *sem_arg)
2089 1.1 christos {
2090 1.1 christos #define FLD(f) abuf->fields.sfmt_addcwr.f
2091 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2092 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2093 1.1 christos int cycles = 0;
2094 1.1 christos {
2095 1.1 christos int referenced = 0;
2096 1.1 christos int UNUSED insn_referenced = abuf->written;
2097 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
2098 1.1 christos }
2099 1.1 christos {
2100 1.1 christos int referenced = 0;
2101 1.1 christos int UNUSED insn_referenced = abuf->written;
2102 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2103 1.1 christos }
2104 1.1 christos return cycles;
2105 1.1 christos #undef FLD
2106 1.1 christos }
2107 1.1 christos
2108 1.1 christos static int
2109 1.1 christos model_crisv10_addi_b_r (SIM_CPU *current_cpu, void *sem_arg)
2110 1.1 christos {
2111 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2112 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2113 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2114 1.1 christos int cycles = 0;
2115 1.1 christos {
2116 1.1 christos int referenced = 0;
2117 1.1 christos int UNUSED insn_referenced = abuf->written;
2118 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2119 1.1 christos }
2120 1.1 christos return cycles;
2121 1.1 christos #undef FLD
2122 1.1 christos }
2123 1.1 christos
2124 1.1 christos static int
2125 1.1 christos model_crisv10_addi_w_r (SIM_CPU *current_cpu, void *sem_arg)
2126 1.1 christos {
2127 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2128 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2129 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2130 1.1 christos int cycles = 0;
2131 1.1 christos {
2132 1.1 christos int referenced = 0;
2133 1.1 christos int UNUSED insn_referenced = abuf->written;
2134 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2135 1.1 christos }
2136 1.1 christos return cycles;
2137 1.1 christos #undef FLD
2138 1.1 christos }
2139 1.1 christos
2140 1.1 christos static int
2141 1.1 christos model_crisv10_addi_d_r (SIM_CPU *current_cpu, void *sem_arg)
2142 1.1 christos {
2143 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2144 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2145 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2146 1.1 christos int cycles = 0;
2147 1.1 christos {
2148 1.1 christos int referenced = 0;
2149 1.1 christos int UNUSED insn_referenced = abuf->written;
2150 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2151 1.1 christos }
2152 1.1 christos return cycles;
2153 1.1 christos #undef FLD
2154 1.1 christos }
2155 1.1 christos
2156 1.1 christos static int
2157 1.1 christos model_crisv10_neg_b_r (SIM_CPU *current_cpu, void *sem_arg)
2158 1.1 christos {
2159 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
2160 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2161 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2162 1.1 christos int cycles = 0;
2163 1.1 christos {
2164 1.1 christos int referenced = 0;
2165 1.1 christos int UNUSED insn_referenced = abuf->written;
2166 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2167 1.1 christos }
2168 1.1 christos return cycles;
2169 1.1 christos #undef FLD
2170 1.1 christos }
2171 1.1 christos
2172 1.1 christos static int
2173 1.1 christos model_crisv10_neg_w_r (SIM_CPU *current_cpu, void *sem_arg)
2174 1.1 christos {
2175 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
2176 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2177 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2178 1.1 christos int cycles = 0;
2179 1.1 christos {
2180 1.1 christos int referenced = 0;
2181 1.1 christos int UNUSED insn_referenced = abuf->written;
2182 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2183 1.1 christos }
2184 1.1 christos return cycles;
2185 1.1 christos #undef FLD
2186 1.1 christos }
2187 1.1 christos
2188 1.1 christos static int
2189 1.1 christos model_crisv10_neg_d_r (SIM_CPU *current_cpu, void *sem_arg)
2190 1.1 christos {
2191 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
2192 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2193 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2194 1.1 christos int cycles = 0;
2195 1.1 christos {
2196 1.1 christos int referenced = 0;
2197 1.1 christos int UNUSED insn_referenced = abuf->written;
2198 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2199 1.1 christos }
2200 1.1 christos return cycles;
2201 1.1 christos #undef FLD
2202 1.1 christos }
2203 1.1 christos
2204 1.1 christos static int
2205 1.1 christos model_crisv10_test_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
2206 1.1 christos {
2207 1.1 christos #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
2208 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2209 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2210 1.1 christos int cycles = 0;
2211 1.1 christos {
2212 1.1 christos int referenced = 0;
2213 1.1 christos int UNUSED insn_referenced = abuf->written;
2214 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
2215 1.1 christos }
2216 1.1 christos {
2217 1.1 christos int referenced = 0;
2218 1.1 christos int UNUSED insn_referenced = abuf->written;
2219 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2220 1.1 christos }
2221 1.1 christos return cycles;
2222 1.1 christos #undef FLD
2223 1.1 christos }
2224 1.1 christos
2225 1.1 christos static int
2226 1.1 christos model_crisv10_test_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
2227 1.1 christos {
2228 1.1 christos #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
2229 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2230 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2231 1.1 christos int cycles = 0;
2232 1.1 christos {
2233 1.1 christos int referenced = 0;
2234 1.1 christos int UNUSED insn_referenced = abuf->written;
2235 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
2236 1.1 christos }
2237 1.1 christos {
2238 1.1 christos int referenced = 0;
2239 1.1 christos int UNUSED insn_referenced = abuf->written;
2240 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2241 1.1 christos }
2242 1.1 christos return cycles;
2243 1.1 christos #undef FLD
2244 1.1 christos }
2245 1.1 christos
2246 1.1 christos static int
2247 1.1 christos model_crisv10_test_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
2248 1.1 christos {
2249 1.1 christos #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
2250 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2251 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2252 1.1 christos int cycles = 0;
2253 1.1 christos {
2254 1.1 christos int referenced = 0;
2255 1.1 christos int UNUSED insn_referenced = abuf->written;
2256 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
2257 1.1 christos }
2258 1.1 christos {
2259 1.1 christos int referenced = 0;
2260 1.1 christos int UNUSED insn_referenced = abuf->written;
2261 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2262 1.1 christos }
2263 1.1 christos return cycles;
2264 1.1 christos #undef FLD
2265 1.1 christos }
2266 1.1 christos
2267 1.1 christos static int
2268 1.1 christos model_crisv10_move_r_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
2269 1.1 christos {
2270 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2271 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2272 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2273 1.1 christos int cycles = 0;
2274 1.1 christos {
2275 1.1 christos int referenced = 0;
2276 1.1 christos int UNUSED insn_referenced = abuf->written;
2277 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
2278 1.1 christos }
2279 1.1 christos {
2280 1.1 christos int referenced = 0;
2281 1.1 christos int UNUSED insn_referenced = abuf->written;
2282 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2283 1.1 christos }
2284 1.1 christos return cycles;
2285 1.1 christos #undef FLD
2286 1.1 christos }
2287 1.1 christos
2288 1.1 christos static int
2289 1.1 christos model_crisv10_move_r_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
2290 1.1 christos {
2291 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2292 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2293 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2294 1.1 christos int cycles = 0;
2295 1.1 christos {
2296 1.1 christos int referenced = 0;
2297 1.1 christos int UNUSED insn_referenced = abuf->written;
2298 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
2299 1.1 christos }
2300 1.1 christos {
2301 1.1 christos int referenced = 0;
2302 1.1 christos int UNUSED insn_referenced = abuf->written;
2303 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2304 1.1 christos }
2305 1.1 christos return cycles;
2306 1.1 christos #undef FLD
2307 1.1 christos }
2308 1.1 christos
2309 1.1 christos static int
2310 1.1 christos model_crisv10_move_r_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
2311 1.1 christos {
2312 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2313 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2314 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2315 1.1 christos int cycles = 0;
2316 1.1 christos {
2317 1.1 christos int referenced = 0;
2318 1.1 christos int UNUSED insn_referenced = abuf->written;
2319 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
2320 1.1 christos }
2321 1.1 christos {
2322 1.1 christos int referenced = 0;
2323 1.1 christos int UNUSED insn_referenced = abuf->written;
2324 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2325 1.1 christos }
2326 1.1 christos return cycles;
2327 1.1 christos #undef FLD
2328 1.1 christos }
2329 1.1 christos
2330 1.1 christos static int
2331 1.1 christos model_crisv10_muls_b (SIM_CPU *current_cpu, void *sem_arg)
2332 1.1 christos {
2333 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
2334 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2335 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2336 1.1 christos int cycles = 0;
2337 1.1 christos {
2338 1.1 christos int referenced = 0;
2339 1.1 christos int UNUSED insn_referenced = abuf->written;
2340 1.1 christos cycles += crisv10f_model_crisv10_u_multiply (current_cpu, idesc, 0, referenced);
2341 1.1 christos }
2342 1.1 christos {
2343 1.1 christos int referenced = 0;
2344 1.1 christos int UNUSED insn_referenced = abuf->written;
2345 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2346 1.1 christos }
2347 1.1 christos return cycles;
2348 1.1 christos #undef FLD
2349 1.1 christos }
2350 1.1 christos
2351 1.1 christos static int
2352 1.1 christos model_crisv10_muls_w (SIM_CPU *current_cpu, void *sem_arg)
2353 1.1 christos {
2354 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
2355 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2356 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2357 1.1 christos int cycles = 0;
2358 1.1 christos {
2359 1.1 christos int referenced = 0;
2360 1.1 christos int UNUSED insn_referenced = abuf->written;
2361 1.1 christos cycles += crisv10f_model_crisv10_u_multiply (current_cpu, idesc, 0, referenced);
2362 1.1 christos }
2363 1.1 christos {
2364 1.1 christos int referenced = 0;
2365 1.1 christos int UNUSED insn_referenced = abuf->written;
2366 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2367 1.1 christos }
2368 1.1 christos return cycles;
2369 1.1 christos #undef FLD
2370 1.1 christos }
2371 1.1 christos
2372 1.1 christos static int
2373 1.1 christos model_crisv10_muls_d (SIM_CPU *current_cpu, void *sem_arg)
2374 1.1 christos {
2375 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
2376 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2377 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2378 1.1 christos int cycles = 0;
2379 1.1 christos {
2380 1.1 christos int referenced = 0;
2381 1.1 christos int UNUSED insn_referenced = abuf->written;
2382 1.1 christos cycles += crisv10f_model_crisv10_u_multiply (current_cpu, idesc, 0, referenced);
2383 1.1 christos }
2384 1.1 christos {
2385 1.1 christos int referenced = 0;
2386 1.1 christos int UNUSED insn_referenced = abuf->written;
2387 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2388 1.1 christos }
2389 1.1 christos return cycles;
2390 1.1 christos #undef FLD
2391 1.1 christos }
2392 1.1 christos
2393 1.1 christos static int
2394 1.1 christos model_crisv10_mulu_b (SIM_CPU *current_cpu, void *sem_arg)
2395 1.1 christos {
2396 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
2397 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2398 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2399 1.1 christos int cycles = 0;
2400 1.1 christos {
2401 1.1 christos int referenced = 0;
2402 1.1 christos int UNUSED insn_referenced = abuf->written;
2403 1.1 christos cycles += crisv10f_model_crisv10_u_multiply (current_cpu, idesc, 0, referenced);
2404 1.1 christos }
2405 1.1 christos {
2406 1.1 christos int referenced = 0;
2407 1.1 christos int UNUSED insn_referenced = abuf->written;
2408 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2409 1.1 christos }
2410 1.1 christos return cycles;
2411 1.1 christos #undef FLD
2412 1.1 christos }
2413 1.1 christos
2414 1.1 christos static int
2415 1.1 christos model_crisv10_mulu_w (SIM_CPU *current_cpu, void *sem_arg)
2416 1.1 christos {
2417 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
2418 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2419 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2420 1.1 christos int cycles = 0;
2421 1.1 christos {
2422 1.1 christos int referenced = 0;
2423 1.1 christos int UNUSED insn_referenced = abuf->written;
2424 1.1 christos cycles += crisv10f_model_crisv10_u_multiply (current_cpu, idesc, 0, referenced);
2425 1.1 christos }
2426 1.1 christos {
2427 1.1 christos int referenced = 0;
2428 1.1 christos int UNUSED insn_referenced = abuf->written;
2429 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2430 1.1 christos }
2431 1.1 christos return cycles;
2432 1.1 christos #undef FLD
2433 1.1 christos }
2434 1.1 christos
2435 1.1 christos static int
2436 1.1 christos model_crisv10_mulu_d (SIM_CPU *current_cpu, void *sem_arg)
2437 1.1 christos {
2438 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
2439 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2440 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2441 1.1 christos int cycles = 0;
2442 1.1 christos {
2443 1.1 christos int referenced = 0;
2444 1.1 christos int UNUSED insn_referenced = abuf->written;
2445 1.1 christos cycles += crisv10f_model_crisv10_u_multiply (current_cpu, idesc, 0, referenced);
2446 1.1 christos }
2447 1.1 christos {
2448 1.1 christos int referenced = 0;
2449 1.1 christos int UNUSED insn_referenced = abuf->written;
2450 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2451 1.1 christos }
2452 1.1 christos return cycles;
2453 1.1 christos #undef FLD
2454 1.1 christos }
2455 1.1 christos
2456 1.1 christos static int
2457 1.1 christos model_crisv10_mstep (SIM_CPU *current_cpu, void *sem_arg)
2458 1.1 christos {
2459 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
2460 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2461 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2462 1.1 christos int cycles = 0;
2463 1.1 christos {
2464 1.1 christos int referenced = 0;
2465 1.1 christos int UNUSED insn_referenced = abuf->written;
2466 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2467 1.1 christos }
2468 1.1 christos return cycles;
2469 1.1 christos #undef FLD
2470 1.1 christos }
2471 1.1 christos
2472 1.1 christos static int
2473 1.1 christos model_crisv10_dstep (SIM_CPU *current_cpu, void *sem_arg)
2474 1.1 christos {
2475 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
2476 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2477 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2478 1.1 christos int cycles = 0;
2479 1.1 christos {
2480 1.1 christos int referenced = 0;
2481 1.1 christos int UNUSED insn_referenced = abuf->written;
2482 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2483 1.1 christos }
2484 1.1 christos return cycles;
2485 1.1 christos #undef FLD
2486 1.1 christos }
2487 1.1 christos
2488 1.1 christos static int
2489 1.1 christos model_crisv10_abs (SIM_CPU *current_cpu, void *sem_arg)
2490 1.1 christos {
2491 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
2492 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2493 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2494 1.1 christos int cycles = 0;
2495 1.1 christos {
2496 1.1 christos int referenced = 0;
2497 1.1 christos int UNUSED insn_referenced = abuf->written;
2498 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2499 1.1 christos }
2500 1.1 christos return cycles;
2501 1.1 christos #undef FLD
2502 1.1 christos }
2503 1.1 christos
2504 1.1 christos static int
2505 1.1 christos model_crisv10_and_b_r (SIM_CPU *current_cpu, void *sem_arg)
2506 1.1 christos {
2507 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
2508 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2509 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2510 1.1 christos int cycles = 0;
2511 1.1 christos {
2512 1.1 christos int referenced = 0;
2513 1.1 christos int UNUSED insn_referenced = abuf->written;
2514 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2515 1.1 christos }
2516 1.1 christos return cycles;
2517 1.1 christos #undef FLD
2518 1.1 christos }
2519 1.1 christos
2520 1.1 christos static int
2521 1.1 christos model_crisv10_and_w_r (SIM_CPU *current_cpu, void *sem_arg)
2522 1.1 christos {
2523 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
2524 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2525 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2526 1.1 christos int cycles = 0;
2527 1.1 christos {
2528 1.1 christos int referenced = 0;
2529 1.1 christos int UNUSED insn_referenced = abuf->written;
2530 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2531 1.1 christos }
2532 1.1 christos return cycles;
2533 1.1 christos #undef FLD
2534 1.1 christos }
2535 1.1 christos
2536 1.1 christos static int
2537 1.1 christos model_crisv10_and_d_r (SIM_CPU *current_cpu, void *sem_arg)
2538 1.1 christos {
2539 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
2540 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2541 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2542 1.1 christos int cycles = 0;
2543 1.1 christos {
2544 1.1 christos int referenced = 0;
2545 1.1 christos int UNUSED insn_referenced = abuf->written;
2546 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2547 1.1 christos }
2548 1.1 christos return cycles;
2549 1.1 christos #undef FLD
2550 1.1 christos }
2551 1.1 christos
2552 1.1 christos static int
2553 1.1 christos model_crisv10_and_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
2554 1.1 christos {
2555 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2556 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2557 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2558 1.1 christos int cycles = 0;
2559 1.1 christos {
2560 1.1 christos int referenced = 0;
2561 1.1 christos int UNUSED insn_referenced = abuf->written;
2562 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
2563 1.1 christos }
2564 1.1 christos {
2565 1.1 christos int referenced = 0;
2566 1.1 christos int UNUSED insn_referenced = abuf->written;
2567 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2568 1.1 christos }
2569 1.1 christos return cycles;
2570 1.1 christos #undef FLD
2571 1.1 christos }
2572 1.1 christos
2573 1.1 christos static int
2574 1.1 christos model_crisv10_and_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
2575 1.1 christos {
2576 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2577 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2578 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2579 1.1 christos int cycles = 0;
2580 1.1 christos {
2581 1.1 christos int referenced = 0;
2582 1.1 christos int UNUSED insn_referenced = abuf->written;
2583 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
2584 1.1 christos }
2585 1.1 christos {
2586 1.1 christos int referenced = 0;
2587 1.1 christos int UNUSED insn_referenced = abuf->written;
2588 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2589 1.1 christos }
2590 1.1 christos return cycles;
2591 1.1 christos #undef FLD
2592 1.1 christos }
2593 1.1 christos
2594 1.1 christos static int
2595 1.1 christos model_crisv10_and_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
2596 1.1 christos {
2597 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2598 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2599 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2600 1.1 christos int cycles = 0;
2601 1.1 christos {
2602 1.1 christos int referenced = 0;
2603 1.1 christos int UNUSED insn_referenced = abuf->written;
2604 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
2605 1.1 christos }
2606 1.1 christos {
2607 1.1 christos int referenced = 0;
2608 1.1 christos int UNUSED insn_referenced = abuf->written;
2609 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2610 1.1 christos }
2611 1.1 christos return cycles;
2612 1.1 christos #undef FLD
2613 1.1 christos }
2614 1.1 christos
2615 1.1 christos static int
2616 1.1 christos model_crisv10_andcbr (SIM_CPU *current_cpu, void *sem_arg)
2617 1.1 christos {
2618 1.1 christos #define FLD(f) abuf->fields.sfmt_addcbr.f
2619 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2620 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2621 1.1 christos int cycles = 0;
2622 1.1 christos {
2623 1.1 christos int referenced = 0;
2624 1.1 christos int UNUSED insn_referenced = abuf->written;
2625 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
2626 1.1 christos }
2627 1.1 christos {
2628 1.1 christos int referenced = 0;
2629 1.1 christos int UNUSED insn_referenced = abuf->written;
2630 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2631 1.1 christos }
2632 1.1 christos return cycles;
2633 1.1 christos #undef FLD
2634 1.1 christos }
2635 1.1 christos
2636 1.1 christos static int
2637 1.1 christos model_crisv10_andcwr (SIM_CPU *current_cpu, void *sem_arg)
2638 1.1 christos {
2639 1.1 christos #define FLD(f) abuf->fields.sfmt_addcwr.f
2640 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2641 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2642 1.1 christos int cycles = 0;
2643 1.1 christos {
2644 1.1 christos int referenced = 0;
2645 1.1 christos int UNUSED insn_referenced = abuf->written;
2646 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
2647 1.1 christos }
2648 1.1 christos {
2649 1.1 christos int referenced = 0;
2650 1.1 christos int UNUSED insn_referenced = abuf->written;
2651 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2652 1.1 christos }
2653 1.1 christos return cycles;
2654 1.1 christos #undef FLD
2655 1.1 christos }
2656 1.1 christos
2657 1.1 christos static int
2658 1.1 christos model_crisv10_andcdr (SIM_CPU *current_cpu, void *sem_arg)
2659 1.1 christos {
2660 1.1 christos #define FLD(f) abuf->fields.sfmt_addcdr.f
2661 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2662 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2663 1.1 christos int cycles = 0;
2664 1.1 christos {
2665 1.1 christos int referenced = 0;
2666 1.1 christos int UNUSED insn_referenced = abuf->written;
2667 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
2668 1.1 christos }
2669 1.1 christos {
2670 1.1 christos int referenced = 0;
2671 1.1 christos int UNUSED insn_referenced = abuf->written;
2672 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2673 1.1 christos }
2674 1.1 christos return cycles;
2675 1.1 christos #undef FLD
2676 1.1 christos }
2677 1.1 christos
2678 1.1 christos static int
2679 1.1 christos model_crisv10_andq (SIM_CPU *current_cpu, void *sem_arg)
2680 1.1 christos {
2681 1.1 christos #define FLD(f) abuf->fields.sfmt_andq.f
2682 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2683 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2684 1.1 christos int cycles = 0;
2685 1.1 christos {
2686 1.1 christos int referenced = 0;
2687 1.1 christos int UNUSED insn_referenced = abuf->written;
2688 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2689 1.1 christos }
2690 1.1 christos return cycles;
2691 1.1 christos #undef FLD
2692 1.1 christos }
2693 1.1 christos
2694 1.1 christos static int
2695 1.1 christos model_crisv10_orr_b_r (SIM_CPU *current_cpu, void *sem_arg)
2696 1.1 christos {
2697 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
2698 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2699 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2700 1.1 christos int cycles = 0;
2701 1.1 christos {
2702 1.1 christos int referenced = 0;
2703 1.1 christos int UNUSED insn_referenced = abuf->written;
2704 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2705 1.1 christos }
2706 1.1 christos return cycles;
2707 1.1 christos #undef FLD
2708 1.1 christos }
2709 1.1 christos
2710 1.1 christos static int
2711 1.1 christos model_crisv10_orr_w_r (SIM_CPU *current_cpu, void *sem_arg)
2712 1.1 christos {
2713 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
2714 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2715 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2716 1.1 christos int cycles = 0;
2717 1.1 christos {
2718 1.1 christos int referenced = 0;
2719 1.1 christos int UNUSED insn_referenced = abuf->written;
2720 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2721 1.1 christos }
2722 1.1 christos return cycles;
2723 1.1 christos #undef FLD
2724 1.1 christos }
2725 1.1 christos
2726 1.1 christos static int
2727 1.1 christos model_crisv10_orr_d_r (SIM_CPU *current_cpu, void *sem_arg)
2728 1.1 christos {
2729 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
2730 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2731 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2732 1.1 christos int cycles = 0;
2733 1.1 christos {
2734 1.1 christos int referenced = 0;
2735 1.1 christos int UNUSED insn_referenced = abuf->written;
2736 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2737 1.1 christos }
2738 1.1 christos return cycles;
2739 1.1 christos #undef FLD
2740 1.1 christos }
2741 1.1 christos
2742 1.1 christos static int
2743 1.1 christos model_crisv10_or_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
2744 1.1 christos {
2745 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2746 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2747 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2748 1.1 christos int cycles = 0;
2749 1.1 christos {
2750 1.1 christos int referenced = 0;
2751 1.1 christos int UNUSED insn_referenced = abuf->written;
2752 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
2753 1.1 christos }
2754 1.1 christos {
2755 1.1 christos int referenced = 0;
2756 1.1 christos int UNUSED insn_referenced = abuf->written;
2757 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2758 1.1 christos }
2759 1.1 christos return cycles;
2760 1.1 christos #undef FLD
2761 1.1 christos }
2762 1.1 christos
2763 1.1 christos static int
2764 1.1 christos model_crisv10_or_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
2765 1.1 christos {
2766 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2767 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2768 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2769 1.1 christos int cycles = 0;
2770 1.1 christos {
2771 1.1 christos int referenced = 0;
2772 1.1 christos int UNUSED insn_referenced = abuf->written;
2773 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
2774 1.1 christos }
2775 1.1 christos {
2776 1.1 christos int referenced = 0;
2777 1.1 christos int UNUSED insn_referenced = abuf->written;
2778 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2779 1.1 christos }
2780 1.1 christos return cycles;
2781 1.1 christos #undef FLD
2782 1.1 christos }
2783 1.1 christos
2784 1.1 christos static int
2785 1.1 christos model_crisv10_or_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
2786 1.1 christos {
2787 1.1 christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2788 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2789 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2790 1.1 christos int cycles = 0;
2791 1.1 christos {
2792 1.1 christos int referenced = 0;
2793 1.1 christos int UNUSED insn_referenced = abuf->written;
2794 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
2795 1.1 christos }
2796 1.1 christos {
2797 1.1 christos int referenced = 0;
2798 1.1 christos int UNUSED insn_referenced = abuf->written;
2799 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2800 1.1 christos }
2801 1.1 christos return cycles;
2802 1.1 christos #undef FLD
2803 1.1 christos }
2804 1.1 christos
2805 1.1 christos static int
2806 1.1 christos model_crisv10_orcbr (SIM_CPU *current_cpu, void *sem_arg)
2807 1.1 christos {
2808 1.1 christos #define FLD(f) abuf->fields.sfmt_addcbr.f
2809 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2810 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2811 1.1 christos int cycles = 0;
2812 1.1 christos {
2813 1.1 christos int referenced = 0;
2814 1.1 christos int UNUSED insn_referenced = abuf->written;
2815 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
2816 1.1 christos }
2817 1.1 christos {
2818 1.1 christos int referenced = 0;
2819 1.1 christos int UNUSED insn_referenced = abuf->written;
2820 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2821 1.1 christos }
2822 1.1 christos return cycles;
2823 1.1 christos #undef FLD
2824 1.1 christos }
2825 1.1 christos
2826 1.1 christos static int
2827 1.1 christos model_crisv10_orcwr (SIM_CPU *current_cpu, void *sem_arg)
2828 1.1 christos {
2829 1.1 christos #define FLD(f) abuf->fields.sfmt_addcwr.f
2830 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2831 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2832 1.1 christos int cycles = 0;
2833 1.1 christos {
2834 1.1 christos int referenced = 0;
2835 1.1 christos int UNUSED insn_referenced = abuf->written;
2836 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
2837 1.1 christos }
2838 1.1 christos {
2839 1.1 christos int referenced = 0;
2840 1.1 christos int UNUSED insn_referenced = abuf->written;
2841 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2842 1.1 christos }
2843 1.1 christos return cycles;
2844 1.1 christos #undef FLD
2845 1.1 christos }
2846 1.1 christos
2847 1.1 christos static int
2848 1.1 christos model_crisv10_orcdr (SIM_CPU *current_cpu, void *sem_arg)
2849 1.1 christos {
2850 1.1 christos #define FLD(f) abuf->fields.sfmt_addcdr.f
2851 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2852 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2853 1.1 christos int cycles = 0;
2854 1.1 christos {
2855 1.1 christos int referenced = 0;
2856 1.1 christos int UNUSED insn_referenced = abuf->written;
2857 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
2858 1.1 christos }
2859 1.1 christos {
2860 1.1 christos int referenced = 0;
2861 1.1 christos int UNUSED insn_referenced = abuf->written;
2862 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
2863 1.1 christos }
2864 1.1 christos return cycles;
2865 1.1 christos #undef FLD
2866 1.1 christos }
2867 1.1 christos
2868 1.1 christos static int
2869 1.1 christos model_crisv10_orq (SIM_CPU *current_cpu, void *sem_arg)
2870 1.1 christos {
2871 1.1 christos #define FLD(f) abuf->fields.sfmt_andq.f
2872 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2873 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2874 1.1 christos int cycles = 0;
2875 1.1 christos {
2876 1.1 christos int referenced = 0;
2877 1.1 christos int UNUSED insn_referenced = abuf->written;
2878 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2879 1.1 christos }
2880 1.1 christos return cycles;
2881 1.1 christos #undef FLD
2882 1.1 christos }
2883 1.1 christos
2884 1.1 christos static int
2885 1.1 christos model_crisv10_xor (SIM_CPU *current_cpu, void *sem_arg)
2886 1.1 christos {
2887 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
2888 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2889 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2890 1.1 christos int cycles = 0;
2891 1.1 christos {
2892 1.1 christos int referenced = 0;
2893 1.1 christos int UNUSED insn_referenced = abuf->written;
2894 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2895 1.1 christos }
2896 1.1 christos return cycles;
2897 1.1 christos #undef FLD
2898 1.1 christos }
2899 1.1 christos
2900 1.1 christos static int
2901 1.1 christos model_crisv10_swap (SIM_CPU *current_cpu, void *sem_arg)
2902 1.1 christos {
2903 1.1 christos #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
2904 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2905 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2906 1.1 christos int cycles = 0;
2907 1.1 christos {
2908 1.1 christos int referenced = 0;
2909 1.1 christos int UNUSED insn_referenced = abuf->written;
2910 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2911 1.1 christos }
2912 1.1 christos return cycles;
2913 1.1 christos #undef FLD
2914 1.1 christos }
2915 1.1 christos
2916 1.1 christos static int
2917 1.1 christos model_crisv10_asrr_b_r (SIM_CPU *current_cpu, void *sem_arg)
2918 1.1 christos {
2919 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
2920 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2921 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2922 1.1 christos int cycles = 0;
2923 1.1 christos {
2924 1.1 christos int referenced = 0;
2925 1.1 christos int UNUSED insn_referenced = abuf->written;
2926 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2927 1.1 christos }
2928 1.1 christos return cycles;
2929 1.1 christos #undef FLD
2930 1.1 christos }
2931 1.1 christos
2932 1.1 christos static int
2933 1.1 christos model_crisv10_asrr_w_r (SIM_CPU *current_cpu, void *sem_arg)
2934 1.1 christos {
2935 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
2936 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2937 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2938 1.1 christos int cycles = 0;
2939 1.1 christos {
2940 1.1 christos int referenced = 0;
2941 1.1 christos int UNUSED insn_referenced = abuf->written;
2942 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2943 1.1 christos }
2944 1.1 christos return cycles;
2945 1.1 christos #undef FLD
2946 1.1 christos }
2947 1.1 christos
2948 1.1 christos static int
2949 1.1 christos model_crisv10_asrr_d_r (SIM_CPU *current_cpu, void *sem_arg)
2950 1.1 christos {
2951 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
2952 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2953 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2954 1.1 christos int cycles = 0;
2955 1.1 christos {
2956 1.1 christos int referenced = 0;
2957 1.1 christos int UNUSED insn_referenced = abuf->written;
2958 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2959 1.1 christos }
2960 1.1 christos return cycles;
2961 1.1 christos #undef FLD
2962 1.1 christos }
2963 1.1 christos
2964 1.1 christos static int
2965 1.1 christos model_crisv10_asrq (SIM_CPU *current_cpu, void *sem_arg)
2966 1.1 christos {
2967 1.1 christos #define FLD(f) abuf->fields.sfmt_asrq.f
2968 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2969 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2970 1.1 christos int cycles = 0;
2971 1.1 christos {
2972 1.1 christos int referenced = 0;
2973 1.1 christos int UNUSED insn_referenced = abuf->written;
2974 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2975 1.1 christos }
2976 1.1 christos return cycles;
2977 1.1 christos #undef FLD
2978 1.1 christos }
2979 1.1 christos
2980 1.1 christos static int
2981 1.1 christos model_crisv10_lsrr_b_r (SIM_CPU *current_cpu, void *sem_arg)
2982 1.1 christos {
2983 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
2984 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2985 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2986 1.1 christos int cycles = 0;
2987 1.1 christos {
2988 1.1 christos int referenced = 0;
2989 1.1 christos int UNUSED insn_referenced = abuf->written;
2990 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
2991 1.1 christos }
2992 1.1 christos return cycles;
2993 1.1 christos #undef FLD
2994 1.1 christos }
2995 1.1 christos
2996 1.1 christos static int
2997 1.1 christos model_crisv10_lsrr_w_r (SIM_CPU *current_cpu, void *sem_arg)
2998 1.1 christos {
2999 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
3000 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3001 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3002 1.1 christos int cycles = 0;
3003 1.1 christos {
3004 1.1 christos int referenced = 0;
3005 1.1 christos int UNUSED insn_referenced = abuf->written;
3006 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3007 1.1 christos }
3008 1.1 christos return cycles;
3009 1.1 christos #undef FLD
3010 1.1 christos }
3011 1.1 christos
3012 1.1 christos static int
3013 1.1 christos model_crisv10_lsrr_d_r (SIM_CPU *current_cpu, void *sem_arg)
3014 1.1 christos {
3015 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
3016 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3017 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3018 1.1 christos int cycles = 0;
3019 1.1 christos {
3020 1.1 christos int referenced = 0;
3021 1.1 christos int UNUSED insn_referenced = abuf->written;
3022 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3023 1.1 christos }
3024 1.1 christos return cycles;
3025 1.1 christos #undef FLD
3026 1.1 christos }
3027 1.1 christos
3028 1.1 christos static int
3029 1.1 christos model_crisv10_lsrq (SIM_CPU *current_cpu, void *sem_arg)
3030 1.1 christos {
3031 1.1 christos #define FLD(f) abuf->fields.sfmt_asrq.f
3032 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3033 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3034 1.1 christos int cycles = 0;
3035 1.1 christos {
3036 1.1 christos int referenced = 0;
3037 1.1 christos int UNUSED insn_referenced = abuf->written;
3038 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3039 1.1 christos }
3040 1.1 christos return cycles;
3041 1.1 christos #undef FLD
3042 1.1 christos }
3043 1.1 christos
3044 1.1 christos static int
3045 1.1 christos model_crisv10_lslr_b_r (SIM_CPU *current_cpu, void *sem_arg)
3046 1.1 christos {
3047 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
3048 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3049 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3050 1.1 christos int cycles = 0;
3051 1.1 christos {
3052 1.1 christos int referenced = 0;
3053 1.1 christos int UNUSED insn_referenced = abuf->written;
3054 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3055 1.1 christos }
3056 1.1 christos return cycles;
3057 1.1 christos #undef FLD
3058 1.1 christos }
3059 1.1 christos
3060 1.1 christos static int
3061 1.1 christos model_crisv10_lslr_w_r (SIM_CPU *current_cpu, void *sem_arg)
3062 1.1 christos {
3063 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
3064 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3065 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3066 1.1 christos int cycles = 0;
3067 1.1 christos {
3068 1.1 christos int referenced = 0;
3069 1.1 christos int UNUSED insn_referenced = abuf->written;
3070 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3071 1.1 christos }
3072 1.1 christos return cycles;
3073 1.1 christos #undef FLD
3074 1.1 christos }
3075 1.1 christos
3076 1.1 christos static int
3077 1.1 christos model_crisv10_lslr_d_r (SIM_CPU *current_cpu, void *sem_arg)
3078 1.1 christos {
3079 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
3080 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3081 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3082 1.1 christos int cycles = 0;
3083 1.1 christos {
3084 1.1 christos int referenced = 0;
3085 1.1 christos int UNUSED insn_referenced = abuf->written;
3086 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3087 1.1 christos }
3088 1.1 christos return cycles;
3089 1.1 christos #undef FLD
3090 1.1 christos }
3091 1.1 christos
3092 1.1 christos static int
3093 1.1 christos model_crisv10_lslq (SIM_CPU *current_cpu, void *sem_arg)
3094 1.1 christos {
3095 1.1 christos #define FLD(f) abuf->fields.sfmt_asrq.f
3096 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3097 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3098 1.1 christos int cycles = 0;
3099 1.1 christos {
3100 1.1 christos int referenced = 0;
3101 1.1 christos int UNUSED insn_referenced = abuf->written;
3102 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3103 1.1 christos }
3104 1.1 christos return cycles;
3105 1.1 christos #undef FLD
3106 1.1 christos }
3107 1.1 christos
3108 1.1 christos static int
3109 1.1 christos model_crisv10_btst (SIM_CPU *current_cpu, void *sem_arg)
3110 1.1 christos {
3111 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
3112 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3113 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3114 1.1 christos int cycles = 0;
3115 1.1 christos {
3116 1.1 christos int referenced = 0;
3117 1.1 christos int UNUSED insn_referenced = abuf->written;
3118 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3119 1.1 christos }
3120 1.1 christos return cycles;
3121 1.1 christos #undef FLD
3122 1.1 christos }
3123 1.1 christos
3124 1.1 christos static int
3125 1.1 christos model_crisv10_btstq (SIM_CPU *current_cpu, void *sem_arg)
3126 1.1 christos {
3127 1.1 christos #define FLD(f) abuf->fields.sfmt_asrq.f
3128 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3129 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3130 1.1 christos int cycles = 0;
3131 1.1 christos {
3132 1.1 christos int referenced = 0;
3133 1.1 christos int UNUSED insn_referenced = abuf->written;
3134 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3135 1.1 christos }
3136 1.1 christos return cycles;
3137 1.1 christos #undef FLD
3138 1.1 christos }
3139 1.1 christos
3140 1.1 christos static int
3141 1.1 christos model_crisv10_setf (SIM_CPU *current_cpu, void *sem_arg)
3142 1.1 christos {
3143 1.1 christos #define FLD(f) abuf->fields.sfmt_setf.f
3144 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3145 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3146 1.1 christos int cycles = 0;
3147 1.1 christos {
3148 1.1 christos int referenced = 0;
3149 1.1 christos int UNUSED insn_referenced = abuf->written;
3150 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3151 1.1 christos }
3152 1.1 christos return cycles;
3153 1.1 christos #undef FLD
3154 1.1 christos }
3155 1.1 christos
3156 1.1 christos static int
3157 1.1 christos model_crisv10_clearf (SIM_CPU *current_cpu, void *sem_arg)
3158 1.1 christos {
3159 1.1 christos #define FLD(f) abuf->fields.sfmt_setf.f
3160 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3161 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3162 1.1 christos int cycles = 0;
3163 1.1 christos {
3164 1.1 christos int referenced = 0;
3165 1.1 christos int UNUSED insn_referenced = abuf->written;
3166 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3167 1.1 christos }
3168 1.1 christos return cycles;
3169 1.1 christos #undef FLD
3170 1.1 christos }
3171 1.1 christos
3172 1.1 christos static int
3173 1.1 christos model_crisv10_bcc_b (SIM_CPU *current_cpu, void *sem_arg)
3174 1.1 christos {
3175 1.1 christos #define FLD(f) abuf->fields.sfmt_bcc_b.f
3176 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3177 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3178 1.1 christos int cycles = 0;
3179 1.1 christos {
3180 1.1 christos int referenced = 0;
3181 1.1 christos int UNUSED insn_referenced = abuf->written;
3182 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3183 1.1 christos }
3184 1.1 christos return cycles;
3185 1.1 christos #undef FLD
3186 1.1 christos }
3187 1.1 christos
3188 1.1 christos static int
3189 1.1 christos model_crisv10_ba_b (SIM_CPU *current_cpu, void *sem_arg)
3190 1.1 christos {
3191 1.1 christos #define FLD(f) abuf->fields.sfmt_bcc_b.f
3192 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3193 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3194 1.1 christos int cycles = 0;
3195 1.1 christos {
3196 1.1 christos int referenced = 0;
3197 1.1 christos int UNUSED insn_referenced = abuf->written;
3198 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3199 1.1 christos }
3200 1.1 christos return cycles;
3201 1.1 christos #undef FLD
3202 1.1 christos }
3203 1.1 christos
3204 1.1 christos static int
3205 1.1 christos model_crisv10_bcc_w (SIM_CPU *current_cpu, void *sem_arg)
3206 1.1 christos {
3207 1.1 christos #define FLD(f) abuf->fields.sfmt_bcc_w.f
3208 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3209 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3210 1.1 christos int cycles = 0;
3211 1.1 christos {
3212 1.1 christos int referenced = 0;
3213 1.1 christos int UNUSED insn_referenced = abuf->written;
3214 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
3215 1.1 christos }
3216 1.1 christos {
3217 1.1 christos int referenced = 0;
3218 1.1 christos int UNUSED insn_referenced = abuf->written;
3219 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3220 1.1 christos }
3221 1.1 christos return cycles;
3222 1.1 christos #undef FLD
3223 1.1 christos }
3224 1.1 christos
3225 1.1 christos static int
3226 1.1 christos model_crisv10_ba_w (SIM_CPU *current_cpu, void *sem_arg)
3227 1.1 christos {
3228 1.1 christos #define FLD(f) abuf->fields.sfmt_bcc_w.f
3229 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3230 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3231 1.1 christos int cycles = 0;
3232 1.1 christos {
3233 1.1 christos int referenced = 0;
3234 1.1 christos int UNUSED insn_referenced = abuf->written;
3235 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
3236 1.1 christos }
3237 1.1 christos {
3238 1.1 christos int referenced = 0;
3239 1.1 christos int UNUSED insn_referenced = abuf->written;
3240 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3241 1.1 christos }
3242 1.1 christos return cycles;
3243 1.1 christos #undef FLD
3244 1.1 christos }
3245 1.1 christos
3246 1.1 christos static int
3247 1.1 christos model_crisv10_jump_r (SIM_CPU *current_cpu, void *sem_arg)
3248 1.1 christos {
3249 1.1 christos #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
3250 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3251 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3252 1.1 christos int cycles = 0;
3253 1.1 christos {
3254 1.1 christos int referenced = 0;
3255 1.1 christos int UNUSED insn_referenced = abuf->written;
3256 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3257 1.1 christos }
3258 1.1 christos return cycles;
3259 1.1 christos #undef FLD
3260 1.1 christos }
3261 1.1 christos
3262 1.1 christos static int
3263 1.1 christos model_crisv10_jump_m (SIM_CPU *current_cpu, void *sem_arg)
3264 1.1 christos {
3265 1.1 christos #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
3266 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3267 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3268 1.1 christos int cycles = 0;
3269 1.1 christos {
3270 1.1 christos int referenced = 0;
3271 1.1 christos int UNUSED insn_referenced = abuf->written;
3272 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
3273 1.1 christos }
3274 1.1 christos {
3275 1.1 christos int referenced = 0;
3276 1.1 christos int UNUSED insn_referenced = abuf->written;
3277 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3278 1.1 christos }
3279 1.1 christos return cycles;
3280 1.1 christos #undef FLD
3281 1.1 christos }
3282 1.1 christos
3283 1.1 christos static int
3284 1.1 christos model_crisv10_jump_c (SIM_CPU *current_cpu, void *sem_arg)
3285 1.1 christos {
3286 1.1 christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3287 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3288 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3289 1.1 christos int cycles = 0;
3290 1.1 christos {
3291 1.1 christos int referenced = 0;
3292 1.1 christos int UNUSED insn_referenced = abuf->written;
3293 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
3294 1.1 christos }
3295 1.1 christos {
3296 1.1 christos int referenced = 0;
3297 1.1 christos int UNUSED insn_referenced = abuf->written;
3298 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3299 1.1 christos }
3300 1.1 christos return cycles;
3301 1.1 christos #undef FLD
3302 1.1 christos }
3303 1.1 christos
3304 1.1 christos static int
3305 1.1 christos model_crisv10_break (SIM_CPU *current_cpu, void *sem_arg)
3306 1.1 christos {
3307 1.1 christos #define FLD(f) abuf->fields.sfmt_break.f
3308 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3309 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3310 1.1 christos int cycles = 0;
3311 1.1 christos {
3312 1.1 christos int referenced = 0;
3313 1.1 christos int UNUSED insn_referenced = abuf->written;
3314 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3315 1.1 christos }
3316 1.1 christos return cycles;
3317 1.1 christos #undef FLD
3318 1.1 christos }
3319 1.1 christos
3320 1.1 christos static int
3321 1.1 christos model_crisv10_bound_r_b_r (SIM_CPU *current_cpu, void *sem_arg)
3322 1.1 christos {
3323 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
3324 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3325 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3326 1.1 christos int cycles = 0;
3327 1.1 christos {
3328 1.1 christos int referenced = 0;
3329 1.1 christos int UNUSED insn_referenced = abuf->written;
3330 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3331 1.1 christos }
3332 1.1 christos return cycles;
3333 1.1 christos #undef FLD
3334 1.1 christos }
3335 1.1 christos
3336 1.1 christos static int
3337 1.1 christos model_crisv10_bound_r_w_r (SIM_CPU *current_cpu, void *sem_arg)
3338 1.1 christos {
3339 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
3340 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3341 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3342 1.1 christos int cycles = 0;
3343 1.1 christos {
3344 1.1 christos int referenced = 0;
3345 1.1 christos int UNUSED insn_referenced = abuf->written;
3346 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3347 1.1 christos }
3348 1.1 christos return cycles;
3349 1.1 christos #undef FLD
3350 1.1 christos }
3351 1.1 christos
3352 1.1 christos static int
3353 1.1 christos model_crisv10_bound_r_d_r (SIM_CPU *current_cpu, void *sem_arg)
3354 1.1 christos {
3355 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
3356 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3357 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3358 1.1 christos int cycles = 0;
3359 1.1 christos {
3360 1.1 christos int referenced = 0;
3361 1.1 christos int UNUSED insn_referenced = abuf->written;
3362 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3363 1.1 christos }
3364 1.1 christos return cycles;
3365 1.1 christos #undef FLD
3366 1.1 christos }
3367 1.1 christos
3368 1.1 christos static int
3369 1.1 christos model_crisv10_bound_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
3370 1.1 christos {
3371 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
3372 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3373 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3374 1.1 christos int cycles = 0;
3375 1.1 christos {
3376 1.1 christos int referenced = 0;
3377 1.1 christos int UNUSED insn_referenced = abuf->written;
3378 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
3379 1.1 christos }
3380 1.1 christos {
3381 1.1 christos int referenced = 0;
3382 1.1 christos int UNUSED insn_referenced = abuf->written;
3383 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3384 1.1 christos }
3385 1.1 christos return cycles;
3386 1.1 christos #undef FLD
3387 1.1 christos }
3388 1.1 christos
3389 1.1 christos static int
3390 1.1 christos model_crisv10_bound_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
3391 1.1 christos {
3392 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
3393 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3394 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3395 1.1 christos int cycles = 0;
3396 1.1 christos {
3397 1.1 christos int referenced = 0;
3398 1.1 christos int UNUSED insn_referenced = abuf->written;
3399 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
3400 1.1 christos }
3401 1.1 christos {
3402 1.1 christos int referenced = 0;
3403 1.1 christos int UNUSED insn_referenced = abuf->written;
3404 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3405 1.1 christos }
3406 1.1 christos return cycles;
3407 1.1 christos #undef FLD
3408 1.1 christos }
3409 1.1 christos
3410 1.1 christos static int
3411 1.1 christos model_crisv10_bound_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
3412 1.1 christos {
3413 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
3414 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3415 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3416 1.1 christos int cycles = 0;
3417 1.1 christos {
3418 1.1 christos int referenced = 0;
3419 1.1 christos int UNUSED insn_referenced = abuf->written;
3420 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
3421 1.1 christos }
3422 1.1 christos {
3423 1.1 christos int referenced = 0;
3424 1.1 christos int UNUSED insn_referenced = abuf->written;
3425 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3426 1.1 christos }
3427 1.1 christos return cycles;
3428 1.1 christos #undef FLD
3429 1.1 christos }
3430 1.1 christos
3431 1.1 christos static int
3432 1.1 christos model_crisv10_bound_cb (SIM_CPU *current_cpu, void *sem_arg)
3433 1.1 christos {
3434 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
3435 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3436 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3437 1.1 christos int cycles = 0;
3438 1.1 christos {
3439 1.1 christos int referenced = 0;
3440 1.1 christos int UNUSED insn_referenced = abuf->written;
3441 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
3442 1.1 christos }
3443 1.1 christos {
3444 1.1 christos int referenced = 0;
3445 1.1 christos int UNUSED insn_referenced = abuf->written;
3446 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3447 1.1 christos }
3448 1.1 christos return cycles;
3449 1.1 christos #undef FLD
3450 1.1 christos }
3451 1.1 christos
3452 1.1 christos static int
3453 1.1 christos model_crisv10_bound_cw (SIM_CPU *current_cpu, void *sem_arg)
3454 1.1 christos {
3455 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
3456 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3457 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3458 1.1 christos int cycles = 0;
3459 1.1 christos {
3460 1.1 christos int referenced = 0;
3461 1.1 christos int UNUSED insn_referenced = abuf->written;
3462 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
3463 1.1 christos }
3464 1.1 christos {
3465 1.1 christos int referenced = 0;
3466 1.1 christos int UNUSED insn_referenced = abuf->written;
3467 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3468 1.1 christos }
3469 1.1 christos return cycles;
3470 1.1 christos #undef FLD
3471 1.1 christos }
3472 1.1 christos
3473 1.1 christos static int
3474 1.1 christos model_crisv10_bound_cd (SIM_CPU *current_cpu, void *sem_arg)
3475 1.1 christos {
3476 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
3477 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3478 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3479 1.1 christos int cycles = 0;
3480 1.1 christos {
3481 1.1 christos int referenced = 0;
3482 1.1 christos int UNUSED insn_referenced = abuf->written;
3483 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
3484 1.1 christos }
3485 1.1 christos {
3486 1.1 christos int referenced = 0;
3487 1.1 christos int UNUSED insn_referenced = abuf->written;
3488 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3489 1.1 christos }
3490 1.1 christos return cycles;
3491 1.1 christos #undef FLD
3492 1.1 christos }
3493 1.1 christos
3494 1.1 christos static int
3495 1.1 christos model_crisv10_scc (SIM_CPU *current_cpu, void *sem_arg)
3496 1.1 christos {
3497 1.1 christos #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
3498 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3499 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3500 1.1 christos int cycles = 0;
3501 1.1 christos {
3502 1.1 christos int referenced = 0;
3503 1.1 christos int UNUSED insn_referenced = abuf->written;
3504 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3505 1.1 christos }
3506 1.1 christos return cycles;
3507 1.1 christos #undef FLD
3508 1.1 christos }
3509 1.1 christos
3510 1.1 christos static int
3511 1.1 christos model_crisv10_lz (SIM_CPU *current_cpu, void *sem_arg)
3512 1.1 christos {
3513 1.1 christos #define FLD(f) abuf->fields.sfmt_muls_b.f
3514 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3515 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3516 1.1 christos int cycles = 0;
3517 1.1 christos {
3518 1.1 christos int referenced = 0;
3519 1.1 christos int UNUSED insn_referenced = abuf->written;
3520 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3521 1.1 christos }
3522 1.1 christos return cycles;
3523 1.1 christos #undef FLD
3524 1.1 christos }
3525 1.1 christos
3526 1.1 christos static int
3527 1.1 christos model_crisv10_addoq (SIM_CPU *current_cpu, void *sem_arg)
3528 1.1 christos {
3529 1.1 christos #define FLD(f) abuf->fields.sfmt_addoq.f
3530 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3531 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3532 1.1 christos int cycles = 0;
3533 1.1 christos {
3534 1.1 christos int referenced = 0;
3535 1.1 christos int UNUSED insn_referenced = abuf->written;
3536 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3537 1.1 christos }
3538 1.1 christos return cycles;
3539 1.1 christos #undef FLD
3540 1.1 christos }
3541 1.1 christos
3542 1.1 christos static int
3543 1.1 christos model_crisv10_bdapqpc (SIM_CPU *current_cpu, void *sem_arg)
3544 1.1 christos {
3545 1.1 christos #define FLD(f) abuf->fields.sfmt_addoq.f
3546 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3547 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3548 1.1 christos int cycles = 0;
3549 1.1 christos {
3550 1.1 christos int referenced = 0;
3551 1.1 christos int UNUSED insn_referenced = abuf->written;
3552 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3553 1.1 christos }
3554 1.1 christos return cycles;
3555 1.1 christos #undef FLD
3556 1.1 christos }
3557 1.1 christos
3558 1.1 christos static int
3559 1.1 christos model_crisv10_bdap_32_pc (SIM_CPU *current_cpu, void *sem_arg)
3560 1.1 christos {
3561 1.1 christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3562 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3563 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3564 1.1 christos int cycles = 0;
3565 1.1 christos {
3566 1.1 christos int referenced = 0;
3567 1.1 christos int UNUSED insn_referenced = abuf->written;
3568 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
3569 1.1 christos }
3570 1.1 christos {
3571 1.1 christos int referenced = 0;
3572 1.1 christos int UNUSED insn_referenced = abuf->written;
3573 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3574 1.1 christos }
3575 1.1 christos return cycles;
3576 1.1 christos #undef FLD
3577 1.1 christos }
3578 1.1 christos
3579 1.1 christos static int
3580 1.1 christos model_crisv10_move_m_pcplus_p0 (SIM_CPU *current_cpu, void *sem_arg)
3581 1.1 christos {
3582 1.1 christos #define FLD(f) abuf->fields.sfmt_move_m_spplus_p8.f
3583 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3584 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3585 1.1 christos int cycles = 0;
3586 1.1 christos {
3587 1.1 christos int referenced = 0;
3588 1.1 christos int UNUSED insn_referenced = abuf->written;
3589 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
3590 1.1 christos }
3591 1.1 christos {
3592 1.1 christos int referenced = 0;
3593 1.1 christos int UNUSED insn_referenced = abuf->written;
3594 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3595 1.1 christos }
3596 1.1 christos return cycles;
3597 1.1 christos #undef FLD
3598 1.1 christos }
3599 1.1 christos
3600 1.1 christos static int
3601 1.1 christos model_crisv10_move_m_spplus_p8 (SIM_CPU *current_cpu, void *sem_arg)
3602 1.1 christos {
3603 1.1 christos #define FLD(f) abuf->fields.sfmt_move_m_spplus_p8.f
3604 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3605 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3606 1.1 christos int cycles = 0;
3607 1.1 christos {
3608 1.1 christos int referenced = 0;
3609 1.1 christos int UNUSED insn_referenced = abuf->written;
3610 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
3611 1.1 christos }
3612 1.1 christos {
3613 1.1 christos int referenced = 0;
3614 1.1 christos int UNUSED insn_referenced = abuf->written;
3615 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3616 1.1 christos }
3617 1.1 christos return cycles;
3618 1.1 christos #undef FLD
3619 1.1 christos }
3620 1.1 christos
3621 1.1 christos static int
3622 1.1 christos model_crisv10_addo_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
3623 1.1 christos {
3624 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
3625 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3626 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3627 1.1 christos int cycles = 0;
3628 1.1 christos {
3629 1.1 christos int referenced = 0;
3630 1.1 christos int UNUSED insn_referenced = abuf->written;
3631 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
3632 1.1 christos }
3633 1.1 christos {
3634 1.1 christos int referenced = 0;
3635 1.1 christos int UNUSED insn_referenced = abuf->written;
3636 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3637 1.1 christos }
3638 1.1 christos return cycles;
3639 1.1 christos #undef FLD
3640 1.1 christos }
3641 1.1 christos
3642 1.1 christos static int
3643 1.1 christos model_crisv10_addo_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
3644 1.1 christos {
3645 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
3646 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3647 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3648 1.1 christos int cycles = 0;
3649 1.1 christos {
3650 1.1 christos int referenced = 0;
3651 1.1 christos int UNUSED insn_referenced = abuf->written;
3652 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
3653 1.1 christos }
3654 1.1 christos {
3655 1.1 christos int referenced = 0;
3656 1.1 christos int UNUSED insn_referenced = abuf->written;
3657 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3658 1.1 christos }
3659 1.1 christos return cycles;
3660 1.1 christos #undef FLD
3661 1.1 christos }
3662 1.1 christos
3663 1.1 christos static int
3664 1.1 christos model_crisv10_addo_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
3665 1.1 christos {
3666 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
3667 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3668 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3669 1.1 christos int cycles = 0;
3670 1.1 christos {
3671 1.1 christos int referenced = 0;
3672 1.1 christos int UNUSED insn_referenced = abuf->written;
3673 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
3674 1.1 christos }
3675 1.1 christos {
3676 1.1 christos int referenced = 0;
3677 1.1 christos int UNUSED insn_referenced = abuf->written;
3678 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3679 1.1 christos }
3680 1.1 christos return cycles;
3681 1.1 christos #undef FLD
3682 1.1 christos }
3683 1.1 christos
3684 1.1 christos static int
3685 1.1 christos model_crisv10_addo_cb (SIM_CPU *current_cpu, void *sem_arg)
3686 1.1 christos {
3687 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
3688 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3689 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3690 1.1 christos int cycles = 0;
3691 1.1 christos {
3692 1.1 christos int referenced = 0;
3693 1.1 christos int UNUSED insn_referenced = abuf->written;
3694 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
3695 1.1 christos }
3696 1.1 christos {
3697 1.1 christos int referenced = 0;
3698 1.1 christos int UNUSED insn_referenced = abuf->written;
3699 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3700 1.1 christos }
3701 1.1 christos return cycles;
3702 1.1 christos #undef FLD
3703 1.1 christos }
3704 1.1 christos
3705 1.1 christos static int
3706 1.1 christos model_crisv10_addo_cw (SIM_CPU *current_cpu, void *sem_arg)
3707 1.1 christos {
3708 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
3709 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3710 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3711 1.1 christos int cycles = 0;
3712 1.1 christos {
3713 1.1 christos int referenced = 0;
3714 1.1 christos int UNUSED insn_referenced = abuf->written;
3715 1.1 christos cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
3716 1.1 christos }
3717 1.1 christos {
3718 1.1 christos int referenced = 0;
3719 1.1 christos int UNUSED insn_referenced = abuf->written;
3720 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3721 1.1 christos }
3722 1.1 christos return cycles;
3723 1.1 christos #undef FLD
3724 1.1 christos }
3725 1.1 christos
3726 1.1 christos static int
3727 1.1 christos model_crisv10_addo_cd (SIM_CPU *current_cpu, void *sem_arg)
3728 1.1 christos {
3729 1.1 christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
3730 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3731 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3732 1.1 christos int cycles = 0;
3733 1.1 christos {
3734 1.1 christos int referenced = 0;
3735 1.1 christos int UNUSED insn_referenced = abuf->written;
3736 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
3737 1.1 christos }
3738 1.1 christos {
3739 1.1 christos int referenced = 0;
3740 1.1 christos int UNUSED insn_referenced = abuf->written;
3741 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3742 1.1 christos }
3743 1.1 christos return cycles;
3744 1.1 christos #undef FLD
3745 1.1 christos }
3746 1.1 christos
3747 1.1 christos static int
3748 1.1 christos model_crisv10_dip_m (SIM_CPU *current_cpu, void *sem_arg)
3749 1.1 christos {
3750 1.1 christos #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
3751 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3752 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3753 1.1 christos int cycles = 0;
3754 1.1 christos {
3755 1.1 christos int referenced = 0;
3756 1.1 christos int UNUSED insn_referenced = abuf->written;
3757 1.1 christos cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
3758 1.1 christos }
3759 1.1 christos {
3760 1.1 christos int referenced = 0;
3761 1.1 christos int UNUSED insn_referenced = abuf->written;
3762 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3763 1.1 christos }
3764 1.1 christos return cycles;
3765 1.1 christos #undef FLD
3766 1.1 christos }
3767 1.1 christos
3768 1.1 christos static int
3769 1.1 christos model_crisv10_dip_c (SIM_CPU *current_cpu, void *sem_arg)
3770 1.1 christos {
3771 1.1 christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3772 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3773 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3774 1.1 christos int cycles = 0;
3775 1.1 christos {
3776 1.1 christos int referenced = 0;
3777 1.1 christos int UNUSED insn_referenced = abuf->written;
3778 1.1 christos cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
3779 1.1 christos }
3780 1.1 christos {
3781 1.1 christos int referenced = 0;
3782 1.1 christos int UNUSED insn_referenced = abuf->written;
3783 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
3784 1.1 christos }
3785 1.1 christos return cycles;
3786 1.1 christos #undef FLD
3787 1.1 christos }
3788 1.1 christos
3789 1.1 christos static int
3790 1.1 christos model_crisv10_addi_acr_b_r (SIM_CPU *current_cpu, void *sem_arg)
3791 1.1 christos {
3792 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
3793 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3794 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3795 1.1 christos int cycles = 0;
3796 1.1 christos {
3797 1.1 christos int referenced = 0;
3798 1.1 christos int UNUSED insn_referenced = abuf->written;
3799 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3800 1.1 christos }
3801 1.1 christos return cycles;
3802 1.1 christos #undef FLD
3803 1.1 christos }
3804 1.1 christos
3805 1.1 christos static int
3806 1.1 christos model_crisv10_addi_acr_w_r (SIM_CPU *current_cpu, void *sem_arg)
3807 1.1 christos {
3808 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
3809 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3810 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3811 1.1 christos int cycles = 0;
3812 1.1 christos {
3813 1.1 christos int referenced = 0;
3814 1.1 christos int UNUSED insn_referenced = abuf->written;
3815 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3816 1.1 christos }
3817 1.1 christos return cycles;
3818 1.1 christos #undef FLD
3819 1.1 christos }
3820 1.1 christos
3821 1.1 christos static int
3822 1.1 christos model_crisv10_addi_acr_d_r (SIM_CPU *current_cpu, void *sem_arg)
3823 1.1 christos {
3824 1.1 christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
3825 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3826 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3827 1.1 christos int cycles = 0;
3828 1.1 christos {
3829 1.1 christos int referenced = 0;
3830 1.1 christos int UNUSED insn_referenced = abuf->written;
3831 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3832 1.1 christos }
3833 1.1 christos return cycles;
3834 1.1 christos #undef FLD
3835 1.1 christos }
3836 1.1 christos
3837 1.1 christos static int
3838 1.1 christos model_crisv10_biap_pc_b_r (SIM_CPU *current_cpu, void *sem_arg)
3839 1.1 christos {
3840 1.1 christos #define FLD(f) abuf->fields.sfmt_addoq.f
3841 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3842 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3843 1.1 christos int cycles = 0;
3844 1.1 christos {
3845 1.1 christos int referenced = 0;
3846 1.1 christos int UNUSED insn_referenced = abuf->written;
3847 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3848 1.1 christos }
3849 1.1 christos return cycles;
3850 1.1 christos #undef FLD
3851 1.1 christos }
3852 1.1 christos
3853 1.1 christos static int
3854 1.1 christos model_crisv10_biap_pc_w_r (SIM_CPU *current_cpu, void *sem_arg)
3855 1.1 christos {
3856 1.1 christos #define FLD(f) abuf->fields.sfmt_addoq.f
3857 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3858 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3859 1.1 christos int cycles = 0;
3860 1.1 christos {
3861 1.1 christos int referenced = 0;
3862 1.1 christos int UNUSED insn_referenced = abuf->written;
3863 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3864 1.1 christos }
3865 1.1 christos return cycles;
3866 1.1 christos #undef FLD
3867 1.1 christos }
3868 1.1 christos
3869 1.1 christos static int
3870 1.1 christos model_crisv10_biap_pc_d_r (SIM_CPU *current_cpu, void *sem_arg)
3871 1.1 christos {
3872 1.1 christos #define FLD(f) abuf->fields.sfmt_addoq.f
3873 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3874 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3875 1.1 christos int cycles = 0;
3876 1.1 christos {
3877 1.1 christos int referenced = 0;
3878 1.1 christos int UNUSED insn_referenced = abuf->written;
3879 1.1 christos cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
3880 1.1 christos }
3881 1.1 christos return cycles;
3882 1.1 christos #undef FLD
3883 1.1 christos }
3884 1.1 christos
3885 1.1 christos /* We assume UNIT_NONE == 0 because the tables don't always terminate
3886 1.1 christos entries with it. */
3887 1.1 christos
3888 1.1 christos /* Model timing data for `crisv10'. */
3889 1.1 christos
3890 1.1 christos static const INSN_TIMING crisv10_timing[] = {
3891 1.1 christos { CRISV10F_INSN_X_INVALID, 0, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3892 1.1 christos { CRISV10F_INSN_X_AFTER, 0, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3893 1.1 christos { CRISV10F_INSN_X_BEFORE, 0, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3894 1.1 christos { CRISV10F_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3895 1.1 christos { CRISV10F_INSN_X_CHAIN, 0, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3896 1.1 christos { CRISV10F_INSN_X_BEGIN, 0, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3897 1.1 christos { CRISV10F_INSN_NOP, model_crisv10_nop, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3898 1.1 christos { CRISV10F_INSN_MOVE_B_R, model_crisv10_move_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3899 1.1 christos { CRISV10F_INSN_MOVE_W_R, model_crisv10_move_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3900 1.1 christos { CRISV10F_INSN_MOVE_D_R, model_crisv10_move_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3901 1.1 christos { CRISV10F_INSN_MOVEPCR, model_crisv10_movepcr, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3902 1.1 christos { CRISV10F_INSN_MOVEQ, model_crisv10_moveq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3903 1.1 christos { CRISV10F_INSN_MOVS_B_R, model_crisv10_movs_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3904 1.1 christos { CRISV10F_INSN_MOVS_W_R, model_crisv10_movs_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3905 1.1 christos { CRISV10F_INSN_MOVU_B_R, model_crisv10_movu_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3906 1.1 christos { CRISV10F_INSN_MOVU_W_R, model_crisv10_movu_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3907 1.1 christos { CRISV10F_INSN_MOVECBR, model_crisv10_movecbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3908 1.1 christos { CRISV10F_INSN_MOVECWR, model_crisv10_movecwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3909 1.1 christos { CRISV10F_INSN_MOVECDR, model_crisv10_movecdr, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3910 1.1 christos { CRISV10F_INSN_MOVSCBR, model_crisv10_movscbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3911 1.1 christos { CRISV10F_INSN_MOVSCWR, model_crisv10_movscwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3912 1.1 christos { CRISV10F_INSN_MOVUCBR, model_crisv10_movucbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3913 1.1 christos { CRISV10F_INSN_MOVUCWR, model_crisv10_movucwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3914 1.1 christos { CRISV10F_INSN_ADDQ, model_crisv10_addq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3915 1.1 christos { CRISV10F_INSN_SUBQ, model_crisv10_subq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3916 1.1 christos { CRISV10F_INSN_CMP_R_B_R, model_crisv10_cmp_r_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3917 1.1 christos { CRISV10F_INSN_CMP_R_W_R, model_crisv10_cmp_r_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3918 1.1 christos { CRISV10F_INSN_CMP_R_D_R, model_crisv10_cmp_r_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3919 1.1 christos { CRISV10F_INSN_CMP_M_B_M, model_crisv10_cmp_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3920 1.1 christos { CRISV10F_INSN_CMP_M_W_M, model_crisv10_cmp_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3921 1.1 christos { CRISV10F_INSN_CMP_M_D_M, model_crisv10_cmp_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3922 1.1 christos { CRISV10F_INSN_CMPCBR, model_crisv10_cmpcbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3923 1.1 christos { CRISV10F_INSN_CMPCWR, model_crisv10_cmpcwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3924 1.1 christos { CRISV10F_INSN_CMPCDR, model_crisv10_cmpcdr, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3925 1.1 christos { CRISV10F_INSN_CMPQ, model_crisv10_cmpq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3926 1.1 christos { CRISV10F_INSN_CMPS_M_B_M, model_crisv10_cmps_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3927 1.1 christos { CRISV10F_INSN_CMPS_M_W_M, model_crisv10_cmps_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3928 1.1 christos { CRISV10F_INSN_CMPSCBR, model_crisv10_cmpscbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3929 1.1 christos { CRISV10F_INSN_CMPSCWR, model_crisv10_cmpscwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3930 1.1 christos { CRISV10F_INSN_CMPU_M_B_M, model_crisv10_cmpu_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3931 1.1 christos { CRISV10F_INSN_CMPU_M_W_M, model_crisv10_cmpu_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3932 1.1 christos { CRISV10F_INSN_CMPUCBR, model_crisv10_cmpucbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3933 1.1 christos { CRISV10F_INSN_CMPUCWR, model_crisv10_cmpucwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3934 1.1 christos { CRISV10F_INSN_MOVE_M_B_M, model_crisv10_move_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3935 1.1 christos { CRISV10F_INSN_MOVE_M_W_M, model_crisv10_move_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3936 1.1 christos { CRISV10F_INSN_MOVE_M_D_M, model_crisv10_move_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3937 1.1 christos { CRISV10F_INSN_MOVS_M_B_M, model_crisv10_movs_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3938 1.1 christos { CRISV10F_INSN_MOVS_M_W_M, model_crisv10_movs_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3939 1.1 christos { CRISV10F_INSN_MOVU_M_B_M, model_crisv10_movu_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3940 1.1 christos { CRISV10F_INSN_MOVU_M_W_M, model_crisv10_movu_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3941 1.1 christos { CRISV10F_INSN_MOVE_R_SPRV10, model_crisv10_move_r_sprv10, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3942 1.1 christos { CRISV10F_INSN_MOVE_SPR_RV10, model_crisv10_move_spr_rv10, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3943 1.1 christos { CRISV10F_INSN_RET_TYPE, model_crisv10_ret_type, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3944 1.1 christos { CRISV10F_INSN_MOVE_M_SPRV10, model_crisv10_move_m_sprv10, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3945 1.1 christos { CRISV10F_INSN_MOVE_C_SPRV10_P5, model_crisv10_move_c_sprv10_p5, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3946 1.1 christos { CRISV10F_INSN_MOVE_C_SPRV10_P9, model_crisv10_move_c_sprv10_p9, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3947 1.1 christos { CRISV10F_INSN_MOVE_C_SPRV10_P10, model_crisv10_move_c_sprv10_p10, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3948 1.1 christos { CRISV10F_INSN_MOVE_C_SPRV10_P11, model_crisv10_move_c_sprv10_p11, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3949 1.1 christos { CRISV10F_INSN_MOVE_C_SPRV10_P12, model_crisv10_move_c_sprv10_p12, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3950 1.1 christos { CRISV10F_INSN_MOVE_C_SPRV10_P13, model_crisv10_move_c_sprv10_p13, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3951 1.1 christos { CRISV10F_INSN_MOVE_C_SPRV10_P7, model_crisv10_move_c_sprv10_p7, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3952 1.1 christos { CRISV10F_INSN_MOVE_C_SPRV10_P14, model_crisv10_move_c_sprv10_p14, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3953 1.1 christos { CRISV10F_INSN_MOVE_C_SPRV10_P15, model_crisv10_move_c_sprv10_p15, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3954 1.1 christos { CRISV10F_INSN_MOVE_SPR_MV10, model_crisv10_move_spr_mv10, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3955 1.1 christos { CRISV10F_INSN_SBFS, model_crisv10_sbfs, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3956 1.1 christos { CRISV10F_INSN_MOVEM_R_M, model_crisv10_movem_r_m, { { (int) UNIT_CRISV10_U_MOVEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3957 1.1 christos { CRISV10F_INSN_MOVEM_M_R, model_crisv10_movem_m_r, { { (int) UNIT_CRISV10_U_MOVEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3958 1.1 christos { CRISV10F_INSN_MOVEM_M_PC, model_crisv10_movem_m_pc, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3959 1.1 christos { CRISV10F_INSN_ADD_B_R, model_crisv10_add_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3960 1.1 christos { CRISV10F_INSN_ADD_W_R, model_crisv10_add_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3961 1.1 christos { CRISV10F_INSN_ADD_D_R, model_crisv10_add_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3962 1.1 christos { CRISV10F_INSN_ADD_M_B_M, model_crisv10_add_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3963 1.1 christos { CRISV10F_INSN_ADD_M_W_M, model_crisv10_add_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3964 1.1 christos { CRISV10F_INSN_ADD_M_D_M, model_crisv10_add_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3965 1.1 christos { CRISV10F_INSN_ADDCBR, model_crisv10_addcbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3966 1.1 christos { CRISV10F_INSN_ADDCWR, model_crisv10_addcwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3967 1.1 christos { CRISV10F_INSN_ADDCDR, model_crisv10_addcdr, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3968 1.1 christos { CRISV10F_INSN_ADDCPC, model_crisv10_addcpc, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_STALL, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3969 1.1 christos { CRISV10F_INSN_ADDS_B_R, model_crisv10_adds_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3970 1.1 christos { CRISV10F_INSN_ADDS_W_R, model_crisv10_adds_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3971 1.1 christos { CRISV10F_INSN_ADDS_M_B_M, model_crisv10_adds_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3972 1.1 christos { CRISV10F_INSN_ADDS_M_W_M, model_crisv10_adds_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3973 1.1 christos { CRISV10F_INSN_ADDSCBR, model_crisv10_addscbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3974 1.1 christos { CRISV10F_INSN_ADDSCWR, model_crisv10_addscwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3975 1.1 christos { CRISV10F_INSN_ADDSPCPC, model_crisv10_addspcpc, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_STALL, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3976 1.1 christos { CRISV10F_INSN_ADDU_B_R, model_crisv10_addu_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3977 1.1 christos { CRISV10F_INSN_ADDU_W_R, model_crisv10_addu_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3978 1.1 christos { CRISV10F_INSN_ADDU_M_B_M, model_crisv10_addu_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3979 1.1 christos { CRISV10F_INSN_ADDU_M_W_M, model_crisv10_addu_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3980 1.1 christos { CRISV10F_INSN_ADDUCBR, model_crisv10_adducbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3981 1.1 christos { CRISV10F_INSN_ADDUCWR, model_crisv10_adducwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3982 1.1 christos { CRISV10F_INSN_SUB_B_R, model_crisv10_sub_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3983 1.1 christos { CRISV10F_INSN_SUB_W_R, model_crisv10_sub_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3984 1.1 christos { CRISV10F_INSN_SUB_D_R, model_crisv10_sub_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3985 1.1 christos { CRISV10F_INSN_SUB_M_B_M, model_crisv10_sub_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3986 1.1 christos { CRISV10F_INSN_SUB_M_W_M, model_crisv10_sub_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3987 1.1 christos { CRISV10F_INSN_SUB_M_D_M, model_crisv10_sub_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3988 1.1 christos { CRISV10F_INSN_SUBCBR, model_crisv10_subcbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3989 1.1 christos { CRISV10F_INSN_SUBCWR, model_crisv10_subcwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3990 1.1 christos { CRISV10F_INSN_SUBCDR, model_crisv10_subcdr, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3991 1.1 christos { CRISV10F_INSN_SUBS_B_R, model_crisv10_subs_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3992 1.1 christos { CRISV10F_INSN_SUBS_W_R, model_crisv10_subs_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3993 1.1 christos { CRISV10F_INSN_SUBS_M_B_M, model_crisv10_subs_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3994 1.1 christos { CRISV10F_INSN_SUBS_M_W_M, model_crisv10_subs_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3995 1.1 christos { CRISV10F_INSN_SUBSCBR, model_crisv10_subscbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3996 1.1 christos { CRISV10F_INSN_SUBSCWR, model_crisv10_subscwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3997 1.1 christos { CRISV10F_INSN_SUBU_B_R, model_crisv10_subu_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3998 1.1 christos { CRISV10F_INSN_SUBU_W_R, model_crisv10_subu_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
3999 1.1 christos { CRISV10F_INSN_SUBU_M_B_M, model_crisv10_subu_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4000 1.1 christos { CRISV10F_INSN_SUBU_M_W_M, model_crisv10_subu_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4001 1.1 christos { CRISV10F_INSN_SUBUCBR, model_crisv10_subucbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4002 1.1 christos { CRISV10F_INSN_SUBUCWR, model_crisv10_subucwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4003 1.1 christos { CRISV10F_INSN_ADDI_B_R, model_crisv10_addi_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4004 1.1 christos { CRISV10F_INSN_ADDI_W_R, model_crisv10_addi_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4005 1.1 christos { CRISV10F_INSN_ADDI_D_R, model_crisv10_addi_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4006 1.1 christos { CRISV10F_INSN_NEG_B_R, model_crisv10_neg_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4007 1.1 christos { CRISV10F_INSN_NEG_W_R, model_crisv10_neg_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4008 1.1 christos { CRISV10F_INSN_NEG_D_R, model_crisv10_neg_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4009 1.1 christos { CRISV10F_INSN_TEST_M_B_M, model_crisv10_test_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4010 1.1 christos { CRISV10F_INSN_TEST_M_W_M, model_crisv10_test_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4011 1.1 christos { CRISV10F_INSN_TEST_M_D_M, model_crisv10_test_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4012 1.1 christos { CRISV10F_INSN_MOVE_R_M_B_M, model_crisv10_move_r_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4013 1.1 christos { CRISV10F_INSN_MOVE_R_M_W_M, model_crisv10_move_r_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4014 1.1 christos { CRISV10F_INSN_MOVE_R_M_D_M, model_crisv10_move_r_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4015 1.1 christos { CRISV10F_INSN_MULS_B, model_crisv10_muls_b, { { (int) UNIT_CRISV10_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4016 1.1 christos { CRISV10F_INSN_MULS_W, model_crisv10_muls_w, { { (int) UNIT_CRISV10_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4017 1.1 christos { CRISV10F_INSN_MULS_D, model_crisv10_muls_d, { { (int) UNIT_CRISV10_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4018 1.1 christos { CRISV10F_INSN_MULU_B, model_crisv10_mulu_b, { { (int) UNIT_CRISV10_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4019 1.1 christos { CRISV10F_INSN_MULU_W, model_crisv10_mulu_w, { { (int) UNIT_CRISV10_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4020 1.1 christos { CRISV10F_INSN_MULU_D, model_crisv10_mulu_d, { { (int) UNIT_CRISV10_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4021 1.1 christos { CRISV10F_INSN_MSTEP, model_crisv10_mstep, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4022 1.1 christos { CRISV10F_INSN_DSTEP, model_crisv10_dstep, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4023 1.1 christos { CRISV10F_INSN_ABS, model_crisv10_abs, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4024 1.1 christos { CRISV10F_INSN_AND_B_R, model_crisv10_and_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4025 1.1 christos { CRISV10F_INSN_AND_W_R, model_crisv10_and_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4026 1.1 christos { CRISV10F_INSN_AND_D_R, model_crisv10_and_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4027 1.1 christos { CRISV10F_INSN_AND_M_B_M, model_crisv10_and_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4028 1.1 christos { CRISV10F_INSN_AND_M_W_M, model_crisv10_and_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4029 1.1 christos { CRISV10F_INSN_AND_M_D_M, model_crisv10_and_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4030 1.1 christos { CRISV10F_INSN_ANDCBR, model_crisv10_andcbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4031 1.1 christos { CRISV10F_INSN_ANDCWR, model_crisv10_andcwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4032 1.1 christos { CRISV10F_INSN_ANDCDR, model_crisv10_andcdr, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4033 1.1 christos { CRISV10F_INSN_ANDQ, model_crisv10_andq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4034 1.1 christos { CRISV10F_INSN_ORR_B_R, model_crisv10_orr_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4035 1.1 christos { CRISV10F_INSN_ORR_W_R, model_crisv10_orr_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4036 1.1 christos { CRISV10F_INSN_ORR_D_R, model_crisv10_orr_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4037 1.1 christos { CRISV10F_INSN_OR_M_B_M, model_crisv10_or_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4038 1.1 christos { CRISV10F_INSN_OR_M_W_M, model_crisv10_or_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4039 1.1 christos { CRISV10F_INSN_OR_M_D_M, model_crisv10_or_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4040 1.1 christos { CRISV10F_INSN_ORCBR, model_crisv10_orcbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4041 1.1 christos { CRISV10F_INSN_ORCWR, model_crisv10_orcwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4042 1.1 christos { CRISV10F_INSN_ORCDR, model_crisv10_orcdr, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4043 1.1 christos { CRISV10F_INSN_ORQ, model_crisv10_orq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4044 1.1 christos { CRISV10F_INSN_XOR, model_crisv10_xor, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4045 1.1 christos { CRISV10F_INSN_SWAP, model_crisv10_swap, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4046 1.1 christos { CRISV10F_INSN_ASRR_B_R, model_crisv10_asrr_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4047 1.1 christos { CRISV10F_INSN_ASRR_W_R, model_crisv10_asrr_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4048 1.1 christos { CRISV10F_INSN_ASRR_D_R, model_crisv10_asrr_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4049 1.1 christos { CRISV10F_INSN_ASRQ, model_crisv10_asrq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4050 1.1 christos { CRISV10F_INSN_LSRR_B_R, model_crisv10_lsrr_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4051 1.1 christos { CRISV10F_INSN_LSRR_W_R, model_crisv10_lsrr_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4052 1.1 christos { CRISV10F_INSN_LSRR_D_R, model_crisv10_lsrr_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4053 1.1 christos { CRISV10F_INSN_LSRQ, model_crisv10_lsrq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4054 1.1 christos { CRISV10F_INSN_LSLR_B_R, model_crisv10_lslr_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4055 1.1 christos { CRISV10F_INSN_LSLR_W_R, model_crisv10_lslr_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4056 1.1 christos { CRISV10F_INSN_LSLR_D_R, model_crisv10_lslr_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4057 1.1 christos { CRISV10F_INSN_LSLQ, model_crisv10_lslq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4058 1.1 christos { CRISV10F_INSN_BTST, model_crisv10_btst, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4059 1.1 christos { CRISV10F_INSN_BTSTQ, model_crisv10_btstq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4060 1.1 christos { CRISV10F_INSN_SETF, model_crisv10_setf, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4061 1.1 christos { CRISV10F_INSN_CLEARF, model_crisv10_clearf, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4062 1.1 christos { CRISV10F_INSN_BCC_B, model_crisv10_bcc_b, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4063 1.1 christos { CRISV10F_INSN_BA_B, model_crisv10_ba_b, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4064 1.1 christos { CRISV10F_INSN_BCC_W, model_crisv10_bcc_w, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4065 1.1 christos { CRISV10F_INSN_BA_W, model_crisv10_ba_w, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4066 1.1 christos { CRISV10F_INSN_JUMP_R, model_crisv10_jump_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4067 1.1 christos { CRISV10F_INSN_JUMP_M, model_crisv10_jump_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4068 1.1 christos { CRISV10F_INSN_JUMP_C, model_crisv10_jump_c, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4069 1.1 christos { CRISV10F_INSN_BREAK, model_crisv10_break, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4070 1.1 christos { CRISV10F_INSN_BOUND_R_B_R, model_crisv10_bound_r_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4071 1.1 christos { CRISV10F_INSN_BOUND_R_W_R, model_crisv10_bound_r_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4072 1.1 christos { CRISV10F_INSN_BOUND_R_D_R, model_crisv10_bound_r_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4073 1.1 christos { CRISV10F_INSN_BOUND_M_B_M, model_crisv10_bound_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4074 1.1 christos { CRISV10F_INSN_BOUND_M_W_M, model_crisv10_bound_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4075 1.1 christos { CRISV10F_INSN_BOUND_M_D_M, model_crisv10_bound_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4076 1.1 christos { CRISV10F_INSN_BOUND_CB, model_crisv10_bound_cb, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4077 1.1 christos { CRISV10F_INSN_BOUND_CW, model_crisv10_bound_cw, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4078 1.1 christos { CRISV10F_INSN_BOUND_CD, model_crisv10_bound_cd, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4079 1.1 christos { CRISV10F_INSN_SCC, model_crisv10_scc, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4080 1.1 christos { CRISV10F_INSN_LZ, model_crisv10_lz, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4081 1.1 christos { CRISV10F_INSN_ADDOQ, model_crisv10_addoq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4082 1.1 christos { CRISV10F_INSN_BDAPQPC, model_crisv10_bdapqpc, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4083 1.1 christos { CRISV10F_INSN_BDAP_32_PC, model_crisv10_bdap_32_pc, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4084 1.1 christos { CRISV10F_INSN_MOVE_M_PCPLUS_P0, model_crisv10_move_m_pcplus_p0, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4085 1.1 christos { CRISV10F_INSN_MOVE_M_SPPLUS_P8, model_crisv10_move_m_spplus_p8, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4086 1.1 christos { CRISV10F_INSN_ADDO_M_B_M, model_crisv10_addo_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4087 1.1 christos { CRISV10F_INSN_ADDO_M_W_M, model_crisv10_addo_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4088 1.1 christos { CRISV10F_INSN_ADDO_M_D_M, model_crisv10_addo_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4089 1.1 christos { CRISV10F_INSN_ADDO_CB, model_crisv10_addo_cb, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4090 1.1 christos { CRISV10F_INSN_ADDO_CW, model_crisv10_addo_cw, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4091 1.1 christos { CRISV10F_INSN_ADDO_CD, model_crisv10_addo_cd, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4092 1.1 christos { CRISV10F_INSN_DIP_M, model_crisv10_dip_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4093 1.1 christos { CRISV10F_INSN_DIP_C, model_crisv10_dip_c, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4094 1.1 christos { CRISV10F_INSN_ADDI_ACR_B_R, model_crisv10_addi_acr_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4095 1.1 christos { CRISV10F_INSN_ADDI_ACR_W_R, model_crisv10_addi_acr_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4096 1.1 christos { CRISV10F_INSN_ADDI_ACR_D_R, model_crisv10_addi_acr_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4097 1.1 christos { CRISV10F_INSN_BIAP_PC_B_R, model_crisv10_biap_pc_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4098 1.1 christos { CRISV10F_INSN_BIAP_PC_W_R, model_crisv10_biap_pc_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4099 1.1 christos { CRISV10F_INSN_BIAP_PC_D_R, model_crisv10_biap_pc_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
4100 1.1 christos };
4101 1.1 christos
4102 1.1 christos #endif /* WITH_PROFILE_MODEL_P */
4103 1.1 christos
4104 1.1 christos static void
4105 1.1 christos crisv10_model_init (SIM_CPU *cpu)
4106 1.1 christos {
4107 1.1 christos CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_CRISV10_DATA));
4108 1.1 christos }
4109 1.1 christos
4110 1.1 christos #if WITH_PROFILE_MODEL_P
4111 1.1 christos #define TIMING_DATA(td) td
4112 1.1 christos #else
4113 1.1 christos #define TIMING_DATA(td) 0
4114 1.1 christos #endif
4115 1.1 christos
4116 1.1 christos static const MODEL crisv10_models[] =
4117 1.1 christos {
4118 1.1 christos { "crisv10", & crisv10_mach, MODEL_CRISV10, TIMING_DATA (& crisv10_timing[0]), crisv10_model_init },
4119 1.1 christos { 0 }
4120 1.1 christos };
4121 1.1 christos
4122 1.1 christos /* The properties of this cpu's implementation. */
4123 1.1 christos
4124 1.1 christos static const MACH_IMP_PROPERTIES crisv10f_imp_properties =
4125 1.1 christos {
4126 1.1 christos sizeof (SIM_CPU),
4127 1.1 christos #if WITH_SCACHE
4128 1.1 christos sizeof (SCACHE)
4129 1.1 christos #else
4130 1.1 christos 0
4131 1.1 christos #endif
4132 1.1 christos };
4133 1.1 christos
4134 1.1 christos
4135 1.1 christos static void
4136 1.1 christos crisv10f_prepare_run (SIM_CPU *cpu)
4137 1.1 christos {
4138 1.1 christos if (CPU_IDESC (cpu) == NULL)
4139 1.1 christos crisv10f_init_idesc_table (cpu);
4140 1.1 christos }
4141 1.1 christos
4142 1.1 christos static const CGEN_INSN *
4143 1.1 christos crisv10f_get_idata (SIM_CPU *cpu, int inum)
4144 1.1 christos {
4145 1.1 christos return CPU_IDESC (cpu) [inum].idata;
4146 1.1 christos }
4147 1.1 christos
4148 1.1 christos static void
4149 1.1 christos crisv10_init_cpu (SIM_CPU *cpu)
4150 1.1 christos {
4151 1.1 christos CPU_REG_FETCH (cpu) = crisv10f_fetch_register;
4152 1.1 christos CPU_REG_STORE (cpu) = crisv10f_store_register;
4153 1.1 christos CPU_PC_FETCH (cpu) = crisv10f_h_pc_get;
4154 1.1 christos CPU_PC_STORE (cpu) = crisv10f_h_pc_set;
4155 1.1 christos CPU_GET_IDATA (cpu) = crisv10f_get_idata;
4156 1.1 christos CPU_MAX_INSNS (cpu) = CRISV10F_INSN__MAX;
4157 1.1 christos CPU_INSN_NAME (cpu) = cgen_insn_name;
4158 1.1 christos CPU_FULL_ENGINE_FN (cpu) = crisv10f_engine_run_full;
4159 1.1 christos #if WITH_FAST
4160 1.1 christos CPU_FAST_ENGINE_FN (cpu) = crisv10f_engine_run_fast;
4161 1.1 christos #else
4162 1.1 christos CPU_FAST_ENGINE_FN (cpu) = crisv10f_engine_run_full;
4163 1.1 christos #endif
4164 1.1 christos }
4165 1.1 christos
4166 1.1 christos const MACH crisv10_mach =
4167 1.1 christos {
4168 1.1 christos "crisv10", "cris", MACH_CRISV10,
4169 1.1 christos 32, 32, & crisv10_models[0], & crisv10f_imp_properties,
4170 1.1 christos crisv10_init_cpu,
4171 1.1 christos crisv10f_prepare_run
4172 1.1 christos };
4173 1.1 christos
4174