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