14e98e3e1Schristos /* Simulator model support for m32r2f. 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 m32r2f 264e98e3e1Schristos #define WANT_CPU_M32R2F 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_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 3384e98e3e1Schristos } 3394e98e3e1Schristos return cycles; 3404e98e3e1Schristos #undef FLD 3414e98e3e1Schristos } 3424e98e3e1Schristos 3434e98e3e1Schristos static int 3444e98e3e1Schristos model_m32r2_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 += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 3564e98e3e1Schristos } 3574e98e3e1Schristos return cycles; 3584e98e3e1Schristos #undef FLD 3594e98e3e1Schristos } 3604e98e3e1Schristos 3614e98e3e1Schristos static int 3624e98e3e1Schristos model_m32r2_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 += m32r2f_model_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_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 += m32r2f_model_m32r2_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_m32r2_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 += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 5654e98e3e1Schristos } 5664e98e3e1Schristos return cycles; 5674e98e3e1Schristos #undef FLD 5684e98e3e1Schristos } 5694e98e3e1Schristos 5704e98e3e1Schristos static int 5714e98e3e1Schristos model_m32r2_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 += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 5834e98e3e1Schristos } 5844e98e3e1Schristos return cycles; 5854e98e3e1Schristos #undef FLD 5864e98e3e1Schristos } 5874e98e3e1Schristos 5884e98e3e1Schristos static int 5894e98e3e1Schristos model_m32r2_bcl8 (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 << 4)) referenced |= 1 << 1; 6004e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 6014e98e3e1Schristos } 6024e98e3e1Schristos return cycles; 6034e98e3e1Schristos #undef FLD 6044e98e3e1Schristos } 6054e98e3e1Schristos 6064e98e3e1Schristos static int 6074e98e3e1Schristos model_m32r2_bcl24 (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 << 4)) referenced |= 1 << 1; 6184e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 6194e98e3e1Schristos } 6204e98e3e1Schristos return cycles; 6214e98e3e1Schristos #undef FLD 6224e98e3e1Schristos } 6234e98e3e1Schristos 6244e98e3e1Schristos static int 6254e98e3e1Schristos model_m32r2_bnc8 (SIM_CPU *current_cpu, void *sem_arg) 6264e98e3e1Schristos { 6274e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.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 << 2)) referenced |= 1 << 1; 6364e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 6374e98e3e1Schristos } 6384e98e3e1Schristos return cycles; 6394e98e3e1Schristos #undef FLD 6404e98e3e1Schristos } 6414e98e3e1Schristos 6424e98e3e1Schristos static int 6434e98e3e1Schristos model_m32r2_bnc24 (SIM_CPU *current_cpu, void *sem_arg) 6444e98e3e1Schristos { 6454e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f 6464e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 6474e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 6484e98e3e1Schristos int cycles = 0; 6494e98e3e1Schristos { 6504e98e3e1Schristos int referenced = 0; 6514e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 6524e98e3e1Schristos INT in_sr = -1; 6534e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 6544e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 6554e98e3e1Schristos } 6564e98e3e1Schristos return cycles; 6574e98e3e1Schristos #undef FLD 6584e98e3e1Schristos } 6594e98e3e1Schristos 6604e98e3e1Schristos static int 6614e98e3e1Schristos model_m32r2_bne (SIM_CPU *current_cpu, void *sem_arg) 6624e98e3e1Schristos { 6634e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f 6644e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 6654e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 6664e98e3e1Schristos int cycles = 0; 6674e98e3e1Schristos { 6684e98e3e1Schristos int referenced = 0; 6694e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 6704e98e3e1Schristos INT in_sr = -1; 6714e98e3e1Schristos if (insn_referenced & (1 << 3)) referenced |= 1 << 1; 6724e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 6734e98e3e1Schristos } 6744e98e3e1Schristos { 6754e98e3e1Schristos int referenced = 0; 6764e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 6774e98e3e1Schristos INT in_src1 = -1; 6784e98e3e1Schristos INT in_src2 = -1; 6794e98e3e1Schristos in_src1 = FLD (in_src1); 6804e98e3e1Schristos in_src2 = FLD (in_src2); 6814e98e3e1Schristos referenced |= 1 << 0; 6824e98e3e1Schristos referenced |= 1 << 1; 6834e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2); 6844e98e3e1Schristos } 6854e98e3e1Schristos return cycles; 6864e98e3e1Schristos #undef FLD 6874e98e3e1Schristos } 6884e98e3e1Schristos 6894e98e3e1Schristos static int 6904e98e3e1Schristos model_m32r2_bra8 (SIM_CPU *current_cpu, void *sem_arg) 6914e98e3e1Schristos { 6924e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.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_sr = -1; 7004e98e3e1Schristos referenced |= 1 << 1; 7014e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 7024e98e3e1Schristos } 7034e98e3e1Schristos return cycles; 7044e98e3e1Schristos #undef FLD 7054e98e3e1Schristos } 7064e98e3e1Schristos 7074e98e3e1Schristos static int 7084e98e3e1Schristos model_m32r2_bra24 (SIM_CPU *current_cpu, void *sem_arg) 7094e98e3e1Schristos { 7104e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f 7114e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 7124e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 7134e98e3e1Schristos int cycles = 0; 7144e98e3e1Schristos { 7154e98e3e1Schristos int referenced = 0; 7164e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 7174e98e3e1Schristos INT in_sr = -1; 7184e98e3e1Schristos referenced |= 1 << 1; 7194e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 7204e98e3e1Schristos } 7214e98e3e1Schristos return cycles; 7224e98e3e1Schristos #undef FLD 7234e98e3e1Schristos } 7244e98e3e1Schristos 7254e98e3e1Schristos static int 7264e98e3e1Schristos model_m32r2_bncl8 (SIM_CPU *current_cpu, void *sem_arg) 7274e98e3e1Schristos { 7284e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f 7294e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 7304e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 7314e98e3e1Schristos int cycles = 0; 7324e98e3e1Schristos { 7334e98e3e1Schristos int referenced = 0; 7344e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 7354e98e3e1Schristos INT in_sr = -1; 7364e98e3e1Schristos if (insn_referenced & (1 << 4)) referenced |= 1 << 1; 7374e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 7384e98e3e1Schristos } 7394e98e3e1Schristos return cycles; 7404e98e3e1Schristos #undef FLD 7414e98e3e1Schristos } 7424e98e3e1Schristos 7434e98e3e1Schristos static int 7444e98e3e1Schristos model_m32r2_bncl24 (SIM_CPU *current_cpu, void *sem_arg) 7454e98e3e1Schristos { 7464e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f 7474e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 7484e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 7494e98e3e1Schristos int cycles = 0; 7504e98e3e1Schristos { 7514e98e3e1Schristos int referenced = 0; 7524e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 7534e98e3e1Schristos INT in_sr = -1; 7544e98e3e1Schristos if (insn_referenced & (1 << 4)) referenced |= 1 << 1; 7554e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 7564e98e3e1Schristos } 7574e98e3e1Schristos return cycles; 7584e98e3e1Schristos #undef FLD 7594e98e3e1Schristos } 7604e98e3e1Schristos 7614e98e3e1Schristos static int 7624e98e3e1Schristos model_m32r2_cmp (SIM_CPU *current_cpu, void *sem_arg) 7634e98e3e1Schristos { 7644e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 7654e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 7664e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 7674e98e3e1Schristos int cycles = 0; 7684e98e3e1Schristos { 7694e98e3e1Schristos int referenced = 0; 7704e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 7714e98e3e1Schristos INT in_src1 = -1; 7724e98e3e1Schristos INT in_src2 = -1; 7734e98e3e1Schristos in_src1 = FLD (in_src1); 7744e98e3e1Schristos in_src2 = FLD (in_src2); 7754e98e3e1Schristos referenced |= 1 << 0; 7764e98e3e1Schristos referenced |= 1 << 1; 7774e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 7784e98e3e1Schristos } 7794e98e3e1Schristos return cycles; 7804e98e3e1Schristos #undef FLD 7814e98e3e1Schristos } 7824e98e3e1Schristos 7834e98e3e1Schristos static int 7844e98e3e1Schristos model_m32r2_cmpi (SIM_CPU *current_cpu, void *sem_arg) 7854e98e3e1Schristos { 7864e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f 7874e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 7884e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 7894e98e3e1Schristos int cycles = 0; 7904e98e3e1Schristos { 7914e98e3e1Schristos int referenced = 0; 7924e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 7934e98e3e1Schristos INT in_src1 = -1; 7944e98e3e1Schristos INT in_src2 = -1; 7954e98e3e1Schristos in_src2 = FLD (in_src2); 7964e98e3e1Schristos referenced |= 1 << 1; 7974e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 7984e98e3e1Schristos } 7994e98e3e1Schristos return cycles; 8004e98e3e1Schristos #undef FLD 8014e98e3e1Schristos } 8024e98e3e1Schristos 8034e98e3e1Schristos static int 8044e98e3e1Schristos model_m32r2_cmpu (SIM_CPU *current_cpu, void *sem_arg) 8054e98e3e1Schristos { 8064e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 8074e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 8084e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 8094e98e3e1Schristos int cycles = 0; 8104e98e3e1Schristos { 8114e98e3e1Schristos int referenced = 0; 8124e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 8134e98e3e1Schristos INT in_src1 = -1; 8144e98e3e1Schristos INT in_src2 = -1; 8154e98e3e1Schristos in_src1 = FLD (in_src1); 8164e98e3e1Schristos in_src2 = FLD (in_src2); 8174e98e3e1Schristos referenced |= 1 << 0; 8184e98e3e1Schristos referenced |= 1 << 1; 8194e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 8204e98e3e1Schristos } 8214e98e3e1Schristos return cycles; 8224e98e3e1Schristos #undef FLD 8234e98e3e1Schristos } 8244e98e3e1Schristos 8254e98e3e1Schristos static int 8264e98e3e1Schristos model_m32r2_cmpui (SIM_CPU *current_cpu, void *sem_arg) 8274e98e3e1Schristos { 8284e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f 8294e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 8304e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 8314e98e3e1Schristos int cycles = 0; 8324e98e3e1Schristos { 8334e98e3e1Schristos int referenced = 0; 8344e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 8354e98e3e1Schristos INT in_src1 = -1; 8364e98e3e1Schristos INT in_src2 = -1; 8374e98e3e1Schristos in_src2 = FLD (in_src2); 8384e98e3e1Schristos referenced |= 1 << 1; 8394e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 8404e98e3e1Schristos } 8414e98e3e1Schristos return cycles; 8424e98e3e1Schristos #undef FLD 8434e98e3e1Schristos } 8444e98e3e1Schristos 8454e98e3e1Schristos static int 8464e98e3e1Schristos model_m32r2_cmpeq (SIM_CPU *current_cpu, void *sem_arg) 8474e98e3e1Schristos { 8484e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 8494e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 8504e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 8514e98e3e1Schristos int cycles = 0; 8524e98e3e1Schristos { 8534e98e3e1Schristos int referenced = 0; 8544e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 8554e98e3e1Schristos INT in_src1 = -1; 8564e98e3e1Schristos INT in_src2 = -1; 8574e98e3e1Schristos in_src1 = FLD (in_src1); 8584e98e3e1Schristos in_src2 = FLD (in_src2); 8594e98e3e1Schristos referenced |= 1 << 0; 8604e98e3e1Schristos referenced |= 1 << 1; 8614e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 8624e98e3e1Schristos } 8634e98e3e1Schristos return cycles; 8644e98e3e1Schristos #undef FLD 8654e98e3e1Schristos } 8664e98e3e1Schristos 8674e98e3e1Schristos static int 8684e98e3e1Schristos model_m32r2_cmpz (SIM_CPU *current_cpu, void *sem_arg) 8694e98e3e1Schristos { 8704e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 8714e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 8724e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 8734e98e3e1Schristos int cycles = 0; 8744e98e3e1Schristos { 8754e98e3e1Schristos int referenced = 0; 8764e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 8774e98e3e1Schristos INT in_src1 = -1; 8784e98e3e1Schristos INT in_src2 = -1; 8794e98e3e1Schristos in_src2 = FLD (in_src2); 8804e98e3e1Schristos referenced |= 1 << 1; 8814e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 8824e98e3e1Schristos } 8834e98e3e1Schristos return cycles; 8844e98e3e1Schristos #undef FLD 8854e98e3e1Schristos } 8864e98e3e1Schristos 8874e98e3e1Schristos static int 8884e98e3e1Schristos model_m32r2_div (SIM_CPU *current_cpu, void *sem_arg) 8894e98e3e1Schristos { 8904e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 8914e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 8924e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 8934e98e3e1Schristos int cycles = 0; 8944e98e3e1Schristos { 8954e98e3e1Schristos int referenced = 0; 8964e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 8974e98e3e1Schristos INT in_sr = -1; 8984e98e3e1Schristos INT in_dr = -1; 8994e98e3e1Schristos INT out_dr = -1; 9004e98e3e1Schristos in_sr = FLD (in_sr); 9014e98e3e1Schristos in_dr = FLD (in_dr); 9024e98e3e1Schristos out_dr = FLD (out_dr); 9034e98e3e1Schristos referenced |= 1 << 0; 9044e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 9054e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 9064e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 9074e98e3e1Schristos } 9084e98e3e1Schristos return cycles; 9094e98e3e1Schristos #undef FLD 9104e98e3e1Schristos } 9114e98e3e1Schristos 9124e98e3e1Schristos static int 9134e98e3e1Schristos model_m32r2_divu (SIM_CPU *current_cpu, void *sem_arg) 9144e98e3e1Schristos { 9154e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 9164e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 9174e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 9184e98e3e1Schristos int cycles = 0; 9194e98e3e1Schristos { 9204e98e3e1Schristos int referenced = 0; 9214e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 9224e98e3e1Schristos INT in_sr = -1; 9234e98e3e1Schristos INT in_dr = -1; 9244e98e3e1Schristos INT out_dr = -1; 9254e98e3e1Schristos in_sr = FLD (in_sr); 9264e98e3e1Schristos in_dr = FLD (in_dr); 9274e98e3e1Schristos out_dr = FLD (out_dr); 9284e98e3e1Schristos referenced |= 1 << 0; 9294e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 9304e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 9314e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 9324e98e3e1Schristos } 9334e98e3e1Schristos return cycles; 9344e98e3e1Schristos #undef FLD 9354e98e3e1Schristos } 9364e98e3e1Schristos 9374e98e3e1Schristos static int 9384e98e3e1Schristos model_m32r2_rem (SIM_CPU *current_cpu, void *sem_arg) 9394e98e3e1Schristos { 9404e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 9414e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 9424e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 9434e98e3e1Schristos int cycles = 0; 9444e98e3e1Schristos { 9454e98e3e1Schristos int referenced = 0; 9464e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 9474e98e3e1Schristos INT in_sr = -1; 9484e98e3e1Schristos INT in_dr = -1; 9494e98e3e1Schristos INT out_dr = -1; 9504e98e3e1Schristos in_sr = FLD (in_sr); 9514e98e3e1Schristos in_dr = FLD (in_dr); 9524e98e3e1Schristos out_dr = FLD (out_dr); 9534e98e3e1Schristos referenced |= 1 << 0; 9544e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 9554e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 9564e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 9574e98e3e1Schristos } 9584e98e3e1Schristos return cycles; 9594e98e3e1Schristos #undef FLD 9604e98e3e1Schristos } 9614e98e3e1Schristos 9624e98e3e1Schristos static int 9634e98e3e1Schristos model_m32r2_remu (SIM_CPU *current_cpu, void *sem_arg) 9644e98e3e1Schristos { 9654e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 9664e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 9674e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 9684e98e3e1Schristos int cycles = 0; 9694e98e3e1Schristos { 9704e98e3e1Schristos int referenced = 0; 9714e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 9724e98e3e1Schristos INT in_sr = -1; 9734e98e3e1Schristos INT in_dr = -1; 9744e98e3e1Schristos INT out_dr = -1; 9754e98e3e1Schristos in_sr = FLD (in_sr); 9764e98e3e1Schristos in_dr = FLD (in_dr); 9774e98e3e1Schristos out_dr = FLD (out_dr); 9784e98e3e1Schristos referenced |= 1 << 0; 9794e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 9804e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 9814e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 9824e98e3e1Schristos } 9834e98e3e1Schristos return cycles; 9844e98e3e1Schristos #undef FLD 9854e98e3e1Schristos } 9864e98e3e1Schristos 9874e98e3e1Schristos static int 9884e98e3e1Schristos model_m32r2_remh (SIM_CPU *current_cpu, void *sem_arg) 9894e98e3e1Schristos { 9904e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 9914e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 9924e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 9934e98e3e1Schristos int cycles = 0; 9944e98e3e1Schristos { 9954e98e3e1Schristos int referenced = 0; 9964e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 9974e98e3e1Schristos INT in_sr = -1; 9984e98e3e1Schristos INT in_dr = -1; 9994e98e3e1Schristos INT out_dr = -1; 10004e98e3e1Schristos in_sr = FLD (in_sr); 10014e98e3e1Schristos in_dr = FLD (in_dr); 10024e98e3e1Schristos out_dr = FLD (out_dr); 10034e98e3e1Schristos referenced |= 1 << 0; 10044e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 10054e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 10064e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 10074e98e3e1Schristos } 10084e98e3e1Schristos return cycles; 10094e98e3e1Schristos #undef FLD 10104e98e3e1Schristos } 10114e98e3e1Schristos 10124e98e3e1Schristos static int 10134e98e3e1Schristos model_m32r2_remuh (SIM_CPU *current_cpu, void *sem_arg) 10144e98e3e1Schristos { 10154e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 10164e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 10174e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 10184e98e3e1Schristos int cycles = 0; 10194e98e3e1Schristos { 10204e98e3e1Schristos int referenced = 0; 10214e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 10224e98e3e1Schristos INT in_sr = -1; 10234e98e3e1Schristos INT in_dr = -1; 10244e98e3e1Schristos INT out_dr = -1; 10254e98e3e1Schristos in_sr = FLD (in_sr); 10264e98e3e1Schristos in_dr = FLD (in_dr); 10274e98e3e1Schristos out_dr = FLD (out_dr); 10284e98e3e1Schristos referenced |= 1 << 0; 10294e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 10304e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 10314e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 10324e98e3e1Schristos } 10334e98e3e1Schristos return cycles; 10344e98e3e1Schristos #undef FLD 10354e98e3e1Schristos } 10364e98e3e1Schristos 10374e98e3e1Schristos static int 10384e98e3e1Schristos model_m32r2_remb (SIM_CPU *current_cpu, void *sem_arg) 10394e98e3e1Schristos { 10404e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 10414e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 10424e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 10434e98e3e1Schristos int cycles = 0; 10444e98e3e1Schristos { 10454e98e3e1Schristos int referenced = 0; 10464e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 10474e98e3e1Schristos INT in_sr = -1; 10484e98e3e1Schristos INT in_dr = -1; 10494e98e3e1Schristos INT out_dr = -1; 10504e98e3e1Schristos in_sr = FLD (in_sr); 10514e98e3e1Schristos in_dr = FLD (in_dr); 10524e98e3e1Schristos out_dr = FLD (out_dr); 10534e98e3e1Schristos referenced |= 1 << 0; 10544e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 10554e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 10564e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 10574e98e3e1Schristos } 10584e98e3e1Schristos return cycles; 10594e98e3e1Schristos #undef FLD 10604e98e3e1Schristos } 10614e98e3e1Schristos 10624e98e3e1Schristos static int 10634e98e3e1Schristos model_m32r2_remub (SIM_CPU *current_cpu, void *sem_arg) 10644e98e3e1Schristos { 10654e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 10664e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 10674e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 10684e98e3e1Schristos int cycles = 0; 10694e98e3e1Schristos { 10704e98e3e1Schristos int referenced = 0; 10714e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 10724e98e3e1Schristos INT in_sr = -1; 10734e98e3e1Schristos INT in_dr = -1; 10744e98e3e1Schristos INT out_dr = -1; 10754e98e3e1Schristos in_sr = FLD (in_sr); 10764e98e3e1Schristos in_dr = FLD (in_dr); 10774e98e3e1Schristos out_dr = FLD (out_dr); 10784e98e3e1Schristos referenced |= 1 << 0; 10794e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 10804e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 10814e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 10824e98e3e1Schristos } 10834e98e3e1Schristos return cycles; 10844e98e3e1Schristos #undef FLD 10854e98e3e1Schristos } 10864e98e3e1Schristos 10874e98e3e1Schristos static int 10884e98e3e1Schristos model_m32r2_divuh (SIM_CPU *current_cpu, void *sem_arg) 10894e98e3e1Schristos { 10904e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 10914e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 10924e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 10934e98e3e1Schristos int cycles = 0; 10944e98e3e1Schristos { 10954e98e3e1Schristos int referenced = 0; 10964e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 10974e98e3e1Schristos INT in_sr = -1; 10984e98e3e1Schristos INT in_dr = -1; 10994e98e3e1Schristos INT out_dr = -1; 11004e98e3e1Schristos in_sr = FLD (in_sr); 11014e98e3e1Schristos in_dr = FLD (in_dr); 11024e98e3e1Schristos out_dr = FLD (out_dr); 11034e98e3e1Schristos referenced |= 1 << 0; 11044e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 11054e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 11064e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 11074e98e3e1Schristos } 11084e98e3e1Schristos return cycles; 11094e98e3e1Schristos #undef FLD 11104e98e3e1Schristos } 11114e98e3e1Schristos 11124e98e3e1Schristos static int 11134e98e3e1Schristos model_m32r2_divb (SIM_CPU *current_cpu, void *sem_arg) 11144e98e3e1Schristos { 11154e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 11164e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 11174e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 11184e98e3e1Schristos int cycles = 0; 11194e98e3e1Schristos { 11204e98e3e1Schristos int referenced = 0; 11214e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 11224e98e3e1Schristos INT in_sr = -1; 11234e98e3e1Schristos INT in_dr = -1; 11244e98e3e1Schristos INT out_dr = -1; 11254e98e3e1Schristos in_sr = FLD (in_sr); 11264e98e3e1Schristos in_dr = FLD (in_dr); 11274e98e3e1Schristos out_dr = FLD (out_dr); 11284e98e3e1Schristos referenced |= 1 << 0; 11294e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 11304e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 11314e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 11324e98e3e1Schristos } 11334e98e3e1Schristos return cycles; 11344e98e3e1Schristos #undef FLD 11354e98e3e1Schristos } 11364e98e3e1Schristos 11374e98e3e1Schristos static int 11384e98e3e1Schristos model_m32r2_divub (SIM_CPU *current_cpu, void *sem_arg) 11394e98e3e1Schristos { 11404e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 11414e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 11424e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 11434e98e3e1Schristos int cycles = 0; 11444e98e3e1Schristos { 11454e98e3e1Schristos int referenced = 0; 11464e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 11474e98e3e1Schristos INT in_sr = -1; 11484e98e3e1Schristos INT in_dr = -1; 11494e98e3e1Schristos INT out_dr = -1; 11504e98e3e1Schristos in_sr = FLD (in_sr); 11514e98e3e1Schristos in_dr = FLD (in_dr); 11524e98e3e1Schristos out_dr = FLD (out_dr); 11534e98e3e1Schristos referenced |= 1 << 0; 11544e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 11554e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 11564e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 11574e98e3e1Schristos } 11584e98e3e1Schristos return cycles; 11594e98e3e1Schristos #undef FLD 11604e98e3e1Schristos } 11614e98e3e1Schristos 11624e98e3e1Schristos static int 11634e98e3e1Schristos model_m32r2_divh (SIM_CPU *current_cpu, void *sem_arg) 11644e98e3e1Schristos { 11654e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 11664e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 11674e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 11684e98e3e1Schristos int cycles = 0; 11694e98e3e1Schristos { 11704e98e3e1Schristos int referenced = 0; 11714e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 11724e98e3e1Schristos INT in_sr = -1; 11734e98e3e1Schristos INT in_dr = -1; 11744e98e3e1Schristos INT out_dr = -1; 11754e98e3e1Schristos in_sr = FLD (in_sr); 11764e98e3e1Schristos in_dr = FLD (in_dr); 11774e98e3e1Schristos out_dr = FLD (out_dr); 11784e98e3e1Schristos referenced |= 1 << 0; 11794e98e3e1Schristos if (insn_referenced & (1 << 0)) referenced |= 1 << 1; 11804e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 2; 11814e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 11824e98e3e1Schristos } 11834e98e3e1Schristos return cycles; 11844e98e3e1Schristos #undef FLD 11854e98e3e1Schristos } 11864e98e3e1Schristos 11874e98e3e1Schristos static int 11884e98e3e1Schristos model_m32r2_jc (SIM_CPU *current_cpu, void *sem_arg) 11894e98e3e1Schristos { 11904e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f 11914e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 11924e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 11934e98e3e1Schristos int cycles = 0; 11944e98e3e1Schristos { 11954e98e3e1Schristos int referenced = 0; 11964e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 11974e98e3e1Schristos INT in_sr = -1; 11984e98e3e1Schristos in_sr = FLD (in_sr); 11994e98e3e1Schristos if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 12004e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 12014e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 12024e98e3e1Schristos } 12034e98e3e1Schristos return cycles; 12044e98e3e1Schristos #undef FLD 12054e98e3e1Schristos } 12064e98e3e1Schristos 12074e98e3e1Schristos static int 12084e98e3e1Schristos model_m32r2_jnc (SIM_CPU *current_cpu, void *sem_arg) 12094e98e3e1Schristos { 12104e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f 12114e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 12124e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 12134e98e3e1Schristos int cycles = 0; 12144e98e3e1Schristos { 12154e98e3e1Schristos int referenced = 0; 12164e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 12174e98e3e1Schristos INT in_sr = -1; 12184e98e3e1Schristos in_sr = FLD (in_sr); 12194e98e3e1Schristos if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 12204e98e3e1Schristos if (insn_referenced & (1 << 2)) referenced |= 1 << 1; 12214e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 12224e98e3e1Schristos } 12234e98e3e1Schristos return cycles; 12244e98e3e1Schristos #undef FLD 12254e98e3e1Schristos } 12264e98e3e1Schristos 12274e98e3e1Schristos static int 12284e98e3e1Schristos model_m32r2_jl (SIM_CPU *current_cpu, void *sem_arg) 12294e98e3e1Schristos { 12304e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f 12314e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 12324e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 12334e98e3e1Schristos int cycles = 0; 12344e98e3e1Schristos { 12354e98e3e1Schristos int referenced = 0; 12364e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 12374e98e3e1Schristos INT in_sr = -1; 12384e98e3e1Schristos in_sr = FLD (in_sr); 12394e98e3e1Schristos referenced |= 1 << 0; 12404e98e3e1Schristos referenced |= 1 << 1; 12414e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 12424e98e3e1Schristos } 12434e98e3e1Schristos return cycles; 12444e98e3e1Schristos #undef FLD 12454e98e3e1Schristos } 12464e98e3e1Schristos 12474e98e3e1Schristos static int 12484e98e3e1Schristos model_m32r2_jmp (SIM_CPU *current_cpu, void *sem_arg) 12494e98e3e1Schristos { 12504e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f 12514e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 12524e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 12534e98e3e1Schristos int cycles = 0; 12544e98e3e1Schristos { 12554e98e3e1Schristos int referenced = 0; 12564e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 12574e98e3e1Schristos INT in_sr = -1; 12584e98e3e1Schristos in_sr = FLD (in_sr); 12594e98e3e1Schristos referenced |= 1 << 0; 12604e98e3e1Schristos referenced |= 1 << 1; 12614e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cti (current_cpu, idesc, 0, referenced, in_sr); 12624e98e3e1Schristos } 12634e98e3e1Schristos return cycles; 12644e98e3e1Schristos #undef FLD 12654e98e3e1Schristos } 12664e98e3e1Schristos 12674e98e3e1Schristos static int 12684e98e3e1Schristos model_m32r2_ld (SIM_CPU *current_cpu, void *sem_arg) 12694e98e3e1Schristos { 12704e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 12714e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 12724e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 12734e98e3e1Schristos int cycles = 0; 12744e98e3e1Schristos { 12754e98e3e1Schristos int referenced = 0; 12764e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 12774e98e3e1Schristos INT in_sr = 0; 12784e98e3e1Schristos INT out_dr = 0; 12794e98e3e1Schristos in_sr = FLD (in_sr); 12804e98e3e1Schristos out_dr = FLD (out_dr); 12814e98e3e1Schristos referenced |= 1 << 0; 12824e98e3e1Schristos referenced |= 1 << 1; 12834e98e3e1Schristos cycles += m32r2f_model_m32r2_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 12844e98e3e1Schristos } 12854e98e3e1Schristos return cycles; 12864e98e3e1Schristos #undef FLD 12874e98e3e1Schristos } 12884e98e3e1Schristos 12894e98e3e1Schristos static int 12904e98e3e1Schristos model_m32r2_ld_d (SIM_CPU *current_cpu, void *sem_arg) 12914e98e3e1Schristos { 12924e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 12934e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 12944e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 12954e98e3e1Schristos int cycles = 0; 12964e98e3e1Schristos { 12974e98e3e1Schristos int referenced = 0; 12984e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 12994e98e3e1Schristos INT in_sr = 0; 13004e98e3e1Schristos INT out_dr = 0; 13014e98e3e1Schristos in_sr = FLD (in_sr); 13024e98e3e1Schristos out_dr = FLD (out_dr); 13034e98e3e1Schristos referenced |= 1 << 0; 13044e98e3e1Schristos referenced |= 1 << 1; 13054e98e3e1Schristos cycles += m32r2f_model_m32r2_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 13064e98e3e1Schristos } 13074e98e3e1Schristos return cycles; 13084e98e3e1Schristos #undef FLD 13094e98e3e1Schristos } 13104e98e3e1Schristos 13114e98e3e1Schristos static int 13124e98e3e1Schristos model_m32r2_ldb (SIM_CPU *current_cpu, void *sem_arg) 13134e98e3e1Schristos { 13144e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 13154e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 13164e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 13174e98e3e1Schristos int cycles = 0; 13184e98e3e1Schristos { 13194e98e3e1Schristos int referenced = 0; 13204e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 13214e98e3e1Schristos INT in_sr = 0; 13224e98e3e1Schristos INT out_dr = 0; 13234e98e3e1Schristos in_sr = FLD (in_sr); 13244e98e3e1Schristos out_dr = FLD (out_dr); 13254e98e3e1Schristos referenced |= 1 << 0; 13264e98e3e1Schristos referenced |= 1 << 1; 13274e98e3e1Schristos cycles += m32r2f_model_m32r2_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 13284e98e3e1Schristos } 13294e98e3e1Schristos return cycles; 13304e98e3e1Schristos #undef FLD 13314e98e3e1Schristos } 13324e98e3e1Schristos 13334e98e3e1Schristos static int 13344e98e3e1Schristos model_m32r2_ldb_d (SIM_CPU *current_cpu, void *sem_arg) 13354e98e3e1Schristos { 13364e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 13374e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 13384e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 13394e98e3e1Schristos int cycles = 0; 13404e98e3e1Schristos { 13414e98e3e1Schristos int referenced = 0; 13424e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 13434e98e3e1Schristos INT in_sr = 0; 13444e98e3e1Schristos INT out_dr = 0; 13454e98e3e1Schristos in_sr = FLD (in_sr); 13464e98e3e1Schristos out_dr = FLD (out_dr); 13474e98e3e1Schristos referenced |= 1 << 0; 13484e98e3e1Schristos referenced |= 1 << 1; 13494e98e3e1Schristos cycles += m32r2f_model_m32r2_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 13504e98e3e1Schristos } 13514e98e3e1Schristos return cycles; 13524e98e3e1Schristos #undef FLD 13534e98e3e1Schristos } 13544e98e3e1Schristos 13554e98e3e1Schristos static int 13564e98e3e1Schristos model_m32r2_ldh (SIM_CPU *current_cpu, void *sem_arg) 13574e98e3e1Schristos { 13584e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 13594e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 13604e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 13614e98e3e1Schristos int cycles = 0; 13624e98e3e1Schristos { 13634e98e3e1Schristos int referenced = 0; 13644e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 13654e98e3e1Schristos INT in_sr = 0; 13664e98e3e1Schristos INT out_dr = 0; 13674e98e3e1Schristos in_sr = FLD (in_sr); 13684e98e3e1Schristos out_dr = FLD (out_dr); 13694e98e3e1Schristos referenced |= 1 << 0; 13704e98e3e1Schristos referenced |= 1 << 1; 13714e98e3e1Schristos cycles += m32r2f_model_m32r2_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 13724e98e3e1Schristos } 13734e98e3e1Schristos return cycles; 13744e98e3e1Schristos #undef FLD 13754e98e3e1Schristos } 13764e98e3e1Schristos 13774e98e3e1Schristos static int 13784e98e3e1Schristos model_m32r2_ldh_d (SIM_CPU *current_cpu, void *sem_arg) 13794e98e3e1Schristos { 13804e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 13814e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 13824e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 13834e98e3e1Schristos int cycles = 0; 13844e98e3e1Schristos { 13854e98e3e1Schristos int referenced = 0; 13864e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 13874e98e3e1Schristos INT in_sr = 0; 13884e98e3e1Schristos INT out_dr = 0; 13894e98e3e1Schristos in_sr = FLD (in_sr); 13904e98e3e1Schristos out_dr = FLD (out_dr); 13914e98e3e1Schristos referenced |= 1 << 0; 13924e98e3e1Schristos referenced |= 1 << 1; 13934e98e3e1Schristos cycles += m32r2f_model_m32r2_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 13944e98e3e1Schristos } 13954e98e3e1Schristos return cycles; 13964e98e3e1Schristos #undef FLD 13974e98e3e1Schristos } 13984e98e3e1Schristos 13994e98e3e1Schristos static int 14004e98e3e1Schristos model_m32r2_ldub (SIM_CPU *current_cpu, void *sem_arg) 14014e98e3e1Schristos { 14024e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 14034e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 14044e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 14054e98e3e1Schristos int cycles = 0; 14064e98e3e1Schristos { 14074e98e3e1Schristos int referenced = 0; 14084e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 14094e98e3e1Schristos INT in_sr = 0; 14104e98e3e1Schristos INT out_dr = 0; 14114e98e3e1Schristos in_sr = FLD (in_sr); 14124e98e3e1Schristos out_dr = FLD (out_dr); 14134e98e3e1Schristos referenced |= 1 << 0; 14144e98e3e1Schristos referenced |= 1 << 1; 14154e98e3e1Schristos cycles += m32r2f_model_m32r2_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 14164e98e3e1Schristos } 14174e98e3e1Schristos return cycles; 14184e98e3e1Schristos #undef FLD 14194e98e3e1Schristos } 14204e98e3e1Schristos 14214e98e3e1Schristos static int 14224e98e3e1Schristos model_m32r2_ldub_d (SIM_CPU *current_cpu, void *sem_arg) 14234e98e3e1Schristos { 14244e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 14254e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 14264e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 14274e98e3e1Schristos int cycles = 0; 14284e98e3e1Schristos { 14294e98e3e1Schristos int referenced = 0; 14304e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 14314e98e3e1Schristos INT in_sr = 0; 14324e98e3e1Schristos INT out_dr = 0; 14334e98e3e1Schristos in_sr = FLD (in_sr); 14344e98e3e1Schristos out_dr = FLD (out_dr); 14354e98e3e1Schristos referenced |= 1 << 0; 14364e98e3e1Schristos referenced |= 1 << 1; 14374e98e3e1Schristos cycles += m32r2f_model_m32r2_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 14384e98e3e1Schristos } 14394e98e3e1Schristos return cycles; 14404e98e3e1Schristos #undef FLD 14414e98e3e1Schristos } 14424e98e3e1Schristos 14434e98e3e1Schristos static int 14444e98e3e1Schristos model_m32r2_lduh (SIM_CPU *current_cpu, void *sem_arg) 14454e98e3e1Schristos { 14464e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 14474e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 14484e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 14494e98e3e1Schristos int cycles = 0; 14504e98e3e1Schristos { 14514e98e3e1Schristos int referenced = 0; 14524e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 14534e98e3e1Schristos INT in_sr = 0; 14544e98e3e1Schristos INT out_dr = 0; 14554e98e3e1Schristos in_sr = FLD (in_sr); 14564e98e3e1Schristos out_dr = FLD (out_dr); 14574e98e3e1Schristos referenced |= 1 << 0; 14584e98e3e1Schristos referenced |= 1 << 1; 14594e98e3e1Schristos cycles += m32r2f_model_m32r2_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 14604e98e3e1Schristos } 14614e98e3e1Schristos return cycles; 14624e98e3e1Schristos #undef FLD 14634e98e3e1Schristos } 14644e98e3e1Schristos 14654e98e3e1Schristos static int 14664e98e3e1Schristos model_m32r2_lduh_d (SIM_CPU *current_cpu, void *sem_arg) 14674e98e3e1Schristos { 14684e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 14694e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 14704e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 14714e98e3e1Schristos int cycles = 0; 14724e98e3e1Schristos { 14734e98e3e1Schristos int referenced = 0; 14744e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 14754e98e3e1Schristos INT in_sr = 0; 14764e98e3e1Schristos INT out_dr = 0; 14774e98e3e1Schristos in_sr = FLD (in_sr); 14784e98e3e1Schristos out_dr = FLD (out_dr); 14794e98e3e1Schristos referenced |= 1 << 0; 14804e98e3e1Schristos referenced |= 1 << 1; 14814e98e3e1Schristos cycles += m32r2f_model_m32r2_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 14824e98e3e1Schristos } 14834e98e3e1Schristos return cycles; 14844e98e3e1Schristos #undef FLD 14854e98e3e1Schristos } 14864e98e3e1Schristos 14874e98e3e1Schristos static int 14884e98e3e1Schristos model_m32r2_ld_plus (SIM_CPU *current_cpu, void *sem_arg) 14894e98e3e1Schristos { 14904e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 14914e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 14924e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 14934e98e3e1Schristos int cycles = 0; 14944e98e3e1Schristos { 14954e98e3e1Schristos int referenced = 0; 14964e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 14974e98e3e1Schristos INT in_sr = 0; 14984e98e3e1Schristos INT out_dr = 0; 14994e98e3e1Schristos in_sr = FLD (in_sr); 15004e98e3e1Schristos out_dr = FLD (out_dr); 15014e98e3e1Schristos referenced |= 1 << 0; 15024e98e3e1Schristos referenced |= 1 << 1; 15034e98e3e1Schristos cycles += m32r2f_model_m32r2_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 15044e98e3e1Schristos } 15054e98e3e1Schristos { 15064e98e3e1Schristos int referenced = 0; 15074e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 15084e98e3e1Schristos INT in_sr = -1; 15094e98e3e1Schristos INT in_dr = -1; 15104e98e3e1Schristos INT out_dr = -1; 15114e98e3e1Schristos in_dr = FLD (in_sr); 15124e98e3e1Schristos out_dr = FLD (out_sr); 15134e98e3e1Schristos referenced |= 1 << 0; 15144e98e3e1Schristos referenced |= 1 << 2; 15154e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr); 15164e98e3e1Schristos } 15174e98e3e1Schristos return cycles; 15184e98e3e1Schristos #undef FLD 15194e98e3e1Schristos } 15204e98e3e1Schristos 15214e98e3e1Schristos static int 15224e98e3e1Schristos model_m32r2_ld24 (SIM_CPU *current_cpu, void *sem_arg) 15234e98e3e1Schristos { 15244e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld24.f 15254e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 15264e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 15274e98e3e1Schristos int cycles = 0; 15284e98e3e1Schristos { 15294e98e3e1Schristos int referenced = 0; 15304e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 15314e98e3e1Schristos INT in_sr = -1; 15324e98e3e1Schristos INT in_dr = -1; 15334e98e3e1Schristos INT out_dr = -1; 15344e98e3e1Schristos out_dr = FLD (out_dr); 15354e98e3e1Schristos referenced |= 1 << 2; 15364e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 15374e98e3e1Schristos } 15384e98e3e1Schristos return cycles; 15394e98e3e1Schristos #undef FLD 15404e98e3e1Schristos } 15414e98e3e1Schristos 15424e98e3e1Schristos static int 15434e98e3e1Schristos model_m32r2_ldi8 (SIM_CPU *current_cpu, void *sem_arg) 15444e98e3e1Schristos { 15454e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_addi.f 15464e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 15474e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 15484e98e3e1Schristos int cycles = 0; 15494e98e3e1Schristos { 15504e98e3e1Schristos int referenced = 0; 15514e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 15524e98e3e1Schristos INT in_sr = -1; 15534e98e3e1Schristos INT in_dr = -1; 15544e98e3e1Schristos INT out_dr = -1; 15554e98e3e1Schristos out_dr = FLD (out_dr); 15564e98e3e1Schristos referenced |= 1 << 2; 15574e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 15584e98e3e1Schristos } 15594e98e3e1Schristos return cycles; 15604e98e3e1Schristos #undef FLD 15614e98e3e1Schristos } 15624e98e3e1Schristos 15634e98e3e1Schristos static int 15644e98e3e1Schristos model_m32r2_ldi16 (SIM_CPU *current_cpu, void *sem_arg) 15654e98e3e1Schristos { 15664e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 15674e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 15684e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 15694e98e3e1Schristos int cycles = 0; 15704e98e3e1Schristos { 15714e98e3e1Schristos int referenced = 0; 15724e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 15734e98e3e1Schristos INT in_sr = -1; 15744e98e3e1Schristos INT in_dr = -1; 15754e98e3e1Schristos INT out_dr = -1; 15764e98e3e1Schristos out_dr = FLD (out_dr); 15774e98e3e1Schristos referenced |= 1 << 2; 15784e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 15794e98e3e1Schristos } 15804e98e3e1Schristos return cycles; 15814e98e3e1Schristos #undef FLD 15824e98e3e1Schristos } 15834e98e3e1Schristos 15844e98e3e1Schristos static int 15854e98e3e1Schristos model_m32r2_lock (SIM_CPU *current_cpu, void *sem_arg) 15864e98e3e1Schristos { 15874e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 15884e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 15894e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 15904e98e3e1Schristos int cycles = 0; 15914e98e3e1Schristos { 15924e98e3e1Schristos int referenced = 0; 15934e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 15944e98e3e1Schristos INT in_sr = 0; 15954e98e3e1Schristos INT out_dr = 0; 15964e98e3e1Schristos in_sr = FLD (in_sr); 15974e98e3e1Schristos out_dr = FLD (out_dr); 15984e98e3e1Schristos referenced |= 1 << 0; 15994e98e3e1Schristos referenced |= 1 << 1; 16004e98e3e1Schristos cycles += m32r2f_model_m32r2_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 16014e98e3e1Schristos } 16024e98e3e1Schristos return cycles; 16034e98e3e1Schristos #undef FLD 16044e98e3e1Schristos } 16054e98e3e1Schristos 16064e98e3e1Schristos static int 16074e98e3e1Schristos model_m32r2_machi_a (SIM_CPU *current_cpu, void *sem_arg) 16084e98e3e1Schristos { 16094e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.f 16104e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 16114e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 16124e98e3e1Schristos int cycles = 0; 16134e98e3e1Schristos { 16144e98e3e1Schristos int referenced = 0; 16154e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 16164e98e3e1Schristos INT in_src1 = -1; 16174e98e3e1Schristos INT in_src2 = -1; 16184e98e3e1Schristos in_src1 = FLD (in_src1); 16194e98e3e1Schristos in_src2 = FLD (in_src2); 16204e98e3e1Schristos referenced |= 1 << 0; 16214e98e3e1Schristos referenced |= 1 << 1; 16224e98e3e1Schristos cycles += m32r2f_model_m32r2_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 16234e98e3e1Schristos } 16244e98e3e1Schristos return cycles; 16254e98e3e1Schristos #undef FLD 16264e98e3e1Schristos } 16274e98e3e1Schristos 16284e98e3e1Schristos static int 16294e98e3e1Schristos model_m32r2_maclo_a (SIM_CPU *current_cpu, void *sem_arg) 16304e98e3e1Schristos { 16314e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.f 16324e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 16334e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 16344e98e3e1Schristos int cycles = 0; 16354e98e3e1Schristos { 16364e98e3e1Schristos int referenced = 0; 16374e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 16384e98e3e1Schristos INT in_src1 = -1; 16394e98e3e1Schristos INT in_src2 = -1; 16404e98e3e1Schristos in_src1 = FLD (in_src1); 16414e98e3e1Schristos in_src2 = FLD (in_src2); 16424e98e3e1Schristos referenced |= 1 << 0; 16434e98e3e1Schristos referenced |= 1 << 1; 16444e98e3e1Schristos cycles += m32r2f_model_m32r2_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 16454e98e3e1Schristos } 16464e98e3e1Schristos return cycles; 16474e98e3e1Schristos #undef FLD 16484e98e3e1Schristos } 16494e98e3e1Schristos 16504e98e3e1Schristos static int 16514e98e3e1Schristos model_m32r2_macwhi_a (SIM_CPU *current_cpu, void *sem_arg) 16524e98e3e1Schristos { 16534e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.f 16544e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 16554e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 16564e98e3e1Schristos int cycles = 0; 16574e98e3e1Schristos { 16584e98e3e1Schristos int referenced = 0; 16594e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 16604e98e3e1Schristos INT in_src1 = -1; 16614e98e3e1Schristos INT in_src2 = -1; 16624e98e3e1Schristos in_src1 = FLD (in_src1); 16634e98e3e1Schristos in_src2 = FLD (in_src2); 16644e98e3e1Schristos referenced |= 1 << 0; 16654e98e3e1Schristos referenced |= 1 << 1; 16664e98e3e1Schristos cycles += m32r2f_model_m32r2_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 16674e98e3e1Schristos } 16684e98e3e1Schristos return cycles; 16694e98e3e1Schristos #undef FLD 16704e98e3e1Schristos } 16714e98e3e1Schristos 16724e98e3e1Schristos static int 16734e98e3e1Schristos model_m32r2_macwlo_a (SIM_CPU *current_cpu, void *sem_arg) 16744e98e3e1Schristos { 16754e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.f 16764e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 16774e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 16784e98e3e1Schristos int cycles = 0; 16794e98e3e1Schristos { 16804e98e3e1Schristos int referenced = 0; 16814e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 16824e98e3e1Schristos INT in_src1 = -1; 16834e98e3e1Schristos INT in_src2 = -1; 16844e98e3e1Schristos in_src1 = FLD (in_src1); 16854e98e3e1Schristos in_src2 = FLD (in_src2); 16864e98e3e1Schristos referenced |= 1 << 0; 16874e98e3e1Schristos referenced |= 1 << 1; 16884e98e3e1Schristos cycles += m32r2f_model_m32r2_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 16894e98e3e1Schristos } 16904e98e3e1Schristos return cycles; 16914e98e3e1Schristos #undef FLD 16924e98e3e1Schristos } 16934e98e3e1Schristos 16944e98e3e1Schristos static int 16954e98e3e1Schristos model_m32r2_mul (SIM_CPU *current_cpu, void *sem_arg) 16964e98e3e1Schristos { 16974e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 16984e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 16994e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 17004e98e3e1Schristos int cycles = 0; 17014e98e3e1Schristos { 17024e98e3e1Schristos int referenced = 0; 17034e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 17044e98e3e1Schristos INT in_sr = -1; 17054e98e3e1Schristos INT in_dr = -1; 17064e98e3e1Schristos INT out_dr = -1; 17074e98e3e1Schristos in_sr = FLD (in_sr); 17084e98e3e1Schristos in_dr = FLD (in_dr); 17094e98e3e1Schristos out_dr = FLD (out_dr); 17104e98e3e1Schristos referenced |= 1 << 0; 17114e98e3e1Schristos referenced |= 1 << 1; 17124e98e3e1Schristos referenced |= 1 << 2; 17134e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 17144e98e3e1Schristos } 17154e98e3e1Schristos return cycles; 17164e98e3e1Schristos #undef FLD 17174e98e3e1Schristos } 17184e98e3e1Schristos 17194e98e3e1Schristos static int 17204e98e3e1Schristos model_m32r2_mulhi_a (SIM_CPU *current_cpu, void *sem_arg) 17214e98e3e1Schristos { 17224e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.f 17234e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 17244e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 17254e98e3e1Schristos int cycles = 0; 17264e98e3e1Schristos { 17274e98e3e1Schristos int referenced = 0; 17284e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 17294e98e3e1Schristos INT in_src1 = -1; 17304e98e3e1Schristos INT in_src2 = -1; 17314e98e3e1Schristos in_src1 = FLD (in_src1); 17324e98e3e1Schristos in_src2 = FLD (in_src2); 17334e98e3e1Schristos referenced |= 1 << 0; 17344e98e3e1Schristos referenced |= 1 << 1; 17354e98e3e1Schristos cycles += m32r2f_model_m32r2_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 17364e98e3e1Schristos } 17374e98e3e1Schristos return cycles; 17384e98e3e1Schristos #undef FLD 17394e98e3e1Schristos } 17404e98e3e1Schristos 17414e98e3e1Schristos static int 17424e98e3e1Schristos model_m32r2_mullo_a (SIM_CPU *current_cpu, void *sem_arg) 17434e98e3e1Schristos { 17444e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.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_src1 = -1; 17524e98e3e1Schristos INT in_src2 = -1; 17534e98e3e1Schristos in_src1 = FLD (in_src1); 17544e98e3e1Schristos in_src2 = FLD (in_src2); 17554e98e3e1Schristos referenced |= 1 << 0; 17564e98e3e1Schristos referenced |= 1 << 1; 17574e98e3e1Schristos cycles += m32r2f_model_m32r2_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 17584e98e3e1Schristos } 17594e98e3e1Schristos return cycles; 17604e98e3e1Schristos #undef FLD 17614e98e3e1Schristos } 17624e98e3e1Schristos 17634e98e3e1Schristos static int 17644e98e3e1Schristos model_m32r2_mulwhi_a (SIM_CPU *current_cpu, void *sem_arg) 17654e98e3e1Schristos { 17664e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.f 17674e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 17684e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 17694e98e3e1Schristos int cycles = 0; 17704e98e3e1Schristos { 17714e98e3e1Schristos int referenced = 0; 17724e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 17734e98e3e1Schristos INT in_src1 = -1; 17744e98e3e1Schristos INT in_src2 = -1; 17754e98e3e1Schristos in_src1 = FLD (in_src1); 17764e98e3e1Schristos in_src2 = FLD (in_src2); 17774e98e3e1Schristos referenced |= 1 << 0; 17784e98e3e1Schristos referenced |= 1 << 1; 17794e98e3e1Schristos cycles += m32r2f_model_m32r2_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 17804e98e3e1Schristos } 17814e98e3e1Schristos return cycles; 17824e98e3e1Schristos #undef FLD 17834e98e3e1Schristos } 17844e98e3e1Schristos 17854e98e3e1Schristos static int 17864e98e3e1Schristos model_m32r2_mulwlo_a (SIM_CPU *current_cpu, void *sem_arg) 17874e98e3e1Schristos { 17884e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.f 17894e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 17904e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 17914e98e3e1Schristos int cycles = 0; 17924e98e3e1Schristos { 17934e98e3e1Schristos int referenced = 0; 17944e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 17954e98e3e1Schristos INT in_src1 = -1; 17964e98e3e1Schristos INT in_src2 = -1; 17974e98e3e1Schristos in_src1 = FLD (in_src1); 17984e98e3e1Schristos in_src2 = FLD (in_src2); 17994e98e3e1Schristos referenced |= 1 << 0; 18004e98e3e1Schristos referenced |= 1 << 1; 18014e98e3e1Schristos cycles += m32r2f_model_m32r2_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 18024e98e3e1Schristos } 18034e98e3e1Schristos return cycles; 18044e98e3e1Schristos #undef FLD 18054e98e3e1Schristos } 18064e98e3e1Schristos 18074e98e3e1Schristos static int 18084e98e3e1Schristos model_m32r2_mv (SIM_CPU *current_cpu, void *sem_arg) 18094e98e3e1Schristos { 18104e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 18114e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 18124e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 18134e98e3e1Schristos int cycles = 0; 18144e98e3e1Schristos { 18154e98e3e1Schristos int referenced = 0; 18164e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 18174e98e3e1Schristos INT in_sr = -1; 18184e98e3e1Schristos INT in_dr = -1; 18194e98e3e1Schristos INT out_dr = -1; 18204e98e3e1Schristos in_sr = FLD (in_sr); 18214e98e3e1Schristos out_dr = FLD (out_dr); 18224e98e3e1Schristos referenced |= 1 << 0; 18234e98e3e1Schristos referenced |= 1 << 2; 18244e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 18254e98e3e1Schristos } 18264e98e3e1Schristos return cycles; 18274e98e3e1Schristos #undef FLD 18284e98e3e1Schristos } 18294e98e3e1Schristos 18304e98e3e1Schristos static int 18314e98e3e1Schristos model_m32r2_mvfachi_a (SIM_CPU *current_cpu, void *sem_arg) 18324e98e3e1Schristos { 18334e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_mvfachi_a.f 18344e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 18354e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 18364e98e3e1Schristos int cycles = 0; 18374e98e3e1Schristos { 18384e98e3e1Schristos int referenced = 0; 18394e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 18404e98e3e1Schristos INT in_sr = -1; 18414e98e3e1Schristos INT in_dr = -1; 18424e98e3e1Schristos INT out_dr = -1; 18434e98e3e1Schristos out_dr = FLD (out_dr); 18444e98e3e1Schristos referenced |= 1 << 2; 18454e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 18464e98e3e1Schristos } 18474e98e3e1Schristos return cycles; 18484e98e3e1Schristos #undef FLD 18494e98e3e1Schristos } 18504e98e3e1Schristos 18514e98e3e1Schristos static int 18524e98e3e1Schristos model_m32r2_mvfaclo_a (SIM_CPU *current_cpu, void *sem_arg) 18534e98e3e1Schristos { 18544e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_mvfachi_a.f 18554e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 18564e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 18574e98e3e1Schristos int cycles = 0; 18584e98e3e1Schristos { 18594e98e3e1Schristos int referenced = 0; 18604e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 18614e98e3e1Schristos INT in_sr = -1; 18624e98e3e1Schristos INT in_dr = -1; 18634e98e3e1Schristos INT out_dr = -1; 18644e98e3e1Schristos out_dr = FLD (out_dr); 18654e98e3e1Schristos referenced |= 1 << 2; 18664e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 18674e98e3e1Schristos } 18684e98e3e1Schristos return cycles; 18694e98e3e1Schristos #undef FLD 18704e98e3e1Schristos } 18714e98e3e1Schristos 18724e98e3e1Schristos static int 18734e98e3e1Schristos model_m32r2_mvfacmi_a (SIM_CPU *current_cpu, void *sem_arg) 18744e98e3e1Schristos { 18754e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_mvfachi_a.f 18764e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 18774e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 18784e98e3e1Schristos int cycles = 0; 18794e98e3e1Schristos { 18804e98e3e1Schristos int referenced = 0; 18814e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 18824e98e3e1Schristos INT in_sr = -1; 18834e98e3e1Schristos INT in_dr = -1; 18844e98e3e1Schristos INT out_dr = -1; 18854e98e3e1Schristos out_dr = FLD (out_dr); 18864e98e3e1Schristos referenced |= 1 << 2; 18874e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 18884e98e3e1Schristos } 18894e98e3e1Schristos return cycles; 18904e98e3e1Schristos #undef FLD 18914e98e3e1Schristos } 18924e98e3e1Schristos 18934e98e3e1Schristos static int 18944e98e3e1Schristos model_m32r2_mvfc (SIM_CPU *current_cpu, void *sem_arg) 18954e98e3e1Schristos { 18964e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 18974e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 18984e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 18994e98e3e1Schristos int cycles = 0; 19004e98e3e1Schristos { 19014e98e3e1Schristos int referenced = 0; 19024e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 19034e98e3e1Schristos INT in_sr = -1; 19044e98e3e1Schristos INT in_dr = -1; 19054e98e3e1Schristos INT out_dr = -1; 19064e98e3e1Schristos out_dr = FLD (out_dr); 19074e98e3e1Schristos referenced |= 1 << 2; 19084e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 19094e98e3e1Schristos } 19104e98e3e1Schristos return cycles; 19114e98e3e1Schristos #undef FLD 19124e98e3e1Schristos } 19134e98e3e1Schristos 19144e98e3e1Schristos static int 19154e98e3e1Schristos model_m32r2_mvtachi_a (SIM_CPU *current_cpu, void *sem_arg) 19164e98e3e1Schristos { 19174e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_mvtachi_a.f 19184e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 19194e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 19204e98e3e1Schristos int cycles = 0; 19214e98e3e1Schristos { 19224e98e3e1Schristos int referenced = 0; 19234e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 19244e98e3e1Schristos INT in_sr = -1; 19254e98e3e1Schristos INT in_dr = -1; 19264e98e3e1Schristos INT out_dr = -1; 19274e98e3e1Schristos in_sr = FLD (in_src1); 19284e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 19294e98e3e1Schristos } 19304e98e3e1Schristos return cycles; 19314e98e3e1Schristos #undef FLD 19324e98e3e1Schristos } 19334e98e3e1Schristos 19344e98e3e1Schristos static int 19354e98e3e1Schristos model_m32r2_mvtaclo_a (SIM_CPU *current_cpu, void *sem_arg) 19364e98e3e1Schristos { 19374e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_mvtachi_a.f 19384e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 19394e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 19404e98e3e1Schristos int cycles = 0; 19414e98e3e1Schristos { 19424e98e3e1Schristos int referenced = 0; 19434e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 19444e98e3e1Schristos INT in_sr = -1; 19454e98e3e1Schristos INT in_dr = -1; 19464e98e3e1Schristos INT out_dr = -1; 19474e98e3e1Schristos in_sr = FLD (in_src1); 19484e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 19494e98e3e1Schristos } 19504e98e3e1Schristos return cycles; 19514e98e3e1Schristos #undef FLD 19524e98e3e1Schristos } 19534e98e3e1Schristos 19544e98e3e1Schristos static int 19554e98e3e1Schristos model_m32r2_mvtc (SIM_CPU *current_cpu, void *sem_arg) 19564e98e3e1Schristos { 19574e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 19584e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 19594e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 19604e98e3e1Schristos int cycles = 0; 19614e98e3e1Schristos { 19624e98e3e1Schristos int referenced = 0; 19634e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 19644e98e3e1Schristos INT in_sr = -1; 19654e98e3e1Schristos INT in_dr = -1; 19664e98e3e1Schristos INT out_dr = -1; 19674e98e3e1Schristos in_sr = FLD (in_sr); 19684e98e3e1Schristos referenced |= 1 << 0; 19694e98e3e1Schristos cycles += m32r2f_model_m32r2_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_m32r2_neg (SIM_CPU *current_cpu, void *sem_arg) 19774e98e3e1Schristos { 19784e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_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_sr = -1; 19864e98e3e1Schristos INT in_dr = -1; 19874e98e3e1Schristos INT out_dr = -1; 19884e98e3e1Schristos in_sr = FLD (in_sr); 19894e98e3e1Schristos out_dr = FLD (out_dr); 19904e98e3e1Schristos referenced |= 1 << 0; 19914e98e3e1Schristos referenced |= 1 << 2; 19924e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 19934e98e3e1Schristos } 19944e98e3e1Schristos return cycles; 19954e98e3e1Schristos #undef FLD 19964e98e3e1Schristos } 19974e98e3e1Schristos 19984e98e3e1Schristos static int 19994e98e3e1Schristos model_m32r2_nop (SIM_CPU *current_cpu, void *sem_arg) 20004e98e3e1Schristos { 20014e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f 20024e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 20034e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 20044e98e3e1Schristos int cycles = 0; 20054e98e3e1Schristos { 20064e98e3e1Schristos int referenced = 0; 20074e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 20084e98e3e1Schristos INT in_sr = -1; 20094e98e3e1Schristos INT in_dr = -1; 20104e98e3e1Schristos INT out_dr = -1; 20114e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 20124e98e3e1Schristos } 20134e98e3e1Schristos return cycles; 20144e98e3e1Schristos #undef FLD 20154e98e3e1Schristos } 20164e98e3e1Schristos 20174e98e3e1Schristos static int 20184e98e3e1Schristos model_m32r2_not (SIM_CPU *current_cpu, void *sem_arg) 20194e98e3e1Schristos { 20204e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 20214e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 20224e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 20234e98e3e1Schristos int cycles = 0; 20244e98e3e1Schristos { 20254e98e3e1Schristos int referenced = 0; 20264e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 20274e98e3e1Schristos INT in_sr = -1; 20284e98e3e1Schristos INT in_dr = -1; 20294e98e3e1Schristos INT out_dr = -1; 20304e98e3e1Schristos in_sr = FLD (in_sr); 20314e98e3e1Schristos out_dr = FLD (out_dr); 20324e98e3e1Schristos referenced |= 1 << 0; 20334e98e3e1Schristos referenced |= 1 << 2; 20344e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 20354e98e3e1Schristos } 20364e98e3e1Schristos return cycles; 20374e98e3e1Schristos #undef FLD 20384e98e3e1Schristos } 20394e98e3e1Schristos 20404e98e3e1Schristos static int 20414e98e3e1Schristos model_m32r2_rac_dsi (SIM_CPU *current_cpu, void *sem_arg) 20424e98e3e1Schristos { 20434e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_rac_dsi.f 20444e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 20454e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 20464e98e3e1Schristos int cycles = 0; 20474e98e3e1Schristos { 20484e98e3e1Schristos int referenced = 0; 20494e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 20504e98e3e1Schristos INT in_src1 = -1; 20514e98e3e1Schristos INT in_src2 = -1; 20524e98e3e1Schristos cycles += m32r2f_model_m32r2_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 20534e98e3e1Schristos } 20544e98e3e1Schristos return cycles; 20554e98e3e1Schristos #undef FLD 20564e98e3e1Schristos } 20574e98e3e1Schristos 20584e98e3e1Schristos static int 20594e98e3e1Schristos model_m32r2_rach_dsi (SIM_CPU *current_cpu, void *sem_arg) 20604e98e3e1Schristos { 20614e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_rac_dsi.f 20624e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 20634e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 20644e98e3e1Schristos int cycles = 0; 20654e98e3e1Schristos { 20664e98e3e1Schristos int referenced = 0; 20674e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 20684e98e3e1Schristos INT in_src1 = -1; 20694e98e3e1Schristos INT in_src2 = -1; 20704e98e3e1Schristos cycles += m32r2f_model_m32r2_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 20714e98e3e1Schristos } 20724e98e3e1Schristos return cycles; 20734e98e3e1Schristos #undef FLD 20744e98e3e1Schristos } 20754e98e3e1Schristos 20764e98e3e1Schristos static int 20774e98e3e1Schristos model_m32r2_rte (SIM_CPU *current_cpu, void *sem_arg) 20784e98e3e1Schristos { 20794e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f 20804e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 20814e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 20824e98e3e1Schristos int cycles = 0; 20834e98e3e1Schristos { 20844e98e3e1Schristos int referenced = 0; 20854e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 20864e98e3e1Schristos INT in_sr = -1; 20874e98e3e1Schristos INT in_dr = -1; 20884e98e3e1Schristos INT out_dr = -1; 20894e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 20904e98e3e1Schristos } 20914e98e3e1Schristos return cycles; 20924e98e3e1Schristos #undef FLD 20934e98e3e1Schristos } 20944e98e3e1Schristos 20954e98e3e1Schristos static int 20964e98e3e1Schristos model_m32r2_seth (SIM_CPU *current_cpu, void *sem_arg) 20974e98e3e1Schristos { 20984e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_seth.f 20994e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 21004e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 21014e98e3e1Schristos int cycles = 0; 21024e98e3e1Schristos { 21034e98e3e1Schristos int referenced = 0; 21044e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 21054e98e3e1Schristos INT in_sr = -1; 21064e98e3e1Schristos INT in_dr = -1; 21074e98e3e1Schristos INT out_dr = -1; 21084e98e3e1Schristos out_dr = FLD (out_dr); 21094e98e3e1Schristos referenced |= 1 << 2; 21104e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 21114e98e3e1Schristos } 21124e98e3e1Schristos return cycles; 21134e98e3e1Schristos #undef FLD 21144e98e3e1Schristos } 21154e98e3e1Schristos 21164e98e3e1Schristos static int 21174e98e3e1Schristos model_m32r2_sll (SIM_CPU *current_cpu, void *sem_arg) 21184e98e3e1Schristos { 21194e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 21204e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 21214e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 21224e98e3e1Schristos int cycles = 0; 21234e98e3e1Schristos { 21244e98e3e1Schristos int referenced = 0; 21254e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 21264e98e3e1Schristos INT in_sr = -1; 21274e98e3e1Schristos INT in_dr = -1; 21284e98e3e1Schristos INT out_dr = -1; 21294e98e3e1Schristos in_sr = FLD (in_sr); 21304e98e3e1Schristos in_dr = FLD (in_dr); 21314e98e3e1Schristos out_dr = FLD (out_dr); 21324e98e3e1Schristos referenced |= 1 << 0; 21334e98e3e1Schristos referenced |= 1 << 1; 21344e98e3e1Schristos referenced |= 1 << 2; 21354e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 21364e98e3e1Schristos } 21374e98e3e1Schristos return cycles; 21384e98e3e1Schristos #undef FLD 21394e98e3e1Schristos } 21404e98e3e1Schristos 21414e98e3e1Schristos static int 21424e98e3e1Schristos model_m32r2_sll3 (SIM_CPU *current_cpu, void *sem_arg) 21434e98e3e1Schristos { 21444e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 21454e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 21464e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 21474e98e3e1Schristos int cycles = 0; 21484e98e3e1Schristos { 21494e98e3e1Schristos int referenced = 0; 21504e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 21514e98e3e1Schristos INT in_sr = -1; 21524e98e3e1Schristos INT in_dr = -1; 21534e98e3e1Schristos INT out_dr = -1; 21544e98e3e1Schristos in_sr = FLD (in_sr); 21554e98e3e1Schristos out_dr = FLD (out_dr); 21564e98e3e1Schristos referenced |= 1 << 0; 21574e98e3e1Schristos referenced |= 1 << 2; 21584e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 21594e98e3e1Schristos } 21604e98e3e1Schristos return cycles; 21614e98e3e1Schristos #undef FLD 21624e98e3e1Schristos } 21634e98e3e1Schristos 21644e98e3e1Schristos static int 21654e98e3e1Schristos model_m32r2_slli (SIM_CPU *current_cpu, void *sem_arg) 21664e98e3e1Schristos { 21674e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_slli.f 21684e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 21694e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 21704e98e3e1Schristos int cycles = 0; 21714e98e3e1Schristos { 21724e98e3e1Schristos int referenced = 0; 21734e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 21744e98e3e1Schristos INT in_sr = -1; 21754e98e3e1Schristos INT in_dr = -1; 21764e98e3e1Schristos INT out_dr = -1; 21774e98e3e1Schristos in_dr = FLD (in_dr); 21784e98e3e1Schristos out_dr = FLD (out_dr); 21794e98e3e1Schristos referenced |= 1 << 1; 21804e98e3e1Schristos referenced |= 1 << 2; 21814e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 21824e98e3e1Schristos } 21834e98e3e1Schristos return cycles; 21844e98e3e1Schristos #undef FLD 21854e98e3e1Schristos } 21864e98e3e1Schristos 21874e98e3e1Schristos static int 21884e98e3e1Schristos model_m32r2_sra (SIM_CPU *current_cpu, void *sem_arg) 21894e98e3e1Schristos { 21904e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 21914e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 21924e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 21934e98e3e1Schristos int cycles = 0; 21944e98e3e1Schristos { 21954e98e3e1Schristos int referenced = 0; 21964e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 21974e98e3e1Schristos INT in_sr = -1; 21984e98e3e1Schristos INT in_dr = -1; 21994e98e3e1Schristos INT out_dr = -1; 22004e98e3e1Schristos in_sr = FLD (in_sr); 22014e98e3e1Schristos in_dr = FLD (in_dr); 22024e98e3e1Schristos out_dr = FLD (out_dr); 22034e98e3e1Schristos referenced |= 1 << 0; 22044e98e3e1Schristos referenced |= 1 << 1; 22054e98e3e1Schristos referenced |= 1 << 2; 22064e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 22074e98e3e1Schristos } 22084e98e3e1Schristos return cycles; 22094e98e3e1Schristos #undef FLD 22104e98e3e1Schristos } 22114e98e3e1Schristos 22124e98e3e1Schristos static int 22134e98e3e1Schristos model_m32r2_sra3 (SIM_CPU *current_cpu, void *sem_arg) 22144e98e3e1Schristos { 22154e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f 22164e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 22174e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 22184e98e3e1Schristos int cycles = 0; 22194e98e3e1Schristos { 22204e98e3e1Schristos int referenced = 0; 22214e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 22224e98e3e1Schristos INT in_sr = -1; 22234e98e3e1Schristos INT in_dr = -1; 22244e98e3e1Schristos INT out_dr = -1; 22254e98e3e1Schristos in_sr = FLD (in_sr); 22264e98e3e1Schristos out_dr = FLD (out_dr); 22274e98e3e1Schristos referenced |= 1 << 0; 22284e98e3e1Schristos referenced |= 1 << 2; 22294e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 22304e98e3e1Schristos } 22314e98e3e1Schristos return cycles; 22324e98e3e1Schristos #undef FLD 22334e98e3e1Schristos } 22344e98e3e1Schristos 22354e98e3e1Schristos static int 22364e98e3e1Schristos model_m32r2_srai (SIM_CPU *current_cpu, void *sem_arg) 22374e98e3e1Schristos { 22384e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_slli.f 22394e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 22404e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 22414e98e3e1Schristos int cycles = 0; 22424e98e3e1Schristos { 22434e98e3e1Schristos int referenced = 0; 22444e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 22454e98e3e1Schristos INT in_sr = -1; 22464e98e3e1Schristos INT in_dr = -1; 22474e98e3e1Schristos INT out_dr = -1; 22484e98e3e1Schristos in_dr = FLD (in_dr); 22494e98e3e1Schristos out_dr = FLD (out_dr); 22504e98e3e1Schristos referenced |= 1 << 1; 22514e98e3e1Schristos referenced |= 1 << 2; 22524e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 22534e98e3e1Schristos } 22544e98e3e1Schristos return cycles; 22554e98e3e1Schristos #undef FLD 22564e98e3e1Schristos } 22574e98e3e1Schristos 22584e98e3e1Schristos static int 22594e98e3e1Schristos model_m32r2_srl (SIM_CPU *current_cpu, void *sem_arg) 22604e98e3e1Schristos { 22614e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 22624e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 22634e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 22644e98e3e1Schristos int cycles = 0; 22654e98e3e1Schristos { 22664e98e3e1Schristos int referenced = 0; 22674e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 22684e98e3e1Schristos INT in_sr = -1; 22694e98e3e1Schristos INT in_dr = -1; 22704e98e3e1Schristos INT out_dr = -1; 22714e98e3e1Schristos in_sr = FLD (in_sr); 22724e98e3e1Schristos in_dr = FLD (in_dr); 22734e98e3e1Schristos out_dr = FLD (out_dr); 22744e98e3e1Schristos referenced |= 1 << 0; 22754e98e3e1Schristos referenced |= 1 << 1; 22764e98e3e1Schristos referenced |= 1 << 2; 22774e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 22784e98e3e1Schristos } 22794e98e3e1Schristos return cycles; 22804e98e3e1Schristos #undef FLD 22814e98e3e1Schristos } 22824e98e3e1Schristos 22834e98e3e1Schristos static int 22844e98e3e1Schristos model_m32r2_srl3 (SIM_CPU *current_cpu, void *sem_arg) 22854e98e3e1Schristos { 22864e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.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 in_sr = FLD (in_sr); 22974e98e3e1Schristos out_dr = FLD (out_dr); 22984e98e3e1Schristos referenced |= 1 << 0; 22994e98e3e1Schristos referenced |= 1 << 2; 23004e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 23014e98e3e1Schristos } 23024e98e3e1Schristos return cycles; 23034e98e3e1Schristos #undef FLD 23044e98e3e1Schristos } 23054e98e3e1Schristos 23064e98e3e1Schristos static int 23074e98e3e1Schristos model_m32r2_srli (SIM_CPU *current_cpu, void *sem_arg) 23084e98e3e1Schristos { 23094e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_slli.f 23104e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 23114e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 23124e98e3e1Schristos int cycles = 0; 23134e98e3e1Schristos { 23144e98e3e1Schristos int referenced = 0; 23154e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 23164e98e3e1Schristos INT in_sr = -1; 23174e98e3e1Schristos INT in_dr = -1; 23184e98e3e1Schristos INT out_dr = -1; 23194e98e3e1Schristos in_dr = FLD (in_dr); 23204e98e3e1Schristos out_dr = FLD (out_dr); 23214e98e3e1Schristos referenced |= 1 << 1; 23224e98e3e1Schristos referenced |= 1 << 2; 23234e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 23244e98e3e1Schristos } 23254e98e3e1Schristos return cycles; 23264e98e3e1Schristos #undef FLD 23274e98e3e1Schristos } 23284e98e3e1Schristos 23294e98e3e1Schristos static int 23304e98e3e1Schristos model_m32r2_st (SIM_CPU *current_cpu, void *sem_arg) 23314e98e3e1Schristos { 23324e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 23334e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 23344e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 23354e98e3e1Schristos int cycles = 0; 23364e98e3e1Schristos { 23374e98e3e1Schristos int referenced = 0; 23384e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 23394e98e3e1Schristos INT in_src1 = 0; 23404e98e3e1Schristos INT in_src2 = 0; 23414e98e3e1Schristos in_src1 = FLD (in_src1); 23424e98e3e1Schristos in_src2 = FLD (in_src2); 23434e98e3e1Schristos referenced |= 1 << 0; 23444e98e3e1Schristos referenced |= 1 << 1; 23454e98e3e1Schristos cycles += m32r2f_model_m32r2_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 23464e98e3e1Schristos } 23474e98e3e1Schristos return cycles; 23484e98e3e1Schristos #undef FLD 23494e98e3e1Schristos } 23504e98e3e1Schristos 23514e98e3e1Schristos static int 23524e98e3e1Schristos model_m32r2_st_d (SIM_CPU *current_cpu, void *sem_arg) 23534e98e3e1Schristos { 23544e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f 23554e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 23564e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 23574e98e3e1Schristos int cycles = 0; 23584e98e3e1Schristos { 23594e98e3e1Schristos int referenced = 0; 23604e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 23614e98e3e1Schristos INT in_src1 = 0; 23624e98e3e1Schristos INT in_src2 = 0; 23634e98e3e1Schristos in_src1 = FLD (in_src1); 23644e98e3e1Schristos in_src2 = FLD (in_src2); 23654e98e3e1Schristos referenced |= 1 << 0; 23664e98e3e1Schristos referenced |= 1 << 1; 23674e98e3e1Schristos cycles += m32r2f_model_m32r2_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 23684e98e3e1Schristos } 23694e98e3e1Schristos return cycles; 23704e98e3e1Schristos #undef FLD 23714e98e3e1Schristos } 23724e98e3e1Schristos 23734e98e3e1Schristos static int 23744e98e3e1Schristos model_m32r2_stb (SIM_CPU *current_cpu, void *sem_arg) 23754e98e3e1Schristos { 23764e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 23774e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 23784e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 23794e98e3e1Schristos int cycles = 0; 23804e98e3e1Schristos { 23814e98e3e1Schristos int referenced = 0; 23824e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 23834e98e3e1Schristos INT in_src1 = 0; 23844e98e3e1Schristos INT in_src2 = 0; 23854e98e3e1Schristos in_src1 = FLD (in_src1); 23864e98e3e1Schristos in_src2 = FLD (in_src2); 23874e98e3e1Schristos referenced |= 1 << 0; 23884e98e3e1Schristos referenced |= 1 << 1; 23894e98e3e1Schristos cycles += m32r2f_model_m32r2_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 23904e98e3e1Schristos } 23914e98e3e1Schristos return cycles; 23924e98e3e1Schristos #undef FLD 23934e98e3e1Schristos } 23944e98e3e1Schristos 23954e98e3e1Schristos static int 23964e98e3e1Schristos model_m32r2_stb_d (SIM_CPU *current_cpu, void *sem_arg) 23974e98e3e1Schristos { 23984e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f 23994e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 24004e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 24014e98e3e1Schristos int cycles = 0; 24024e98e3e1Schristos { 24034e98e3e1Schristos int referenced = 0; 24044e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 24054e98e3e1Schristos INT in_src1 = 0; 24064e98e3e1Schristos INT in_src2 = 0; 24074e98e3e1Schristos in_src1 = FLD (in_src1); 24084e98e3e1Schristos in_src2 = FLD (in_src2); 24094e98e3e1Schristos referenced |= 1 << 0; 24104e98e3e1Schristos referenced |= 1 << 1; 24114e98e3e1Schristos cycles += m32r2f_model_m32r2_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 24124e98e3e1Schristos } 24134e98e3e1Schristos return cycles; 24144e98e3e1Schristos #undef FLD 24154e98e3e1Schristos } 24164e98e3e1Schristos 24174e98e3e1Schristos static int 24184e98e3e1Schristos model_m32r2_sth (SIM_CPU *current_cpu, void *sem_arg) 24194e98e3e1Schristos { 24204e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 24214e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 24224e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 24234e98e3e1Schristos int cycles = 0; 24244e98e3e1Schristos { 24254e98e3e1Schristos int referenced = 0; 24264e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 24274e98e3e1Schristos INT in_src1 = 0; 24284e98e3e1Schristos INT in_src2 = 0; 24294e98e3e1Schristos in_src1 = FLD (in_src1); 24304e98e3e1Schristos in_src2 = FLD (in_src2); 24314e98e3e1Schristos referenced |= 1 << 0; 24324e98e3e1Schristos referenced |= 1 << 1; 24334e98e3e1Schristos cycles += m32r2f_model_m32r2_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 24344e98e3e1Schristos } 24354e98e3e1Schristos return cycles; 24364e98e3e1Schristos #undef FLD 24374e98e3e1Schristos } 24384e98e3e1Schristos 24394e98e3e1Schristos static int 24404e98e3e1Schristos model_m32r2_sth_d (SIM_CPU *current_cpu, void *sem_arg) 24414e98e3e1Schristos { 24424e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f 24434e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 24444e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 24454e98e3e1Schristos int cycles = 0; 24464e98e3e1Schristos { 24474e98e3e1Schristos int referenced = 0; 24484e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 24494e98e3e1Schristos INT in_src1 = 0; 24504e98e3e1Schristos INT in_src2 = 0; 24514e98e3e1Schristos in_src1 = FLD (in_src1); 24524e98e3e1Schristos in_src2 = FLD (in_src2); 24534e98e3e1Schristos referenced |= 1 << 0; 24544e98e3e1Schristos referenced |= 1 << 1; 24554e98e3e1Schristos cycles += m32r2f_model_m32r2_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 24564e98e3e1Schristos } 24574e98e3e1Schristos return cycles; 24584e98e3e1Schristos #undef FLD 24594e98e3e1Schristos } 24604e98e3e1Schristos 24614e98e3e1Schristos static int 24624e98e3e1Schristos model_m32r2_st_plus (SIM_CPU *current_cpu, void *sem_arg) 24634e98e3e1Schristos { 24644e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 24654e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 24664e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 24674e98e3e1Schristos int cycles = 0; 24684e98e3e1Schristos { 24694e98e3e1Schristos int referenced = 0; 24704e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 24714e98e3e1Schristos INT in_src1 = 0; 24724e98e3e1Schristos INT in_src2 = 0; 24734e98e3e1Schristos in_src1 = FLD (in_src1); 24744e98e3e1Schristos in_src2 = FLD (in_src2); 24754e98e3e1Schristos referenced |= 1 << 0; 24764e98e3e1Schristos referenced |= 1 << 1; 24774e98e3e1Schristos cycles += m32r2f_model_m32r2_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 24784e98e3e1Schristos } 24794e98e3e1Schristos { 24804e98e3e1Schristos int referenced = 0; 24814e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 24824e98e3e1Schristos INT in_sr = -1; 24834e98e3e1Schristos INT in_dr = -1; 24844e98e3e1Schristos INT out_dr = -1; 24854e98e3e1Schristos in_dr = FLD (in_src2); 24864e98e3e1Schristos out_dr = FLD (out_src2); 24874e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr); 24884e98e3e1Schristos } 24894e98e3e1Schristos return cycles; 24904e98e3e1Schristos #undef FLD 24914e98e3e1Schristos } 24924e98e3e1Schristos 24934e98e3e1Schristos static int 24944e98e3e1Schristos model_m32r2_sth_plus (SIM_CPU *current_cpu, void *sem_arg) 24954e98e3e1Schristos { 24964e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 24974e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 24984e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 24994e98e3e1Schristos int cycles = 0; 25004e98e3e1Schristos { 25014e98e3e1Schristos int referenced = 0; 25024e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 25034e98e3e1Schristos INT in_src1 = 0; 25044e98e3e1Schristos INT in_src2 = 0; 25054e98e3e1Schristos in_src1 = FLD (in_src1); 25064e98e3e1Schristos in_src2 = FLD (in_src2); 25074e98e3e1Schristos referenced |= 1 << 0; 25084e98e3e1Schristos referenced |= 1 << 1; 25094e98e3e1Schristos cycles += m32r2f_model_m32r2_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 25104e98e3e1Schristos } 25114e98e3e1Schristos { 25124e98e3e1Schristos int referenced = 0; 25134e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 25144e98e3e1Schristos INT in_sr = -1; 25154e98e3e1Schristos INT in_dr = -1; 25164e98e3e1Schristos INT out_dr = -1; 25174e98e3e1Schristos in_dr = FLD (in_src2); 25184e98e3e1Schristos out_dr = FLD (out_src2); 25194e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr); 25204e98e3e1Schristos } 25214e98e3e1Schristos return cycles; 25224e98e3e1Schristos #undef FLD 25234e98e3e1Schristos } 25244e98e3e1Schristos 25254e98e3e1Schristos static int 25264e98e3e1Schristos model_m32r2_stb_plus (SIM_CPU *current_cpu, void *sem_arg) 25274e98e3e1Schristos { 25284e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 25294e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 25304e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 25314e98e3e1Schristos int cycles = 0; 25324e98e3e1Schristos { 25334e98e3e1Schristos int referenced = 0; 25344e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 25354e98e3e1Schristos INT in_src1 = 0; 25364e98e3e1Schristos INT in_src2 = 0; 25374e98e3e1Schristos in_src1 = FLD (in_src1); 25384e98e3e1Schristos in_src2 = FLD (in_src2); 25394e98e3e1Schristos referenced |= 1 << 0; 25404e98e3e1Schristos referenced |= 1 << 1; 25414e98e3e1Schristos cycles += m32r2f_model_m32r2_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 25424e98e3e1Schristos } 25434e98e3e1Schristos { 25444e98e3e1Schristos int referenced = 0; 25454e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 25464e98e3e1Schristos INT in_sr = -1; 25474e98e3e1Schristos INT in_dr = -1; 25484e98e3e1Schristos INT out_dr = -1; 25494e98e3e1Schristos in_dr = FLD (in_src2); 25504e98e3e1Schristos out_dr = FLD (out_src2); 25514e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr); 25524e98e3e1Schristos } 25534e98e3e1Schristos return cycles; 25544e98e3e1Schristos #undef FLD 25554e98e3e1Schristos } 25564e98e3e1Schristos 25574e98e3e1Schristos static int 25584e98e3e1Schristos model_m32r2_st_minus (SIM_CPU *current_cpu, void *sem_arg) 25594e98e3e1Schristos { 25604e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 25614e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 25624e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 25634e98e3e1Schristos int cycles = 0; 25644e98e3e1Schristos { 25654e98e3e1Schristos int referenced = 0; 25664e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 25674e98e3e1Schristos INT in_src1 = 0; 25684e98e3e1Schristos INT in_src2 = 0; 25694e98e3e1Schristos in_src1 = FLD (in_src1); 25704e98e3e1Schristos in_src2 = FLD (in_src2); 25714e98e3e1Schristos referenced |= 1 << 0; 25724e98e3e1Schristos referenced |= 1 << 1; 25734e98e3e1Schristos cycles += m32r2f_model_m32r2_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2); 25744e98e3e1Schristos } 25754e98e3e1Schristos { 25764e98e3e1Schristos int referenced = 0; 25774e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 25784e98e3e1Schristos INT in_sr = -1; 25794e98e3e1Schristos INT in_dr = -1; 25804e98e3e1Schristos INT out_dr = -1; 25814e98e3e1Schristos in_dr = FLD (in_src2); 25824e98e3e1Schristos out_dr = FLD (out_src2); 25834e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr); 25844e98e3e1Schristos } 25854e98e3e1Schristos return cycles; 25864e98e3e1Schristos #undef FLD 25874e98e3e1Schristos } 25884e98e3e1Schristos 25894e98e3e1Schristos static int 25904e98e3e1Schristos model_m32r2_sub (SIM_CPU *current_cpu, void *sem_arg) 25914e98e3e1Schristos { 25924e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 25934e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 25944e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 25954e98e3e1Schristos int cycles = 0; 25964e98e3e1Schristos { 25974e98e3e1Schristos int referenced = 0; 25984e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 25994e98e3e1Schristos INT in_sr = -1; 26004e98e3e1Schristos INT in_dr = -1; 26014e98e3e1Schristos INT out_dr = -1; 26024e98e3e1Schristos in_sr = FLD (in_sr); 26034e98e3e1Schristos in_dr = FLD (in_dr); 26044e98e3e1Schristos out_dr = FLD (out_dr); 26054e98e3e1Schristos referenced |= 1 << 0; 26064e98e3e1Schristos referenced |= 1 << 1; 26074e98e3e1Schristos referenced |= 1 << 2; 26084e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 26094e98e3e1Schristos } 26104e98e3e1Schristos return cycles; 26114e98e3e1Schristos #undef FLD 26124e98e3e1Schristos } 26134e98e3e1Schristos 26144e98e3e1Schristos static int 26154e98e3e1Schristos model_m32r2_subv (SIM_CPU *current_cpu, void *sem_arg) 26164e98e3e1Schristos { 26174e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 26184e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 26194e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 26204e98e3e1Schristos int cycles = 0; 26214e98e3e1Schristos { 26224e98e3e1Schristos int referenced = 0; 26234e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 26244e98e3e1Schristos INT in_sr = -1; 26254e98e3e1Schristos INT in_dr = -1; 26264e98e3e1Schristos INT out_dr = -1; 26274e98e3e1Schristos in_sr = FLD (in_sr); 26284e98e3e1Schristos in_dr = FLD (in_dr); 26294e98e3e1Schristos out_dr = FLD (out_dr); 26304e98e3e1Schristos referenced |= 1 << 0; 26314e98e3e1Schristos referenced |= 1 << 1; 26324e98e3e1Schristos referenced |= 1 << 2; 26334e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 26344e98e3e1Schristos } 26354e98e3e1Schristos return cycles; 26364e98e3e1Schristos #undef FLD 26374e98e3e1Schristos } 26384e98e3e1Schristos 26394e98e3e1Schristos static int 26404e98e3e1Schristos model_m32r2_subx (SIM_CPU *current_cpu, void *sem_arg) 26414e98e3e1Schristos { 26424e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f 26434e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 26444e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 26454e98e3e1Schristos int cycles = 0; 26464e98e3e1Schristos { 26474e98e3e1Schristos int referenced = 0; 26484e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 26494e98e3e1Schristos INT in_sr = -1; 26504e98e3e1Schristos INT in_dr = -1; 26514e98e3e1Schristos INT out_dr = -1; 26524e98e3e1Schristos in_sr = FLD (in_sr); 26534e98e3e1Schristos in_dr = FLD (in_dr); 26544e98e3e1Schristos out_dr = FLD (out_dr); 26554e98e3e1Schristos referenced |= 1 << 0; 26564e98e3e1Schristos referenced |= 1 << 1; 26574e98e3e1Schristos referenced |= 1 << 2; 26584e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 26594e98e3e1Schristos } 26604e98e3e1Schristos return cycles; 26614e98e3e1Schristos #undef FLD 26624e98e3e1Schristos } 26634e98e3e1Schristos 26644e98e3e1Schristos static int 26654e98e3e1Schristos model_m32r2_trap (SIM_CPU *current_cpu, void *sem_arg) 26664e98e3e1Schristos { 26674e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_trap.f 26684e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 26694e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 26704e98e3e1Schristos int cycles = 0; 26714e98e3e1Schristos { 26724e98e3e1Schristos int referenced = 0; 26734e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 26744e98e3e1Schristos INT in_sr = -1; 26754e98e3e1Schristos INT in_dr = -1; 26764e98e3e1Schristos INT out_dr = -1; 26774e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 26784e98e3e1Schristos } 26794e98e3e1Schristos return cycles; 26804e98e3e1Schristos #undef FLD 26814e98e3e1Schristos } 26824e98e3e1Schristos 26834e98e3e1Schristos static int 26844e98e3e1Schristos model_m32r2_unlock (SIM_CPU *current_cpu, void *sem_arg) 26854e98e3e1Schristos { 26864e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 26874e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 26884e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 26894e98e3e1Schristos int cycles = 0; 26904e98e3e1Schristos { 26914e98e3e1Schristos int referenced = 0; 26924e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 26934e98e3e1Schristos INT in_sr = 0; 26944e98e3e1Schristos INT out_dr = 0; 26954e98e3e1Schristos cycles += m32r2f_model_m32r2_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr); 26964e98e3e1Schristos } 26974e98e3e1Schristos return cycles; 26984e98e3e1Schristos #undef FLD 26994e98e3e1Schristos } 27004e98e3e1Schristos 27014e98e3e1Schristos static int 27024e98e3e1Schristos model_m32r2_satb (SIM_CPU *current_cpu, void *sem_arg) 27034e98e3e1Schristos { 27044e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 27054e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 27064e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 27074e98e3e1Schristos int cycles = 0; 27084e98e3e1Schristos { 27094e98e3e1Schristos int referenced = 0; 27104e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 27114e98e3e1Schristos INT in_sr = -1; 27124e98e3e1Schristos INT in_dr = -1; 27134e98e3e1Schristos INT out_dr = -1; 27144e98e3e1Schristos in_sr = FLD (in_sr); 27154e98e3e1Schristos out_dr = FLD (out_dr); 27164e98e3e1Schristos referenced |= 1 << 0; 27174e98e3e1Schristos referenced |= 1 << 2; 27184e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 27194e98e3e1Schristos } 27204e98e3e1Schristos return cycles; 27214e98e3e1Schristos #undef FLD 27224e98e3e1Schristos } 27234e98e3e1Schristos 27244e98e3e1Schristos static int 27254e98e3e1Schristos model_m32r2_sath (SIM_CPU *current_cpu, void *sem_arg) 27264e98e3e1Schristos { 27274e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 27284e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 27294e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 27304e98e3e1Schristos int cycles = 0; 27314e98e3e1Schristos { 27324e98e3e1Schristos int referenced = 0; 27334e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 27344e98e3e1Schristos INT in_sr = -1; 27354e98e3e1Schristos INT in_dr = -1; 27364e98e3e1Schristos INT out_dr = -1; 27374e98e3e1Schristos in_sr = FLD (in_sr); 27384e98e3e1Schristos out_dr = FLD (out_dr); 27394e98e3e1Schristos referenced |= 1 << 0; 27404e98e3e1Schristos referenced |= 1 << 2; 27414e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 27424e98e3e1Schristos } 27434e98e3e1Schristos return cycles; 27444e98e3e1Schristos #undef FLD 27454e98e3e1Schristos } 27464e98e3e1Schristos 27474e98e3e1Schristos static int 27484e98e3e1Schristos model_m32r2_sat (SIM_CPU *current_cpu, void *sem_arg) 27494e98e3e1Schristos { 27504e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f 27514e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 27524e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 27534e98e3e1Schristos int cycles = 0; 27544e98e3e1Schristos { 27554e98e3e1Schristos int referenced = 0; 27564e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 27574e98e3e1Schristos INT in_sr = -1; 27584e98e3e1Schristos INT in_dr = -1; 27594e98e3e1Schristos INT out_dr = -1; 27604e98e3e1Schristos in_sr = FLD (in_sr); 27614e98e3e1Schristos out_dr = FLD (out_dr); 27624e98e3e1Schristos if (insn_referenced & (1 << 1)) referenced |= 1 << 0; 27634e98e3e1Schristos referenced |= 1 << 2; 27644e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 27654e98e3e1Schristos } 27664e98e3e1Schristos return cycles; 27674e98e3e1Schristos #undef FLD 27684e98e3e1Schristos } 27694e98e3e1Schristos 27704e98e3e1Schristos static int 27714e98e3e1Schristos model_m32r2_pcmpbz (SIM_CPU *current_cpu, void *sem_arg) 27724e98e3e1Schristos { 27734e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 27744e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 27754e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 27764e98e3e1Schristos int cycles = 0; 27774e98e3e1Schristos { 27784e98e3e1Schristos int referenced = 0; 27794e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 27804e98e3e1Schristos INT in_src1 = -1; 27814e98e3e1Schristos INT in_src2 = -1; 27824e98e3e1Schristos in_src2 = FLD (in_src2); 27834e98e3e1Schristos referenced |= 1 << 1; 27844e98e3e1Schristos cycles += m32r2f_model_m32r2_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2); 27854e98e3e1Schristos } 27864e98e3e1Schristos return cycles; 27874e98e3e1Schristos #undef FLD 27884e98e3e1Schristos } 27894e98e3e1Schristos 27904e98e3e1Schristos static int 27914e98e3e1Schristos model_m32r2_sadd (SIM_CPU *current_cpu, void *sem_arg) 27924e98e3e1Schristos { 27934e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f 27944e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 27954e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 27964e98e3e1Schristos int cycles = 0; 27974e98e3e1Schristos { 27984e98e3e1Schristos int referenced = 0; 27994e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 28004e98e3e1Schristos INT in_src1 = -1; 28014e98e3e1Schristos INT in_src2 = -1; 28024e98e3e1Schristos cycles += m32r2f_model_m32r2_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 28034e98e3e1Schristos } 28044e98e3e1Schristos return cycles; 28054e98e3e1Schristos #undef FLD 28064e98e3e1Schristos } 28074e98e3e1Schristos 28084e98e3e1Schristos static int 28094e98e3e1Schristos model_m32r2_macwu1 (SIM_CPU *current_cpu, void *sem_arg) 28104e98e3e1Schristos { 28114e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 28124e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 28134e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 28144e98e3e1Schristos int cycles = 0; 28154e98e3e1Schristos { 28164e98e3e1Schristos int referenced = 0; 28174e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 28184e98e3e1Schristos INT in_src1 = -1; 28194e98e3e1Schristos INT in_src2 = -1; 28204e98e3e1Schristos in_src1 = FLD (in_src1); 28214e98e3e1Schristos in_src2 = FLD (in_src2); 28224e98e3e1Schristos referenced |= 1 << 0; 28234e98e3e1Schristos referenced |= 1 << 1; 28244e98e3e1Schristos cycles += m32r2f_model_m32r2_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 28254e98e3e1Schristos } 28264e98e3e1Schristos return cycles; 28274e98e3e1Schristos #undef FLD 28284e98e3e1Schristos } 28294e98e3e1Schristos 28304e98e3e1Schristos static int 28314e98e3e1Schristos model_m32r2_msblo (SIM_CPU *current_cpu, void *sem_arg) 28324e98e3e1Schristos { 28334e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 28344e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 28354e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 28364e98e3e1Schristos int cycles = 0; 28374e98e3e1Schristos { 28384e98e3e1Schristos int referenced = 0; 28394e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 28404e98e3e1Schristos INT in_src1 = -1; 28414e98e3e1Schristos INT in_src2 = -1; 28424e98e3e1Schristos in_src1 = FLD (in_src1); 28434e98e3e1Schristos in_src2 = FLD (in_src2); 28444e98e3e1Schristos referenced |= 1 << 0; 28454e98e3e1Schristos referenced |= 1 << 1; 28464e98e3e1Schristos cycles += m32r2f_model_m32r2_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 28474e98e3e1Schristos } 28484e98e3e1Schristos return cycles; 28494e98e3e1Schristos #undef FLD 28504e98e3e1Schristos } 28514e98e3e1Schristos 28524e98e3e1Schristos static int 28534e98e3e1Schristos model_m32r2_mulwu1 (SIM_CPU *current_cpu, void *sem_arg) 28544e98e3e1Schristos { 28554e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 28564e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 28574e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 28584e98e3e1Schristos int cycles = 0; 28594e98e3e1Schristos { 28604e98e3e1Schristos int referenced = 0; 28614e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 28624e98e3e1Schristos INT in_src1 = -1; 28634e98e3e1Schristos INT in_src2 = -1; 28644e98e3e1Schristos in_src1 = FLD (in_src1); 28654e98e3e1Schristos in_src2 = FLD (in_src2); 28664e98e3e1Schristos referenced |= 1 << 0; 28674e98e3e1Schristos referenced |= 1 << 1; 28684e98e3e1Schristos cycles += m32r2f_model_m32r2_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 28694e98e3e1Schristos } 28704e98e3e1Schristos return cycles; 28714e98e3e1Schristos #undef FLD 28724e98e3e1Schristos } 28734e98e3e1Schristos 28744e98e3e1Schristos static int 28754e98e3e1Schristos model_m32r2_maclh1 (SIM_CPU *current_cpu, void *sem_arg) 28764e98e3e1Schristos { 28774e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f 28784e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 28794e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 28804e98e3e1Schristos int cycles = 0; 28814e98e3e1Schristos { 28824e98e3e1Schristos int referenced = 0; 28834e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 28844e98e3e1Schristos INT in_src1 = -1; 28854e98e3e1Schristos INT in_src2 = -1; 28864e98e3e1Schristos in_src1 = FLD (in_src1); 28874e98e3e1Schristos in_src2 = FLD (in_src2); 28884e98e3e1Schristos referenced |= 1 << 0; 28894e98e3e1Schristos referenced |= 1 << 1; 28904e98e3e1Schristos cycles += m32r2f_model_m32r2_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2); 28914e98e3e1Schristos } 28924e98e3e1Schristos return cycles; 28934e98e3e1Schristos #undef FLD 28944e98e3e1Schristos } 28954e98e3e1Schristos 28964e98e3e1Schristos static int 28974e98e3e1Schristos model_m32r2_sc (SIM_CPU *current_cpu, void *sem_arg) 28984e98e3e1Schristos { 28994e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.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 INT in_sr = -1; 29074e98e3e1Schristos INT in_dr = -1; 29084e98e3e1Schristos INT out_dr = -1; 29094e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 29104e98e3e1Schristos } 29114e98e3e1Schristos return cycles; 29124e98e3e1Schristos #undef FLD 29134e98e3e1Schristos } 29144e98e3e1Schristos 29154e98e3e1Schristos static int 29164e98e3e1Schristos model_m32r2_snc (SIM_CPU *current_cpu, void *sem_arg) 29174e98e3e1Schristos { 29184e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f 29194e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 29204e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 29214e98e3e1Schristos int cycles = 0; 29224e98e3e1Schristos { 29234e98e3e1Schristos int referenced = 0; 29244e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 29254e98e3e1Schristos INT in_sr = -1; 29264e98e3e1Schristos INT in_dr = -1; 29274e98e3e1Schristos INT out_dr = -1; 29284e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 29294e98e3e1Schristos } 29304e98e3e1Schristos return cycles; 29314e98e3e1Schristos #undef FLD 29324e98e3e1Schristos } 29334e98e3e1Schristos 29344e98e3e1Schristos static int 29354e98e3e1Schristos model_m32r2_clrpsw (SIM_CPU *current_cpu, void *sem_arg) 29364e98e3e1Schristos { 29374e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_clrpsw.f 29384e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 29394e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 29404e98e3e1Schristos int cycles = 0; 29414e98e3e1Schristos { 29424e98e3e1Schristos int referenced = 0; 29434e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 29444e98e3e1Schristos INT in_sr = -1; 29454e98e3e1Schristos INT in_dr = -1; 29464e98e3e1Schristos INT out_dr = -1; 29474e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 29484e98e3e1Schristos } 29494e98e3e1Schristos return cycles; 29504e98e3e1Schristos #undef FLD 29514e98e3e1Schristos } 29524e98e3e1Schristos 29534e98e3e1Schristos static int 29544e98e3e1Schristos model_m32r2_setpsw (SIM_CPU *current_cpu, void *sem_arg) 29554e98e3e1Schristos { 29564e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_clrpsw.f 29574e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 29584e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 29594e98e3e1Schristos int cycles = 0; 29604e98e3e1Schristos { 29614e98e3e1Schristos int referenced = 0; 29624e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 29634e98e3e1Schristos INT in_sr = -1; 29644e98e3e1Schristos INT in_dr = -1; 29654e98e3e1Schristos INT out_dr = -1; 29664e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 29674e98e3e1Schristos } 29684e98e3e1Schristos return cycles; 29694e98e3e1Schristos #undef FLD 29704e98e3e1Schristos } 29714e98e3e1Schristos 29724e98e3e1Schristos static int 29734e98e3e1Schristos model_m32r2_bset (SIM_CPU *current_cpu, void *sem_arg) 29744e98e3e1Schristos { 29754e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f 29764e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 29774e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 29784e98e3e1Schristos int cycles = 0; 29794e98e3e1Schristos { 29804e98e3e1Schristos int referenced = 0; 29814e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 29824e98e3e1Schristos INT in_sr = -1; 29834e98e3e1Schristos INT in_dr = -1; 29844e98e3e1Schristos INT out_dr = -1; 29854e98e3e1Schristos in_sr = FLD (in_sr); 29864e98e3e1Schristos referenced |= 1 << 0; 29874e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 29884e98e3e1Schristos } 29894e98e3e1Schristos return cycles; 29904e98e3e1Schristos #undef FLD 29914e98e3e1Schristos } 29924e98e3e1Schristos 29934e98e3e1Schristos static int 29944e98e3e1Schristos model_m32r2_bclr (SIM_CPU *current_cpu, void *sem_arg) 29954e98e3e1Schristos { 29964e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f 29974e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 29984e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 29994e98e3e1Schristos int cycles = 0; 30004e98e3e1Schristos { 30014e98e3e1Schristos int referenced = 0; 30024e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 30034e98e3e1Schristos INT in_sr = -1; 30044e98e3e1Schristos INT in_dr = -1; 30054e98e3e1Schristos INT out_dr = -1; 30064e98e3e1Schristos in_sr = FLD (in_sr); 30074e98e3e1Schristos referenced |= 1 << 0; 30084e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 30094e98e3e1Schristos } 30104e98e3e1Schristos return cycles; 30114e98e3e1Schristos #undef FLD 30124e98e3e1Schristos } 30134e98e3e1Schristos 30144e98e3e1Schristos static int 30154e98e3e1Schristos model_m32r2_btst (SIM_CPU *current_cpu, void *sem_arg) 30164e98e3e1Schristos { 30174e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f 30184e98e3e1Schristos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg); 30194e98e3e1Schristos const IDESC * UNUSED idesc = abuf->idesc; 30204e98e3e1Schristos int cycles = 0; 30214e98e3e1Schristos { 30224e98e3e1Schristos int referenced = 0; 30234e98e3e1Schristos int UNUSED insn_referenced = abuf->written; 30244e98e3e1Schristos INT in_sr = -1; 30254e98e3e1Schristos INT in_dr = -1; 30264e98e3e1Schristos INT out_dr = -1; 30274e98e3e1Schristos in_sr = FLD (in_sr); 30284e98e3e1Schristos referenced |= 1 << 0; 30294e98e3e1Schristos cycles += m32r2f_model_m32r2_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr); 30304e98e3e1Schristos } 30314e98e3e1Schristos return cycles; 30324e98e3e1Schristos #undef FLD 30334e98e3e1Schristos } 30344e98e3e1Schristos 30354e98e3e1Schristos /* We assume UNIT_NONE == 0 because the tables don't always terminate 30364e98e3e1Schristos entries with it. */ 30374e98e3e1Schristos 30384e98e3e1Schristos /* Model timing data for `m32r2'. */ 30394e98e3e1Schristos 30404e98e3e1Schristos static const INSN_TIMING m32r2_timing[] = { 30414e98e3e1Schristos { M32R2F_INSN_X_INVALID, 0, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30424e98e3e1Schristos { M32R2F_INSN_X_AFTER, 0, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30434e98e3e1Schristos { M32R2F_INSN_X_BEFORE, 0, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30444e98e3e1Schristos { M32R2F_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30454e98e3e1Schristos { M32R2F_INSN_X_CHAIN, 0, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30464e98e3e1Schristos { M32R2F_INSN_X_BEGIN, 0, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30474e98e3e1Schristos { M32R2F_INSN_ADD, model_m32r2_add, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30484e98e3e1Schristos { M32R2F_INSN_ADD3, model_m32r2_add3, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30494e98e3e1Schristos { M32R2F_INSN_AND, model_m32r2_and, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30504e98e3e1Schristos { M32R2F_INSN_AND3, model_m32r2_and3, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30514e98e3e1Schristos { M32R2F_INSN_OR, model_m32r2_or, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30524e98e3e1Schristos { M32R2F_INSN_OR3, model_m32r2_or3, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30534e98e3e1Schristos { M32R2F_INSN_XOR, model_m32r2_xor, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30544e98e3e1Schristos { M32R2F_INSN_XOR3, model_m32r2_xor3, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30554e98e3e1Schristos { M32R2F_INSN_ADDI, model_m32r2_addi, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30564e98e3e1Schristos { M32R2F_INSN_ADDV, model_m32r2_addv, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30574e98e3e1Schristos { M32R2F_INSN_ADDV3, model_m32r2_addv3, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30584e98e3e1Schristos { M32R2F_INSN_ADDX, model_m32r2_addx, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 30594e98e3e1Schristos { M32R2F_INSN_BC8, model_m32r2_bc8, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 30604e98e3e1Schristos { M32R2F_INSN_BC24, model_m32r2_bc24, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 30614e98e3e1Schristos { M32R2F_INSN_BEQ, model_m32r2_beq, { { (int) UNIT_M32R2_U_CTI, 1, 1 }, { (int) UNIT_M32R2_U_CMP, 1, 0 } } }, 30624e98e3e1Schristos { M32R2F_INSN_BEQZ, model_m32r2_beqz, { { (int) UNIT_M32R2_U_CTI, 1, 1 }, { (int) UNIT_M32R2_U_CMP, 1, 0 } } }, 30634e98e3e1Schristos { M32R2F_INSN_BGEZ, model_m32r2_bgez, { { (int) UNIT_M32R2_U_CTI, 1, 1 }, { (int) UNIT_M32R2_U_CMP, 1, 0 } } }, 30644e98e3e1Schristos { M32R2F_INSN_BGTZ, model_m32r2_bgtz, { { (int) UNIT_M32R2_U_CTI, 1, 1 }, { (int) UNIT_M32R2_U_CMP, 1, 0 } } }, 30654e98e3e1Schristos { M32R2F_INSN_BLEZ, model_m32r2_blez, { { (int) UNIT_M32R2_U_CTI, 1, 1 }, { (int) UNIT_M32R2_U_CMP, 1, 0 } } }, 30664e98e3e1Schristos { M32R2F_INSN_BLTZ, model_m32r2_bltz, { { (int) UNIT_M32R2_U_CTI, 1, 1 }, { (int) UNIT_M32R2_U_CMP, 1, 0 } } }, 30674e98e3e1Schristos { M32R2F_INSN_BNEZ, model_m32r2_bnez, { { (int) UNIT_M32R2_U_CTI, 1, 1 }, { (int) UNIT_M32R2_U_CMP, 1, 0 } } }, 30684e98e3e1Schristos { M32R2F_INSN_BL8, model_m32r2_bl8, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 30694e98e3e1Schristos { M32R2F_INSN_BL24, model_m32r2_bl24, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 30704e98e3e1Schristos { M32R2F_INSN_BCL8, model_m32r2_bcl8, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 30714e98e3e1Schristos { M32R2F_INSN_BCL24, model_m32r2_bcl24, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 30724e98e3e1Schristos { M32R2F_INSN_BNC8, model_m32r2_bnc8, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 30734e98e3e1Schristos { M32R2F_INSN_BNC24, model_m32r2_bnc24, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 30744e98e3e1Schristos { M32R2F_INSN_BNE, model_m32r2_bne, { { (int) UNIT_M32R2_U_CTI, 1, 1 }, { (int) UNIT_M32R2_U_CMP, 1, 0 } } }, 30754e98e3e1Schristos { M32R2F_INSN_BRA8, model_m32r2_bra8, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 30764e98e3e1Schristos { M32R2F_INSN_BRA24, model_m32r2_bra24, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 30774e98e3e1Schristos { M32R2F_INSN_BNCL8, model_m32r2_bncl8, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 30784e98e3e1Schristos { M32R2F_INSN_BNCL24, model_m32r2_bncl24, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 30794e98e3e1Schristos { M32R2F_INSN_CMP, model_m32r2_cmp, { { (int) UNIT_M32R2_U_CMP, 1, 1 } } }, 30804e98e3e1Schristos { M32R2F_INSN_CMPI, model_m32r2_cmpi, { { (int) UNIT_M32R2_U_CMP, 1, 1 } } }, 30814e98e3e1Schristos { M32R2F_INSN_CMPU, model_m32r2_cmpu, { { (int) UNIT_M32R2_U_CMP, 1, 1 } } }, 30824e98e3e1Schristos { M32R2F_INSN_CMPUI, model_m32r2_cmpui, { { (int) UNIT_M32R2_U_CMP, 1, 1 } } }, 30834e98e3e1Schristos { M32R2F_INSN_CMPEQ, model_m32r2_cmpeq, { { (int) UNIT_M32R2_U_CMP, 1, 1 } } }, 30844e98e3e1Schristos { M32R2F_INSN_CMPZ, model_m32r2_cmpz, { { (int) UNIT_M32R2_U_CMP, 1, 1 } } }, 30854e98e3e1Schristos { M32R2F_INSN_DIV, model_m32r2_div, { { (int) UNIT_M32R2_U_EXEC, 1, 37 } } }, 30864e98e3e1Schristos { M32R2F_INSN_DIVU, model_m32r2_divu, { { (int) UNIT_M32R2_U_EXEC, 1, 37 } } }, 30874e98e3e1Schristos { M32R2F_INSN_REM, model_m32r2_rem, { { (int) UNIT_M32R2_U_EXEC, 1, 37 } } }, 30884e98e3e1Schristos { M32R2F_INSN_REMU, model_m32r2_remu, { { (int) UNIT_M32R2_U_EXEC, 1, 37 } } }, 30894e98e3e1Schristos { M32R2F_INSN_REMH, model_m32r2_remh, { { (int) UNIT_M32R2_U_EXEC, 1, 21 } } }, 30904e98e3e1Schristos { M32R2F_INSN_REMUH, model_m32r2_remuh, { { (int) UNIT_M32R2_U_EXEC, 1, 21 } } }, 30914e98e3e1Schristos { M32R2F_INSN_REMB, model_m32r2_remb, { { (int) UNIT_M32R2_U_EXEC, 1, 21 } } }, 30924e98e3e1Schristos { M32R2F_INSN_REMUB, model_m32r2_remub, { { (int) UNIT_M32R2_U_EXEC, 1, 21 } } }, 30934e98e3e1Schristos { M32R2F_INSN_DIVUH, model_m32r2_divuh, { { (int) UNIT_M32R2_U_EXEC, 1, 21 } } }, 30944e98e3e1Schristos { M32R2F_INSN_DIVB, model_m32r2_divb, { { (int) UNIT_M32R2_U_EXEC, 1, 21 } } }, 30954e98e3e1Schristos { M32R2F_INSN_DIVUB, model_m32r2_divub, { { (int) UNIT_M32R2_U_EXEC, 1, 21 } } }, 30964e98e3e1Schristos { M32R2F_INSN_DIVH, model_m32r2_divh, { { (int) UNIT_M32R2_U_EXEC, 1, 21 } } }, 30974e98e3e1Schristos { M32R2F_INSN_JC, model_m32r2_jc, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 30984e98e3e1Schristos { M32R2F_INSN_JNC, model_m32r2_jnc, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 30994e98e3e1Schristos { M32R2F_INSN_JL, model_m32r2_jl, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 31004e98e3e1Schristos { M32R2F_INSN_JMP, model_m32r2_jmp, { { (int) UNIT_M32R2_U_CTI, 1, 1 } } }, 31014e98e3e1Schristos { M32R2F_INSN_LD, model_m32r2_ld, { { (int) UNIT_M32R2_U_LOAD, 1, 1 } } }, 31024e98e3e1Schristos { M32R2F_INSN_LD_D, model_m32r2_ld_d, { { (int) UNIT_M32R2_U_LOAD, 1, 2 } } }, 31034e98e3e1Schristos { M32R2F_INSN_LDB, model_m32r2_ldb, { { (int) UNIT_M32R2_U_LOAD, 1, 1 } } }, 31044e98e3e1Schristos { M32R2F_INSN_LDB_D, model_m32r2_ldb_d, { { (int) UNIT_M32R2_U_LOAD, 1, 2 } } }, 31054e98e3e1Schristos { M32R2F_INSN_LDH, model_m32r2_ldh, { { (int) UNIT_M32R2_U_LOAD, 1, 1 } } }, 31064e98e3e1Schristos { M32R2F_INSN_LDH_D, model_m32r2_ldh_d, { { (int) UNIT_M32R2_U_LOAD, 1, 2 } } }, 31074e98e3e1Schristos { M32R2F_INSN_LDUB, model_m32r2_ldub, { { (int) UNIT_M32R2_U_LOAD, 1, 1 } } }, 31084e98e3e1Schristos { M32R2F_INSN_LDUB_D, model_m32r2_ldub_d, { { (int) UNIT_M32R2_U_LOAD, 1, 2 } } }, 31094e98e3e1Schristos { M32R2F_INSN_LDUH, model_m32r2_lduh, { { (int) UNIT_M32R2_U_LOAD, 1, 1 } } }, 31104e98e3e1Schristos { M32R2F_INSN_LDUH_D, model_m32r2_lduh_d, { { (int) UNIT_M32R2_U_LOAD, 1, 2 } } }, 31114e98e3e1Schristos { M32R2F_INSN_LD_PLUS, model_m32r2_ld_plus, { { (int) UNIT_M32R2_U_LOAD, 1, 1 }, { (int) UNIT_M32R2_U_EXEC, 1, 0 } } }, 31124e98e3e1Schristos { M32R2F_INSN_LD24, model_m32r2_ld24, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31134e98e3e1Schristos { M32R2F_INSN_LDI8, model_m32r2_ldi8, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31144e98e3e1Schristos { M32R2F_INSN_LDI16, model_m32r2_ldi16, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31154e98e3e1Schristos { M32R2F_INSN_LOCK, model_m32r2_lock, { { (int) UNIT_M32R2_U_LOAD, 1, 1 } } }, 31164e98e3e1Schristos { M32R2F_INSN_MACHI_A, model_m32r2_machi_a, { { (int) UNIT_M32R2_U_MAC, 1, 1 } } }, 31174e98e3e1Schristos { M32R2F_INSN_MACLO_A, model_m32r2_maclo_a, { { (int) UNIT_M32R2_U_MAC, 1, 1 } } }, 31184e98e3e1Schristos { M32R2F_INSN_MACWHI_A, model_m32r2_macwhi_a, { { (int) UNIT_M32R2_U_MAC, 1, 1 } } }, 31194e98e3e1Schristos { M32R2F_INSN_MACWLO_A, model_m32r2_macwlo_a, { { (int) UNIT_M32R2_U_MAC, 1, 1 } } }, 31204e98e3e1Schristos { M32R2F_INSN_MUL, model_m32r2_mul, { { (int) UNIT_M32R2_U_EXEC, 1, 4 } } }, 31214e98e3e1Schristos { M32R2F_INSN_MULHI_A, model_m32r2_mulhi_a, { { (int) UNIT_M32R2_U_MAC, 1, 1 } } }, 31224e98e3e1Schristos { M32R2F_INSN_MULLO_A, model_m32r2_mullo_a, { { (int) UNIT_M32R2_U_MAC, 1, 1 } } }, 31234e98e3e1Schristos { M32R2F_INSN_MULWHI_A, model_m32r2_mulwhi_a, { { (int) UNIT_M32R2_U_MAC, 1, 1 } } }, 31244e98e3e1Schristos { M32R2F_INSN_MULWLO_A, model_m32r2_mulwlo_a, { { (int) UNIT_M32R2_U_MAC, 1, 1 } } }, 31254e98e3e1Schristos { M32R2F_INSN_MV, model_m32r2_mv, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31264e98e3e1Schristos { M32R2F_INSN_MVFACHI_A, model_m32r2_mvfachi_a, { { (int) UNIT_M32R2_U_EXEC, 1, 2 } } }, 31274e98e3e1Schristos { M32R2F_INSN_MVFACLO_A, model_m32r2_mvfaclo_a, { { (int) UNIT_M32R2_U_EXEC, 1, 2 } } }, 31284e98e3e1Schristos { M32R2F_INSN_MVFACMI_A, model_m32r2_mvfacmi_a, { { (int) UNIT_M32R2_U_EXEC, 1, 2 } } }, 31294e98e3e1Schristos { M32R2F_INSN_MVFC, model_m32r2_mvfc, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31304e98e3e1Schristos { M32R2F_INSN_MVTACHI_A, model_m32r2_mvtachi_a, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31314e98e3e1Schristos { M32R2F_INSN_MVTACLO_A, model_m32r2_mvtaclo_a, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31324e98e3e1Schristos { M32R2F_INSN_MVTC, model_m32r2_mvtc, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31334e98e3e1Schristos { M32R2F_INSN_NEG, model_m32r2_neg, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31344e98e3e1Schristos { M32R2F_INSN_NOP, model_m32r2_nop, { { (int) UNIT_M32R2_U_EXEC, 1, 0 } } }, 31354e98e3e1Schristos { M32R2F_INSN_NOT, model_m32r2_not, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31364e98e3e1Schristos { M32R2F_INSN_RAC_DSI, model_m32r2_rac_dsi, { { (int) UNIT_M32R2_U_MAC, 1, 1 } } }, 31374e98e3e1Schristos { M32R2F_INSN_RACH_DSI, model_m32r2_rach_dsi, { { (int) UNIT_M32R2_U_MAC, 1, 1 } } }, 31384e98e3e1Schristos { M32R2F_INSN_RTE, model_m32r2_rte, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31394e98e3e1Schristos { M32R2F_INSN_SETH, model_m32r2_seth, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31404e98e3e1Schristos { M32R2F_INSN_SLL, model_m32r2_sll, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31414e98e3e1Schristos { M32R2F_INSN_SLL3, model_m32r2_sll3, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31424e98e3e1Schristos { M32R2F_INSN_SLLI, model_m32r2_slli, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31434e98e3e1Schristos { M32R2F_INSN_SRA, model_m32r2_sra, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31444e98e3e1Schristos { M32R2F_INSN_SRA3, model_m32r2_sra3, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31454e98e3e1Schristos { M32R2F_INSN_SRAI, model_m32r2_srai, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31464e98e3e1Schristos { M32R2F_INSN_SRL, model_m32r2_srl, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31474e98e3e1Schristos { M32R2F_INSN_SRL3, model_m32r2_srl3, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31484e98e3e1Schristos { M32R2F_INSN_SRLI, model_m32r2_srli, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31494e98e3e1Schristos { M32R2F_INSN_ST, model_m32r2_st, { { (int) UNIT_M32R2_U_STORE, 1, 1 } } }, 31504e98e3e1Schristos { M32R2F_INSN_ST_D, model_m32r2_st_d, { { (int) UNIT_M32R2_U_STORE, 1, 2 } } }, 31514e98e3e1Schristos { M32R2F_INSN_STB, model_m32r2_stb, { { (int) UNIT_M32R2_U_STORE, 1, 1 } } }, 31524e98e3e1Schristos { M32R2F_INSN_STB_D, model_m32r2_stb_d, { { (int) UNIT_M32R2_U_STORE, 1, 2 } } }, 31534e98e3e1Schristos { M32R2F_INSN_STH, model_m32r2_sth, { { (int) UNIT_M32R2_U_STORE, 1, 1 } } }, 31544e98e3e1Schristos { M32R2F_INSN_STH_D, model_m32r2_sth_d, { { (int) UNIT_M32R2_U_STORE, 1, 2 } } }, 31554e98e3e1Schristos { M32R2F_INSN_ST_PLUS, model_m32r2_st_plus, { { (int) UNIT_M32R2_U_STORE, 1, 1 }, { (int) UNIT_M32R2_U_EXEC, 1, 0 } } }, 31564e98e3e1Schristos { M32R2F_INSN_STH_PLUS, model_m32r2_sth_plus, { { (int) UNIT_M32R2_U_STORE, 1, 1 }, { (int) UNIT_M32R2_U_EXEC, 1, 0 } } }, 31574e98e3e1Schristos { M32R2F_INSN_STB_PLUS, model_m32r2_stb_plus, { { (int) UNIT_M32R2_U_STORE, 1, 1 }, { (int) UNIT_M32R2_U_EXEC, 1, 0 } } }, 31584e98e3e1Schristos { M32R2F_INSN_ST_MINUS, model_m32r2_st_minus, { { (int) UNIT_M32R2_U_STORE, 1, 1 }, { (int) UNIT_M32R2_U_EXEC, 1, 0 } } }, 31594e98e3e1Schristos { M32R2F_INSN_SUB, model_m32r2_sub, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31604e98e3e1Schristos { M32R2F_INSN_SUBV, model_m32r2_subv, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31614e98e3e1Schristos { M32R2F_INSN_SUBX, model_m32r2_subx, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31624e98e3e1Schristos { M32R2F_INSN_TRAP, model_m32r2_trap, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31634e98e3e1Schristos { M32R2F_INSN_UNLOCK, model_m32r2_unlock, { { (int) UNIT_M32R2_U_LOAD, 1, 1 } } }, 31644e98e3e1Schristos { M32R2F_INSN_SATB, model_m32r2_satb, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31654e98e3e1Schristos { M32R2F_INSN_SATH, model_m32r2_sath, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31664e98e3e1Schristos { M32R2F_INSN_SAT, model_m32r2_sat, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31674e98e3e1Schristos { M32R2F_INSN_PCMPBZ, model_m32r2_pcmpbz, { { (int) UNIT_M32R2_U_CMP, 1, 1 } } }, 31684e98e3e1Schristos { M32R2F_INSN_SADD, model_m32r2_sadd, { { (int) UNIT_M32R2_U_MAC, 1, 1 } } }, 31694e98e3e1Schristos { M32R2F_INSN_MACWU1, model_m32r2_macwu1, { { (int) UNIT_M32R2_U_MAC, 1, 1 } } }, 31704e98e3e1Schristos { M32R2F_INSN_MSBLO, model_m32r2_msblo, { { (int) UNIT_M32R2_U_MAC, 1, 1 } } }, 31714e98e3e1Schristos { M32R2F_INSN_MULWU1, model_m32r2_mulwu1, { { (int) UNIT_M32R2_U_MAC, 1, 1 } } }, 31724e98e3e1Schristos { M32R2F_INSN_MACLH1, model_m32r2_maclh1, { { (int) UNIT_M32R2_U_MAC, 1, 1 } } }, 31734e98e3e1Schristos { M32R2F_INSN_SC, model_m32r2_sc, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31744e98e3e1Schristos { M32R2F_INSN_SNC, model_m32r2_snc, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31754e98e3e1Schristos { M32R2F_INSN_CLRPSW, model_m32r2_clrpsw, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31764e98e3e1Schristos { M32R2F_INSN_SETPSW, model_m32r2_setpsw, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31774e98e3e1Schristos { M32R2F_INSN_BSET, model_m32r2_bset, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31784e98e3e1Schristos { M32R2F_INSN_BCLR, model_m32r2_bclr, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31794e98e3e1Schristos { M32R2F_INSN_BTST, model_m32r2_btst, { { (int) UNIT_M32R2_U_EXEC, 1, 1 } } }, 31804e98e3e1Schristos }; 31814e98e3e1Schristos 31824e98e3e1Schristos #endif /* WITH_PROFILE_MODEL_P */ 31834e98e3e1Schristos 31844e98e3e1Schristos static void 31854e98e3e1Schristos m32r2_model_init (SIM_CPU *cpu) 31864e98e3e1Schristos { 31874e98e3e1Schristos CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_M32R2_DATA)); 31884e98e3e1Schristos } 31894e98e3e1Schristos 31904e98e3e1Schristos #if WITH_PROFILE_MODEL_P 31914e98e3e1Schristos #define TIMING_DATA(td) td 31924e98e3e1Schristos #else 31934e98e3e1Schristos #define TIMING_DATA(td) 0 31944e98e3e1Schristos #endif 31954e98e3e1Schristos 3196ba340e45Schristos static const SIM_MODEL m32r2_models[] = 31974e98e3e1Schristos { 31984e98e3e1Schristos { "m32r2", & m32r2_mach, MODEL_M32R2, TIMING_DATA (& m32r2_timing[0]), m32r2_model_init }, 31994e98e3e1Schristos { 0 } 32004e98e3e1Schristos }; 32014e98e3e1Schristos 32024e98e3e1Schristos /* The properties of this cpu's implementation. */ 32034e98e3e1Schristos 3204ba340e45Schristos static const SIM_MACH_IMP_PROPERTIES m32r2f_imp_properties = 32054e98e3e1Schristos { 32064e98e3e1Schristos sizeof (SIM_CPU), 32074e98e3e1Schristos #if WITH_SCACHE 32084e98e3e1Schristos sizeof (SCACHE) 32094e98e3e1Schristos #else 32104e98e3e1Schristos 0 32114e98e3e1Schristos #endif 32124e98e3e1Schristos }; 32134e98e3e1Schristos 32144e98e3e1Schristos 32154e98e3e1Schristos static void 32164e98e3e1Schristos m32r2f_prepare_run (SIM_CPU *cpu) 32174e98e3e1Schristos { 32184e98e3e1Schristos if (CPU_IDESC (cpu) == NULL) 32194e98e3e1Schristos m32r2f_init_idesc_table (cpu); 32204e98e3e1Schristos } 32214e98e3e1Schristos 32224e98e3e1Schristos static const CGEN_INSN * 32234e98e3e1Schristos m32r2f_get_idata (SIM_CPU *cpu, int inum) 32244e98e3e1Schristos { 32254e98e3e1Schristos return CPU_IDESC (cpu) [inum].idata; 32264e98e3e1Schristos } 32274e98e3e1Schristos 32284e98e3e1Schristos static void 32294e98e3e1Schristos m32r2_init_cpu (SIM_CPU *cpu) 32304e98e3e1Schristos { 32314e98e3e1Schristos CPU_REG_FETCH (cpu) = m32r2f_fetch_register; 32324e98e3e1Schristos CPU_REG_STORE (cpu) = m32r2f_store_register; 32334e98e3e1Schristos CPU_PC_FETCH (cpu) = m32r2f_h_pc_get; 32344e98e3e1Schristos CPU_PC_STORE (cpu) = m32r2f_h_pc_set; 32354e98e3e1Schristos CPU_GET_IDATA (cpu) = m32r2f_get_idata; 32364e98e3e1Schristos CPU_MAX_INSNS (cpu) = M32R2F_INSN__MAX; 32374e98e3e1Schristos CPU_INSN_NAME (cpu) = cgen_insn_name; 32384e98e3e1Schristos CPU_FULL_ENGINE_FN (cpu) = m32r2f_engine_run_full; 32394e98e3e1Schristos #if WITH_FAST 32404e98e3e1Schristos CPU_FAST_ENGINE_FN (cpu) = m32r2f_engine_run_fast; 32414e98e3e1Schristos #else 32424e98e3e1Schristos CPU_FAST_ENGINE_FN (cpu) = m32r2f_engine_run_full; 32434e98e3e1Schristos #endif 32444e98e3e1Schristos } 32454e98e3e1Schristos 3246ba340e45Schristos const SIM_MACH m32r2_mach = 32474e98e3e1Schristos { 32484e98e3e1Schristos "m32r2", "m32r2", MACH_M32R2, 32494e98e3e1Schristos 32, 32, & m32r2_models[0], & m32r2f_imp_properties, 32504e98e3e1Schristos m32r2_init_cpu, 32514e98e3e1Schristos m32r2f_prepare_run 32524e98e3e1Schristos }; 32534e98e3e1Schristos 3254