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