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