14e98e3e1Schristos /* Simulator model support for m32rbf. 24e98e3e1Schristos 34e98e3e1Schristos THIS FILE IS MACHINE GENERATED WITH CGEN. 44e98e3e1Schristos 5*05fa0856Schristos Copyright (C) 1996-2024 Free Software Foundation, Inc. 64e98e3e1Schristos 74e98e3e1Schristos This file is part of the GNU simulators. 84e98e3e1Schristos 94e98e3e1Schristos This file is free software; you can redistribute it and/or modify 104e98e3e1Schristos it under the terms of the GNU General Public License as published by 114e98e3e1Schristos the Free Software Foundation; either version 3, or (at your option) 124e98e3e1Schristos any later version. 134e98e3e1Schristos 144e98e3e1Schristos It is distributed in the hope that it will be useful, but WITHOUT 154e98e3e1Schristos ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 164e98e3e1Schristos or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 174e98e3e1Schristos License for more details. 184e98e3e1Schristos 194e98e3e1Schristos You should have received a copy of the GNU General Public License along 20*05fa0856Schristos with this program; if not, write to the Free Software Foundation, Inc., 21*05fa0856Schristos 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. 224e98e3e1Schristos 234e98e3e1Schristos */ 244e98e3e1Schristos 254e98e3e1Schristos #define WANT_CPU m32rbf 264e98e3e1Schristos #define WANT_CPU_M32RBF 274e98e3e1Schristos 284e98e3e1Schristos #include "sim-main.h" 294e98e3e1Schristos 304e98e3e1Schristos /* The profiling data is recorded here, but is accessed via the profiling 314e98e3e1Schristos mechanism. After all, this is information for profiling. */ 324e98e3e1Schristos 334e98e3e1Schristos #if WITH_PROFILE_MODEL_P 344e98e3e1Schristos 354e98e3e1Schristos /* Model handlers for each insn. */ 364e98e3e1Schristos 374e98e3e1Schristos static int 384e98e3e1Schristos model_m32r_d_add (SIM_CPU *current_cpu, void *sem_arg) 394e98e3e1Schristos { 404e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 414e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 424e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 434e98e3e1Schristos int cycles = 0; 444e98e3e1Schristos { 454e98e3e1Schristos int referenced = 0; 464e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 474e98e3e1Schristos INT in_sr = -1; 484e98e3e1Schristos INT in_dr = -1; 494e98e3e1Schristos INT out_dr = -1; 504e98e3e1Schristos in_sr = FLD (in_sr); 514e98e3e1Schristos in_dr = FLD (in_dr); 524e98e3e1Schristos out_dr = FLD (out_dr); 534e98e3e1Schristos referenced |= 1 << 0; 544e98e3e1Schristos referenced |= 1 << 1; 554e98e3e1Schristos referenced |= 1 << 2; 564e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 574e98e3e1Schristos } 584e98e3e1Schristos return cycles; 594e98e3e1Schristos #undef FLD 604e98e3e1Schristos } 614e98e3e1Schristos 624e98e3e1Schristos static int 634e98e3e1Schristos model_m32r_d_add3 (SIM_CPU *current_cpu, void *sem_arg) 644e98e3e1Schristos { 654e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 664e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 674e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 684e98e3e1Schristos int cycles = 0; 694e98e3e1Schristos { 704e98e3e1Schristos int referenced = 0; 714e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 724e98e3e1Schristos INT in_sr = -1; 734e98e3e1Schristos INT in_dr = -1; 744e98e3e1Schristos INT out_dr = -1; 754e98e3e1Schristos in_sr = FLD (in_sr); 764e98e3e1Schristos out_dr = FLD (out_dr); 774e98e3e1Schristos referenced |= 1 << 0; 784e98e3e1Schristos referenced |= 1 << 2; 794e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 804e98e3e1Schristos } 814e98e3e1Schristos return cycles; 824e98e3e1Schristos #undef FLD 834e98e3e1Schristos } 844e98e3e1Schristos 854e98e3e1Schristos static int 864e98e3e1Schristos model_m32r_d_and (SIM_CPU *current_cpu, void *sem_arg) 874e98e3e1Schristos { 884e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 894e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 904e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 914e98e3e1Schristos int cycles = 0; 924e98e3e1Schristos { 934e98e3e1Schristos int referenced = 0; 944e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 954e98e3e1Schristos INT in_sr = -1; 964e98e3e1Schristos INT in_dr = -1; 974e98e3e1Schristos INT out_dr = -1; 984e98e3e1Schristos in_sr = FLD (in_sr); 994e98e3e1Schristos in_dr = FLD (in_dr); 1004e98e3e1Schristos out_dr = FLD (out_dr); 1014e98e3e1Schristos referenced |= 1 << 0; 1024e98e3e1Schristos referenced |= 1 << 1; 1034e98e3e1Schristos referenced |= 1 << 2; 1044e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1054e98e3e1Schristos } 1064e98e3e1Schristos return cycles; 1074e98e3e1Schristos #undef FLD 1084e98e3e1Schristos } 1094e98e3e1Schristos 1104e98e3e1Schristos static int 1114e98e3e1Schristos model_m32r_d_and3 (SIM_CPU *current_cpu, void *sem_arg) 1124e98e3e1Schristos { 1134e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_and3.f 1144e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1154e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 1164e98e3e1Schristos int cycles = 0; 1174e98e3e1Schristos { 1184e98e3e1Schristos int referenced = 0; 1194e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 1204e98e3e1Schristos INT in_sr = -1; 1214e98e3e1Schristos INT in_dr = -1; 1224e98e3e1Schristos INT out_dr = -1; 1234e98e3e1Schristos in_sr = FLD (in_sr); 1244e98e3e1Schristos out_dr = FLD (out_dr); 1254e98e3e1Schristos referenced |= 1 << 0; 1264e98e3e1Schristos referenced |= 1 << 2; 1274e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1284e98e3e1Schristos } 1294e98e3e1Schristos return cycles; 1304e98e3e1Schristos #undef FLD 1314e98e3e1Schristos } 1324e98e3e1Schristos 1334e98e3e1Schristos static int 1344e98e3e1Schristos model_m32r_d_or (SIM_CPU *current_cpu, void *sem_arg) 1354e98e3e1Schristos { 1364e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 1374e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1384e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 1394e98e3e1Schristos int cycles = 0; 1404e98e3e1Schristos { 1414e98e3e1Schristos int referenced = 0; 1424e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 1434e98e3e1Schristos INT in_sr = -1; 1444e98e3e1Schristos INT in_dr = -1; 1454e98e3e1Schristos INT out_dr = -1; 1464e98e3e1Schristos in_sr = FLD (in_sr); 1474e98e3e1Schristos in_dr = FLD (in_dr); 1484e98e3e1Schristos out_dr = FLD (out_dr); 1494e98e3e1Schristos referenced |= 1 << 0; 1504e98e3e1Schristos referenced |= 1 << 1; 1514e98e3e1Schristos referenced |= 1 << 2; 1524e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1534e98e3e1Schristos } 1544e98e3e1Schristos return cycles; 1554e98e3e1Schristos #undef FLD 1564e98e3e1Schristos } 1574e98e3e1Schristos 1584e98e3e1Schristos static int 1594e98e3e1Schristos model_m32r_d_or3 (SIM_CPU *current_cpu, void *sem_arg) 1604e98e3e1Schristos { 1614e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_and3.f 1624e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1634e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 1644e98e3e1Schristos int cycles = 0; 1654e98e3e1Schristos { 1664e98e3e1Schristos int referenced = 0; 1674e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 1684e98e3e1Schristos INT in_sr = -1; 1694e98e3e1Schristos INT in_dr = -1; 1704e98e3e1Schristos INT out_dr = -1; 1714e98e3e1Schristos in_sr = FLD (in_sr); 1724e98e3e1Schristos out_dr = FLD (out_dr); 1734e98e3e1Schristos referenced |= 1 << 0; 1744e98e3e1Schristos referenced |= 1 << 2; 1754e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 1764e98e3e1Schristos } 1774e98e3e1Schristos return cycles; 1784e98e3e1Schristos #undef FLD 1794e98e3e1Schristos } 1804e98e3e1Schristos 1814e98e3e1Schristos static int 1824e98e3e1Schristos model_m32r_d_xor (SIM_CPU *current_cpu, void *sem_arg) 1834e98e3e1Schristos { 1844e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 1854e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 1864e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 1874e98e3e1Schristos int cycles = 0; 1884e98e3e1Schristos { 1894e98e3e1Schristos int referenced = 0; 1904e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 1914e98e3e1Schristos INT in_sr = -1; 1924e98e3e1Schristos INT in_dr = -1; 1934e98e3e1Schristos INT out_dr = -1; 1944e98e3e1Schristos in_sr = FLD (in_sr); 1954e98e3e1Schristos in_dr = FLD (in_dr); 1964e98e3e1Schristos out_dr = FLD (out_dr); 1974e98e3e1Schristos referenced |= 1 << 0; 1984e98e3e1Schristos referenced |= 1 << 1; 1994e98e3e1Schristos referenced |= 1 << 2; 2004e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2014e98e3e1Schristos } 2024e98e3e1Schristos return cycles; 2034e98e3e1Schristos #undef FLD 2044e98e3e1Schristos } 2054e98e3e1Schristos 2064e98e3e1Schristos static int 2074e98e3e1Schristos model_m32r_d_xor3 (SIM_CPU *current_cpu, void *sem_arg) 2084e98e3e1Schristos { 2094e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_and3.f 2104e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2114e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 2124e98e3e1Schristos int cycles = 0; 2134e98e3e1Schristos { 2144e98e3e1Schristos int referenced = 0; 2154e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 2164e98e3e1Schristos INT in_sr = -1; 2174e98e3e1Schristos INT in_dr = -1; 2184e98e3e1Schristos INT out_dr = -1; 2194e98e3e1Schristos in_sr = FLD (in_sr); 2204e98e3e1Schristos out_dr = FLD (out_dr); 2214e98e3e1Schristos referenced |= 1 << 0; 2224e98e3e1Schristos referenced |= 1 << 2; 2234e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2244e98e3e1Schristos } 2254e98e3e1Schristos return cycles; 2264e98e3e1Schristos #undef FLD 2274e98e3e1Schristos } 2284e98e3e1Schristos 2294e98e3e1Schristos static int 2304e98e3e1Schristos model_m32r_d_addi (SIM_CPU *current_cpu, void *sem_arg) 2314e98e3e1Schristos { 2324e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_addi.f 2334e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2344e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 2354e98e3e1Schristos int cycles = 0; 2364e98e3e1Schristos { 2374e98e3e1Schristos int referenced = 0; 2384e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 2394e98e3e1Schristos INT in_sr = -1; 2404e98e3e1Schristos INT in_dr = -1; 2414e98e3e1Schristos INT out_dr = -1; 2424e98e3e1Schristos in_dr = FLD (in_dr); 2434e98e3e1Schristos out_dr = FLD (out_dr); 2444e98e3e1Schristos referenced |= 1 << 1; 2454e98e3e1Schristos referenced |= 1 << 2; 2464e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2474e98e3e1Schristos } 2484e98e3e1Schristos return cycles; 2494e98e3e1Schristos #undef FLD 2504e98e3e1Schristos } 2514e98e3e1Schristos 2524e98e3e1Schristos static int 2534e98e3e1Schristos model_m32r_d_addv (SIM_CPU *current_cpu, void *sem_arg) 2544e98e3e1Schristos { 2554e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 2564e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2574e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 2584e98e3e1Schristos int cycles = 0; 2594e98e3e1Schristos { 2604e98e3e1Schristos int referenced = 0; 2614e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 2624e98e3e1Schristos INT in_sr = -1; 2634e98e3e1Schristos INT in_dr = -1; 2644e98e3e1Schristos INT out_dr = -1; 2654e98e3e1Schristos in_sr = FLD (in_sr); 2664e98e3e1Schristos in_dr = FLD (in_dr); 2674e98e3e1Schristos out_dr = FLD (out_dr); 2684e98e3e1Schristos referenced |= 1 << 0; 2694e98e3e1Schristos referenced |= 1 << 1; 2704e98e3e1Schristos referenced |= 1 << 2; 2714e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2724e98e3e1Schristos } 2734e98e3e1Schristos return cycles; 2744e98e3e1Schristos #undef FLD 2754e98e3e1Schristos } 2764e98e3e1Schristos 2774e98e3e1Schristos static int 2784e98e3e1Schristos model_m32r_d_addv3 (SIM_CPU *current_cpu, void *sem_arg) 2794e98e3e1Schristos { 2804e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 2814e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 2824e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 2834e98e3e1Schristos int cycles = 0; 2844e98e3e1Schristos { 2854e98e3e1Schristos int referenced = 0; 2864e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 2874e98e3e1Schristos INT in_sr = -1; 2884e98e3e1Schristos INT in_dr = -1; 2894e98e3e1Schristos INT out_dr = -1; 2904e98e3e1Schristos in_sr = FLD (in_sr); 2914e98e3e1Schristos out_dr = FLD (out_dr); 2924e98e3e1Schristos referenced |= 1 << 0; 2934e98e3e1Schristos referenced |= 1 << 2; 2944e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 2954e98e3e1Schristos } 2964e98e3e1Schristos return cycles; 2974e98e3e1Schristos #undef FLD 2984e98e3e1Schristos } 2994e98e3e1Schristos 3004e98e3e1Schristos static int 3014e98e3e1Schristos model_m32r_d_addx (SIM_CPU *current_cpu, void *sem_arg) 3024e98e3e1Schristos { 3034e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 3044e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3054e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 3064e98e3e1Schristos int cycles = 0; 3074e98e3e1Schristos { 3084e98e3e1Schristos int referenced = 0; 3094e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 3104e98e3e1Schristos INT in_sr = -1; 3114e98e3e1Schristos INT in_dr = -1; 3124e98e3e1Schristos INT out_dr = -1; 3134e98e3e1Schristos in_sr = FLD (in_sr); 3144e98e3e1Schristos in_dr = FLD (in_dr); 3154e98e3e1Schristos out_dr = FLD (out_dr); 3164e98e3e1Schristos referenced |= 1 << 0; 3174e98e3e1Schristos referenced |= 1 << 1; 3184e98e3e1Schristos referenced |= 1 << 2; 3194e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 3204e98e3e1Schristos } 3214e98e3e1Schristos return cycles; 3224e98e3e1Schristos #undef FLD 3234e98e3e1Schristos } 3244e98e3e1Schristos 3254e98e3e1Schristos static int 3264e98e3e1Schristos model_m32r_d_bc8 (SIM_CPU *current_cpu, void *sem_arg) 3274e98e3e1Schristos { 3284e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f 3294e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3304e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 3314e98e3e1Schristos int cycles = 0; 3324e98e3e1Schristos { 3334e98e3e1Schristos int referenced = 0; 3344e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 3354e98e3e1Schristos INT in_sr = -1; 3364e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 3374e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 3384e98e3e1Schristos } 3394e98e3e1Schristos return cycles; 3404e98e3e1Schristos #undef FLD 3414e98e3e1Schristos } 3424e98e3e1Schristos 3434e98e3e1Schristos static int 3444e98e3e1Schristos model_m32r_d_bc24 (SIM_CPU *current_cpu, void *sem_arg) 3454e98e3e1Schristos { 3464e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f 3474e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3484e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 3494e98e3e1Schristos int cycles = 0; 3504e98e3e1Schristos { 3514e98e3e1Schristos int referenced = 0; 3524e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 3534e98e3e1Schristos INT in_sr = -1; 3544e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 3554e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 3564e98e3e1Schristos } 3574e98e3e1Schristos return cycles; 3584e98e3e1Schristos #undef FLD 3594e98e3e1Schristos } 3604e98e3e1Schristos 3614e98e3e1Schristos static int 3624e98e3e1Schristos model_m32r_d_beq (SIM_CPU *current_cpu, void *sem_arg) 3634e98e3e1Schristos { 3644e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 3654e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3664e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 3674e98e3e1Schristos int cycles = 0; 3684e98e3e1Schristos { 3694e98e3e1Schristos int referenced = 0; 3704e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 3714e98e3e1Schristos INT in_sr = -1; 3724e98e3e1Schristos if (insn_referenced & (1 << 3)) referenced |= 1 << 1; 3734e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 3744e98e3e1Schristos } 3754e98e3e1Schristos { 3764e98e3e1Schristos int referenced = 0; 3774e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 3784e98e3e1Schristos INT in_src1 = -1; 3794e98e3e1Schristos INT in_src2 = -1; 3804e98e3e1Schristos in_src1 = FLD (in_src1); 3814e98e3e1Schristos in_src2 = FLD (in_src2); 3824e98e3e1Schristos referenced |= 1 << 0; 3834e98e3e1Schristos referenced |= 1 << 1; 3844e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 3854e98e3e1Schristos } 3864e98e3e1Schristos return cycles; 3874e98e3e1Schristos #undef FLD 3884e98e3e1Schristos } 3894e98e3e1Schristos 3904e98e3e1Schristos static int 3914e98e3e1Schristos model_m32r_d_beqz (SIM_CPU *current_cpu, void *sem_arg) 3924e98e3e1Schristos { 3934e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 3944e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 3954e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 3964e98e3e1Schristos int cycles = 0; 3974e98e3e1Schristos { 3984e98e3e1Schristos int referenced = 0; 3994e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 4004e98e3e1Schristos INT in_sr = -1; 4014e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 4024e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 4034e98e3e1Schristos } 4044e98e3e1Schristos { 4054e98e3e1Schristos int referenced = 0; 4064e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 4074e98e3e1Schristos INT in_src1 = -1; 4084e98e3e1Schristos INT in_src2 = -1; 4094e98e3e1Schristos in_src2 = FLD (in_src2); 4104e98e3e1Schristos referenced |= 1 << 1; 4114e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 4124e98e3e1Schristos } 4134e98e3e1Schristos return cycles; 4144e98e3e1Schristos #undef FLD 4154e98e3e1Schristos } 4164e98e3e1Schristos 4174e98e3e1Schristos static int 4184e98e3e1Schristos model_m32r_d_bgez (SIM_CPU *current_cpu, void *sem_arg) 4194e98e3e1Schristos { 4204e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 4214e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4224e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 4234e98e3e1Schristos int cycles = 0; 4244e98e3e1Schristos { 4254e98e3e1Schristos int referenced = 0; 4264e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 4274e98e3e1Schristos INT in_sr = -1; 4284e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 4294e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 4304e98e3e1Schristos } 4314e98e3e1Schristos { 4324e98e3e1Schristos int referenced = 0; 4334e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 4344e98e3e1Schristos INT in_src1 = -1; 4354e98e3e1Schristos INT in_src2 = -1; 4364e98e3e1Schristos in_src2 = FLD (in_src2); 4374e98e3e1Schristos referenced |= 1 << 1; 4384e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 4394e98e3e1Schristos } 4404e98e3e1Schristos return cycles; 4414e98e3e1Schristos #undef FLD 4424e98e3e1Schristos } 4434e98e3e1Schristos 4444e98e3e1Schristos static int 4454e98e3e1Schristos model_m32r_d_bgtz (SIM_CPU *current_cpu, void *sem_arg) 4464e98e3e1Schristos { 4474e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 4484e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4494e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 4504e98e3e1Schristos int cycles = 0; 4514e98e3e1Schristos { 4524e98e3e1Schristos int referenced = 0; 4534e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 4544e98e3e1Schristos INT in_sr = -1; 4554e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 4564e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 4574e98e3e1Schristos } 4584e98e3e1Schristos { 4594e98e3e1Schristos int referenced = 0; 4604e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 4614e98e3e1Schristos INT in_src1 = -1; 4624e98e3e1Schristos INT in_src2 = -1; 4634e98e3e1Schristos in_src2 = FLD (in_src2); 4644e98e3e1Schristos referenced |= 1 << 1; 4654e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 4664e98e3e1Schristos } 4674e98e3e1Schristos return cycles; 4684e98e3e1Schristos #undef FLD 4694e98e3e1Schristos } 4704e98e3e1Schristos 4714e98e3e1Schristos static int 4724e98e3e1Schristos model_m32r_d_blez (SIM_CPU *current_cpu, void *sem_arg) 4734e98e3e1Schristos { 4744e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 4754e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 4764e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 4774e98e3e1Schristos int cycles = 0; 4784e98e3e1Schristos { 4794e98e3e1Schristos int referenced = 0; 4804e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 4814e98e3e1Schristos INT in_sr = -1; 4824e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 4834e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 4844e98e3e1Schristos } 4854e98e3e1Schristos { 4864e98e3e1Schristos int referenced = 0; 4874e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 4884e98e3e1Schristos INT in_src1 = -1; 4894e98e3e1Schristos INT in_src2 = -1; 4904e98e3e1Schristos in_src2 = FLD (in_src2); 4914e98e3e1Schristos referenced |= 1 << 1; 4924e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 4934e98e3e1Schristos } 4944e98e3e1Schristos return cycles; 4954e98e3e1Schristos #undef FLD 4964e98e3e1Schristos } 4974e98e3e1Schristos 4984e98e3e1Schristos static int 4994e98e3e1Schristos model_m32r_d_bltz (SIM_CPU *current_cpu, void *sem_arg) 5004e98e3e1Schristos { 5014e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 5024e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5034e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 5044e98e3e1Schristos int cycles = 0; 5054e98e3e1Schristos { 5064e98e3e1Schristos int referenced = 0; 5074e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 5084e98e3e1Schristos INT in_sr = -1; 5094e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 5104e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 5114e98e3e1Schristos } 5124e98e3e1Schristos { 5134e98e3e1Schristos int referenced = 0; 5144e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 5154e98e3e1Schristos INT in_src1 = -1; 5164e98e3e1Schristos INT in_src2 = -1; 5174e98e3e1Schristos in_src2 = FLD (in_src2); 5184e98e3e1Schristos referenced |= 1 << 1; 5194e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 5204e98e3e1Schristos } 5214e98e3e1Schristos return cycles; 5224e98e3e1Schristos #undef FLD 5234e98e3e1Schristos } 5244e98e3e1Schristos 5254e98e3e1Schristos static int 5264e98e3e1Schristos model_m32r_d_bnez (SIM_CPU *current_cpu, void *sem_arg) 5274e98e3e1Schristos { 5284e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 5294e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5304e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 5314e98e3e1Schristos int cycles = 0; 5324e98e3e1Schristos { 5334e98e3e1Schristos int referenced = 0; 5344e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 5354e98e3e1Schristos INT in_sr = -1; 5364e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 5374e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 5384e98e3e1Schristos } 5394e98e3e1Schristos { 5404e98e3e1Schristos int referenced = 0; 5414e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 5424e98e3e1Schristos INT in_src1 = -1; 5434e98e3e1Schristos INT in_src2 = -1; 5444e98e3e1Schristos in_src2 = FLD (in_src2); 5454e98e3e1Schristos referenced |= 1 << 1; 5464e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 5474e98e3e1Schristos } 5484e98e3e1Schristos return cycles; 5494e98e3e1Schristos #undef FLD 5504e98e3e1Schristos } 5514e98e3e1Schristos 5524e98e3e1Schristos static int 5534e98e3e1Schristos model_m32r_d_bl8 (SIM_CPU *current_cpu, void *sem_arg) 5544e98e3e1Schristos { 5554e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f 5564e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5574e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 5584e98e3e1Schristos int cycles = 0; 5594e98e3e1Schristos { 5604e98e3e1Schristos int referenced = 0; 5614e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 5624e98e3e1Schristos INT in_sr = -1; 5634e98e3e1Schristos referenced |= 1 << 1; 5644e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 5654e98e3e1Schristos } 5664e98e3e1Schristos return cycles; 5674e98e3e1Schristos #undef FLD 5684e98e3e1Schristos } 5694e98e3e1Schristos 5704e98e3e1Schristos static int 5714e98e3e1Schristos model_m32r_d_bl24 (SIM_CPU *current_cpu, void *sem_arg) 5724e98e3e1Schristos { 5734e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f 5744e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5754e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 5764e98e3e1Schristos int cycles = 0; 5774e98e3e1Schristos { 5784e98e3e1Schristos int referenced = 0; 5794e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 5804e98e3e1Schristos INT in_sr = -1; 5814e98e3e1Schristos referenced |= 1 << 1; 5824e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 5834e98e3e1Schristos } 5844e98e3e1Schristos return cycles; 5854e98e3e1Schristos #undef FLD 5864e98e3e1Schristos } 5874e98e3e1Schristos 5884e98e3e1Schristos static int 5894e98e3e1Schristos model_m32r_d_bnc8 (SIM_CPU *current_cpu, void *sem_arg) 5904e98e3e1Schristos { 5914e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f 5924e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 5934e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 5944e98e3e1Schristos int cycles = 0; 5954e98e3e1Schristos { 5964e98e3e1Schristos int referenced = 0; 5974e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 5984e98e3e1Schristos INT in_sr = -1; 5994e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 6004e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 6014e98e3e1Schristos } 6024e98e3e1Schristos return cycles; 6034e98e3e1Schristos #undef FLD 6044e98e3e1Schristos } 6054e98e3e1Schristos 6064e98e3e1Schristos static int 6074e98e3e1Schristos model_m32r_d_bnc24 (SIM_CPU *current_cpu, void *sem_arg) 6084e98e3e1Schristos { 6094e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f 6104e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 6114e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 6124e98e3e1Schristos int cycles = 0; 6134e98e3e1Schristos { 6144e98e3e1Schristos int referenced = 0; 6154e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 6164e98e3e1Schristos INT in_sr = -1; 6174e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 6184e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 6194e98e3e1Schristos } 6204e98e3e1Schristos return cycles; 6214e98e3e1Schristos #undef FLD 6224e98e3e1Schristos } 6234e98e3e1Schristos 6244e98e3e1Schristos static int 6254e98e3e1Schristos model_m32r_d_bne (SIM_CPU *current_cpu, void *sem_arg) 6264e98e3e1Schristos { 6274e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 6284e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 6294e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 6304e98e3e1Schristos int cycles = 0; 6314e98e3e1Schristos { 6324e98e3e1Schristos int referenced = 0; 6334e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 6344e98e3e1Schristos INT in_sr = -1; 6354e98e3e1Schristos if (insn_referenced & (1 << 3)) referenced |= 1 << 1; 6364e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 6374e98e3e1Schristos } 6384e98e3e1Schristos { 6394e98e3e1Schristos int referenced = 0; 6404e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 6414e98e3e1Schristos INT in_src1 = -1; 6424e98e3e1Schristos INT in_src2 = -1; 6434e98e3e1Schristos in_src1 = FLD (in_src1); 6444e98e3e1Schristos in_src2 = FLD (in_src2); 6454e98e3e1Schristos referenced |= 1 << 0; 6464e98e3e1Schristos referenced |= 1 << 1; 6474e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 6484e98e3e1Schristos } 6494e98e3e1Schristos return cycles; 6504e98e3e1Schristos #undef FLD 6514e98e3e1Schristos } 6524e98e3e1Schristos 6534e98e3e1Schristos static int 6544e98e3e1Schristos model_m32r_d_bra8 (SIM_CPU *current_cpu, void *sem_arg) 6554e98e3e1Schristos { 6564e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f 6574e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 6584e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 6594e98e3e1Schristos int cycles = 0; 6604e98e3e1Schristos { 6614e98e3e1Schristos int referenced = 0; 6624e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 6634e98e3e1Schristos INT in_sr = -1; 6644e98e3e1Schristos referenced |= 1 << 1; 6654e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 6664e98e3e1Schristos } 6674e98e3e1Schristos return cycles; 6684e98e3e1Schristos #undef FLD 6694e98e3e1Schristos } 6704e98e3e1Schristos 6714e98e3e1Schristos static int 6724e98e3e1Schristos model_m32r_d_bra24 (SIM_CPU *current_cpu, void *sem_arg) 6734e98e3e1Schristos { 6744e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f 6754e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 6764e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 6774e98e3e1Schristos int cycles = 0; 6784e98e3e1Schristos { 6794e98e3e1Schristos int referenced = 0; 6804e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 6814e98e3e1Schristos INT in_sr = -1; 6824e98e3e1Schristos referenced |= 1 << 1; 6834e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 6844e98e3e1Schristos } 6854e98e3e1Schristos return cycles; 6864e98e3e1Schristos #undef FLD 6874e98e3e1Schristos } 6884e98e3e1Schristos 6894e98e3e1Schristos static int 6904e98e3e1Schristos model_m32r_d_cmp (SIM_CPU *current_cpu, void *sem_arg) 6914e98e3e1Schristos { 6924e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 6934e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 6944e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 6954e98e3e1Schristos int cycles = 0; 6964e98e3e1Schristos { 6974e98e3e1Schristos int referenced = 0; 6984e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 6994e98e3e1Schristos INT in_src1 = -1; 7004e98e3e1Schristos INT in_src2 = -1; 7014e98e3e1Schristos in_src1 = FLD (in_src1); 7024e98e3e1Schristos in_src2 = FLD (in_src2); 7034e98e3e1Schristos referenced |= 1 << 0; 7044e98e3e1Schristos referenced |= 1 << 1; 7054e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 7064e98e3e1Schristos } 7074e98e3e1Schristos return cycles; 7084e98e3e1Schristos #undef FLD 7094e98e3e1Schristos } 7104e98e3e1Schristos 7114e98e3e1Schristos static int 7124e98e3e1Schristos model_m32r_d_cmpi (SIM_CPU *current_cpu, void *sem_arg) 7134e98e3e1Schristos { 7144e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f 7154e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 7164e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 7174e98e3e1Schristos int cycles = 0; 7184e98e3e1Schristos { 7194e98e3e1Schristos int referenced = 0; 7204e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 7214e98e3e1Schristos INT in_src1 = -1; 7224e98e3e1Schristos INT in_src2 = -1; 7234e98e3e1Schristos in_src2 = FLD (in_src2); 7244e98e3e1Schristos referenced |= 1 << 1; 7254e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 7264e98e3e1Schristos } 7274e98e3e1Schristos return cycles; 7284e98e3e1Schristos #undef FLD 7294e98e3e1Schristos } 7304e98e3e1Schristos 7314e98e3e1Schristos static int 7324e98e3e1Schristos model_m32r_d_cmpu (SIM_CPU *current_cpu, void *sem_arg) 7334e98e3e1Schristos { 7344e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 7354e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 7364e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 7374e98e3e1Schristos int cycles = 0; 7384e98e3e1Schristos { 7394e98e3e1Schristos int referenced = 0; 7404e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 7414e98e3e1Schristos INT in_src1 = -1; 7424e98e3e1Schristos INT in_src2 = -1; 7434e98e3e1Schristos in_src1 = FLD (in_src1); 7444e98e3e1Schristos in_src2 = FLD (in_src2); 7454e98e3e1Schristos referenced |= 1 << 0; 7464e98e3e1Schristos referenced |= 1 << 1; 7474e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 7484e98e3e1Schristos } 7494e98e3e1Schristos return cycles; 7504e98e3e1Schristos #undef FLD 7514e98e3e1Schristos } 7524e98e3e1Schristos 7534e98e3e1Schristos static int 7544e98e3e1Schristos model_m32r_d_cmpui (SIM_CPU *current_cpu, void *sem_arg) 7554e98e3e1Schristos { 7564e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f 7574e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 7584e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 7594e98e3e1Schristos int cycles = 0; 7604e98e3e1Schristos { 7614e98e3e1Schristos int referenced = 0; 7624e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 7634e98e3e1Schristos INT in_src1 = -1; 7644e98e3e1Schristos INT in_src2 = -1; 7654e98e3e1Schristos in_src2 = FLD (in_src2); 7664e98e3e1Schristos referenced |= 1 << 1; 7674e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 7684e98e3e1Schristos } 7694e98e3e1Schristos return cycles; 7704e98e3e1Schristos #undef FLD 7714e98e3e1Schristos } 7724e98e3e1Schristos 7734e98e3e1Schristos static int 7744e98e3e1Schristos model_m32r_d_div (SIM_CPU *current_cpu, void *sem_arg) 7754e98e3e1Schristos { 7764e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 7774e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 7784e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 7794e98e3e1Schristos int cycles = 0; 7804e98e3e1Schristos { 7814e98e3e1Schristos int referenced = 0; 7824e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 7834e98e3e1Schristos INT in_sr = -1; 7844e98e3e1Schristos INT in_dr = -1; 7854e98e3e1Schristos INT out_dr = -1; 7864e98e3e1Schristos in_sr = FLD (in_sr); 7874e98e3e1Schristos in_dr = FLD (in_dr); 7884e98e3e1Schristos out_dr = FLD (out_dr); 7894e98e3e1Schristos referenced |= 1 << 0; 7904e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 7914e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 7924e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 7934e98e3e1Schristos } 7944e98e3e1Schristos return cycles; 7954e98e3e1Schristos #undef FLD 7964e98e3e1Schristos } 7974e98e3e1Schristos 7984e98e3e1Schristos static int 7994e98e3e1Schristos model_m32r_d_divu (SIM_CPU *current_cpu, void *sem_arg) 8004e98e3e1Schristos { 8014e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 8024e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 8034e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 8044e98e3e1Schristos int cycles = 0; 8054e98e3e1Schristos { 8064e98e3e1Schristos int referenced = 0; 8074e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 8084e98e3e1Schristos INT in_sr = -1; 8094e98e3e1Schristos INT in_dr = -1; 8104e98e3e1Schristos INT out_dr = -1; 8114e98e3e1Schristos in_sr = FLD (in_sr); 8124e98e3e1Schristos in_dr = FLD (in_dr); 8134e98e3e1Schristos out_dr = FLD (out_dr); 8144e98e3e1Schristos referenced |= 1 << 0; 8154e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 8164e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 8174e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 8184e98e3e1Schristos } 8194e98e3e1Schristos return cycles; 8204e98e3e1Schristos #undef FLD 8214e98e3e1Schristos } 8224e98e3e1Schristos 8234e98e3e1Schristos static int 8244e98e3e1Schristos model_m32r_d_rem (SIM_CPU *current_cpu, void *sem_arg) 8254e98e3e1Schristos { 8264e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 8274e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 8284e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 8294e98e3e1Schristos int cycles = 0; 8304e98e3e1Schristos { 8314e98e3e1Schristos int referenced = 0; 8324e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 8334e98e3e1Schristos INT in_sr = -1; 8344e98e3e1Schristos INT in_dr = -1; 8354e98e3e1Schristos INT out_dr = -1; 8364e98e3e1Schristos in_sr = FLD (in_sr); 8374e98e3e1Schristos in_dr = FLD (in_dr); 8384e98e3e1Schristos out_dr = FLD (out_dr); 8394e98e3e1Schristos referenced |= 1 << 0; 8404e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 8414e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 8424e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 8434e98e3e1Schristos } 8444e98e3e1Schristos return cycles; 8454e98e3e1Schristos #undef FLD 8464e98e3e1Schristos } 8474e98e3e1Schristos 8484e98e3e1Schristos static int 8494e98e3e1Schristos model_m32r_d_remu (SIM_CPU *current_cpu, void *sem_arg) 8504e98e3e1Schristos { 8514e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 8524e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 8534e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 8544e98e3e1Schristos int cycles = 0; 8554e98e3e1Schristos { 8564e98e3e1Schristos int referenced = 0; 8574e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 8584e98e3e1Schristos INT in_sr = -1; 8594e98e3e1Schristos INT in_dr = -1; 8604e98e3e1Schristos INT out_dr = -1; 8614e98e3e1Schristos in_sr = FLD (in_sr); 8624e98e3e1Schristos in_dr = FLD (in_dr); 8634e98e3e1Schristos out_dr = FLD (out_dr); 8644e98e3e1Schristos referenced |= 1 << 0; 8654e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 8664e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 8674e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 8684e98e3e1Schristos } 8694e98e3e1Schristos return cycles; 8704e98e3e1Schristos #undef FLD 8714e98e3e1Schristos } 8724e98e3e1Schristos 8734e98e3e1Schristos static int 8744e98e3e1Schristos model_m32r_d_jl (SIM_CPU *current_cpu, void *sem_arg) 8754e98e3e1Schristos { 8764e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f 8774e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 8784e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 8794e98e3e1Schristos int cycles = 0; 8804e98e3e1Schristos { 8814e98e3e1Schristos int referenced = 0; 8824e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 8834e98e3e1Schristos INT in_sr = -1; 8844e98e3e1Schristos in_sr = FLD (in_sr); 8854e98e3e1Schristos referenced |= 1 << 0; 8864e98e3e1Schristos referenced |= 1 << 1; 8874e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 8884e98e3e1Schristos } 8894e98e3e1Schristos return cycles; 8904e98e3e1Schristos #undef FLD 8914e98e3e1Schristos } 8924e98e3e1Schristos 8934e98e3e1Schristos static int 8944e98e3e1Schristos model_m32r_d_jmp (SIM_CPU *current_cpu, void *sem_arg) 8954e98e3e1Schristos { 8964e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f 8974e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 8984e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 8994e98e3e1Schristos int cycles = 0; 9004e98e3e1Schristos { 9014e98e3e1Schristos int referenced = 0; 9024e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 9034e98e3e1Schristos INT in_sr = -1; 9044e98e3e1Schristos in_sr = FLD (in_sr); 9054e98e3e1Schristos referenced |= 1 << 0; 9064e98e3e1Schristos referenced |= 1 << 1; 9074e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr); 9084e98e3e1Schristos } 9094e98e3e1Schristos return cycles; 9104e98e3e1Schristos #undef FLD 9114e98e3e1Schristos } 9124e98e3e1Schristos 9134e98e3e1Schristos static int 9144e98e3e1Schristos model_m32r_d_ld (SIM_CPU *current_cpu, void *sem_arg) 9154e98e3e1Schristos { 9164e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 9174e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 9184e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 9194e98e3e1Schristos int cycles = 0; 9204e98e3e1Schristos { 9214e98e3e1Schristos int referenced = 0; 9224e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 9234e98e3e1Schristos INT in_sr = 0; 9244e98e3e1Schristos INT out_dr = 0; 9254e98e3e1Schristos in_sr = FLD (in_sr); 9264e98e3e1Schristos out_dr = FLD (out_dr); 9274e98e3e1Schristos referenced |= 1 << 0; 9284e98e3e1Schristos referenced |= 1 << 1; 9294e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 9304e98e3e1Schristos } 9314e98e3e1Schristos return cycles; 9324e98e3e1Schristos #undef FLD 9334e98e3e1Schristos } 9344e98e3e1Schristos 9354e98e3e1Schristos static int 9364e98e3e1Schristos model_m32r_d_ld_d (SIM_CPU *current_cpu, void *sem_arg) 9374e98e3e1Schristos { 9384e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 9394e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 9404e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 9414e98e3e1Schristos int cycles = 0; 9424e98e3e1Schristos { 9434e98e3e1Schristos int referenced = 0; 9444e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 9454e98e3e1Schristos INT in_sr = 0; 9464e98e3e1Schristos INT out_dr = 0; 9474e98e3e1Schristos in_sr = FLD (in_sr); 9484e98e3e1Schristos out_dr = FLD (out_dr); 9494e98e3e1Schristos referenced |= 1 << 0; 9504e98e3e1Schristos referenced |= 1 << 1; 9514e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 9524e98e3e1Schristos } 9534e98e3e1Schristos return cycles; 9544e98e3e1Schristos #undef FLD 9554e98e3e1Schristos } 9564e98e3e1Schristos 9574e98e3e1Schristos static int 9584e98e3e1Schristos model_m32r_d_ldb (SIM_CPU *current_cpu, void *sem_arg) 9594e98e3e1Schristos { 9604e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 9614e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 9624e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 9634e98e3e1Schristos int cycles = 0; 9644e98e3e1Schristos { 9654e98e3e1Schristos int referenced = 0; 9664e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 9674e98e3e1Schristos INT in_sr = 0; 9684e98e3e1Schristos INT out_dr = 0; 9694e98e3e1Schristos in_sr = FLD (in_sr); 9704e98e3e1Schristos out_dr = FLD (out_dr); 9714e98e3e1Schristos referenced |= 1 << 0; 9724e98e3e1Schristos referenced |= 1 << 1; 9734e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 9744e98e3e1Schristos } 9754e98e3e1Schristos return cycles; 9764e98e3e1Schristos #undef FLD 9774e98e3e1Schristos } 9784e98e3e1Schristos 9794e98e3e1Schristos static int 9804e98e3e1Schristos model_m32r_d_ldb_d (SIM_CPU *current_cpu, void *sem_arg) 9814e98e3e1Schristos { 9824e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 9834e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 9844e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 9854e98e3e1Schristos int cycles = 0; 9864e98e3e1Schristos { 9874e98e3e1Schristos int referenced = 0; 9884e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 9894e98e3e1Schristos INT in_sr = 0; 9904e98e3e1Schristos INT out_dr = 0; 9914e98e3e1Schristos in_sr = FLD (in_sr); 9924e98e3e1Schristos out_dr = FLD (out_dr); 9934e98e3e1Schristos referenced |= 1 << 0; 9944e98e3e1Schristos referenced |= 1 << 1; 9954e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 9964e98e3e1Schristos } 9974e98e3e1Schristos return cycles; 9984e98e3e1Schristos #undef FLD 9994e98e3e1Schristos } 10004e98e3e1Schristos 10014e98e3e1Schristos static int 10024e98e3e1Schristos model_m32r_d_ldh (SIM_CPU *current_cpu, void *sem_arg) 10034e98e3e1Schristos { 10044e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 10054e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 10064e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 10074e98e3e1Schristos int cycles = 0; 10084e98e3e1Schristos { 10094e98e3e1Schristos int referenced = 0; 10104e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 10114e98e3e1Schristos INT in_sr = 0; 10124e98e3e1Schristos INT out_dr = 0; 10134e98e3e1Schristos in_sr = FLD (in_sr); 10144e98e3e1Schristos out_dr = FLD (out_dr); 10154e98e3e1Schristos referenced |= 1 << 0; 10164e98e3e1Schristos referenced |= 1 << 1; 10174e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 10184e98e3e1Schristos } 10194e98e3e1Schristos return cycles; 10204e98e3e1Schristos #undef FLD 10214e98e3e1Schristos } 10224e98e3e1Schristos 10234e98e3e1Schristos static int 10244e98e3e1Schristos model_m32r_d_ldh_d (SIM_CPU *current_cpu, void *sem_arg) 10254e98e3e1Schristos { 10264e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 10274e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 10284e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 10294e98e3e1Schristos int cycles = 0; 10304e98e3e1Schristos { 10314e98e3e1Schristos int referenced = 0; 10324e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 10334e98e3e1Schristos INT in_sr = 0; 10344e98e3e1Schristos INT out_dr = 0; 10354e98e3e1Schristos in_sr = FLD (in_sr); 10364e98e3e1Schristos out_dr = FLD (out_dr); 10374e98e3e1Schristos referenced |= 1 << 0; 10384e98e3e1Schristos referenced |= 1 << 1; 10394e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 10404e98e3e1Schristos } 10414e98e3e1Schristos return cycles; 10424e98e3e1Schristos #undef FLD 10434e98e3e1Schristos } 10444e98e3e1Schristos 10454e98e3e1Schristos static int 10464e98e3e1Schristos model_m32r_d_ldub (SIM_CPU *current_cpu, void *sem_arg) 10474e98e3e1Schristos { 10484e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 10494e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 10504e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 10514e98e3e1Schristos int cycles = 0; 10524e98e3e1Schristos { 10534e98e3e1Schristos int referenced = 0; 10544e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 10554e98e3e1Schristos INT in_sr = 0; 10564e98e3e1Schristos INT out_dr = 0; 10574e98e3e1Schristos in_sr = FLD (in_sr); 10584e98e3e1Schristos out_dr = FLD (out_dr); 10594e98e3e1Schristos referenced |= 1 << 0; 10604e98e3e1Schristos referenced |= 1 << 1; 10614e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 10624e98e3e1Schristos } 10634e98e3e1Schristos return cycles; 10644e98e3e1Schristos #undef FLD 10654e98e3e1Schristos } 10664e98e3e1Schristos 10674e98e3e1Schristos static int 10684e98e3e1Schristos model_m32r_d_ldub_d (SIM_CPU *current_cpu, void *sem_arg) 10694e98e3e1Schristos { 10704e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 10714e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 10724e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 10734e98e3e1Schristos int cycles = 0; 10744e98e3e1Schristos { 10754e98e3e1Schristos int referenced = 0; 10764e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 10774e98e3e1Schristos INT in_sr = 0; 10784e98e3e1Schristos INT out_dr = 0; 10794e98e3e1Schristos in_sr = FLD (in_sr); 10804e98e3e1Schristos out_dr = FLD (out_dr); 10814e98e3e1Schristos referenced |= 1 << 0; 10824e98e3e1Schristos referenced |= 1 << 1; 10834e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 10844e98e3e1Schristos } 10854e98e3e1Schristos return cycles; 10864e98e3e1Schristos #undef FLD 10874e98e3e1Schristos } 10884e98e3e1Schristos 10894e98e3e1Schristos static int 10904e98e3e1Schristos model_m32r_d_lduh (SIM_CPU *current_cpu, void *sem_arg) 10914e98e3e1Schristos { 10924e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 10934e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 10944e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 10954e98e3e1Schristos int cycles = 0; 10964e98e3e1Schristos { 10974e98e3e1Schristos int referenced = 0; 10984e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 10994e98e3e1Schristos INT in_sr = 0; 11004e98e3e1Schristos INT out_dr = 0; 11014e98e3e1Schristos in_sr = FLD (in_sr); 11024e98e3e1Schristos out_dr = FLD (out_dr); 11034e98e3e1Schristos referenced |= 1 << 0; 11044e98e3e1Schristos referenced |= 1 << 1; 11054e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 11064e98e3e1Schristos } 11074e98e3e1Schristos return cycles; 11084e98e3e1Schristos #undef FLD 11094e98e3e1Schristos } 11104e98e3e1Schristos 11114e98e3e1Schristos static int 11124e98e3e1Schristos model_m32r_d_lduh_d (SIM_CPU *current_cpu, void *sem_arg) 11134e98e3e1Schristos { 11144e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 11154e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 11164e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 11174e98e3e1Schristos int cycles = 0; 11184e98e3e1Schristos { 11194e98e3e1Schristos int referenced = 0; 11204e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 11214e98e3e1Schristos INT in_sr = 0; 11224e98e3e1Schristos INT out_dr = 0; 11234e98e3e1Schristos in_sr = FLD (in_sr); 11244e98e3e1Schristos out_dr = FLD (out_dr); 11254e98e3e1Schristos referenced |= 1 << 0; 11264e98e3e1Schristos referenced |= 1 << 1; 11274e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 11284e98e3e1Schristos } 11294e98e3e1Schristos return cycles; 11304e98e3e1Schristos #undef FLD 11314e98e3e1Schristos } 11324e98e3e1Schristos 11334e98e3e1Schristos static int 11344e98e3e1Schristos model_m32r_d_ld_plus (SIM_CPU *current_cpu, void *sem_arg) 11354e98e3e1Schristos { 11364e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 11374e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 11384e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 11394e98e3e1Schristos int cycles = 0; 11404e98e3e1Schristos { 11414e98e3e1Schristos int referenced = 0; 11424e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 11434e98e3e1Schristos INT in_sr = 0; 11444e98e3e1Schristos INT out_dr = 0; 11454e98e3e1Schristos in_sr = FLD (in_sr); 11464e98e3e1Schristos out_dr = FLD (out_dr); 11474e98e3e1Schristos referenced |= 1 << 0; 11484e98e3e1Schristos referenced |= 1 << 1; 11494e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 11504e98e3e1Schristos } 11514e98e3e1Schristos { 11524e98e3e1Schristos int referenced = 0; 11534e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 11544e98e3e1Schristos INT in_sr = -1; 11554e98e3e1Schristos INT in_dr = -1; 11564e98e3e1Schristos INT out_dr = -1; 11574e98e3e1Schristos in_dr = FLD (in_sr); 11584e98e3e1Schristos out_dr = FLD (out_sr); 11594e98e3e1Schristos referenced |= 1 << 0; 11604e98e3e1Schristos referenced |= 1 << 2; 11614e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr); 11624e98e3e1Schristos } 11634e98e3e1Schristos return cycles; 11644e98e3e1Schristos #undef FLD 11654e98e3e1Schristos } 11664e98e3e1Schristos 11674e98e3e1Schristos static int 11684e98e3e1Schristos model_m32r_d_ld24 (SIM_CPU *current_cpu, void *sem_arg) 11694e98e3e1Schristos { 11704e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld24.f 11714e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 11724e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 11734e98e3e1Schristos int cycles = 0; 11744e98e3e1Schristos { 11754e98e3e1Schristos int referenced = 0; 11764e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 11774e98e3e1Schristos INT in_sr = -1; 11784e98e3e1Schristos INT in_dr = -1; 11794e98e3e1Schristos INT out_dr = -1; 11804e98e3e1Schristos out_dr = FLD (out_dr); 11814e98e3e1Schristos referenced |= 1 << 2; 11824e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 11834e98e3e1Schristos } 11844e98e3e1Schristos return cycles; 11854e98e3e1Schristos #undef FLD 11864e98e3e1Schristos } 11874e98e3e1Schristos 11884e98e3e1Schristos static int 11894e98e3e1Schristos model_m32r_d_ldi8 (SIM_CPU *current_cpu, void *sem_arg) 11904e98e3e1Schristos { 11914e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_addi.f 11924e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 11934e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 11944e98e3e1Schristos int cycles = 0; 11954e98e3e1Schristos { 11964e98e3e1Schristos int referenced = 0; 11974e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 11984e98e3e1Schristos INT in_sr = -1; 11994e98e3e1Schristos INT in_dr = -1; 12004e98e3e1Schristos INT out_dr = -1; 12014e98e3e1Schristos out_dr = FLD (out_dr); 12024e98e3e1Schristos referenced |= 1 << 2; 12034e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 12044e98e3e1Schristos } 12054e98e3e1Schristos return cycles; 12064e98e3e1Schristos #undef FLD 12074e98e3e1Schristos } 12084e98e3e1Schristos 12094e98e3e1Schristos static int 12104e98e3e1Schristos model_m32r_d_ldi16 (SIM_CPU *current_cpu, void *sem_arg) 12114e98e3e1Schristos { 12124e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 12134e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 12144e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 12154e98e3e1Schristos int cycles = 0; 12164e98e3e1Schristos { 12174e98e3e1Schristos int referenced = 0; 12184e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 12194e98e3e1Schristos INT in_sr = -1; 12204e98e3e1Schristos INT in_dr = -1; 12214e98e3e1Schristos INT out_dr = -1; 12224e98e3e1Schristos out_dr = FLD (out_dr); 12234e98e3e1Schristos referenced |= 1 << 2; 12244e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 12254e98e3e1Schristos } 12264e98e3e1Schristos return cycles; 12274e98e3e1Schristos #undef FLD 12284e98e3e1Schristos } 12294e98e3e1Schristos 12304e98e3e1Schristos static int 12314e98e3e1Schristos model_m32r_d_lock (SIM_CPU *current_cpu, void *sem_arg) 12324e98e3e1Schristos { 12334e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 12344e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 12354e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 12364e98e3e1Schristos int cycles = 0; 12374e98e3e1Schristos { 12384e98e3e1Schristos int referenced = 0; 12394e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 12404e98e3e1Schristos INT in_sr = 0; 12414e98e3e1Schristos INT out_dr = 0; 12424e98e3e1Schristos in_sr = FLD (in_sr); 12434e98e3e1Schristos out_dr = FLD (out_dr); 12444e98e3e1Schristos referenced |= 1 << 0; 12454e98e3e1Schristos referenced |= 1 << 1; 12464e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 12474e98e3e1Schristos } 12484e98e3e1Schristos return cycles; 12494e98e3e1Schristos #undef FLD 12504e98e3e1Schristos } 12514e98e3e1Schristos 12524e98e3e1Schristos static int 12534e98e3e1Schristos model_m32r_d_machi (SIM_CPU *current_cpu, void *sem_arg) 12544e98e3e1Schristos { 12554e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 12564e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 12574e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 12584e98e3e1Schristos int cycles = 0; 12594e98e3e1Schristos { 12604e98e3e1Schristos int referenced = 0; 12614e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 12624e98e3e1Schristos INT in_src1 = -1; 12634e98e3e1Schristos INT in_src2 = -1; 12644e98e3e1Schristos in_src1 = FLD (in_src1); 12654e98e3e1Schristos in_src2 = FLD (in_src2); 12664e98e3e1Schristos referenced |= 1 << 0; 12674e98e3e1Schristos referenced |= 1 << 1; 12684e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 12694e98e3e1Schristos } 12704e98e3e1Schristos return cycles; 12714e98e3e1Schristos #undef FLD 12724e98e3e1Schristos } 12734e98e3e1Schristos 12744e98e3e1Schristos static int 12754e98e3e1Schristos model_m32r_d_maclo (SIM_CPU *current_cpu, void *sem_arg) 12764e98e3e1Schristos { 12774e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 12784e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 12794e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 12804e98e3e1Schristos int cycles = 0; 12814e98e3e1Schristos { 12824e98e3e1Schristos int referenced = 0; 12834e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 12844e98e3e1Schristos INT in_src1 = -1; 12854e98e3e1Schristos INT in_src2 = -1; 12864e98e3e1Schristos in_src1 = FLD (in_src1); 12874e98e3e1Schristos in_src2 = FLD (in_src2); 12884e98e3e1Schristos referenced |= 1 << 0; 12894e98e3e1Schristos referenced |= 1 << 1; 12904e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 12914e98e3e1Schristos } 12924e98e3e1Schristos return cycles; 12934e98e3e1Schristos #undef FLD 12944e98e3e1Schristos } 12954e98e3e1Schristos 12964e98e3e1Schristos static int 12974e98e3e1Schristos model_m32r_d_macwhi (SIM_CPU *current_cpu, void *sem_arg) 12984e98e3e1Schristos { 12994e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 13004e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 13014e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 13024e98e3e1Schristos int cycles = 0; 13034e98e3e1Schristos { 13044e98e3e1Schristos int referenced = 0; 13054e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 13064e98e3e1Schristos INT in_src1 = -1; 13074e98e3e1Schristos INT in_src2 = -1; 13084e98e3e1Schristos in_src1 = FLD (in_src1); 13094e98e3e1Schristos in_src2 = FLD (in_src2); 13104e98e3e1Schristos referenced |= 1 << 0; 13114e98e3e1Schristos referenced |= 1 << 1; 13124e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 13134e98e3e1Schristos } 13144e98e3e1Schristos return cycles; 13154e98e3e1Schristos #undef FLD 13164e98e3e1Schristos } 13174e98e3e1Schristos 13184e98e3e1Schristos static int 13194e98e3e1Schristos model_m32r_d_macwlo (SIM_CPU *current_cpu, void *sem_arg) 13204e98e3e1Schristos { 13214e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 13224e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 13234e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 13244e98e3e1Schristos int cycles = 0; 13254e98e3e1Schristos { 13264e98e3e1Schristos int referenced = 0; 13274e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 13284e98e3e1Schristos INT in_src1 = -1; 13294e98e3e1Schristos INT in_src2 = -1; 13304e98e3e1Schristos in_src1 = FLD (in_src1); 13314e98e3e1Schristos in_src2 = FLD (in_src2); 13324e98e3e1Schristos referenced |= 1 << 0; 13334e98e3e1Schristos referenced |= 1 << 1; 13344e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 13354e98e3e1Schristos } 13364e98e3e1Schristos return cycles; 13374e98e3e1Schristos #undef FLD 13384e98e3e1Schristos } 13394e98e3e1Schristos 13404e98e3e1Schristos static int 13414e98e3e1Schristos model_m32r_d_mul (SIM_CPU *current_cpu, void *sem_arg) 13424e98e3e1Schristos { 13434e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 13444e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 13454e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 13464e98e3e1Schristos int cycles = 0; 13474e98e3e1Schristos { 13484e98e3e1Schristos int referenced = 0; 13494e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 13504e98e3e1Schristos INT in_sr = -1; 13514e98e3e1Schristos INT in_dr = -1; 13524e98e3e1Schristos INT out_dr = -1; 13534e98e3e1Schristos in_sr = FLD (in_sr); 13544e98e3e1Schristos in_dr = FLD (in_dr); 13554e98e3e1Schristos out_dr = FLD (out_dr); 13564e98e3e1Schristos referenced |= 1 << 0; 13574e98e3e1Schristos referenced |= 1 << 1; 13584e98e3e1Schristos referenced |= 1 << 2; 13594e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 13604e98e3e1Schristos } 13614e98e3e1Schristos return cycles; 13624e98e3e1Schristos #undef FLD 13634e98e3e1Schristos } 13644e98e3e1Schristos 13654e98e3e1Schristos static int 13664e98e3e1Schristos model_m32r_d_mulhi (SIM_CPU *current_cpu, void *sem_arg) 13674e98e3e1Schristos { 13684e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 13694e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 13704e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 13714e98e3e1Schristos int cycles = 0; 13724e98e3e1Schristos { 13734e98e3e1Schristos int referenced = 0; 13744e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 13754e98e3e1Schristos INT in_src1 = -1; 13764e98e3e1Schristos INT in_src2 = -1; 13774e98e3e1Schristos in_src1 = FLD (in_src1); 13784e98e3e1Schristos in_src2 = FLD (in_src2); 13794e98e3e1Schristos referenced |= 1 << 0; 13804e98e3e1Schristos referenced |= 1 << 1; 13814e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 13824e98e3e1Schristos } 13834e98e3e1Schristos return cycles; 13844e98e3e1Schristos #undef FLD 13854e98e3e1Schristos } 13864e98e3e1Schristos 13874e98e3e1Schristos static int 13884e98e3e1Schristos model_m32r_d_mullo (SIM_CPU *current_cpu, void *sem_arg) 13894e98e3e1Schristos { 13904e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 13914e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 13924e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 13934e98e3e1Schristos int cycles = 0; 13944e98e3e1Schristos { 13954e98e3e1Schristos int referenced = 0; 13964e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 13974e98e3e1Schristos INT in_src1 = -1; 13984e98e3e1Schristos INT in_src2 = -1; 13994e98e3e1Schristos in_src1 = FLD (in_src1); 14004e98e3e1Schristos in_src2 = FLD (in_src2); 14014e98e3e1Schristos referenced |= 1 << 0; 14024e98e3e1Schristos referenced |= 1 << 1; 14034e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 14044e98e3e1Schristos } 14054e98e3e1Schristos return cycles; 14064e98e3e1Schristos #undef FLD 14074e98e3e1Schristos } 14084e98e3e1Schristos 14094e98e3e1Schristos static int 14104e98e3e1Schristos model_m32r_d_mulwhi (SIM_CPU *current_cpu, void *sem_arg) 14114e98e3e1Schristos { 14124e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 14134e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 14144e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 14154e98e3e1Schristos int cycles = 0; 14164e98e3e1Schristos { 14174e98e3e1Schristos int referenced = 0; 14184e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 14194e98e3e1Schristos INT in_src1 = -1; 14204e98e3e1Schristos INT in_src2 = -1; 14214e98e3e1Schristos in_src1 = FLD (in_src1); 14224e98e3e1Schristos in_src2 = FLD (in_src2); 14234e98e3e1Schristos referenced |= 1 << 0; 14244e98e3e1Schristos referenced |= 1 << 1; 14254e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 14264e98e3e1Schristos } 14274e98e3e1Schristos return cycles; 14284e98e3e1Schristos #undef FLD 14294e98e3e1Schristos } 14304e98e3e1Schristos 14314e98e3e1Schristos static int 14324e98e3e1Schristos model_m32r_d_mulwlo (SIM_CPU *current_cpu, void *sem_arg) 14334e98e3e1Schristos { 14344e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 14354e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 14364e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 14374e98e3e1Schristos int cycles = 0; 14384e98e3e1Schristos { 14394e98e3e1Schristos int referenced = 0; 14404e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 14414e98e3e1Schristos INT in_src1 = -1; 14424e98e3e1Schristos INT in_src2 = -1; 14434e98e3e1Schristos in_src1 = FLD (in_src1); 14444e98e3e1Schristos in_src2 = FLD (in_src2); 14454e98e3e1Schristos referenced |= 1 << 0; 14464e98e3e1Schristos referenced |= 1 << 1; 14474e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 14484e98e3e1Schristos } 14494e98e3e1Schristos return cycles; 14504e98e3e1Schristos #undef FLD 14514e98e3e1Schristos } 14524e98e3e1Schristos 14534e98e3e1Schristos static int 14544e98e3e1Schristos model_m32r_d_mv (SIM_CPU *current_cpu, void *sem_arg) 14554e98e3e1Schristos { 14564e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 14574e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 14584e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 14594e98e3e1Schristos int cycles = 0; 14604e98e3e1Schristos { 14614e98e3e1Schristos int referenced = 0; 14624e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 14634e98e3e1Schristos INT in_sr = -1; 14644e98e3e1Schristos INT in_dr = -1; 14654e98e3e1Schristos INT out_dr = -1; 14664e98e3e1Schristos in_sr = FLD (in_sr); 14674e98e3e1Schristos out_dr = FLD (out_dr); 14684e98e3e1Schristos referenced |= 1 << 0; 14694e98e3e1Schristos referenced |= 1 << 2; 14704e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 14714e98e3e1Schristos } 14724e98e3e1Schristos return cycles; 14734e98e3e1Schristos #undef FLD 14744e98e3e1Schristos } 14754e98e3e1Schristos 14764e98e3e1Schristos static int 14774e98e3e1Schristos model_m32r_d_mvfachi (SIM_CPU *current_cpu, void *sem_arg) 14784e98e3e1Schristos { 14794e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_seth.f 14804e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 14814e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 14824e98e3e1Schristos int cycles = 0; 14834e98e3e1Schristos { 14844e98e3e1Schristos int referenced = 0; 14854e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 14864e98e3e1Schristos INT in_sr = -1; 14874e98e3e1Schristos INT in_dr = -1; 14884e98e3e1Schristos INT out_dr = -1; 14894e98e3e1Schristos out_dr = FLD (out_dr); 14904e98e3e1Schristos referenced |= 1 << 2; 14914e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 14924e98e3e1Schristos } 14934e98e3e1Schristos return cycles; 14944e98e3e1Schristos #undef FLD 14954e98e3e1Schristos } 14964e98e3e1Schristos 14974e98e3e1Schristos static int 14984e98e3e1Schristos model_m32r_d_mvfaclo (SIM_CPU *current_cpu, void *sem_arg) 14994e98e3e1Schristos { 15004e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_seth.f 15014e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 15024e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 15034e98e3e1Schristos int cycles = 0; 15044e98e3e1Schristos { 15054e98e3e1Schristos int referenced = 0; 15064e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 15074e98e3e1Schristos INT in_sr = -1; 15084e98e3e1Schristos INT in_dr = -1; 15094e98e3e1Schristos INT out_dr = -1; 15104e98e3e1Schristos out_dr = FLD (out_dr); 15114e98e3e1Schristos referenced |= 1 << 2; 15124e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 15134e98e3e1Schristos } 15144e98e3e1Schristos return cycles; 15154e98e3e1Schristos #undef FLD 15164e98e3e1Schristos } 15174e98e3e1Schristos 15184e98e3e1Schristos static int 15194e98e3e1Schristos model_m32r_d_mvfacmi (SIM_CPU *current_cpu, void *sem_arg) 15204e98e3e1Schristos { 15214e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_seth.f 15224e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 15234e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 15244e98e3e1Schristos int cycles = 0; 15254e98e3e1Schristos { 15264e98e3e1Schristos int referenced = 0; 15274e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 15284e98e3e1Schristos INT in_sr = -1; 15294e98e3e1Schristos INT in_dr = -1; 15304e98e3e1Schristos INT out_dr = -1; 15314e98e3e1Schristos out_dr = FLD (out_dr); 15324e98e3e1Schristos referenced |= 1 << 2; 15334e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 15344e98e3e1Schristos } 15354e98e3e1Schristos return cycles; 15364e98e3e1Schristos #undef FLD 15374e98e3e1Schristos } 15384e98e3e1Schristos 15394e98e3e1Schristos static int 15404e98e3e1Schristos model_m32r_d_mvfc (SIM_CPU *current_cpu, void *sem_arg) 15414e98e3e1Schristos { 15424e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 15434e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 15444e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 15454e98e3e1Schristos int cycles = 0; 15464e98e3e1Schristos { 15474e98e3e1Schristos int referenced = 0; 15484e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 15494e98e3e1Schristos INT in_sr = -1; 15504e98e3e1Schristos INT in_dr = -1; 15514e98e3e1Schristos INT out_dr = -1; 15524e98e3e1Schristos out_dr = FLD (out_dr); 15534e98e3e1Schristos referenced |= 1 << 2; 15544e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 15554e98e3e1Schristos } 15564e98e3e1Schristos return cycles; 15574e98e3e1Schristos #undef FLD 15584e98e3e1Schristos } 15594e98e3e1Schristos 15604e98e3e1Schristos static int 15614e98e3e1Schristos model_m32r_d_mvtachi (SIM_CPU *current_cpu, void *sem_arg) 15624e98e3e1Schristos { 15634e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 15644e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 15654e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 15664e98e3e1Schristos int cycles = 0; 15674e98e3e1Schristos { 15684e98e3e1Schristos int referenced = 0; 15694e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 15704e98e3e1Schristos INT in_sr = -1; 15714e98e3e1Schristos INT in_dr = -1; 15724e98e3e1Schristos INT out_dr = -1; 15734e98e3e1Schristos in_sr = FLD (in_src1); 15744e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 15754e98e3e1Schristos } 15764e98e3e1Schristos return cycles; 15774e98e3e1Schristos #undef FLD 15784e98e3e1Schristos } 15794e98e3e1Schristos 15804e98e3e1Schristos static int 15814e98e3e1Schristos model_m32r_d_mvtaclo (SIM_CPU *current_cpu, void *sem_arg) 15824e98e3e1Schristos { 15834e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 15844e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 15854e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 15864e98e3e1Schristos int cycles = 0; 15874e98e3e1Schristos { 15884e98e3e1Schristos int referenced = 0; 15894e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 15904e98e3e1Schristos INT in_sr = -1; 15914e98e3e1Schristos INT in_dr = -1; 15924e98e3e1Schristos INT out_dr = -1; 15934e98e3e1Schristos in_sr = FLD (in_src1); 15944e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 15954e98e3e1Schristos } 15964e98e3e1Schristos return cycles; 15974e98e3e1Schristos #undef FLD 15984e98e3e1Schristos } 15994e98e3e1Schristos 16004e98e3e1Schristos static int 16014e98e3e1Schristos model_m32r_d_mvtc (SIM_CPU *current_cpu, void *sem_arg) 16024e98e3e1Schristos { 16034e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 16044e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 16054e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 16064e98e3e1Schristos int cycles = 0; 16074e98e3e1Schristos { 16084e98e3e1Schristos int referenced = 0; 16094e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 16104e98e3e1Schristos INT in_sr = -1; 16114e98e3e1Schristos INT in_dr = -1; 16124e98e3e1Schristos INT out_dr = -1; 16134e98e3e1Schristos in_sr = FLD (in_sr); 16144e98e3e1Schristos referenced |= 1 << 0; 16154e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 16164e98e3e1Schristos } 16174e98e3e1Schristos return cycles; 16184e98e3e1Schristos #undef FLD 16194e98e3e1Schristos } 16204e98e3e1Schristos 16214e98e3e1Schristos static int 16224e98e3e1Schristos model_m32r_d_neg (SIM_CPU *current_cpu, void *sem_arg) 16234e98e3e1Schristos { 16244e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 16254e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 16264e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 16274e98e3e1Schristos int cycles = 0; 16284e98e3e1Schristos { 16294e98e3e1Schristos int referenced = 0; 16304e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 16314e98e3e1Schristos INT in_sr = -1; 16324e98e3e1Schristos INT in_dr = -1; 16334e98e3e1Schristos INT out_dr = -1; 16344e98e3e1Schristos in_sr = FLD (in_sr); 16354e98e3e1Schristos out_dr = FLD (out_dr); 16364e98e3e1Schristos referenced |= 1 << 0; 16374e98e3e1Schristos referenced |= 1 << 2; 16384e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 16394e98e3e1Schristos } 16404e98e3e1Schristos return cycles; 16414e98e3e1Schristos #undef FLD 16424e98e3e1Schristos } 16434e98e3e1Schristos 16444e98e3e1Schristos static int 16454e98e3e1Schristos model_m32r_d_nop (SIM_CPU *current_cpu, void *sem_arg) 16464e98e3e1Schristos { 16474e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f 16484e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 16494e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 16504e98e3e1Schristos int cycles = 0; 16514e98e3e1Schristos { 16524e98e3e1Schristos int referenced = 0; 16534e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 16544e98e3e1Schristos INT in_sr = -1; 16554e98e3e1Schristos INT in_dr = -1; 16564e98e3e1Schristos INT out_dr = -1; 16574e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 16584e98e3e1Schristos } 16594e98e3e1Schristos return cycles; 16604e98e3e1Schristos #undef FLD 16614e98e3e1Schristos } 16624e98e3e1Schristos 16634e98e3e1Schristos static int 16644e98e3e1Schristos model_m32r_d_not (SIM_CPU *current_cpu, void *sem_arg) 16654e98e3e1Schristos { 16664e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 16674e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 16684e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 16694e98e3e1Schristos int cycles = 0; 16704e98e3e1Schristos { 16714e98e3e1Schristos int referenced = 0; 16724e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 16734e98e3e1Schristos INT in_sr = -1; 16744e98e3e1Schristos INT in_dr = -1; 16754e98e3e1Schristos INT out_dr = -1; 16764e98e3e1Schristos in_sr = FLD (in_sr); 16774e98e3e1Schristos out_dr = FLD (out_dr); 16784e98e3e1Schristos referenced |= 1 << 0; 16794e98e3e1Schristos referenced |= 1 << 2; 16804e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 16814e98e3e1Schristos } 16824e98e3e1Schristos return cycles; 16834e98e3e1Schristos #undef FLD 16844e98e3e1Schristos } 16854e98e3e1Schristos 16864e98e3e1Schristos static int 16874e98e3e1Schristos model_m32r_d_rac (SIM_CPU *current_cpu, void *sem_arg) 16884e98e3e1Schristos { 16894e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f 16904e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 16914e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 16924e98e3e1Schristos int cycles = 0; 16934e98e3e1Schristos { 16944e98e3e1Schristos int referenced = 0; 16954e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 16964e98e3e1Schristos INT in_src1 = -1; 16974e98e3e1Schristos INT in_src2 = -1; 16984e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 16994e98e3e1Schristos } 17004e98e3e1Schristos return cycles; 17014e98e3e1Schristos #undef FLD 17024e98e3e1Schristos } 17034e98e3e1Schristos 17044e98e3e1Schristos static int 17054e98e3e1Schristos model_m32r_d_rach (SIM_CPU *current_cpu, void *sem_arg) 17064e98e3e1Schristos { 17074e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f 17084e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 17094e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 17104e98e3e1Schristos int cycles = 0; 17114e98e3e1Schristos { 17124e98e3e1Schristos int referenced = 0; 17134e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 17144e98e3e1Schristos INT in_src1 = -1; 17154e98e3e1Schristos INT in_src2 = -1; 17164e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 17174e98e3e1Schristos } 17184e98e3e1Schristos return cycles; 17194e98e3e1Schristos #undef FLD 17204e98e3e1Schristos } 17214e98e3e1Schristos 17224e98e3e1Schristos static int 17234e98e3e1Schristos model_m32r_d_rte (SIM_CPU *current_cpu, void *sem_arg) 17244e98e3e1Schristos { 17254e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f 17264e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 17274e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 17284e98e3e1Schristos int cycles = 0; 17294e98e3e1Schristos { 17304e98e3e1Schristos int referenced = 0; 17314e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 17324e98e3e1Schristos INT in_sr = -1; 17334e98e3e1Schristos INT in_dr = -1; 17344e98e3e1Schristos INT out_dr = -1; 17354e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 17364e98e3e1Schristos } 17374e98e3e1Schristos return cycles; 17384e98e3e1Schristos #undef FLD 17394e98e3e1Schristos } 17404e98e3e1Schristos 17414e98e3e1Schristos static int 17424e98e3e1Schristos model_m32r_d_seth (SIM_CPU *current_cpu, void *sem_arg) 17434e98e3e1Schristos { 17444e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_seth.f 17454e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 17464e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 17474e98e3e1Schristos int cycles = 0; 17484e98e3e1Schristos { 17494e98e3e1Schristos int referenced = 0; 17504e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 17514e98e3e1Schristos INT in_sr = -1; 17524e98e3e1Schristos INT in_dr = -1; 17534e98e3e1Schristos INT out_dr = -1; 17544e98e3e1Schristos out_dr = FLD (out_dr); 17554e98e3e1Schristos referenced |= 1 << 2; 17564e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 17574e98e3e1Schristos } 17584e98e3e1Schristos return cycles; 17594e98e3e1Schristos #undef FLD 17604e98e3e1Schristos } 17614e98e3e1Schristos 17624e98e3e1Schristos static int 17634e98e3e1Schristos model_m32r_d_sll (SIM_CPU *current_cpu, void *sem_arg) 17644e98e3e1Schristos { 17654e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 17664e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 17674e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 17684e98e3e1Schristos int cycles = 0; 17694e98e3e1Schristos { 17704e98e3e1Schristos int referenced = 0; 17714e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 17724e98e3e1Schristos INT in_sr = -1; 17734e98e3e1Schristos INT in_dr = -1; 17744e98e3e1Schristos INT out_dr = -1; 17754e98e3e1Schristos in_sr = FLD (in_sr); 17764e98e3e1Schristos in_dr = FLD (in_dr); 17774e98e3e1Schristos out_dr = FLD (out_dr); 17784e98e3e1Schristos referenced |= 1 << 0; 17794e98e3e1Schristos referenced |= 1 << 1; 17804e98e3e1Schristos referenced |= 1 << 2; 17814e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 17824e98e3e1Schristos } 17834e98e3e1Schristos return cycles; 17844e98e3e1Schristos #undef FLD 17854e98e3e1Schristos } 17864e98e3e1Schristos 17874e98e3e1Schristos static int 17884e98e3e1Schristos model_m32r_d_sll3 (SIM_CPU *current_cpu, void *sem_arg) 17894e98e3e1Schristos { 17904e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 17914e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 17924e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 17934e98e3e1Schristos int cycles = 0; 17944e98e3e1Schristos { 17954e98e3e1Schristos int referenced = 0; 17964e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 17974e98e3e1Schristos INT in_sr = -1; 17984e98e3e1Schristos INT in_dr = -1; 17994e98e3e1Schristos INT out_dr = -1; 18004e98e3e1Schristos in_sr = FLD (in_sr); 18014e98e3e1Schristos out_dr = FLD (out_dr); 18024e98e3e1Schristos referenced |= 1 << 0; 18034e98e3e1Schristos referenced |= 1 << 2; 18044e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 18054e98e3e1Schristos } 18064e98e3e1Schristos return cycles; 18074e98e3e1Schristos #undef FLD 18084e98e3e1Schristos } 18094e98e3e1Schristos 18104e98e3e1Schristos static int 18114e98e3e1Schristos model_m32r_d_slli (SIM_CPU *current_cpu, void *sem_arg) 18124e98e3e1Schristos { 18134e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_slli.f 18144e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 18154e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 18164e98e3e1Schristos int cycles = 0; 18174e98e3e1Schristos { 18184e98e3e1Schristos int referenced = 0; 18194e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 18204e98e3e1Schristos INT in_sr = -1; 18214e98e3e1Schristos INT in_dr = -1; 18224e98e3e1Schristos INT out_dr = -1; 18234e98e3e1Schristos in_dr = FLD (in_dr); 18244e98e3e1Schristos out_dr = FLD (out_dr); 18254e98e3e1Schristos referenced |= 1 << 1; 18264e98e3e1Schristos referenced |= 1 << 2; 18274e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 18284e98e3e1Schristos } 18294e98e3e1Schristos return cycles; 18304e98e3e1Schristos #undef FLD 18314e98e3e1Schristos } 18324e98e3e1Schristos 18334e98e3e1Schristos static int 18344e98e3e1Schristos model_m32r_d_sra (SIM_CPU *current_cpu, void *sem_arg) 18354e98e3e1Schristos { 18364e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 18374e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 18384e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 18394e98e3e1Schristos int cycles = 0; 18404e98e3e1Schristos { 18414e98e3e1Schristos int referenced = 0; 18424e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 18434e98e3e1Schristos INT in_sr = -1; 18444e98e3e1Schristos INT in_dr = -1; 18454e98e3e1Schristos INT out_dr = -1; 18464e98e3e1Schristos in_sr = FLD (in_sr); 18474e98e3e1Schristos in_dr = FLD (in_dr); 18484e98e3e1Schristos out_dr = FLD (out_dr); 18494e98e3e1Schristos referenced |= 1 << 0; 18504e98e3e1Schristos referenced |= 1 << 1; 18514e98e3e1Schristos referenced |= 1 << 2; 18524e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 18534e98e3e1Schristos } 18544e98e3e1Schristos return cycles; 18554e98e3e1Schristos #undef FLD 18564e98e3e1Schristos } 18574e98e3e1Schristos 18584e98e3e1Schristos static int 18594e98e3e1Schristos model_m32r_d_sra3 (SIM_CPU *current_cpu, void *sem_arg) 18604e98e3e1Schristos { 18614e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 18624e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 18634e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 18644e98e3e1Schristos int cycles = 0; 18654e98e3e1Schristos { 18664e98e3e1Schristos int referenced = 0; 18674e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 18684e98e3e1Schristos INT in_sr = -1; 18694e98e3e1Schristos INT in_dr = -1; 18704e98e3e1Schristos INT out_dr = -1; 18714e98e3e1Schristos in_sr = FLD (in_sr); 18724e98e3e1Schristos out_dr = FLD (out_dr); 18734e98e3e1Schristos referenced |= 1 << 0; 18744e98e3e1Schristos referenced |= 1 << 2; 18754e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 18764e98e3e1Schristos } 18774e98e3e1Schristos return cycles; 18784e98e3e1Schristos #undef FLD 18794e98e3e1Schristos } 18804e98e3e1Schristos 18814e98e3e1Schristos static int 18824e98e3e1Schristos model_m32r_d_srai (SIM_CPU *current_cpu, void *sem_arg) 18834e98e3e1Schristos { 18844e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_slli.f 18854e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 18864e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 18874e98e3e1Schristos int cycles = 0; 18884e98e3e1Schristos { 18894e98e3e1Schristos int referenced = 0; 18904e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 18914e98e3e1Schristos INT in_sr = -1; 18924e98e3e1Schristos INT in_dr = -1; 18934e98e3e1Schristos INT out_dr = -1; 18944e98e3e1Schristos in_dr = FLD (in_dr); 18954e98e3e1Schristos out_dr = FLD (out_dr); 18964e98e3e1Schristos referenced |= 1 << 1; 18974e98e3e1Schristos referenced |= 1 << 2; 18984e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 18994e98e3e1Schristos } 19004e98e3e1Schristos return cycles; 19014e98e3e1Schristos #undef FLD 19024e98e3e1Schristos } 19034e98e3e1Schristos 19044e98e3e1Schristos static int 19054e98e3e1Schristos model_m32r_d_srl (SIM_CPU *current_cpu, void *sem_arg) 19064e98e3e1Schristos { 19074e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 19084e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 19094e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 19104e98e3e1Schristos int cycles = 0; 19114e98e3e1Schristos { 19124e98e3e1Schristos int referenced = 0; 19134e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 19144e98e3e1Schristos INT in_sr = -1; 19154e98e3e1Schristos INT in_dr = -1; 19164e98e3e1Schristos INT out_dr = -1; 19174e98e3e1Schristos in_sr = FLD (in_sr); 19184e98e3e1Schristos in_dr = FLD (in_dr); 19194e98e3e1Schristos out_dr = FLD (out_dr); 19204e98e3e1Schristos referenced |= 1 << 0; 19214e98e3e1Schristos referenced |= 1 << 1; 19224e98e3e1Schristos referenced |= 1 << 2; 19234e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 19244e98e3e1Schristos } 19254e98e3e1Schristos return cycles; 19264e98e3e1Schristos #undef FLD 19274e98e3e1Schristos } 19284e98e3e1Schristos 19294e98e3e1Schristos static int 19304e98e3e1Schristos model_m32r_d_srl3 (SIM_CPU *current_cpu, void *sem_arg) 19314e98e3e1Schristos { 19324e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 19334e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 19344e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 19354e98e3e1Schristos int cycles = 0; 19364e98e3e1Schristos { 19374e98e3e1Schristos int referenced = 0; 19384e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 19394e98e3e1Schristos INT in_sr = -1; 19404e98e3e1Schristos INT in_dr = -1; 19414e98e3e1Schristos INT out_dr = -1; 19424e98e3e1Schristos in_sr = FLD (in_sr); 19434e98e3e1Schristos out_dr = FLD (out_dr); 19444e98e3e1Schristos referenced |= 1 << 0; 19454e98e3e1Schristos referenced |= 1 << 2; 19464e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 19474e98e3e1Schristos } 19484e98e3e1Schristos return cycles; 19494e98e3e1Schristos #undef FLD 19504e98e3e1Schristos } 19514e98e3e1Schristos 19524e98e3e1Schristos static int 19534e98e3e1Schristos model_m32r_d_srli (SIM_CPU *current_cpu, void *sem_arg) 19544e98e3e1Schristos { 19554e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_slli.f 19564e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 19574e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 19584e98e3e1Schristos int cycles = 0; 19594e98e3e1Schristos { 19604e98e3e1Schristos int referenced = 0; 19614e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 19624e98e3e1Schristos INT in_sr = -1; 19634e98e3e1Schristos INT in_dr = -1; 19644e98e3e1Schristos INT out_dr = -1; 19654e98e3e1Schristos in_dr = FLD (in_dr); 19664e98e3e1Schristos out_dr = FLD (out_dr); 19674e98e3e1Schristos referenced |= 1 << 1; 19684e98e3e1Schristos referenced |= 1 << 2; 19694e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 19704e98e3e1Schristos } 19714e98e3e1Schristos return cycles; 19724e98e3e1Schristos #undef FLD 19734e98e3e1Schristos } 19744e98e3e1Schristos 19754e98e3e1Schristos static int 19764e98e3e1Schristos model_m32r_d_st (SIM_CPU *current_cpu, void *sem_arg) 19774e98e3e1Schristos { 19784e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 19794e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 19804e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 19814e98e3e1Schristos int cycles = 0; 19824e98e3e1Schristos { 19834e98e3e1Schristos int referenced = 0; 19844e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 19854e98e3e1Schristos INT in_src1 = 0; 19864e98e3e1Schristos INT in_src2 = 0; 19874e98e3e1Schristos in_src1 = FLD (in_src1); 19884e98e3e1Schristos in_src2 = FLD (in_src2); 19894e98e3e1Schristos referenced |= 1 << 0; 19904e98e3e1Schristos referenced |= 1 << 1; 19914e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 19924e98e3e1Schristos } 19934e98e3e1Schristos return cycles; 19944e98e3e1Schristos #undef FLD 19954e98e3e1Schristos } 19964e98e3e1Schristos 19974e98e3e1Schristos static int 19984e98e3e1Schristos model_m32r_d_st_d (SIM_CPU *current_cpu, void *sem_arg) 19994e98e3e1Schristos { 20004e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f 20014e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 20024e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 20034e98e3e1Schristos int cycles = 0; 20044e98e3e1Schristos { 20054e98e3e1Schristos int referenced = 0; 20064e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 20074e98e3e1Schristos INT in_src1 = 0; 20084e98e3e1Schristos INT in_src2 = 0; 20094e98e3e1Schristos in_src1 = FLD (in_src1); 20104e98e3e1Schristos in_src2 = FLD (in_src2); 20114e98e3e1Schristos referenced |= 1 << 0; 20124e98e3e1Schristos referenced |= 1 << 1; 20134e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 20144e98e3e1Schristos } 20154e98e3e1Schristos return cycles; 20164e98e3e1Schristos #undef FLD 20174e98e3e1Schristos } 20184e98e3e1Schristos 20194e98e3e1Schristos static int 20204e98e3e1Schristos model_m32r_d_stb (SIM_CPU *current_cpu, void *sem_arg) 20214e98e3e1Schristos { 20224e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 20234e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 20244e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 20254e98e3e1Schristos int cycles = 0; 20264e98e3e1Schristos { 20274e98e3e1Schristos int referenced = 0; 20284e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 20294e98e3e1Schristos INT in_src1 = 0; 20304e98e3e1Schristos INT in_src2 = 0; 20314e98e3e1Schristos in_src1 = FLD (in_src1); 20324e98e3e1Schristos in_src2 = FLD (in_src2); 20334e98e3e1Schristos referenced |= 1 << 0; 20344e98e3e1Schristos referenced |= 1 << 1; 20354e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 20364e98e3e1Schristos } 20374e98e3e1Schristos return cycles; 20384e98e3e1Schristos #undef FLD 20394e98e3e1Schristos } 20404e98e3e1Schristos 20414e98e3e1Schristos static int 20424e98e3e1Schristos model_m32r_d_stb_d (SIM_CPU *current_cpu, void *sem_arg) 20434e98e3e1Schristos { 20444e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f 20454e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 20464e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 20474e98e3e1Schristos int cycles = 0; 20484e98e3e1Schristos { 20494e98e3e1Schristos int referenced = 0; 20504e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 20514e98e3e1Schristos INT in_src1 = 0; 20524e98e3e1Schristos INT in_src2 = 0; 20534e98e3e1Schristos in_src1 = FLD (in_src1); 20544e98e3e1Schristos in_src2 = FLD (in_src2); 20554e98e3e1Schristos referenced |= 1 << 0; 20564e98e3e1Schristos referenced |= 1 << 1; 20574e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 20584e98e3e1Schristos } 20594e98e3e1Schristos return cycles; 20604e98e3e1Schristos #undef FLD 20614e98e3e1Schristos } 20624e98e3e1Schristos 20634e98e3e1Schristos static int 20644e98e3e1Schristos model_m32r_d_sth (SIM_CPU *current_cpu, void *sem_arg) 20654e98e3e1Schristos { 20664e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 20674e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 20684e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 20694e98e3e1Schristos int cycles = 0; 20704e98e3e1Schristos { 20714e98e3e1Schristos int referenced = 0; 20724e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 20734e98e3e1Schristos INT in_src1 = 0; 20744e98e3e1Schristos INT in_src2 = 0; 20754e98e3e1Schristos in_src1 = FLD (in_src1); 20764e98e3e1Schristos in_src2 = FLD (in_src2); 20774e98e3e1Schristos referenced |= 1 << 0; 20784e98e3e1Schristos referenced |= 1 << 1; 20794e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 20804e98e3e1Schristos } 20814e98e3e1Schristos return cycles; 20824e98e3e1Schristos #undef FLD 20834e98e3e1Schristos } 20844e98e3e1Schristos 20854e98e3e1Schristos static int 20864e98e3e1Schristos model_m32r_d_sth_d (SIM_CPU *current_cpu, void *sem_arg) 20874e98e3e1Schristos { 20884e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f 20894e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 20904e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 20914e98e3e1Schristos int cycles = 0; 20924e98e3e1Schristos { 20934e98e3e1Schristos int referenced = 0; 20944e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 20954e98e3e1Schristos INT in_src1 = 0; 20964e98e3e1Schristos INT in_src2 = 0; 20974e98e3e1Schristos in_src1 = FLD (in_src1); 20984e98e3e1Schristos in_src2 = FLD (in_src2); 20994e98e3e1Schristos referenced |= 1 << 0; 21004e98e3e1Schristos referenced |= 1 << 1; 21014e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 21024e98e3e1Schristos } 21034e98e3e1Schristos return cycles; 21044e98e3e1Schristos #undef FLD 21054e98e3e1Schristos } 21064e98e3e1Schristos 21074e98e3e1Schristos static int 21084e98e3e1Schristos model_m32r_d_st_plus (SIM_CPU *current_cpu, void *sem_arg) 21094e98e3e1Schristos { 21104e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 21114e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 21124e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 21134e98e3e1Schristos int cycles = 0; 21144e98e3e1Schristos { 21154e98e3e1Schristos int referenced = 0; 21164e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 21174e98e3e1Schristos INT in_src1 = 0; 21184e98e3e1Schristos INT in_src2 = 0; 21194e98e3e1Schristos in_src1 = FLD (in_src1); 21204e98e3e1Schristos in_src2 = FLD (in_src2); 21214e98e3e1Schristos referenced |= 1 << 0; 21224e98e3e1Schristos referenced |= 1 << 1; 21234e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 21244e98e3e1Schristos } 21254e98e3e1Schristos { 21264e98e3e1Schristos int referenced = 0; 21274e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 21284e98e3e1Schristos INT in_sr = -1; 21294e98e3e1Schristos INT in_dr = -1; 21304e98e3e1Schristos INT out_dr = -1; 21314e98e3e1Schristos in_dr = FLD (in_src2); 21324e98e3e1Schristos out_dr = FLD (out_src2); 21334e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr); 21344e98e3e1Schristos } 21354e98e3e1Schristos return cycles; 21364e98e3e1Schristos #undef FLD 21374e98e3e1Schristos } 21384e98e3e1Schristos 21394e98e3e1Schristos static int 21404e98e3e1Schristos model_m32r_d_st_minus (SIM_CPU *current_cpu, void *sem_arg) 21414e98e3e1Schristos { 21424e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 21434e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 21444e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 21454e98e3e1Schristos int cycles = 0; 21464e98e3e1Schristos { 21474e98e3e1Schristos int referenced = 0; 21484e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 21494e98e3e1Schristos INT in_src1 = 0; 21504e98e3e1Schristos INT in_src2 = 0; 21514e98e3e1Schristos in_src1 = FLD (in_src1); 21524e98e3e1Schristos in_src2 = FLD (in_src2); 21534e98e3e1Schristos referenced |= 1 << 0; 21544e98e3e1Schristos referenced |= 1 << 1; 21554e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 21564e98e3e1Schristos } 21574e98e3e1Schristos { 21584e98e3e1Schristos int referenced = 0; 21594e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 21604e98e3e1Schristos INT in_sr = -1; 21614e98e3e1Schristos INT in_dr = -1; 21624e98e3e1Schristos INT out_dr = -1; 21634e98e3e1Schristos in_dr = FLD (in_src2); 21644e98e3e1Schristos out_dr = FLD (out_src2); 21654e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr); 21664e98e3e1Schristos } 21674e98e3e1Schristos return cycles; 21684e98e3e1Schristos #undef FLD 21694e98e3e1Schristos } 21704e98e3e1Schristos 21714e98e3e1Schristos static int 21724e98e3e1Schristos model_m32r_d_sub (SIM_CPU *current_cpu, void *sem_arg) 21734e98e3e1Schristos { 21744e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 21754e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 21764e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 21774e98e3e1Schristos int cycles = 0; 21784e98e3e1Schristos { 21794e98e3e1Schristos int referenced = 0; 21804e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 21814e98e3e1Schristos INT in_sr = -1; 21824e98e3e1Schristos INT in_dr = -1; 21834e98e3e1Schristos INT out_dr = -1; 21844e98e3e1Schristos in_sr = FLD (in_sr); 21854e98e3e1Schristos in_dr = FLD (in_dr); 21864e98e3e1Schristos out_dr = FLD (out_dr); 21874e98e3e1Schristos referenced |= 1 << 0; 21884e98e3e1Schristos referenced |= 1 << 1; 21894e98e3e1Schristos referenced |= 1 << 2; 21904e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 21914e98e3e1Schristos } 21924e98e3e1Schristos return cycles; 21934e98e3e1Schristos #undef FLD 21944e98e3e1Schristos } 21954e98e3e1Schristos 21964e98e3e1Schristos static int 21974e98e3e1Schristos model_m32r_d_subv (SIM_CPU *current_cpu, void *sem_arg) 21984e98e3e1Schristos { 21994e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 22004e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 22014e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 22024e98e3e1Schristos int cycles = 0; 22034e98e3e1Schristos { 22044e98e3e1Schristos int referenced = 0; 22054e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 22064e98e3e1Schristos INT in_sr = -1; 22074e98e3e1Schristos INT in_dr = -1; 22084e98e3e1Schristos INT out_dr = -1; 22094e98e3e1Schristos in_sr = FLD (in_sr); 22104e98e3e1Schristos in_dr = FLD (in_dr); 22114e98e3e1Schristos out_dr = FLD (out_dr); 22124e98e3e1Schristos referenced |= 1 << 0; 22134e98e3e1Schristos referenced |= 1 << 1; 22144e98e3e1Schristos referenced |= 1 << 2; 22154e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 22164e98e3e1Schristos } 22174e98e3e1Schristos return cycles; 22184e98e3e1Schristos #undef FLD 22194e98e3e1Schristos } 22204e98e3e1Schristos 22214e98e3e1Schristos static int 22224e98e3e1Schristos model_m32r_d_subx (SIM_CPU *current_cpu, void *sem_arg) 22234e98e3e1Schristos { 22244e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 22254e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 22264e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 22274e98e3e1Schristos int cycles = 0; 22284e98e3e1Schristos { 22294e98e3e1Schristos int referenced = 0; 22304e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 22314e98e3e1Schristos INT in_sr = -1; 22324e98e3e1Schristos INT in_dr = -1; 22334e98e3e1Schristos INT out_dr = -1; 22344e98e3e1Schristos in_sr = FLD (in_sr); 22354e98e3e1Schristos in_dr = FLD (in_dr); 22364e98e3e1Schristos out_dr = FLD (out_dr); 22374e98e3e1Schristos referenced |= 1 << 0; 22384e98e3e1Schristos referenced |= 1 << 1; 22394e98e3e1Schristos referenced |= 1 << 2; 22404e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 22414e98e3e1Schristos } 22424e98e3e1Schristos return cycles; 22434e98e3e1Schristos #undef FLD 22444e98e3e1Schristos } 22454e98e3e1Schristos 22464e98e3e1Schristos static int 22474e98e3e1Schristos model_m32r_d_trap (SIM_CPU *current_cpu, void *sem_arg) 22484e98e3e1Schristos { 22494e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_trap.f 22504e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 22514e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 22524e98e3e1Schristos int cycles = 0; 22534e98e3e1Schristos { 22544e98e3e1Schristos int referenced = 0; 22554e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 22564e98e3e1Schristos INT in_sr = -1; 22574e98e3e1Schristos INT in_dr = -1; 22584e98e3e1Schristos INT out_dr = -1; 22594e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 22604e98e3e1Schristos } 22614e98e3e1Schristos return cycles; 22624e98e3e1Schristos #undef FLD 22634e98e3e1Schristos } 22644e98e3e1Schristos 22654e98e3e1Schristos static int 22664e98e3e1Schristos model_m32r_d_unlock (SIM_CPU *current_cpu, void *sem_arg) 22674e98e3e1Schristos { 22684e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 22694e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 22704e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 22714e98e3e1Schristos int cycles = 0; 22724e98e3e1Schristos { 22734e98e3e1Schristos int referenced = 0; 22744e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 22754e98e3e1Schristos INT in_sr = 0; 22764e98e3e1Schristos INT out_dr = 0; 22774e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 22784e98e3e1Schristos } 22794e98e3e1Schristos return cycles; 22804e98e3e1Schristos #undef FLD 22814e98e3e1Schristos } 22824e98e3e1Schristos 22834e98e3e1Schristos static int 22844e98e3e1Schristos model_m32r_d_clrpsw (SIM_CPU *current_cpu, void *sem_arg) 22854e98e3e1Schristos { 22864e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_clrpsw.f 22874e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 22884e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 22894e98e3e1Schristos int cycles = 0; 22904e98e3e1Schristos { 22914e98e3e1Schristos int referenced = 0; 22924e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 22934e98e3e1Schristos INT in_sr = -1; 22944e98e3e1Schristos INT in_dr = -1; 22954e98e3e1Schristos INT out_dr = -1; 22964e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 22974e98e3e1Schristos } 22984e98e3e1Schristos return cycles; 22994e98e3e1Schristos #undef FLD 23004e98e3e1Schristos } 23014e98e3e1Schristos 23024e98e3e1Schristos static int 23034e98e3e1Schristos model_m32r_d_setpsw (SIM_CPU *current_cpu, void *sem_arg) 23044e98e3e1Schristos { 23054e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_clrpsw.f 23064e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 23074e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 23084e98e3e1Schristos int cycles = 0; 23094e98e3e1Schristos { 23104e98e3e1Schristos int referenced = 0; 23114e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 23124e98e3e1Schristos INT in_sr = -1; 23134e98e3e1Schristos INT in_dr = -1; 23144e98e3e1Schristos INT out_dr = -1; 23154e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 23164e98e3e1Schristos } 23174e98e3e1Schristos return cycles; 23184e98e3e1Schristos #undef FLD 23194e98e3e1Schristos } 23204e98e3e1Schristos 23214e98e3e1Schristos static int 23224e98e3e1Schristos model_m32r_d_bset (SIM_CPU *current_cpu, void *sem_arg) 23234e98e3e1Schristos { 23244e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f 23254e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 23264e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 23274e98e3e1Schristos int cycles = 0; 23284e98e3e1Schristos { 23294e98e3e1Schristos int referenced = 0; 23304e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 23314e98e3e1Schristos INT in_sr = -1; 23324e98e3e1Schristos INT in_dr = -1; 23334e98e3e1Schristos INT out_dr = -1; 23344e98e3e1Schristos in_sr = FLD (in_sr); 23354e98e3e1Schristos referenced |= 1 << 0; 23364e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 23374e98e3e1Schristos } 23384e98e3e1Schristos return cycles; 23394e98e3e1Schristos #undef FLD 23404e98e3e1Schristos } 23414e98e3e1Schristos 23424e98e3e1Schristos static int 23434e98e3e1Schristos model_m32r_d_bclr (SIM_CPU *current_cpu, void *sem_arg) 23444e98e3e1Schristos { 23454e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f 23464e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 23474e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 23484e98e3e1Schristos int cycles = 0; 23494e98e3e1Schristos { 23504e98e3e1Schristos int referenced = 0; 23514e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 23524e98e3e1Schristos INT in_sr = -1; 23534e98e3e1Schristos INT in_dr = -1; 23544e98e3e1Schristos INT out_dr = -1; 23554e98e3e1Schristos in_sr = FLD (in_sr); 23564e98e3e1Schristos referenced |= 1 << 0; 23574e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 23584e98e3e1Schristos } 23594e98e3e1Schristos return cycles; 23604e98e3e1Schristos #undef FLD 23614e98e3e1Schristos } 23624e98e3e1Schristos 23634e98e3e1Schristos static int 23644e98e3e1Schristos model_m32r_d_btst (SIM_CPU *current_cpu, void *sem_arg) 23654e98e3e1Schristos { 23664e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f 23674e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 23684e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 23694e98e3e1Schristos int cycles = 0; 23704e98e3e1Schristos { 23714e98e3e1Schristos int referenced = 0; 23724e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 23734e98e3e1Schristos INT in_sr = -1; 23744e98e3e1Schristos INT in_dr = -1; 23754e98e3e1Schristos INT out_dr = -1; 23764e98e3e1Schristos in_sr = FLD (in_sr); 23774e98e3e1Schristos referenced |= 1 << 0; 23784e98e3e1Schristos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 23794e98e3e1Schristos } 23804e98e3e1Schristos return cycles; 23814e98e3e1Schristos #undef FLD 23824e98e3e1Schristos } 23834e98e3e1Schristos 23844e98e3e1Schristos static int 23854e98e3e1Schristos model_test_add (SIM_CPU *current_cpu, void *sem_arg) 23864e98e3e1Schristos { 23874e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 23884e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 23894e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 23904e98e3e1Schristos int cycles = 0; 23914e98e3e1Schristos { 23924e98e3e1Schristos int referenced = 0; 23934e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 23944e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 23954e98e3e1Schristos } 23964e98e3e1Schristos return cycles; 23974e98e3e1Schristos #undef FLD 23984e98e3e1Schristos } 23994e98e3e1Schristos 24004e98e3e1Schristos static int 24014e98e3e1Schristos model_test_add3 (SIM_CPU *current_cpu, void *sem_arg) 24024e98e3e1Schristos { 24034e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 24044e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 24054e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 24064e98e3e1Schristos int cycles = 0; 24074e98e3e1Schristos { 24084e98e3e1Schristos int referenced = 0; 24094e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 24104e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 24114e98e3e1Schristos } 24124e98e3e1Schristos return cycles; 24134e98e3e1Schristos #undef FLD 24144e98e3e1Schristos } 24154e98e3e1Schristos 24164e98e3e1Schristos static int 24174e98e3e1Schristos model_test_and (SIM_CPU *current_cpu, void *sem_arg) 24184e98e3e1Schristos { 24194e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 24204e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 24214e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 24224e98e3e1Schristos int cycles = 0; 24234e98e3e1Schristos { 24244e98e3e1Schristos int referenced = 0; 24254e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 24264e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 24274e98e3e1Schristos } 24284e98e3e1Schristos return cycles; 24294e98e3e1Schristos #undef FLD 24304e98e3e1Schristos } 24314e98e3e1Schristos 24324e98e3e1Schristos static int 24334e98e3e1Schristos model_test_and3 (SIM_CPU *current_cpu, void *sem_arg) 24344e98e3e1Schristos { 24354e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_and3.f 24364e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 24374e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 24384e98e3e1Schristos int cycles = 0; 24394e98e3e1Schristos { 24404e98e3e1Schristos int referenced = 0; 24414e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 24424e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 24434e98e3e1Schristos } 24444e98e3e1Schristos return cycles; 24454e98e3e1Schristos #undef FLD 24464e98e3e1Schristos } 24474e98e3e1Schristos 24484e98e3e1Schristos static int 24494e98e3e1Schristos model_test_or (SIM_CPU *current_cpu, void *sem_arg) 24504e98e3e1Schristos { 24514e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 24524e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 24534e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 24544e98e3e1Schristos int cycles = 0; 24554e98e3e1Schristos { 24564e98e3e1Schristos int referenced = 0; 24574e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 24584e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 24594e98e3e1Schristos } 24604e98e3e1Schristos return cycles; 24614e98e3e1Schristos #undef FLD 24624e98e3e1Schristos } 24634e98e3e1Schristos 24644e98e3e1Schristos static int 24654e98e3e1Schristos model_test_or3 (SIM_CPU *current_cpu, void *sem_arg) 24664e98e3e1Schristos { 24674e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_and3.f 24684e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 24694e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 24704e98e3e1Schristos int cycles = 0; 24714e98e3e1Schristos { 24724e98e3e1Schristos int referenced = 0; 24734e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 24744e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 24754e98e3e1Schristos } 24764e98e3e1Schristos return cycles; 24774e98e3e1Schristos #undef FLD 24784e98e3e1Schristos } 24794e98e3e1Schristos 24804e98e3e1Schristos static int 24814e98e3e1Schristos model_test_xor (SIM_CPU *current_cpu, void *sem_arg) 24824e98e3e1Schristos { 24834e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 24844e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 24854e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 24864e98e3e1Schristos int cycles = 0; 24874e98e3e1Schristos { 24884e98e3e1Schristos int referenced = 0; 24894e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 24904e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 24914e98e3e1Schristos } 24924e98e3e1Schristos return cycles; 24934e98e3e1Schristos #undef FLD 24944e98e3e1Schristos } 24954e98e3e1Schristos 24964e98e3e1Schristos static int 24974e98e3e1Schristos model_test_xor3 (SIM_CPU *current_cpu, void *sem_arg) 24984e98e3e1Schristos { 24994e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_and3.f 25004e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 25014e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 25024e98e3e1Schristos int cycles = 0; 25034e98e3e1Schristos { 25044e98e3e1Schristos int referenced = 0; 25054e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 25064e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 25074e98e3e1Schristos } 25084e98e3e1Schristos return cycles; 25094e98e3e1Schristos #undef FLD 25104e98e3e1Schristos } 25114e98e3e1Schristos 25124e98e3e1Schristos static int 25134e98e3e1Schristos model_test_addi (SIM_CPU *current_cpu, void *sem_arg) 25144e98e3e1Schristos { 25154e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_addi.f 25164e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 25174e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 25184e98e3e1Schristos int cycles = 0; 25194e98e3e1Schristos { 25204e98e3e1Schristos int referenced = 0; 25214e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 25224e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 25234e98e3e1Schristos } 25244e98e3e1Schristos return cycles; 25254e98e3e1Schristos #undef FLD 25264e98e3e1Schristos } 25274e98e3e1Schristos 25284e98e3e1Schristos static int 25294e98e3e1Schristos model_test_addv (SIM_CPU *current_cpu, void *sem_arg) 25304e98e3e1Schristos { 25314e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 25324e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 25334e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 25344e98e3e1Schristos int cycles = 0; 25354e98e3e1Schristos { 25364e98e3e1Schristos int referenced = 0; 25374e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 25384e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 25394e98e3e1Schristos } 25404e98e3e1Schristos return cycles; 25414e98e3e1Schristos #undef FLD 25424e98e3e1Schristos } 25434e98e3e1Schristos 25444e98e3e1Schristos static int 25454e98e3e1Schristos model_test_addv3 (SIM_CPU *current_cpu, void *sem_arg) 25464e98e3e1Schristos { 25474e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 25484e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 25494e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 25504e98e3e1Schristos int cycles = 0; 25514e98e3e1Schristos { 25524e98e3e1Schristos int referenced = 0; 25534e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 25544e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 25554e98e3e1Schristos } 25564e98e3e1Schristos return cycles; 25574e98e3e1Schristos #undef FLD 25584e98e3e1Schristos } 25594e98e3e1Schristos 25604e98e3e1Schristos static int 25614e98e3e1Schristos model_test_addx (SIM_CPU *current_cpu, void *sem_arg) 25624e98e3e1Schristos { 25634e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 25644e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 25654e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 25664e98e3e1Schristos int cycles = 0; 25674e98e3e1Schristos { 25684e98e3e1Schristos int referenced = 0; 25694e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 25704e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 25714e98e3e1Schristos } 25724e98e3e1Schristos return cycles; 25734e98e3e1Schristos #undef FLD 25744e98e3e1Schristos } 25754e98e3e1Schristos 25764e98e3e1Schristos static int 25774e98e3e1Schristos model_test_bc8 (SIM_CPU *current_cpu, void *sem_arg) 25784e98e3e1Schristos { 25794e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f 25804e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 25814e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 25824e98e3e1Schristos int cycles = 0; 25834e98e3e1Schristos { 25844e98e3e1Schristos int referenced = 0; 25854e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 25864e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 25874e98e3e1Schristos } 25884e98e3e1Schristos return cycles; 25894e98e3e1Schristos #undef FLD 25904e98e3e1Schristos } 25914e98e3e1Schristos 25924e98e3e1Schristos static int 25934e98e3e1Schristos model_test_bc24 (SIM_CPU *current_cpu, void *sem_arg) 25944e98e3e1Schristos { 25954e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f 25964e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 25974e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 25984e98e3e1Schristos int cycles = 0; 25994e98e3e1Schristos { 26004e98e3e1Schristos int referenced = 0; 26014e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 26024e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 26034e98e3e1Schristos } 26044e98e3e1Schristos return cycles; 26054e98e3e1Schristos #undef FLD 26064e98e3e1Schristos } 26074e98e3e1Schristos 26084e98e3e1Schristos static int 26094e98e3e1Schristos model_test_beq (SIM_CPU *current_cpu, void *sem_arg) 26104e98e3e1Schristos { 26114e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 26124e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 26134e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 26144e98e3e1Schristos int cycles = 0; 26154e98e3e1Schristos { 26164e98e3e1Schristos int referenced = 0; 26174e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 26184e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 26194e98e3e1Schristos } 26204e98e3e1Schristos return cycles; 26214e98e3e1Schristos #undef FLD 26224e98e3e1Schristos } 26234e98e3e1Schristos 26244e98e3e1Schristos static int 26254e98e3e1Schristos model_test_beqz (SIM_CPU *current_cpu, void *sem_arg) 26264e98e3e1Schristos { 26274e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 26284e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 26294e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 26304e98e3e1Schristos int cycles = 0; 26314e98e3e1Schristos { 26324e98e3e1Schristos int referenced = 0; 26334e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 26344e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 26354e98e3e1Schristos } 26364e98e3e1Schristos return cycles; 26374e98e3e1Schristos #undef FLD 26384e98e3e1Schristos } 26394e98e3e1Schristos 26404e98e3e1Schristos static int 26414e98e3e1Schristos model_test_bgez (SIM_CPU *current_cpu, void *sem_arg) 26424e98e3e1Schristos { 26434e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 26444e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 26454e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 26464e98e3e1Schristos int cycles = 0; 26474e98e3e1Schristos { 26484e98e3e1Schristos int referenced = 0; 26494e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 26504e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 26514e98e3e1Schristos } 26524e98e3e1Schristos return cycles; 26534e98e3e1Schristos #undef FLD 26544e98e3e1Schristos } 26554e98e3e1Schristos 26564e98e3e1Schristos static int 26574e98e3e1Schristos model_test_bgtz (SIM_CPU *current_cpu, void *sem_arg) 26584e98e3e1Schristos { 26594e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 26604e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 26614e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 26624e98e3e1Schristos int cycles = 0; 26634e98e3e1Schristos { 26644e98e3e1Schristos int referenced = 0; 26654e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 26664e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 26674e98e3e1Schristos } 26684e98e3e1Schristos return cycles; 26694e98e3e1Schristos #undef FLD 26704e98e3e1Schristos } 26714e98e3e1Schristos 26724e98e3e1Schristos static int 26734e98e3e1Schristos model_test_blez (SIM_CPU *current_cpu, void *sem_arg) 26744e98e3e1Schristos { 26754e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 26764e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 26774e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 26784e98e3e1Schristos int cycles = 0; 26794e98e3e1Schristos { 26804e98e3e1Schristos int referenced = 0; 26814e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 26824e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 26834e98e3e1Schristos } 26844e98e3e1Schristos return cycles; 26854e98e3e1Schristos #undef FLD 26864e98e3e1Schristos } 26874e98e3e1Schristos 26884e98e3e1Schristos static int 26894e98e3e1Schristos model_test_bltz (SIM_CPU *current_cpu, void *sem_arg) 26904e98e3e1Schristos { 26914e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 26924e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 26934e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 26944e98e3e1Schristos int cycles = 0; 26954e98e3e1Schristos { 26964e98e3e1Schristos int referenced = 0; 26974e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 26984e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 26994e98e3e1Schristos } 27004e98e3e1Schristos return cycles; 27014e98e3e1Schristos #undef FLD 27024e98e3e1Schristos } 27034e98e3e1Schristos 27044e98e3e1Schristos static int 27054e98e3e1Schristos model_test_bnez (SIM_CPU *current_cpu, void *sem_arg) 27064e98e3e1Schristos { 27074e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 27084e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 27094e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 27104e98e3e1Schristos int cycles = 0; 27114e98e3e1Schristos { 27124e98e3e1Schristos int referenced = 0; 27134e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 27144e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 27154e98e3e1Schristos } 27164e98e3e1Schristos return cycles; 27174e98e3e1Schristos #undef FLD 27184e98e3e1Schristos } 27194e98e3e1Schristos 27204e98e3e1Schristos static int 27214e98e3e1Schristos model_test_bl8 (SIM_CPU *current_cpu, void *sem_arg) 27224e98e3e1Schristos { 27234e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f 27244e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 27254e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 27264e98e3e1Schristos int cycles = 0; 27274e98e3e1Schristos { 27284e98e3e1Schristos int referenced = 0; 27294e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 27304e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 27314e98e3e1Schristos } 27324e98e3e1Schristos return cycles; 27334e98e3e1Schristos #undef FLD 27344e98e3e1Schristos } 27354e98e3e1Schristos 27364e98e3e1Schristos static int 27374e98e3e1Schristos model_test_bl24 (SIM_CPU *current_cpu, void *sem_arg) 27384e98e3e1Schristos { 27394e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f 27404e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 27414e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 27424e98e3e1Schristos int cycles = 0; 27434e98e3e1Schristos { 27444e98e3e1Schristos int referenced = 0; 27454e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 27464e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 27474e98e3e1Schristos } 27484e98e3e1Schristos return cycles; 27494e98e3e1Schristos #undef FLD 27504e98e3e1Schristos } 27514e98e3e1Schristos 27524e98e3e1Schristos static int 27534e98e3e1Schristos model_test_bnc8 (SIM_CPU *current_cpu, void *sem_arg) 27544e98e3e1Schristos { 27554e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f 27564e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 27574e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 27584e98e3e1Schristos int cycles = 0; 27594e98e3e1Schristos { 27604e98e3e1Schristos int referenced = 0; 27614e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 27624e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 27634e98e3e1Schristos } 27644e98e3e1Schristos return cycles; 27654e98e3e1Schristos #undef FLD 27664e98e3e1Schristos } 27674e98e3e1Schristos 27684e98e3e1Schristos static int 27694e98e3e1Schristos model_test_bnc24 (SIM_CPU *current_cpu, void *sem_arg) 27704e98e3e1Schristos { 27714e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f 27724e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 27734e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 27744e98e3e1Schristos int cycles = 0; 27754e98e3e1Schristos { 27764e98e3e1Schristos int referenced = 0; 27774e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 27784e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 27794e98e3e1Schristos } 27804e98e3e1Schristos return cycles; 27814e98e3e1Schristos #undef FLD 27824e98e3e1Schristos } 27834e98e3e1Schristos 27844e98e3e1Schristos static int 27854e98e3e1Schristos model_test_bne (SIM_CPU *current_cpu, void *sem_arg) 27864e98e3e1Schristos { 27874e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 27884e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 27894e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 27904e98e3e1Schristos int cycles = 0; 27914e98e3e1Schristos { 27924e98e3e1Schristos int referenced = 0; 27934e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 27944e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 27954e98e3e1Schristos } 27964e98e3e1Schristos return cycles; 27974e98e3e1Schristos #undef FLD 27984e98e3e1Schristos } 27994e98e3e1Schristos 28004e98e3e1Schristos static int 28014e98e3e1Schristos model_test_bra8 (SIM_CPU *current_cpu, void *sem_arg) 28024e98e3e1Schristos { 28034e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f 28044e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 28054e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 28064e98e3e1Schristos int cycles = 0; 28074e98e3e1Schristos { 28084e98e3e1Schristos int referenced = 0; 28094e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 28104e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 28114e98e3e1Schristos } 28124e98e3e1Schristos return cycles; 28134e98e3e1Schristos #undef FLD 28144e98e3e1Schristos } 28154e98e3e1Schristos 28164e98e3e1Schristos static int 28174e98e3e1Schristos model_test_bra24 (SIM_CPU *current_cpu, void *sem_arg) 28184e98e3e1Schristos { 28194e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f 28204e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 28214e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 28224e98e3e1Schristos int cycles = 0; 28234e98e3e1Schristos { 28244e98e3e1Schristos int referenced = 0; 28254e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 28264e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 28274e98e3e1Schristos } 28284e98e3e1Schristos return cycles; 28294e98e3e1Schristos #undef FLD 28304e98e3e1Schristos } 28314e98e3e1Schristos 28324e98e3e1Schristos static int 28334e98e3e1Schristos model_test_cmp (SIM_CPU *current_cpu, void *sem_arg) 28344e98e3e1Schristos { 28354e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 28364e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 28374e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 28384e98e3e1Schristos int cycles = 0; 28394e98e3e1Schristos { 28404e98e3e1Schristos int referenced = 0; 28414e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 28424e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 28434e98e3e1Schristos } 28444e98e3e1Schristos return cycles; 28454e98e3e1Schristos #undef FLD 28464e98e3e1Schristos } 28474e98e3e1Schristos 28484e98e3e1Schristos static int 28494e98e3e1Schristos model_test_cmpi (SIM_CPU *current_cpu, void *sem_arg) 28504e98e3e1Schristos { 28514e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f 28524e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 28534e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 28544e98e3e1Schristos int cycles = 0; 28554e98e3e1Schristos { 28564e98e3e1Schristos int referenced = 0; 28574e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 28584e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 28594e98e3e1Schristos } 28604e98e3e1Schristos return cycles; 28614e98e3e1Schristos #undef FLD 28624e98e3e1Schristos } 28634e98e3e1Schristos 28644e98e3e1Schristos static int 28654e98e3e1Schristos model_test_cmpu (SIM_CPU *current_cpu, void *sem_arg) 28664e98e3e1Schristos { 28674e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 28684e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 28694e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 28704e98e3e1Schristos int cycles = 0; 28714e98e3e1Schristos { 28724e98e3e1Schristos int referenced = 0; 28734e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 28744e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 28754e98e3e1Schristos } 28764e98e3e1Schristos return cycles; 28774e98e3e1Schristos #undef FLD 28784e98e3e1Schristos } 28794e98e3e1Schristos 28804e98e3e1Schristos static int 28814e98e3e1Schristos model_test_cmpui (SIM_CPU *current_cpu, void *sem_arg) 28824e98e3e1Schristos { 28834e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f 28844e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 28854e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 28864e98e3e1Schristos int cycles = 0; 28874e98e3e1Schristos { 28884e98e3e1Schristos int referenced = 0; 28894e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 28904e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 28914e98e3e1Schristos } 28924e98e3e1Schristos return cycles; 28934e98e3e1Schristos #undef FLD 28944e98e3e1Schristos } 28954e98e3e1Schristos 28964e98e3e1Schristos static int 28974e98e3e1Schristos model_test_div (SIM_CPU *current_cpu, void *sem_arg) 28984e98e3e1Schristos { 28994e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 29004e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 29014e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 29024e98e3e1Schristos int cycles = 0; 29034e98e3e1Schristos { 29044e98e3e1Schristos int referenced = 0; 29054e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 29064e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 29074e98e3e1Schristos } 29084e98e3e1Schristos return cycles; 29094e98e3e1Schristos #undef FLD 29104e98e3e1Schristos } 29114e98e3e1Schristos 29124e98e3e1Schristos static int 29134e98e3e1Schristos model_test_divu (SIM_CPU *current_cpu, void *sem_arg) 29144e98e3e1Schristos { 29154e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 29164e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 29174e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 29184e98e3e1Schristos int cycles = 0; 29194e98e3e1Schristos { 29204e98e3e1Schristos int referenced = 0; 29214e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 29224e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 29234e98e3e1Schristos } 29244e98e3e1Schristos return cycles; 29254e98e3e1Schristos #undef FLD 29264e98e3e1Schristos } 29274e98e3e1Schristos 29284e98e3e1Schristos static int 29294e98e3e1Schristos model_test_rem (SIM_CPU *current_cpu, void *sem_arg) 29304e98e3e1Schristos { 29314e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 29324e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 29334e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 29344e98e3e1Schristos int cycles = 0; 29354e98e3e1Schristos { 29364e98e3e1Schristos int referenced = 0; 29374e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 29384e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 29394e98e3e1Schristos } 29404e98e3e1Schristos return cycles; 29414e98e3e1Schristos #undef FLD 29424e98e3e1Schristos } 29434e98e3e1Schristos 29444e98e3e1Schristos static int 29454e98e3e1Schristos model_test_remu (SIM_CPU *current_cpu, void *sem_arg) 29464e98e3e1Schristos { 29474e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 29484e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 29494e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 29504e98e3e1Schristos int cycles = 0; 29514e98e3e1Schristos { 29524e98e3e1Schristos int referenced = 0; 29534e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 29544e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 29554e98e3e1Schristos } 29564e98e3e1Schristos return cycles; 29574e98e3e1Schristos #undef FLD 29584e98e3e1Schristos } 29594e98e3e1Schristos 29604e98e3e1Schristos static int 29614e98e3e1Schristos model_test_jl (SIM_CPU *current_cpu, void *sem_arg) 29624e98e3e1Schristos { 29634e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f 29644e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 29654e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 29664e98e3e1Schristos int cycles = 0; 29674e98e3e1Schristos { 29684e98e3e1Schristos int referenced = 0; 29694e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 29704e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 29714e98e3e1Schristos } 29724e98e3e1Schristos return cycles; 29734e98e3e1Schristos #undef FLD 29744e98e3e1Schristos } 29754e98e3e1Schristos 29764e98e3e1Schristos static int 29774e98e3e1Schristos model_test_jmp (SIM_CPU *current_cpu, void *sem_arg) 29784e98e3e1Schristos { 29794e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f 29804e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 29814e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 29824e98e3e1Schristos int cycles = 0; 29834e98e3e1Schristos { 29844e98e3e1Schristos int referenced = 0; 29854e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 29864e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 29874e98e3e1Schristos } 29884e98e3e1Schristos return cycles; 29894e98e3e1Schristos #undef FLD 29904e98e3e1Schristos } 29914e98e3e1Schristos 29924e98e3e1Schristos static int 29934e98e3e1Schristos model_test_ld (SIM_CPU *current_cpu, void *sem_arg) 29944e98e3e1Schristos { 29954e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 29964e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 29974e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 29984e98e3e1Schristos int cycles = 0; 29994e98e3e1Schristos { 30004e98e3e1Schristos int referenced = 0; 30014e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 30024e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 30034e98e3e1Schristos } 30044e98e3e1Schristos return cycles; 30054e98e3e1Schristos #undef FLD 30064e98e3e1Schristos } 30074e98e3e1Schristos 30084e98e3e1Schristos static int 30094e98e3e1Schristos model_test_ld_d (SIM_CPU *current_cpu, void *sem_arg) 30104e98e3e1Schristos { 30114e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 30124e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 30134e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 30144e98e3e1Schristos int cycles = 0; 30154e98e3e1Schristos { 30164e98e3e1Schristos int referenced = 0; 30174e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 30184e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 30194e98e3e1Schristos } 30204e98e3e1Schristos return cycles; 30214e98e3e1Schristos #undef FLD 30224e98e3e1Schristos } 30234e98e3e1Schristos 30244e98e3e1Schristos static int 30254e98e3e1Schristos model_test_ldb (SIM_CPU *current_cpu, void *sem_arg) 30264e98e3e1Schristos { 30274e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 30284e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 30294e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 30304e98e3e1Schristos int cycles = 0; 30314e98e3e1Schristos { 30324e98e3e1Schristos int referenced = 0; 30334e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 30344e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 30354e98e3e1Schristos } 30364e98e3e1Schristos return cycles; 30374e98e3e1Schristos #undef FLD 30384e98e3e1Schristos } 30394e98e3e1Schristos 30404e98e3e1Schristos static int 30414e98e3e1Schristos model_test_ldb_d (SIM_CPU *current_cpu, void *sem_arg) 30424e98e3e1Schristos { 30434e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 30444e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 30454e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 30464e98e3e1Schristos int cycles = 0; 30474e98e3e1Schristos { 30484e98e3e1Schristos int referenced = 0; 30494e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 30504e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 30514e98e3e1Schristos } 30524e98e3e1Schristos return cycles; 30534e98e3e1Schristos #undef FLD 30544e98e3e1Schristos } 30554e98e3e1Schristos 30564e98e3e1Schristos static int 30574e98e3e1Schristos model_test_ldh (SIM_CPU *current_cpu, void *sem_arg) 30584e98e3e1Schristos { 30594e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 30604e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 30614e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 30624e98e3e1Schristos int cycles = 0; 30634e98e3e1Schristos { 30644e98e3e1Schristos int referenced = 0; 30654e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 30664e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 30674e98e3e1Schristos } 30684e98e3e1Schristos return cycles; 30694e98e3e1Schristos #undef FLD 30704e98e3e1Schristos } 30714e98e3e1Schristos 30724e98e3e1Schristos static int 30734e98e3e1Schristos model_test_ldh_d (SIM_CPU *current_cpu, void *sem_arg) 30744e98e3e1Schristos { 30754e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 30764e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 30774e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 30784e98e3e1Schristos int cycles = 0; 30794e98e3e1Schristos { 30804e98e3e1Schristos int referenced = 0; 30814e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 30824e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 30834e98e3e1Schristos } 30844e98e3e1Schristos return cycles; 30854e98e3e1Schristos #undef FLD 30864e98e3e1Schristos } 30874e98e3e1Schristos 30884e98e3e1Schristos static int 30894e98e3e1Schristos model_test_ldub (SIM_CPU *current_cpu, void *sem_arg) 30904e98e3e1Schristos { 30914e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 30924e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 30934e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 30944e98e3e1Schristos int cycles = 0; 30954e98e3e1Schristos { 30964e98e3e1Schristos int referenced = 0; 30974e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 30984e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 30994e98e3e1Schristos } 31004e98e3e1Schristos return cycles; 31014e98e3e1Schristos #undef FLD 31024e98e3e1Schristos } 31034e98e3e1Schristos 31044e98e3e1Schristos static int 31054e98e3e1Schristos model_test_ldub_d (SIM_CPU *current_cpu, void *sem_arg) 31064e98e3e1Schristos { 31074e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 31084e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 31094e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 31104e98e3e1Schristos int cycles = 0; 31114e98e3e1Schristos { 31124e98e3e1Schristos int referenced = 0; 31134e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 31144e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 31154e98e3e1Schristos } 31164e98e3e1Schristos return cycles; 31174e98e3e1Schristos #undef FLD 31184e98e3e1Schristos } 31194e98e3e1Schristos 31204e98e3e1Schristos static int 31214e98e3e1Schristos model_test_lduh (SIM_CPU *current_cpu, void *sem_arg) 31224e98e3e1Schristos { 31234e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 31244e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 31254e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 31264e98e3e1Schristos int cycles = 0; 31274e98e3e1Schristos { 31284e98e3e1Schristos int referenced = 0; 31294e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 31304e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 31314e98e3e1Schristos } 31324e98e3e1Schristos return cycles; 31334e98e3e1Schristos #undef FLD 31344e98e3e1Schristos } 31354e98e3e1Schristos 31364e98e3e1Schristos static int 31374e98e3e1Schristos model_test_lduh_d (SIM_CPU *current_cpu, void *sem_arg) 31384e98e3e1Schristos { 31394e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 31404e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 31414e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 31424e98e3e1Schristos int cycles = 0; 31434e98e3e1Schristos { 31444e98e3e1Schristos int referenced = 0; 31454e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 31464e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 31474e98e3e1Schristos } 31484e98e3e1Schristos return cycles; 31494e98e3e1Schristos #undef FLD 31504e98e3e1Schristos } 31514e98e3e1Schristos 31524e98e3e1Schristos static int 31534e98e3e1Schristos model_test_ld_plus (SIM_CPU *current_cpu, void *sem_arg) 31544e98e3e1Schristos { 31554e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 31564e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 31574e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 31584e98e3e1Schristos int cycles = 0; 31594e98e3e1Schristos { 31604e98e3e1Schristos int referenced = 0; 31614e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 31624e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 31634e98e3e1Schristos } 31644e98e3e1Schristos return cycles; 31654e98e3e1Schristos #undef FLD 31664e98e3e1Schristos } 31674e98e3e1Schristos 31684e98e3e1Schristos static int 31694e98e3e1Schristos model_test_ld24 (SIM_CPU *current_cpu, void *sem_arg) 31704e98e3e1Schristos { 31714e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld24.f 31724e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 31734e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 31744e98e3e1Schristos int cycles = 0; 31754e98e3e1Schristos { 31764e98e3e1Schristos int referenced = 0; 31774e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 31784e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 31794e98e3e1Schristos } 31804e98e3e1Schristos return cycles; 31814e98e3e1Schristos #undef FLD 31824e98e3e1Schristos } 31834e98e3e1Schristos 31844e98e3e1Schristos static int 31854e98e3e1Schristos model_test_ldi8 (SIM_CPU *current_cpu, void *sem_arg) 31864e98e3e1Schristos { 31874e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_addi.f 31884e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 31894e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 31904e98e3e1Schristos int cycles = 0; 31914e98e3e1Schristos { 31924e98e3e1Schristos int referenced = 0; 31934e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 31944e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 31954e98e3e1Schristos } 31964e98e3e1Schristos return cycles; 31974e98e3e1Schristos #undef FLD 31984e98e3e1Schristos } 31994e98e3e1Schristos 32004e98e3e1Schristos static int 32014e98e3e1Schristos model_test_ldi16 (SIM_CPU *current_cpu, void *sem_arg) 32024e98e3e1Schristos { 32034e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 32044e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 32054e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 32064e98e3e1Schristos int cycles = 0; 32074e98e3e1Schristos { 32084e98e3e1Schristos int referenced = 0; 32094e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 32104e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 32114e98e3e1Schristos } 32124e98e3e1Schristos return cycles; 32134e98e3e1Schristos #undef FLD 32144e98e3e1Schristos } 32154e98e3e1Schristos 32164e98e3e1Schristos static int 32174e98e3e1Schristos model_test_lock (SIM_CPU *current_cpu, void *sem_arg) 32184e98e3e1Schristos { 32194e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 32204e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 32214e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 32224e98e3e1Schristos int cycles = 0; 32234e98e3e1Schristos { 32244e98e3e1Schristos int referenced = 0; 32254e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 32264e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 32274e98e3e1Schristos } 32284e98e3e1Schristos return cycles; 32294e98e3e1Schristos #undef FLD 32304e98e3e1Schristos } 32314e98e3e1Schristos 32324e98e3e1Schristos static int 32334e98e3e1Schristos model_test_machi (SIM_CPU *current_cpu, void *sem_arg) 32344e98e3e1Schristos { 32354e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 32364e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 32374e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 32384e98e3e1Schristos int cycles = 0; 32394e98e3e1Schristos { 32404e98e3e1Schristos int referenced = 0; 32414e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 32424e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 32434e98e3e1Schristos } 32444e98e3e1Schristos return cycles; 32454e98e3e1Schristos #undef FLD 32464e98e3e1Schristos } 32474e98e3e1Schristos 32484e98e3e1Schristos static int 32494e98e3e1Schristos model_test_maclo (SIM_CPU *current_cpu, void *sem_arg) 32504e98e3e1Schristos { 32514e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 32524e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 32534e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 32544e98e3e1Schristos int cycles = 0; 32554e98e3e1Schristos { 32564e98e3e1Schristos int referenced = 0; 32574e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 32584e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 32594e98e3e1Schristos } 32604e98e3e1Schristos return cycles; 32614e98e3e1Schristos #undef FLD 32624e98e3e1Schristos } 32634e98e3e1Schristos 32644e98e3e1Schristos static int 32654e98e3e1Schristos model_test_macwhi (SIM_CPU *current_cpu, void *sem_arg) 32664e98e3e1Schristos { 32674e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 32684e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 32694e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 32704e98e3e1Schristos int cycles = 0; 32714e98e3e1Schristos { 32724e98e3e1Schristos int referenced = 0; 32734e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 32744e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 32754e98e3e1Schristos } 32764e98e3e1Schristos return cycles; 32774e98e3e1Schristos #undef FLD 32784e98e3e1Schristos } 32794e98e3e1Schristos 32804e98e3e1Schristos static int 32814e98e3e1Schristos model_test_macwlo (SIM_CPU *current_cpu, void *sem_arg) 32824e98e3e1Schristos { 32834e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 32844e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 32854e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 32864e98e3e1Schristos int cycles = 0; 32874e98e3e1Schristos { 32884e98e3e1Schristos int referenced = 0; 32894e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 32904e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 32914e98e3e1Schristos } 32924e98e3e1Schristos return cycles; 32934e98e3e1Schristos #undef FLD 32944e98e3e1Schristos } 32954e98e3e1Schristos 32964e98e3e1Schristos static int 32974e98e3e1Schristos model_test_mul (SIM_CPU *current_cpu, void *sem_arg) 32984e98e3e1Schristos { 32994e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 33004e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 33014e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 33024e98e3e1Schristos int cycles = 0; 33034e98e3e1Schristos { 33044e98e3e1Schristos int referenced = 0; 33054e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 33064e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 33074e98e3e1Schristos } 33084e98e3e1Schristos return cycles; 33094e98e3e1Schristos #undef FLD 33104e98e3e1Schristos } 33114e98e3e1Schristos 33124e98e3e1Schristos static int 33134e98e3e1Schristos model_test_mulhi (SIM_CPU *current_cpu, void *sem_arg) 33144e98e3e1Schristos { 33154e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 33164e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 33174e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 33184e98e3e1Schristos int cycles = 0; 33194e98e3e1Schristos { 33204e98e3e1Schristos int referenced = 0; 33214e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 33224e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 33234e98e3e1Schristos } 33244e98e3e1Schristos return cycles; 33254e98e3e1Schristos #undef FLD 33264e98e3e1Schristos } 33274e98e3e1Schristos 33284e98e3e1Schristos static int 33294e98e3e1Schristos model_test_mullo (SIM_CPU *current_cpu, void *sem_arg) 33304e98e3e1Schristos { 33314e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 33324e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 33334e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 33344e98e3e1Schristos int cycles = 0; 33354e98e3e1Schristos { 33364e98e3e1Schristos int referenced = 0; 33374e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 33384e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 33394e98e3e1Schristos } 33404e98e3e1Schristos return cycles; 33414e98e3e1Schristos #undef FLD 33424e98e3e1Schristos } 33434e98e3e1Schristos 33444e98e3e1Schristos static int 33454e98e3e1Schristos model_test_mulwhi (SIM_CPU *current_cpu, void *sem_arg) 33464e98e3e1Schristos { 33474e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 33484e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 33494e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 33504e98e3e1Schristos int cycles = 0; 33514e98e3e1Schristos { 33524e98e3e1Schristos int referenced = 0; 33534e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 33544e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 33554e98e3e1Schristos } 33564e98e3e1Schristos return cycles; 33574e98e3e1Schristos #undef FLD 33584e98e3e1Schristos } 33594e98e3e1Schristos 33604e98e3e1Schristos static int 33614e98e3e1Schristos model_test_mulwlo (SIM_CPU *current_cpu, void *sem_arg) 33624e98e3e1Schristos { 33634e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 33644e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 33654e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 33664e98e3e1Schristos int cycles = 0; 33674e98e3e1Schristos { 33684e98e3e1Schristos int referenced = 0; 33694e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 33704e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 33714e98e3e1Schristos } 33724e98e3e1Schristos return cycles; 33734e98e3e1Schristos #undef FLD 33744e98e3e1Schristos } 33754e98e3e1Schristos 33764e98e3e1Schristos static int 33774e98e3e1Schristos model_test_mv (SIM_CPU *current_cpu, void *sem_arg) 33784e98e3e1Schristos { 33794e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 33804e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 33814e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 33824e98e3e1Schristos int cycles = 0; 33834e98e3e1Schristos { 33844e98e3e1Schristos int referenced = 0; 33854e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 33864e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 33874e98e3e1Schristos } 33884e98e3e1Schristos return cycles; 33894e98e3e1Schristos #undef FLD 33904e98e3e1Schristos } 33914e98e3e1Schristos 33924e98e3e1Schristos static int 33934e98e3e1Schristos model_test_mvfachi (SIM_CPU *current_cpu, void *sem_arg) 33944e98e3e1Schristos { 33954e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_seth.f 33964e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 33974e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 33984e98e3e1Schristos int cycles = 0; 33994e98e3e1Schristos { 34004e98e3e1Schristos int referenced = 0; 34014e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 34024e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 34034e98e3e1Schristos } 34044e98e3e1Schristos return cycles; 34054e98e3e1Schristos #undef FLD 34064e98e3e1Schristos } 34074e98e3e1Schristos 34084e98e3e1Schristos static int 34094e98e3e1Schristos model_test_mvfaclo (SIM_CPU *current_cpu, void *sem_arg) 34104e98e3e1Schristos { 34114e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_seth.f 34124e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 34134e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 34144e98e3e1Schristos int cycles = 0; 34154e98e3e1Schristos { 34164e98e3e1Schristos int referenced = 0; 34174e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 34184e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 34194e98e3e1Schristos } 34204e98e3e1Schristos return cycles; 34214e98e3e1Schristos #undef FLD 34224e98e3e1Schristos } 34234e98e3e1Schristos 34244e98e3e1Schristos static int 34254e98e3e1Schristos model_test_mvfacmi (SIM_CPU *current_cpu, void *sem_arg) 34264e98e3e1Schristos { 34274e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_seth.f 34284e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 34294e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 34304e98e3e1Schristos int cycles = 0; 34314e98e3e1Schristos { 34324e98e3e1Schristos int referenced = 0; 34334e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 34344e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 34354e98e3e1Schristos } 34364e98e3e1Schristos return cycles; 34374e98e3e1Schristos #undef FLD 34384e98e3e1Schristos } 34394e98e3e1Schristos 34404e98e3e1Schristos static int 34414e98e3e1Schristos model_test_mvfc (SIM_CPU *current_cpu, void *sem_arg) 34424e98e3e1Schristos { 34434e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 34444e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 34454e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 34464e98e3e1Schristos int cycles = 0; 34474e98e3e1Schristos { 34484e98e3e1Schristos int referenced = 0; 34494e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 34504e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 34514e98e3e1Schristos } 34524e98e3e1Schristos return cycles; 34534e98e3e1Schristos #undef FLD 34544e98e3e1Schristos } 34554e98e3e1Schristos 34564e98e3e1Schristos static int 34574e98e3e1Schristos model_test_mvtachi (SIM_CPU *current_cpu, void *sem_arg) 34584e98e3e1Schristos { 34594e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 34604e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 34614e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 34624e98e3e1Schristos int cycles = 0; 34634e98e3e1Schristos { 34644e98e3e1Schristos int referenced = 0; 34654e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 34664e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 34674e98e3e1Schristos } 34684e98e3e1Schristos return cycles; 34694e98e3e1Schristos #undef FLD 34704e98e3e1Schristos } 34714e98e3e1Schristos 34724e98e3e1Schristos static int 34734e98e3e1Schristos model_test_mvtaclo (SIM_CPU *current_cpu, void *sem_arg) 34744e98e3e1Schristos { 34754e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 34764e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 34774e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 34784e98e3e1Schristos int cycles = 0; 34794e98e3e1Schristos { 34804e98e3e1Schristos int referenced = 0; 34814e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 34824e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 34834e98e3e1Schristos } 34844e98e3e1Schristos return cycles; 34854e98e3e1Schristos #undef FLD 34864e98e3e1Schristos } 34874e98e3e1Schristos 34884e98e3e1Schristos static int 34894e98e3e1Schristos model_test_mvtc (SIM_CPU *current_cpu, void *sem_arg) 34904e98e3e1Schristos { 34914e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 34924e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 34934e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 34944e98e3e1Schristos int cycles = 0; 34954e98e3e1Schristos { 34964e98e3e1Schristos int referenced = 0; 34974e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 34984e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 34994e98e3e1Schristos } 35004e98e3e1Schristos return cycles; 35014e98e3e1Schristos #undef FLD 35024e98e3e1Schristos } 35034e98e3e1Schristos 35044e98e3e1Schristos static int 35054e98e3e1Schristos model_test_neg (SIM_CPU *current_cpu, void *sem_arg) 35064e98e3e1Schristos { 35074e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 35084e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 35094e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 35104e98e3e1Schristos int cycles = 0; 35114e98e3e1Schristos { 35124e98e3e1Schristos int referenced = 0; 35134e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 35144e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 35154e98e3e1Schristos } 35164e98e3e1Schristos return cycles; 35174e98e3e1Schristos #undef FLD 35184e98e3e1Schristos } 35194e98e3e1Schristos 35204e98e3e1Schristos static int 35214e98e3e1Schristos model_test_nop (SIM_CPU *current_cpu, void *sem_arg) 35224e98e3e1Schristos { 35234e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f 35244e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 35254e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 35264e98e3e1Schristos int cycles = 0; 35274e98e3e1Schristos { 35284e98e3e1Schristos int referenced = 0; 35294e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 35304e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 35314e98e3e1Schristos } 35324e98e3e1Schristos return cycles; 35334e98e3e1Schristos #undef FLD 35344e98e3e1Schristos } 35354e98e3e1Schristos 35364e98e3e1Schristos static int 35374e98e3e1Schristos model_test_not (SIM_CPU *current_cpu, void *sem_arg) 35384e98e3e1Schristos { 35394e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 35404e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 35414e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 35424e98e3e1Schristos int cycles = 0; 35434e98e3e1Schristos { 35444e98e3e1Schristos int referenced = 0; 35454e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 35464e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 35474e98e3e1Schristos } 35484e98e3e1Schristos return cycles; 35494e98e3e1Schristos #undef FLD 35504e98e3e1Schristos } 35514e98e3e1Schristos 35524e98e3e1Schristos static int 35534e98e3e1Schristos model_test_rac (SIM_CPU *current_cpu, void *sem_arg) 35544e98e3e1Schristos { 35554e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f 35564e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 35574e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 35584e98e3e1Schristos int cycles = 0; 35594e98e3e1Schristos { 35604e98e3e1Schristos int referenced = 0; 35614e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 35624e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 35634e98e3e1Schristos } 35644e98e3e1Schristos return cycles; 35654e98e3e1Schristos #undef FLD 35664e98e3e1Schristos } 35674e98e3e1Schristos 35684e98e3e1Schristos static int 35694e98e3e1Schristos model_test_rach (SIM_CPU *current_cpu, void *sem_arg) 35704e98e3e1Schristos { 35714e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f 35724e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 35734e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 35744e98e3e1Schristos int cycles = 0; 35754e98e3e1Schristos { 35764e98e3e1Schristos int referenced = 0; 35774e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 35784e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 35794e98e3e1Schristos } 35804e98e3e1Schristos return cycles; 35814e98e3e1Schristos #undef FLD 35824e98e3e1Schristos } 35834e98e3e1Schristos 35844e98e3e1Schristos static int 35854e98e3e1Schristos model_test_rte (SIM_CPU *current_cpu, void *sem_arg) 35864e98e3e1Schristos { 35874e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f 35884e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 35894e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 35904e98e3e1Schristos int cycles = 0; 35914e98e3e1Schristos { 35924e98e3e1Schristos int referenced = 0; 35934e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 35944e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 35954e98e3e1Schristos } 35964e98e3e1Schristos return cycles; 35974e98e3e1Schristos #undef FLD 35984e98e3e1Schristos } 35994e98e3e1Schristos 36004e98e3e1Schristos static int 36014e98e3e1Schristos model_test_seth (SIM_CPU *current_cpu, void *sem_arg) 36024e98e3e1Schristos { 36034e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_seth.f 36044e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 36054e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 36064e98e3e1Schristos int cycles = 0; 36074e98e3e1Schristos { 36084e98e3e1Schristos int referenced = 0; 36094e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 36104e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 36114e98e3e1Schristos } 36124e98e3e1Schristos return cycles; 36134e98e3e1Schristos #undef FLD 36144e98e3e1Schristos } 36154e98e3e1Schristos 36164e98e3e1Schristos static int 36174e98e3e1Schristos model_test_sll (SIM_CPU *current_cpu, void *sem_arg) 36184e98e3e1Schristos { 36194e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 36204e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 36214e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 36224e98e3e1Schristos int cycles = 0; 36234e98e3e1Schristos { 36244e98e3e1Schristos int referenced = 0; 36254e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 36264e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 36274e98e3e1Schristos } 36284e98e3e1Schristos return cycles; 36294e98e3e1Schristos #undef FLD 36304e98e3e1Schristos } 36314e98e3e1Schristos 36324e98e3e1Schristos static int 36334e98e3e1Schristos model_test_sll3 (SIM_CPU *current_cpu, void *sem_arg) 36344e98e3e1Schristos { 36354e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 36364e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 36374e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 36384e98e3e1Schristos int cycles = 0; 36394e98e3e1Schristos { 36404e98e3e1Schristos int referenced = 0; 36414e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 36424e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 36434e98e3e1Schristos } 36444e98e3e1Schristos return cycles; 36454e98e3e1Schristos #undef FLD 36464e98e3e1Schristos } 36474e98e3e1Schristos 36484e98e3e1Schristos static int 36494e98e3e1Schristos model_test_slli (SIM_CPU *current_cpu, void *sem_arg) 36504e98e3e1Schristos { 36514e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_slli.f 36524e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 36534e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 36544e98e3e1Schristos int cycles = 0; 36554e98e3e1Schristos { 36564e98e3e1Schristos int referenced = 0; 36574e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 36584e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 36594e98e3e1Schristos } 36604e98e3e1Schristos return cycles; 36614e98e3e1Schristos #undef FLD 36624e98e3e1Schristos } 36634e98e3e1Schristos 36644e98e3e1Schristos static int 36654e98e3e1Schristos model_test_sra (SIM_CPU *current_cpu, void *sem_arg) 36664e98e3e1Schristos { 36674e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 36684e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 36694e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 36704e98e3e1Schristos int cycles = 0; 36714e98e3e1Schristos { 36724e98e3e1Schristos int referenced = 0; 36734e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 36744e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 36754e98e3e1Schristos } 36764e98e3e1Schristos return cycles; 36774e98e3e1Schristos #undef FLD 36784e98e3e1Schristos } 36794e98e3e1Schristos 36804e98e3e1Schristos static int 36814e98e3e1Schristos model_test_sra3 (SIM_CPU *current_cpu, void *sem_arg) 36824e98e3e1Schristos { 36834e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 36844e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 36854e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 36864e98e3e1Schristos int cycles = 0; 36874e98e3e1Schristos { 36884e98e3e1Schristos int referenced = 0; 36894e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 36904e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 36914e98e3e1Schristos } 36924e98e3e1Schristos return cycles; 36934e98e3e1Schristos #undef FLD 36944e98e3e1Schristos } 36954e98e3e1Schristos 36964e98e3e1Schristos static int 36974e98e3e1Schristos model_test_srai (SIM_CPU *current_cpu, void *sem_arg) 36984e98e3e1Schristos { 36994e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_slli.f 37004e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 37014e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 37024e98e3e1Schristos int cycles = 0; 37034e98e3e1Schristos { 37044e98e3e1Schristos int referenced = 0; 37054e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 37064e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 37074e98e3e1Schristos } 37084e98e3e1Schristos return cycles; 37094e98e3e1Schristos #undef FLD 37104e98e3e1Schristos } 37114e98e3e1Schristos 37124e98e3e1Schristos static int 37134e98e3e1Schristos model_test_srl (SIM_CPU *current_cpu, void *sem_arg) 37144e98e3e1Schristos { 37154e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 37164e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 37174e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 37184e98e3e1Schristos int cycles = 0; 37194e98e3e1Schristos { 37204e98e3e1Schristos int referenced = 0; 37214e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 37224e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 37234e98e3e1Schristos } 37244e98e3e1Schristos return cycles; 37254e98e3e1Schristos #undef FLD 37264e98e3e1Schristos } 37274e98e3e1Schristos 37284e98e3e1Schristos static int 37294e98e3e1Schristos model_test_srl3 (SIM_CPU *current_cpu, void *sem_arg) 37304e98e3e1Schristos { 37314e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 37324e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 37334e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 37344e98e3e1Schristos int cycles = 0; 37354e98e3e1Schristos { 37364e98e3e1Schristos int referenced = 0; 37374e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 37384e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 37394e98e3e1Schristos } 37404e98e3e1Schristos return cycles; 37414e98e3e1Schristos #undef FLD 37424e98e3e1Schristos } 37434e98e3e1Schristos 37444e98e3e1Schristos static int 37454e98e3e1Schristos model_test_srli (SIM_CPU *current_cpu, void *sem_arg) 37464e98e3e1Schristos { 37474e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_slli.f 37484e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 37494e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 37504e98e3e1Schristos int cycles = 0; 37514e98e3e1Schristos { 37524e98e3e1Schristos int referenced = 0; 37534e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 37544e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 37554e98e3e1Schristos } 37564e98e3e1Schristos return cycles; 37574e98e3e1Schristos #undef FLD 37584e98e3e1Schristos } 37594e98e3e1Schristos 37604e98e3e1Schristos static int 37614e98e3e1Schristos model_test_st (SIM_CPU *current_cpu, void *sem_arg) 37624e98e3e1Schristos { 37634e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 37644e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 37654e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 37664e98e3e1Schristos int cycles = 0; 37674e98e3e1Schristos { 37684e98e3e1Schristos int referenced = 0; 37694e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 37704e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 37714e98e3e1Schristos } 37724e98e3e1Schristos return cycles; 37734e98e3e1Schristos #undef FLD 37744e98e3e1Schristos } 37754e98e3e1Schristos 37764e98e3e1Schristos static int 37774e98e3e1Schristos model_test_st_d (SIM_CPU *current_cpu, void *sem_arg) 37784e98e3e1Schristos { 37794e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f 37804e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 37814e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 37824e98e3e1Schristos int cycles = 0; 37834e98e3e1Schristos { 37844e98e3e1Schristos int referenced = 0; 37854e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 37864e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 37874e98e3e1Schristos } 37884e98e3e1Schristos return cycles; 37894e98e3e1Schristos #undef FLD 37904e98e3e1Schristos } 37914e98e3e1Schristos 37924e98e3e1Schristos static int 37934e98e3e1Schristos model_test_stb (SIM_CPU *current_cpu, void *sem_arg) 37944e98e3e1Schristos { 37954e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 37964e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 37974e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 37984e98e3e1Schristos int cycles = 0; 37994e98e3e1Schristos { 38004e98e3e1Schristos int referenced = 0; 38014e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 38024e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 38034e98e3e1Schristos } 38044e98e3e1Schristos return cycles; 38054e98e3e1Schristos #undef FLD 38064e98e3e1Schristos } 38074e98e3e1Schristos 38084e98e3e1Schristos static int 38094e98e3e1Schristos model_test_stb_d (SIM_CPU *current_cpu, void *sem_arg) 38104e98e3e1Schristos { 38114e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f 38124e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 38134e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 38144e98e3e1Schristos int cycles = 0; 38154e98e3e1Schristos { 38164e98e3e1Schristos int referenced = 0; 38174e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 38184e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 38194e98e3e1Schristos } 38204e98e3e1Schristos return cycles; 38214e98e3e1Schristos #undef FLD 38224e98e3e1Schristos } 38234e98e3e1Schristos 38244e98e3e1Schristos static int 38254e98e3e1Schristos model_test_sth (SIM_CPU *current_cpu, void *sem_arg) 38264e98e3e1Schristos { 38274e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 38284e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 38294e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 38304e98e3e1Schristos int cycles = 0; 38314e98e3e1Schristos { 38324e98e3e1Schristos int referenced = 0; 38334e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 38344e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 38354e98e3e1Schristos } 38364e98e3e1Schristos return cycles; 38374e98e3e1Schristos #undef FLD 38384e98e3e1Schristos } 38394e98e3e1Schristos 38404e98e3e1Schristos static int 38414e98e3e1Schristos model_test_sth_d (SIM_CPU *current_cpu, void *sem_arg) 38424e98e3e1Schristos { 38434e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f 38444e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 38454e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 38464e98e3e1Schristos int cycles = 0; 38474e98e3e1Schristos { 38484e98e3e1Schristos int referenced = 0; 38494e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 38504e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 38514e98e3e1Schristos } 38524e98e3e1Schristos return cycles; 38534e98e3e1Schristos #undef FLD 38544e98e3e1Schristos } 38554e98e3e1Schristos 38564e98e3e1Schristos static int 38574e98e3e1Schristos model_test_st_plus (SIM_CPU *current_cpu, void *sem_arg) 38584e98e3e1Schristos { 38594e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 38604e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 38614e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 38624e98e3e1Schristos int cycles = 0; 38634e98e3e1Schristos { 38644e98e3e1Schristos int referenced = 0; 38654e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 38664e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 38674e98e3e1Schristos } 38684e98e3e1Schristos return cycles; 38694e98e3e1Schristos #undef FLD 38704e98e3e1Schristos } 38714e98e3e1Schristos 38724e98e3e1Schristos static int 38734e98e3e1Schristos model_test_st_minus (SIM_CPU *current_cpu, void *sem_arg) 38744e98e3e1Schristos { 38754e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 38764e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 38774e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 38784e98e3e1Schristos int cycles = 0; 38794e98e3e1Schristos { 38804e98e3e1Schristos int referenced = 0; 38814e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 38824e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 38834e98e3e1Schristos } 38844e98e3e1Schristos return cycles; 38854e98e3e1Schristos #undef FLD 38864e98e3e1Schristos } 38874e98e3e1Schristos 38884e98e3e1Schristos static int 38894e98e3e1Schristos model_test_sub (SIM_CPU *current_cpu, void *sem_arg) 38904e98e3e1Schristos { 38914e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 38924e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 38934e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 38944e98e3e1Schristos int cycles = 0; 38954e98e3e1Schristos { 38964e98e3e1Schristos int referenced = 0; 38974e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 38984e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 38994e98e3e1Schristos } 39004e98e3e1Schristos return cycles; 39014e98e3e1Schristos #undef FLD 39024e98e3e1Schristos } 39034e98e3e1Schristos 39044e98e3e1Schristos static int 39054e98e3e1Schristos model_test_subv (SIM_CPU *current_cpu, void *sem_arg) 39064e98e3e1Schristos { 39074e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 39084e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 39094e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 39104e98e3e1Schristos int cycles = 0; 39114e98e3e1Schristos { 39124e98e3e1Schristos int referenced = 0; 39134e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 39144e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 39154e98e3e1Schristos } 39164e98e3e1Schristos return cycles; 39174e98e3e1Schristos #undef FLD 39184e98e3e1Schristos } 39194e98e3e1Schristos 39204e98e3e1Schristos static int 39214e98e3e1Schristos model_test_subx (SIM_CPU *current_cpu, void *sem_arg) 39224e98e3e1Schristos { 39234e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 39244e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 39254e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 39264e98e3e1Schristos int cycles = 0; 39274e98e3e1Schristos { 39284e98e3e1Schristos int referenced = 0; 39294e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 39304e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 39314e98e3e1Schristos } 39324e98e3e1Schristos return cycles; 39334e98e3e1Schristos #undef FLD 39344e98e3e1Schristos } 39354e98e3e1Schristos 39364e98e3e1Schristos static int 39374e98e3e1Schristos model_test_trap (SIM_CPU *current_cpu, void *sem_arg) 39384e98e3e1Schristos { 39394e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_trap.f 39404e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 39414e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 39424e98e3e1Schristos int cycles = 0; 39434e98e3e1Schristos { 39444e98e3e1Schristos int referenced = 0; 39454e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 39464e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 39474e98e3e1Schristos } 39484e98e3e1Schristos return cycles; 39494e98e3e1Schristos #undef FLD 39504e98e3e1Schristos } 39514e98e3e1Schristos 39524e98e3e1Schristos static int 39534e98e3e1Schristos model_test_unlock (SIM_CPU *current_cpu, void *sem_arg) 39544e98e3e1Schristos { 39554e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 39564e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 39574e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 39584e98e3e1Schristos int cycles = 0; 39594e98e3e1Schristos { 39604e98e3e1Schristos int referenced = 0; 39614e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 39624e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 39634e98e3e1Schristos } 39644e98e3e1Schristos return cycles; 39654e98e3e1Schristos #undef FLD 39664e98e3e1Schristos } 39674e98e3e1Schristos 39684e98e3e1Schristos static int 39694e98e3e1Schristos model_test_clrpsw (SIM_CPU *current_cpu, void *sem_arg) 39704e98e3e1Schristos { 39714e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_clrpsw.f 39724e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 39734e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 39744e98e3e1Schristos int cycles = 0; 39754e98e3e1Schristos { 39764e98e3e1Schristos int referenced = 0; 39774e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 39784e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 39794e98e3e1Schristos } 39804e98e3e1Schristos return cycles; 39814e98e3e1Schristos #undef FLD 39824e98e3e1Schristos } 39834e98e3e1Schristos 39844e98e3e1Schristos static int 39854e98e3e1Schristos model_test_setpsw (SIM_CPU *current_cpu, void *sem_arg) 39864e98e3e1Schristos { 39874e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_clrpsw.f 39884e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 39894e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 39904e98e3e1Schristos int cycles = 0; 39914e98e3e1Schristos { 39924e98e3e1Schristos int referenced = 0; 39934e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 39944e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 39954e98e3e1Schristos } 39964e98e3e1Schristos return cycles; 39974e98e3e1Schristos #undef FLD 39984e98e3e1Schristos } 39994e98e3e1Schristos 40004e98e3e1Schristos static int 40014e98e3e1Schristos model_test_bset (SIM_CPU *current_cpu, void *sem_arg) 40024e98e3e1Schristos { 40034e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f 40044e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 40054e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 40064e98e3e1Schristos int cycles = 0; 40074e98e3e1Schristos { 40084e98e3e1Schristos int referenced = 0; 40094e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 40104e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 40114e98e3e1Schristos } 40124e98e3e1Schristos return cycles; 40134e98e3e1Schristos #undef FLD 40144e98e3e1Schristos } 40154e98e3e1Schristos 40164e98e3e1Schristos static int 40174e98e3e1Schristos model_test_bclr (SIM_CPU *current_cpu, void *sem_arg) 40184e98e3e1Schristos { 40194e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f 40204e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 40214e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 40224e98e3e1Schristos int cycles = 0; 40234e98e3e1Schristos { 40244e98e3e1Schristos int referenced = 0; 40254e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 40264e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 40274e98e3e1Schristos } 40284e98e3e1Schristos return cycles; 40294e98e3e1Schristos #undef FLD 40304e98e3e1Schristos } 40314e98e3e1Schristos 40324e98e3e1Schristos static int 40334e98e3e1Schristos model_test_btst (SIM_CPU *current_cpu, void *sem_arg) 40344e98e3e1Schristos { 40354e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f 40364e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 40374e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 40384e98e3e1Schristos int cycles = 0; 40394e98e3e1Schristos { 40404e98e3e1Schristos int referenced = 0; 40414e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 40424e98e3e1Schristos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced); 40434e98e3e1Schristos } 40444e98e3e1Schristos return cycles; 40454e98e3e1Schristos #undef FLD 40464e98e3e1Schristos } 40474e98e3e1Schristos 40484e98e3e1Schristos /* We assume UNIT_NONE == 0 because the tables don't always terminate 40494e98e3e1Schristos entries with it. */ 40504e98e3e1Schristos 40514e98e3e1Schristos /* Model timing data for `m32r/d'. */ 40524e98e3e1Schristos 40534e98e3e1Schristos static const INSN_TIMING m32r_d_timing[] = { 40544e98e3e1Schristos { M32RBF_INSN_X_INVALID, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40554e98e3e1Schristos { M32RBF_INSN_X_AFTER, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40564e98e3e1Schristos { M32RBF_INSN_X_BEFORE, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40574e98e3e1Schristos { M32RBF_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40584e98e3e1Schristos { M32RBF_INSN_X_CHAIN, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40594e98e3e1Schristos { M32RBF_INSN_X_BEGIN, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40604e98e3e1Schristos { M32RBF_INSN_ADD, model_m32r_d_add, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40614e98e3e1Schristos { M32RBF_INSN_ADD3, model_m32r_d_add3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40624e98e3e1Schristos { M32RBF_INSN_AND, model_m32r_d_and, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40634e98e3e1Schristos { M32RBF_INSN_AND3, model_m32r_d_and3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40644e98e3e1Schristos { M32RBF_INSN_OR, model_m32r_d_or, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40654e98e3e1Schristos { M32RBF_INSN_OR3, model_m32r_d_or3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40664e98e3e1Schristos { M32RBF_INSN_XOR, model_m32r_d_xor, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40674e98e3e1Schristos { M32RBF_INSN_XOR3, model_m32r_d_xor3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40684e98e3e1Schristos { M32RBF_INSN_ADDI, model_m32r_d_addi, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40694e98e3e1Schristos { M32RBF_INSN_ADDV, model_m32r_d_addv, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40704e98e3e1Schristos { M32RBF_INSN_ADDV3, model_m32r_d_addv3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40714e98e3e1Schristos { M32RBF_INSN_ADDX, model_m32r_d_addx, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 40724e98e3e1Schristos { M32RBF_INSN_BC8, model_m32r_d_bc8, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } }, 40734e98e3e1Schristos { M32RBF_INSN_BC24, model_m32r_d_bc24, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } }, 40744e98e3e1Schristos { M32RBF_INSN_BEQ, model_m32r_d_beq, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } }, 40754e98e3e1Schristos { M32RBF_INSN_BEQZ, model_m32r_d_beqz, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } }, 40764e98e3e1Schristos { M32RBF_INSN_BGEZ, model_m32r_d_bgez, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } }, 40774e98e3e1Schristos { M32RBF_INSN_BGTZ, model_m32r_d_bgtz, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } }, 40784e98e3e1Schristos { M32RBF_INSN_BLEZ, model_m32r_d_blez, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } }, 40794e98e3e1Schristos { M32RBF_INSN_BLTZ, model_m32r_d_bltz, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } }, 40804e98e3e1Schristos { M32RBF_INSN_BNEZ, model_m32r_d_bnez, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } }, 40814e98e3e1Schristos { M32RBF_INSN_BL8, model_m32r_d_bl8, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } }, 40824e98e3e1Schristos { M32RBF_INSN_BL24, model_m32r_d_bl24, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } }, 40834e98e3e1Schristos { M32RBF_INSN_BNC8, model_m32r_d_bnc8, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } }, 40844e98e3e1Schristos { M32RBF_INSN_BNC24, model_m32r_d_bnc24, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } }, 40854e98e3e1Schristos { M32RBF_INSN_BNE, model_m32r_d_bne, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } }, 40864e98e3e1Schristos { M32RBF_INSN_BRA8, model_m32r_d_bra8, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } }, 40874e98e3e1Schristos { M32RBF_INSN_BRA24, model_m32r_d_bra24, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } }, 40884e98e3e1Schristos { M32RBF_INSN_CMP, model_m32r_d_cmp, { { (int) UNIT_M32R_D_U_CMP, 1, 1 } } }, 40894e98e3e1Schristos { M32RBF_INSN_CMPI, model_m32r_d_cmpi, { { (int) UNIT_M32R_D_U_CMP, 1, 1 } } }, 40904e98e3e1Schristos { M32RBF_INSN_CMPU, model_m32r_d_cmpu, { { (int) UNIT_M32R_D_U_CMP, 1, 1 } } }, 40914e98e3e1Schristos { M32RBF_INSN_CMPUI, model_m32r_d_cmpui, { { (int) UNIT_M32R_D_U_CMP, 1, 1 } } }, 40924e98e3e1Schristos { M32RBF_INSN_DIV, model_m32r_d_div, { { (int) UNIT_M32R_D_U_EXEC, 1, 37 } } }, 40934e98e3e1Schristos { M32RBF_INSN_DIVU, model_m32r_d_divu, { { (int) UNIT_M32R_D_U_EXEC, 1, 37 } } }, 40944e98e3e1Schristos { M32RBF_INSN_REM, model_m32r_d_rem, { { (int) UNIT_M32R_D_U_EXEC, 1, 37 } } }, 40954e98e3e1Schristos { M32RBF_INSN_REMU, model_m32r_d_remu, { { (int) UNIT_M32R_D_U_EXEC, 1, 37 } } }, 40964e98e3e1Schristos { M32RBF_INSN_JL, model_m32r_d_jl, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } }, 40974e98e3e1Schristos { M32RBF_INSN_JMP, model_m32r_d_jmp, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } }, 40984e98e3e1Schristos { M32RBF_INSN_LD, model_m32r_d_ld, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } }, 40994e98e3e1Schristos { M32RBF_INSN_LD_D, model_m32r_d_ld_d, { { (int) UNIT_M32R_D_U_LOAD, 1, 2 } } }, 41004e98e3e1Schristos { M32RBF_INSN_LDB, model_m32r_d_ldb, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } }, 41014e98e3e1Schristos { M32RBF_INSN_LDB_D, model_m32r_d_ldb_d, { { (int) UNIT_M32R_D_U_LOAD, 1, 2 } } }, 41024e98e3e1Schristos { M32RBF_INSN_LDH, model_m32r_d_ldh, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } }, 41034e98e3e1Schristos { M32RBF_INSN_LDH_D, model_m32r_d_ldh_d, { { (int) UNIT_M32R_D_U_LOAD, 1, 2 } } }, 41044e98e3e1Schristos { M32RBF_INSN_LDUB, model_m32r_d_ldub, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } }, 41054e98e3e1Schristos { M32RBF_INSN_LDUB_D, model_m32r_d_ldub_d, { { (int) UNIT_M32R_D_U_LOAD, 1, 2 } } }, 41064e98e3e1Schristos { M32RBF_INSN_LDUH, model_m32r_d_lduh, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } }, 41074e98e3e1Schristos { M32RBF_INSN_LDUH_D, model_m32r_d_lduh_d, { { (int) UNIT_M32R_D_U_LOAD, 1, 2 } } }, 41084e98e3e1Schristos { M32RBF_INSN_LD_PLUS, model_m32r_d_ld_plus, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 }, { (int) UNIT_M32R_D_U_EXEC, 1, 0 } } }, 41094e98e3e1Schristos { M32RBF_INSN_LD24, model_m32r_d_ld24, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41104e98e3e1Schristos { M32RBF_INSN_LDI8, model_m32r_d_ldi8, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41114e98e3e1Schristos { M32RBF_INSN_LDI16, model_m32r_d_ldi16, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41124e98e3e1Schristos { M32RBF_INSN_LOCK, model_m32r_d_lock, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } }, 41134e98e3e1Schristos { M32RBF_INSN_MACHI, model_m32r_d_machi, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } }, 41144e98e3e1Schristos { M32RBF_INSN_MACLO, model_m32r_d_maclo, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } }, 41154e98e3e1Schristos { M32RBF_INSN_MACWHI, model_m32r_d_macwhi, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } }, 41164e98e3e1Schristos { M32RBF_INSN_MACWLO, model_m32r_d_macwlo, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } }, 41174e98e3e1Schristos { M32RBF_INSN_MUL, model_m32r_d_mul, { { (int) UNIT_M32R_D_U_EXEC, 1, 4 } } }, 41184e98e3e1Schristos { M32RBF_INSN_MULHI, model_m32r_d_mulhi, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } }, 41194e98e3e1Schristos { M32RBF_INSN_MULLO, model_m32r_d_mullo, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } }, 41204e98e3e1Schristos { M32RBF_INSN_MULWHI, model_m32r_d_mulwhi, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } }, 41214e98e3e1Schristos { M32RBF_INSN_MULWLO, model_m32r_d_mulwlo, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } }, 41224e98e3e1Schristos { M32RBF_INSN_MV, model_m32r_d_mv, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41234e98e3e1Schristos { M32RBF_INSN_MVFACHI, model_m32r_d_mvfachi, { { (int) UNIT_M32R_D_U_EXEC, 1, 2 } } }, 41244e98e3e1Schristos { M32RBF_INSN_MVFACLO, model_m32r_d_mvfaclo, { { (int) UNIT_M32R_D_U_EXEC, 1, 2 } } }, 41254e98e3e1Schristos { M32RBF_INSN_MVFACMI, model_m32r_d_mvfacmi, { { (int) UNIT_M32R_D_U_EXEC, 1, 2 } } }, 41264e98e3e1Schristos { M32RBF_INSN_MVFC, model_m32r_d_mvfc, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41274e98e3e1Schristos { M32RBF_INSN_MVTACHI, model_m32r_d_mvtachi, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41284e98e3e1Schristos { M32RBF_INSN_MVTACLO, model_m32r_d_mvtaclo, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41294e98e3e1Schristos { M32RBF_INSN_MVTC, model_m32r_d_mvtc, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41304e98e3e1Schristos { M32RBF_INSN_NEG, model_m32r_d_neg, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41314e98e3e1Schristos { M32RBF_INSN_NOP, model_m32r_d_nop, { { (int) UNIT_M32R_D_U_EXEC, 1, 0 } } }, 41324e98e3e1Schristos { M32RBF_INSN_NOT, model_m32r_d_not, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41334e98e3e1Schristos { M32RBF_INSN_RAC, model_m32r_d_rac, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } }, 41344e98e3e1Schristos { M32RBF_INSN_RACH, model_m32r_d_rach, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } }, 41354e98e3e1Schristos { M32RBF_INSN_RTE, model_m32r_d_rte, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41364e98e3e1Schristos { M32RBF_INSN_SETH, model_m32r_d_seth, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41374e98e3e1Schristos { M32RBF_INSN_SLL, model_m32r_d_sll, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41384e98e3e1Schristos { M32RBF_INSN_SLL3, model_m32r_d_sll3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41394e98e3e1Schristos { M32RBF_INSN_SLLI, model_m32r_d_slli, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41404e98e3e1Schristos { M32RBF_INSN_SRA, model_m32r_d_sra, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41414e98e3e1Schristos { M32RBF_INSN_SRA3, model_m32r_d_sra3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41424e98e3e1Schristos { M32RBF_INSN_SRAI, model_m32r_d_srai, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41434e98e3e1Schristos { M32RBF_INSN_SRL, model_m32r_d_srl, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41444e98e3e1Schristos { M32RBF_INSN_SRL3, model_m32r_d_srl3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41454e98e3e1Schristos { M32RBF_INSN_SRLI, model_m32r_d_srli, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41464e98e3e1Schristos { M32RBF_INSN_ST, model_m32r_d_st, { { (int) UNIT_M32R_D_U_STORE, 1, 1 } } }, 41474e98e3e1Schristos { M32RBF_INSN_ST_D, model_m32r_d_st_d, { { (int) UNIT_M32R_D_U_STORE, 1, 2 } } }, 41484e98e3e1Schristos { M32RBF_INSN_STB, model_m32r_d_stb, { { (int) UNIT_M32R_D_U_STORE, 1, 1 } } }, 41494e98e3e1Schristos { M32RBF_INSN_STB_D, model_m32r_d_stb_d, { { (int) UNIT_M32R_D_U_STORE, 1, 2 } } }, 41504e98e3e1Schristos { M32RBF_INSN_STH, model_m32r_d_sth, { { (int) UNIT_M32R_D_U_STORE, 1, 1 } } }, 41514e98e3e1Schristos { M32RBF_INSN_STH_D, model_m32r_d_sth_d, { { (int) UNIT_M32R_D_U_STORE, 1, 2 } } }, 41524e98e3e1Schristos { M32RBF_INSN_ST_PLUS, model_m32r_d_st_plus, { { (int) UNIT_M32R_D_U_STORE, 1, 1 }, { (int) UNIT_M32R_D_U_EXEC, 1, 0 } } }, 41534e98e3e1Schristos { M32RBF_INSN_ST_MINUS, model_m32r_d_st_minus, { { (int) UNIT_M32R_D_U_STORE, 1, 1 }, { (int) UNIT_M32R_D_U_EXEC, 1, 0 } } }, 41544e98e3e1Schristos { M32RBF_INSN_SUB, model_m32r_d_sub, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41554e98e3e1Schristos { M32RBF_INSN_SUBV, model_m32r_d_subv, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41564e98e3e1Schristos { M32RBF_INSN_SUBX, model_m32r_d_subx, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41574e98e3e1Schristos { M32RBF_INSN_TRAP, model_m32r_d_trap, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41584e98e3e1Schristos { M32RBF_INSN_UNLOCK, model_m32r_d_unlock, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } }, 41594e98e3e1Schristos { M32RBF_INSN_CLRPSW, model_m32r_d_clrpsw, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41604e98e3e1Schristos { M32RBF_INSN_SETPSW, model_m32r_d_setpsw, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41614e98e3e1Schristos { M32RBF_INSN_BSET, model_m32r_d_bset, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41624e98e3e1Schristos { M32RBF_INSN_BCLR, model_m32r_d_bclr, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41634e98e3e1Schristos { M32RBF_INSN_BTST, model_m32r_d_btst, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } }, 41644e98e3e1Schristos }; 41654e98e3e1Schristos 41664e98e3e1Schristos /* Model timing data for `test'. */ 41674e98e3e1Schristos 41684e98e3e1Schristos static const INSN_TIMING test_timing[] = { 41694e98e3e1Schristos { M32RBF_INSN_X_INVALID, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41704e98e3e1Schristos { M32RBF_INSN_X_AFTER, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41714e98e3e1Schristos { M32RBF_INSN_X_BEFORE, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41724e98e3e1Schristos { M32RBF_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41734e98e3e1Schristos { M32RBF_INSN_X_CHAIN, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41744e98e3e1Schristos { M32RBF_INSN_X_BEGIN, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41754e98e3e1Schristos { M32RBF_INSN_ADD, model_test_add, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41764e98e3e1Schristos { M32RBF_INSN_ADD3, model_test_add3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41774e98e3e1Schristos { M32RBF_INSN_AND, model_test_and, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41784e98e3e1Schristos { M32RBF_INSN_AND3, model_test_and3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41794e98e3e1Schristos { M32RBF_INSN_OR, model_test_or, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41804e98e3e1Schristos { M32RBF_INSN_OR3, model_test_or3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41814e98e3e1Schristos { M32RBF_INSN_XOR, model_test_xor, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41824e98e3e1Schristos { M32RBF_INSN_XOR3, model_test_xor3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41834e98e3e1Schristos { M32RBF_INSN_ADDI, model_test_addi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41844e98e3e1Schristos { M32RBF_INSN_ADDV, model_test_addv, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41854e98e3e1Schristos { M32RBF_INSN_ADDV3, model_test_addv3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41864e98e3e1Schristos { M32RBF_INSN_ADDX, model_test_addx, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41874e98e3e1Schristos { M32RBF_INSN_BC8, model_test_bc8, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41884e98e3e1Schristos { M32RBF_INSN_BC24, model_test_bc24, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41894e98e3e1Schristos { M32RBF_INSN_BEQ, model_test_beq, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41904e98e3e1Schristos { M32RBF_INSN_BEQZ, model_test_beqz, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41914e98e3e1Schristos { M32RBF_INSN_BGEZ, model_test_bgez, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41924e98e3e1Schristos { M32RBF_INSN_BGTZ, model_test_bgtz, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41934e98e3e1Schristos { M32RBF_INSN_BLEZ, model_test_blez, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41944e98e3e1Schristos { M32RBF_INSN_BLTZ, model_test_bltz, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41954e98e3e1Schristos { M32RBF_INSN_BNEZ, model_test_bnez, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41964e98e3e1Schristos { M32RBF_INSN_BL8, model_test_bl8, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41974e98e3e1Schristos { M32RBF_INSN_BL24, model_test_bl24, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41984e98e3e1Schristos { M32RBF_INSN_BNC8, model_test_bnc8, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 41994e98e3e1Schristos { M32RBF_INSN_BNC24, model_test_bnc24, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42004e98e3e1Schristos { M32RBF_INSN_BNE, model_test_bne, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42014e98e3e1Schristos { M32RBF_INSN_BRA8, model_test_bra8, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42024e98e3e1Schristos { M32RBF_INSN_BRA24, model_test_bra24, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42034e98e3e1Schristos { M32RBF_INSN_CMP, model_test_cmp, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42044e98e3e1Schristos { M32RBF_INSN_CMPI, model_test_cmpi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42054e98e3e1Schristos { M32RBF_INSN_CMPU, model_test_cmpu, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42064e98e3e1Schristos { M32RBF_INSN_CMPUI, model_test_cmpui, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42074e98e3e1Schristos { M32RBF_INSN_DIV, model_test_div, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42084e98e3e1Schristos { M32RBF_INSN_DIVU, model_test_divu, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42094e98e3e1Schristos { M32RBF_INSN_REM, model_test_rem, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42104e98e3e1Schristos { M32RBF_INSN_REMU, model_test_remu, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42114e98e3e1Schristos { M32RBF_INSN_JL, model_test_jl, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42124e98e3e1Schristos { M32RBF_INSN_JMP, model_test_jmp, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42134e98e3e1Schristos { M32RBF_INSN_LD, model_test_ld, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42144e98e3e1Schristos { M32RBF_INSN_LD_D, model_test_ld_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42154e98e3e1Schristos { M32RBF_INSN_LDB, model_test_ldb, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42164e98e3e1Schristos { M32RBF_INSN_LDB_D, model_test_ldb_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42174e98e3e1Schristos { M32RBF_INSN_LDH, model_test_ldh, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42184e98e3e1Schristos { M32RBF_INSN_LDH_D, model_test_ldh_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42194e98e3e1Schristos { M32RBF_INSN_LDUB, model_test_ldub, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42204e98e3e1Schristos { M32RBF_INSN_LDUB_D, model_test_ldub_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42214e98e3e1Schristos { M32RBF_INSN_LDUH, model_test_lduh, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42224e98e3e1Schristos { M32RBF_INSN_LDUH_D, model_test_lduh_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42234e98e3e1Schristos { M32RBF_INSN_LD_PLUS, model_test_ld_plus, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42244e98e3e1Schristos { M32RBF_INSN_LD24, model_test_ld24, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42254e98e3e1Schristos { M32RBF_INSN_LDI8, model_test_ldi8, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42264e98e3e1Schristos { M32RBF_INSN_LDI16, model_test_ldi16, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42274e98e3e1Schristos { M32RBF_INSN_LOCK, model_test_lock, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42284e98e3e1Schristos { M32RBF_INSN_MACHI, model_test_machi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42294e98e3e1Schristos { M32RBF_INSN_MACLO, model_test_maclo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42304e98e3e1Schristos { M32RBF_INSN_MACWHI, model_test_macwhi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42314e98e3e1Schristos { M32RBF_INSN_MACWLO, model_test_macwlo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42324e98e3e1Schristos { M32RBF_INSN_MUL, model_test_mul, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42334e98e3e1Schristos { M32RBF_INSN_MULHI, model_test_mulhi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42344e98e3e1Schristos { M32RBF_INSN_MULLO, model_test_mullo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42354e98e3e1Schristos { M32RBF_INSN_MULWHI, model_test_mulwhi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42364e98e3e1Schristos { M32RBF_INSN_MULWLO, model_test_mulwlo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42374e98e3e1Schristos { M32RBF_INSN_MV, model_test_mv, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42384e98e3e1Schristos { M32RBF_INSN_MVFACHI, model_test_mvfachi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42394e98e3e1Schristos { M32RBF_INSN_MVFACLO, model_test_mvfaclo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42404e98e3e1Schristos { M32RBF_INSN_MVFACMI, model_test_mvfacmi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42414e98e3e1Schristos { M32RBF_INSN_MVFC, model_test_mvfc, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42424e98e3e1Schristos { M32RBF_INSN_MVTACHI, model_test_mvtachi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42434e98e3e1Schristos { M32RBF_INSN_MVTACLO, model_test_mvtaclo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42444e98e3e1Schristos { M32RBF_INSN_MVTC, model_test_mvtc, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42454e98e3e1Schristos { M32RBF_INSN_NEG, model_test_neg, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42464e98e3e1Schristos { M32RBF_INSN_NOP, model_test_nop, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42474e98e3e1Schristos { M32RBF_INSN_NOT, model_test_not, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42484e98e3e1Schristos { M32RBF_INSN_RAC, model_test_rac, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42494e98e3e1Schristos { M32RBF_INSN_RACH, model_test_rach, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42504e98e3e1Schristos { M32RBF_INSN_RTE, model_test_rte, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42514e98e3e1Schristos { M32RBF_INSN_SETH, model_test_seth, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42524e98e3e1Schristos { M32RBF_INSN_SLL, model_test_sll, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42534e98e3e1Schristos { M32RBF_INSN_SLL3, model_test_sll3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42544e98e3e1Schristos { M32RBF_INSN_SLLI, model_test_slli, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42554e98e3e1Schristos { M32RBF_INSN_SRA, model_test_sra, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42564e98e3e1Schristos { M32RBF_INSN_SRA3, model_test_sra3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42574e98e3e1Schristos { M32RBF_INSN_SRAI, model_test_srai, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42584e98e3e1Schristos { M32RBF_INSN_SRL, model_test_srl, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42594e98e3e1Schristos { M32RBF_INSN_SRL3, model_test_srl3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42604e98e3e1Schristos { M32RBF_INSN_SRLI, model_test_srli, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42614e98e3e1Schristos { M32RBF_INSN_ST, model_test_st, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42624e98e3e1Schristos { M32RBF_INSN_ST_D, model_test_st_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42634e98e3e1Schristos { M32RBF_INSN_STB, model_test_stb, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42644e98e3e1Schristos { M32RBF_INSN_STB_D, model_test_stb_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42654e98e3e1Schristos { M32RBF_INSN_STH, model_test_sth, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42664e98e3e1Schristos { M32RBF_INSN_STH_D, model_test_sth_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42674e98e3e1Schristos { M32RBF_INSN_ST_PLUS, model_test_st_plus, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42684e98e3e1Schristos { M32RBF_INSN_ST_MINUS, model_test_st_minus, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42694e98e3e1Schristos { M32RBF_INSN_SUB, model_test_sub, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42704e98e3e1Schristos { M32RBF_INSN_SUBV, model_test_subv, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42714e98e3e1Schristos { M32RBF_INSN_SUBX, model_test_subx, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42724e98e3e1Schristos { M32RBF_INSN_TRAP, model_test_trap, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42734e98e3e1Schristos { M32RBF_INSN_UNLOCK, model_test_unlock, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42744e98e3e1Schristos { M32RBF_INSN_CLRPSW, model_test_clrpsw, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42754e98e3e1Schristos { M32RBF_INSN_SETPSW, model_test_setpsw, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42764e98e3e1Schristos { M32RBF_INSN_BSET, model_test_bset, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42774e98e3e1Schristos { M32RBF_INSN_BCLR, model_test_bclr, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42784e98e3e1Schristos { M32RBF_INSN_BTST, model_test_btst, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } }, 42794e98e3e1Schristos }; 42804e98e3e1Schristos 42814e98e3e1Schristos #endif /* WITH_PROFILE_MODEL_P */ 42824e98e3e1Schristos 42834e98e3e1Schristos static void 42844e98e3e1Schristos m32r_d_model_init (SIM_CPU *cpu) 42854e98e3e1Schristos { 42864e98e3e1Schristos CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_M32R_D_DATA)); 42874e98e3e1Schristos } 42884e98e3e1Schristos 42894e98e3e1Schristos static void 42904e98e3e1Schristos test_model_init (SIM_CPU *cpu) 42914e98e3e1Schristos { 42924e98e3e1Schristos CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_TEST_DATA)); 42934e98e3e1Schristos } 42944e98e3e1Schristos 42954e98e3e1Schristos #if WITH_PROFILE_MODEL_P 42964e98e3e1Schristos #define TIMING_DATA(td) td 42974e98e3e1Schristos #else 42984e98e3e1Schristos #define TIMING_DATA(td) 0 42994e98e3e1Schristos #endif 43004e98e3e1Schristos 4301ba340e45Schristos static const SIM_MODEL m32r_models[] = 43024e98e3e1Schristos { 43034e98e3e1Schristos { "m32r/d", & m32r_mach, MODEL_M32R_D, TIMING_DATA (& m32r_d_timing[0]), m32r_d_model_init }, 43044e98e3e1Schristos { "test", & m32r_mach, MODEL_TEST, TIMING_DATA (& test_timing[0]), test_model_init }, 43054e98e3e1Schristos { 0 } 43064e98e3e1Schristos }; 43074e98e3e1Schristos 43084e98e3e1Schristos /* The properties of this cpu's implementation. */ 43094e98e3e1Schristos 4310ba340e45Schristos static const SIM_MACH_IMP_PROPERTIES m32rbf_imp_properties = 43114e98e3e1Schristos { 43124e98e3e1Schristos sizeof (SIM_CPU), 43134e98e3e1Schristos #if WITH_SCACHE 43144e98e3e1Schristos sizeof (SCACHE) 43154e98e3e1Schristos #else 43164e98e3e1Schristos 0 43174e98e3e1Schristos #endif 43184e98e3e1Schristos }; 43194e98e3e1Schristos 43204e98e3e1Schristos 43214e98e3e1Schristos static void 43224e98e3e1Schristos m32rbf_prepare_run (SIM_CPU *cpu) 43234e98e3e1Schristos { 43244e98e3e1Schristos if (CPU_IDESC (cpu) == NULL) 43254e98e3e1Schristos m32rbf_init_idesc_table (cpu); 43264e98e3e1Schristos } 43274e98e3e1Schristos 43284e98e3e1Schristos static const CGEN_INSN * 43294e98e3e1Schristos m32rbf_get_idata (SIM_CPU *cpu, int inum) 43304e98e3e1Schristos { 43314e98e3e1Schristos return CPU_IDESC (cpu) [inum].idata; 43324e98e3e1Schristos } 43334e98e3e1Schristos 43344e98e3e1Schristos static void 43354e98e3e1Schristos m32r_init_cpu (SIM_CPU *cpu) 43364e98e3e1Schristos { 43374e98e3e1Schristos CPU_REG_FETCH (cpu) = m32rbf_fetch_register; 43384e98e3e1Schristos CPU_REG_STORE (cpu) = m32rbf_store_register; 43394e98e3e1Schristos CPU_PC_FETCH (cpu) = m32rbf_h_pc_get; 43404e98e3e1Schristos CPU_PC_STORE (cpu) = m32rbf_h_pc_set; 43414e98e3e1Schristos CPU_GET_IDATA (cpu) = m32rbf_get_idata; 43424e98e3e1Schristos CPU_MAX_INSNS (cpu) = M32RBF_INSN__MAX; 43434e98e3e1Schristos CPU_INSN_NAME (cpu) = cgen_insn_name; 43444e98e3e1Schristos CPU_FULL_ENGINE_FN (cpu) = m32rbf_engine_run_full; 43454e98e3e1Schristos #if WITH_FAST 43464e98e3e1Schristos CPU_FAST_ENGINE_FN (cpu) = m32rbf_engine_run_fast; 43474e98e3e1Schristos #else 43484e98e3e1Schristos CPU_FAST_ENGINE_FN (cpu) = m32rbf_engine_run_full; 43494e98e3e1Schristos #endif 43504e98e3e1Schristos } 43514e98e3e1Schristos 4352ba340e45Schristos const SIM_MACH m32r_mach = 43534e98e3e1Schristos { 43544e98e3e1Schristos "m32r", "m32r", MACH_M32R, 43554e98e3e1Schristos 32, 32, & m32r_models[0], & m32rbf_imp_properties, 43564e98e3e1Schristos m32r_init_cpu, 43574e98e3e1Schristos m32rbf_prepare_run 43584e98e3e1Schristos }; 43594e98e3e1Schristos 4360