1/* Simulator model support for crisv32f. 2 3THIS FILE IS MACHINE GENERATED WITH CGEN. 4 5Copyright 1996-2020 Free Software Foundation, Inc. 6 7This file is part of the GNU simulators. 8 9 This file is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation; either version 3, or (at your option) 12 any later version. 13 14 It is distributed in the hope that it will be useful, but WITHOUT 15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 17 License for more details. 18 19 You should have received a copy of the GNU General Public License along 20 with this program; if not, see <http://www.gnu.org/licenses/>. 21 22*/ 23 24#define WANT_CPU crisv32f 25#define WANT_CPU_CRISV32F 26 27#include "sim-main.h" 28 29/* The profiling data is recorded here, but is accessed via the profiling 30 mechanism. After all, this is information for profiling. */ 31 32#if WITH_PROFILE_MODEL_P 33 34/* Model handlers for each insn. */ 35 36static int 37model_crisv32_move_b_r (SIM_CPU *current_cpu, void *sem_arg) 38{ 39#define FLD(f) abuf->fields.sfmt_addc_m.f 40 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 41 const IDESC * UNUSED idesc = abuf->idesc; 42 int cycles = 0; 43 { 44 int referenced = 0; 45 int UNUSED insn_referenced = abuf->written; 46 INT in_Rd = -1; 47 INT in_Rs = -1; 48 INT out_Rd = -1; 49 in_Rs = FLD (in_Rs); 50 referenced |= 1 << 1; 51 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 52 } 53 return cycles; 54#undef FLD 55} 56 57static int 58model_crisv32_move_w_r (SIM_CPU *current_cpu, void *sem_arg) 59{ 60#define FLD(f) abuf->fields.sfmt_addc_m.f 61 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 62 const IDESC * UNUSED idesc = abuf->idesc; 63 int cycles = 0; 64 { 65 int referenced = 0; 66 int UNUSED insn_referenced = abuf->written; 67 INT in_Rd = -1; 68 INT in_Rs = -1; 69 INT out_Rd = -1; 70 in_Rs = FLD (in_Rs); 71 referenced |= 1 << 1; 72 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 73 } 74 return cycles; 75#undef FLD 76} 77 78static int 79model_crisv32_move_d_r (SIM_CPU *current_cpu, void *sem_arg) 80{ 81#define FLD(f) abuf->fields.sfmt_addc_m.f 82 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 83 const IDESC * UNUSED idesc = abuf->idesc; 84 int cycles = 0; 85 { 86 int referenced = 0; 87 int UNUSED insn_referenced = abuf->written; 88 INT in_Rd = -1; 89 INT in_Rs = -1; 90 INT out_Rd = -1; 91 in_Rs = FLD (in_Rs); 92 referenced |= 1 << 1; 93 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 94 } 95 return cycles; 96#undef FLD 97} 98 99static int 100model_crisv32_moveq (SIM_CPU *current_cpu, void *sem_arg) 101{ 102#define FLD(f) abuf->fields.sfmt_moveq.f 103 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 104 const IDESC * UNUSED idesc = abuf->idesc; 105 int cycles = 0; 106 { 107 int referenced = 0; 108 int UNUSED insn_referenced = abuf->written; 109 INT in_Rd = -1; 110 INT in_Rs = -1; 111 INT out_Rd = -1; 112 out_Rd = FLD (out_Rd); 113 referenced |= 1 << 2; 114 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 115 } 116 return cycles; 117#undef FLD 118} 119 120static int 121model_crisv32_movs_b_r (SIM_CPU *current_cpu, void *sem_arg) 122{ 123#define FLD(f) abuf->fields.sfmt_muls_b.f 124 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 125 const IDESC * UNUSED idesc = abuf->idesc; 126 int cycles = 0; 127 { 128 int referenced = 0; 129 int UNUSED insn_referenced = abuf->written; 130 INT in_Rd = -1; 131 INT in_Rs = -1; 132 INT out_Rd = -1; 133 in_Rs = FLD (in_Rs); 134 out_Rd = FLD (out_Rd); 135 referenced |= 1 << 1; 136 referenced |= 1 << 2; 137 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 138 } 139 return cycles; 140#undef FLD 141} 142 143static int 144model_crisv32_movs_w_r (SIM_CPU *current_cpu, void *sem_arg) 145{ 146#define FLD(f) abuf->fields.sfmt_muls_b.f 147 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 148 const IDESC * UNUSED idesc = abuf->idesc; 149 int cycles = 0; 150 { 151 int referenced = 0; 152 int UNUSED insn_referenced = abuf->written; 153 INT in_Rd = -1; 154 INT in_Rs = -1; 155 INT out_Rd = -1; 156 in_Rs = FLD (in_Rs); 157 out_Rd = FLD (out_Rd); 158 referenced |= 1 << 1; 159 referenced |= 1 << 2; 160 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 161 } 162 return cycles; 163#undef FLD 164} 165 166static int 167model_crisv32_movu_b_r (SIM_CPU *current_cpu, void *sem_arg) 168{ 169#define FLD(f) abuf->fields.sfmt_muls_b.f 170 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 171 const IDESC * UNUSED idesc = abuf->idesc; 172 int cycles = 0; 173 { 174 int referenced = 0; 175 int UNUSED insn_referenced = abuf->written; 176 INT in_Rd = -1; 177 INT in_Rs = -1; 178 INT out_Rd = -1; 179 in_Rs = FLD (in_Rs); 180 out_Rd = FLD (out_Rd); 181 referenced |= 1 << 1; 182 referenced |= 1 << 2; 183 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 184 } 185 return cycles; 186#undef FLD 187} 188 189static int 190model_crisv32_movu_w_r (SIM_CPU *current_cpu, void *sem_arg) 191{ 192#define FLD(f) abuf->fields.sfmt_muls_b.f 193 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 194 const IDESC * UNUSED idesc = abuf->idesc; 195 int cycles = 0; 196 { 197 int referenced = 0; 198 int UNUSED insn_referenced = abuf->written; 199 INT in_Rd = -1; 200 INT in_Rs = -1; 201 INT out_Rd = -1; 202 in_Rs = FLD (in_Rs); 203 out_Rd = FLD (out_Rd); 204 referenced |= 1 << 1; 205 referenced |= 1 << 2; 206 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 207 } 208 return cycles; 209#undef FLD 210} 211 212static int 213model_crisv32_movecbr (SIM_CPU *current_cpu, void *sem_arg) 214{ 215#define FLD(f) abuf->fields.sfmt_addcbr.f 216 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 217 const IDESC * UNUSED idesc = abuf->idesc; 218 int cycles = 0; 219 { 220 int referenced = 0; 221 int UNUSED insn_referenced = abuf->written; 222 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 223 } 224 { 225 int referenced = 0; 226 int UNUSED insn_referenced = abuf->written; 227 INT in_Rd = -1; 228 INT in_Rs = -1; 229 INT out_Rd = -1; 230 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 231 } 232 return cycles; 233#undef FLD 234} 235 236static int 237model_crisv32_movecwr (SIM_CPU *current_cpu, void *sem_arg) 238{ 239#define FLD(f) abuf->fields.sfmt_addcwr.f 240 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 241 const IDESC * UNUSED idesc = abuf->idesc; 242 int cycles = 0; 243 { 244 int referenced = 0; 245 int UNUSED insn_referenced = abuf->written; 246 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 247 } 248 { 249 int referenced = 0; 250 int UNUSED insn_referenced = abuf->written; 251 INT in_Rd = -1; 252 INT in_Rs = -1; 253 INT out_Rd = -1; 254 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 255 } 256 return cycles; 257#undef FLD 258} 259 260static int 261model_crisv32_movecdr (SIM_CPU *current_cpu, void *sem_arg) 262{ 263#define FLD(f) abuf->fields.sfmt_bound_cd.f 264 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 265 const IDESC * UNUSED idesc = abuf->idesc; 266 int cycles = 0; 267 { 268 int referenced = 0; 269 int UNUSED insn_referenced = abuf->written; 270 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 271 } 272 { 273 int referenced = 0; 274 int UNUSED insn_referenced = abuf->written; 275 INT in_Rd = -1; 276 INT in_Rs = -1; 277 INT out_Rd = -1; 278 out_Rd = FLD (out_Rd); 279 referenced |= 1 << 2; 280 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 281 } 282 return cycles; 283#undef FLD 284} 285 286static int 287model_crisv32_movscbr (SIM_CPU *current_cpu, void *sem_arg) 288{ 289#define FLD(f) abuf->fields.sfmt_bound_cb.f 290 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 291 const IDESC * UNUSED idesc = abuf->idesc; 292 int cycles = 0; 293 { 294 int referenced = 0; 295 int UNUSED insn_referenced = abuf->written; 296 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 297 } 298 { 299 int referenced = 0; 300 int UNUSED insn_referenced = abuf->written; 301 INT in_Rd = -1; 302 INT in_Rs = -1; 303 INT out_Rd = -1; 304 out_Rd = FLD (out_Rd); 305 referenced |= 1 << 2; 306 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 307 } 308 return cycles; 309#undef FLD 310} 311 312static int 313model_crisv32_movscwr (SIM_CPU *current_cpu, void *sem_arg) 314{ 315#define FLD(f) abuf->fields.sfmt_bound_cw.f 316 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 317 const IDESC * UNUSED idesc = abuf->idesc; 318 int cycles = 0; 319 { 320 int referenced = 0; 321 int UNUSED insn_referenced = abuf->written; 322 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 323 } 324 { 325 int referenced = 0; 326 int UNUSED insn_referenced = abuf->written; 327 INT in_Rd = -1; 328 INT in_Rs = -1; 329 INT out_Rd = -1; 330 out_Rd = FLD (out_Rd); 331 referenced |= 1 << 2; 332 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 333 } 334 return cycles; 335#undef FLD 336} 337 338static int 339model_crisv32_movucbr (SIM_CPU *current_cpu, void *sem_arg) 340{ 341#define FLD(f) abuf->fields.sfmt_bound_cb.f 342 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 343 const IDESC * UNUSED idesc = abuf->idesc; 344 int cycles = 0; 345 { 346 int referenced = 0; 347 int UNUSED insn_referenced = abuf->written; 348 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 349 } 350 { 351 int referenced = 0; 352 int UNUSED insn_referenced = abuf->written; 353 INT in_Rd = -1; 354 INT in_Rs = -1; 355 INT out_Rd = -1; 356 out_Rd = FLD (out_Rd); 357 referenced |= 1 << 2; 358 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 359 } 360 return cycles; 361#undef FLD 362} 363 364static int 365model_crisv32_movucwr (SIM_CPU *current_cpu, void *sem_arg) 366{ 367#define FLD(f) abuf->fields.sfmt_bound_cw.f 368 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 369 const IDESC * UNUSED idesc = abuf->idesc; 370 int cycles = 0; 371 { 372 int referenced = 0; 373 int UNUSED insn_referenced = abuf->written; 374 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 375 } 376 { 377 int referenced = 0; 378 int UNUSED insn_referenced = abuf->written; 379 INT in_Rd = -1; 380 INT in_Rs = -1; 381 INT out_Rd = -1; 382 out_Rd = FLD (out_Rd); 383 referenced |= 1 << 2; 384 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 385 } 386 return cycles; 387#undef FLD 388} 389 390static int 391model_crisv32_addq (SIM_CPU *current_cpu, void *sem_arg) 392{ 393#define FLD(f) abuf->fields.sfmt_addq.f 394 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 395 const IDESC * UNUSED idesc = abuf->idesc; 396 int cycles = 0; 397 { 398 int referenced = 0; 399 int UNUSED insn_referenced = abuf->written; 400 INT in_Rd = -1; 401 INT in_Rs = -1; 402 INT out_Rd = -1; 403 in_Rd = FLD (in_Rd); 404 referenced |= 1 << 0; 405 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 406 } 407 return cycles; 408#undef FLD 409} 410 411static int 412model_crisv32_subq (SIM_CPU *current_cpu, void *sem_arg) 413{ 414#define FLD(f) abuf->fields.sfmt_addq.f 415 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 416 const IDESC * UNUSED idesc = abuf->idesc; 417 int cycles = 0; 418 { 419 int referenced = 0; 420 int UNUSED insn_referenced = abuf->written; 421 INT in_Rd = -1; 422 INT in_Rs = -1; 423 INT out_Rd = -1; 424 in_Rd = FLD (in_Rd); 425 referenced |= 1 << 0; 426 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 427 } 428 return cycles; 429#undef FLD 430} 431 432static int 433model_crisv32_cmp_r_b_r (SIM_CPU *current_cpu, void *sem_arg) 434{ 435#define FLD(f) abuf->fields.sfmt_muls_b.f 436 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 437 const IDESC * UNUSED idesc = abuf->idesc; 438 int cycles = 0; 439 { 440 int referenced = 0; 441 int UNUSED insn_referenced = abuf->written; 442 INT in_Rd = -1; 443 INT in_Rs = -1; 444 INT out_Rd = -1; 445 in_Rd = FLD (in_Rd); 446 in_Rs = FLD (in_Rs); 447 referenced |= 1 << 0; 448 referenced |= 1 << 1; 449 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 450 } 451 return cycles; 452#undef FLD 453} 454 455static int 456model_crisv32_cmp_r_w_r (SIM_CPU *current_cpu, void *sem_arg) 457{ 458#define FLD(f) abuf->fields.sfmt_muls_b.f 459 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 460 const IDESC * UNUSED idesc = abuf->idesc; 461 int cycles = 0; 462 { 463 int referenced = 0; 464 int UNUSED insn_referenced = abuf->written; 465 INT in_Rd = -1; 466 INT in_Rs = -1; 467 INT out_Rd = -1; 468 in_Rd = FLD (in_Rd); 469 in_Rs = FLD (in_Rs); 470 referenced |= 1 << 0; 471 referenced |= 1 << 1; 472 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 473 } 474 return cycles; 475#undef FLD 476} 477 478static int 479model_crisv32_cmp_r_d_r (SIM_CPU *current_cpu, void *sem_arg) 480{ 481#define FLD(f) abuf->fields.sfmt_muls_b.f 482 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 483 const IDESC * UNUSED idesc = abuf->idesc; 484 int cycles = 0; 485 { 486 int referenced = 0; 487 int UNUSED insn_referenced = abuf->written; 488 INT in_Rd = -1; 489 INT in_Rs = -1; 490 INT out_Rd = -1; 491 in_Rd = FLD (in_Rd); 492 in_Rs = FLD (in_Rs); 493 referenced |= 1 << 0; 494 referenced |= 1 << 1; 495 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 496 } 497 return cycles; 498#undef FLD 499} 500 501static int 502model_crisv32_cmp_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 503{ 504#define FLD(f) abuf->fields.sfmt_addc_m.f 505 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 506 const IDESC * UNUSED idesc = abuf->idesc; 507 int cycles = 0; 508 { 509 int referenced = 0; 510 int UNUSED insn_referenced = abuf->written; 511 INT in_Rs = -1; 512 in_Rs = FLD (in_Rs); 513 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 514 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 515 } 516 { 517 int referenced = 0; 518 int UNUSED insn_referenced = abuf->written; 519 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 520 } 521 { 522 int referenced = 0; 523 int UNUSED insn_referenced = abuf->written; 524 INT in_Rd = -1; 525 INT in_Rs = -1; 526 INT out_Rd = -1; 527 in_Rd = FLD (in_Rd); 528 in_Rs = FLD (in_Rs); 529 referenced |= 1 << 0; 530 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 531 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 532 } 533 return cycles; 534#undef FLD 535} 536 537static int 538model_crisv32_cmp_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 539{ 540#define FLD(f) abuf->fields.sfmt_addc_m.f 541 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 542 const IDESC * UNUSED idesc = abuf->idesc; 543 int cycles = 0; 544 { 545 int referenced = 0; 546 int UNUSED insn_referenced = abuf->written; 547 INT in_Rs = -1; 548 in_Rs = FLD (in_Rs); 549 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 550 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 551 } 552 { 553 int referenced = 0; 554 int UNUSED insn_referenced = abuf->written; 555 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 556 } 557 { 558 int referenced = 0; 559 int UNUSED insn_referenced = abuf->written; 560 INT in_Rd = -1; 561 INT in_Rs = -1; 562 INT out_Rd = -1; 563 in_Rd = FLD (in_Rd); 564 in_Rs = FLD (in_Rs); 565 referenced |= 1 << 0; 566 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 567 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 568 } 569 return cycles; 570#undef FLD 571} 572 573static int 574model_crisv32_cmp_m_d_m (SIM_CPU *current_cpu, void *sem_arg) 575{ 576#define FLD(f) abuf->fields.sfmt_addc_m.f 577 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 578 const IDESC * UNUSED idesc = abuf->idesc; 579 int cycles = 0; 580 { 581 int referenced = 0; 582 int UNUSED insn_referenced = abuf->written; 583 INT in_Rs = -1; 584 in_Rs = FLD (in_Rs); 585 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 586 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 587 } 588 { 589 int referenced = 0; 590 int UNUSED insn_referenced = abuf->written; 591 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 592 } 593 { 594 int referenced = 0; 595 int UNUSED insn_referenced = abuf->written; 596 INT in_Rd = -1; 597 INT in_Rs = -1; 598 INT out_Rd = -1; 599 in_Rd = FLD (in_Rd); 600 in_Rs = FLD (in_Rs); 601 referenced |= 1 << 0; 602 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 603 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 604 } 605 return cycles; 606#undef FLD 607} 608 609static int 610model_crisv32_cmpcbr (SIM_CPU *current_cpu, void *sem_arg) 611{ 612#define FLD(f) abuf->fields.sfmt_bound_cb.f 613 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 614 const IDESC * UNUSED idesc = abuf->idesc; 615 int cycles = 0; 616 { 617 int referenced = 0; 618 int UNUSED insn_referenced = abuf->written; 619 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 620 } 621 { 622 int referenced = 0; 623 int UNUSED insn_referenced = abuf->written; 624 INT in_Rd = -1; 625 INT in_Rs = -1; 626 INT out_Rd = -1; 627 in_Rd = FLD (in_Rd); 628 referenced |= 1 << 0; 629 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 630 } 631 return cycles; 632#undef FLD 633} 634 635static int 636model_crisv32_cmpcwr (SIM_CPU *current_cpu, void *sem_arg) 637{ 638#define FLD(f) abuf->fields.sfmt_bound_cw.f 639 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 640 const IDESC * UNUSED idesc = abuf->idesc; 641 int cycles = 0; 642 { 643 int referenced = 0; 644 int UNUSED insn_referenced = abuf->written; 645 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 646 } 647 { 648 int referenced = 0; 649 int UNUSED insn_referenced = abuf->written; 650 INT in_Rd = -1; 651 INT in_Rs = -1; 652 INT out_Rd = -1; 653 in_Rd = FLD (in_Rd); 654 referenced |= 1 << 0; 655 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 656 } 657 return cycles; 658#undef FLD 659} 660 661static int 662model_crisv32_cmpcdr (SIM_CPU *current_cpu, void *sem_arg) 663{ 664#define FLD(f) abuf->fields.sfmt_bound_cd.f 665 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 666 const IDESC * UNUSED idesc = abuf->idesc; 667 int cycles = 0; 668 { 669 int referenced = 0; 670 int UNUSED insn_referenced = abuf->written; 671 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 672 } 673 { 674 int referenced = 0; 675 int UNUSED insn_referenced = abuf->written; 676 INT in_Rd = -1; 677 INT in_Rs = -1; 678 INT out_Rd = -1; 679 in_Rd = FLD (in_Rd); 680 referenced |= 1 << 0; 681 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 682 } 683 return cycles; 684#undef FLD 685} 686 687static int 688model_crisv32_cmpq (SIM_CPU *current_cpu, void *sem_arg) 689{ 690#define FLD(f) abuf->fields.sfmt_andq.f 691 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 692 const IDESC * UNUSED idesc = abuf->idesc; 693 int cycles = 0; 694 { 695 int referenced = 0; 696 int UNUSED insn_referenced = abuf->written; 697 INT in_Rd = -1; 698 INT in_Rs = -1; 699 INT out_Rd = -1; 700 in_Rd = FLD (in_Rd); 701 referenced |= 1 << 0; 702 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 703 } 704 return cycles; 705#undef FLD 706} 707 708static int 709model_crisv32_cmps_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 710{ 711#define FLD(f) abuf->fields.sfmt_addc_m.f 712 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 713 const IDESC * UNUSED idesc = abuf->idesc; 714 int cycles = 0; 715 { 716 int referenced = 0; 717 int UNUSED insn_referenced = abuf->written; 718 INT in_Rs = -1; 719 in_Rs = FLD (in_Rs); 720 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 721 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 722 } 723 { 724 int referenced = 0; 725 int UNUSED insn_referenced = abuf->written; 726 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 727 } 728 { 729 int referenced = 0; 730 int UNUSED insn_referenced = abuf->written; 731 INT in_Rd = -1; 732 INT in_Rs = -1; 733 INT out_Rd = -1; 734 in_Rd = FLD (in_Rd); 735 in_Rs = FLD (in_Rs); 736 referenced |= 1 << 0; 737 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 738 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 739 } 740 return cycles; 741#undef FLD 742} 743 744static int 745model_crisv32_cmps_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 746{ 747#define FLD(f) abuf->fields.sfmt_addc_m.f 748 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 749 const IDESC * UNUSED idesc = abuf->idesc; 750 int cycles = 0; 751 { 752 int referenced = 0; 753 int UNUSED insn_referenced = abuf->written; 754 INT in_Rs = -1; 755 in_Rs = FLD (in_Rs); 756 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 757 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 758 } 759 { 760 int referenced = 0; 761 int UNUSED insn_referenced = abuf->written; 762 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 763 } 764 { 765 int referenced = 0; 766 int UNUSED insn_referenced = abuf->written; 767 INT in_Rd = -1; 768 INT in_Rs = -1; 769 INT out_Rd = -1; 770 in_Rd = FLD (in_Rd); 771 in_Rs = FLD (in_Rs); 772 referenced |= 1 << 0; 773 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 774 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 775 } 776 return cycles; 777#undef FLD 778} 779 780static int 781model_crisv32_cmpscbr (SIM_CPU *current_cpu, void *sem_arg) 782{ 783#define FLD(f) abuf->fields.sfmt_bound_cb.f 784 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 785 const IDESC * UNUSED idesc = abuf->idesc; 786 int cycles = 0; 787 { 788 int referenced = 0; 789 int UNUSED insn_referenced = abuf->written; 790 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 791 } 792 { 793 int referenced = 0; 794 int UNUSED insn_referenced = abuf->written; 795 INT in_Rd = -1; 796 INT in_Rs = -1; 797 INT out_Rd = -1; 798 in_Rd = FLD (in_Rd); 799 referenced |= 1 << 0; 800 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 801 } 802 return cycles; 803#undef FLD 804} 805 806static int 807model_crisv32_cmpscwr (SIM_CPU *current_cpu, void *sem_arg) 808{ 809#define FLD(f) abuf->fields.sfmt_bound_cw.f 810 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 811 const IDESC * UNUSED idesc = abuf->idesc; 812 int cycles = 0; 813 { 814 int referenced = 0; 815 int UNUSED insn_referenced = abuf->written; 816 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 817 } 818 { 819 int referenced = 0; 820 int UNUSED insn_referenced = abuf->written; 821 INT in_Rd = -1; 822 INT in_Rs = -1; 823 INT out_Rd = -1; 824 in_Rd = FLD (in_Rd); 825 referenced |= 1 << 0; 826 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 827 } 828 return cycles; 829#undef FLD 830} 831 832static int 833model_crisv32_cmpu_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 834{ 835#define FLD(f) abuf->fields.sfmt_addc_m.f 836 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 837 const IDESC * UNUSED idesc = abuf->idesc; 838 int cycles = 0; 839 { 840 int referenced = 0; 841 int UNUSED insn_referenced = abuf->written; 842 INT in_Rs = -1; 843 in_Rs = FLD (in_Rs); 844 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 845 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 846 } 847 { 848 int referenced = 0; 849 int UNUSED insn_referenced = abuf->written; 850 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 851 } 852 { 853 int referenced = 0; 854 int UNUSED insn_referenced = abuf->written; 855 INT in_Rd = -1; 856 INT in_Rs = -1; 857 INT out_Rd = -1; 858 in_Rd = FLD (in_Rd); 859 in_Rs = FLD (in_Rs); 860 referenced |= 1 << 0; 861 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 862 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 863 } 864 return cycles; 865#undef FLD 866} 867 868static int 869model_crisv32_cmpu_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 870{ 871#define FLD(f) abuf->fields.sfmt_addc_m.f 872 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 873 const IDESC * UNUSED idesc = abuf->idesc; 874 int cycles = 0; 875 { 876 int referenced = 0; 877 int UNUSED insn_referenced = abuf->written; 878 INT in_Rs = -1; 879 in_Rs = FLD (in_Rs); 880 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 881 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 882 } 883 { 884 int referenced = 0; 885 int UNUSED insn_referenced = abuf->written; 886 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 887 } 888 { 889 int referenced = 0; 890 int UNUSED insn_referenced = abuf->written; 891 INT in_Rd = -1; 892 INT in_Rs = -1; 893 INT out_Rd = -1; 894 in_Rd = FLD (in_Rd); 895 in_Rs = FLD (in_Rs); 896 referenced |= 1 << 0; 897 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 898 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 899 } 900 return cycles; 901#undef FLD 902} 903 904static int 905model_crisv32_cmpucbr (SIM_CPU *current_cpu, void *sem_arg) 906{ 907#define FLD(f) abuf->fields.sfmt_bound_cb.f 908 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 909 const IDESC * UNUSED idesc = abuf->idesc; 910 int cycles = 0; 911 { 912 int referenced = 0; 913 int UNUSED insn_referenced = abuf->written; 914 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 915 } 916 { 917 int referenced = 0; 918 int UNUSED insn_referenced = abuf->written; 919 INT in_Rd = -1; 920 INT in_Rs = -1; 921 INT out_Rd = -1; 922 in_Rd = FLD (in_Rd); 923 referenced |= 1 << 0; 924 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 925 } 926 return cycles; 927#undef FLD 928} 929 930static int 931model_crisv32_cmpucwr (SIM_CPU *current_cpu, void *sem_arg) 932{ 933#define FLD(f) abuf->fields.sfmt_bound_cw.f 934 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 935 const IDESC * UNUSED idesc = abuf->idesc; 936 int cycles = 0; 937 { 938 int referenced = 0; 939 int UNUSED insn_referenced = abuf->written; 940 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 941 } 942 { 943 int referenced = 0; 944 int UNUSED insn_referenced = abuf->written; 945 INT in_Rd = -1; 946 INT in_Rs = -1; 947 INT out_Rd = -1; 948 in_Rd = FLD (in_Rd); 949 referenced |= 1 << 0; 950 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 951 } 952 return cycles; 953#undef FLD 954} 955 956static int 957model_crisv32_move_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 958{ 959#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 960 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 961 const IDESC * UNUSED idesc = abuf->idesc; 962 int cycles = 0; 963 { 964 int referenced = 0; 965 int UNUSED insn_referenced = abuf->written; 966 INT in_Rs = -1; 967 in_Rs = FLD (in_Rs); 968 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 969 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 970 } 971 { 972 int referenced = 0; 973 int UNUSED insn_referenced = abuf->written; 974 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 975 } 976 { 977 int referenced = 0; 978 int UNUSED insn_referenced = abuf->written; 979 INT in_Rd = -1; 980 INT in_Rs = -1; 981 INT out_Rd = -1; 982 in_Rs = FLD (in_Rs); 983 if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 984 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 985 } 986 return cycles; 987#undef FLD 988} 989 990static int 991model_crisv32_move_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 992{ 993#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 994 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 995 const IDESC * UNUSED idesc = abuf->idesc; 996 int cycles = 0; 997 { 998 int referenced = 0; 999 int UNUSED insn_referenced = abuf->written; 1000 INT in_Rs = -1; 1001 in_Rs = FLD (in_Rs); 1002 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 1003 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 1004 } 1005 { 1006 int referenced = 0; 1007 int UNUSED insn_referenced = abuf->written; 1008 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 1009 } 1010 { 1011 int referenced = 0; 1012 int UNUSED insn_referenced = abuf->written; 1013 INT in_Rd = -1; 1014 INT in_Rs = -1; 1015 INT out_Rd = -1; 1016 in_Rs = FLD (in_Rs); 1017 if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 1018 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 1019 } 1020 return cycles; 1021#undef FLD 1022} 1023 1024static int 1025model_crisv32_move_m_d_m (SIM_CPU *current_cpu, void *sem_arg) 1026{ 1027#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 1028 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1029 const IDESC * UNUSED idesc = abuf->idesc; 1030 int cycles = 0; 1031 { 1032 int referenced = 0; 1033 int UNUSED insn_referenced = abuf->written; 1034 INT in_Rs = -1; 1035 in_Rs = FLD (in_Rs); 1036 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 1037 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 1038 } 1039 { 1040 int referenced = 0; 1041 int UNUSED insn_referenced = abuf->written; 1042 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 1043 } 1044 { 1045 int referenced = 0; 1046 int UNUSED insn_referenced = abuf->written; 1047 INT in_Rd = -1; 1048 INT in_Rs = -1; 1049 INT out_Rd = -1; 1050 in_Rs = FLD (in_Rs); 1051 if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 1052 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 1053 } 1054 return cycles; 1055#undef FLD 1056} 1057 1058static int 1059model_crisv32_movs_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 1060{ 1061#define FLD(f) abuf->fields.sfmt_movs_m_b_m.f 1062 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1063 const IDESC * UNUSED idesc = abuf->idesc; 1064 int cycles = 0; 1065 { 1066 int referenced = 0; 1067 int UNUSED insn_referenced = abuf->written; 1068 INT in_Rs = -1; 1069 in_Rs = FLD (in_Rs); 1070 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 1071 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 1072 } 1073 { 1074 int referenced = 0; 1075 int UNUSED insn_referenced = abuf->written; 1076 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 1077 } 1078 { 1079 int referenced = 0; 1080 int UNUSED insn_referenced = abuf->written; 1081 INT in_Rd = -1; 1082 INT in_Rs = -1; 1083 INT out_Rd = -1; 1084 in_Rs = FLD (in_Rs); 1085 out_Rd = FLD (out_Rd); 1086 if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 1087 if (insn_referenced & (1 << 7)) referenced |= 1 << 2; 1088 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 1089 } 1090 return cycles; 1091#undef FLD 1092} 1093 1094static int 1095model_crisv32_movs_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 1096{ 1097#define FLD(f) abuf->fields.sfmt_movs_m_b_m.f 1098 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1099 const IDESC * UNUSED idesc = abuf->idesc; 1100 int cycles = 0; 1101 { 1102 int referenced = 0; 1103 int UNUSED insn_referenced = abuf->written; 1104 INT in_Rs = -1; 1105 in_Rs = FLD (in_Rs); 1106 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 1107 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 1108 } 1109 { 1110 int referenced = 0; 1111 int UNUSED insn_referenced = abuf->written; 1112 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 1113 } 1114 { 1115 int referenced = 0; 1116 int UNUSED insn_referenced = abuf->written; 1117 INT in_Rd = -1; 1118 INT in_Rs = -1; 1119 INT out_Rd = -1; 1120 in_Rs = FLD (in_Rs); 1121 out_Rd = FLD (out_Rd); 1122 if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 1123 if (insn_referenced & (1 << 7)) referenced |= 1 << 2; 1124 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 1125 } 1126 return cycles; 1127#undef FLD 1128} 1129 1130static int 1131model_crisv32_movu_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 1132{ 1133#define FLD(f) abuf->fields.sfmt_movs_m_b_m.f 1134 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1135 const IDESC * UNUSED idesc = abuf->idesc; 1136 int cycles = 0; 1137 { 1138 int referenced = 0; 1139 int UNUSED insn_referenced = abuf->written; 1140 INT in_Rs = -1; 1141 in_Rs = FLD (in_Rs); 1142 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 1143 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 1144 } 1145 { 1146 int referenced = 0; 1147 int UNUSED insn_referenced = abuf->written; 1148 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 1149 } 1150 { 1151 int referenced = 0; 1152 int UNUSED insn_referenced = abuf->written; 1153 INT in_Rd = -1; 1154 INT in_Rs = -1; 1155 INT out_Rd = -1; 1156 in_Rs = FLD (in_Rs); 1157 out_Rd = FLD (out_Rd); 1158 if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 1159 if (insn_referenced & (1 << 7)) referenced |= 1 << 2; 1160 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 1161 } 1162 return cycles; 1163#undef FLD 1164} 1165 1166static int 1167model_crisv32_movu_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 1168{ 1169#define FLD(f) abuf->fields.sfmt_movs_m_b_m.f 1170 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1171 const IDESC * UNUSED idesc = abuf->idesc; 1172 int cycles = 0; 1173 { 1174 int referenced = 0; 1175 int UNUSED insn_referenced = abuf->written; 1176 INT in_Rs = -1; 1177 in_Rs = FLD (in_Rs); 1178 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 1179 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 1180 } 1181 { 1182 int referenced = 0; 1183 int UNUSED insn_referenced = abuf->written; 1184 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 1185 } 1186 { 1187 int referenced = 0; 1188 int UNUSED insn_referenced = abuf->written; 1189 INT in_Rd = -1; 1190 INT in_Rs = -1; 1191 INT out_Rd = -1; 1192 in_Rs = FLD (in_Rs); 1193 out_Rd = FLD (out_Rd); 1194 if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 1195 if (insn_referenced & (1 << 7)) referenced |= 1 << 2; 1196 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 1197 } 1198 return cycles; 1199#undef FLD 1200} 1201 1202static int 1203model_crisv32_move_r_sprv32 (SIM_CPU *current_cpu, void *sem_arg) 1204{ 1205#define FLD(f) abuf->fields.sfmt_move_m_sprv32.f 1206 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1207 const IDESC * UNUSED idesc = abuf->idesc; 1208 int cycles = 0; 1209 { 1210 int referenced = 0; 1211 int UNUSED insn_referenced = abuf->written; 1212 INT in_Rs = -1; 1213 INT out_Pd = -1; 1214 in_Rs = FLD (in_Rs); 1215 out_Pd = FLD (out_Pd); 1216 referenced |= 1 << 0; 1217 if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 1218 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 0, referenced, in_Rs, out_Pd); 1219 } 1220 return cycles; 1221#undef FLD 1222} 1223 1224static int 1225model_crisv32_move_spr_rv32 (SIM_CPU *current_cpu, void *sem_arg) 1226{ 1227#define FLD(f) abuf->fields.sfmt_mcp.f 1228 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1229 const IDESC * UNUSED idesc = abuf->idesc; 1230 int cycles = 0; 1231 { 1232 int referenced = 0; 1233 int UNUSED insn_referenced = abuf->written; 1234 INT in_Rd = -1; 1235 INT in_Rs = -1; 1236 INT out_Rd = -1; 1237 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 1238 } 1239 return cycles; 1240#undef FLD 1241} 1242 1243static int 1244model_crisv32_move_m_sprv32 (SIM_CPU *current_cpu, void *sem_arg) 1245{ 1246#define FLD(f) abuf->fields.sfmt_move_m_sprv32.f 1247 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1248 const IDESC * UNUSED idesc = abuf->idesc; 1249 int cycles = 0; 1250 { 1251 int referenced = 0; 1252 int UNUSED insn_referenced = abuf->written; 1253 INT in_Rs = -1; 1254 in_Rs = FLD (in_Rs); 1255 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 1256 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 1257 } 1258 { 1259 int referenced = 0; 1260 int UNUSED insn_referenced = abuf->written; 1261 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 1262 } 1263 { 1264 int referenced = 0; 1265 int UNUSED insn_referenced = abuf->written; 1266 INT in_Rs = -1; 1267 INT out_Pd = -1; 1268 in_Rs = FLD (in_Rs); 1269 out_Pd = FLD (out_Pd); 1270 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 1271 referenced |= 1 << 1; 1272 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 2, referenced, in_Rs, out_Pd); 1273 } 1274 return cycles; 1275#undef FLD 1276} 1277 1278static int 1279model_crisv32_move_c_sprv32_p2 (SIM_CPU *current_cpu, void *sem_arg) 1280{ 1281#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f 1282 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1283 const IDESC * UNUSED idesc = abuf->idesc; 1284 int cycles = 0; 1285 { 1286 int referenced = 0; 1287 int UNUSED insn_referenced = abuf->written; 1288 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 1289 } 1290 { 1291 int referenced = 0; 1292 int UNUSED insn_referenced = abuf->written; 1293 INT in_Rs = -1; 1294 INT out_Pd = -1; 1295 out_Pd = FLD (out_Pd); 1296 referenced |= 1 << 1; 1297 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd); 1298 } 1299 return cycles; 1300#undef FLD 1301} 1302 1303static int 1304model_crisv32_move_c_sprv32_p3 (SIM_CPU *current_cpu, void *sem_arg) 1305{ 1306#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f 1307 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1308 const IDESC * UNUSED idesc = abuf->idesc; 1309 int cycles = 0; 1310 { 1311 int referenced = 0; 1312 int UNUSED insn_referenced = abuf->written; 1313 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 1314 } 1315 { 1316 int referenced = 0; 1317 int UNUSED insn_referenced = abuf->written; 1318 INT in_Rs = -1; 1319 INT out_Pd = -1; 1320 out_Pd = FLD (out_Pd); 1321 referenced |= 1 << 1; 1322 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd); 1323 } 1324 return cycles; 1325#undef FLD 1326} 1327 1328static int 1329model_crisv32_move_c_sprv32_p5 (SIM_CPU *current_cpu, void *sem_arg) 1330{ 1331#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f 1332 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1333 const IDESC * UNUSED idesc = abuf->idesc; 1334 int cycles = 0; 1335 { 1336 int referenced = 0; 1337 int UNUSED insn_referenced = abuf->written; 1338 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 1339 } 1340 { 1341 int referenced = 0; 1342 int UNUSED insn_referenced = abuf->written; 1343 INT in_Rs = -1; 1344 INT out_Pd = -1; 1345 out_Pd = FLD (out_Pd); 1346 referenced |= 1 << 1; 1347 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd); 1348 } 1349 return cycles; 1350#undef FLD 1351} 1352 1353static int 1354model_crisv32_move_c_sprv32_p6 (SIM_CPU *current_cpu, void *sem_arg) 1355{ 1356#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f 1357 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1358 const IDESC * UNUSED idesc = abuf->idesc; 1359 int cycles = 0; 1360 { 1361 int referenced = 0; 1362 int UNUSED insn_referenced = abuf->written; 1363 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 1364 } 1365 { 1366 int referenced = 0; 1367 int UNUSED insn_referenced = abuf->written; 1368 INT in_Rs = -1; 1369 INT out_Pd = -1; 1370 out_Pd = FLD (out_Pd); 1371 referenced |= 1 << 1; 1372 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd); 1373 } 1374 return cycles; 1375#undef FLD 1376} 1377 1378static int 1379model_crisv32_move_c_sprv32_p7 (SIM_CPU *current_cpu, void *sem_arg) 1380{ 1381#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f 1382 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1383 const IDESC * UNUSED idesc = abuf->idesc; 1384 int cycles = 0; 1385 { 1386 int referenced = 0; 1387 int UNUSED insn_referenced = abuf->written; 1388 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 1389 } 1390 { 1391 int referenced = 0; 1392 int UNUSED insn_referenced = abuf->written; 1393 INT in_Rs = -1; 1394 INT out_Pd = -1; 1395 out_Pd = FLD (out_Pd); 1396 referenced |= 1 << 1; 1397 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd); 1398 } 1399 return cycles; 1400#undef FLD 1401} 1402 1403static int 1404model_crisv32_move_c_sprv32_p9 (SIM_CPU *current_cpu, void *sem_arg) 1405{ 1406#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f 1407 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1408 const IDESC * UNUSED idesc = abuf->idesc; 1409 int cycles = 0; 1410 { 1411 int referenced = 0; 1412 int UNUSED insn_referenced = abuf->written; 1413 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 1414 } 1415 { 1416 int referenced = 0; 1417 int UNUSED insn_referenced = abuf->written; 1418 INT in_Rs = -1; 1419 INT out_Pd = -1; 1420 out_Pd = FLD (out_Pd); 1421 referenced |= 1 << 1; 1422 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd); 1423 } 1424 return cycles; 1425#undef FLD 1426} 1427 1428static int 1429model_crisv32_move_c_sprv32_p10 (SIM_CPU *current_cpu, void *sem_arg) 1430{ 1431#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f 1432 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1433 const IDESC * UNUSED idesc = abuf->idesc; 1434 int cycles = 0; 1435 { 1436 int referenced = 0; 1437 int UNUSED insn_referenced = abuf->written; 1438 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 1439 } 1440 { 1441 int referenced = 0; 1442 int UNUSED insn_referenced = abuf->written; 1443 INT in_Rs = -1; 1444 INT out_Pd = -1; 1445 out_Pd = FLD (out_Pd); 1446 referenced |= 1 << 1; 1447 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd); 1448 } 1449 return cycles; 1450#undef FLD 1451} 1452 1453static int 1454model_crisv32_move_c_sprv32_p11 (SIM_CPU *current_cpu, void *sem_arg) 1455{ 1456#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f 1457 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1458 const IDESC * UNUSED idesc = abuf->idesc; 1459 int cycles = 0; 1460 { 1461 int referenced = 0; 1462 int UNUSED insn_referenced = abuf->written; 1463 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 1464 } 1465 { 1466 int referenced = 0; 1467 int UNUSED insn_referenced = abuf->written; 1468 INT in_Rs = -1; 1469 INT out_Pd = -1; 1470 out_Pd = FLD (out_Pd); 1471 referenced |= 1 << 1; 1472 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd); 1473 } 1474 return cycles; 1475#undef FLD 1476} 1477 1478static int 1479model_crisv32_move_c_sprv32_p12 (SIM_CPU *current_cpu, void *sem_arg) 1480{ 1481#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f 1482 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1483 const IDESC * UNUSED idesc = abuf->idesc; 1484 int cycles = 0; 1485 { 1486 int referenced = 0; 1487 int UNUSED insn_referenced = abuf->written; 1488 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 1489 } 1490 { 1491 int referenced = 0; 1492 int UNUSED insn_referenced = abuf->written; 1493 INT in_Rs = -1; 1494 INT out_Pd = -1; 1495 out_Pd = FLD (out_Pd); 1496 referenced |= 1 << 1; 1497 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd); 1498 } 1499 return cycles; 1500#undef FLD 1501} 1502 1503static int 1504model_crisv32_move_c_sprv32_p13 (SIM_CPU *current_cpu, void *sem_arg) 1505{ 1506#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f 1507 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1508 const IDESC * UNUSED idesc = abuf->idesc; 1509 int cycles = 0; 1510 { 1511 int referenced = 0; 1512 int UNUSED insn_referenced = abuf->written; 1513 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 1514 } 1515 { 1516 int referenced = 0; 1517 int UNUSED insn_referenced = abuf->written; 1518 INT in_Rs = -1; 1519 INT out_Pd = -1; 1520 out_Pd = FLD (out_Pd); 1521 referenced |= 1 << 1; 1522 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd); 1523 } 1524 return cycles; 1525#undef FLD 1526} 1527 1528static int 1529model_crisv32_move_c_sprv32_p14 (SIM_CPU *current_cpu, void *sem_arg) 1530{ 1531#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f 1532 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1533 const IDESC * UNUSED idesc = abuf->idesc; 1534 int cycles = 0; 1535 { 1536 int referenced = 0; 1537 int UNUSED insn_referenced = abuf->written; 1538 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 1539 } 1540 { 1541 int referenced = 0; 1542 int UNUSED insn_referenced = abuf->written; 1543 INT in_Rs = -1; 1544 INT out_Pd = -1; 1545 out_Pd = FLD (out_Pd); 1546 referenced |= 1 << 1; 1547 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd); 1548 } 1549 return cycles; 1550#undef FLD 1551} 1552 1553static int 1554model_crisv32_move_c_sprv32_p15 (SIM_CPU *current_cpu, void *sem_arg) 1555{ 1556#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f 1557 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1558 const IDESC * UNUSED idesc = abuf->idesc; 1559 int cycles = 0; 1560 { 1561 int referenced = 0; 1562 int UNUSED insn_referenced = abuf->written; 1563 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 1564 } 1565 { 1566 int referenced = 0; 1567 int UNUSED insn_referenced = abuf->written; 1568 INT in_Rs = -1; 1569 INT out_Pd = -1; 1570 out_Pd = FLD (out_Pd); 1571 referenced |= 1 << 1; 1572 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd); 1573 } 1574 return cycles; 1575#undef FLD 1576} 1577 1578static int 1579model_crisv32_move_spr_mv32 (SIM_CPU *current_cpu, void *sem_arg) 1580{ 1581#define FLD(f) abuf->fields.sfmt_move_spr_mv32.f 1582 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1583 const IDESC * UNUSED idesc = abuf->idesc; 1584 int cycles = 0; 1585 { 1586 int referenced = 0; 1587 int UNUSED insn_referenced = abuf->written; 1588 INT in_Rs = -1; 1589 in_Rs = FLD (in_Rs); 1590 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 1591 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 1592 } 1593 { 1594 int referenced = 0; 1595 int UNUSED insn_referenced = abuf->written; 1596 INT in_Rd = -1; 1597 INT in_Rs = -1; 1598 INT out_Rd = -1; 1599 in_Rs = FLD (in_Rs); 1600 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 1601 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 1602 } 1603 { 1604 int referenced = 0; 1605 int UNUSED insn_referenced = abuf->written; 1606 cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced); 1607 } 1608 return cycles; 1609#undef FLD 1610} 1611 1612static int 1613model_crisv32_move_ss_r (SIM_CPU *current_cpu, void *sem_arg) 1614{ 1615#define FLD(f) abuf->fields.sfmt_move_spr_mv32.f 1616 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1617 const IDESC * UNUSED idesc = abuf->idesc; 1618 int cycles = 0; 1619 { 1620 int referenced = 0; 1621 int UNUSED insn_referenced = abuf->written; 1622 INT in_Rd = -1; 1623 INT in_Rs = -1; 1624 INT out_Rd = -1; 1625 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 1626 } 1627 return cycles; 1628#undef FLD 1629} 1630 1631static int 1632model_crisv32_move_r_ss (SIM_CPU *current_cpu, void *sem_arg) 1633{ 1634#define FLD(f) abuf->fields.sfmt_mcp.f 1635 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1636 const IDESC * UNUSED idesc = abuf->idesc; 1637 int cycles = 0; 1638 { 1639 int referenced = 0; 1640 int UNUSED insn_referenced = abuf->written; 1641 INT in_Rd = -1; 1642 INT in_Rs = -1; 1643 INT out_Rd = -1; 1644 in_Rs = FLD (in_Rs); 1645 referenced |= 1 << 1; 1646 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 1647 } 1648 return cycles; 1649#undef FLD 1650} 1651 1652static int 1653model_crisv32_movem_r_m_v32 (SIM_CPU *current_cpu, void *sem_arg) 1654{ 1655#define FLD(f) abuf->fields.sfmt_movem_r_m_v32.f 1656 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1657 const IDESC * UNUSED idesc = abuf->idesc; 1658 int cycles = 0; 1659 { 1660 int referenced = 0; 1661 int UNUSED insn_referenced = abuf->written; 1662 INT in_Rs = -1; 1663 in_Rs = FLD (in_Rs); 1664 referenced |= 1 << 0; 1665 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 1666 } 1667 { 1668 int referenced = 0; 1669 int UNUSED insn_referenced = abuf->written; 1670 INT in_Rs = -1; 1671 INT in_Rd = -1; 1672 in_Rs = FLD (in_Rs); 1673 in_Rd = FLD (in_Rd); 1674 referenced |= 1 << 0; 1675 referenced |= 1 << 1; 1676 cycles += crisv32f_model_crisv32_u_movem_rtom (current_cpu, idesc, 1, referenced, in_Rs, in_Rd); 1677 } 1678 { 1679 int referenced = 0; 1680 int UNUSED insn_referenced = abuf->written; 1681 INT in_Rs = -1; 1682 INT out_Rd = -1; 1683 in_Rs = FLD (in_Rs); 1684 referenced |= 1 << 0; 1685 cycles += crisv32f_model_crisv32_u_exec_movem (current_cpu, idesc, 2, referenced, in_Rs, out_Rd); 1686 } 1687 { 1688 int referenced = 0; 1689 int UNUSED insn_referenced = abuf->written; 1690 cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 3, referenced); 1691 } 1692 return cycles; 1693#undef FLD 1694} 1695 1696static int 1697model_crisv32_movem_m_r_v32 (SIM_CPU *current_cpu, void *sem_arg) 1698{ 1699#define FLD(f) abuf->fields.sfmt_movem_m_r_v32.f 1700 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1701 const IDESC * UNUSED idesc = abuf->idesc; 1702 int cycles = 0; 1703 { 1704 int referenced = 0; 1705 int UNUSED insn_referenced = abuf->written; 1706 INT in_Rs = -1; 1707 in_Rs = FLD (in_Rs); 1708 referenced |= 1 << 0; 1709 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 1710 } 1711 { 1712 int referenced = 0; 1713 int UNUSED insn_referenced = abuf->written; 1714 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 1715 } 1716 { 1717 int referenced = 0; 1718 int UNUSED insn_referenced = abuf->written; 1719 INT in_Rs = -1; 1720 INT in_Rd = -1; 1721 in_Rs = FLD (in_Rs); 1722 in_Rd = FLD (in_Rd); 1723 referenced |= 1 << 0; 1724 referenced |= 1 << 1; 1725 cycles += crisv32f_model_crisv32_u_movem_mtor (current_cpu, idesc, 2, referenced, in_Rs, in_Rd); 1726 } 1727 { 1728 int referenced = 0; 1729 int UNUSED insn_referenced = abuf->written; 1730 INT in_Rs = -1; 1731 INT out_Rd = -1; 1732 in_Rs = FLD (in_Rs); 1733 referenced |= 1 << 0; 1734 cycles += crisv32f_model_crisv32_u_exec_movem (current_cpu, idesc, 3, referenced, in_Rs, out_Rd); 1735 } 1736 return cycles; 1737#undef FLD 1738} 1739 1740static int 1741model_crisv32_add_b_r (SIM_CPU *current_cpu, void *sem_arg) 1742{ 1743#define FLD(f) abuf->fields.sfmt_addc_m.f 1744 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1745 const IDESC * UNUSED idesc = abuf->idesc; 1746 int cycles = 0; 1747 { 1748 int referenced = 0; 1749 int UNUSED insn_referenced = abuf->written; 1750 INT in_Rd = -1; 1751 INT in_Rs = -1; 1752 INT out_Rd = -1; 1753 in_Rd = FLD (in_Rd); 1754 in_Rs = FLD (in_Rs); 1755 referenced |= 1 << 0; 1756 referenced |= 1 << 1; 1757 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 1758 } 1759 return cycles; 1760#undef FLD 1761} 1762 1763static int 1764model_crisv32_add_w_r (SIM_CPU *current_cpu, void *sem_arg) 1765{ 1766#define FLD(f) abuf->fields.sfmt_addc_m.f 1767 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1768 const IDESC * UNUSED idesc = abuf->idesc; 1769 int cycles = 0; 1770 { 1771 int referenced = 0; 1772 int UNUSED insn_referenced = abuf->written; 1773 INT in_Rd = -1; 1774 INT in_Rs = -1; 1775 INT out_Rd = -1; 1776 in_Rd = FLD (in_Rd); 1777 in_Rs = FLD (in_Rs); 1778 referenced |= 1 << 0; 1779 referenced |= 1 << 1; 1780 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 1781 } 1782 return cycles; 1783#undef FLD 1784} 1785 1786static int 1787model_crisv32_add_d_r (SIM_CPU *current_cpu, void *sem_arg) 1788{ 1789#define FLD(f) abuf->fields.sfmt_addc_m.f 1790 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1791 const IDESC * UNUSED idesc = abuf->idesc; 1792 int cycles = 0; 1793 { 1794 int referenced = 0; 1795 int UNUSED insn_referenced = abuf->written; 1796 INT in_Rd = -1; 1797 INT in_Rs = -1; 1798 INT out_Rd = -1; 1799 in_Rd = FLD (in_Rd); 1800 in_Rs = FLD (in_Rs); 1801 referenced |= 1 << 0; 1802 referenced |= 1 << 1; 1803 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 1804 } 1805 return cycles; 1806#undef FLD 1807} 1808 1809static int 1810model_crisv32_add_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 1811{ 1812#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 1813 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1814 const IDESC * UNUSED idesc = abuf->idesc; 1815 int cycles = 0; 1816 { 1817 int referenced = 0; 1818 int UNUSED insn_referenced = abuf->written; 1819 INT in_Rs = -1; 1820 in_Rs = FLD (in_Rs); 1821 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 1822 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 1823 } 1824 { 1825 int referenced = 0; 1826 int UNUSED insn_referenced = abuf->written; 1827 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 1828 } 1829 { 1830 int referenced = 0; 1831 int UNUSED insn_referenced = abuf->written; 1832 INT in_Rd = -1; 1833 INT in_Rs = -1; 1834 INT out_Rd = -1; 1835 in_Rd = FLD (in_Rd); 1836 in_Rs = FLD (in_Rs); 1837 referenced |= 1 << 0; 1838 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 1839 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 1840 } 1841 return cycles; 1842#undef FLD 1843} 1844 1845static int 1846model_crisv32_add_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 1847{ 1848#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 1849 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1850 const IDESC * UNUSED idesc = abuf->idesc; 1851 int cycles = 0; 1852 { 1853 int referenced = 0; 1854 int UNUSED insn_referenced = abuf->written; 1855 INT in_Rs = -1; 1856 in_Rs = FLD (in_Rs); 1857 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 1858 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 1859 } 1860 { 1861 int referenced = 0; 1862 int UNUSED insn_referenced = abuf->written; 1863 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 1864 } 1865 { 1866 int referenced = 0; 1867 int UNUSED insn_referenced = abuf->written; 1868 INT in_Rd = -1; 1869 INT in_Rs = -1; 1870 INT out_Rd = -1; 1871 in_Rd = FLD (in_Rd); 1872 in_Rs = FLD (in_Rs); 1873 referenced |= 1 << 0; 1874 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 1875 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 1876 } 1877 return cycles; 1878#undef FLD 1879} 1880 1881static int 1882model_crisv32_add_m_d_m (SIM_CPU *current_cpu, void *sem_arg) 1883{ 1884#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 1885 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1886 const IDESC * UNUSED idesc = abuf->idesc; 1887 int cycles = 0; 1888 { 1889 int referenced = 0; 1890 int UNUSED insn_referenced = abuf->written; 1891 INT in_Rs = -1; 1892 in_Rs = FLD (in_Rs); 1893 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 1894 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 1895 } 1896 { 1897 int referenced = 0; 1898 int UNUSED insn_referenced = abuf->written; 1899 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 1900 } 1901 { 1902 int referenced = 0; 1903 int UNUSED insn_referenced = abuf->written; 1904 INT in_Rd = -1; 1905 INT in_Rs = -1; 1906 INT out_Rd = -1; 1907 in_Rd = FLD (in_Rd); 1908 in_Rs = FLD (in_Rs); 1909 referenced |= 1 << 0; 1910 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 1911 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 1912 } 1913 return cycles; 1914#undef FLD 1915} 1916 1917static int 1918model_crisv32_addcbr (SIM_CPU *current_cpu, void *sem_arg) 1919{ 1920#define FLD(f) abuf->fields.sfmt_addcbr.f 1921 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1922 const IDESC * UNUSED idesc = abuf->idesc; 1923 int cycles = 0; 1924 { 1925 int referenced = 0; 1926 int UNUSED insn_referenced = abuf->written; 1927 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 1928 } 1929 { 1930 int referenced = 0; 1931 int UNUSED insn_referenced = abuf->written; 1932 INT in_Rd = -1; 1933 INT in_Rs = -1; 1934 INT out_Rd = -1; 1935 in_Rd = FLD (in_Rd); 1936 referenced |= 1 << 0; 1937 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 1938 } 1939 return cycles; 1940#undef FLD 1941} 1942 1943static int 1944model_crisv32_addcwr (SIM_CPU *current_cpu, void *sem_arg) 1945{ 1946#define FLD(f) abuf->fields.sfmt_addcwr.f 1947 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1948 const IDESC * UNUSED idesc = abuf->idesc; 1949 int cycles = 0; 1950 { 1951 int referenced = 0; 1952 int UNUSED insn_referenced = abuf->written; 1953 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 1954 } 1955 { 1956 int referenced = 0; 1957 int UNUSED insn_referenced = abuf->written; 1958 INT in_Rd = -1; 1959 INT in_Rs = -1; 1960 INT out_Rd = -1; 1961 in_Rd = FLD (in_Rd); 1962 referenced |= 1 << 0; 1963 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 1964 } 1965 return cycles; 1966#undef FLD 1967} 1968 1969static int 1970model_crisv32_addcdr (SIM_CPU *current_cpu, void *sem_arg) 1971{ 1972#define FLD(f) abuf->fields.sfmt_addcdr.f 1973 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1974 const IDESC * UNUSED idesc = abuf->idesc; 1975 int cycles = 0; 1976 { 1977 int referenced = 0; 1978 int UNUSED insn_referenced = abuf->written; 1979 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 1980 } 1981 { 1982 int referenced = 0; 1983 int UNUSED insn_referenced = abuf->written; 1984 INT in_Rd = -1; 1985 INT in_Rs = -1; 1986 INT out_Rd = -1; 1987 in_Rd = FLD (in_Rd); 1988 referenced |= 1 << 0; 1989 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 1990 } 1991 return cycles; 1992#undef FLD 1993} 1994 1995static int 1996model_crisv32_adds_b_r (SIM_CPU *current_cpu, void *sem_arg) 1997{ 1998#define FLD(f) abuf->fields.sfmt_addc_m.f 1999 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2000 const IDESC * UNUSED idesc = abuf->idesc; 2001 int cycles = 0; 2002 { 2003 int referenced = 0; 2004 int UNUSED insn_referenced = abuf->written; 2005 INT in_Rd = -1; 2006 INT in_Rs = -1; 2007 INT out_Rd = -1; 2008 in_Rd = FLD (in_Rd); 2009 in_Rs = FLD (in_Rs); 2010 referenced |= 1 << 0; 2011 referenced |= 1 << 1; 2012 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 2013 } 2014 return cycles; 2015#undef FLD 2016} 2017 2018static int 2019model_crisv32_adds_w_r (SIM_CPU *current_cpu, void *sem_arg) 2020{ 2021#define FLD(f) abuf->fields.sfmt_addc_m.f 2022 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2023 const IDESC * UNUSED idesc = abuf->idesc; 2024 int cycles = 0; 2025 { 2026 int referenced = 0; 2027 int UNUSED insn_referenced = abuf->written; 2028 INT in_Rd = -1; 2029 INT in_Rs = -1; 2030 INT out_Rd = -1; 2031 in_Rd = FLD (in_Rd); 2032 in_Rs = FLD (in_Rs); 2033 referenced |= 1 << 0; 2034 referenced |= 1 << 1; 2035 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 2036 } 2037 return cycles; 2038#undef FLD 2039} 2040 2041static int 2042model_crisv32_adds_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 2043{ 2044#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 2045 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2046 const IDESC * UNUSED idesc = abuf->idesc; 2047 int cycles = 0; 2048 { 2049 int referenced = 0; 2050 int UNUSED insn_referenced = abuf->written; 2051 INT in_Rs = -1; 2052 in_Rs = FLD (in_Rs); 2053 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 2054 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 2055 } 2056 { 2057 int referenced = 0; 2058 int UNUSED insn_referenced = abuf->written; 2059 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 2060 } 2061 { 2062 int referenced = 0; 2063 int UNUSED insn_referenced = abuf->written; 2064 INT in_Rd = -1; 2065 INT in_Rs = -1; 2066 INT out_Rd = -1; 2067 in_Rd = FLD (in_Rd); 2068 in_Rs = FLD (in_Rs); 2069 referenced |= 1 << 0; 2070 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 2071 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 2072 } 2073 return cycles; 2074#undef FLD 2075} 2076 2077static int 2078model_crisv32_adds_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 2079{ 2080#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 2081 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2082 const IDESC * UNUSED idesc = abuf->idesc; 2083 int cycles = 0; 2084 { 2085 int referenced = 0; 2086 int UNUSED insn_referenced = abuf->written; 2087 INT in_Rs = -1; 2088 in_Rs = FLD (in_Rs); 2089 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 2090 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 2091 } 2092 { 2093 int referenced = 0; 2094 int UNUSED insn_referenced = abuf->written; 2095 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 2096 } 2097 { 2098 int referenced = 0; 2099 int UNUSED insn_referenced = abuf->written; 2100 INT in_Rd = -1; 2101 INT in_Rs = -1; 2102 INT out_Rd = -1; 2103 in_Rd = FLD (in_Rd); 2104 in_Rs = FLD (in_Rs); 2105 referenced |= 1 << 0; 2106 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 2107 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 2108 } 2109 return cycles; 2110#undef FLD 2111} 2112 2113static int 2114model_crisv32_addscbr (SIM_CPU *current_cpu, void *sem_arg) 2115{ 2116#define FLD(f) abuf->fields.sfmt_addcbr.f 2117 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2118 const IDESC * UNUSED idesc = abuf->idesc; 2119 int cycles = 0; 2120 { 2121 int referenced = 0; 2122 int UNUSED insn_referenced = abuf->written; 2123 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 2124 } 2125 { 2126 int referenced = 0; 2127 int UNUSED insn_referenced = abuf->written; 2128 INT in_Rd = -1; 2129 INT in_Rs = -1; 2130 INT out_Rd = -1; 2131 in_Rd = FLD (in_Rd); 2132 referenced |= 1 << 0; 2133 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 2134 } 2135 return cycles; 2136#undef FLD 2137} 2138 2139static int 2140model_crisv32_addscwr (SIM_CPU *current_cpu, void *sem_arg) 2141{ 2142#define FLD(f) abuf->fields.sfmt_addcwr.f 2143 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2144 const IDESC * UNUSED idesc = abuf->idesc; 2145 int cycles = 0; 2146 { 2147 int referenced = 0; 2148 int UNUSED insn_referenced = abuf->written; 2149 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 2150 } 2151 { 2152 int referenced = 0; 2153 int UNUSED insn_referenced = abuf->written; 2154 INT in_Rd = -1; 2155 INT in_Rs = -1; 2156 INT out_Rd = -1; 2157 in_Rd = FLD (in_Rd); 2158 referenced |= 1 << 0; 2159 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 2160 } 2161 return cycles; 2162#undef FLD 2163} 2164 2165static int 2166model_crisv32_addu_b_r (SIM_CPU *current_cpu, void *sem_arg) 2167{ 2168#define FLD(f) abuf->fields.sfmt_addc_m.f 2169 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2170 const IDESC * UNUSED idesc = abuf->idesc; 2171 int cycles = 0; 2172 { 2173 int referenced = 0; 2174 int UNUSED insn_referenced = abuf->written; 2175 INT in_Rd = -1; 2176 INT in_Rs = -1; 2177 INT out_Rd = -1; 2178 in_Rd = FLD (in_Rd); 2179 in_Rs = FLD (in_Rs); 2180 referenced |= 1 << 0; 2181 referenced |= 1 << 1; 2182 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 2183 } 2184 return cycles; 2185#undef FLD 2186} 2187 2188static int 2189model_crisv32_addu_w_r (SIM_CPU *current_cpu, void *sem_arg) 2190{ 2191#define FLD(f) abuf->fields.sfmt_addc_m.f 2192 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2193 const IDESC * UNUSED idesc = abuf->idesc; 2194 int cycles = 0; 2195 { 2196 int referenced = 0; 2197 int UNUSED insn_referenced = abuf->written; 2198 INT in_Rd = -1; 2199 INT in_Rs = -1; 2200 INT out_Rd = -1; 2201 in_Rd = FLD (in_Rd); 2202 in_Rs = FLD (in_Rs); 2203 referenced |= 1 << 0; 2204 referenced |= 1 << 1; 2205 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 2206 } 2207 return cycles; 2208#undef FLD 2209} 2210 2211static int 2212model_crisv32_addu_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 2213{ 2214#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 2215 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2216 const IDESC * UNUSED idesc = abuf->idesc; 2217 int cycles = 0; 2218 { 2219 int referenced = 0; 2220 int UNUSED insn_referenced = abuf->written; 2221 INT in_Rs = -1; 2222 in_Rs = FLD (in_Rs); 2223 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 2224 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 2225 } 2226 { 2227 int referenced = 0; 2228 int UNUSED insn_referenced = abuf->written; 2229 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 2230 } 2231 { 2232 int referenced = 0; 2233 int UNUSED insn_referenced = abuf->written; 2234 INT in_Rd = -1; 2235 INT in_Rs = -1; 2236 INT out_Rd = -1; 2237 in_Rd = FLD (in_Rd); 2238 in_Rs = FLD (in_Rs); 2239 referenced |= 1 << 0; 2240 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 2241 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 2242 } 2243 return cycles; 2244#undef FLD 2245} 2246 2247static int 2248model_crisv32_addu_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 2249{ 2250#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 2251 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2252 const IDESC * UNUSED idesc = abuf->idesc; 2253 int cycles = 0; 2254 { 2255 int referenced = 0; 2256 int UNUSED insn_referenced = abuf->written; 2257 INT in_Rs = -1; 2258 in_Rs = FLD (in_Rs); 2259 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 2260 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 2261 } 2262 { 2263 int referenced = 0; 2264 int UNUSED insn_referenced = abuf->written; 2265 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 2266 } 2267 { 2268 int referenced = 0; 2269 int UNUSED insn_referenced = abuf->written; 2270 INT in_Rd = -1; 2271 INT in_Rs = -1; 2272 INT out_Rd = -1; 2273 in_Rd = FLD (in_Rd); 2274 in_Rs = FLD (in_Rs); 2275 referenced |= 1 << 0; 2276 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 2277 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 2278 } 2279 return cycles; 2280#undef FLD 2281} 2282 2283static int 2284model_crisv32_adducbr (SIM_CPU *current_cpu, void *sem_arg) 2285{ 2286#define FLD(f) abuf->fields.sfmt_addcbr.f 2287 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2288 const IDESC * UNUSED idesc = abuf->idesc; 2289 int cycles = 0; 2290 { 2291 int referenced = 0; 2292 int UNUSED insn_referenced = abuf->written; 2293 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 2294 } 2295 { 2296 int referenced = 0; 2297 int UNUSED insn_referenced = abuf->written; 2298 INT in_Rd = -1; 2299 INT in_Rs = -1; 2300 INT out_Rd = -1; 2301 in_Rd = FLD (in_Rd); 2302 referenced |= 1 << 0; 2303 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 2304 } 2305 return cycles; 2306#undef FLD 2307} 2308 2309static int 2310model_crisv32_adducwr (SIM_CPU *current_cpu, void *sem_arg) 2311{ 2312#define FLD(f) abuf->fields.sfmt_addcwr.f 2313 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2314 const IDESC * UNUSED idesc = abuf->idesc; 2315 int cycles = 0; 2316 { 2317 int referenced = 0; 2318 int UNUSED insn_referenced = abuf->written; 2319 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 2320 } 2321 { 2322 int referenced = 0; 2323 int UNUSED insn_referenced = abuf->written; 2324 INT in_Rd = -1; 2325 INT in_Rs = -1; 2326 INT out_Rd = -1; 2327 in_Rd = FLD (in_Rd); 2328 referenced |= 1 << 0; 2329 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 2330 } 2331 return cycles; 2332#undef FLD 2333} 2334 2335static int 2336model_crisv32_sub_b_r (SIM_CPU *current_cpu, void *sem_arg) 2337{ 2338#define FLD(f) abuf->fields.sfmt_addc_m.f 2339 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2340 const IDESC * UNUSED idesc = abuf->idesc; 2341 int cycles = 0; 2342 { 2343 int referenced = 0; 2344 int UNUSED insn_referenced = abuf->written; 2345 INT in_Rd = -1; 2346 INT in_Rs = -1; 2347 INT out_Rd = -1; 2348 in_Rd = FLD (in_Rd); 2349 in_Rs = FLD (in_Rs); 2350 referenced |= 1 << 0; 2351 referenced |= 1 << 1; 2352 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 2353 } 2354 return cycles; 2355#undef FLD 2356} 2357 2358static int 2359model_crisv32_sub_w_r (SIM_CPU *current_cpu, void *sem_arg) 2360{ 2361#define FLD(f) abuf->fields.sfmt_addc_m.f 2362 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2363 const IDESC * UNUSED idesc = abuf->idesc; 2364 int cycles = 0; 2365 { 2366 int referenced = 0; 2367 int UNUSED insn_referenced = abuf->written; 2368 INT in_Rd = -1; 2369 INT in_Rs = -1; 2370 INT out_Rd = -1; 2371 in_Rd = FLD (in_Rd); 2372 in_Rs = FLD (in_Rs); 2373 referenced |= 1 << 0; 2374 referenced |= 1 << 1; 2375 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 2376 } 2377 return cycles; 2378#undef FLD 2379} 2380 2381static int 2382model_crisv32_sub_d_r (SIM_CPU *current_cpu, void *sem_arg) 2383{ 2384#define FLD(f) abuf->fields.sfmt_addc_m.f 2385 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2386 const IDESC * UNUSED idesc = abuf->idesc; 2387 int cycles = 0; 2388 { 2389 int referenced = 0; 2390 int UNUSED insn_referenced = abuf->written; 2391 INT in_Rd = -1; 2392 INT in_Rs = -1; 2393 INT out_Rd = -1; 2394 in_Rd = FLD (in_Rd); 2395 in_Rs = FLD (in_Rs); 2396 referenced |= 1 << 0; 2397 referenced |= 1 << 1; 2398 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 2399 } 2400 return cycles; 2401#undef FLD 2402} 2403 2404static int 2405model_crisv32_sub_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 2406{ 2407#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 2408 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2409 const IDESC * UNUSED idesc = abuf->idesc; 2410 int cycles = 0; 2411 { 2412 int referenced = 0; 2413 int UNUSED insn_referenced = abuf->written; 2414 INT in_Rs = -1; 2415 in_Rs = FLD (in_Rs); 2416 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 2417 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 2418 } 2419 { 2420 int referenced = 0; 2421 int UNUSED insn_referenced = abuf->written; 2422 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 2423 } 2424 { 2425 int referenced = 0; 2426 int UNUSED insn_referenced = abuf->written; 2427 INT in_Rd = -1; 2428 INT in_Rs = -1; 2429 INT out_Rd = -1; 2430 in_Rd = FLD (in_Rd); 2431 in_Rs = FLD (in_Rs); 2432 referenced |= 1 << 0; 2433 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 2434 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 2435 } 2436 return cycles; 2437#undef FLD 2438} 2439 2440static int 2441model_crisv32_sub_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 2442{ 2443#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 2444 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2445 const IDESC * UNUSED idesc = abuf->idesc; 2446 int cycles = 0; 2447 { 2448 int referenced = 0; 2449 int UNUSED insn_referenced = abuf->written; 2450 INT in_Rs = -1; 2451 in_Rs = FLD (in_Rs); 2452 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 2453 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 2454 } 2455 { 2456 int referenced = 0; 2457 int UNUSED insn_referenced = abuf->written; 2458 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 2459 } 2460 { 2461 int referenced = 0; 2462 int UNUSED insn_referenced = abuf->written; 2463 INT in_Rd = -1; 2464 INT in_Rs = -1; 2465 INT out_Rd = -1; 2466 in_Rd = FLD (in_Rd); 2467 in_Rs = FLD (in_Rs); 2468 referenced |= 1 << 0; 2469 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 2470 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 2471 } 2472 return cycles; 2473#undef FLD 2474} 2475 2476static int 2477model_crisv32_sub_m_d_m (SIM_CPU *current_cpu, void *sem_arg) 2478{ 2479#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 2480 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2481 const IDESC * UNUSED idesc = abuf->idesc; 2482 int cycles = 0; 2483 { 2484 int referenced = 0; 2485 int UNUSED insn_referenced = abuf->written; 2486 INT in_Rs = -1; 2487 in_Rs = FLD (in_Rs); 2488 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 2489 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 2490 } 2491 { 2492 int referenced = 0; 2493 int UNUSED insn_referenced = abuf->written; 2494 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 2495 } 2496 { 2497 int referenced = 0; 2498 int UNUSED insn_referenced = abuf->written; 2499 INT in_Rd = -1; 2500 INT in_Rs = -1; 2501 INT out_Rd = -1; 2502 in_Rd = FLD (in_Rd); 2503 in_Rs = FLD (in_Rs); 2504 referenced |= 1 << 0; 2505 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 2506 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 2507 } 2508 return cycles; 2509#undef FLD 2510} 2511 2512static int 2513model_crisv32_subcbr (SIM_CPU *current_cpu, void *sem_arg) 2514{ 2515#define FLD(f) abuf->fields.sfmt_addcbr.f 2516 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2517 const IDESC * UNUSED idesc = abuf->idesc; 2518 int cycles = 0; 2519 { 2520 int referenced = 0; 2521 int UNUSED insn_referenced = abuf->written; 2522 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 2523 } 2524 { 2525 int referenced = 0; 2526 int UNUSED insn_referenced = abuf->written; 2527 INT in_Rd = -1; 2528 INT in_Rs = -1; 2529 INT out_Rd = -1; 2530 in_Rd = FLD (in_Rd); 2531 referenced |= 1 << 0; 2532 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 2533 } 2534 return cycles; 2535#undef FLD 2536} 2537 2538static int 2539model_crisv32_subcwr (SIM_CPU *current_cpu, void *sem_arg) 2540{ 2541#define FLD(f) abuf->fields.sfmt_addcwr.f 2542 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2543 const IDESC * UNUSED idesc = abuf->idesc; 2544 int cycles = 0; 2545 { 2546 int referenced = 0; 2547 int UNUSED insn_referenced = abuf->written; 2548 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 2549 } 2550 { 2551 int referenced = 0; 2552 int UNUSED insn_referenced = abuf->written; 2553 INT in_Rd = -1; 2554 INT in_Rs = -1; 2555 INT out_Rd = -1; 2556 in_Rd = FLD (in_Rd); 2557 referenced |= 1 << 0; 2558 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 2559 } 2560 return cycles; 2561#undef FLD 2562} 2563 2564static int 2565model_crisv32_subcdr (SIM_CPU *current_cpu, void *sem_arg) 2566{ 2567#define FLD(f) abuf->fields.sfmt_addcdr.f 2568 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2569 const IDESC * UNUSED idesc = abuf->idesc; 2570 int cycles = 0; 2571 { 2572 int referenced = 0; 2573 int UNUSED insn_referenced = abuf->written; 2574 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 2575 } 2576 { 2577 int referenced = 0; 2578 int UNUSED insn_referenced = abuf->written; 2579 INT in_Rd = -1; 2580 INT in_Rs = -1; 2581 INT out_Rd = -1; 2582 in_Rd = FLD (in_Rd); 2583 referenced |= 1 << 0; 2584 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 2585 } 2586 return cycles; 2587#undef FLD 2588} 2589 2590static int 2591model_crisv32_subs_b_r (SIM_CPU *current_cpu, void *sem_arg) 2592{ 2593#define FLD(f) abuf->fields.sfmt_addc_m.f 2594 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2595 const IDESC * UNUSED idesc = abuf->idesc; 2596 int cycles = 0; 2597 { 2598 int referenced = 0; 2599 int UNUSED insn_referenced = abuf->written; 2600 INT in_Rd = -1; 2601 INT in_Rs = -1; 2602 INT out_Rd = -1; 2603 in_Rd = FLD (in_Rd); 2604 in_Rs = FLD (in_Rs); 2605 referenced |= 1 << 0; 2606 referenced |= 1 << 1; 2607 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 2608 } 2609 return cycles; 2610#undef FLD 2611} 2612 2613static int 2614model_crisv32_subs_w_r (SIM_CPU *current_cpu, void *sem_arg) 2615{ 2616#define FLD(f) abuf->fields.sfmt_addc_m.f 2617 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2618 const IDESC * UNUSED idesc = abuf->idesc; 2619 int cycles = 0; 2620 { 2621 int referenced = 0; 2622 int UNUSED insn_referenced = abuf->written; 2623 INT in_Rd = -1; 2624 INT in_Rs = -1; 2625 INT out_Rd = -1; 2626 in_Rd = FLD (in_Rd); 2627 in_Rs = FLD (in_Rs); 2628 referenced |= 1 << 0; 2629 referenced |= 1 << 1; 2630 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 2631 } 2632 return cycles; 2633#undef FLD 2634} 2635 2636static int 2637model_crisv32_subs_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 2638{ 2639#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 2640 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2641 const IDESC * UNUSED idesc = abuf->idesc; 2642 int cycles = 0; 2643 { 2644 int referenced = 0; 2645 int UNUSED insn_referenced = abuf->written; 2646 INT in_Rs = -1; 2647 in_Rs = FLD (in_Rs); 2648 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 2649 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 2650 } 2651 { 2652 int referenced = 0; 2653 int UNUSED insn_referenced = abuf->written; 2654 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 2655 } 2656 { 2657 int referenced = 0; 2658 int UNUSED insn_referenced = abuf->written; 2659 INT in_Rd = -1; 2660 INT in_Rs = -1; 2661 INT out_Rd = -1; 2662 in_Rd = FLD (in_Rd); 2663 in_Rs = FLD (in_Rs); 2664 referenced |= 1 << 0; 2665 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 2666 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 2667 } 2668 return cycles; 2669#undef FLD 2670} 2671 2672static int 2673model_crisv32_subs_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 2674{ 2675#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 2676 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2677 const IDESC * UNUSED idesc = abuf->idesc; 2678 int cycles = 0; 2679 { 2680 int referenced = 0; 2681 int UNUSED insn_referenced = abuf->written; 2682 INT in_Rs = -1; 2683 in_Rs = FLD (in_Rs); 2684 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 2685 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 2686 } 2687 { 2688 int referenced = 0; 2689 int UNUSED insn_referenced = abuf->written; 2690 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 2691 } 2692 { 2693 int referenced = 0; 2694 int UNUSED insn_referenced = abuf->written; 2695 INT in_Rd = -1; 2696 INT in_Rs = -1; 2697 INT out_Rd = -1; 2698 in_Rd = FLD (in_Rd); 2699 in_Rs = FLD (in_Rs); 2700 referenced |= 1 << 0; 2701 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 2702 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 2703 } 2704 return cycles; 2705#undef FLD 2706} 2707 2708static int 2709model_crisv32_subscbr (SIM_CPU *current_cpu, void *sem_arg) 2710{ 2711#define FLD(f) abuf->fields.sfmt_addcbr.f 2712 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2713 const IDESC * UNUSED idesc = abuf->idesc; 2714 int cycles = 0; 2715 { 2716 int referenced = 0; 2717 int UNUSED insn_referenced = abuf->written; 2718 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 2719 } 2720 { 2721 int referenced = 0; 2722 int UNUSED insn_referenced = abuf->written; 2723 INT in_Rd = -1; 2724 INT in_Rs = -1; 2725 INT out_Rd = -1; 2726 in_Rd = FLD (in_Rd); 2727 referenced |= 1 << 0; 2728 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 2729 } 2730 return cycles; 2731#undef FLD 2732} 2733 2734static int 2735model_crisv32_subscwr (SIM_CPU *current_cpu, void *sem_arg) 2736{ 2737#define FLD(f) abuf->fields.sfmt_addcwr.f 2738 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2739 const IDESC * UNUSED idesc = abuf->idesc; 2740 int cycles = 0; 2741 { 2742 int referenced = 0; 2743 int UNUSED insn_referenced = abuf->written; 2744 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 2745 } 2746 { 2747 int referenced = 0; 2748 int UNUSED insn_referenced = abuf->written; 2749 INT in_Rd = -1; 2750 INT in_Rs = -1; 2751 INT out_Rd = -1; 2752 in_Rd = FLD (in_Rd); 2753 referenced |= 1 << 0; 2754 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 2755 } 2756 return cycles; 2757#undef FLD 2758} 2759 2760static int 2761model_crisv32_subu_b_r (SIM_CPU *current_cpu, void *sem_arg) 2762{ 2763#define FLD(f) abuf->fields.sfmt_addc_m.f 2764 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2765 const IDESC * UNUSED idesc = abuf->idesc; 2766 int cycles = 0; 2767 { 2768 int referenced = 0; 2769 int UNUSED insn_referenced = abuf->written; 2770 INT in_Rd = -1; 2771 INT in_Rs = -1; 2772 INT out_Rd = -1; 2773 in_Rd = FLD (in_Rd); 2774 in_Rs = FLD (in_Rs); 2775 referenced |= 1 << 0; 2776 referenced |= 1 << 1; 2777 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 2778 } 2779 return cycles; 2780#undef FLD 2781} 2782 2783static int 2784model_crisv32_subu_w_r (SIM_CPU *current_cpu, void *sem_arg) 2785{ 2786#define FLD(f) abuf->fields.sfmt_addc_m.f 2787 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2788 const IDESC * UNUSED idesc = abuf->idesc; 2789 int cycles = 0; 2790 { 2791 int referenced = 0; 2792 int UNUSED insn_referenced = abuf->written; 2793 INT in_Rd = -1; 2794 INT in_Rs = -1; 2795 INT out_Rd = -1; 2796 in_Rd = FLD (in_Rd); 2797 in_Rs = FLD (in_Rs); 2798 referenced |= 1 << 0; 2799 referenced |= 1 << 1; 2800 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 2801 } 2802 return cycles; 2803#undef FLD 2804} 2805 2806static int 2807model_crisv32_subu_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 2808{ 2809#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 2810 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2811 const IDESC * UNUSED idesc = abuf->idesc; 2812 int cycles = 0; 2813 { 2814 int referenced = 0; 2815 int UNUSED insn_referenced = abuf->written; 2816 INT in_Rs = -1; 2817 in_Rs = FLD (in_Rs); 2818 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 2819 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 2820 } 2821 { 2822 int referenced = 0; 2823 int UNUSED insn_referenced = abuf->written; 2824 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 2825 } 2826 { 2827 int referenced = 0; 2828 int UNUSED insn_referenced = abuf->written; 2829 INT in_Rd = -1; 2830 INT in_Rs = -1; 2831 INT out_Rd = -1; 2832 in_Rd = FLD (in_Rd); 2833 in_Rs = FLD (in_Rs); 2834 referenced |= 1 << 0; 2835 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 2836 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 2837 } 2838 return cycles; 2839#undef FLD 2840} 2841 2842static int 2843model_crisv32_subu_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 2844{ 2845#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 2846 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2847 const IDESC * UNUSED idesc = abuf->idesc; 2848 int cycles = 0; 2849 { 2850 int referenced = 0; 2851 int UNUSED insn_referenced = abuf->written; 2852 INT in_Rs = -1; 2853 in_Rs = FLD (in_Rs); 2854 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 2855 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 2856 } 2857 { 2858 int referenced = 0; 2859 int UNUSED insn_referenced = abuf->written; 2860 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 2861 } 2862 { 2863 int referenced = 0; 2864 int UNUSED insn_referenced = abuf->written; 2865 INT in_Rd = -1; 2866 INT in_Rs = -1; 2867 INT out_Rd = -1; 2868 in_Rd = FLD (in_Rd); 2869 in_Rs = FLD (in_Rs); 2870 referenced |= 1 << 0; 2871 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 2872 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 2873 } 2874 return cycles; 2875#undef FLD 2876} 2877 2878static int 2879model_crisv32_subucbr (SIM_CPU *current_cpu, void *sem_arg) 2880{ 2881#define FLD(f) abuf->fields.sfmt_addcbr.f 2882 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2883 const IDESC * UNUSED idesc = abuf->idesc; 2884 int cycles = 0; 2885 { 2886 int referenced = 0; 2887 int UNUSED insn_referenced = abuf->written; 2888 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 2889 } 2890 { 2891 int referenced = 0; 2892 int UNUSED insn_referenced = abuf->written; 2893 INT in_Rd = -1; 2894 INT in_Rs = -1; 2895 INT out_Rd = -1; 2896 in_Rd = FLD (in_Rd); 2897 referenced |= 1 << 0; 2898 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 2899 } 2900 return cycles; 2901#undef FLD 2902} 2903 2904static int 2905model_crisv32_subucwr (SIM_CPU *current_cpu, void *sem_arg) 2906{ 2907#define FLD(f) abuf->fields.sfmt_addcwr.f 2908 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2909 const IDESC * UNUSED idesc = abuf->idesc; 2910 int cycles = 0; 2911 { 2912 int referenced = 0; 2913 int UNUSED insn_referenced = abuf->written; 2914 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 2915 } 2916 { 2917 int referenced = 0; 2918 int UNUSED insn_referenced = abuf->written; 2919 INT in_Rd = -1; 2920 INT in_Rs = -1; 2921 INT out_Rd = -1; 2922 in_Rd = FLD (in_Rd); 2923 referenced |= 1 << 0; 2924 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 2925 } 2926 return cycles; 2927#undef FLD 2928} 2929 2930static int 2931model_crisv32_addc_r (SIM_CPU *current_cpu, void *sem_arg) 2932{ 2933#define FLD(f) abuf->fields.sfmt_addc_m.f 2934 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2935 const IDESC * UNUSED idesc = abuf->idesc; 2936 int cycles = 0; 2937 { 2938 int referenced = 0; 2939 int UNUSED insn_referenced = abuf->written; 2940 INT in_Rd = -1; 2941 INT in_Rs = -1; 2942 INT out_Rd = -1; 2943 in_Rd = FLD (in_Rd); 2944 in_Rs = FLD (in_Rs); 2945 referenced |= 1 << 0; 2946 referenced |= 1 << 1; 2947 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 2948 } 2949 return cycles; 2950#undef FLD 2951} 2952 2953static int 2954model_crisv32_addc_m (SIM_CPU *current_cpu, void *sem_arg) 2955{ 2956#define FLD(f) abuf->fields.sfmt_addc_m.f 2957 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2958 const IDESC * UNUSED idesc = abuf->idesc; 2959 int cycles = 0; 2960 { 2961 int referenced = 0; 2962 int UNUSED insn_referenced = abuf->written; 2963 INT in_Rs = -1; 2964 in_Rs = FLD (in_Rs); 2965 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 2966 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 2967 } 2968 { 2969 int referenced = 0; 2970 int UNUSED insn_referenced = abuf->written; 2971 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 2972 } 2973 { 2974 int referenced = 0; 2975 int UNUSED insn_referenced = abuf->written; 2976 INT in_Rd = -1; 2977 INT in_Rs = -1; 2978 INT out_Rd = -1; 2979 in_Rd = FLD (in_Rd); 2980 in_Rs = FLD (in_Rs); 2981 referenced |= 1 << 0; 2982 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 2983 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 2984 } 2985 return cycles; 2986#undef FLD 2987} 2988 2989static int 2990model_crisv32_addc_c (SIM_CPU *current_cpu, void *sem_arg) 2991{ 2992#define FLD(f) abuf->fields.sfmt_addcdr.f 2993 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2994 const IDESC * UNUSED idesc = abuf->idesc; 2995 int cycles = 0; 2996 { 2997 int referenced = 0; 2998 int UNUSED insn_referenced = abuf->written; 2999 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 3000 } 3001 { 3002 int referenced = 0; 3003 int UNUSED insn_referenced = abuf->written; 3004 INT in_Rd = -1; 3005 INT in_Rs = -1; 3006 INT out_Rd = -1; 3007 in_Rd = FLD (in_Rd); 3008 referenced |= 1 << 0; 3009 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 3010 } 3011 return cycles; 3012#undef FLD 3013} 3014 3015static int 3016model_crisv32_lapc_d (SIM_CPU *current_cpu, void *sem_arg) 3017{ 3018#define FLD(f) abuf->fields.sfmt_lapc_d.f 3019 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3020 const IDESC * UNUSED idesc = abuf->idesc; 3021 int cycles = 0; 3022 { 3023 int referenced = 0; 3024 int UNUSED insn_referenced = abuf->written; 3025 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 3026 } 3027 { 3028 int referenced = 0; 3029 int UNUSED insn_referenced = abuf->written; 3030 INT in_Rd = -1; 3031 INT in_Rs = -1; 3032 INT out_Rd = -1; 3033 out_Rd = FLD (out_Rd); 3034 referenced |= 1 << 2; 3035 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 3036 } 3037 return cycles; 3038#undef FLD 3039} 3040 3041static int 3042model_crisv32_lapcq (SIM_CPU *current_cpu, void *sem_arg) 3043{ 3044#define FLD(f) abuf->fields.sfmt_lapcq.f 3045 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3046 const IDESC * UNUSED idesc = abuf->idesc; 3047 int cycles = 0; 3048 { 3049 int referenced = 0; 3050 int UNUSED insn_referenced = abuf->written; 3051 INT in_Rd = -1; 3052 INT in_Rs = -1; 3053 INT out_Rd = -1; 3054 out_Rd = FLD (out_Rd); 3055 referenced |= 1 << 2; 3056 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 3057 } 3058 return cycles; 3059#undef FLD 3060} 3061 3062static int 3063model_crisv32_addi_b_r (SIM_CPU *current_cpu, void *sem_arg) 3064{ 3065#define FLD(f) abuf->fields.sfmt_addc_m.f 3066 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3067 const IDESC * UNUSED idesc = abuf->idesc; 3068 int cycles = 0; 3069 { 3070 int referenced = 0; 3071 int UNUSED insn_referenced = abuf->written; 3072 INT in_Rd = -1; 3073 INT in_Rs = -1; 3074 INT out_Rd = -1; 3075 in_Rd = FLD (in_Rd); 3076 in_Rs = FLD (in_Rs); 3077 referenced |= 1 << 0; 3078 referenced |= 1 << 1; 3079 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 3080 } 3081 return cycles; 3082#undef FLD 3083} 3084 3085static int 3086model_crisv32_addi_w_r (SIM_CPU *current_cpu, void *sem_arg) 3087{ 3088#define FLD(f) abuf->fields.sfmt_addc_m.f 3089 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3090 const IDESC * UNUSED idesc = abuf->idesc; 3091 int cycles = 0; 3092 { 3093 int referenced = 0; 3094 int UNUSED insn_referenced = abuf->written; 3095 INT in_Rd = -1; 3096 INT in_Rs = -1; 3097 INT out_Rd = -1; 3098 in_Rd = FLD (in_Rd); 3099 in_Rs = FLD (in_Rs); 3100 referenced |= 1 << 0; 3101 referenced |= 1 << 1; 3102 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 3103 } 3104 return cycles; 3105#undef FLD 3106} 3107 3108static int 3109model_crisv32_addi_d_r (SIM_CPU *current_cpu, void *sem_arg) 3110{ 3111#define FLD(f) abuf->fields.sfmt_addc_m.f 3112 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3113 const IDESC * UNUSED idesc = abuf->idesc; 3114 int cycles = 0; 3115 { 3116 int referenced = 0; 3117 int UNUSED insn_referenced = abuf->written; 3118 INT in_Rd = -1; 3119 INT in_Rs = -1; 3120 INT out_Rd = -1; 3121 in_Rd = FLD (in_Rd); 3122 in_Rs = FLD (in_Rs); 3123 referenced |= 1 << 0; 3124 referenced |= 1 << 1; 3125 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 3126 } 3127 return cycles; 3128#undef FLD 3129} 3130 3131static int 3132model_crisv32_neg_b_r (SIM_CPU *current_cpu, void *sem_arg) 3133{ 3134#define FLD(f) abuf->fields.sfmt_addc_m.f 3135 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3136 const IDESC * UNUSED idesc = abuf->idesc; 3137 int cycles = 0; 3138 { 3139 int referenced = 0; 3140 int UNUSED insn_referenced = abuf->written; 3141 INT in_Rd = -1; 3142 INT in_Rs = -1; 3143 INT out_Rd = -1; 3144 in_Rs = FLD (in_Rs); 3145 referenced |= 1 << 1; 3146 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 3147 } 3148 return cycles; 3149#undef FLD 3150} 3151 3152static int 3153model_crisv32_neg_w_r (SIM_CPU *current_cpu, void *sem_arg) 3154{ 3155#define FLD(f) abuf->fields.sfmt_addc_m.f 3156 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3157 const IDESC * UNUSED idesc = abuf->idesc; 3158 int cycles = 0; 3159 { 3160 int referenced = 0; 3161 int UNUSED insn_referenced = abuf->written; 3162 INT in_Rd = -1; 3163 INT in_Rs = -1; 3164 INT out_Rd = -1; 3165 in_Rs = FLD (in_Rs); 3166 referenced |= 1 << 1; 3167 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 3168 } 3169 return cycles; 3170#undef FLD 3171} 3172 3173static int 3174model_crisv32_neg_d_r (SIM_CPU *current_cpu, void *sem_arg) 3175{ 3176#define FLD(f) abuf->fields.sfmt_addc_m.f 3177 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3178 const IDESC * UNUSED idesc = abuf->idesc; 3179 int cycles = 0; 3180 { 3181 int referenced = 0; 3182 int UNUSED insn_referenced = abuf->written; 3183 INT in_Rd = -1; 3184 INT in_Rs = -1; 3185 INT out_Rd = -1; 3186 in_Rs = FLD (in_Rs); 3187 referenced |= 1 << 1; 3188 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 3189 } 3190 return cycles; 3191#undef FLD 3192} 3193 3194static int 3195model_crisv32_test_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 3196{ 3197#define FLD(f) abuf->fields.sfmt_move_spr_mv32.f 3198 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3199 const IDESC * UNUSED idesc = abuf->idesc; 3200 int cycles = 0; 3201 { 3202 int referenced = 0; 3203 int UNUSED insn_referenced = abuf->written; 3204 INT in_Rs = -1; 3205 in_Rs = FLD (in_Rs); 3206 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 3207 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 3208 } 3209 { 3210 int referenced = 0; 3211 int UNUSED insn_referenced = abuf->written; 3212 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 3213 } 3214 { 3215 int referenced = 0; 3216 int UNUSED insn_referenced = abuf->written; 3217 INT in_Rd = -1; 3218 INT in_Rs = -1; 3219 INT out_Rd = -1; 3220 in_Rs = FLD (in_Rs); 3221 if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 3222 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 3223 } 3224 return cycles; 3225#undef FLD 3226} 3227 3228static int 3229model_crisv32_test_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 3230{ 3231#define FLD(f) abuf->fields.sfmt_move_spr_mv32.f 3232 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3233 const IDESC * UNUSED idesc = abuf->idesc; 3234 int cycles = 0; 3235 { 3236 int referenced = 0; 3237 int UNUSED insn_referenced = abuf->written; 3238 INT in_Rs = -1; 3239 in_Rs = FLD (in_Rs); 3240 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 3241 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 3242 } 3243 { 3244 int referenced = 0; 3245 int UNUSED insn_referenced = abuf->written; 3246 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 3247 } 3248 { 3249 int referenced = 0; 3250 int UNUSED insn_referenced = abuf->written; 3251 INT in_Rd = -1; 3252 INT in_Rs = -1; 3253 INT out_Rd = -1; 3254 in_Rs = FLD (in_Rs); 3255 if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 3256 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 3257 } 3258 return cycles; 3259#undef FLD 3260} 3261 3262static int 3263model_crisv32_test_m_d_m (SIM_CPU *current_cpu, void *sem_arg) 3264{ 3265#define FLD(f) abuf->fields.sfmt_move_spr_mv32.f 3266 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3267 const IDESC * UNUSED idesc = abuf->idesc; 3268 int cycles = 0; 3269 { 3270 int referenced = 0; 3271 int UNUSED insn_referenced = abuf->written; 3272 INT in_Rs = -1; 3273 in_Rs = FLD (in_Rs); 3274 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 3275 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 3276 } 3277 { 3278 int referenced = 0; 3279 int UNUSED insn_referenced = abuf->written; 3280 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 3281 } 3282 { 3283 int referenced = 0; 3284 int UNUSED insn_referenced = abuf->written; 3285 INT in_Rd = -1; 3286 INT in_Rs = -1; 3287 INT out_Rd = -1; 3288 in_Rs = FLD (in_Rs); 3289 if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 3290 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 3291 } 3292 return cycles; 3293#undef FLD 3294} 3295 3296static int 3297model_crisv32_move_r_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 3298{ 3299#define FLD(f) abuf->fields.sfmt_addc_m.f 3300 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3301 const IDESC * UNUSED idesc = abuf->idesc; 3302 int cycles = 0; 3303 { 3304 int referenced = 0; 3305 int UNUSED insn_referenced = abuf->written; 3306 INT in_Rs = -1; 3307 in_Rs = FLD (in_Rs); 3308 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 3309 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 3310 } 3311 { 3312 int referenced = 0; 3313 int UNUSED insn_referenced = abuf->written; 3314 INT in_Rd = -1; 3315 INT in_Rs = -1; 3316 INT out_Rd = -1; 3317 in_Rd = FLD (in_Rd); 3318 in_Rs = FLD (in_Rs); 3319 referenced |= 1 << 0; 3320 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 3321 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 3322 } 3323 { 3324 int referenced = 0; 3325 int UNUSED insn_referenced = abuf->written; 3326 cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced); 3327 } 3328 return cycles; 3329#undef FLD 3330} 3331 3332static int 3333model_crisv32_move_r_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 3334{ 3335#define FLD(f) abuf->fields.sfmt_addc_m.f 3336 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3337 const IDESC * UNUSED idesc = abuf->idesc; 3338 int cycles = 0; 3339 { 3340 int referenced = 0; 3341 int UNUSED insn_referenced = abuf->written; 3342 INT in_Rs = -1; 3343 in_Rs = FLD (in_Rs); 3344 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 3345 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 3346 } 3347 { 3348 int referenced = 0; 3349 int UNUSED insn_referenced = abuf->written; 3350 INT in_Rd = -1; 3351 INT in_Rs = -1; 3352 INT out_Rd = -1; 3353 in_Rd = FLD (in_Rd); 3354 in_Rs = FLD (in_Rs); 3355 referenced |= 1 << 0; 3356 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 3357 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 3358 } 3359 { 3360 int referenced = 0; 3361 int UNUSED insn_referenced = abuf->written; 3362 cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced); 3363 } 3364 return cycles; 3365#undef FLD 3366} 3367 3368static int 3369model_crisv32_move_r_m_d_m (SIM_CPU *current_cpu, void *sem_arg) 3370{ 3371#define FLD(f) abuf->fields.sfmt_addc_m.f 3372 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3373 const IDESC * UNUSED idesc = abuf->idesc; 3374 int cycles = 0; 3375 { 3376 int referenced = 0; 3377 int UNUSED insn_referenced = abuf->written; 3378 INT in_Rs = -1; 3379 in_Rs = FLD (in_Rs); 3380 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 3381 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 3382 } 3383 { 3384 int referenced = 0; 3385 int UNUSED insn_referenced = abuf->written; 3386 INT in_Rd = -1; 3387 INT in_Rs = -1; 3388 INT out_Rd = -1; 3389 in_Rd = FLD (in_Rd); 3390 in_Rs = FLD (in_Rs); 3391 referenced |= 1 << 0; 3392 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 3393 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 3394 } 3395 { 3396 int referenced = 0; 3397 int UNUSED insn_referenced = abuf->written; 3398 cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced); 3399 } 3400 return cycles; 3401#undef FLD 3402} 3403 3404static int 3405model_crisv32_muls_b (SIM_CPU *current_cpu, void *sem_arg) 3406{ 3407#define FLD(f) abuf->fields.sfmt_muls_b.f 3408 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3409 const IDESC * UNUSED idesc = abuf->idesc; 3410 int cycles = 0; 3411 { 3412 int referenced = 0; 3413 int UNUSED insn_referenced = abuf->written; 3414 INT in_Rs = -1; 3415 INT in_Rd = -1; 3416 in_Rs = FLD (in_Rs); 3417 in_Rd = FLD (in_Rd); 3418 referenced |= 1 << 0; 3419 referenced |= 1 << 1; 3420 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd); 3421 } 3422 { 3423 int referenced = 0; 3424 int UNUSED insn_referenced = abuf->written; 3425 INT in_Rd = -1; 3426 INT in_Rs = -1; 3427 INT out_Rd = -1; 3428 in_Rd = FLD (in_Rd); 3429 in_Rs = FLD (in_Rs); 3430 out_Rd = FLD (out_Rd); 3431 referenced |= 1 << 0; 3432 referenced |= 1 << 1; 3433 referenced |= 1 << 2; 3434 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 3435 } 3436 return cycles; 3437#undef FLD 3438} 3439 3440static int 3441model_crisv32_muls_w (SIM_CPU *current_cpu, void *sem_arg) 3442{ 3443#define FLD(f) abuf->fields.sfmt_muls_b.f 3444 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3445 const IDESC * UNUSED idesc = abuf->idesc; 3446 int cycles = 0; 3447 { 3448 int referenced = 0; 3449 int UNUSED insn_referenced = abuf->written; 3450 INT in_Rs = -1; 3451 INT in_Rd = -1; 3452 in_Rs = FLD (in_Rs); 3453 in_Rd = FLD (in_Rd); 3454 referenced |= 1 << 0; 3455 referenced |= 1 << 1; 3456 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd); 3457 } 3458 { 3459 int referenced = 0; 3460 int UNUSED insn_referenced = abuf->written; 3461 INT in_Rd = -1; 3462 INT in_Rs = -1; 3463 INT out_Rd = -1; 3464 in_Rd = FLD (in_Rd); 3465 in_Rs = FLD (in_Rs); 3466 out_Rd = FLD (out_Rd); 3467 referenced |= 1 << 0; 3468 referenced |= 1 << 1; 3469 referenced |= 1 << 2; 3470 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 3471 } 3472 return cycles; 3473#undef FLD 3474} 3475 3476static int 3477model_crisv32_muls_d (SIM_CPU *current_cpu, void *sem_arg) 3478{ 3479#define FLD(f) abuf->fields.sfmt_muls_b.f 3480 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3481 const IDESC * UNUSED idesc = abuf->idesc; 3482 int cycles = 0; 3483 { 3484 int referenced = 0; 3485 int UNUSED insn_referenced = abuf->written; 3486 INT in_Rs = -1; 3487 INT in_Rd = -1; 3488 in_Rs = FLD (in_Rs); 3489 in_Rd = FLD (in_Rd); 3490 referenced |= 1 << 0; 3491 referenced |= 1 << 1; 3492 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd); 3493 } 3494 { 3495 int referenced = 0; 3496 int UNUSED insn_referenced = abuf->written; 3497 INT in_Rd = -1; 3498 INT in_Rs = -1; 3499 INT out_Rd = -1; 3500 in_Rd = FLD (in_Rd); 3501 in_Rs = FLD (in_Rs); 3502 out_Rd = FLD (out_Rd); 3503 referenced |= 1 << 0; 3504 referenced |= 1 << 1; 3505 referenced |= 1 << 2; 3506 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 3507 } 3508 return cycles; 3509#undef FLD 3510} 3511 3512static int 3513model_crisv32_mulu_b (SIM_CPU *current_cpu, void *sem_arg) 3514{ 3515#define FLD(f) abuf->fields.sfmt_muls_b.f 3516 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3517 const IDESC * UNUSED idesc = abuf->idesc; 3518 int cycles = 0; 3519 { 3520 int referenced = 0; 3521 int UNUSED insn_referenced = abuf->written; 3522 INT in_Rs = -1; 3523 INT in_Rd = -1; 3524 in_Rs = FLD (in_Rs); 3525 in_Rd = FLD (in_Rd); 3526 referenced |= 1 << 0; 3527 referenced |= 1 << 1; 3528 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd); 3529 } 3530 { 3531 int referenced = 0; 3532 int UNUSED insn_referenced = abuf->written; 3533 INT in_Rd = -1; 3534 INT in_Rs = -1; 3535 INT out_Rd = -1; 3536 in_Rd = FLD (in_Rd); 3537 in_Rs = FLD (in_Rs); 3538 out_Rd = FLD (out_Rd); 3539 referenced |= 1 << 0; 3540 referenced |= 1 << 1; 3541 referenced |= 1 << 2; 3542 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 3543 } 3544 return cycles; 3545#undef FLD 3546} 3547 3548static int 3549model_crisv32_mulu_w (SIM_CPU *current_cpu, void *sem_arg) 3550{ 3551#define FLD(f) abuf->fields.sfmt_muls_b.f 3552 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3553 const IDESC * UNUSED idesc = abuf->idesc; 3554 int cycles = 0; 3555 { 3556 int referenced = 0; 3557 int UNUSED insn_referenced = abuf->written; 3558 INT in_Rs = -1; 3559 INT in_Rd = -1; 3560 in_Rs = FLD (in_Rs); 3561 in_Rd = FLD (in_Rd); 3562 referenced |= 1 << 0; 3563 referenced |= 1 << 1; 3564 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd); 3565 } 3566 { 3567 int referenced = 0; 3568 int UNUSED insn_referenced = abuf->written; 3569 INT in_Rd = -1; 3570 INT in_Rs = -1; 3571 INT out_Rd = -1; 3572 in_Rd = FLD (in_Rd); 3573 in_Rs = FLD (in_Rs); 3574 out_Rd = FLD (out_Rd); 3575 referenced |= 1 << 0; 3576 referenced |= 1 << 1; 3577 referenced |= 1 << 2; 3578 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 3579 } 3580 return cycles; 3581#undef FLD 3582} 3583 3584static int 3585model_crisv32_mulu_d (SIM_CPU *current_cpu, void *sem_arg) 3586{ 3587#define FLD(f) abuf->fields.sfmt_muls_b.f 3588 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3589 const IDESC * UNUSED idesc = abuf->idesc; 3590 int cycles = 0; 3591 { 3592 int referenced = 0; 3593 int UNUSED insn_referenced = abuf->written; 3594 INT in_Rs = -1; 3595 INT in_Rd = -1; 3596 in_Rs = FLD (in_Rs); 3597 in_Rd = FLD (in_Rd); 3598 referenced |= 1 << 0; 3599 referenced |= 1 << 1; 3600 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd); 3601 } 3602 { 3603 int referenced = 0; 3604 int UNUSED insn_referenced = abuf->written; 3605 INT in_Rd = -1; 3606 INT in_Rs = -1; 3607 INT out_Rd = -1; 3608 in_Rd = FLD (in_Rd); 3609 in_Rs = FLD (in_Rs); 3610 out_Rd = FLD (out_Rd); 3611 referenced |= 1 << 0; 3612 referenced |= 1 << 1; 3613 referenced |= 1 << 2; 3614 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 3615 } 3616 return cycles; 3617#undef FLD 3618} 3619 3620static int 3621model_crisv32_mcp (SIM_CPU *current_cpu, void *sem_arg) 3622{ 3623#define FLD(f) abuf->fields.sfmt_mcp.f 3624 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3625 const IDESC * UNUSED idesc = abuf->idesc; 3626 int cycles = 0; 3627 { 3628 int referenced = 0; 3629 int UNUSED insn_referenced = abuf->written; 3630 INT in_Rd = -1; 3631 INT in_Rs = -1; 3632 INT out_Rd = -1; 3633 in_Rs = FLD (in_Rs); 3634 referenced |= 1 << 1; 3635 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 3636 } 3637 return cycles; 3638#undef FLD 3639} 3640 3641static int 3642model_crisv32_dstep (SIM_CPU *current_cpu, void *sem_arg) 3643{ 3644#define FLD(f) abuf->fields.sfmt_muls_b.f 3645 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3646 const IDESC * UNUSED idesc = abuf->idesc; 3647 int cycles = 0; 3648 { 3649 int referenced = 0; 3650 int UNUSED insn_referenced = abuf->written; 3651 INT in_Rd = -1; 3652 INT in_Rs = -1; 3653 INT out_Rd = -1; 3654 in_Rd = FLD (in_Rd); 3655 in_Rs = FLD (in_Rs); 3656 out_Rd = FLD (out_Rd); 3657 referenced |= 1 << 0; 3658 referenced |= 1 << 1; 3659 referenced |= 1 << 2; 3660 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 3661 } 3662 return cycles; 3663#undef FLD 3664} 3665 3666static int 3667model_crisv32_abs (SIM_CPU *current_cpu, void *sem_arg) 3668{ 3669#define FLD(f) abuf->fields.sfmt_muls_b.f 3670 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3671 const IDESC * UNUSED idesc = abuf->idesc; 3672 int cycles = 0; 3673 { 3674 int referenced = 0; 3675 int UNUSED insn_referenced = abuf->written; 3676 INT in_Rd = -1; 3677 INT in_Rs = -1; 3678 INT out_Rd = -1; 3679 in_Rs = FLD (in_Rs); 3680 out_Rd = FLD (out_Rd); 3681 referenced |= 1 << 1; 3682 referenced |= 1 << 2; 3683 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 3684 } 3685 return cycles; 3686#undef FLD 3687} 3688 3689static int 3690model_crisv32_and_b_r (SIM_CPU *current_cpu, void *sem_arg) 3691{ 3692#define FLD(f) abuf->fields.sfmt_addc_m.f 3693 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3694 const IDESC * UNUSED idesc = abuf->idesc; 3695 int cycles = 0; 3696 { 3697 int referenced = 0; 3698 int UNUSED insn_referenced = abuf->written; 3699 INT in_Rd = -1; 3700 INT in_Rs = -1; 3701 INT out_Rd = -1; 3702 in_Rd = FLD (in_Rd); 3703 in_Rs = FLD (in_Rs); 3704 referenced |= 1 << 0; 3705 referenced |= 1 << 1; 3706 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 3707 } 3708 return cycles; 3709#undef FLD 3710} 3711 3712static int 3713model_crisv32_and_w_r (SIM_CPU *current_cpu, void *sem_arg) 3714{ 3715#define FLD(f) abuf->fields.sfmt_addc_m.f 3716 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3717 const IDESC * UNUSED idesc = abuf->idesc; 3718 int cycles = 0; 3719 { 3720 int referenced = 0; 3721 int UNUSED insn_referenced = abuf->written; 3722 INT in_Rd = -1; 3723 INT in_Rs = -1; 3724 INT out_Rd = -1; 3725 in_Rd = FLD (in_Rd); 3726 in_Rs = FLD (in_Rs); 3727 referenced |= 1 << 0; 3728 referenced |= 1 << 1; 3729 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 3730 } 3731 return cycles; 3732#undef FLD 3733} 3734 3735static int 3736model_crisv32_and_d_r (SIM_CPU *current_cpu, void *sem_arg) 3737{ 3738#define FLD(f) abuf->fields.sfmt_addc_m.f 3739 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3740 const IDESC * UNUSED idesc = abuf->idesc; 3741 int cycles = 0; 3742 { 3743 int referenced = 0; 3744 int UNUSED insn_referenced = abuf->written; 3745 INT in_Rd = -1; 3746 INT in_Rs = -1; 3747 INT out_Rd = -1; 3748 in_Rd = FLD (in_Rd); 3749 in_Rs = FLD (in_Rs); 3750 referenced |= 1 << 0; 3751 referenced |= 1 << 1; 3752 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 3753 } 3754 return cycles; 3755#undef FLD 3756} 3757 3758static int 3759model_crisv32_and_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 3760{ 3761#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 3762 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3763 const IDESC * UNUSED idesc = abuf->idesc; 3764 int cycles = 0; 3765 { 3766 int referenced = 0; 3767 int UNUSED insn_referenced = abuf->written; 3768 INT in_Rs = -1; 3769 in_Rs = FLD (in_Rs); 3770 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 3771 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 3772 } 3773 { 3774 int referenced = 0; 3775 int UNUSED insn_referenced = abuf->written; 3776 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 3777 } 3778 { 3779 int referenced = 0; 3780 int UNUSED insn_referenced = abuf->written; 3781 INT in_Rd = -1; 3782 INT in_Rs = -1; 3783 INT out_Rd = -1; 3784 in_Rd = FLD (in_Rd); 3785 in_Rs = FLD (in_Rs); 3786 referenced |= 1 << 0; 3787 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 3788 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 3789 } 3790 return cycles; 3791#undef FLD 3792} 3793 3794static int 3795model_crisv32_and_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 3796{ 3797#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 3798 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3799 const IDESC * UNUSED idesc = abuf->idesc; 3800 int cycles = 0; 3801 { 3802 int referenced = 0; 3803 int UNUSED insn_referenced = abuf->written; 3804 INT in_Rs = -1; 3805 in_Rs = FLD (in_Rs); 3806 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 3807 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 3808 } 3809 { 3810 int referenced = 0; 3811 int UNUSED insn_referenced = abuf->written; 3812 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 3813 } 3814 { 3815 int referenced = 0; 3816 int UNUSED insn_referenced = abuf->written; 3817 INT in_Rd = -1; 3818 INT in_Rs = -1; 3819 INT out_Rd = -1; 3820 in_Rd = FLD (in_Rd); 3821 in_Rs = FLD (in_Rs); 3822 referenced |= 1 << 0; 3823 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 3824 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 3825 } 3826 return cycles; 3827#undef FLD 3828} 3829 3830static int 3831model_crisv32_and_m_d_m (SIM_CPU *current_cpu, void *sem_arg) 3832{ 3833#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 3834 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3835 const IDESC * UNUSED idesc = abuf->idesc; 3836 int cycles = 0; 3837 { 3838 int referenced = 0; 3839 int UNUSED insn_referenced = abuf->written; 3840 INT in_Rs = -1; 3841 in_Rs = FLD (in_Rs); 3842 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 3843 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 3844 } 3845 { 3846 int referenced = 0; 3847 int UNUSED insn_referenced = abuf->written; 3848 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 3849 } 3850 { 3851 int referenced = 0; 3852 int UNUSED insn_referenced = abuf->written; 3853 INT in_Rd = -1; 3854 INT in_Rs = -1; 3855 INT out_Rd = -1; 3856 in_Rd = FLD (in_Rd); 3857 in_Rs = FLD (in_Rs); 3858 referenced |= 1 << 0; 3859 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 3860 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 3861 } 3862 return cycles; 3863#undef FLD 3864} 3865 3866static int 3867model_crisv32_andcbr (SIM_CPU *current_cpu, void *sem_arg) 3868{ 3869#define FLD(f) abuf->fields.sfmt_addcbr.f 3870 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3871 const IDESC * UNUSED idesc = abuf->idesc; 3872 int cycles = 0; 3873 { 3874 int referenced = 0; 3875 int UNUSED insn_referenced = abuf->written; 3876 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 3877 } 3878 { 3879 int referenced = 0; 3880 int UNUSED insn_referenced = abuf->written; 3881 INT in_Rd = -1; 3882 INT in_Rs = -1; 3883 INT out_Rd = -1; 3884 in_Rd = FLD (in_Rd); 3885 referenced |= 1 << 0; 3886 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 3887 } 3888 return cycles; 3889#undef FLD 3890} 3891 3892static int 3893model_crisv32_andcwr (SIM_CPU *current_cpu, void *sem_arg) 3894{ 3895#define FLD(f) abuf->fields.sfmt_addcwr.f 3896 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3897 const IDESC * UNUSED idesc = abuf->idesc; 3898 int cycles = 0; 3899 { 3900 int referenced = 0; 3901 int UNUSED insn_referenced = abuf->written; 3902 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 3903 } 3904 { 3905 int referenced = 0; 3906 int UNUSED insn_referenced = abuf->written; 3907 INT in_Rd = -1; 3908 INT in_Rs = -1; 3909 INT out_Rd = -1; 3910 in_Rd = FLD (in_Rd); 3911 referenced |= 1 << 0; 3912 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 3913 } 3914 return cycles; 3915#undef FLD 3916} 3917 3918static int 3919model_crisv32_andcdr (SIM_CPU *current_cpu, void *sem_arg) 3920{ 3921#define FLD(f) abuf->fields.sfmt_addcdr.f 3922 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3923 const IDESC * UNUSED idesc = abuf->idesc; 3924 int cycles = 0; 3925 { 3926 int referenced = 0; 3927 int UNUSED insn_referenced = abuf->written; 3928 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 3929 } 3930 { 3931 int referenced = 0; 3932 int UNUSED insn_referenced = abuf->written; 3933 INT in_Rd = -1; 3934 INT in_Rs = -1; 3935 INT out_Rd = -1; 3936 in_Rd = FLD (in_Rd); 3937 referenced |= 1 << 0; 3938 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 3939 } 3940 return cycles; 3941#undef FLD 3942} 3943 3944static int 3945model_crisv32_andq (SIM_CPU *current_cpu, void *sem_arg) 3946{ 3947#define FLD(f) abuf->fields.sfmt_andq.f 3948 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3949 const IDESC * UNUSED idesc = abuf->idesc; 3950 int cycles = 0; 3951 { 3952 int referenced = 0; 3953 int UNUSED insn_referenced = abuf->written; 3954 INT in_Rd = -1; 3955 INT in_Rs = -1; 3956 INT out_Rd = -1; 3957 in_Rd = FLD (in_Rd); 3958 referenced |= 1 << 0; 3959 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 3960 } 3961 return cycles; 3962#undef FLD 3963} 3964 3965static int 3966model_crisv32_orr_b_r (SIM_CPU *current_cpu, void *sem_arg) 3967{ 3968#define FLD(f) abuf->fields.sfmt_addc_m.f 3969 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3970 const IDESC * UNUSED idesc = abuf->idesc; 3971 int cycles = 0; 3972 { 3973 int referenced = 0; 3974 int UNUSED insn_referenced = abuf->written; 3975 INT in_Rd = -1; 3976 INT in_Rs = -1; 3977 INT out_Rd = -1; 3978 in_Rd = FLD (in_Rd); 3979 in_Rs = FLD (in_Rs); 3980 referenced |= 1 << 0; 3981 referenced |= 1 << 1; 3982 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 3983 } 3984 return cycles; 3985#undef FLD 3986} 3987 3988static int 3989model_crisv32_orr_w_r (SIM_CPU *current_cpu, void *sem_arg) 3990{ 3991#define FLD(f) abuf->fields.sfmt_addc_m.f 3992 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3993 const IDESC * UNUSED idesc = abuf->idesc; 3994 int cycles = 0; 3995 { 3996 int referenced = 0; 3997 int UNUSED insn_referenced = abuf->written; 3998 INT in_Rd = -1; 3999 INT in_Rs = -1; 4000 INT out_Rd = -1; 4001 in_Rd = FLD (in_Rd); 4002 in_Rs = FLD (in_Rs); 4003 referenced |= 1 << 0; 4004 referenced |= 1 << 1; 4005 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4006 } 4007 return cycles; 4008#undef FLD 4009} 4010 4011static int 4012model_crisv32_orr_d_r (SIM_CPU *current_cpu, void *sem_arg) 4013{ 4014#define FLD(f) abuf->fields.sfmt_addc_m.f 4015 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4016 const IDESC * UNUSED idesc = abuf->idesc; 4017 int cycles = 0; 4018 { 4019 int referenced = 0; 4020 int UNUSED insn_referenced = abuf->written; 4021 INT in_Rd = -1; 4022 INT in_Rs = -1; 4023 INT out_Rd = -1; 4024 in_Rd = FLD (in_Rd); 4025 in_Rs = FLD (in_Rs); 4026 referenced |= 1 << 0; 4027 referenced |= 1 << 1; 4028 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4029 } 4030 return cycles; 4031#undef FLD 4032} 4033 4034static int 4035model_crisv32_or_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 4036{ 4037#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 4038 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4039 const IDESC * UNUSED idesc = abuf->idesc; 4040 int cycles = 0; 4041 { 4042 int referenced = 0; 4043 int UNUSED insn_referenced = abuf->written; 4044 INT in_Rs = -1; 4045 in_Rs = FLD (in_Rs); 4046 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 4047 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 4048 } 4049 { 4050 int referenced = 0; 4051 int UNUSED insn_referenced = abuf->written; 4052 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 4053 } 4054 { 4055 int referenced = 0; 4056 int UNUSED insn_referenced = abuf->written; 4057 INT in_Rd = -1; 4058 INT in_Rs = -1; 4059 INT out_Rd = -1; 4060 in_Rd = FLD (in_Rd); 4061 in_Rs = FLD (in_Rs); 4062 referenced |= 1 << 0; 4063 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 4064 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 4065 } 4066 return cycles; 4067#undef FLD 4068} 4069 4070static int 4071model_crisv32_or_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 4072{ 4073#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 4074 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4075 const IDESC * UNUSED idesc = abuf->idesc; 4076 int cycles = 0; 4077 { 4078 int referenced = 0; 4079 int UNUSED insn_referenced = abuf->written; 4080 INT in_Rs = -1; 4081 in_Rs = FLD (in_Rs); 4082 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 4083 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 4084 } 4085 { 4086 int referenced = 0; 4087 int UNUSED insn_referenced = abuf->written; 4088 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 4089 } 4090 { 4091 int referenced = 0; 4092 int UNUSED insn_referenced = abuf->written; 4093 INT in_Rd = -1; 4094 INT in_Rs = -1; 4095 INT out_Rd = -1; 4096 in_Rd = FLD (in_Rd); 4097 in_Rs = FLD (in_Rs); 4098 referenced |= 1 << 0; 4099 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 4100 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 4101 } 4102 return cycles; 4103#undef FLD 4104} 4105 4106static int 4107model_crisv32_or_m_d_m (SIM_CPU *current_cpu, void *sem_arg) 4108{ 4109#define FLD(f) abuf->fields.sfmt_add_m_b_m.f 4110 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4111 const IDESC * UNUSED idesc = abuf->idesc; 4112 int cycles = 0; 4113 { 4114 int referenced = 0; 4115 int UNUSED insn_referenced = abuf->written; 4116 INT in_Rs = -1; 4117 in_Rs = FLD (in_Rs); 4118 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 4119 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 4120 } 4121 { 4122 int referenced = 0; 4123 int UNUSED insn_referenced = abuf->written; 4124 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 4125 } 4126 { 4127 int referenced = 0; 4128 int UNUSED insn_referenced = abuf->written; 4129 INT in_Rd = -1; 4130 INT in_Rs = -1; 4131 INT out_Rd = -1; 4132 in_Rd = FLD (in_Rd); 4133 in_Rs = FLD (in_Rs); 4134 referenced |= 1 << 0; 4135 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 4136 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 4137 } 4138 return cycles; 4139#undef FLD 4140} 4141 4142static int 4143model_crisv32_orcbr (SIM_CPU *current_cpu, void *sem_arg) 4144{ 4145#define FLD(f) abuf->fields.sfmt_addcbr.f 4146 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4147 const IDESC * UNUSED idesc = abuf->idesc; 4148 int cycles = 0; 4149 { 4150 int referenced = 0; 4151 int UNUSED insn_referenced = abuf->written; 4152 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 4153 } 4154 { 4155 int referenced = 0; 4156 int UNUSED insn_referenced = abuf->written; 4157 INT in_Rd = -1; 4158 INT in_Rs = -1; 4159 INT out_Rd = -1; 4160 in_Rd = FLD (in_Rd); 4161 referenced |= 1 << 0; 4162 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 4163 } 4164 return cycles; 4165#undef FLD 4166} 4167 4168static int 4169model_crisv32_orcwr (SIM_CPU *current_cpu, void *sem_arg) 4170{ 4171#define FLD(f) abuf->fields.sfmt_addcwr.f 4172 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4173 const IDESC * UNUSED idesc = abuf->idesc; 4174 int cycles = 0; 4175 { 4176 int referenced = 0; 4177 int UNUSED insn_referenced = abuf->written; 4178 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 4179 } 4180 { 4181 int referenced = 0; 4182 int UNUSED insn_referenced = abuf->written; 4183 INT in_Rd = -1; 4184 INT in_Rs = -1; 4185 INT out_Rd = -1; 4186 in_Rd = FLD (in_Rd); 4187 referenced |= 1 << 0; 4188 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 4189 } 4190 return cycles; 4191#undef FLD 4192} 4193 4194static int 4195model_crisv32_orcdr (SIM_CPU *current_cpu, void *sem_arg) 4196{ 4197#define FLD(f) abuf->fields.sfmt_addcdr.f 4198 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4199 const IDESC * UNUSED idesc = abuf->idesc; 4200 int cycles = 0; 4201 { 4202 int referenced = 0; 4203 int UNUSED insn_referenced = abuf->written; 4204 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 4205 } 4206 { 4207 int referenced = 0; 4208 int UNUSED insn_referenced = abuf->written; 4209 INT in_Rd = -1; 4210 INT in_Rs = -1; 4211 INT out_Rd = -1; 4212 in_Rd = FLD (in_Rd); 4213 referenced |= 1 << 0; 4214 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 4215 } 4216 return cycles; 4217#undef FLD 4218} 4219 4220static int 4221model_crisv32_orq (SIM_CPU *current_cpu, void *sem_arg) 4222{ 4223#define FLD(f) abuf->fields.sfmt_andq.f 4224 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4225 const IDESC * UNUSED idesc = abuf->idesc; 4226 int cycles = 0; 4227 { 4228 int referenced = 0; 4229 int UNUSED insn_referenced = abuf->written; 4230 INT in_Rd = -1; 4231 INT in_Rs = -1; 4232 INT out_Rd = -1; 4233 in_Rd = FLD (in_Rd); 4234 referenced |= 1 << 0; 4235 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4236 } 4237 return cycles; 4238#undef FLD 4239} 4240 4241static int 4242model_crisv32_xor (SIM_CPU *current_cpu, void *sem_arg) 4243{ 4244#define FLD(f) abuf->fields.sfmt_muls_b.f 4245 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4246 const IDESC * UNUSED idesc = abuf->idesc; 4247 int cycles = 0; 4248 { 4249 int referenced = 0; 4250 int UNUSED insn_referenced = abuf->written; 4251 INT in_Rd = -1; 4252 INT in_Rs = -1; 4253 INT out_Rd = -1; 4254 in_Rd = FLD (in_Rd); 4255 in_Rs = FLD (in_Rs); 4256 out_Rd = FLD (out_Rd); 4257 referenced |= 1 << 0; 4258 referenced |= 1 << 1; 4259 referenced |= 1 << 2; 4260 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4261 } 4262 return cycles; 4263#undef FLD 4264} 4265 4266static int 4267model_crisv32_swap (SIM_CPU *current_cpu, void *sem_arg) 4268{ 4269#define FLD(f) abuf->fields.sfmt_move_spr_mv32.f 4270 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4271 const IDESC * UNUSED idesc = abuf->idesc; 4272 int cycles = 0; 4273 { 4274 int referenced = 0; 4275 int UNUSED insn_referenced = abuf->written; 4276 INT in_Rd = -1; 4277 INT in_Rs = -1; 4278 INT out_Rd = -1; 4279 in_Rs = FLD (in_Rs); 4280 referenced |= 1 << 1; 4281 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4282 } 4283 return cycles; 4284#undef FLD 4285} 4286 4287static int 4288model_crisv32_asrr_b_r (SIM_CPU *current_cpu, void *sem_arg) 4289{ 4290#define FLD(f) abuf->fields.sfmt_addc_m.f 4291 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4292 const IDESC * UNUSED idesc = abuf->idesc; 4293 int cycles = 0; 4294 { 4295 int referenced = 0; 4296 int UNUSED insn_referenced = abuf->written; 4297 INT in_Rd = -1; 4298 INT in_Rs = -1; 4299 INT out_Rd = -1; 4300 in_Rd = FLD (in_Rd); 4301 in_Rs = FLD (in_Rs); 4302 referenced |= 1 << 0; 4303 referenced |= 1 << 1; 4304 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4305 } 4306 return cycles; 4307#undef FLD 4308} 4309 4310static int 4311model_crisv32_asrr_w_r (SIM_CPU *current_cpu, void *sem_arg) 4312{ 4313#define FLD(f) abuf->fields.sfmt_addc_m.f 4314 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4315 const IDESC * UNUSED idesc = abuf->idesc; 4316 int cycles = 0; 4317 { 4318 int referenced = 0; 4319 int UNUSED insn_referenced = abuf->written; 4320 INT in_Rd = -1; 4321 INT in_Rs = -1; 4322 INT out_Rd = -1; 4323 in_Rd = FLD (in_Rd); 4324 in_Rs = FLD (in_Rs); 4325 referenced |= 1 << 0; 4326 referenced |= 1 << 1; 4327 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4328 } 4329 return cycles; 4330#undef FLD 4331} 4332 4333static int 4334model_crisv32_asrr_d_r (SIM_CPU *current_cpu, void *sem_arg) 4335{ 4336#define FLD(f) abuf->fields.sfmt_addc_m.f 4337 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4338 const IDESC * UNUSED idesc = abuf->idesc; 4339 int cycles = 0; 4340 { 4341 int referenced = 0; 4342 int UNUSED insn_referenced = abuf->written; 4343 INT in_Rd = -1; 4344 INT in_Rs = -1; 4345 INT out_Rd = -1; 4346 in_Rd = FLD (in_Rd); 4347 in_Rs = FLD (in_Rs); 4348 referenced |= 1 << 0; 4349 referenced |= 1 << 1; 4350 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4351 } 4352 return cycles; 4353#undef FLD 4354} 4355 4356static int 4357model_crisv32_asrq (SIM_CPU *current_cpu, void *sem_arg) 4358{ 4359#define FLD(f) abuf->fields.sfmt_asrq.f 4360 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4361 const IDESC * UNUSED idesc = abuf->idesc; 4362 int cycles = 0; 4363 { 4364 int referenced = 0; 4365 int UNUSED insn_referenced = abuf->written; 4366 INT in_Rd = -1; 4367 INT in_Rs = -1; 4368 INT out_Rd = -1; 4369 in_Rd = FLD (in_Rd); 4370 out_Rd = FLD (out_Rd); 4371 referenced |= 1 << 0; 4372 referenced |= 1 << 2; 4373 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4374 } 4375 return cycles; 4376#undef FLD 4377} 4378 4379static int 4380model_crisv32_lsrr_b_r (SIM_CPU *current_cpu, void *sem_arg) 4381{ 4382#define FLD(f) abuf->fields.sfmt_addc_m.f 4383 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4384 const IDESC * UNUSED idesc = abuf->idesc; 4385 int cycles = 0; 4386 { 4387 int referenced = 0; 4388 int UNUSED insn_referenced = abuf->written; 4389 INT in_Rd = -1; 4390 INT in_Rs = -1; 4391 INT out_Rd = -1; 4392 in_Rd = FLD (in_Rd); 4393 in_Rs = FLD (in_Rs); 4394 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 4395 referenced |= 1 << 1; 4396 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4397 } 4398 return cycles; 4399#undef FLD 4400} 4401 4402static int 4403model_crisv32_lsrr_w_r (SIM_CPU *current_cpu, void *sem_arg) 4404{ 4405#define FLD(f) abuf->fields.sfmt_addc_m.f 4406 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4407 const IDESC * UNUSED idesc = abuf->idesc; 4408 int cycles = 0; 4409 { 4410 int referenced = 0; 4411 int UNUSED insn_referenced = abuf->written; 4412 INT in_Rd = -1; 4413 INT in_Rs = -1; 4414 INT out_Rd = -1; 4415 in_Rd = FLD (in_Rd); 4416 in_Rs = FLD (in_Rs); 4417 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 4418 referenced |= 1 << 1; 4419 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4420 } 4421 return cycles; 4422#undef FLD 4423} 4424 4425static int 4426model_crisv32_lsrr_d_r (SIM_CPU *current_cpu, void *sem_arg) 4427{ 4428#define FLD(f) abuf->fields.sfmt_addc_m.f 4429 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4430 const IDESC * UNUSED idesc = abuf->idesc; 4431 int cycles = 0; 4432 { 4433 int referenced = 0; 4434 int UNUSED insn_referenced = abuf->written; 4435 INT in_Rd = -1; 4436 INT in_Rs = -1; 4437 INT out_Rd = -1; 4438 in_Rd = FLD (in_Rd); 4439 in_Rs = FLD (in_Rs); 4440 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 4441 referenced |= 1 << 1; 4442 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4443 } 4444 return cycles; 4445#undef FLD 4446} 4447 4448static int 4449model_crisv32_lsrq (SIM_CPU *current_cpu, void *sem_arg) 4450{ 4451#define FLD(f) abuf->fields.sfmt_asrq.f 4452 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4453 const IDESC * UNUSED idesc = abuf->idesc; 4454 int cycles = 0; 4455 { 4456 int referenced = 0; 4457 int UNUSED insn_referenced = abuf->written; 4458 INT in_Rd = -1; 4459 INT in_Rs = -1; 4460 INT out_Rd = -1; 4461 in_Rd = FLD (in_Rd); 4462 out_Rd = FLD (out_Rd); 4463 referenced |= 1 << 0; 4464 referenced |= 1 << 2; 4465 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4466 } 4467 return cycles; 4468#undef FLD 4469} 4470 4471static int 4472model_crisv32_lslr_b_r (SIM_CPU *current_cpu, void *sem_arg) 4473{ 4474#define FLD(f) abuf->fields.sfmt_addc_m.f 4475 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4476 const IDESC * UNUSED idesc = abuf->idesc; 4477 int cycles = 0; 4478 { 4479 int referenced = 0; 4480 int UNUSED insn_referenced = abuf->written; 4481 INT in_Rd = -1; 4482 INT in_Rs = -1; 4483 INT out_Rd = -1; 4484 in_Rd = FLD (in_Rd); 4485 in_Rs = FLD (in_Rs); 4486 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 4487 referenced |= 1 << 1; 4488 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4489 } 4490 return cycles; 4491#undef FLD 4492} 4493 4494static int 4495model_crisv32_lslr_w_r (SIM_CPU *current_cpu, void *sem_arg) 4496{ 4497#define FLD(f) abuf->fields.sfmt_addc_m.f 4498 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4499 const IDESC * UNUSED idesc = abuf->idesc; 4500 int cycles = 0; 4501 { 4502 int referenced = 0; 4503 int UNUSED insn_referenced = abuf->written; 4504 INT in_Rd = -1; 4505 INT in_Rs = -1; 4506 INT out_Rd = -1; 4507 in_Rd = FLD (in_Rd); 4508 in_Rs = FLD (in_Rs); 4509 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 4510 referenced |= 1 << 1; 4511 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4512 } 4513 return cycles; 4514#undef FLD 4515} 4516 4517static int 4518model_crisv32_lslr_d_r (SIM_CPU *current_cpu, void *sem_arg) 4519{ 4520#define FLD(f) abuf->fields.sfmt_addc_m.f 4521 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4522 const IDESC * UNUSED idesc = abuf->idesc; 4523 int cycles = 0; 4524 { 4525 int referenced = 0; 4526 int UNUSED insn_referenced = abuf->written; 4527 INT in_Rd = -1; 4528 INT in_Rs = -1; 4529 INT out_Rd = -1; 4530 in_Rd = FLD (in_Rd); 4531 in_Rs = FLD (in_Rs); 4532 if (insn_referenced & (1 << 0)) referenced |= 1 << 0; 4533 referenced |= 1 << 1; 4534 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4535 } 4536 return cycles; 4537#undef FLD 4538} 4539 4540static int 4541model_crisv32_lslq (SIM_CPU *current_cpu, void *sem_arg) 4542{ 4543#define FLD(f) abuf->fields.sfmt_asrq.f 4544 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4545 const IDESC * UNUSED idesc = abuf->idesc; 4546 int cycles = 0; 4547 { 4548 int referenced = 0; 4549 int UNUSED insn_referenced = abuf->written; 4550 INT in_Rd = -1; 4551 INT in_Rs = -1; 4552 INT out_Rd = -1; 4553 in_Rd = FLD (in_Rd); 4554 out_Rd = FLD (out_Rd); 4555 referenced |= 1 << 0; 4556 referenced |= 1 << 2; 4557 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4558 } 4559 return cycles; 4560#undef FLD 4561} 4562 4563static int 4564model_crisv32_btst (SIM_CPU *current_cpu, void *sem_arg) 4565{ 4566#define FLD(f) abuf->fields.sfmt_muls_b.f 4567 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4568 const IDESC * UNUSED idesc = abuf->idesc; 4569 int cycles = 0; 4570 { 4571 int referenced = 0; 4572 int UNUSED insn_referenced = abuf->written; 4573 INT in_Rd = -1; 4574 INT in_Rs = -1; 4575 INT out_Rd = -1; 4576 in_Rd = FLD (in_Rd); 4577 in_Rs = FLD (in_Rs); 4578 referenced |= 1 << 0; 4579 referenced |= 1 << 1; 4580 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4581 } 4582 return cycles; 4583#undef FLD 4584} 4585 4586static int 4587model_crisv32_btstq (SIM_CPU *current_cpu, void *sem_arg) 4588{ 4589#define FLD(f) abuf->fields.sfmt_asrq.f 4590 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4591 const IDESC * UNUSED idesc = abuf->idesc; 4592 int cycles = 0; 4593 { 4594 int referenced = 0; 4595 int UNUSED insn_referenced = abuf->written; 4596 INT in_Rd = -1; 4597 INT in_Rs = -1; 4598 INT out_Rd = -1; 4599 in_Rd = FLD (in_Rd); 4600 referenced |= 1 << 0; 4601 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4602 } 4603 return cycles; 4604#undef FLD 4605} 4606 4607static int 4608model_crisv32_setf (SIM_CPU *current_cpu, void *sem_arg) 4609{ 4610#define FLD(f) abuf->fields.sfmt_setf.f 4611 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4612 const IDESC * UNUSED idesc = abuf->idesc; 4613 int cycles = 0; 4614 { 4615 int referenced = 0; 4616 int UNUSED insn_referenced = abuf->written; 4617 INT in_Rd = -1; 4618 INT in_Rs = -1; 4619 INT out_Rd = -1; 4620 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4621 } 4622 return cycles; 4623#undef FLD 4624} 4625 4626static int 4627model_crisv32_clearf (SIM_CPU *current_cpu, void *sem_arg) 4628{ 4629#define FLD(f) abuf->fields.sfmt_setf.f 4630 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4631 const IDESC * UNUSED idesc = abuf->idesc; 4632 int cycles = 0; 4633 { 4634 int referenced = 0; 4635 int UNUSED insn_referenced = abuf->written; 4636 INT in_Rd = -1; 4637 INT in_Rs = -1; 4638 INT out_Rd = -1; 4639 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4640 } 4641 return cycles; 4642#undef FLD 4643} 4644 4645static int 4646model_crisv32_rfe (SIM_CPU *current_cpu, void *sem_arg) 4647{ 4648#define FLD(f) abuf->fields.sfmt_rfe.f 4649 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4650 const IDESC * UNUSED idesc = abuf->idesc; 4651 int cycles = 0; 4652 { 4653 int referenced = 0; 4654 int UNUSED insn_referenced = abuf->written; 4655 INT in_Rd = -1; 4656 INT in_Rs = -1; 4657 INT out_Rd = -1; 4658 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4659 } 4660 return cycles; 4661#undef FLD 4662} 4663 4664static int 4665model_crisv32_sfe (SIM_CPU *current_cpu, void *sem_arg) 4666{ 4667#define FLD(f) abuf->fields.sfmt_rfe.f 4668 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4669 const IDESC * UNUSED idesc = abuf->idesc; 4670 int cycles = 0; 4671 { 4672 int referenced = 0; 4673 int UNUSED insn_referenced = abuf->written; 4674 INT in_Rd = -1; 4675 INT in_Rs = -1; 4676 INT out_Rd = -1; 4677 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4678 } 4679 return cycles; 4680#undef FLD 4681} 4682 4683static int 4684model_crisv32_rfg (SIM_CPU *current_cpu, void *sem_arg) 4685{ 4686#define FLD(f) abuf->fields.sfmt_empty.f 4687 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4688 const IDESC * UNUSED idesc = abuf->idesc; 4689 int cycles = 0; 4690 { 4691 int referenced = 0; 4692 int UNUSED insn_referenced = abuf->written; 4693 INT in_Rd = -1; 4694 INT in_Rs = -1; 4695 INT out_Rd = -1; 4696 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4697 } 4698 return cycles; 4699#undef FLD 4700} 4701 4702static int 4703model_crisv32_rfn (SIM_CPU *current_cpu, void *sem_arg) 4704{ 4705#define FLD(f) abuf->fields.sfmt_rfe.f 4706 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4707 const IDESC * UNUSED idesc = abuf->idesc; 4708 int cycles = 0; 4709 { 4710 int referenced = 0; 4711 int UNUSED insn_referenced = abuf->written; 4712 INT in_Rd = -1; 4713 INT in_Rs = -1; 4714 INT out_Rd = -1; 4715 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4716 } 4717 return cycles; 4718#undef FLD 4719} 4720 4721static int 4722model_crisv32_halt (SIM_CPU *current_cpu, void *sem_arg) 4723{ 4724#define FLD(f) abuf->fields.sfmt_empty.f 4725 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4726 const IDESC * UNUSED idesc = abuf->idesc; 4727 int cycles = 0; 4728 { 4729 int referenced = 0; 4730 int UNUSED insn_referenced = abuf->written; 4731 INT in_Rd = -1; 4732 INT in_Rs = -1; 4733 INT out_Rd = -1; 4734 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 4735 } 4736 return cycles; 4737#undef FLD 4738} 4739 4740static int 4741model_crisv32_bcc_b (SIM_CPU *current_cpu, void *sem_arg) 4742{ 4743#define FLD(f) abuf->fields.sfmt_bcc_b.f 4744 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4745 const IDESC * UNUSED idesc = abuf->idesc; 4746 int cycles = 0; 4747 { 4748 int referenced = 0; 4749 int UNUSED insn_referenced = abuf->written; 4750 cycles += crisv32f_model_crisv32_u_branch (current_cpu, idesc, 0, referenced); 4751 } 4752 { 4753 int referenced = 0; 4754 int UNUSED insn_referenced = abuf->written; 4755 INT in_Rd = -1; 4756 INT in_Rs = -1; 4757 INT out_Rd = -1; 4758 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 4759 } 4760 return cycles; 4761#undef FLD 4762} 4763 4764static int 4765model_crisv32_ba_b (SIM_CPU *current_cpu, void *sem_arg) 4766{ 4767#define FLD(f) abuf->fields.sfmt_bcc_b.f 4768 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4769 const IDESC * UNUSED idesc = abuf->idesc; 4770 int cycles = 0; 4771 { 4772 int referenced = 0; 4773 int UNUSED insn_referenced = abuf->written; 4774 INT out_Pd = -1; 4775 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 0, referenced, out_Pd); 4776 } 4777 { 4778 int referenced = 0; 4779 int UNUSED insn_referenced = abuf->written; 4780 INT in_Rd = -1; 4781 INT in_Rs = -1; 4782 INT out_Rd = -1; 4783 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 4784 } 4785 return cycles; 4786#undef FLD 4787} 4788 4789static int 4790model_crisv32_bcc_w (SIM_CPU *current_cpu, void *sem_arg) 4791{ 4792#define FLD(f) abuf->fields.sfmt_bcc_w.f 4793 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4794 const IDESC * UNUSED idesc = abuf->idesc; 4795 int cycles = 0; 4796 { 4797 int referenced = 0; 4798 int UNUSED insn_referenced = abuf->written; 4799 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 4800 } 4801 { 4802 int referenced = 0; 4803 int UNUSED insn_referenced = abuf->written; 4804 cycles += crisv32f_model_crisv32_u_branch (current_cpu, idesc, 1, referenced); 4805 } 4806 { 4807 int referenced = 0; 4808 int UNUSED insn_referenced = abuf->written; 4809 INT in_Rd = -1; 4810 INT in_Rs = -1; 4811 INT out_Rd = -1; 4812 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 4813 } 4814 return cycles; 4815#undef FLD 4816} 4817 4818static int 4819model_crisv32_ba_w (SIM_CPU *current_cpu, void *sem_arg) 4820{ 4821#define FLD(f) abuf->fields.sfmt_bcc_w.f 4822 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4823 const IDESC * UNUSED idesc = abuf->idesc; 4824 int cycles = 0; 4825 { 4826 int referenced = 0; 4827 int UNUSED insn_referenced = abuf->written; 4828 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 4829 } 4830 { 4831 int referenced = 0; 4832 int UNUSED insn_referenced = abuf->written; 4833 INT out_Pd = -1; 4834 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd); 4835 } 4836 { 4837 int referenced = 0; 4838 int UNUSED insn_referenced = abuf->written; 4839 INT in_Rd = -1; 4840 INT in_Rs = -1; 4841 INT out_Rd = -1; 4842 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 4843 } 4844 return cycles; 4845#undef FLD 4846} 4847 4848static int 4849model_crisv32_jas_r (SIM_CPU *current_cpu, void *sem_arg) 4850{ 4851#define FLD(f) abuf->fields.sfmt_move_m_sprv32.f 4852 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4853 const IDESC * UNUSED idesc = abuf->idesc; 4854 int cycles = 0; 4855 { 4856 int referenced = 0; 4857 int UNUSED insn_referenced = abuf->written; 4858 INT in_Rs = -1; 4859 in_Rs = FLD (in_Rs); 4860 referenced |= 1 << 0; 4861 cycles += crisv32f_model_crisv32_u_jump_r (current_cpu, idesc, 0, referenced, in_Rs); 4862 } 4863 { 4864 int referenced = 0; 4865 int UNUSED insn_referenced = abuf->written; 4866 INT out_Pd = -1; 4867 out_Pd = FLD (out_Pd); 4868 referenced |= 1 << 0; 4869 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd); 4870 } 4871 { 4872 int referenced = 0; 4873 int UNUSED insn_referenced = abuf->written; 4874 INT in_Rd = -1; 4875 INT in_Rs = -1; 4876 INT out_Rd = -1; 4877 in_Rs = FLD (in_Rs); 4878 referenced |= 1 << 1; 4879 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 4880 } 4881 return cycles; 4882#undef FLD 4883} 4884 4885static int 4886model_crisv32_jas_c (SIM_CPU *current_cpu, void *sem_arg) 4887{ 4888#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f 4889 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4890 const IDESC * UNUSED idesc = abuf->idesc; 4891 int cycles = 0; 4892 { 4893 int referenced = 0; 4894 int UNUSED insn_referenced = abuf->written; 4895 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 4896 } 4897 { 4898 int referenced = 0; 4899 int UNUSED insn_referenced = abuf->written; 4900 INT out_Pd = -1; 4901 out_Pd = FLD (out_Pd); 4902 referenced |= 1 << 0; 4903 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd); 4904 } 4905 { 4906 int referenced = 0; 4907 int UNUSED insn_referenced = abuf->written; 4908 INT in_Rd = -1; 4909 INT in_Rs = -1; 4910 INT out_Rd = -1; 4911 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 4912 } 4913 return cycles; 4914#undef FLD 4915} 4916 4917static int 4918model_crisv32_jump_p (SIM_CPU *current_cpu, void *sem_arg) 4919{ 4920#define FLD(f) abuf->fields.sfmt_mcp.f 4921 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4922 const IDESC * UNUSED idesc = abuf->idesc; 4923 int cycles = 0; 4924 { 4925 int referenced = 0; 4926 int UNUSED insn_referenced = abuf->written; 4927 INT in_Ps = -1; 4928 in_Ps = FLD (in_Ps); 4929 referenced |= 1 << 0; 4930 cycles += crisv32f_model_crisv32_u_jump_sr (current_cpu, idesc, 0, referenced, in_Ps); 4931 } 4932 { 4933 int referenced = 0; 4934 int UNUSED insn_referenced = abuf->written; 4935 INT in_Rd = -1; 4936 INT in_Rs = -1; 4937 INT out_Rd = -1; 4938 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 4939 } 4940 return cycles; 4941#undef FLD 4942} 4943 4944static int 4945model_crisv32_bas_c (SIM_CPU *current_cpu, void *sem_arg) 4946{ 4947#define FLD(f) abuf->fields.sfmt_bas_c.f 4948 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4949 const IDESC * UNUSED idesc = abuf->idesc; 4950 int cycles = 0; 4951 { 4952 int referenced = 0; 4953 int UNUSED insn_referenced = abuf->written; 4954 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 4955 } 4956 { 4957 int referenced = 0; 4958 int UNUSED insn_referenced = abuf->written; 4959 INT out_Pd = -1; 4960 out_Pd = FLD (out_Pd); 4961 referenced |= 1 << 0; 4962 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd); 4963 } 4964 { 4965 int referenced = 0; 4966 int UNUSED insn_referenced = abuf->written; 4967 INT in_Rd = -1; 4968 INT in_Rs = -1; 4969 INT out_Rd = -1; 4970 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 4971 } 4972 return cycles; 4973#undef FLD 4974} 4975 4976static int 4977model_crisv32_jasc_r (SIM_CPU *current_cpu, void *sem_arg) 4978{ 4979#define FLD(f) abuf->fields.sfmt_move_m_sprv32.f 4980 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4981 const IDESC * UNUSED idesc = abuf->idesc; 4982 int cycles = 0; 4983 { 4984 int referenced = 0; 4985 int UNUSED insn_referenced = abuf->written; 4986 INT in_Rs = -1; 4987 in_Rs = FLD (in_Rs); 4988 referenced |= 1 << 0; 4989 cycles += crisv32f_model_crisv32_u_jump_r (current_cpu, idesc, 0, referenced, in_Rs); 4990 } 4991 { 4992 int referenced = 0; 4993 int UNUSED insn_referenced = abuf->written; 4994 cycles += crisv32f_model_crisv32_u_skip4 (current_cpu, idesc, 1, referenced); 4995 } 4996 { 4997 int referenced = 0; 4998 int UNUSED insn_referenced = abuf->written; 4999 INT out_Pd = -1; 5000 out_Pd = FLD (out_Pd); 5001 referenced |= 1 << 0; 5002 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 2, referenced, out_Pd); 5003 } 5004 { 5005 int referenced = 0; 5006 int UNUSED insn_referenced = abuf->written; 5007 INT in_Rd = -1; 5008 INT in_Rs = -1; 5009 INT out_Rd = -1; 5010 in_Rs = FLD (in_Rs); 5011 referenced |= 1 << 1; 5012 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 3, referenced, in_Rd, in_Rs, out_Rd); 5013 } 5014 return cycles; 5015#undef FLD 5016} 5017 5018static int 5019model_crisv32_jasc_c (SIM_CPU *current_cpu, void *sem_arg) 5020{ 5021#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f 5022 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5023 const IDESC * UNUSED idesc = abuf->idesc; 5024 int cycles = 0; 5025 { 5026 int referenced = 0; 5027 int UNUSED insn_referenced = abuf->written; 5028 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 5029 } 5030 { 5031 int referenced = 0; 5032 int UNUSED insn_referenced = abuf->written; 5033 cycles += crisv32f_model_crisv32_u_skip4 (current_cpu, idesc, 1, referenced); 5034 } 5035 { 5036 int referenced = 0; 5037 int UNUSED insn_referenced = abuf->written; 5038 INT out_Pd = -1; 5039 out_Pd = FLD (out_Pd); 5040 referenced |= 1 << 0; 5041 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 2, referenced, out_Pd); 5042 } 5043 { 5044 int referenced = 0; 5045 int UNUSED insn_referenced = abuf->written; 5046 INT in_Rd = -1; 5047 INT in_Rs = -1; 5048 INT out_Rd = -1; 5049 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 3, referenced, in_Rd, in_Rs, out_Rd); 5050 } 5051 return cycles; 5052#undef FLD 5053} 5054 5055static int 5056model_crisv32_basc_c (SIM_CPU *current_cpu, void *sem_arg) 5057{ 5058#define FLD(f) abuf->fields.sfmt_bas_c.f 5059 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5060 const IDESC * UNUSED idesc = abuf->idesc; 5061 int cycles = 0; 5062 { 5063 int referenced = 0; 5064 int UNUSED insn_referenced = abuf->written; 5065 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 5066 } 5067 { 5068 int referenced = 0; 5069 int UNUSED insn_referenced = abuf->written; 5070 cycles += crisv32f_model_crisv32_u_skip4 (current_cpu, idesc, 1, referenced); 5071 } 5072 { 5073 int referenced = 0; 5074 int UNUSED insn_referenced = abuf->written; 5075 INT out_Pd = -1; 5076 out_Pd = FLD (out_Pd); 5077 referenced |= 1 << 0; 5078 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 2, referenced, out_Pd); 5079 } 5080 { 5081 int referenced = 0; 5082 int UNUSED insn_referenced = abuf->written; 5083 INT in_Rd = -1; 5084 INT in_Rs = -1; 5085 INT out_Rd = -1; 5086 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 3, referenced, in_Rd, in_Rs, out_Rd); 5087 } 5088 return cycles; 5089#undef FLD 5090} 5091 5092static int 5093model_crisv32_break (SIM_CPU *current_cpu, void *sem_arg) 5094{ 5095#define FLD(f) abuf->fields.sfmt_break.f 5096 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5097 const IDESC * UNUSED idesc = abuf->idesc; 5098 int cycles = 0; 5099 { 5100 int referenced = 0; 5101 int UNUSED insn_referenced = abuf->written; 5102 INT in_Rd = -1; 5103 INT in_Rs = -1; 5104 INT out_Rd = -1; 5105 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 5106 } 5107 return cycles; 5108#undef FLD 5109} 5110 5111static int 5112model_crisv32_bound_r_b_r (SIM_CPU *current_cpu, void *sem_arg) 5113{ 5114#define FLD(f) abuf->fields.sfmt_muls_b.f 5115 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5116 const IDESC * UNUSED idesc = abuf->idesc; 5117 int cycles = 0; 5118 { 5119 int referenced = 0; 5120 int UNUSED insn_referenced = abuf->written; 5121 INT in_Rd = -1; 5122 INT in_Rs = -1; 5123 INT out_Rd = -1; 5124 in_Rd = FLD (in_Rd); 5125 in_Rs = FLD (in_Rs); 5126 out_Rd = FLD (out_Rd); 5127 referenced |= 1 << 0; 5128 referenced |= 1 << 1; 5129 referenced |= 1 << 2; 5130 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 5131 } 5132 return cycles; 5133#undef FLD 5134} 5135 5136static int 5137model_crisv32_bound_r_w_r (SIM_CPU *current_cpu, void *sem_arg) 5138{ 5139#define FLD(f) abuf->fields.sfmt_muls_b.f 5140 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5141 const IDESC * UNUSED idesc = abuf->idesc; 5142 int cycles = 0; 5143 { 5144 int referenced = 0; 5145 int UNUSED insn_referenced = abuf->written; 5146 INT in_Rd = -1; 5147 INT in_Rs = -1; 5148 INT out_Rd = -1; 5149 in_Rd = FLD (in_Rd); 5150 in_Rs = FLD (in_Rs); 5151 out_Rd = FLD (out_Rd); 5152 referenced |= 1 << 0; 5153 referenced |= 1 << 1; 5154 referenced |= 1 << 2; 5155 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 5156 } 5157 return cycles; 5158#undef FLD 5159} 5160 5161static int 5162model_crisv32_bound_r_d_r (SIM_CPU *current_cpu, void *sem_arg) 5163{ 5164#define FLD(f) abuf->fields.sfmt_muls_b.f 5165 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5166 const IDESC * UNUSED idesc = abuf->idesc; 5167 int cycles = 0; 5168 { 5169 int referenced = 0; 5170 int UNUSED insn_referenced = abuf->written; 5171 INT in_Rd = -1; 5172 INT in_Rs = -1; 5173 INT out_Rd = -1; 5174 in_Rd = FLD (in_Rd); 5175 in_Rs = FLD (in_Rs); 5176 out_Rd = FLD (out_Rd); 5177 referenced |= 1 << 0; 5178 referenced |= 1 << 1; 5179 referenced |= 1 << 2; 5180 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 5181 } 5182 return cycles; 5183#undef FLD 5184} 5185 5186static int 5187model_crisv32_bound_cb (SIM_CPU *current_cpu, void *sem_arg) 5188{ 5189#define FLD(f) abuf->fields.sfmt_bound_cb.f 5190 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5191 const IDESC * UNUSED idesc = abuf->idesc; 5192 int cycles = 0; 5193 { 5194 int referenced = 0; 5195 int UNUSED insn_referenced = abuf->written; 5196 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 5197 } 5198 { 5199 int referenced = 0; 5200 int UNUSED insn_referenced = abuf->written; 5201 INT in_Rd = -1; 5202 INT in_Rs = -1; 5203 INT out_Rd = -1; 5204 in_Rd = FLD (in_Rd); 5205 out_Rd = FLD (out_Rd); 5206 referenced |= 1 << 0; 5207 referenced |= 1 << 2; 5208 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 5209 } 5210 return cycles; 5211#undef FLD 5212} 5213 5214static int 5215model_crisv32_bound_cw (SIM_CPU *current_cpu, void *sem_arg) 5216{ 5217#define FLD(f) abuf->fields.sfmt_bound_cw.f 5218 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5219 const IDESC * UNUSED idesc = abuf->idesc; 5220 int cycles = 0; 5221 { 5222 int referenced = 0; 5223 int UNUSED insn_referenced = abuf->written; 5224 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 5225 } 5226 { 5227 int referenced = 0; 5228 int UNUSED insn_referenced = abuf->written; 5229 INT in_Rd = -1; 5230 INT in_Rs = -1; 5231 INT out_Rd = -1; 5232 in_Rd = FLD (in_Rd); 5233 out_Rd = FLD (out_Rd); 5234 referenced |= 1 << 0; 5235 referenced |= 1 << 2; 5236 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 5237 } 5238 return cycles; 5239#undef FLD 5240} 5241 5242static int 5243model_crisv32_bound_cd (SIM_CPU *current_cpu, void *sem_arg) 5244{ 5245#define FLD(f) abuf->fields.sfmt_bound_cd.f 5246 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5247 const IDESC * UNUSED idesc = abuf->idesc; 5248 int cycles = 0; 5249 { 5250 int referenced = 0; 5251 int UNUSED insn_referenced = abuf->written; 5252 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 5253 } 5254 { 5255 int referenced = 0; 5256 int UNUSED insn_referenced = abuf->written; 5257 INT in_Rd = -1; 5258 INT in_Rs = -1; 5259 INT out_Rd = -1; 5260 in_Rd = FLD (in_Rd); 5261 out_Rd = FLD (out_Rd); 5262 referenced |= 1 << 0; 5263 referenced |= 1 << 2; 5264 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 5265 } 5266 return cycles; 5267#undef FLD 5268} 5269 5270static int 5271model_crisv32_scc (SIM_CPU *current_cpu, void *sem_arg) 5272{ 5273#define FLD(f) abuf->fields.sfmt_move_spr_mv32.f 5274 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5275 const IDESC * UNUSED idesc = abuf->idesc; 5276 int cycles = 0; 5277 { 5278 int referenced = 0; 5279 int UNUSED insn_referenced = abuf->written; 5280 INT in_Rd = -1; 5281 INT in_Rs = -1; 5282 INT out_Rd = -1; 5283 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 5284 } 5285 return cycles; 5286#undef FLD 5287} 5288 5289static int 5290model_crisv32_lz (SIM_CPU *current_cpu, void *sem_arg) 5291{ 5292#define FLD(f) abuf->fields.sfmt_muls_b.f 5293 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5294 const IDESC * UNUSED idesc = abuf->idesc; 5295 int cycles = 0; 5296 { 5297 int referenced = 0; 5298 int UNUSED insn_referenced = abuf->written; 5299 INT in_Rd = -1; 5300 INT in_Rs = -1; 5301 INT out_Rd = -1; 5302 in_Rs = FLD (in_Rs); 5303 out_Rd = FLD (out_Rd); 5304 referenced |= 1 << 1; 5305 referenced |= 1 << 2; 5306 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 5307 } 5308 return cycles; 5309#undef FLD 5310} 5311 5312static int 5313model_crisv32_addoq (SIM_CPU *current_cpu, void *sem_arg) 5314{ 5315#define FLD(f) abuf->fields.sfmt_addoq.f 5316 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5317 const IDESC * UNUSED idesc = abuf->idesc; 5318 int cycles = 0; 5319 { 5320 int referenced = 0; 5321 int UNUSED insn_referenced = abuf->written; 5322 INT in_Rd = -1; 5323 INT in_Rs = -1; 5324 INT out_Rd = -1; 5325 in_Rd = FLD (in_Rd); 5326 referenced |= 1 << 0; 5327 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 5328 } 5329 return cycles; 5330#undef FLD 5331} 5332 5333static int 5334model_crisv32_addo_m_b_m (SIM_CPU *current_cpu, void *sem_arg) 5335{ 5336#define FLD(f) abuf->fields.sfmt_addc_m.f 5337 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5338 const IDESC * UNUSED idesc = abuf->idesc; 5339 int cycles = 0; 5340 { 5341 int referenced = 0; 5342 int UNUSED insn_referenced = abuf->written; 5343 INT in_Rs = -1; 5344 in_Rs = FLD (in_Rs); 5345 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 5346 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 5347 } 5348 { 5349 int referenced = 0; 5350 int UNUSED insn_referenced = abuf->written; 5351 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 5352 } 5353 { 5354 int referenced = 0; 5355 int UNUSED insn_referenced = abuf->written; 5356 INT in_Rd = -1; 5357 INT in_Rs = -1; 5358 INT out_Rd = -1; 5359 in_Rd = FLD (in_Rd); 5360 in_Rs = FLD (in_Rs); 5361 referenced |= 1 << 0; 5362 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 5363 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 5364 } 5365 return cycles; 5366#undef FLD 5367} 5368 5369static int 5370model_crisv32_addo_m_w_m (SIM_CPU *current_cpu, void *sem_arg) 5371{ 5372#define FLD(f) abuf->fields.sfmt_addc_m.f 5373 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5374 const IDESC * UNUSED idesc = abuf->idesc; 5375 int cycles = 0; 5376 { 5377 int referenced = 0; 5378 int UNUSED insn_referenced = abuf->written; 5379 INT in_Rs = -1; 5380 in_Rs = FLD (in_Rs); 5381 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 5382 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 5383 } 5384 { 5385 int referenced = 0; 5386 int UNUSED insn_referenced = abuf->written; 5387 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 5388 } 5389 { 5390 int referenced = 0; 5391 int UNUSED insn_referenced = abuf->written; 5392 INT in_Rd = -1; 5393 INT in_Rs = -1; 5394 INT out_Rd = -1; 5395 in_Rd = FLD (in_Rd); 5396 in_Rs = FLD (in_Rs); 5397 referenced |= 1 << 0; 5398 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 5399 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 5400 } 5401 return cycles; 5402#undef FLD 5403} 5404 5405static int 5406model_crisv32_addo_m_d_m (SIM_CPU *current_cpu, void *sem_arg) 5407{ 5408#define FLD(f) abuf->fields.sfmt_addc_m.f 5409 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5410 const IDESC * UNUSED idesc = abuf->idesc; 5411 int cycles = 0; 5412 { 5413 int referenced = 0; 5414 int UNUSED insn_referenced = abuf->written; 5415 INT in_Rs = -1; 5416 in_Rs = FLD (in_Rs); 5417 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 5418 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs); 5419 } 5420 { 5421 int referenced = 0; 5422 int UNUSED insn_referenced = abuf->written; 5423 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced); 5424 } 5425 { 5426 int referenced = 0; 5427 int UNUSED insn_referenced = abuf->written; 5428 INT in_Rd = -1; 5429 INT in_Rs = -1; 5430 INT out_Rd = -1; 5431 in_Rd = FLD (in_Rd); 5432 in_Rs = FLD (in_Rs); 5433 referenced |= 1 << 0; 5434 if (insn_referenced & (1 << 1)) referenced |= 1 << 1; 5435 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd); 5436 } 5437 return cycles; 5438#undef FLD 5439} 5440 5441static int 5442model_crisv32_addo_cb (SIM_CPU *current_cpu, void *sem_arg) 5443{ 5444#define FLD(f) abuf->fields.sfmt_bound_cb.f 5445 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5446 const IDESC * UNUSED idesc = abuf->idesc; 5447 int cycles = 0; 5448 { 5449 int referenced = 0; 5450 int UNUSED insn_referenced = abuf->written; 5451 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 5452 } 5453 { 5454 int referenced = 0; 5455 int UNUSED insn_referenced = abuf->written; 5456 INT in_Rd = -1; 5457 INT in_Rs = -1; 5458 INT out_Rd = -1; 5459 in_Rd = FLD (in_Rd); 5460 referenced |= 1 << 0; 5461 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 5462 } 5463 return cycles; 5464#undef FLD 5465} 5466 5467static int 5468model_crisv32_addo_cw (SIM_CPU *current_cpu, void *sem_arg) 5469{ 5470#define FLD(f) abuf->fields.sfmt_bound_cw.f 5471 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5472 const IDESC * UNUSED idesc = abuf->idesc; 5473 int cycles = 0; 5474 { 5475 int referenced = 0; 5476 int UNUSED insn_referenced = abuf->written; 5477 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced); 5478 } 5479 { 5480 int referenced = 0; 5481 int UNUSED insn_referenced = abuf->written; 5482 INT in_Rd = -1; 5483 INT in_Rs = -1; 5484 INT out_Rd = -1; 5485 in_Rd = FLD (in_Rd); 5486 referenced |= 1 << 0; 5487 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 5488 } 5489 return cycles; 5490#undef FLD 5491} 5492 5493static int 5494model_crisv32_addo_cd (SIM_CPU *current_cpu, void *sem_arg) 5495{ 5496#define FLD(f) abuf->fields.sfmt_bound_cd.f 5497 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5498 const IDESC * UNUSED idesc = abuf->idesc; 5499 int cycles = 0; 5500 { 5501 int referenced = 0; 5502 int UNUSED insn_referenced = abuf->written; 5503 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced); 5504 } 5505 { 5506 int referenced = 0; 5507 int UNUSED insn_referenced = abuf->written; 5508 INT in_Rd = -1; 5509 INT in_Rs = -1; 5510 INT out_Rd = -1; 5511 in_Rd = FLD (in_Rd); 5512 referenced |= 1 << 0; 5513 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd); 5514 } 5515 return cycles; 5516#undef FLD 5517} 5518 5519static int 5520model_crisv32_addi_acr_b_r (SIM_CPU *current_cpu, void *sem_arg) 5521{ 5522#define FLD(f) abuf->fields.sfmt_muls_b.f 5523 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5524 const IDESC * UNUSED idesc = abuf->idesc; 5525 int cycles = 0; 5526 { 5527 int referenced = 0; 5528 int UNUSED insn_referenced = abuf->written; 5529 INT in_Rd = -1; 5530 INT in_Rs = -1; 5531 INT out_Rd = -1; 5532 in_Rd = FLD (in_Rd); 5533 in_Rs = FLD (in_Rs); 5534 referenced |= 1 << 0; 5535 referenced |= 1 << 1; 5536 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 5537 } 5538 return cycles; 5539#undef FLD 5540} 5541 5542static int 5543model_crisv32_addi_acr_w_r (SIM_CPU *current_cpu, void *sem_arg) 5544{ 5545#define FLD(f) abuf->fields.sfmt_muls_b.f 5546 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5547 const IDESC * UNUSED idesc = abuf->idesc; 5548 int cycles = 0; 5549 { 5550 int referenced = 0; 5551 int UNUSED insn_referenced = abuf->written; 5552 INT in_Rd = -1; 5553 INT in_Rs = -1; 5554 INT out_Rd = -1; 5555 in_Rd = FLD (in_Rd); 5556 in_Rs = FLD (in_Rs); 5557 referenced |= 1 << 0; 5558 referenced |= 1 << 1; 5559 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 5560 } 5561 return cycles; 5562#undef FLD 5563} 5564 5565static int 5566model_crisv32_addi_acr_d_r (SIM_CPU *current_cpu, void *sem_arg) 5567{ 5568#define FLD(f) abuf->fields.sfmt_muls_b.f 5569 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5570 const IDESC * UNUSED idesc = abuf->idesc; 5571 int cycles = 0; 5572 { 5573 int referenced = 0; 5574 int UNUSED insn_referenced = abuf->written; 5575 INT in_Rd = -1; 5576 INT in_Rs = -1; 5577 INT out_Rd = -1; 5578 in_Rd = FLD (in_Rd); 5579 in_Rs = FLD (in_Rs); 5580 referenced |= 1 << 0; 5581 referenced |= 1 << 1; 5582 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 5583 } 5584 return cycles; 5585#undef FLD 5586} 5587 5588static int 5589model_crisv32_fidxi (SIM_CPU *current_cpu, void *sem_arg) 5590{ 5591#define FLD(f) abuf->fields.sfmt_mcp.f 5592 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5593 const IDESC * UNUSED idesc = abuf->idesc; 5594 int cycles = 0; 5595 { 5596 int referenced = 0; 5597 int UNUSED insn_referenced = abuf->written; 5598 INT in_Rd = -1; 5599 INT in_Rs = -1; 5600 INT out_Rd = -1; 5601 in_Rs = FLD (in_Rs); 5602 referenced |= 1 << 1; 5603 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 5604 } 5605 return cycles; 5606#undef FLD 5607} 5608 5609static int 5610model_crisv32_ftagi (SIM_CPU *current_cpu, void *sem_arg) 5611{ 5612#define FLD(f) abuf->fields.sfmt_mcp.f 5613 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5614 const IDESC * UNUSED idesc = abuf->idesc; 5615 int cycles = 0; 5616 { 5617 int referenced = 0; 5618 int UNUSED insn_referenced = abuf->written; 5619 INT in_Rd = -1; 5620 INT in_Rs = -1; 5621 INT out_Rd = -1; 5622 in_Rs = FLD (in_Rs); 5623 referenced |= 1 << 1; 5624 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 5625 } 5626 return cycles; 5627#undef FLD 5628} 5629 5630static int 5631model_crisv32_fidxd (SIM_CPU *current_cpu, void *sem_arg) 5632{ 5633#define FLD(f) abuf->fields.sfmt_mcp.f 5634 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5635 const IDESC * UNUSED idesc = abuf->idesc; 5636 int cycles = 0; 5637 { 5638 int referenced = 0; 5639 int UNUSED insn_referenced = abuf->written; 5640 INT in_Rd = -1; 5641 INT in_Rs = -1; 5642 INT out_Rd = -1; 5643 in_Rs = FLD (in_Rs); 5644 referenced |= 1 << 1; 5645 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 5646 } 5647 return cycles; 5648#undef FLD 5649} 5650 5651static int 5652model_crisv32_ftagd (SIM_CPU *current_cpu, void *sem_arg) 5653{ 5654#define FLD(f) abuf->fields.sfmt_mcp.f 5655 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5656 const IDESC * UNUSED idesc = abuf->idesc; 5657 int cycles = 0; 5658 { 5659 int referenced = 0; 5660 int UNUSED insn_referenced = abuf->written; 5661 INT in_Rd = -1; 5662 INT in_Rs = -1; 5663 INT out_Rd = -1; 5664 in_Rs = FLD (in_Rs); 5665 referenced |= 1 << 1; 5666 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd); 5667 } 5668 return cycles; 5669#undef FLD 5670} 5671 5672/* We assume UNIT_NONE == 0 because the tables don't always terminate 5673 entries with it. */ 5674 5675/* Model timing data for `crisv32'. */ 5676 5677static const INSN_TIMING crisv32_timing[] = { 5678 { CRISV32F_INSN_X_INVALID, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5679 { CRISV32F_INSN_X_AFTER, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5680 { CRISV32F_INSN_X_BEFORE, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5681 { CRISV32F_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5682 { CRISV32F_INSN_X_CHAIN, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5683 { CRISV32F_INSN_X_BEGIN, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5684 { CRISV32F_INSN_MOVE_B_R, model_crisv32_move_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5685 { CRISV32F_INSN_MOVE_W_R, model_crisv32_move_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5686 { CRISV32F_INSN_MOVE_D_R, model_crisv32_move_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5687 { CRISV32F_INSN_MOVEQ, model_crisv32_moveq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5688 { CRISV32F_INSN_MOVS_B_R, model_crisv32_movs_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5689 { CRISV32F_INSN_MOVS_W_R, model_crisv32_movs_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5690 { CRISV32F_INSN_MOVU_B_R, model_crisv32_movu_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5691 { CRISV32F_INSN_MOVU_W_R, model_crisv32_movu_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5692 { CRISV32F_INSN_MOVECBR, model_crisv32_movecbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5693 { CRISV32F_INSN_MOVECWR, model_crisv32_movecwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5694 { CRISV32F_INSN_MOVECDR, model_crisv32_movecdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5695 { CRISV32F_INSN_MOVSCBR, model_crisv32_movscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5696 { CRISV32F_INSN_MOVSCWR, model_crisv32_movscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5697 { CRISV32F_INSN_MOVUCBR, model_crisv32_movucbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5698 { CRISV32F_INSN_MOVUCWR, model_crisv32_movucwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5699 { CRISV32F_INSN_ADDQ, model_crisv32_addq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5700 { CRISV32F_INSN_SUBQ, model_crisv32_subq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5701 { CRISV32F_INSN_CMP_R_B_R, model_crisv32_cmp_r_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5702 { CRISV32F_INSN_CMP_R_W_R, model_crisv32_cmp_r_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5703 { CRISV32F_INSN_CMP_R_D_R, model_crisv32_cmp_r_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5704 { CRISV32F_INSN_CMP_M_B_M, model_crisv32_cmp_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5705 { CRISV32F_INSN_CMP_M_W_M, model_crisv32_cmp_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5706 { CRISV32F_INSN_CMP_M_D_M, model_crisv32_cmp_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5707 { CRISV32F_INSN_CMPCBR, model_crisv32_cmpcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5708 { CRISV32F_INSN_CMPCWR, model_crisv32_cmpcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5709 { CRISV32F_INSN_CMPCDR, model_crisv32_cmpcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5710 { CRISV32F_INSN_CMPQ, model_crisv32_cmpq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5711 { CRISV32F_INSN_CMPS_M_B_M, model_crisv32_cmps_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5712 { CRISV32F_INSN_CMPS_M_W_M, model_crisv32_cmps_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5713 { CRISV32F_INSN_CMPSCBR, model_crisv32_cmpscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5714 { CRISV32F_INSN_CMPSCWR, model_crisv32_cmpscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5715 { CRISV32F_INSN_CMPU_M_B_M, model_crisv32_cmpu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5716 { CRISV32F_INSN_CMPU_M_W_M, model_crisv32_cmpu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5717 { CRISV32F_INSN_CMPUCBR, model_crisv32_cmpucbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5718 { CRISV32F_INSN_CMPUCWR, model_crisv32_cmpucwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5719 { CRISV32F_INSN_MOVE_M_B_M, model_crisv32_move_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5720 { CRISV32F_INSN_MOVE_M_W_M, model_crisv32_move_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5721 { CRISV32F_INSN_MOVE_M_D_M, model_crisv32_move_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5722 { CRISV32F_INSN_MOVS_M_B_M, model_crisv32_movs_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5723 { CRISV32F_INSN_MOVS_M_W_M, model_crisv32_movs_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5724 { CRISV32F_INSN_MOVU_M_B_M, model_crisv32_movu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5725 { CRISV32F_INSN_MOVU_M_W_M, model_crisv32_movu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5726 { CRISV32F_INSN_MOVE_R_SPRV32, model_crisv32_move_r_sprv32, { { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } }, 5727 { CRISV32F_INSN_MOVE_SPR_RV32, model_crisv32_move_spr_rv32, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5728 { CRISV32F_INSN_MOVE_M_SPRV32, model_crisv32_move_m_sprv32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } }, 5729 { CRISV32F_INSN_MOVE_C_SPRV32_P2, model_crisv32_move_c_sprv32_p2, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } }, 5730 { CRISV32F_INSN_MOVE_C_SPRV32_P3, model_crisv32_move_c_sprv32_p3, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } }, 5731 { CRISV32F_INSN_MOVE_C_SPRV32_P5, model_crisv32_move_c_sprv32_p5, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } }, 5732 { CRISV32F_INSN_MOVE_C_SPRV32_P6, model_crisv32_move_c_sprv32_p6, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } }, 5733 { CRISV32F_INSN_MOVE_C_SPRV32_P7, model_crisv32_move_c_sprv32_p7, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } }, 5734 { CRISV32F_INSN_MOVE_C_SPRV32_P9, model_crisv32_move_c_sprv32_p9, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } }, 5735 { CRISV32F_INSN_MOVE_C_SPRV32_P10, model_crisv32_move_c_sprv32_p10, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } }, 5736 { CRISV32F_INSN_MOVE_C_SPRV32_P11, model_crisv32_move_c_sprv32_p11, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } }, 5737 { CRISV32F_INSN_MOVE_C_SPRV32_P12, model_crisv32_move_c_sprv32_p12, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } }, 5738 { CRISV32F_INSN_MOVE_C_SPRV32_P13, model_crisv32_move_c_sprv32_p13, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } }, 5739 { CRISV32F_INSN_MOVE_C_SPRV32_P14, model_crisv32_move_c_sprv32_p14, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } }, 5740 { CRISV32F_INSN_MOVE_C_SPRV32_P15, model_crisv32_move_c_sprv32_p15, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } }, 5741 { CRISV32F_INSN_MOVE_SPR_MV32, model_crisv32_move_spr_mv32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } }, 5742 { CRISV32F_INSN_MOVE_SS_R, model_crisv32_move_ss_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5743 { CRISV32F_INSN_MOVE_R_SS, model_crisv32_move_r_ss, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5744 { CRISV32F_INSN_MOVEM_R_M_V32, model_crisv32_movem_r_m_v32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MOVEM_RTOM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_MOVEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } }, 5745 { CRISV32F_INSN_MOVEM_M_R_V32, model_crisv32_movem_m_r_v32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_MOVEM_MTOR, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_MOVEM, 1, 1 } } }, 5746 { CRISV32F_INSN_ADD_B_R, model_crisv32_add_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5747 { CRISV32F_INSN_ADD_W_R, model_crisv32_add_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5748 { CRISV32F_INSN_ADD_D_R, model_crisv32_add_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5749 { CRISV32F_INSN_ADD_M_B_M, model_crisv32_add_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5750 { CRISV32F_INSN_ADD_M_W_M, model_crisv32_add_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5751 { CRISV32F_INSN_ADD_M_D_M, model_crisv32_add_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5752 { CRISV32F_INSN_ADDCBR, model_crisv32_addcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5753 { CRISV32F_INSN_ADDCWR, model_crisv32_addcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5754 { CRISV32F_INSN_ADDCDR, model_crisv32_addcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5755 { CRISV32F_INSN_ADDS_B_R, model_crisv32_adds_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5756 { CRISV32F_INSN_ADDS_W_R, model_crisv32_adds_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5757 { CRISV32F_INSN_ADDS_M_B_M, model_crisv32_adds_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5758 { CRISV32F_INSN_ADDS_M_W_M, model_crisv32_adds_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5759 { CRISV32F_INSN_ADDSCBR, model_crisv32_addscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5760 { CRISV32F_INSN_ADDSCWR, model_crisv32_addscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5761 { CRISV32F_INSN_ADDU_B_R, model_crisv32_addu_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5762 { CRISV32F_INSN_ADDU_W_R, model_crisv32_addu_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5763 { CRISV32F_INSN_ADDU_M_B_M, model_crisv32_addu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5764 { CRISV32F_INSN_ADDU_M_W_M, model_crisv32_addu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5765 { CRISV32F_INSN_ADDUCBR, model_crisv32_adducbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5766 { CRISV32F_INSN_ADDUCWR, model_crisv32_adducwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5767 { CRISV32F_INSN_SUB_B_R, model_crisv32_sub_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5768 { CRISV32F_INSN_SUB_W_R, model_crisv32_sub_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5769 { CRISV32F_INSN_SUB_D_R, model_crisv32_sub_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5770 { CRISV32F_INSN_SUB_M_B_M, model_crisv32_sub_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5771 { CRISV32F_INSN_SUB_M_W_M, model_crisv32_sub_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5772 { CRISV32F_INSN_SUB_M_D_M, model_crisv32_sub_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5773 { CRISV32F_INSN_SUBCBR, model_crisv32_subcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5774 { CRISV32F_INSN_SUBCWR, model_crisv32_subcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5775 { CRISV32F_INSN_SUBCDR, model_crisv32_subcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5776 { CRISV32F_INSN_SUBS_B_R, model_crisv32_subs_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5777 { CRISV32F_INSN_SUBS_W_R, model_crisv32_subs_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5778 { CRISV32F_INSN_SUBS_M_B_M, model_crisv32_subs_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5779 { CRISV32F_INSN_SUBS_M_W_M, model_crisv32_subs_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5780 { CRISV32F_INSN_SUBSCBR, model_crisv32_subscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5781 { CRISV32F_INSN_SUBSCWR, model_crisv32_subscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5782 { CRISV32F_INSN_SUBU_B_R, model_crisv32_subu_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5783 { CRISV32F_INSN_SUBU_W_R, model_crisv32_subu_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5784 { CRISV32F_INSN_SUBU_M_B_M, model_crisv32_subu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5785 { CRISV32F_INSN_SUBU_M_W_M, model_crisv32_subu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5786 { CRISV32F_INSN_SUBUCBR, model_crisv32_subucbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5787 { CRISV32F_INSN_SUBUCWR, model_crisv32_subucwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5788 { CRISV32F_INSN_ADDC_R, model_crisv32_addc_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5789 { CRISV32F_INSN_ADDC_M, model_crisv32_addc_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5790 { CRISV32F_INSN_ADDC_C, model_crisv32_addc_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5791 { CRISV32F_INSN_LAPC_D, model_crisv32_lapc_d, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5792 { CRISV32F_INSN_LAPCQ, model_crisv32_lapcq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5793 { CRISV32F_INSN_ADDI_B_R, model_crisv32_addi_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5794 { CRISV32F_INSN_ADDI_W_R, model_crisv32_addi_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5795 { CRISV32F_INSN_ADDI_D_R, model_crisv32_addi_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5796 { CRISV32F_INSN_NEG_B_R, model_crisv32_neg_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5797 { CRISV32F_INSN_NEG_W_R, model_crisv32_neg_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5798 { CRISV32F_INSN_NEG_D_R, model_crisv32_neg_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5799 { CRISV32F_INSN_TEST_M_B_M, model_crisv32_test_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5800 { CRISV32F_INSN_TEST_M_W_M, model_crisv32_test_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5801 { CRISV32F_INSN_TEST_M_D_M, model_crisv32_test_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5802 { CRISV32F_INSN_MOVE_R_M_B_M, model_crisv32_move_r_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } }, 5803 { CRISV32F_INSN_MOVE_R_M_W_M, model_crisv32_move_r_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } }, 5804 { CRISV32F_INSN_MOVE_R_M_D_M, model_crisv32_move_r_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } }, 5805 { CRISV32F_INSN_MULS_B, model_crisv32_muls_b, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5806 { CRISV32F_INSN_MULS_W, model_crisv32_muls_w, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5807 { CRISV32F_INSN_MULS_D, model_crisv32_muls_d, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5808 { CRISV32F_INSN_MULU_B, model_crisv32_mulu_b, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5809 { CRISV32F_INSN_MULU_W, model_crisv32_mulu_w, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5810 { CRISV32F_INSN_MULU_D, model_crisv32_mulu_d, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5811 { CRISV32F_INSN_MCP, model_crisv32_mcp, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5812 { CRISV32F_INSN_DSTEP, model_crisv32_dstep, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5813 { CRISV32F_INSN_ABS, model_crisv32_abs, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5814 { CRISV32F_INSN_AND_B_R, model_crisv32_and_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5815 { CRISV32F_INSN_AND_W_R, model_crisv32_and_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5816 { CRISV32F_INSN_AND_D_R, model_crisv32_and_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5817 { CRISV32F_INSN_AND_M_B_M, model_crisv32_and_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5818 { CRISV32F_INSN_AND_M_W_M, model_crisv32_and_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5819 { CRISV32F_INSN_AND_M_D_M, model_crisv32_and_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5820 { CRISV32F_INSN_ANDCBR, model_crisv32_andcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5821 { CRISV32F_INSN_ANDCWR, model_crisv32_andcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5822 { CRISV32F_INSN_ANDCDR, model_crisv32_andcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5823 { CRISV32F_INSN_ANDQ, model_crisv32_andq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5824 { CRISV32F_INSN_ORR_B_R, model_crisv32_orr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5825 { CRISV32F_INSN_ORR_W_R, model_crisv32_orr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5826 { CRISV32F_INSN_ORR_D_R, model_crisv32_orr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5827 { CRISV32F_INSN_OR_M_B_M, model_crisv32_or_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5828 { CRISV32F_INSN_OR_M_W_M, model_crisv32_or_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5829 { CRISV32F_INSN_OR_M_D_M, model_crisv32_or_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5830 { CRISV32F_INSN_ORCBR, model_crisv32_orcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5831 { CRISV32F_INSN_ORCWR, model_crisv32_orcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5832 { CRISV32F_INSN_ORCDR, model_crisv32_orcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5833 { CRISV32F_INSN_ORQ, model_crisv32_orq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5834 { CRISV32F_INSN_XOR, model_crisv32_xor, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5835 { CRISV32F_INSN_SWAP, model_crisv32_swap, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5836 { CRISV32F_INSN_ASRR_B_R, model_crisv32_asrr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5837 { CRISV32F_INSN_ASRR_W_R, model_crisv32_asrr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5838 { CRISV32F_INSN_ASRR_D_R, model_crisv32_asrr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5839 { CRISV32F_INSN_ASRQ, model_crisv32_asrq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5840 { CRISV32F_INSN_LSRR_B_R, model_crisv32_lsrr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5841 { CRISV32F_INSN_LSRR_W_R, model_crisv32_lsrr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5842 { CRISV32F_INSN_LSRR_D_R, model_crisv32_lsrr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5843 { CRISV32F_INSN_LSRQ, model_crisv32_lsrq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5844 { CRISV32F_INSN_LSLR_B_R, model_crisv32_lslr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5845 { CRISV32F_INSN_LSLR_W_R, model_crisv32_lslr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5846 { CRISV32F_INSN_LSLR_D_R, model_crisv32_lslr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5847 { CRISV32F_INSN_LSLQ, model_crisv32_lslq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5848 { CRISV32F_INSN_BTST, model_crisv32_btst, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5849 { CRISV32F_INSN_BTSTQ, model_crisv32_btstq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5850 { CRISV32F_INSN_SETF, model_crisv32_setf, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5851 { CRISV32F_INSN_CLEARF, model_crisv32_clearf, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5852 { CRISV32F_INSN_RFE, model_crisv32_rfe, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5853 { CRISV32F_INSN_SFE, model_crisv32_sfe, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5854 { CRISV32F_INSN_RFG, model_crisv32_rfg, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5855 { CRISV32F_INSN_RFN, model_crisv32_rfn, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5856 { CRISV32F_INSN_HALT, model_crisv32_halt, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5857 { CRISV32F_INSN_BCC_B, model_crisv32_bcc_b, { { (int) UNIT_CRISV32_U_BRANCH, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5858 { CRISV32F_INSN_BA_B, model_crisv32_ba_b, { { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5859 { CRISV32F_INSN_BCC_W, model_crisv32_bcc_w, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_BRANCH, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5860 { CRISV32F_INSN_BA_W, model_crisv32_ba_w, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5861 { CRISV32F_INSN_JAS_R, model_crisv32_jas_r, { { (int) UNIT_CRISV32_U_JUMP_R, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5862 { CRISV32F_INSN_JAS_C, model_crisv32_jas_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5863 { CRISV32F_INSN_JUMP_P, model_crisv32_jump_p, { { (int) UNIT_CRISV32_U_JUMP_SR, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5864 { CRISV32F_INSN_BAS_C, model_crisv32_bas_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5865 { CRISV32F_INSN_JASC_R, model_crisv32_jasc_r, { { (int) UNIT_CRISV32_U_JUMP_R, 1, 1 }, { (int) UNIT_CRISV32_U_SKIP4, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5866 { CRISV32F_INSN_JASC_C, model_crisv32_jasc_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_SKIP4, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5867 { CRISV32F_INSN_BASC_C, model_crisv32_basc_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_SKIP4, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5868 { CRISV32F_INSN_BREAK, model_crisv32_break, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5869 { CRISV32F_INSN_BOUND_R_B_R, model_crisv32_bound_r_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5870 { CRISV32F_INSN_BOUND_R_W_R, model_crisv32_bound_r_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5871 { CRISV32F_INSN_BOUND_R_D_R, model_crisv32_bound_r_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5872 { CRISV32F_INSN_BOUND_CB, model_crisv32_bound_cb, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5873 { CRISV32F_INSN_BOUND_CW, model_crisv32_bound_cw, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5874 { CRISV32F_INSN_BOUND_CD, model_crisv32_bound_cd, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5875 { CRISV32F_INSN_SCC, model_crisv32_scc, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5876 { CRISV32F_INSN_LZ, model_crisv32_lz, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5877 { CRISV32F_INSN_ADDOQ, model_crisv32_addoq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5878 { CRISV32F_INSN_ADDO_M_B_M, model_crisv32_addo_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5879 { CRISV32F_INSN_ADDO_M_W_M, model_crisv32_addo_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5880 { CRISV32F_INSN_ADDO_M_D_M, model_crisv32_addo_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5881 { CRISV32F_INSN_ADDO_CB, model_crisv32_addo_cb, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5882 { CRISV32F_INSN_ADDO_CW, model_crisv32_addo_cw, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5883 { CRISV32F_INSN_ADDO_CD, model_crisv32_addo_cd, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5884 { CRISV32F_INSN_ADDI_ACR_B_R, model_crisv32_addi_acr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5885 { CRISV32F_INSN_ADDI_ACR_W_R, model_crisv32_addi_acr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5886 { CRISV32F_INSN_ADDI_ACR_D_R, model_crisv32_addi_acr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5887 { CRISV32F_INSN_FIDXI, model_crisv32_fidxi, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5888 { CRISV32F_INSN_FTAGI, model_crisv32_ftagi, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5889 { CRISV32F_INSN_FIDXD, model_crisv32_fidxd, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5890 { CRISV32F_INSN_FTAGD, model_crisv32_ftagd, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } }, 5891}; 5892 5893#endif /* WITH_PROFILE_MODEL_P */ 5894 5895static void 5896crisv32_model_init (SIM_CPU *cpu) 5897{ 5898 CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_CRISV32_DATA)); 5899} 5900 5901#if WITH_PROFILE_MODEL_P 5902#define TIMING_DATA(td) td 5903#else 5904#define TIMING_DATA(td) 0 5905#endif 5906 5907static const SIM_MODEL crisv32_models[] = 5908{ 5909 { "crisv32", & crisv32_mach, MODEL_CRISV32, TIMING_DATA (& crisv32_timing[0]), crisv32_model_init }, 5910 { 0 } 5911}; 5912 5913/* The properties of this cpu's implementation. */ 5914 5915static const SIM_MACH_IMP_PROPERTIES crisv32f_imp_properties = 5916{ 5917 sizeof (SIM_CPU), 5918#if WITH_SCACHE 5919 sizeof (SCACHE) 5920#else 5921 0 5922#endif 5923}; 5924 5925 5926static void 5927crisv32f_prepare_run (SIM_CPU *cpu) 5928{ 5929 if (CPU_IDESC (cpu) == NULL) 5930 crisv32f_init_idesc_table (cpu); 5931} 5932 5933static const CGEN_INSN * 5934crisv32f_get_idata (SIM_CPU *cpu, int inum) 5935{ 5936 return CPU_IDESC (cpu) [inum].idata; 5937} 5938 5939static void 5940crisv32_init_cpu (SIM_CPU *cpu) 5941{ 5942 CPU_REG_FETCH (cpu) = crisv32f_fetch_register; 5943 CPU_REG_STORE (cpu) = crisv32f_store_register; 5944 CPU_PC_FETCH (cpu) = crisv32f_h_pc_get; 5945 CPU_PC_STORE (cpu) = crisv32f_h_pc_set; 5946 CPU_GET_IDATA (cpu) = crisv32f_get_idata; 5947 CPU_MAX_INSNS (cpu) = CRISV32F_INSN__MAX; 5948 CPU_INSN_NAME (cpu) = cgen_insn_name; 5949 CPU_FULL_ENGINE_FN (cpu) = crisv32f_engine_run_full; 5950#if WITH_FAST 5951 CPU_FAST_ENGINE_FN (cpu) = crisv32f_engine_run_fast; 5952#else 5953 CPU_FAST_ENGINE_FN (cpu) = crisv32f_engine_run_full; 5954#endif 5955} 5956 5957const SIM_MACH crisv32_mach = 5958{ 5959 "crisv32", "crisv32", MACH_CRISV32, 5960 32, 32, & crisv32_models[0], & crisv32f_imp_properties, 5961 crisv32_init_cpu, 5962 crisv32f_prepare_run 5963}; 5964 5965