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