1 /* Simulator model support for m32rxf. 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 m32rxf 26 #define WANT_CPU_M32RXF 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_m32rx_add (SIM_CPU *current_cpu, void *sem_arg) 39 { 40 #define FLD(f) abuf->fields.sfmt_add.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_sr = -1; 48 INT in_dr = -1; 49 INT out_dr = -1; 50 in_sr = FLD (in_sr); 51 in_dr = FLD (in_dr); 52 out_dr = FLD (out_dr); 53 referenced |= 1 << 0; 54 referenced |= 1 << 1; 55 referenced |= 1 << 2; 56 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 57 } 58 return cycles; 59 #undef FLD 60 } 61 62 static int 63 model_m32rx_add3 (SIM_CPU *current_cpu, void *sem_arg) 64 { 65 #define FLD(f) abuf->fields.sfmt_add3.f 66 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 67 const IDESC * UNUSED idesc = abuf->idesc; 68 int cycles = 0; 69 { 70 int referenced = 0; 71 int UNUSED insn_referenced = abuf->written; 72 INT in_sr = -1; 73 INT in_dr = -1; 74 INT out_dr = -1; 75 in_sr = FLD (in_sr); 76 out_dr = FLD (out_dr); 77 referenced |= 1 << 0; 78 referenced |= 1 << 2; 79 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 80 } 81 return cycles; 82 #undef FLD 83 } 84 85 static int 86 model_m32rx_and (SIM_CPU *current_cpu, void *sem_arg) 87 { 88 #define FLD(f) abuf->fields.sfmt_add.f 89 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 90 const IDESC * UNUSED idesc = abuf->idesc; 91 int cycles = 0; 92 { 93 int referenced = 0; 94 int UNUSED insn_referenced = abuf->written; 95 INT in_sr = -1; 96 INT in_dr = -1; 97 INT out_dr = -1; 98 in_sr = FLD (in_sr); 99 in_dr = FLD (in_dr); 100 out_dr = FLD (out_dr); 101 referenced |= 1 << 0; 102 referenced |= 1 << 1; 103 referenced |= 1 << 2; 104 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 105 } 106 return cycles; 107 #undef FLD 108 } 109 110 static int 111 model_m32rx_and3 (SIM_CPU *current_cpu, void *sem_arg) 112 { 113 #define FLD(f) abuf->fields.sfmt_and3.f 114 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 115 const IDESC * UNUSED idesc = abuf->idesc; 116 int cycles = 0; 117 { 118 int referenced = 0; 119 int UNUSED insn_referenced = abuf->written; 120 INT in_sr = -1; 121 INT in_dr = -1; 122 INT out_dr = -1; 123 in_sr = FLD (in_sr); 124 out_dr = FLD (out_dr); 125 referenced |= 1 << 0; 126 referenced |= 1 << 2; 127 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 128 } 129 return cycles; 130 #undef FLD 131 } 132 133 static int 134 model_m32rx_or (SIM_CPU *current_cpu, void *sem_arg) 135 { 136 #define FLD(f) abuf->fields.sfmt_add.f 137 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 138 const IDESC * UNUSED idesc = abuf->idesc; 139 int cycles = 0; 140 { 141 int referenced = 0; 142 int UNUSED insn_referenced = abuf->written; 143 INT in_sr = -1; 144 INT in_dr = -1; 145 INT out_dr = -1; 146 in_sr = FLD (in_sr); 147 in_dr = FLD (in_dr); 148 out_dr = FLD (out_dr); 149 referenced |= 1 << 0; 150 referenced |= 1 << 1; 151 referenced |= 1 << 2; 152 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 153 } 154 return cycles; 155 #undef FLD 156 } 157 158 static int 159 model_m32rx_or3 (SIM_CPU *current_cpu, void *sem_arg) 160 { 161 #define FLD(f) abuf->fields.sfmt_and3.f 162 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 163 const IDESC * UNUSED idesc = abuf->idesc; 164 int cycles = 0; 165 { 166 int referenced = 0; 167 int UNUSED insn_referenced = abuf->written; 168 INT in_sr = -1; 169 INT in_dr = -1; 170 INT out_dr = -1; 171 in_sr = FLD (in_sr); 172 out_dr = FLD (out_dr); 173 referenced |= 1 << 0; 174 referenced |= 1 << 2; 175 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 176 } 177 return cycles; 178 #undef FLD 179 } 180 181 static int 182 model_m32rx_xor (SIM_CPU *current_cpu, void *sem_arg) 183 { 184 #define FLD(f) abuf->fields.sfmt_add.f 185 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 186 const IDESC * UNUSED idesc = abuf->idesc; 187 int cycles = 0; 188 { 189 int referenced = 0; 190 int UNUSED insn_referenced = abuf->written; 191 INT in_sr = -1; 192 INT in_dr = -1; 193 INT out_dr = -1; 194 in_sr = FLD (in_sr); 195 in_dr = FLD (in_dr); 196 out_dr = FLD (out_dr); 197 referenced |= 1 << 0; 198 referenced |= 1 << 1; 199 referenced |= 1 << 2; 200 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 201 } 202 return cycles; 203 #undef FLD 204 } 205 206 static int 207 model_m32rx_xor3 (SIM_CPU *current_cpu, void *sem_arg) 208 { 209 #define FLD(f) abuf->fields.sfmt_and3.f 210 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 211 const IDESC * UNUSED idesc = abuf->idesc; 212 int cycles = 0; 213 { 214 int referenced = 0; 215 int UNUSED insn_referenced = abuf->written; 216 INT in_sr = -1; 217 INT in_dr = -1; 218 INT out_dr = -1; 219 in_sr = FLD (in_sr); 220 out_dr = FLD (out_dr); 221 referenced |= 1 << 0; 222 referenced |= 1 << 2; 223 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 224 } 225 return cycles; 226 #undef FLD 227 } 228 229 static int 230 model_m32rx_addi (SIM_CPU *current_cpu, void *sem_arg) 231 { 232 #define FLD(f) abuf->fields.sfmt_addi.f 233 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 234 const IDESC * UNUSED idesc = abuf->idesc; 235 int cycles = 0; 236 { 237 int referenced = 0; 238 int UNUSED insn_referenced = abuf->written; 239 INT in_sr = -1; 240 INT in_dr = -1; 241 INT out_dr = -1; 242 in_dr = FLD (in_dr); 243 out_dr = FLD (out_dr); 244 referenced |= 1 << 1; 245 referenced |= 1 << 2; 246 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 247 } 248 return cycles; 249 #undef FLD 250 } 251 252 static int 253 model_m32rx_addv (SIM_CPU *current_cpu, void *sem_arg) 254 { 255 #define FLD(f) abuf->fields.sfmt_add.f 256 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 257 const IDESC * UNUSED idesc = abuf->idesc; 258 int cycles = 0; 259 { 260 int referenced = 0; 261 int UNUSED insn_referenced = abuf->written; 262 INT in_sr = -1; 263 INT in_dr = -1; 264 INT out_dr = -1; 265 in_sr = FLD (in_sr); 266 in_dr = FLD (in_dr); 267 out_dr = FLD (out_dr); 268 referenced |= 1 << 0; 269 referenced |= 1 << 1; 270 referenced |= 1 << 2; 271 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 272 } 273 return cycles; 274 #undef FLD 275 } 276 277 static int 278 model_m32rx_addv3 (SIM_CPU *current_cpu, void *sem_arg) 279 { 280 #define FLD(f) abuf->fields.sfmt_add3.f 281 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 282 const IDESC * UNUSED idesc = abuf->idesc; 283 int cycles = 0; 284 { 285 int referenced = 0; 286 int UNUSED insn_referenced = abuf->written; 287 INT in_sr = -1; 288 INT in_dr = -1; 289 INT out_dr = -1; 290 in_sr = FLD (in_sr); 291 out_dr = FLD (out_dr); 292 referenced |= 1 << 0; 293 referenced |= 1 << 2; 294 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 295 } 296 return cycles; 297 #undef FLD 298 } 299 300 static int 301 model_m32rx_addx (SIM_CPU *current_cpu, void *sem_arg) 302 { 303 #define FLD(f) abuf->fields.sfmt_add.f 304 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 305 const IDESC * UNUSED idesc = abuf->idesc; 306 int cycles = 0; 307 { 308 int referenced = 0; 309 int UNUSED insn_referenced = abuf->written; 310 INT in_sr = -1; 311 INT in_dr = -1; 312 INT out_dr = -1; 313 in_sr = FLD (in_sr); 314 in_dr = FLD (in_dr); 315 out_dr = FLD (out_dr); 316 referenced |= 1 << 0; 317 referenced |= 1 << 1; 318 referenced |= 1 << 2; 319 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 320 } 321 return cycles; 322 #undef FLD 323 } 324 325 static int 326 model_m32rx_bc8 (SIM_CPU *current_cpu, void *sem_arg) 327 { 328 #define FLD(f) abuf->fields.sfmt_bl8.f 329 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 330 const IDESC * UNUSED idesc = abuf->idesc; 331 int cycles = 0; 332 { 333 int referenced = 0; 334 int UNUSED insn_referenced = abuf->written; 335 INT in_sr = -1; 336 if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 337 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 338 } 339 return cycles; 340 #undef FLD 341 } 342 343 static int 344 model_m32rx_bc24 (SIM_CPU *current_cpu, void *sem_arg) 345 { 346 #define FLD(f) abuf->fields.sfmt_bl24.f 347 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 348 const IDESC * UNUSED idesc = abuf->idesc; 349 int cycles = 0; 350 { 351 int referenced = 0; 352 int UNUSED insn_referenced = abuf->written; 353 INT in_sr = -1; 354 if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 355 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 356 } 357 return cycles; 358 #undef FLD 359 } 360 361 static int 362 model_m32rx_beq (SIM_CPU *current_cpu, void *sem_arg) 363 { 364 #define FLD(f) abuf->fields.sfmt_beq.f 365 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 366 const IDESC * UNUSED idesc = abuf->idesc; 367 int cycles = 0; 368 { 369 int referenced = 0; 370 int UNUSED insn_referenced = abuf->written; 371 INT in_sr = -1; 372 if (insn_referenced & (1 << 3)) referenced |= 1 << 1; 373 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 374 } 375 { 376 int referenced = 0; 377 int UNUSED insn_referenced = abuf->written; 378 INT in_src1 = -1; 379 INT in_src2 = -1; 380 in_src1 = FLD (in_src1); 381 in_src2 = FLD (in_src2); 382 referenced |= 1 << 0; 383 referenced |= 1 << 1; 384 cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 385 } 386 return cycles; 387 #undef FLD 388 } 389 390 static int 391 model_m32rx_beqz (SIM_CPU *current_cpu, void *sem_arg) 392 { 393 #define FLD(f) abuf->fields.sfmt_beq.f 394 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 395 const IDESC * UNUSED idesc = abuf->idesc; 396 int cycles = 0; 397 { 398 int referenced = 0; 399 int UNUSED insn_referenced = abuf->written; 400 INT in_sr = -1; 401 if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 402 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 403 } 404 { 405 int referenced = 0; 406 int UNUSED insn_referenced = abuf->written; 407 INT in_src1 = -1; 408 INT in_src2 = -1; 409 in_src2 = FLD (in_src2); 410 referenced |= 1 << 1; 411 cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 412 } 413 return cycles; 414 #undef FLD 415 } 416 417 static int 418 model_m32rx_bgez (SIM_CPU *current_cpu, void *sem_arg) 419 { 420 #define FLD(f) abuf->fields.sfmt_beq.f 421 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 422 const IDESC * UNUSED idesc = abuf->idesc; 423 int cycles = 0; 424 { 425 int referenced = 0; 426 int UNUSED insn_referenced = abuf->written; 427 INT in_sr = -1; 428 if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 429 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 430 } 431 { 432 int referenced = 0; 433 int UNUSED insn_referenced = abuf->written; 434 INT in_src1 = -1; 435 INT in_src2 = -1; 436 in_src2 = FLD (in_src2); 437 referenced |= 1 << 1; 438 cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 439 } 440 return cycles; 441 #undef FLD 442 } 443 444 static int 445 model_m32rx_bgtz (SIM_CPU *current_cpu, void *sem_arg) 446 { 447 #define FLD(f) abuf->fields.sfmt_beq.f 448 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 449 const IDESC * UNUSED idesc = abuf->idesc; 450 int cycles = 0; 451 { 452 int referenced = 0; 453 int UNUSED insn_referenced = abuf->written; 454 INT in_sr = -1; 455 if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 456 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 457 } 458 { 459 int referenced = 0; 460 int UNUSED insn_referenced = abuf->written; 461 INT in_src1 = -1; 462 INT in_src2 = -1; 463 in_src2 = FLD (in_src2); 464 referenced |= 1 << 1; 465 cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 466 } 467 return cycles; 468 #undef FLD 469 } 470 471 static int 472 model_m32rx_blez (SIM_CPU *current_cpu, void *sem_arg) 473 { 474 #define FLD(f) abuf->fields.sfmt_beq.f 475 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 476 const IDESC * UNUSED idesc = abuf->idesc; 477 int cycles = 0; 478 { 479 int referenced = 0; 480 int UNUSED insn_referenced = abuf->written; 481 INT in_sr = -1; 482 if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 483 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 484 } 485 { 486 int referenced = 0; 487 int UNUSED insn_referenced = abuf->written; 488 INT in_src1 = -1; 489 INT in_src2 = -1; 490 in_src2 = FLD (in_src2); 491 referenced |= 1 << 1; 492 cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 493 } 494 return cycles; 495 #undef FLD 496 } 497 498 static int 499 model_m32rx_bltz (SIM_CPU *current_cpu, void *sem_arg) 500 { 501 #define FLD(f) abuf->fields.sfmt_beq.f 502 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 503 const IDESC * UNUSED idesc = abuf->idesc; 504 int cycles = 0; 505 { 506 int referenced = 0; 507 int UNUSED insn_referenced = abuf->written; 508 INT in_sr = -1; 509 if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 510 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 511 } 512 { 513 int referenced = 0; 514 int UNUSED insn_referenced = abuf->written; 515 INT in_src1 = -1; 516 INT in_src2 = -1; 517 in_src2 = FLD (in_src2); 518 referenced |= 1 << 1; 519 cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 520 } 521 return cycles; 522 #undef FLD 523 } 524 525 static int 526 model_m32rx_bnez (SIM_CPU *current_cpu, void *sem_arg) 527 { 528 #define FLD(f) abuf->fields.sfmt_beq.f 529 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 530 const IDESC * UNUSED idesc = abuf->idesc; 531 int cycles = 0; 532 { 533 int referenced = 0; 534 int UNUSED insn_referenced = abuf->written; 535 INT in_sr = -1; 536 if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 537 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 538 } 539 { 540 int referenced = 0; 541 int UNUSED insn_referenced = abuf->written; 542 INT in_src1 = -1; 543 INT in_src2 = -1; 544 in_src2 = FLD (in_src2); 545 referenced |= 1 << 1; 546 cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 547 } 548 return cycles; 549 #undef FLD 550 } 551 552 static int 553 model_m32rx_bl8 (SIM_CPU *current_cpu, void *sem_arg) 554 { 555 #define FLD(f) abuf->fields.sfmt_bl8.f 556 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 557 const IDESC * UNUSED idesc = abuf->idesc; 558 int cycles = 0; 559 { 560 int referenced = 0; 561 int UNUSED insn_referenced = abuf->written; 562 INT in_sr = -1; 563 referenced |= 1 << 1; 564 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 565 } 566 return cycles; 567 #undef FLD 568 } 569 570 static int 571 model_m32rx_bl24 (SIM_CPU *current_cpu, void *sem_arg) 572 { 573 #define FLD(f) abuf->fields.sfmt_bl24.f 574 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 575 const IDESC * UNUSED idesc = abuf->idesc; 576 int cycles = 0; 577 { 578 int referenced = 0; 579 int UNUSED insn_referenced = abuf->written; 580 INT in_sr = -1; 581 referenced |= 1 << 1; 582 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 583 } 584 return cycles; 585 #undef FLD 586 } 587 588 static int 589 model_m32rx_bcl8 (SIM_CPU *current_cpu, void *sem_arg) 590 { 591 #define FLD(f) abuf->fields.sfmt_bl8.f 592 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 593 const IDESC * UNUSED idesc = abuf->idesc; 594 int cycles = 0; 595 { 596 int referenced = 0; 597 int UNUSED insn_referenced = abuf->written; 598 INT in_sr = -1; 599 if (insn_referenced & (1 << 4)) referenced |= 1 << 1; 600 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 601 } 602 return cycles; 603 #undef FLD 604 } 605 606 static int 607 model_m32rx_bcl24 (SIM_CPU *current_cpu, void *sem_arg) 608 { 609 #define FLD(f) abuf->fields.sfmt_bl24.f 610 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 611 const IDESC * UNUSED idesc = abuf->idesc; 612 int cycles = 0; 613 { 614 int referenced = 0; 615 int UNUSED insn_referenced = abuf->written; 616 INT in_sr = -1; 617 if (insn_referenced & (1 << 4)) referenced |= 1 << 1; 618 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 619 } 620 return cycles; 621 #undef FLD 622 } 623 624 static int 625 model_m32rx_bnc8 (SIM_CPU *current_cpu, void *sem_arg) 626 { 627 #define FLD(f) abuf->fields.sfmt_bl8.f 628 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 629 const IDESC * UNUSED idesc = abuf->idesc; 630 int cycles = 0; 631 { 632 int referenced = 0; 633 int UNUSED insn_referenced = abuf->written; 634 INT in_sr = -1; 635 if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 636 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 637 } 638 return cycles; 639 #undef FLD 640 } 641 642 static int 643 model_m32rx_bnc24 (SIM_CPU *current_cpu, void *sem_arg) 644 { 645 #define FLD(f) abuf->fields.sfmt_bl24.f 646 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 647 const IDESC * UNUSED idesc = abuf->idesc; 648 int cycles = 0; 649 { 650 int referenced = 0; 651 int UNUSED insn_referenced = abuf->written; 652 INT in_sr = -1; 653 if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 654 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 655 } 656 return cycles; 657 #undef FLD 658 } 659 660 static int 661 model_m32rx_bne (SIM_CPU *current_cpu, void *sem_arg) 662 { 663 #define FLD(f) abuf->fields.sfmt_beq.f 664 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 665 const IDESC * UNUSED idesc = abuf->idesc; 666 int cycles = 0; 667 { 668 int referenced = 0; 669 int UNUSED insn_referenced = abuf->written; 670 INT in_sr = -1; 671 if (insn_referenced & (1 << 3)) referenced |= 1 << 1; 672 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 673 } 674 { 675 int referenced = 0; 676 int UNUSED insn_referenced = abuf->written; 677 INT in_src1 = -1; 678 INT in_src2 = -1; 679 in_src1 = FLD (in_src1); 680 in_src2 = FLD (in_src2); 681 referenced |= 1 << 0; 682 referenced |= 1 << 1; 683 cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 684 } 685 return cycles; 686 #undef FLD 687 } 688 689 static int 690 model_m32rx_bra8 (SIM_CPU *current_cpu, void *sem_arg) 691 { 692 #define FLD(f) abuf->fields.sfmt_bl8.f 693 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 694 const IDESC * UNUSED idesc = abuf->idesc; 695 int cycles = 0; 696 { 697 int referenced = 0; 698 int UNUSED insn_referenced = abuf->written; 699 INT in_sr = -1; 700 referenced |= 1 << 1; 701 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 702 } 703 return cycles; 704 #undef FLD 705 } 706 707 static int 708 model_m32rx_bra24 (SIM_CPU *current_cpu, void *sem_arg) 709 { 710 #define FLD(f) abuf->fields.sfmt_bl24.f 711 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 712 const IDESC * UNUSED idesc = abuf->idesc; 713 int cycles = 0; 714 { 715 int referenced = 0; 716 int UNUSED insn_referenced = abuf->written; 717 INT in_sr = -1; 718 referenced |= 1 << 1; 719 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 720 } 721 return cycles; 722 #undef FLD 723 } 724 725 static int 726 model_m32rx_bncl8 (SIM_CPU *current_cpu, void *sem_arg) 727 { 728 #define FLD(f) abuf->fields.sfmt_bl8.f 729 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 730 const IDESC * UNUSED idesc = abuf->idesc; 731 int cycles = 0; 732 { 733 int referenced = 0; 734 int UNUSED insn_referenced = abuf->written; 735 INT in_sr = -1; 736 if (insn_referenced & (1 << 4)) referenced |= 1 << 1; 737 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 738 } 739 return cycles; 740 #undef FLD 741 } 742 743 static int 744 model_m32rx_bncl24 (SIM_CPU *current_cpu, void *sem_arg) 745 { 746 #define FLD(f) abuf->fields.sfmt_bl24.f 747 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 748 const IDESC * UNUSED idesc = abuf->idesc; 749 int cycles = 0; 750 { 751 int referenced = 0; 752 int UNUSED insn_referenced = abuf->written; 753 INT in_sr = -1; 754 if (insn_referenced & (1 << 4)) referenced |= 1 << 1; 755 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 756 } 757 return cycles; 758 #undef FLD 759 } 760 761 static int 762 model_m32rx_cmp (SIM_CPU *current_cpu, void *sem_arg) 763 { 764 #define FLD(f) abuf->fields.sfmt_st_plus.f 765 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 766 const IDESC * UNUSED idesc = abuf->idesc; 767 int cycles = 0; 768 { 769 int referenced = 0; 770 int UNUSED insn_referenced = abuf->written; 771 INT in_src1 = -1; 772 INT in_src2 = -1; 773 in_src1 = FLD (in_src1); 774 in_src2 = FLD (in_src2); 775 referenced |= 1 << 0; 776 referenced |= 1 << 1; 777 cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 778 } 779 return cycles; 780 #undef FLD 781 } 782 783 static int 784 model_m32rx_cmpi (SIM_CPU *current_cpu, void *sem_arg) 785 { 786 #define FLD(f) abuf->fields.sfmt_st_d.f 787 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 788 const IDESC * UNUSED idesc = abuf->idesc; 789 int cycles = 0; 790 { 791 int referenced = 0; 792 int UNUSED insn_referenced = abuf->written; 793 INT in_src1 = -1; 794 INT in_src2 = -1; 795 in_src2 = FLD (in_src2); 796 referenced |= 1 << 1; 797 cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 798 } 799 return cycles; 800 #undef FLD 801 } 802 803 static int 804 model_m32rx_cmpu (SIM_CPU *current_cpu, void *sem_arg) 805 { 806 #define FLD(f) abuf->fields.sfmt_st_plus.f 807 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 808 const IDESC * UNUSED idesc = abuf->idesc; 809 int cycles = 0; 810 { 811 int referenced = 0; 812 int UNUSED insn_referenced = abuf->written; 813 INT in_src1 = -1; 814 INT in_src2 = -1; 815 in_src1 = FLD (in_src1); 816 in_src2 = FLD (in_src2); 817 referenced |= 1 << 0; 818 referenced |= 1 << 1; 819 cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 820 } 821 return cycles; 822 #undef FLD 823 } 824 825 static int 826 model_m32rx_cmpui (SIM_CPU *current_cpu, void *sem_arg) 827 { 828 #define FLD(f) abuf->fields.sfmt_st_d.f 829 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 830 const IDESC * UNUSED idesc = abuf->idesc; 831 int cycles = 0; 832 { 833 int referenced = 0; 834 int UNUSED insn_referenced = abuf->written; 835 INT in_src1 = -1; 836 INT in_src2 = -1; 837 in_src2 = FLD (in_src2); 838 referenced |= 1 << 1; 839 cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 840 } 841 return cycles; 842 #undef FLD 843 } 844 845 static int 846 model_m32rx_cmpeq (SIM_CPU *current_cpu, void *sem_arg) 847 { 848 #define FLD(f) abuf->fields.sfmt_st_plus.f 849 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 850 const IDESC * UNUSED idesc = abuf->idesc; 851 int cycles = 0; 852 { 853 int referenced = 0; 854 int UNUSED insn_referenced = abuf->written; 855 INT in_src1 = -1; 856 INT in_src2 = -1; 857 in_src1 = FLD (in_src1); 858 in_src2 = FLD (in_src2); 859 referenced |= 1 << 0; 860 referenced |= 1 << 1; 861 cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 862 } 863 return cycles; 864 #undef FLD 865 } 866 867 static int 868 model_m32rx_cmpz (SIM_CPU *current_cpu, void *sem_arg) 869 { 870 #define FLD(f) abuf->fields.sfmt_st_plus.f 871 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 872 const IDESC * UNUSED idesc = abuf->idesc; 873 int cycles = 0; 874 { 875 int referenced = 0; 876 int UNUSED insn_referenced = abuf->written; 877 INT in_src1 = -1; 878 INT in_src2 = -1; 879 in_src2 = FLD (in_src2); 880 referenced |= 1 << 1; 881 cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 882 } 883 return cycles; 884 #undef FLD 885 } 886 887 static int 888 model_m32rx_div (SIM_CPU *current_cpu, void *sem_arg) 889 { 890 #define FLD(f) abuf->fields.sfmt_add.f 891 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 892 const IDESC * UNUSED idesc = abuf->idesc; 893 int cycles = 0; 894 { 895 int referenced = 0; 896 int UNUSED insn_referenced = abuf->written; 897 INT in_sr = -1; 898 INT in_dr = -1; 899 INT out_dr = -1; 900 in_sr = FLD (in_sr); 901 in_dr = FLD (in_dr); 902 out_dr = FLD (out_dr); 903 referenced |= 1 << 0; 904 if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 905 if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 906 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 907 } 908 return cycles; 909 #undef FLD 910 } 911 912 static int 913 model_m32rx_divu (SIM_CPU *current_cpu, void *sem_arg) 914 { 915 #define FLD(f) abuf->fields.sfmt_add.f 916 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 917 const IDESC * UNUSED idesc = abuf->idesc; 918 int cycles = 0; 919 { 920 int referenced = 0; 921 int UNUSED insn_referenced = abuf->written; 922 INT in_sr = -1; 923 INT in_dr = -1; 924 INT out_dr = -1; 925 in_sr = FLD (in_sr); 926 in_dr = FLD (in_dr); 927 out_dr = FLD (out_dr); 928 referenced |= 1 << 0; 929 if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 930 if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 931 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 932 } 933 return cycles; 934 #undef FLD 935 } 936 937 static int 938 model_m32rx_rem (SIM_CPU *current_cpu, void *sem_arg) 939 { 940 #define FLD(f) abuf->fields.sfmt_add.f 941 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 942 const IDESC * UNUSED idesc = abuf->idesc; 943 int cycles = 0; 944 { 945 int referenced = 0; 946 int UNUSED insn_referenced = abuf->written; 947 INT in_sr = -1; 948 INT in_dr = -1; 949 INT out_dr = -1; 950 in_sr = FLD (in_sr); 951 in_dr = FLD (in_dr); 952 out_dr = FLD (out_dr); 953 referenced |= 1 << 0; 954 if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 955 if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 956 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 957 } 958 return cycles; 959 #undef FLD 960 } 961 962 static int 963 model_m32rx_remu (SIM_CPU *current_cpu, void *sem_arg) 964 { 965 #define FLD(f) abuf->fields.sfmt_add.f 966 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 967 const IDESC * UNUSED idesc = abuf->idesc; 968 int cycles = 0; 969 { 970 int referenced = 0; 971 int UNUSED insn_referenced = abuf->written; 972 INT in_sr = -1; 973 INT in_dr = -1; 974 INT out_dr = -1; 975 in_sr = FLD (in_sr); 976 in_dr = FLD (in_dr); 977 out_dr = FLD (out_dr); 978 referenced |= 1 << 0; 979 if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 980 if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 981 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 982 } 983 return cycles; 984 #undef FLD 985 } 986 987 static int 988 model_m32rx_divh (SIM_CPU *current_cpu, void *sem_arg) 989 { 990 #define FLD(f) abuf->fields.sfmt_add.f 991 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 992 const IDESC * UNUSED idesc = abuf->idesc; 993 int cycles = 0; 994 { 995 int referenced = 0; 996 int UNUSED insn_referenced = abuf->written; 997 INT in_sr = -1; 998 INT in_dr = -1; 999 INT out_dr = -1; 1000 in_sr = FLD (in_sr); 1001 in_dr = FLD (in_dr); 1002 out_dr = FLD (out_dr); 1003 referenced |= 1 << 0; 1004 if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 1005 if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 1006 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1007 } 1008 return cycles; 1009 #undef FLD 1010 } 1011 1012 static int 1013 model_m32rx_jc (SIM_CPU *current_cpu, void *sem_arg) 1014 { 1015 #define FLD(f) abuf->fields.sfmt_jl.f 1016 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1017 const IDESC * UNUSED idesc = abuf->idesc; 1018 int cycles = 0; 1019 { 1020 int referenced = 0; 1021 int UNUSED insn_referenced = abuf->written; 1022 INT in_sr = -1; 1023 in_sr = FLD (in_sr); 1024 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 1025 if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 1026 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 1027 } 1028 return cycles; 1029 #undef FLD 1030 } 1031 1032 static int 1033 model_m32rx_jnc (SIM_CPU *current_cpu, void *sem_arg) 1034 { 1035 #define FLD(f) abuf->fields.sfmt_jl.f 1036 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1037 const IDESC * UNUSED idesc = abuf->idesc; 1038 int cycles = 0; 1039 { 1040 int referenced = 0; 1041 int UNUSED insn_referenced = abuf->written; 1042 INT in_sr = -1; 1043 in_sr = FLD (in_sr); 1044 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 1045 if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 1046 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 1047 } 1048 return cycles; 1049 #undef FLD 1050 } 1051 1052 static int 1053 model_m32rx_jl (SIM_CPU *current_cpu, void *sem_arg) 1054 { 1055 #define FLD(f) abuf->fields.sfmt_jl.f 1056 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1057 const IDESC * UNUSED idesc = abuf->idesc; 1058 int cycles = 0; 1059 { 1060 int referenced = 0; 1061 int UNUSED insn_referenced = abuf->written; 1062 INT in_sr = -1; 1063 in_sr = FLD (in_sr); 1064 referenced |= 1 << 0; 1065 referenced |= 1 << 1; 1066 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 1067 } 1068 return cycles; 1069 #undef FLD 1070 } 1071 1072 static int 1073 model_m32rx_jmp (SIM_CPU *current_cpu, void *sem_arg) 1074 { 1075 #define FLD(f) abuf->fields.sfmt_jl.f 1076 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1077 const IDESC * UNUSED idesc = abuf->idesc; 1078 int cycles = 0; 1079 { 1080 int referenced = 0; 1081 int UNUSED insn_referenced = abuf->written; 1082 INT in_sr = -1; 1083 in_sr = FLD (in_sr); 1084 referenced |= 1 << 0; 1085 referenced |= 1 << 1; 1086 cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr); 1087 } 1088 return cycles; 1089 #undef FLD 1090 } 1091 1092 static int 1093 model_m32rx_ld (SIM_CPU *current_cpu, void *sem_arg) 1094 { 1095 #define FLD(f) abuf->fields.sfmt_ld_plus.f 1096 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1097 const IDESC * UNUSED idesc = abuf->idesc; 1098 int cycles = 0; 1099 { 1100 int referenced = 0; 1101 int UNUSED insn_referenced = abuf->written; 1102 INT in_sr = 0; 1103 INT out_dr = 0; 1104 in_sr = FLD (in_sr); 1105 out_dr = FLD (out_dr); 1106 referenced |= 1 << 0; 1107 referenced |= 1 << 1; 1108 cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 1109 } 1110 return cycles; 1111 #undef FLD 1112 } 1113 1114 static int 1115 model_m32rx_ld_d (SIM_CPU *current_cpu, void *sem_arg) 1116 { 1117 #define FLD(f) abuf->fields.sfmt_add3.f 1118 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1119 const IDESC * UNUSED idesc = abuf->idesc; 1120 int cycles = 0; 1121 { 1122 int referenced = 0; 1123 int UNUSED insn_referenced = abuf->written; 1124 INT in_sr = 0; 1125 INT out_dr = 0; 1126 in_sr = FLD (in_sr); 1127 out_dr = FLD (out_dr); 1128 referenced |= 1 << 0; 1129 referenced |= 1 << 1; 1130 cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 1131 } 1132 return cycles; 1133 #undef FLD 1134 } 1135 1136 static int 1137 model_m32rx_ldb (SIM_CPU *current_cpu, void *sem_arg) 1138 { 1139 #define FLD(f) abuf->fields.sfmt_ld_plus.f 1140 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1141 const IDESC * UNUSED idesc = abuf->idesc; 1142 int cycles = 0; 1143 { 1144 int referenced = 0; 1145 int UNUSED insn_referenced = abuf->written; 1146 INT in_sr = 0; 1147 INT out_dr = 0; 1148 in_sr = FLD (in_sr); 1149 out_dr = FLD (out_dr); 1150 referenced |= 1 << 0; 1151 referenced |= 1 << 1; 1152 cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 1153 } 1154 return cycles; 1155 #undef FLD 1156 } 1157 1158 static int 1159 model_m32rx_ldb_d (SIM_CPU *current_cpu, void *sem_arg) 1160 { 1161 #define FLD(f) abuf->fields.sfmt_add3.f 1162 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1163 const IDESC * UNUSED idesc = abuf->idesc; 1164 int cycles = 0; 1165 { 1166 int referenced = 0; 1167 int UNUSED insn_referenced = abuf->written; 1168 INT in_sr = 0; 1169 INT out_dr = 0; 1170 in_sr = FLD (in_sr); 1171 out_dr = FLD (out_dr); 1172 referenced |= 1 << 0; 1173 referenced |= 1 << 1; 1174 cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 1175 } 1176 return cycles; 1177 #undef FLD 1178 } 1179 1180 static int 1181 model_m32rx_ldh (SIM_CPU *current_cpu, void *sem_arg) 1182 { 1183 #define FLD(f) abuf->fields.sfmt_ld_plus.f 1184 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1185 const IDESC * UNUSED idesc = abuf->idesc; 1186 int cycles = 0; 1187 { 1188 int referenced = 0; 1189 int UNUSED insn_referenced = abuf->written; 1190 INT in_sr = 0; 1191 INT out_dr = 0; 1192 in_sr = FLD (in_sr); 1193 out_dr = FLD (out_dr); 1194 referenced |= 1 << 0; 1195 referenced |= 1 << 1; 1196 cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 1197 } 1198 return cycles; 1199 #undef FLD 1200 } 1201 1202 static int 1203 model_m32rx_ldh_d (SIM_CPU *current_cpu, void *sem_arg) 1204 { 1205 #define FLD(f) abuf->fields.sfmt_add3.f 1206 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1207 const IDESC * UNUSED idesc = abuf->idesc; 1208 int cycles = 0; 1209 { 1210 int referenced = 0; 1211 int UNUSED insn_referenced = abuf->written; 1212 INT in_sr = 0; 1213 INT out_dr = 0; 1214 in_sr = FLD (in_sr); 1215 out_dr = FLD (out_dr); 1216 referenced |= 1 << 0; 1217 referenced |= 1 << 1; 1218 cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 1219 } 1220 return cycles; 1221 #undef FLD 1222 } 1223 1224 static int 1225 model_m32rx_ldub (SIM_CPU *current_cpu, void *sem_arg) 1226 { 1227 #define FLD(f) abuf->fields.sfmt_ld_plus.f 1228 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1229 const IDESC * UNUSED idesc = abuf->idesc; 1230 int cycles = 0; 1231 { 1232 int referenced = 0; 1233 int UNUSED insn_referenced = abuf->written; 1234 INT in_sr = 0; 1235 INT out_dr = 0; 1236 in_sr = FLD (in_sr); 1237 out_dr = FLD (out_dr); 1238 referenced |= 1 << 0; 1239 referenced |= 1 << 1; 1240 cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 1241 } 1242 return cycles; 1243 #undef FLD 1244 } 1245 1246 static int 1247 model_m32rx_ldub_d (SIM_CPU *current_cpu, void *sem_arg) 1248 { 1249 #define FLD(f) abuf->fields.sfmt_add3.f 1250 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1251 const IDESC * UNUSED idesc = abuf->idesc; 1252 int cycles = 0; 1253 { 1254 int referenced = 0; 1255 int UNUSED insn_referenced = abuf->written; 1256 INT in_sr = 0; 1257 INT out_dr = 0; 1258 in_sr = FLD (in_sr); 1259 out_dr = FLD (out_dr); 1260 referenced |= 1 << 0; 1261 referenced |= 1 << 1; 1262 cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 1263 } 1264 return cycles; 1265 #undef FLD 1266 } 1267 1268 static int 1269 model_m32rx_lduh (SIM_CPU *current_cpu, void *sem_arg) 1270 { 1271 #define FLD(f) abuf->fields.sfmt_ld_plus.f 1272 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1273 const IDESC * UNUSED idesc = abuf->idesc; 1274 int cycles = 0; 1275 { 1276 int referenced = 0; 1277 int UNUSED insn_referenced = abuf->written; 1278 INT in_sr = 0; 1279 INT out_dr = 0; 1280 in_sr = FLD (in_sr); 1281 out_dr = FLD (out_dr); 1282 referenced |= 1 << 0; 1283 referenced |= 1 << 1; 1284 cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 1285 } 1286 return cycles; 1287 #undef FLD 1288 } 1289 1290 static int 1291 model_m32rx_lduh_d (SIM_CPU *current_cpu, void *sem_arg) 1292 { 1293 #define FLD(f) abuf->fields.sfmt_add3.f 1294 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1295 const IDESC * UNUSED idesc = abuf->idesc; 1296 int cycles = 0; 1297 { 1298 int referenced = 0; 1299 int UNUSED insn_referenced = abuf->written; 1300 INT in_sr = 0; 1301 INT out_dr = 0; 1302 in_sr = FLD (in_sr); 1303 out_dr = FLD (out_dr); 1304 referenced |= 1 << 0; 1305 referenced |= 1 << 1; 1306 cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 1307 } 1308 return cycles; 1309 #undef FLD 1310 } 1311 1312 static int 1313 model_m32rx_ld_plus (SIM_CPU *current_cpu, void *sem_arg) 1314 { 1315 #define FLD(f) abuf->fields.sfmt_ld_plus.f 1316 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1317 const IDESC * UNUSED idesc = abuf->idesc; 1318 int cycles = 0; 1319 { 1320 int referenced = 0; 1321 int UNUSED insn_referenced = abuf->written; 1322 INT in_sr = 0; 1323 INT out_dr = 0; 1324 in_sr = FLD (in_sr); 1325 out_dr = FLD (out_dr); 1326 referenced |= 1 << 0; 1327 referenced |= 1 << 1; 1328 cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 1329 } 1330 { 1331 int referenced = 0; 1332 int UNUSED insn_referenced = abuf->written; 1333 INT in_sr = -1; 1334 INT in_dr = -1; 1335 INT out_dr = -1; 1336 in_dr = FLD (in_sr); 1337 out_dr = FLD (out_sr); 1338 referenced |= 1 << 0; 1339 referenced |= 1 << 2; 1340 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr); 1341 } 1342 return cycles; 1343 #undef FLD 1344 } 1345 1346 static int 1347 model_m32rx_ld24 (SIM_CPU *current_cpu, void *sem_arg) 1348 { 1349 #define FLD(f) abuf->fields.sfmt_ld24.f 1350 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1351 const IDESC * UNUSED idesc = abuf->idesc; 1352 int cycles = 0; 1353 { 1354 int referenced = 0; 1355 int UNUSED insn_referenced = abuf->written; 1356 INT in_sr = -1; 1357 INT in_dr = -1; 1358 INT out_dr = -1; 1359 out_dr = FLD (out_dr); 1360 referenced |= 1 << 2; 1361 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1362 } 1363 return cycles; 1364 #undef FLD 1365 } 1366 1367 static int 1368 model_m32rx_ldi8 (SIM_CPU *current_cpu, void *sem_arg) 1369 { 1370 #define FLD(f) abuf->fields.sfmt_addi.f 1371 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1372 const IDESC * UNUSED idesc = abuf->idesc; 1373 int cycles = 0; 1374 { 1375 int referenced = 0; 1376 int UNUSED insn_referenced = abuf->written; 1377 INT in_sr = -1; 1378 INT in_dr = -1; 1379 INT out_dr = -1; 1380 out_dr = FLD (out_dr); 1381 referenced |= 1 << 2; 1382 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1383 } 1384 return cycles; 1385 #undef FLD 1386 } 1387 1388 static int 1389 model_m32rx_ldi16 (SIM_CPU *current_cpu, void *sem_arg) 1390 { 1391 #define FLD(f) abuf->fields.sfmt_add3.f 1392 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1393 const IDESC * UNUSED idesc = abuf->idesc; 1394 int cycles = 0; 1395 { 1396 int referenced = 0; 1397 int UNUSED insn_referenced = abuf->written; 1398 INT in_sr = -1; 1399 INT in_dr = -1; 1400 INT out_dr = -1; 1401 out_dr = FLD (out_dr); 1402 referenced |= 1 << 2; 1403 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1404 } 1405 return cycles; 1406 #undef FLD 1407 } 1408 1409 static int 1410 model_m32rx_lock (SIM_CPU *current_cpu, void *sem_arg) 1411 { 1412 #define FLD(f) abuf->fields.sfmt_ld_plus.f 1413 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1414 const IDESC * UNUSED idesc = abuf->idesc; 1415 int cycles = 0; 1416 { 1417 int referenced = 0; 1418 int UNUSED insn_referenced = abuf->written; 1419 INT in_sr = 0; 1420 INT out_dr = 0; 1421 in_sr = FLD (in_sr); 1422 out_dr = FLD (out_dr); 1423 referenced |= 1 << 0; 1424 referenced |= 1 << 1; 1425 cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 1426 } 1427 return cycles; 1428 #undef FLD 1429 } 1430 1431 static int 1432 model_m32rx_machi_a (SIM_CPU *current_cpu, void *sem_arg) 1433 { 1434 #define FLD(f) abuf->fields.sfmt_machi_a.f 1435 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1436 const IDESC * UNUSED idesc = abuf->idesc; 1437 int cycles = 0; 1438 { 1439 int referenced = 0; 1440 int UNUSED insn_referenced = abuf->written; 1441 INT in_src1 = -1; 1442 INT in_src2 = -1; 1443 in_src1 = FLD (in_src1); 1444 in_src2 = FLD (in_src2); 1445 referenced |= 1 << 0; 1446 referenced |= 1 << 1; 1447 cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 1448 } 1449 return cycles; 1450 #undef FLD 1451 } 1452 1453 static int 1454 model_m32rx_maclo_a (SIM_CPU *current_cpu, void *sem_arg) 1455 { 1456 #define FLD(f) abuf->fields.sfmt_machi_a.f 1457 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1458 const IDESC * UNUSED idesc = abuf->idesc; 1459 int cycles = 0; 1460 { 1461 int referenced = 0; 1462 int UNUSED insn_referenced = abuf->written; 1463 INT in_src1 = -1; 1464 INT in_src2 = -1; 1465 in_src1 = FLD (in_src1); 1466 in_src2 = FLD (in_src2); 1467 referenced |= 1 << 0; 1468 referenced |= 1 << 1; 1469 cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 1470 } 1471 return cycles; 1472 #undef FLD 1473 } 1474 1475 static int 1476 model_m32rx_macwhi_a (SIM_CPU *current_cpu, void *sem_arg) 1477 { 1478 #define FLD(f) abuf->fields.sfmt_machi_a.f 1479 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1480 const IDESC * UNUSED idesc = abuf->idesc; 1481 int cycles = 0; 1482 { 1483 int referenced = 0; 1484 int UNUSED insn_referenced = abuf->written; 1485 INT in_src1 = -1; 1486 INT in_src2 = -1; 1487 in_src1 = FLD (in_src1); 1488 in_src2 = FLD (in_src2); 1489 referenced |= 1 << 0; 1490 referenced |= 1 << 1; 1491 cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 1492 } 1493 return cycles; 1494 #undef FLD 1495 } 1496 1497 static int 1498 model_m32rx_macwlo_a (SIM_CPU *current_cpu, void *sem_arg) 1499 { 1500 #define FLD(f) abuf->fields.sfmt_machi_a.f 1501 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1502 const IDESC * UNUSED idesc = abuf->idesc; 1503 int cycles = 0; 1504 { 1505 int referenced = 0; 1506 int UNUSED insn_referenced = abuf->written; 1507 INT in_src1 = -1; 1508 INT in_src2 = -1; 1509 in_src1 = FLD (in_src1); 1510 in_src2 = FLD (in_src2); 1511 referenced |= 1 << 0; 1512 referenced |= 1 << 1; 1513 cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 1514 } 1515 return cycles; 1516 #undef FLD 1517 } 1518 1519 static int 1520 model_m32rx_mul (SIM_CPU *current_cpu, void *sem_arg) 1521 { 1522 #define FLD(f) abuf->fields.sfmt_add.f 1523 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1524 const IDESC * UNUSED idesc = abuf->idesc; 1525 int cycles = 0; 1526 { 1527 int referenced = 0; 1528 int UNUSED insn_referenced = abuf->written; 1529 INT in_sr = -1; 1530 INT in_dr = -1; 1531 INT out_dr = -1; 1532 in_sr = FLD (in_sr); 1533 in_dr = FLD (in_dr); 1534 out_dr = FLD (out_dr); 1535 referenced |= 1 << 0; 1536 referenced |= 1 << 1; 1537 referenced |= 1 << 2; 1538 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1539 } 1540 return cycles; 1541 #undef FLD 1542 } 1543 1544 static int 1545 model_m32rx_mulhi_a (SIM_CPU *current_cpu, void *sem_arg) 1546 { 1547 #define FLD(f) abuf->fields.sfmt_machi_a.f 1548 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1549 const IDESC * UNUSED idesc = abuf->idesc; 1550 int cycles = 0; 1551 { 1552 int referenced = 0; 1553 int UNUSED insn_referenced = abuf->written; 1554 INT in_src1 = -1; 1555 INT in_src2 = -1; 1556 in_src1 = FLD (in_src1); 1557 in_src2 = FLD (in_src2); 1558 referenced |= 1 << 0; 1559 referenced |= 1 << 1; 1560 cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 1561 } 1562 return cycles; 1563 #undef FLD 1564 } 1565 1566 static int 1567 model_m32rx_mullo_a (SIM_CPU *current_cpu, void *sem_arg) 1568 { 1569 #define FLD(f) abuf->fields.sfmt_machi_a.f 1570 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1571 const IDESC * UNUSED idesc = abuf->idesc; 1572 int cycles = 0; 1573 { 1574 int referenced = 0; 1575 int UNUSED insn_referenced = abuf->written; 1576 INT in_src1 = -1; 1577 INT in_src2 = -1; 1578 in_src1 = FLD (in_src1); 1579 in_src2 = FLD (in_src2); 1580 referenced |= 1 << 0; 1581 referenced |= 1 << 1; 1582 cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 1583 } 1584 return cycles; 1585 #undef FLD 1586 } 1587 1588 static int 1589 model_m32rx_mulwhi_a (SIM_CPU *current_cpu, void *sem_arg) 1590 { 1591 #define FLD(f) abuf->fields.sfmt_machi_a.f 1592 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1593 const IDESC * UNUSED idesc = abuf->idesc; 1594 int cycles = 0; 1595 { 1596 int referenced = 0; 1597 int UNUSED insn_referenced = abuf->written; 1598 INT in_src1 = -1; 1599 INT in_src2 = -1; 1600 in_src1 = FLD (in_src1); 1601 in_src2 = FLD (in_src2); 1602 referenced |= 1 << 0; 1603 referenced |= 1 << 1; 1604 cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 1605 } 1606 return cycles; 1607 #undef FLD 1608 } 1609 1610 static int 1611 model_m32rx_mulwlo_a (SIM_CPU *current_cpu, void *sem_arg) 1612 { 1613 #define FLD(f) abuf->fields.sfmt_machi_a.f 1614 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1615 const IDESC * UNUSED idesc = abuf->idesc; 1616 int cycles = 0; 1617 { 1618 int referenced = 0; 1619 int UNUSED insn_referenced = abuf->written; 1620 INT in_src1 = -1; 1621 INT in_src2 = -1; 1622 in_src1 = FLD (in_src1); 1623 in_src2 = FLD (in_src2); 1624 referenced |= 1 << 0; 1625 referenced |= 1 << 1; 1626 cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 1627 } 1628 return cycles; 1629 #undef FLD 1630 } 1631 1632 static int 1633 model_m32rx_mv (SIM_CPU *current_cpu, void *sem_arg) 1634 { 1635 #define FLD(f) abuf->fields.sfmt_ld_plus.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_sr = -1; 1643 INT in_dr = -1; 1644 INT out_dr = -1; 1645 in_sr = FLD (in_sr); 1646 out_dr = FLD (out_dr); 1647 referenced |= 1 << 0; 1648 referenced |= 1 << 2; 1649 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1650 } 1651 return cycles; 1652 #undef FLD 1653 } 1654 1655 static int 1656 model_m32rx_mvfachi_a (SIM_CPU *current_cpu, void *sem_arg) 1657 { 1658 #define FLD(f) abuf->fields.sfmt_mvfachi_a.f 1659 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1660 const IDESC * UNUSED idesc = abuf->idesc; 1661 int cycles = 0; 1662 { 1663 int referenced = 0; 1664 int UNUSED insn_referenced = abuf->written; 1665 INT in_sr = -1; 1666 INT in_dr = -1; 1667 INT out_dr = -1; 1668 out_dr = FLD (out_dr); 1669 referenced |= 1 << 2; 1670 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1671 } 1672 return cycles; 1673 #undef FLD 1674 } 1675 1676 static int 1677 model_m32rx_mvfaclo_a (SIM_CPU *current_cpu, void *sem_arg) 1678 { 1679 #define FLD(f) abuf->fields.sfmt_mvfachi_a.f 1680 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1681 const IDESC * UNUSED idesc = abuf->idesc; 1682 int cycles = 0; 1683 { 1684 int referenced = 0; 1685 int UNUSED insn_referenced = abuf->written; 1686 INT in_sr = -1; 1687 INT in_dr = -1; 1688 INT out_dr = -1; 1689 out_dr = FLD (out_dr); 1690 referenced |= 1 << 2; 1691 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1692 } 1693 return cycles; 1694 #undef FLD 1695 } 1696 1697 static int 1698 model_m32rx_mvfacmi_a (SIM_CPU *current_cpu, void *sem_arg) 1699 { 1700 #define FLD(f) abuf->fields.sfmt_mvfachi_a.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_sr = -1; 1708 INT in_dr = -1; 1709 INT out_dr = -1; 1710 out_dr = FLD (out_dr); 1711 referenced |= 1 << 2; 1712 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1713 } 1714 return cycles; 1715 #undef FLD 1716 } 1717 1718 static int 1719 model_m32rx_mvfc (SIM_CPU *current_cpu, void *sem_arg) 1720 { 1721 #define FLD(f) abuf->fields.sfmt_ld_plus.f 1722 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1723 const IDESC * UNUSED idesc = abuf->idesc; 1724 int cycles = 0; 1725 { 1726 int referenced = 0; 1727 int UNUSED insn_referenced = abuf->written; 1728 INT in_sr = -1; 1729 INT in_dr = -1; 1730 INT out_dr = -1; 1731 out_dr = FLD (out_dr); 1732 referenced |= 1 << 2; 1733 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1734 } 1735 return cycles; 1736 #undef FLD 1737 } 1738 1739 static int 1740 model_m32rx_mvtachi_a (SIM_CPU *current_cpu, void *sem_arg) 1741 { 1742 #define FLD(f) abuf->fields.sfmt_mvtachi_a.f 1743 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1744 const IDESC * UNUSED idesc = abuf->idesc; 1745 int cycles = 0; 1746 { 1747 int referenced = 0; 1748 int UNUSED insn_referenced = abuf->written; 1749 INT in_sr = -1; 1750 INT in_dr = -1; 1751 INT out_dr = -1; 1752 in_sr = FLD (in_src1); 1753 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1754 } 1755 return cycles; 1756 #undef FLD 1757 } 1758 1759 static int 1760 model_m32rx_mvtaclo_a (SIM_CPU *current_cpu, void *sem_arg) 1761 { 1762 #define FLD(f) abuf->fields.sfmt_mvtachi_a.f 1763 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1764 const IDESC * UNUSED idesc = abuf->idesc; 1765 int cycles = 0; 1766 { 1767 int referenced = 0; 1768 int UNUSED insn_referenced = abuf->written; 1769 INT in_sr = -1; 1770 INT in_dr = -1; 1771 INT out_dr = -1; 1772 in_sr = FLD (in_src1); 1773 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1774 } 1775 return cycles; 1776 #undef FLD 1777 } 1778 1779 static int 1780 model_m32rx_mvtc (SIM_CPU *current_cpu, void *sem_arg) 1781 { 1782 #define FLD(f) abuf->fields.sfmt_ld_plus.f 1783 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1784 const IDESC * UNUSED idesc = abuf->idesc; 1785 int cycles = 0; 1786 { 1787 int referenced = 0; 1788 int UNUSED insn_referenced = abuf->written; 1789 INT in_sr = -1; 1790 INT in_dr = -1; 1791 INT out_dr = -1; 1792 in_sr = FLD (in_sr); 1793 referenced |= 1 << 0; 1794 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1795 } 1796 return cycles; 1797 #undef FLD 1798 } 1799 1800 static int 1801 model_m32rx_neg (SIM_CPU *current_cpu, void *sem_arg) 1802 { 1803 #define FLD(f) abuf->fields.sfmt_ld_plus.f 1804 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1805 const IDESC * UNUSED idesc = abuf->idesc; 1806 int cycles = 0; 1807 { 1808 int referenced = 0; 1809 int UNUSED insn_referenced = abuf->written; 1810 INT in_sr = -1; 1811 INT in_dr = -1; 1812 INT out_dr = -1; 1813 in_sr = FLD (in_sr); 1814 out_dr = FLD (out_dr); 1815 referenced |= 1 << 0; 1816 referenced |= 1 << 2; 1817 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1818 } 1819 return cycles; 1820 #undef FLD 1821 } 1822 1823 static int 1824 model_m32rx_nop (SIM_CPU *current_cpu, void *sem_arg) 1825 { 1826 #define FLD(f) abuf->fields.sfmt_empty.f 1827 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1828 const IDESC * UNUSED idesc = abuf->idesc; 1829 int cycles = 0; 1830 { 1831 int referenced = 0; 1832 int UNUSED insn_referenced = abuf->written; 1833 INT in_sr = -1; 1834 INT in_dr = -1; 1835 INT out_dr = -1; 1836 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1837 } 1838 return cycles; 1839 #undef FLD 1840 } 1841 1842 static int 1843 model_m32rx_not (SIM_CPU *current_cpu, void *sem_arg) 1844 { 1845 #define FLD(f) abuf->fields.sfmt_ld_plus.f 1846 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1847 const IDESC * UNUSED idesc = abuf->idesc; 1848 int cycles = 0; 1849 { 1850 int referenced = 0; 1851 int UNUSED insn_referenced = abuf->written; 1852 INT in_sr = -1; 1853 INT in_dr = -1; 1854 INT out_dr = -1; 1855 in_sr = FLD (in_sr); 1856 out_dr = FLD (out_dr); 1857 referenced |= 1 << 0; 1858 referenced |= 1 << 2; 1859 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1860 } 1861 return cycles; 1862 #undef FLD 1863 } 1864 1865 static int 1866 model_m32rx_rac_dsi (SIM_CPU *current_cpu, void *sem_arg) 1867 { 1868 #define FLD(f) abuf->fields.sfmt_rac_dsi.f 1869 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1870 const IDESC * UNUSED idesc = abuf->idesc; 1871 int cycles = 0; 1872 { 1873 int referenced = 0; 1874 int UNUSED insn_referenced = abuf->written; 1875 INT in_src1 = -1; 1876 INT in_src2 = -1; 1877 cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 1878 } 1879 return cycles; 1880 #undef FLD 1881 } 1882 1883 static int 1884 model_m32rx_rach_dsi (SIM_CPU *current_cpu, void *sem_arg) 1885 { 1886 #define FLD(f) abuf->fields.sfmt_rac_dsi.f 1887 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1888 const IDESC * UNUSED idesc = abuf->idesc; 1889 int cycles = 0; 1890 { 1891 int referenced = 0; 1892 int UNUSED insn_referenced = abuf->written; 1893 INT in_src1 = -1; 1894 INT in_src2 = -1; 1895 cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 1896 } 1897 return cycles; 1898 #undef FLD 1899 } 1900 1901 static int 1902 model_m32rx_rte (SIM_CPU *current_cpu, void *sem_arg) 1903 { 1904 #define FLD(f) abuf->fields.sfmt_empty.f 1905 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1906 const IDESC * UNUSED idesc = abuf->idesc; 1907 int cycles = 0; 1908 { 1909 int referenced = 0; 1910 int UNUSED insn_referenced = abuf->written; 1911 INT in_sr = -1; 1912 INT in_dr = -1; 1913 INT out_dr = -1; 1914 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1915 } 1916 return cycles; 1917 #undef FLD 1918 } 1919 1920 static int 1921 model_m32rx_seth (SIM_CPU *current_cpu, void *sem_arg) 1922 { 1923 #define FLD(f) abuf->fields.sfmt_seth.f 1924 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1925 const IDESC * UNUSED idesc = abuf->idesc; 1926 int cycles = 0; 1927 { 1928 int referenced = 0; 1929 int UNUSED insn_referenced = abuf->written; 1930 INT in_sr = -1; 1931 INT in_dr = -1; 1932 INT out_dr = -1; 1933 out_dr = FLD (out_dr); 1934 referenced |= 1 << 2; 1935 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1936 } 1937 return cycles; 1938 #undef FLD 1939 } 1940 1941 static int 1942 model_m32rx_sll (SIM_CPU *current_cpu, void *sem_arg) 1943 { 1944 #define FLD(f) abuf->fields.sfmt_add.f 1945 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1946 const IDESC * UNUSED idesc = abuf->idesc; 1947 int cycles = 0; 1948 { 1949 int referenced = 0; 1950 int UNUSED insn_referenced = abuf->written; 1951 INT in_sr = -1; 1952 INT in_dr = -1; 1953 INT out_dr = -1; 1954 in_sr = FLD (in_sr); 1955 in_dr = FLD (in_dr); 1956 out_dr = FLD (out_dr); 1957 referenced |= 1 << 0; 1958 referenced |= 1 << 1; 1959 referenced |= 1 << 2; 1960 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1961 } 1962 return cycles; 1963 #undef FLD 1964 } 1965 1966 static int 1967 model_m32rx_sll3 (SIM_CPU *current_cpu, void *sem_arg) 1968 { 1969 #define FLD(f) abuf->fields.sfmt_add3.f 1970 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1971 const IDESC * UNUSED idesc = abuf->idesc; 1972 int cycles = 0; 1973 { 1974 int referenced = 0; 1975 int UNUSED insn_referenced = abuf->written; 1976 INT in_sr = -1; 1977 INT in_dr = -1; 1978 INT out_dr = -1; 1979 in_sr = FLD (in_sr); 1980 out_dr = FLD (out_dr); 1981 referenced |= 1 << 0; 1982 referenced |= 1 << 2; 1983 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1984 } 1985 return cycles; 1986 #undef FLD 1987 } 1988 1989 static int 1990 model_m32rx_slli (SIM_CPU *current_cpu, void *sem_arg) 1991 { 1992 #define FLD(f) abuf->fields.sfmt_slli.f 1993 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1994 const IDESC * UNUSED idesc = abuf->idesc; 1995 int cycles = 0; 1996 { 1997 int referenced = 0; 1998 int UNUSED insn_referenced = abuf->written; 1999 INT in_sr = -1; 2000 INT in_dr = -1; 2001 INT out_dr = -1; 2002 in_dr = FLD (in_dr); 2003 out_dr = FLD (out_dr); 2004 referenced |= 1 << 1; 2005 referenced |= 1 << 2; 2006 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2007 } 2008 return cycles; 2009 #undef FLD 2010 } 2011 2012 static int 2013 model_m32rx_sra (SIM_CPU *current_cpu, void *sem_arg) 2014 { 2015 #define FLD(f) abuf->fields.sfmt_add.f 2016 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2017 const IDESC * UNUSED idesc = abuf->idesc; 2018 int cycles = 0; 2019 { 2020 int referenced = 0; 2021 int UNUSED insn_referenced = abuf->written; 2022 INT in_sr = -1; 2023 INT in_dr = -1; 2024 INT out_dr = -1; 2025 in_sr = FLD (in_sr); 2026 in_dr = FLD (in_dr); 2027 out_dr = FLD (out_dr); 2028 referenced |= 1 << 0; 2029 referenced |= 1 << 1; 2030 referenced |= 1 << 2; 2031 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2032 } 2033 return cycles; 2034 #undef FLD 2035 } 2036 2037 static int 2038 model_m32rx_sra3 (SIM_CPU *current_cpu, void *sem_arg) 2039 { 2040 #define FLD(f) abuf->fields.sfmt_add3.f 2041 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2042 const IDESC * UNUSED idesc = abuf->idesc; 2043 int cycles = 0; 2044 { 2045 int referenced = 0; 2046 int UNUSED insn_referenced = abuf->written; 2047 INT in_sr = -1; 2048 INT in_dr = -1; 2049 INT out_dr = -1; 2050 in_sr = FLD (in_sr); 2051 out_dr = FLD (out_dr); 2052 referenced |= 1 << 0; 2053 referenced |= 1 << 2; 2054 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2055 } 2056 return cycles; 2057 #undef FLD 2058 } 2059 2060 static int 2061 model_m32rx_srai (SIM_CPU *current_cpu, void *sem_arg) 2062 { 2063 #define FLD(f) abuf->fields.sfmt_slli.f 2064 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2065 const IDESC * UNUSED idesc = abuf->idesc; 2066 int cycles = 0; 2067 { 2068 int referenced = 0; 2069 int UNUSED insn_referenced = abuf->written; 2070 INT in_sr = -1; 2071 INT in_dr = -1; 2072 INT out_dr = -1; 2073 in_dr = FLD (in_dr); 2074 out_dr = FLD (out_dr); 2075 referenced |= 1 << 1; 2076 referenced |= 1 << 2; 2077 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2078 } 2079 return cycles; 2080 #undef FLD 2081 } 2082 2083 static int 2084 model_m32rx_srl (SIM_CPU *current_cpu, void *sem_arg) 2085 { 2086 #define FLD(f) abuf->fields.sfmt_add.f 2087 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2088 const IDESC * UNUSED idesc = abuf->idesc; 2089 int cycles = 0; 2090 { 2091 int referenced = 0; 2092 int UNUSED insn_referenced = abuf->written; 2093 INT in_sr = -1; 2094 INT in_dr = -1; 2095 INT out_dr = -1; 2096 in_sr = FLD (in_sr); 2097 in_dr = FLD (in_dr); 2098 out_dr = FLD (out_dr); 2099 referenced |= 1 << 0; 2100 referenced |= 1 << 1; 2101 referenced |= 1 << 2; 2102 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2103 } 2104 return cycles; 2105 #undef FLD 2106 } 2107 2108 static int 2109 model_m32rx_srl3 (SIM_CPU *current_cpu, void *sem_arg) 2110 { 2111 #define FLD(f) abuf->fields.sfmt_add3.f 2112 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2113 const IDESC * UNUSED idesc = abuf->idesc; 2114 int cycles = 0; 2115 { 2116 int referenced = 0; 2117 int UNUSED insn_referenced = abuf->written; 2118 INT in_sr = -1; 2119 INT in_dr = -1; 2120 INT out_dr = -1; 2121 in_sr = FLD (in_sr); 2122 out_dr = FLD (out_dr); 2123 referenced |= 1 << 0; 2124 referenced |= 1 << 2; 2125 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2126 } 2127 return cycles; 2128 #undef FLD 2129 } 2130 2131 static int 2132 model_m32rx_srli (SIM_CPU *current_cpu, void *sem_arg) 2133 { 2134 #define FLD(f) abuf->fields.sfmt_slli.f 2135 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2136 const IDESC * UNUSED idesc = abuf->idesc; 2137 int cycles = 0; 2138 { 2139 int referenced = 0; 2140 int UNUSED insn_referenced = abuf->written; 2141 INT in_sr = -1; 2142 INT in_dr = -1; 2143 INT out_dr = -1; 2144 in_dr = FLD (in_dr); 2145 out_dr = FLD (out_dr); 2146 referenced |= 1 << 1; 2147 referenced |= 1 << 2; 2148 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2149 } 2150 return cycles; 2151 #undef FLD 2152 } 2153 2154 static int 2155 model_m32rx_st (SIM_CPU *current_cpu, void *sem_arg) 2156 { 2157 #define FLD(f) abuf->fields.sfmt_st_plus.f 2158 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2159 const IDESC * UNUSED idesc = abuf->idesc; 2160 int cycles = 0; 2161 { 2162 int referenced = 0; 2163 int UNUSED insn_referenced = abuf->written; 2164 INT in_src1 = 0; 2165 INT in_src2 = 0; 2166 in_src1 = FLD (in_src1); 2167 in_src2 = FLD (in_src2); 2168 referenced |= 1 << 0; 2169 referenced |= 1 << 1; 2170 cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2171 } 2172 return cycles; 2173 #undef FLD 2174 } 2175 2176 static int 2177 model_m32rx_st_d (SIM_CPU *current_cpu, void *sem_arg) 2178 { 2179 #define FLD(f) abuf->fields.sfmt_st_d.f 2180 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2181 const IDESC * UNUSED idesc = abuf->idesc; 2182 int cycles = 0; 2183 { 2184 int referenced = 0; 2185 int UNUSED insn_referenced = abuf->written; 2186 INT in_src1 = 0; 2187 INT in_src2 = 0; 2188 in_src1 = FLD (in_src1); 2189 in_src2 = FLD (in_src2); 2190 referenced |= 1 << 0; 2191 referenced |= 1 << 1; 2192 cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2193 } 2194 return cycles; 2195 #undef FLD 2196 } 2197 2198 static int 2199 model_m32rx_stb (SIM_CPU *current_cpu, void *sem_arg) 2200 { 2201 #define FLD(f) abuf->fields.sfmt_st_plus.f 2202 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2203 const IDESC * UNUSED idesc = abuf->idesc; 2204 int cycles = 0; 2205 { 2206 int referenced = 0; 2207 int UNUSED insn_referenced = abuf->written; 2208 INT in_src1 = 0; 2209 INT in_src2 = 0; 2210 in_src1 = FLD (in_src1); 2211 in_src2 = FLD (in_src2); 2212 referenced |= 1 << 0; 2213 referenced |= 1 << 1; 2214 cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2215 } 2216 return cycles; 2217 #undef FLD 2218 } 2219 2220 static int 2221 model_m32rx_stb_d (SIM_CPU *current_cpu, void *sem_arg) 2222 { 2223 #define FLD(f) abuf->fields.sfmt_st_d.f 2224 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2225 const IDESC * UNUSED idesc = abuf->idesc; 2226 int cycles = 0; 2227 { 2228 int referenced = 0; 2229 int UNUSED insn_referenced = abuf->written; 2230 INT in_src1 = 0; 2231 INT in_src2 = 0; 2232 in_src1 = FLD (in_src1); 2233 in_src2 = FLD (in_src2); 2234 referenced |= 1 << 0; 2235 referenced |= 1 << 1; 2236 cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2237 } 2238 return cycles; 2239 #undef FLD 2240 } 2241 2242 static int 2243 model_m32rx_sth (SIM_CPU *current_cpu, void *sem_arg) 2244 { 2245 #define FLD(f) abuf->fields.sfmt_st_plus.f 2246 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2247 const IDESC * UNUSED idesc = abuf->idesc; 2248 int cycles = 0; 2249 { 2250 int referenced = 0; 2251 int UNUSED insn_referenced = abuf->written; 2252 INT in_src1 = 0; 2253 INT in_src2 = 0; 2254 in_src1 = FLD (in_src1); 2255 in_src2 = FLD (in_src2); 2256 referenced |= 1 << 0; 2257 referenced |= 1 << 1; 2258 cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2259 } 2260 return cycles; 2261 #undef FLD 2262 } 2263 2264 static int 2265 model_m32rx_sth_d (SIM_CPU *current_cpu, void *sem_arg) 2266 { 2267 #define FLD(f) abuf->fields.sfmt_st_d.f 2268 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2269 const IDESC * UNUSED idesc = abuf->idesc; 2270 int cycles = 0; 2271 { 2272 int referenced = 0; 2273 int UNUSED insn_referenced = abuf->written; 2274 INT in_src1 = 0; 2275 INT in_src2 = 0; 2276 in_src1 = FLD (in_src1); 2277 in_src2 = FLD (in_src2); 2278 referenced |= 1 << 0; 2279 referenced |= 1 << 1; 2280 cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2281 } 2282 return cycles; 2283 #undef FLD 2284 } 2285 2286 static int 2287 model_m32rx_st_plus (SIM_CPU *current_cpu, void *sem_arg) 2288 { 2289 #define FLD(f) abuf->fields.sfmt_st_plus.f 2290 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2291 const IDESC * UNUSED idesc = abuf->idesc; 2292 int cycles = 0; 2293 { 2294 int referenced = 0; 2295 int UNUSED insn_referenced = abuf->written; 2296 INT in_src1 = 0; 2297 INT in_src2 = 0; 2298 in_src1 = FLD (in_src1); 2299 in_src2 = FLD (in_src2); 2300 referenced |= 1 << 0; 2301 referenced |= 1 << 1; 2302 cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2303 } 2304 { 2305 int referenced = 0; 2306 int UNUSED insn_referenced = abuf->written; 2307 INT in_sr = -1; 2308 INT in_dr = -1; 2309 INT out_dr = -1; 2310 in_dr = FLD (in_src2); 2311 out_dr = FLD (out_src2); 2312 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr); 2313 } 2314 return cycles; 2315 #undef FLD 2316 } 2317 2318 static int 2319 model_m32rx_sth_plus (SIM_CPU *current_cpu, void *sem_arg) 2320 { 2321 #define FLD(f) abuf->fields.sfmt_st_plus.f 2322 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2323 const IDESC * UNUSED idesc = abuf->idesc; 2324 int cycles = 0; 2325 { 2326 int referenced = 0; 2327 int UNUSED insn_referenced = abuf->written; 2328 INT in_src1 = 0; 2329 INT in_src2 = 0; 2330 in_src1 = FLD (in_src1); 2331 in_src2 = FLD (in_src2); 2332 referenced |= 1 << 0; 2333 referenced |= 1 << 1; 2334 cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2335 } 2336 { 2337 int referenced = 0; 2338 int UNUSED insn_referenced = abuf->written; 2339 INT in_sr = -1; 2340 INT in_dr = -1; 2341 INT out_dr = -1; 2342 in_dr = FLD (in_src2); 2343 out_dr = FLD (out_src2); 2344 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr); 2345 } 2346 return cycles; 2347 #undef FLD 2348 } 2349 2350 static int 2351 model_m32rx_stb_plus (SIM_CPU *current_cpu, void *sem_arg) 2352 { 2353 #define FLD(f) abuf->fields.sfmt_st_plus.f 2354 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2355 const IDESC * UNUSED idesc = abuf->idesc; 2356 int cycles = 0; 2357 { 2358 int referenced = 0; 2359 int UNUSED insn_referenced = abuf->written; 2360 INT in_src1 = 0; 2361 INT in_src2 = 0; 2362 in_src1 = FLD (in_src1); 2363 in_src2 = FLD (in_src2); 2364 referenced |= 1 << 0; 2365 referenced |= 1 << 1; 2366 cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2367 } 2368 { 2369 int referenced = 0; 2370 int UNUSED insn_referenced = abuf->written; 2371 INT in_sr = -1; 2372 INT in_dr = -1; 2373 INT out_dr = -1; 2374 in_dr = FLD (in_src2); 2375 out_dr = FLD (out_src2); 2376 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr); 2377 } 2378 return cycles; 2379 #undef FLD 2380 } 2381 2382 static int 2383 model_m32rx_st_minus (SIM_CPU *current_cpu, void *sem_arg) 2384 { 2385 #define FLD(f) abuf->fields.sfmt_st_plus.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_src1 = 0; 2393 INT in_src2 = 0; 2394 in_src1 = FLD (in_src1); 2395 in_src2 = FLD (in_src2); 2396 referenced |= 1 << 0; 2397 referenced |= 1 << 1; 2398 cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2399 } 2400 { 2401 int referenced = 0; 2402 int UNUSED insn_referenced = abuf->written; 2403 INT in_sr = -1; 2404 INT in_dr = -1; 2405 INT out_dr = -1; 2406 in_dr = FLD (in_src2); 2407 out_dr = FLD (out_src2); 2408 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr); 2409 } 2410 return cycles; 2411 #undef FLD 2412 } 2413 2414 static int 2415 model_m32rx_sub (SIM_CPU *current_cpu, void *sem_arg) 2416 { 2417 #define FLD(f) abuf->fields.sfmt_add.f 2418 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2419 const IDESC * UNUSED idesc = abuf->idesc; 2420 int cycles = 0; 2421 { 2422 int referenced = 0; 2423 int UNUSED insn_referenced = abuf->written; 2424 INT in_sr = -1; 2425 INT in_dr = -1; 2426 INT out_dr = -1; 2427 in_sr = FLD (in_sr); 2428 in_dr = FLD (in_dr); 2429 out_dr = FLD (out_dr); 2430 referenced |= 1 << 0; 2431 referenced |= 1 << 1; 2432 referenced |= 1 << 2; 2433 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2434 } 2435 return cycles; 2436 #undef FLD 2437 } 2438 2439 static int 2440 model_m32rx_subv (SIM_CPU *current_cpu, void *sem_arg) 2441 { 2442 #define FLD(f) abuf->fields.sfmt_add.f 2443 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2444 const IDESC * UNUSED idesc = abuf->idesc; 2445 int cycles = 0; 2446 { 2447 int referenced = 0; 2448 int UNUSED insn_referenced = abuf->written; 2449 INT in_sr = -1; 2450 INT in_dr = -1; 2451 INT out_dr = -1; 2452 in_sr = FLD (in_sr); 2453 in_dr = FLD (in_dr); 2454 out_dr = FLD (out_dr); 2455 referenced |= 1 << 0; 2456 referenced |= 1 << 1; 2457 referenced |= 1 << 2; 2458 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2459 } 2460 return cycles; 2461 #undef FLD 2462 } 2463 2464 static int 2465 model_m32rx_subx (SIM_CPU *current_cpu, void *sem_arg) 2466 { 2467 #define FLD(f) abuf->fields.sfmt_add.f 2468 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2469 const IDESC * UNUSED idesc = abuf->idesc; 2470 int cycles = 0; 2471 { 2472 int referenced = 0; 2473 int UNUSED insn_referenced = abuf->written; 2474 INT in_sr = -1; 2475 INT in_dr = -1; 2476 INT out_dr = -1; 2477 in_sr = FLD (in_sr); 2478 in_dr = FLD (in_dr); 2479 out_dr = FLD (out_dr); 2480 referenced |= 1 << 0; 2481 referenced |= 1 << 1; 2482 referenced |= 1 << 2; 2483 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2484 } 2485 return cycles; 2486 #undef FLD 2487 } 2488 2489 static int 2490 model_m32rx_trap (SIM_CPU *current_cpu, void *sem_arg) 2491 { 2492 #define FLD(f) abuf->fields.sfmt_trap.f 2493 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2494 const IDESC * UNUSED idesc = abuf->idesc; 2495 int cycles = 0; 2496 { 2497 int referenced = 0; 2498 int UNUSED insn_referenced = abuf->written; 2499 INT in_sr = -1; 2500 INT in_dr = -1; 2501 INT out_dr = -1; 2502 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2503 } 2504 return cycles; 2505 #undef FLD 2506 } 2507 2508 static int 2509 model_m32rx_unlock (SIM_CPU *current_cpu, void *sem_arg) 2510 { 2511 #define FLD(f) abuf->fields.sfmt_st_plus.f 2512 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2513 const IDESC * UNUSED idesc = abuf->idesc; 2514 int cycles = 0; 2515 { 2516 int referenced = 0; 2517 int UNUSED insn_referenced = abuf->written; 2518 INT in_sr = 0; 2519 INT out_dr = 0; 2520 cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 2521 } 2522 return cycles; 2523 #undef FLD 2524 } 2525 2526 static int 2527 model_m32rx_satb (SIM_CPU *current_cpu, void *sem_arg) 2528 { 2529 #define FLD(f) abuf->fields.sfmt_ld_plus.f 2530 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2531 const IDESC * UNUSED idesc = abuf->idesc; 2532 int cycles = 0; 2533 { 2534 int referenced = 0; 2535 int UNUSED insn_referenced = abuf->written; 2536 INT in_sr = -1; 2537 INT in_dr = -1; 2538 INT out_dr = -1; 2539 in_sr = FLD (in_sr); 2540 out_dr = FLD (out_dr); 2541 referenced |= 1 << 0; 2542 referenced |= 1 << 2; 2543 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2544 } 2545 return cycles; 2546 #undef FLD 2547 } 2548 2549 static int 2550 model_m32rx_sath (SIM_CPU *current_cpu, void *sem_arg) 2551 { 2552 #define FLD(f) abuf->fields.sfmt_ld_plus.f 2553 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2554 const IDESC * UNUSED idesc = abuf->idesc; 2555 int cycles = 0; 2556 { 2557 int referenced = 0; 2558 int UNUSED insn_referenced = abuf->written; 2559 INT in_sr = -1; 2560 INT in_dr = -1; 2561 INT out_dr = -1; 2562 in_sr = FLD (in_sr); 2563 out_dr = FLD (out_dr); 2564 referenced |= 1 << 0; 2565 referenced |= 1 << 2; 2566 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2567 } 2568 return cycles; 2569 #undef FLD 2570 } 2571 2572 static int 2573 model_m32rx_sat (SIM_CPU *current_cpu, void *sem_arg) 2574 { 2575 #define FLD(f) abuf->fields.sfmt_ld_plus.f 2576 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2577 const IDESC * UNUSED idesc = abuf->idesc; 2578 int cycles = 0; 2579 { 2580 int referenced = 0; 2581 int UNUSED insn_referenced = abuf->written; 2582 INT in_sr = -1; 2583 INT in_dr = -1; 2584 INT out_dr = -1; 2585 in_sr = FLD (in_sr); 2586 out_dr = FLD (out_dr); 2587 if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 2588 referenced |= 1 << 2; 2589 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2590 } 2591 return cycles; 2592 #undef FLD 2593 } 2594 2595 static int 2596 model_m32rx_pcmpbz (SIM_CPU *current_cpu, void *sem_arg) 2597 { 2598 #define FLD(f) abuf->fields.sfmt_st_plus.f 2599 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2600 const IDESC * UNUSED idesc = abuf->idesc; 2601 int cycles = 0; 2602 { 2603 int referenced = 0; 2604 int UNUSED insn_referenced = abuf->written; 2605 INT in_src1 = -1; 2606 INT in_src2 = -1; 2607 in_src2 = FLD (in_src2); 2608 referenced |= 1 << 1; 2609 cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2610 } 2611 return cycles; 2612 #undef FLD 2613 } 2614 2615 static int 2616 model_m32rx_sadd (SIM_CPU *current_cpu, void *sem_arg) 2617 { 2618 #define FLD(f) abuf->fields.sfmt_empty.f 2619 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2620 const IDESC * UNUSED idesc = abuf->idesc; 2621 int cycles = 0; 2622 { 2623 int referenced = 0; 2624 int UNUSED insn_referenced = abuf->written; 2625 INT in_src1 = -1; 2626 INT in_src2 = -1; 2627 cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2628 } 2629 return cycles; 2630 #undef FLD 2631 } 2632 2633 static int 2634 model_m32rx_macwu1 (SIM_CPU *current_cpu, void *sem_arg) 2635 { 2636 #define FLD(f) abuf->fields.sfmt_st_plus.f 2637 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2638 const IDESC * UNUSED idesc = abuf->idesc; 2639 int cycles = 0; 2640 { 2641 int referenced = 0; 2642 int UNUSED insn_referenced = abuf->written; 2643 INT in_src1 = -1; 2644 INT in_src2 = -1; 2645 in_src1 = FLD (in_src1); 2646 in_src2 = FLD (in_src2); 2647 referenced |= 1 << 0; 2648 referenced |= 1 << 1; 2649 cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2650 } 2651 return cycles; 2652 #undef FLD 2653 } 2654 2655 static int 2656 model_m32rx_msblo (SIM_CPU *current_cpu, void *sem_arg) 2657 { 2658 #define FLD(f) abuf->fields.sfmt_st_plus.f 2659 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2660 const IDESC * UNUSED idesc = abuf->idesc; 2661 int cycles = 0; 2662 { 2663 int referenced = 0; 2664 int UNUSED insn_referenced = abuf->written; 2665 INT in_src1 = -1; 2666 INT in_src2 = -1; 2667 in_src1 = FLD (in_src1); 2668 in_src2 = FLD (in_src2); 2669 referenced |= 1 << 0; 2670 referenced |= 1 << 1; 2671 cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2672 } 2673 return cycles; 2674 #undef FLD 2675 } 2676 2677 static int 2678 model_m32rx_mulwu1 (SIM_CPU *current_cpu, void *sem_arg) 2679 { 2680 #define FLD(f) abuf->fields.sfmt_st_plus.f 2681 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2682 const IDESC * UNUSED idesc = abuf->idesc; 2683 int cycles = 0; 2684 { 2685 int referenced = 0; 2686 int UNUSED insn_referenced = abuf->written; 2687 INT in_src1 = -1; 2688 INT in_src2 = -1; 2689 in_src1 = FLD (in_src1); 2690 in_src2 = FLD (in_src2); 2691 referenced |= 1 << 0; 2692 referenced |= 1 << 1; 2693 cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2694 } 2695 return cycles; 2696 #undef FLD 2697 } 2698 2699 static int 2700 model_m32rx_maclh1 (SIM_CPU *current_cpu, void *sem_arg) 2701 { 2702 #define FLD(f) abuf->fields.sfmt_st_plus.f 2703 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2704 const IDESC * UNUSED idesc = abuf->idesc; 2705 int cycles = 0; 2706 { 2707 int referenced = 0; 2708 int UNUSED insn_referenced = abuf->written; 2709 INT in_src1 = -1; 2710 INT in_src2 = -1; 2711 in_src1 = FLD (in_src1); 2712 in_src2 = FLD (in_src2); 2713 referenced |= 1 << 0; 2714 referenced |= 1 << 1; 2715 cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 2716 } 2717 return cycles; 2718 #undef FLD 2719 } 2720 2721 static int 2722 model_m32rx_sc (SIM_CPU *current_cpu, void *sem_arg) 2723 { 2724 #define FLD(f) abuf->fields.sfmt_empty.f 2725 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2726 const IDESC * UNUSED idesc = abuf->idesc; 2727 int cycles = 0; 2728 { 2729 int referenced = 0; 2730 int UNUSED insn_referenced = abuf->written; 2731 INT in_sr = -1; 2732 INT in_dr = -1; 2733 INT out_dr = -1; 2734 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2735 } 2736 return cycles; 2737 #undef FLD 2738 } 2739 2740 static int 2741 model_m32rx_snc (SIM_CPU *current_cpu, void *sem_arg) 2742 { 2743 #define FLD(f) abuf->fields.sfmt_empty.f 2744 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2745 const IDESC * UNUSED idesc = abuf->idesc; 2746 int cycles = 0; 2747 { 2748 int referenced = 0; 2749 int UNUSED insn_referenced = abuf->written; 2750 INT in_sr = -1; 2751 INT in_dr = -1; 2752 INT out_dr = -1; 2753 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2754 } 2755 return cycles; 2756 #undef FLD 2757 } 2758 2759 static int 2760 model_m32rx_clrpsw (SIM_CPU *current_cpu, void *sem_arg) 2761 { 2762 #define FLD(f) abuf->fields.sfmt_clrpsw.f 2763 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2764 const IDESC * UNUSED idesc = abuf->idesc; 2765 int cycles = 0; 2766 { 2767 int referenced = 0; 2768 int UNUSED insn_referenced = abuf->written; 2769 INT in_sr = -1; 2770 INT in_dr = -1; 2771 INT out_dr = -1; 2772 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2773 } 2774 return cycles; 2775 #undef FLD 2776 } 2777 2778 static int 2779 model_m32rx_setpsw (SIM_CPU *current_cpu, void *sem_arg) 2780 { 2781 #define FLD(f) abuf->fields.sfmt_clrpsw.f 2782 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2783 const IDESC * UNUSED idesc = abuf->idesc; 2784 int cycles = 0; 2785 { 2786 int referenced = 0; 2787 int UNUSED insn_referenced = abuf->written; 2788 INT in_sr = -1; 2789 INT in_dr = -1; 2790 INT out_dr = -1; 2791 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2792 } 2793 return cycles; 2794 #undef FLD 2795 } 2796 2797 static int 2798 model_m32rx_bset (SIM_CPU *current_cpu, void *sem_arg) 2799 { 2800 #define FLD(f) abuf->fields.sfmt_bset.f 2801 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2802 const IDESC * UNUSED idesc = abuf->idesc; 2803 int cycles = 0; 2804 { 2805 int referenced = 0; 2806 int UNUSED insn_referenced = abuf->written; 2807 INT in_sr = -1; 2808 INT in_dr = -1; 2809 INT out_dr = -1; 2810 in_sr = FLD (in_sr); 2811 referenced |= 1 << 0; 2812 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2813 } 2814 return cycles; 2815 #undef FLD 2816 } 2817 2818 static int 2819 model_m32rx_bclr (SIM_CPU *current_cpu, void *sem_arg) 2820 { 2821 #define FLD(f) abuf->fields.sfmt_bset.f 2822 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2823 const IDESC * UNUSED idesc = abuf->idesc; 2824 int cycles = 0; 2825 { 2826 int referenced = 0; 2827 int UNUSED insn_referenced = abuf->written; 2828 INT in_sr = -1; 2829 INT in_dr = -1; 2830 INT out_dr = -1; 2831 in_sr = FLD (in_sr); 2832 referenced |= 1 << 0; 2833 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2834 } 2835 return cycles; 2836 #undef FLD 2837 } 2838 2839 static int 2840 model_m32rx_btst (SIM_CPU *current_cpu, void *sem_arg) 2841 { 2842 #define FLD(f) abuf->fields.sfmt_bset.f 2843 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2844 const IDESC * UNUSED idesc = abuf->idesc; 2845 int cycles = 0; 2846 { 2847 int referenced = 0; 2848 int UNUSED insn_referenced = abuf->written; 2849 INT in_sr = -1; 2850 INT in_dr = -1; 2851 INT out_dr = -1; 2852 in_sr = FLD (in_sr); 2853 referenced |= 1 << 0; 2854 cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2855 } 2856 return cycles; 2857 #undef FLD 2858 } 2859 2860 /* We assume UNIT_NONE == 0 because the tables don't always terminate 2861 entries with it. */ 2862 2863 /* Model timing data for `m32rx'. */ 2864 2865 static const INSN_TIMING m32rx_timing[] = { 2866 { M32RXF_INSN_X_INVALID, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2867 { M32RXF_INSN_X_AFTER, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2868 { M32RXF_INSN_X_BEFORE, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2869 { M32RXF_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2870 { M32RXF_INSN_X_CHAIN, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2871 { M32RXF_INSN_X_BEGIN, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2872 { M32RXF_INSN_ADD, model_m32rx_add, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2873 { M32RXF_INSN_ADD3, model_m32rx_add3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2874 { M32RXF_INSN_AND, model_m32rx_and, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2875 { M32RXF_INSN_AND3, model_m32rx_and3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2876 { M32RXF_INSN_OR, model_m32rx_or, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2877 { M32RXF_INSN_OR3, model_m32rx_or3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2878 { M32RXF_INSN_XOR, model_m32rx_xor, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2879 { M32RXF_INSN_XOR3, model_m32rx_xor3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2880 { M32RXF_INSN_ADDI, model_m32rx_addi, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2881 { M32RXF_INSN_ADDV, model_m32rx_addv, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2882 { M32RXF_INSN_ADDV3, model_m32rx_addv3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2883 { M32RXF_INSN_ADDX, model_m32rx_addx, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2884 { M32RXF_INSN_BC8, model_m32rx_bc8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2885 { M32RXF_INSN_BC24, model_m32rx_bc24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2886 { M32RXF_INSN_BEQ, model_m32rx_beq, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } }, 2887 { M32RXF_INSN_BEQZ, model_m32rx_beqz, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } }, 2888 { M32RXF_INSN_BGEZ, model_m32rx_bgez, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } }, 2889 { M32RXF_INSN_BGTZ, model_m32rx_bgtz, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } }, 2890 { M32RXF_INSN_BLEZ, model_m32rx_blez, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } }, 2891 { M32RXF_INSN_BLTZ, model_m32rx_bltz, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } }, 2892 { M32RXF_INSN_BNEZ, model_m32rx_bnez, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } }, 2893 { M32RXF_INSN_BL8, model_m32rx_bl8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2894 { M32RXF_INSN_BL24, model_m32rx_bl24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2895 { M32RXF_INSN_BCL8, model_m32rx_bcl8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2896 { M32RXF_INSN_BCL24, model_m32rx_bcl24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2897 { M32RXF_INSN_BNC8, model_m32rx_bnc8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2898 { M32RXF_INSN_BNC24, model_m32rx_bnc24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2899 { M32RXF_INSN_BNE, model_m32rx_bne, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } }, 2900 { M32RXF_INSN_BRA8, model_m32rx_bra8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2901 { M32RXF_INSN_BRA24, model_m32rx_bra24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2902 { M32RXF_INSN_BNCL8, model_m32rx_bncl8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2903 { M32RXF_INSN_BNCL24, model_m32rx_bncl24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2904 { M32RXF_INSN_CMP, model_m32rx_cmp, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } }, 2905 { M32RXF_INSN_CMPI, model_m32rx_cmpi, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } }, 2906 { M32RXF_INSN_CMPU, model_m32rx_cmpu, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } }, 2907 { M32RXF_INSN_CMPUI, model_m32rx_cmpui, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } }, 2908 { M32RXF_INSN_CMPEQ, model_m32rx_cmpeq, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } }, 2909 { M32RXF_INSN_CMPZ, model_m32rx_cmpz, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } }, 2910 { M32RXF_INSN_DIV, model_m32rx_div, { { (int) UNIT_M32RX_U_EXEC, 1, 37 } } }, 2911 { M32RXF_INSN_DIVU, model_m32rx_divu, { { (int) UNIT_M32RX_U_EXEC, 1, 37 } } }, 2912 { M32RXF_INSN_REM, model_m32rx_rem, { { (int) UNIT_M32RX_U_EXEC, 1, 37 } } }, 2913 { M32RXF_INSN_REMU, model_m32rx_remu, { { (int) UNIT_M32RX_U_EXEC, 1, 37 } } }, 2914 { M32RXF_INSN_DIVH, model_m32rx_divh, { { (int) UNIT_M32RX_U_EXEC, 1, 21 } } }, 2915 { M32RXF_INSN_JC, model_m32rx_jc, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2916 { M32RXF_INSN_JNC, model_m32rx_jnc, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2917 { M32RXF_INSN_JL, model_m32rx_jl, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2918 { M32RXF_INSN_JMP, model_m32rx_jmp, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } }, 2919 { M32RXF_INSN_LD, model_m32rx_ld, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } }, 2920 { M32RXF_INSN_LD_D, model_m32rx_ld_d, { { (int) UNIT_M32RX_U_LOAD, 1, 2 } } }, 2921 { M32RXF_INSN_LDB, model_m32rx_ldb, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } }, 2922 { M32RXF_INSN_LDB_D, model_m32rx_ldb_d, { { (int) UNIT_M32RX_U_LOAD, 1, 2 } } }, 2923 { M32RXF_INSN_LDH, model_m32rx_ldh, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } }, 2924 { M32RXF_INSN_LDH_D, model_m32rx_ldh_d, { { (int) UNIT_M32RX_U_LOAD, 1, 2 } } }, 2925 { M32RXF_INSN_LDUB, model_m32rx_ldub, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } }, 2926 { M32RXF_INSN_LDUB_D, model_m32rx_ldub_d, { { (int) UNIT_M32RX_U_LOAD, 1, 2 } } }, 2927 { M32RXF_INSN_LDUH, model_m32rx_lduh, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } }, 2928 { M32RXF_INSN_LDUH_D, model_m32rx_lduh_d, { { (int) UNIT_M32RX_U_LOAD, 1, 2 } } }, 2929 { M32RXF_INSN_LD_PLUS, model_m32rx_ld_plus, { { (int) UNIT_M32RX_U_LOAD, 1, 1 }, { (int) UNIT_M32RX_U_EXEC, 1, 0 } } }, 2930 { M32RXF_INSN_LD24, model_m32rx_ld24, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2931 { M32RXF_INSN_LDI8, model_m32rx_ldi8, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2932 { M32RXF_INSN_LDI16, model_m32rx_ldi16, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2933 { M32RXF_INSN_LOCK, model_m32rx_lock, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } }, 2934 { M32RXF_INSN_MACHI_A, model_m32rx_machi_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } }, 2935 { M32RXF_INSN_MACLO_A, model_m32rx_maclo_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } }, 2936 { M32RXF_INSN_MACWHI_A, model_m32rx_macwhi_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } }, 2937 { M32RXF_INSN_MACWLO_A, model_m32rx_macwlo_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } }, 2938 { M32RXF_INSN_MUL, model_m32rx_mul, { { (int) UNIT_M32RX_U_EXEC, 1, 4 } } }, 2939 { M32RXF_INSN_MULHI_A, model_m32rx_mulhi_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } }, 2940 { M32RXF_INSN_MULLO_A, model_m32rx_mullo_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } }, 2941 { M32RXF_INSN_MULWHI_A, model_m32rx_mulwhi_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } }, 2942 { M32RXF_INSN_MULWLO_A, model_m32rx_mulwlo_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } }, 2943 { M32RXF_INSN_MV, model_m32rx_mv, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2944 { M32RXF_INSN_MVFACHI_A, model_m32rx_mvfachi_a, { { (int) UNIT_M32RX_U_EXEC, 1, 2 } } }, 2945 { M32RXF_INSN_MVFACLO_A, model_m32rx_mvfaclo_a, { { (int) UNIT_M32RX_U_EXEC, 1, 2 } } }, 2946 { M32RXF_INSN_MVFACMI_A, model_m32rx_mvfacmi_a, { { (int) UNIT_M32RX_U_EXEC, 1, 2 } } }, 2947 { M32RXF_INSN_MVFC, model_m32rx_mvfc, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2948 { M32RXF_INSN_MVTACHI_A, model_m32rx_mvtachi_a, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2949 { M32RXF_INSN_MVTACLO_A, model_m32rx_mvtaclo_a, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2950 { M32RXF_INSN_MVTC, model_m32rx_mvtc, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2951 { M32RXF_INSN_NEG, model_m32rx_neg, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2952 { M32RXF_INSN_NOP, model_m32rx_nop, { { (int) UNIT_M32RX_U_EXEC, 1, 0 } } }, 2953 { M32RXF_INSN_NOT, model_m32rx_not, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2954 { M32RXF_INSN_RAC_DSI, model_m32rx_rac_dsi, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } }, 2955 { M32RXF_INSN_RACH_DSI, model_m32rx_rach_dsi, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } }, 2956 { M32RXF_INSN_RTE, model_m32rx_rte, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2957 { M32RXF_INSN_SETH, model_m32rx_seth, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2958 { M32RXF_INSN_SLL, model_m32rx_sll, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2959 { M32RXF_INSN_SLL3, model_m32rx_sll3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2960 { M32RXF_INSN_SLLI, model_m32rx_slli, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2961 { M32RXF_INSN_SRA, model_m32rx_sra, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2962 { M32RXF_INSN_SRA3, model_m32rx_sra3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2963 { M32RXF_INSN_SRAI, model_m32rx_srai, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2964 { M32RXF_INSN_SRL, model_m32rx_srl, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2965 { M32RXF_INSN_SRL3, model_m32rx_srl3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2966 { M32RXF_INSN_SRLI, model_m32rx_srli, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2967 { M32RXF_INSN_ST, model_m32rx_st, { { (int) UNIT_M32RX_U_STORE, 1, 1 } } }, 2968 { M32RXF_INSN_ST_D, model_m32rx_st_d, { { (int) UNIT_M32RX_U_STORE, 1, 2 } } }, 2969 { M32RXF_INSN_STB, model_m32rx_stb, { { (int) UNIT_M32RX_U_STORE, 1, 1 } } }, 2970 { M32RXF_INSN_STB_D, model_m32rx_stb_d, { { (int) UNIT_M32RX_U_STORE, 1, 2 } } }, 2971 { M32RXF_INSN_STH, model_m32rx_sth, { { (int) UNIT_M32RX_U_STORE, 1, 1 } } }, 2972 { M32RXF_INSN_STH_D, model_m32rx_sth_d, { { (int) UNIT_M32RX_U_STORE, 1, 2 } } }, 2973 { M32RXF_INSN_ST_PLUS, model_m32rx_st_plus, { { (int) UNIT_M32RX_U_STORE, 1, 1 }, { (int) UNIT_M32RX_U_EXEC, 1, 0 } } }, 2974 { M32RXF_INSN_STH_PLUS, model_m32rx_sth_plus, { { (int) UNIT_M32RX_U_STORE, 1, 1 }, { (int) UNIT_M32RX_U_EXEC, 1, 0 } } }, 2975 { M32RXF_INSN_STB_PLUS, model_m32rx_stb_plus, { { (int) UNIT_M32RX_U_STORE, 1, 1 }, { (int) UNIT_M32RX_U_EXEC, 1, 0 } } }, 2976 { M32RXF_INSN_ST_MINUS, model_m32rx_st_minus, { { (int) UNIT_M32RX_U_STORE, 1, 1 }, { (int) UNIT_M32RX_U_EXEC, 1, 0 } } }, 2977 { M32RXF_INSN_SUB, model_m32rx_sub, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2978 { M32RXF_INSN_SUBV, model_m32rx_subv, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2979 { M32RXF_INSN_SUBX, model_m32rx_subx, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2980 { M32RXF_INSN_TRAP, model_m32rx_trap, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2981 { M32RXF_INSN_UNLOCK, model_m32rx_unlock, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } }, 2982 { M32RXF_INSN_SATB, model_m32rx_satb, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2983 { M32RXF_INSN_SATH, model_m32rx_sath, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2984 { M32RXF_INSN_SAT, model_m32rx_sat, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2985 { M32RXF_INSN_PCMPBZ, model_m32rx_pcmpbz, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } }, 2986 { M32RXF_INSN_SADD, model_m32rx_sadd, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } }, 2987 { M32RXF_INSN_MACWU1, model_m32rx_macwu1, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } }, 2988 { M32RXF_INSN_MSBLO, model_m32rx_msblo, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } }, 2989 { M32RXF_INSN_MULWU1, model_m32rx_mulwu1, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } }, 2990 { M32RXF_INSN_MACLH1, model_m32rx_maclh1, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } }, 2991 { M32RXF_INSN_SC, model_m32rx_sc, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2992 { M32RXF_INSN_SNC, model_m32rx_snc, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2993 { M32RXF_INSN_CLRPSW, model_m32rx_clrpsw, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2994 { M32RXF_INSN_SETPSW, model_m32rx_setpsw, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2995 { M32RXF_INSN_BSET, model_m32rx_bset, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2996 { M32RXF_INSN_BCLR, model_m32rx_bclr, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2997 { M32RXF_INSN_BTST, model_m32rx_btst, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } }, 2998 }; 2999 3000 #endif /* WITH_PROFILE_MODEL_P */ 3001 3002 static void 3003 m32rx_model_init (SIM_CPU *cpu) 3004 { 3005 CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_M32RX_DATA)); 3006 } 3007 3008 #if WITH_PROFILE_MODEL_P 3009 #define TIMING_DATA(td) td 3010 #else 3011 #define TIMING_DATA(td) 0 3012 #endif 3013 3014 static const SIM_MODEL m32rx_models[] = 3015 { 3016 { "m32rx", & m32rx_mach, MODEL_M32RX, TIMING_DATA (& m32rx_timing[0]), m32rx_model_init }, 3017 { 0 } 3018 }; 3019 3020 /* The properties of this cpu's implementation. */ 3021 3022 static const SIM_MACH_IMP_PROPERTIES m32rxf_imp_properties = 3023 { 3024 sizeof (SIM_CPU), 3025 #if WITH_SCACHE 3026 sizeof (SCACHE) 3027 #else 3028 0 3029 #endif 3030 }; 3031 3032 3033 static void 3034 m32rxf_prepare_run (SIM_CPU *cpu) 3035 { 3036 if (CPU_IDESC (cpu) == NULL) 3037 m32rxf_init_idesc_table (cpu); 3038 } 3039 3040 static const CGEN_INSN * 3041 m32rxf_get_idata (SIM_CPU *cpu, int inum) 3042 { 3043 return CPU_IDESC (cpu) [inum].idata; 3044 } 3045 3046 static void 3047 m32rx_init_cpu (SIM_CPU *cpu) 3048 { 3049 CPU_REG_FETCH (cpu) = m32rxf_fetch_register; 3050 CPU_REG_STORE (cpu) = m32rxf_store_register; 3051 CPU_PC_FETCH (cpu) = m32rxf_h_pc_get; 3052 CPU_PC_STORE (cpu) = m32rxf_h_pc_set; 3053 CPU_GET_IDATA (cpu) = m32rxf_get_idata; 3054 CPU_MAX_INSNS (cpu) = M32RXF_INSN__MAX; 3055 CPU_INSN_NAME (cpu) = cgen_insn_name; 3056 CPU_FULL_ENGINE_FN (cpu) = m32rxf_engine_run_full; 3057 #if WITH_FAST 3058 CPU_FAST_ENGINE_FN (cpu) = m32rxf_engine_run_fast; 3059 #else 3060 CPU_FAST_ENGINE_FN (cpu) = m32rxf_engine_run_full; 3061 #endif 3062 } 3063 3064 const SIM_MACH m32rx_mach = 3065 { 3066 "m32rx", "m32rx", MACH_M32RX, 3067 32, 32, & m32rx_models[0], & m32rxf_imp_properties, 3068 m32rx_init_cpu, 3069 m32rxf_prepare_run 3070 }; 3071 3072