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