xref: /netbsd-src/external/gpl3/gdb/dist/sim/m32r/modelx.c (revision 05fa08567a80471fd0eb3843a238392874f2577c)
14e98e3e1Schristos /* Simulator model support for m32rxf.
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 m32rxf
264e98e3e1Schristos #define WANT_CPU_M32RXF
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_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
3384e98e3e1Schristos   }
3394e98e3e1Schristos   return cycles;
3404e98e3e1Schristos #undef FLD
3414e98e3e1Schristos }
3424e98e3e1Schristos 
3434e98e3e1Schristos static int
3444e98e3e1Schristos model_m32rx_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 += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
3564e98e3e1Schristos   }
3574e98e3e1Schristos   return cycles;
3584e98e3e1Schristos #undef FLD
3594e98e3e1Schristos }
3604e98e3e1Schristos 
3614e98e3e1Schristos static int
3624e98e3e1Schristos model_m32rx_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 += m32rxf_model_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_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 += m32rxf_model_m32rx_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_m32rx_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 += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
5654e98e3e1Schristos   }
5664e98e3e1Schristos   return cycles;
5674e98e3e1Schristos #undef FLD
5684e98e3e1Schristos }
5694e98e3e1Schristos 
5704e98e3e1Schristos static int
5714e98e3e1Schristos model_m32rx_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 += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
5834e98e3e1Schristos   }
5844e98e3e1Schristos   return cycles;
5854e98e3e1Schristos #undef FLD
5864e98e3e1Schristos }
5874e98e3e1Schristos 
5884e98e3e1Schristos static int
5894e98e3e1Schristos model_m32rx_bcl8 (SIM_CPU *current_cpu, void *sem_arg)
5904e98e3e1Schristos {
5914e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f
5924e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5934e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
5944e98e3e1Schristos   int cycles = 0;
5954e98e3e1Schristos   {
5964e98e3e1Schristos     int referenced = 0;
5974e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
5984e98e3e1Schristos     INT in_sr = -1;
5994e98e3e1Schristos     if (insn_referenced & (1 << 4)) referenced |= 1 << 1;
6004e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
6014e98e3e1Schristos   }
6024e98e3e1Schristos   return cycles;
6034e98e3e1Schristos #undef FLD
6044e98e3e1Schristos }
6054e98e3e1Schristos 
6064e98e3e1Schristos static int
6074e98e3e1Schristos model_m32rx_bcl24 (SIM_CPU *current_cpu, void *sem_arg)
6084e98e3e1Schristos {
6094e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f
6104e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
6114e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
6124e98e3e1Schristos   int cycles = 0;
6134e98e3e1Schristos   {
6144e98e3e1Schristos     int referenced = 0;
6154e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
6164e98e3e1Schristos     INT in_sr = -1;
6174e98e3e1Schristos     if (insn_referenced & (1 << 4)) referenced |= 1 << 1;
6184e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
6194e98e3e1Schristos   }
6204e98e3e1Schristos   return cycles;
6214e98e3e1Schristos #undef FLD
6224e98e3e1Schristos }
6234e98e3e1Schristos 
6244e98e3e1Schristos static int
6254e98e3e1Schristos model_m32rx_bnc8 (SIM_CPU *current_cpu, void *sem_arg)
6264e98e3e1Schristos {
6274e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f
6284e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
6294e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
6304e98e3e1Schristos   int cycles = 0;
6314e98e3e1Schristos   {
6324e98e3e1Schristos     int referenced = 0;
6334e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
6344e98e3e1Schristos     INT in_sr = -1;
6354e98e3e1Schristos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
6364e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
6374e98e3e1Schristos   }
6384e98e3e1Schristos   return cycles;
6394e98e3e1Schristos #undef FLD
6404e98e3e1Schristos }
6414e98e3e1Schristos 
6424e98e3e1Schristos static int
6434e98e3e1Schristos model_m32rx_bnc24 (SIM_CPU *current_cpu, void *sem_arg)
6444e98e3e1Schristos {
6454e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f
6464e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
6474e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
6484e98e3e1Schristos   int cycles = 0;
6494e98e3e1Schristos   {
6504e98e3e1Schristos     int referenced = 0;
6514e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
6524e98e3e1Schristos     INT in_sr = -1;
6534e98e3e1Schristos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
6544e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
6554e98e3e1Schristos   }
6564e98e3e1Schristos   return cycles;
6574e98e3e1Schristos #undef FLD
6584e98e3e1Schristos }
6594e98e3e1Schristos 
6604e98e3e1Schristos static int
6614e98e3e1Schristos model_m32rx_bne (SIM_CPU *current_cpu, void *sem_arg)
6624e98e3e1Schristos {
6634e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f
6644e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
6654e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
6664e98e3e1Schristos   int cycles = 0;
6674e98e3e1Schristos   {
6684e98e3e1Schristos     int referenced = 0;
6694e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
6704e98e3e1Schristos     INT in_sr = -1;
6714e98e3e1Schristos     if (insn_referenced & (1 << 3)) referenced |= 1 << 1;
6724e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
6734e98e3e1Schristos   }
6744e98e3e1Schristos   {
6754e98e3e1Schristos     int referenced = 0;
6764e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
6774e98e3e1Schristos     INT in_src1 = -1;
6784e98e3e1Schristos     INT in_src2 = -1;
6794e98e3e1Schristos     in_src1 = FLD (in_src1);
6804e98e3e1Schristos     in_src2 = FLD (in_src2);
6814e98e3e1Schristos     referenced |= 1 << 0;
6824e98e3e1Schristos     referenced |= 1 << 1;
6834e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
6844e98e3e1Schristos   }
6854e98e3e1Schristos   return cycles;
6864e98e3e1Schristos #undef FLD
6874e98e3e1Schristos }
6884e98e3e1Schristos 
6894e98e3e1Schristos static int
6904e98e3e1Schristos model_m32rx_bra8 (SIM_CPU *current_cpu, void *sem_arg)
6914e98e3e1Schristos {
6924e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f
6934e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
6944e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
6954e98e3e1Schristos   int cycles = 0;
6964e98e3e1Schristos   {
6974e98e3e1Schristos     int referenced = 0;
6984e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
6994e98e3e1Schristos     INT in_sr = -1;
7004e98e3e1Schristos     referenced |= 1 << 1;
7014e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
7024e98e3e1Schristos   }
7034e98e3e1Schristos   return cycles;
7044e98e3e1Schristos #undef FLD
7054e98e3e1Schristos }
7064e98e3e1Schristos 
7074e98e3e1Schristos static int
7084e98e3e1Schristos model_m32rx_bra24 (SIM_CPU *current_cpu, void *sem_arg)
7094e98e3e1Schristos {
7104e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f
7114e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
7124e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
7134e98e3e1Schristos   int cycles = 0;
7144e98e3e1Schristos   {
7154e98e3e1Schristos     int referenced = 0;
7164e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
7174e98e3e1Schristos     INT in_sr = -1;
7184e98e3e1Schristos     referenced |= 1 << 1;
7194e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
7204e98e3e1Schristos   }
7214e98e3e1Schristos   return cycles;
7224e98e3e1Schristos #undef FLD
7234e98e3e1Schristos }
7244e98e3e1Schristos 
7254e98e3e1Schristos static int
7264e98e3e1Schristos model_m32rx_bncl8 (SIM_CPU *current_cpu, void *sem_arg)
7274e98e3e1Schristos {
7284e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f
7294e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
7304e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
7314e98e3e1Schristos   int cycles = 0;
7324e98e3e1Schristos   {
7334e98e3e1Schristos     int referenced = 0;
7344e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
7354e98e3e1Schristos     INT in_sr = -1;
7364e98e3e1Schristos     if (insn_referenced & (1 << 4)) referenced |= 1 << 1;
7374e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
7384e98e3e1Schristos   }
7394e98e3e1Schristos   return cycles;
7404e98e3e1Schristos #undef FLD
7414e98e3e1Schristos }
7424e98e3e1Schristos 
7434e98e3e1Schristos static int
7444e98e3e1Schristos model_m32rx_bncl24 (SIM_CPU *current_cpu, void *sem_arg)
7454e98e3e1Schristos {
7464e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f
7474e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
7484e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
7494e98e3e1Schristos   int cycles = 0;
7504e98e3e1Schristos   {
7514e98e3e1Schristos     int referenced = 0;
7524e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
7534e98e3e1Schristos     INT in_sr = -1;
7544e98e3e1Schristos     if (insn_referenced & (1 << 4)) referenced |= 1 << 1;
7554e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
7564e98e3e1Schristos   }
7574e98e3e1Schristos   return cycles;
7584e98e3e1Schristos #undef FLD
7594e98e3e1Schristos }
7604e98e3e1Schristos 
7614e98e3e1Schristos static int
7624e98e3e1Schristos model_m32rx_cmp (SIM_CPU *current_cpu, void *sem_arg)
7634e98e3e1Schristos {
7644e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
7654e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
7664e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
7674e98e3e1Schristos   int cycles = 0;
7684e98e3e1Schristos   {
7694e98e3e1Schristos     int referenced = 0;
7704e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
7714e98e3e1Schristos     INT in_src1 = -1;
7724e98e3e1Schristos     INT in_src2 = -1;
7734e98e3e1Schristos     in_src1 = FLD (in_src1);
7744e98e3e1Schristos     in_src2 = FLD (in_src2);
7754e98e3e1Schristos     referenced |= 1 << 0;
7764e98e3e1Schristos     referenced |= 1 << 1;
7774e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
7784e98e3e1Schristos   }
7794e98e3e1Schristos   return cycles;
7804e98e3e1Schristos #undef FLD
7814e98e3e1Schristos }
7824e98e3e1Schristos 
7834e98e3e1Schristos static int
7844e98e3e1Schristos model_m32rx_cmpi (SIM_CPU *current_cpu, void *sem_arg)
7854e98e3e1Schristos {
7864e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f
7874e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
7884e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
7894e98e3e1Schristos   int cycles = 0;
7904e98e3e1Schristos   {
7914e98e3e1Schristos     int referenced = 0;
7924e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
7934e98e3e1Schristos     INT in_src1 = -1;
7944e98e3e1Schristos     INT in_src2 = -1;
7954e98e3e1Schristos     in_src2 = FLD (in_src2);
7964e98e3e1Schristos     referenced |= 1 << 1;
7974e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
7984e98e3e1Schristos   }
7994e98e3e1Schristos   return cycles;
8004e98e3e1Schristos #undef FLD
8014e98e3e1Schristos }
8024e98e3e1Schristos 
8034e98e3e1Schristos static int
8044e98e3e1Schristos model_m32rx_cmpu (SIM_CPU *current_cpu, void *sem_arg)
8054e98e3e1Schristos {
8064e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
8074e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
8084e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
8094e98e3e1Schristos   int cycles = 0;
8104e98e3e1Schristos   {
8114e98e3e1Schristos     int referenced = 0;
8124e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
8134e98e3e1Schristos     INT in_src1 = -1;
8144e98e3e1Schristos     INT in_src2 = -1;
8154e98e3e1Schristos     in_src1 = FLD (in_src1);
8164e98e3e1Schristos     in_src2 = FLD (in_src2);
8174e98e3e1Schristos     referenced |= 1 << 0;
8184e98e3e1Schristos     referenced |= 1 << 1;
8194e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
8204e98e3e1Schristos   }
8214e98e3e1Schristos   return cycles;
8224e98e3e1Schristos #undef FLD
8234e98e3e1Schristos }
8244e98e3e1Schristos 
8254e98e3e1Schristos static int
8264e98e3e1Schristos model_m32rx_cmpui (SIM_CPU *current_cpu, void *sem_arg)
8274e98e3e1Schristos {
8284e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f
8294e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
8304e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
8314e98e3e1Schristos   int cycles = 0;
8324e98e3e1Schristos   {
8334e98e3e1Schristos     int referenced = 0;
8344e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
8354e98e3e1Schristos     INT in_src1 = -1;
8364e98e3e1Schristos     INT in_src2 = -1;
8374e98e3e1Schristos     in_src2 = FLD (in_src2);
8384e98e3e1Schristos     referenced |= 1 << 1;
8394e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
8404e98e3e1Schristos   }
8414e98e3e1Schristos   return cycles;
8424e98e3e1Schristos #undef FLD
8434e98e3e1Schristos }
8444e98e3e1Schristos 
8454e98e3e1Schristos static int
8464e98e3e1Schristos model_m32rx_cmpeq (SIM_CPU *current_cpu, void *sem_arg)
8474e98e3e1Schristos {
8484e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
8494e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
8504e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
8514e98e3e1Schristos   int cycles = 0;
8524e98e3e1Schristos   {
8534e98e3e1Schristos     int referenced = 0;
8544e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
8554e98e3e1Schristos     INT in_src1 = -1;
8564e98e3e1Schristos     INT in_src2 = -1;
8574e98e3e1Schristos     in_src1 = FLD (in_src1);
8584e98e3e1Schristos     in_src2 = FLD (in_src2);
8594e98e3e1Schristos     referenced |= 1 << 0;
8604e98e3e1Schristos     referenced |= 1 << 1;
8614e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
8624e98e3e1Schristos   }
8634e98e3e1Schristos   return cycles;
8644e98e3e1Schristos #undef FLD
8654e98e3e1Schristos }
8664e98e3e1Schristos 
8674e98e3e1Schristos static int
8684e98e3e1Schristos model_m32rx_cmpz (SIM_CPU *current_cpu, void *sem_arg)
8694e98e3e1Schristos {
8704e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
8714e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
8724e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
8734e98e3e1Schristos   int cycles = 0;
8744e98e3e1Schristos   {
8754e98e3e1Schristos     int referenced = 0;
8764e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
8774e98e3e1Schristos     INT in_src1 = -1;
8784e98e3e1Schristos     INT in_src2 = -1;
8794e98e3e1Schristos     in_src2 = FLD (in_src2);
8804e98e3e1Schristos     referenced |= 1 << 1;
8814e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
8824e98e3e1Schristos   }
8834e98e3e1Schristos   return cycles;
8844e98e3e1Schristos #undef FLD
8854e98e3e1Schristos }
8864e98e3e1Schristos 
8874e98e3e1Schristos static int
8884e98e3e1Schristos model_m32rx_div (SIM_CPU *current_cpu, void *sem_arg)
8894e98e3e1Schristos {
8904e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
8914e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
8924e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
8934e98e3e1Schristos   int cycles = 0;
8944e98e3e1Schristos   {
8954e98e3e1Schristos     int referenced = 0;
8964e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
8974e98e3e1Schristos     INT in_sr = -1;
8984e98e3e1Schristos     INT in_dr = -1;
8994e98e3e1Schristos     INT out_dr = -1;
9004e98e3e1Schristos     in_sr = FLD (in_sr);
9014e98e3e1Schristos     in_dr = FLD (in_dr);
9024e98e3e1Schristos     out_dr = FLD (out_dr);
9034e98e3e1Schristos     referenced |= 1 << 0;
9044e98e3e1Schristos     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
9054e98e3e1Schristos     if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
9064e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
9074e98e3e1Schristos   }
9084e98e3e1Schristos   return cycles;
9094e98e3e1Schristos #undef FLD
9104e98e3e1Schristos }
9114e98e3e1Schristos 
9124e98e3e1Schristos static int
9134e98e3e1Schristos model_m32rx_divu (SIM_CPU *current_cpu, void *sem_arg)
9144e98e3e1Schristos {
9154e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
9164e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
9174e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
9184e98e3e1Schristos   int cycles = 0;
9194e98e3e1Schristos   {
9204e98e3e1Schristos     int referenced = 0;
9214e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
9224e98e3e1Schristos     INT in_sr = -1;
9234e98e3e1Schristos     INT in_dr = -1;
9244e98e3e1Schristos     INT out_dr = -1;
9254e98e3e1Schristos     in_sr = FLD (in_sr);
9264e98e3e1Schristos     in_dr = FLD (in_dr);
9274e98e3e1Schristos     out_dr = FLD (out_dr);
9284e98e3e1Schristos     referenced |= 1 << 0;
9294e98e3e1Schristos     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
9304e98e3e1Schristos     if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
9314e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
9324e98e3e1Schristos   }
9334e98e3e1Schristos   return cycles;
9344e98e3e1Schristos #undef FLD
9354e98e3e1Schristos }
9364e98e3e1Schristos 
9374e98e3e1Schristos static int
9384e98e3e1Schristos model_m32rx_rem (SIM_CPU *current_cpu, void *sem_arg)
9394e98e3e1Schristos {
9404e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
9414e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
9424e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
9434e98e3e1Schristos   int cycles = 0;
9444e98e3e1Schristos   {
9454e98e3e1Schristos     int referenced = 0;
9464e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
9474e98e3e1Schristos     INT in_sr = -1;
9484e98e3e1Schristos     INT in_dr = -1;
9494e98e3e1Schristos     INT out_dr = -1;
9504e98e3e1Schristos     in_sr = FLD (in_sr);
9514e98e3e1Schristos     in_dr = FLD (in_dr);
9524e98e3e1Schristos     out_dr = FLD (out_dr);
9534e98e3e1Schristos     referenced |= 1 << 0;
9544e98e3e1Schristos     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
9554e98e3e1Schristos     if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
9564e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
9574e98e3e1Schristos   }
9584e98e3e1Schristos   return cycles;
9594e98e3e1Schristos #undef FLD
9604e98e3e1Schristos }
9614e98e3e1Schristos 
9624e98e3e1Schristos static int
9634e98e3e1Schristos model_m32rx_remu (SIM_CPU *current_cpu, void *sem_arg)
9644e98e3e1Schristos {
9654e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
9664e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
9674e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
9684e98e3e1Schristos   int cycles = 0;
9694e98e3e1Schristos   {
9704e98e3e1Schristos     int referenced = 0;
9714e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
9724e98e3e1Schristos     INT in_sr = -1;
9734e98e3e1Schristos     INT in_dr = -1;
9744e98e3e1Schristos     INT out_dr = -1;
9754e98e3e1Schristos     in_sr = FLD (in_sr);
9764e98e3e1Schristos     in_dr = FLD (in_dr);
9774e98e3e1Schristos     out_dr = FLD (out_dr);
9784e98e3e1Schristos     referenced |= 1 << 0;
9794e98e3e1Schristos     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
9804e98e3e1Schristos     if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
9814e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
9824e98e3e1Schristos   }
9834e98e3e1Schristos   return cycles;
9844e98e3e1Schristos #undef FLD
9854e98e3e1Schristos }
9864e98e3e1Schristos 
9874e98e3e1Schristos static int
9884e98e3e1Schristos model_m32rx_divh (SIM_CPU *current_cpu, void *sem_arg)
9894e98e3e1Schristos {
9904e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
9914e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
9924e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
9934e98e3e1Schristos   int cycles = 0;
9944e98e3e1Schristos   {
9954e98e3e1Schristos     int referenced = 0;
9964e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
9974e98e3e1Schristos     INT in_sr = -1;
9984e98e3e1Schristos     INT in_dr = -1;
9994e98e3e1Schristos     INT out_dr = -1;
10004e98e3e1Schristos     in_sr = FLD (in_sr);
10014e98e3e1Schristos     in_dr = FLD (in_dr);
10024e98e3e1Schristos     out_dr = FLD (out_dr);
10034e98e3e1Schristos     referenced |= 1 << 0;
10044e98e3e1Schristos     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
10054e98e3e1Schristos     if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
10064e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
10074e98e3e1Schristos   }
10084e98e3e1Schristos   return cycles;
10094e98e3e1Schristos #undef FLD
10104e98e3e1Schristos }
10114e98e3e1Schristos 
10124e98e3e1Schristos static int
10134e98e3e1Schristos model_m32rx_jc (SIM_CPU *current_cpu, void *sem_arg)
10144e98e3e1Schristos {
10154e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f
10164e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
10174e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
10184e98e3e1Schristos   int cycles = 0;
10194e98e3e1Schristos   {
10204e98e3e1Schristos     int referenced = 0;
10214e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
10224e98e3e1Schristos     INT in_sr = -1;
10234e98e3e1Schristos     in_sr = FLD (in_sr);
10244e98e3e1Schristos     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
10254e98e3e1Schristos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
10264e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
10274e98e3e1Schristos   }
10284e98e3e1Schristos   return cycles;
10294e98e3e1Schristos #undef FLD
10304e98e3e1Schristos }
10314e98e3e1Schristos 
10324e98e3e1Schristos static int
10334e98e3e1Schristos model_m32rx_jnc (SIM_CPU *current_cpu, void *sem_arg)
10344e98e3e1Schristos {
10354e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f
10364e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
10374e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
10384e98e3e1Schristos   int cycles = 0;
10394e98e3e1Schristos   {
10404e98e3e1Schristos     int referenced = 0;
10414e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
10424e98e3e1Schristos     INT in_sr = -1;
10434e98e3e1Schristos     in_sr = FLD (in_sr);
10444e98e3e1Schristos     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
10454e98e3e1Schristos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
10464e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
10474e98e3e1Schristos   }
10484e98e3e1Schristos   return cycles;
10494e98e3e1Schristos #undef FLD
10504e98e3e1Schristos }
10514e98e3e1Schristos 
10524e98e3e1Schristos static int
10534e98e3e1Schristos model_m32rx_jl (SIM_CPU *current_cpu, void *sem_arg)
10544e98e3e1Schristos {
10554e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f
10564e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
10574e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
10584e98e3e1Schristos   int cycles = 0;
10594e98e3e1Schristos   {
10604e98e3e1Schristos     int referenced = 0;
10614e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
10624e98e3e1Schristos     INT in_sr = -1;
10634e98e3e1Schristos     in_sr = FLD (in_sr);
10644e98e3e1Schristos     referenced |= 1 << 0;
10654e98e3e1Schristos     referenced |= 1 << 1;
10664e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
10674e98e3e1Schristos   }
10684e98e3e1Schristos   return cycles;
10694e98e3e1Schristos #undef FLD
10704e98e3e1Schristos }
10714e98e3e1Schristos 
10724e98e3e1Schristos static int
10734e98e3e1Schristos model_m32rx_jmp (SIM_CPU *current_cpu, void *sem_arg)
10744e98e3e1Schristos {
10754e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f
10764e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
10774e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
10784e98e3e1Schristos   int cycles = 0;
10794e98e3e1Schristos   {
10804e98e3e1Schristos     int referenced = 0;
10814e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
10824e98e3e1Schristos     INT in_sr = -1;
10834e98e3e1Schristos     in_sr = FLD (in_sr);
10844e98e3e1Schristos     referenced |= 1 << 0;
10854e98e3e1Schristos     referenced |= 1 << 1;
10864e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
10874e98e3e1Schristos   }
10884e98e3e1Schristos   return cycles;
10894e98e3e1Schristos #undef FLD
10904e98e3e1Schristos }
10914e98e3e1Schristos 
10924e98e3e1Schristos static int
10934e98e3e1Schristos model_m32rx_ld (SIM_CPU *current_cpu, void *sem_arg)
10944e98e3e1Schristos {
10954e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
10964e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
10974e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
10984e98e3e1Schristos   int cycles = 0;
10994e98e3e1Schristos   {
11004e98e3e1Schristos     int referenced = 0;
11014e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
11024e98e3e1Schristos     INT in_sr = 0;
11034e98e3e1Schristos     INT out_dr = 0;
11044e98e3e1Schristos     in_sr = FLD (in_sr);
11054e98e3e1Schristos     out_dr = FLD (out_dr);
11064e98e3e1Schristos     referenced |= 1 << 0;
11074e98e3e1Schristos     referenced |= 1 << 1;
11084e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
11094e98e3e1Schristos   }
11104e98e3e1Schristos   return cycles;
11114e98e3e1Schristos #undef FLD
11124e98e3e1Schristos }
11134e98e3e1Schristos 
11144e98e3e1Schristos static int
11154e98e3e1Schristos model_m32rx_ld_d (SIM_CPU *current_cpu, void *sem_arg)
11164e98e3e1Schristos {
11174e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
11184e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
11194e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
11204e98e3e1Schristos   int cycles = 0;
11214e98e3e1Schristos   {
11224e98e3e1Schristos     int referenced = 0;
11234e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
11244e98e3e1Schristos     INT in_sr = 0;
11254e98e3e1Schristos     INT out_dr = 0;
11264e98e3e1Schristos     in_sr = FLD (in_sr);
11274e98e3e1Schristos     out_dr = FLD (out_dr);
11284e98e3e1Schristos     referenced |= 1 << 0;
11294e98e3e1Schristos     referenced |= 1 << 1;
11304e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
11314e98e3e1Schristos   }
11324e98e3e1Schristos   return cycles;
11334e98e3e1Schristos #undef FLD
11344e98e3e1Schristos }
11354e98e3e1Schristos 
11364e98e3e1Schristos static int
11374e98e3e1Schristos model_m32rx_ldb (SIM_CPU *current_cpu, void *sem_arg)
11384e98e3e1Schristos {
11394e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
11404e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
11414e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
11424e98e3e1Schristos   int cycles = 0;
11434e98e3e1Schristos   {
11444e98e3e1Schristos     int referenced = 0;
11454e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
11464e98e3e1Schristos     INT in_sr = 0;
11474e98e3e1Schristos     INT out_dr = 0;
11484e98e3e1Schristos     in_sr = FLD (in_sr);
11494e98e3e1Schristos     out_dr = FLD (out_dr);
11504e98e3e1Schristos     referenced |= 1 << 0;
11514e98e3e1Schristos     referenced |= 1 << 1;
11524e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
11534e98e3e1Schristos   }
11544e98e3e1Schristos   return cycles;
11554e98e3e1Schristos #undef FLD
11564e98e3e1Schristos }
11574e98e3e1Schristos 
11584e98e3e1Schristos static int
11594e98e3e1Schristos model_m32rx_ldb_d (SIM_CPU *current_cpu, void *sem_arg)
11604e98e3e1Schristos {
11614e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
11624e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
11634e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
11644e98e3e1Schristos   int cycles = 0;
11654e98e3e1Schristos   {
11664e98e3e1Schristos     int referenced = 0;
11674e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
11684e98e3e1Schristos     INT in_sr = 0;
11694e98e3e1Schristos     INT out_dr = 0;
11704e98e3e1Schristos     in_sr = FLD (in_sr);
11714e98e3e1Schristos     out_dr = FLD (out_dr);
11724e98e3e1Schristos     referenced |= 1 << 0;
11734e98e3e1Schristos     referenced |= 1 << 1;
11744e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
11754e98e3e1Schristos   }
11764e98e3e1Schristos   return cycles;
11774e98e3e1Schristos #undef FLD
11784e98e3e1Schristos }
11794e98e3e1Schristos 
11804e98e3e1Schristos static int
11814e98e3e1Schristos model_m32rx_ldh (SIM_CPU *current_cpu, void *sem_arg)
11824e98e3e1Schristos {
11834e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
11844e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
11854e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
11864e98e3e1Schristos   int cycles = 0;
11874e98e3e1Schristos   {
11884e98e3e1Schristos     int referenced = 0;
11894e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
11904e98e3e1Schristos     INT in_sr = 0;
11914e98e3e1Schristos     INT out_dr = 0;
11924e98e3e1Schristos     in_sr = FLD (in_sr);
11934e98e3e1Schristos     out_dr = FLD (out_dr);
11944e98e3e1Schristos     referenced |= 1 << 0;
11954e98e3e1Schristos     referenced |= 1 << 1;
11964e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
11974e98e3e1Schristos   }
11984e98e3e1Schristos   return cycles;
11994e98e3e1Schristos #undef FLD
12004e98e3e1Schristos }
12014e98e3e1Schristos 
12024e98e3e1Schristos static int
12034e98e3e1Schristos model_m32rx_ldh_d (SIM_CPU *current_cpu, void *sem_arg)
12044e98e3e1Schristos {
12054e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
12064e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
12074e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
12084e98e3e1Schristos   int cycles = 0;
12094e98e3e1Schristos   {
12104e98e3e1Schristos     int referenced = 0;
12114e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
12124e98e3e1Schristos     INT in_sr = 0;
12134e98e3e1Schristos     INT out_dr = 0;
12144e98e3e1Schristos     in_sr = FLD (in_sr);
12154e98e3e1Schristos     out_dr = FLD (out_dr);
12164e98e3e1Schristos     referenced |= 1 << 0;
12174e98e3e1Schristos     referenced |= 1 << 1;
12184e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
12194e98e3e1Schristos   }
12204e98e3e1Schristos   return cycles;
12214e98e3e1Schristos #undef FLD
12224e98e3e1Schristos }
12234e98e3e1Schristos 
12244e98e3e1Schristos static int
12254e98e3e1Schristos model_m32rx_ldub (SIM_CPU *current_cpu, void *sem_arg)
12264e98e3e1Schristos {
12274e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
12284e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
12294e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
12304e98e3e1Schristos   int cycles = 0;
12314e98e3e1Schristos   {
12324e98e3e1Schristos     int referenced = 0;
12334e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
12344e98e3e1Schristos     INT in_sr = 0;
12354e98e3e1Schristos     INT out_dr = 0;
12364e98e3e1Schristos     in_sr = FLD (in_sr);
12374e98e3e1Schristos     out_dr = FLD (out_dr);
12384e98e3e1Schristos     referenced |= 1 << 0;
12394e98e3e1Schristos     referenced |= 1 << 1;
12404e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
12414e98e3e1Schristos   }
12424e98e3e1Schristos   return cycles;
12434e98e3e1Schristos #undef FLD
12444e98e3e1Schristos }
12454e98e3e1Schristos 
12464e98e3e1Schristos static int
12474e98e3e1Schristos model_m32rx_ldub_d (SIM_CPU *current_cpu, void *sem_arg)
12484e98e3e1Schristos {
12494e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
12504e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
12514e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
12524e98e3e1Schristos   int cycles = 0;
12534e98e3e1Schristos   {
12544e98e3e1Schristos     int referenced = 0;
12554e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
12564e98e3e1Schristos     INT in_sr = 0;
12574e98e3e1Schristos     INT out_dr = 0;
12584e98e3e1Schristos     in_sr = FLD (in_sr);
12594e98e3e1Schristos     out_dr = FLD (out_dr);
12604e98e3e1Schristos     referenced |= 1 << 0;
12614e98e3e1Schristos     referenced |= 1 << 1;
12624e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
12634e98e3e1Schristos   }
12644e98e3e1Schristos   return cycles;
12654e98e3e1Schristos #undef FLD
12664e98e3e1Schristos }
12674e98e3e1Schristos 
12684e98e3e1Schristos static int
12694e98e3e1Schristos model_m32rx_lduh (SIM_CPU *current_cpu, void *sem_arg)
12704e98e3e1Schristos {
12714e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
12724e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
12734e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
12744e98e3e1Schristos   int cycles = 0;
12754e98e3e1Schristos   {
12764e98e3e1Schristos     int referenced = 0;
12774e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
12784e98e3e1Schristos     INT in_sr = 0;
12794e98e3e1Schristos     INT out_dr = 0;
12804e98e3e1Schristos     in_sr = FLD (in_sr);
12814e98e3e1Schristos     out_dr = FLD (out_dr);
12824e98e3e1Schristos     referenced |= 1 << 0;
12834e98e3e1Schristos     referenced |= 1 << 1;
12844e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
12854e98e3e1Schristos   }
12864e98e3e1Schristos   return cycles;
12874e98e3e1Schristos #undef FLD
12884e98e3e1Schristos }
12894e98e3e1Schristos 
12904e98e3e1Schristos static int
12914e98e3e1Schristos model_m32rx_lduh_d (SIM_CPU *current_cpu, void *sem_arg)
12924e98e3e1Schristos {
12934e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
12944e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
12954e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
12964e98e3e1Schristos   int cycles = 0;
12974e98e3e1Schristos   {
12984e98e3e1Schristos     int referenced = 0;
12994e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
13004e98e3e1Schristos     INT in_sr = 0;
13014e98e3e1Schristos     INT out_dr = 0;
13024e98e3e1Schristos     in_sr = FLD (in_sr);
13034e98e3e1Schristos     out_dr = FLD (out_dr);
13044e98e3e1Schristos     referenced |= 1 << 0;
13054e98e3e1Schristos     referenced |= 1 << 1;
13064e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
13074e98e3e1Schristos   }
13084e98e3e1Schristos   return cycles;
13094e98e3e1Schristos #undef FLD
13104e98e3e1Schristos }
13114e98e3e1Schristos 
13124e98e3e1Schristos static int
13134e98e3e1Schristos model_m32rx_ld_plus (SIM_CPU *current_cpu, void *sem_arg)
13144e98e3e1Schristos {
13154e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
13164e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
13174e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
13184e98e3e1Schristos   int cycles = 0;
13194e98e3e1Schristos   {
13204e98e3e1Schristos     int referenced = 0;
13214e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
13224e98e3e1Schristos     INT in_sr = 0;
13234e98e3e1Schristos     INT out_dr = 0;
13244e98e3e1Schristos     in_sr = FLD (in_sr);
13254e98e3e1Schristos     out_dr = FLD (out_dr);
13264e98e3e1Schristos     referenced |= 1 << 0;
13274e98e3e1Schristos     referenced |= 1 << 1;
13284e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
13294e98e3e1Schristos   }
13304e98e3e1Schristos   {
13314e98e3e1Schristos     int referenced = 0;
13324e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
13334e98e3e1Schristos     INT in_sr = -1;
13344e98e3e1Schristos     INT in_dr = -1;
13354e98e3e1Schristos     INT out_dr = -1;
13364e98e3e1Schristos     in_dr = FLD (in_sr);
13374e98e3e1Schristos     out_dr = FLD (out_sr);
13384e98e3e1Schristos     referenced |= 1 << 0;
13394e98e3e1Schristos     referenced |= 1 << 2;
13404e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
13414e98e3e1Schristos   }
13424e98e3e1Schristos   return cycles;
13434e98e3e1Schristos #undef FLD
13444e98e3e1Schristos }
13454e98e3e1Schristos 
13464e98e3e1Schristos static int
13474e98e3e1Schristos model_m32rx_ld24 (SIM_CPU *current_cpu, void *sem_arg)
13484e98e3e1Schristos {
13494e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld24.f
13504e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
13514e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
13524e98e3e1Schristos   int cycles = 0;
13534e98e3e1Schristos   {
13544e98e3e1Schristos     int referenced = 0;
13554e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
13564e98e3e1Schristos     INT in_sr = -1;
13574e98e3e1Schristos     INT in_dr = -1;
13584e98e3e1Schristos     INT out_dr = -1;
13594e98e3e1Schristos     out_dr = FLD (out_dr);
13604e98e3e1Schristos     referenced |= 1 << 2;
13614e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
13624e98e3e1Schristos   }
13634e98e3e1Schristos   return cycles;
13644e98e3e1Schristos #undef FLD
13654e98e3e1Schristos }
13664e98e3e1Schristos 
13674e98e3e1Schristos static int
13684e98e3e1Schristos model_m32rx_ldi8 (SIM_CPU *current_cpu, void *sem_arg)
13694e98e3e1Schristos {
13704e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_addi.f
13714e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
13724e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
13734e98e3e1Schristos   int cycles = 0;
13744e98e3e1Schristos   {
13754e98e3e1Schristos     int referenced = 0;
13764e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
13774e98e3e1Schristos     INT in_sr = -1;
13784e98e3e1Schristos     INT in_dr = -1;
13794e98e3e1Schristos     INT out_dr = -1;
13804e98e3e1Schristos     out_dr = FLD (out_dr);
13814e98e3e1Schristos     referenced |= 1 << 2;
13824e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
13834e98e3e1Schristos   }
13844e98e3e1Schristos   return cycles;
13854e98e3e1Schristos #undef FLD
13864e98e3e1Schristos }
13874e98e3e1Schristos 
13884e98e3e1Schristos static int
13894e98e3e1Schristos model_m32rx_ldi16 (SIM_CPU *current_cpu, void *sem_arg)
13904e98e3e1Schristos {
13914e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
13924e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
13934e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
13944e98e3e1Schristos   int cycles = 0;
13954e98e3e1Schristos   {
13964e98e3e1Schristos     int referenced = 0;
13974e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
13984e98e3e1Schristos     INT in_sr = -1;
13994e98e3e1Schristos     INT in_dr = -1;
14004e98e3e1Schristos     INT out_dr = -1;
14014e98e3e1Schristos     out_dr = FLD (out_dr);
14024e98e3e1Schristos     referenced |= 1 << 2;
14034e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
14044e98e3e1Schristos   }
14054e98e3e1Schristos   return cycles;
14064e98e3e1Schristos #undef FLD
14074e98e3e1Schristos }
14084e98e3e1Schristos 
14094e98e3e1Schristos static int
14104e98e3e1Schristos model_m32rx_lock (SIM_CPU *current_cpu, void *sem_arg)
14114e98e3e1Schristos {
14124e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_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_sr = 0;
14204e98e3e1Schristos     INT out_dr = 0;
14214e98e3e1Schristos     in_sr = FLD (in_sr);
14224e98e3e1Schristos     out_dr = FLD (out_dr);
14234e98e3e1Schristos     referenced |= 1 << 0;
14244e98e3e1Schristos     referenced |= 1 << 1;
14254e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
14264e98e3e1Schristos   }
14274e98e3e1Schristos   return cycles;
14284e98e3e1Schristos #undef FLD
14294e98e3e1Schristos }
14304e98e3e1Schristos 
14314e98e3e1Schristos static int
14324e98e3e1Schristos model_m32rx_machi_a (SIM_CPU *current_cpu, void *sem_arg)
14334e98e3e1Schristos {
14344e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.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 += m32rxf_model_m32rx_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_m32rx_maclo_a (SIM_CPU *current_cpu, void *sem_arg)
14554e98e3e1Schristos {
14564e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.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_src1 = -1;
14644e98e3e1Schristos     INT in_src2 = -1;
14654e98e3e1Schristos     in_src1 = FLD (in_src1);
14664e98e3e1Schristos     in_src2 = FLD (in_src2);
14674e98e3e1Schristos     referenced |= 1 << 0;
14684e98e3e1Schristos     referenced |= 1 << 1;
14694e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
14704e98e3e1Schristos   }
14714e98e3e1Schristos   return cycles;
14724e98e3e1Schristos #undef FLD
14734e98e3e1Schristos }
14744e98e3e1Schristos 
14754e98e3e1Schristos static int
14764e98e3e1Schristos model_m32rx_macwhi_a (SIM_CPU *current_cpu, void *sem_arg)
14774e98e3e1Schristos {
14784e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.f
14794e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
14804e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
14814e98e3e1Schristos   int cycles = 0;
14824e98e3e1Schristos   {
14834e98e3e1Schristos     int referenced = 0;
14844e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
14854e98e3e1Schristos     INT in_src1 = -1;
14864e98e3e1Schristos     INT in_src2 = -1;
14874e98e3e1Schristos     in_src1 = FLD (in_src1);
14884e98e3e1Schristos     in_src2 = FLD (in_src2);
14894e98e3e1Schristos     referenced |= 1 << 0;
14904e98e3e1Schristos     referenced |= 1 << 1;
14914e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
14924e98e3e1Schristos   }
14934e98e3e1Schristos   return cycles;
14944e98e3e1Schristos #undef FLD
14954e98e3e1Schristos }
14964e98e3e1Schristos 
14974e98e3e1Schristos static int
14984e98e3e1Schristos model_m32rx_macwlo_a (SIM_CPU *current_cpu, void *sem_arg)
14994e98e3e1Schristos {
15004e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.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_src1 = -1;
15084e98e3e1Schristos     INT in_src2 = -1;
15094e98e3e1Schristos     in_src1 = FLD (in_src1);
15104e98e3e1Schristos     in_src2 = FLD (in_src2);
15114e98e3e1Schristos     referenced |= 1 << 0;
15124e98e3e1Schristos     referenced |= 1 << 1;
15134e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
15144e98e3e1Schristos   }
15154e98e3e1Schristos   return cycles;
15164e98e3e1Schristos #undef FLD
15174e98e3e1Schristos }
15184e98e3e1Schristos 
15194e98e3e1Schristos static int
15204e98e3e1Schristos model_m32rx_mul (SIM_CPU *current_cpu, void *sem_arg)
15214e98e3e1Schristos {
15224e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
15234e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
15244e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
15254e98e3e1Schristos   int cycles = 0;
15264e98e3e1Schristos   {
15274e98e3e1Schristos     int referenced = 0;
15284e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
15294e98e3e1Schristos     INT in_sr = -1;
15304e98e3e1Schristos     INT in_dr = -1;
15314e98e3e1Schristos     INT out_dr = -1;
15324e98e3e1Schristos     in_sr = FLD (in_sr);
15334e98e3e1Schristos     in_dr = FLD (in_dr);
15344e98e3e1Schristos     out_dr = FLD (out_dr);
15354e98e3e1Schristos     referenced |= 1 << 0;
15364e98e3e1Schristos     referenced |= 1 << 1;
15374e98e3e1Schristos     referenced |= 1 << 2;
15384e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
15394e98e3e1Schristos   }
15404e98e3e1Schristos   return cycles;
15414e98e3e1Schristos #undef FLD
15424e98e3e1Schristos }
15434e98e3e1Schristos 
15444e98e3e1Schristos static int
15454e98e3e1Schristos model_m32rx_mulhi_a (SIM_CPU *current_cpu, void *sem_arg)
15464e98e3e1Schristos {
15474e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.f
15484e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
15494e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
15504e98e3e1Schristos   int cycles = 0;
15514e98e3e1Schristos   {
15524e98e3e1Schristos     int referenced = 0;
15534e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
15544e98e3e1Schristos     INT in_src1 = -1;
15554e98e3e1Schristos     INT in_src2 = -1;
15564e98e3e1Schristos     in_src1 = FLD (in_src1);
15574e98e3e1Schristos     in_src2 = FLD (in_src2);
15584e98e3e1Schristos     referenced |= 1 << 0;
15594e98e3e1Schristos     referenced |= 1 << 1;
15604e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
15614e98e3e1Schristos   }
15624e98e3e1Schristos   return cycles;
15634e98e3e1Schristos #undef FLD
15644e98e3e1Schristos }
15654e98e3e1Schristos 
15664e98e3e1Schristos static int
15674e98e3e1Schristos model_m32rx_mullo_a (SIM_CPU *current_cpu, void *sem_arg)
15684e98e3e1Schristos {
15694e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.f
15704e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
15714e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
15724e98e3e1Schristos   int cycles = 0;
15734e98e3e1Schristos   {
15744e98e3e1Schristos     int referenced = 0;
15754e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
15764e98e3e1Schristos     INT in_src1 = -1;
15774e98e3e1Schristos     INT in_src2 = -1;
15784e98e3e1Schristos     in_src1 = FLD (in_src1);
15794e98e3e1Schristos     in_src2 = FLD (in_src2);
15804e98e3e1Schristos     referenced |= 1 << 0;
15814e98e3e1Schristos     referenced |= 1 << 1;
15824e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
15834e98e3e1Schristos   }
15844e98e3e1Schristos   return cycles;
15854e98e3e1Schristos #undef FLD
15864e98e3e1Schristos }
15874e98e3e1Schristos 
15884e98e3e1Schristos static int
15894e98e3e1Schristos model_m32rx_mulwhi_a (SIM_CPU *current_cpu, void *sem_arg)
15904e98e3e1Schristos {
15914e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.f
15924e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
15934e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
15944e98e3e1Schristos   int cycles = 0;
15954e98e3e1Schristos   {
15964e98e3e1Schristos     int referenced = 0;
15974e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
15984e98e3e1Schristos     INT in_src1 = -1;
15994e98e3e1Schristos     INT in_src2 = -1;
16004e98e3e1Schristos     in_src1 = FLD (in_src1);
16014e98e3e1Schristos     in_src2 = FLD (in_src2);
16024e98e3e1Schristos     referenced |= 1 << 0;
16034e98e3e1Schristos     referenced |= 1 << 1;
16044e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
16054e98e3e1Schristos   }
16064e98e3e1Schristos   return cycles;
16074e98e3e1Schristos #undef FLD
16084e98e3e1Schristos }
16094e98e3e1Schristos 
16104e98e3e1Schristos static int
16114e98e3e1Schristos model_m32rx_mulwlo_a (SIM_CPU *current_cpu, void *sem_arg)
16124e98e3e1Schristos {
16134e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.f
16144e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
16154e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
16164e98e3e1Schristos   int cycles = 0;
16174e98e3e1Schristos   {
16184e98e3e1Schristos     int referenced = 0;
16194e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
16204e98e3e1Schristos     INT in_src1 = -1;
16214e98e3e1Schristos     INT in_src2 = -1;
16224e98e3e1Schristos     in_src1 = FLD (in_src1);
16234e98e3e1Schristos     in_src2 = FLD (in_src2);
16244e98e3e1Schristos     referenced |= 1 << 0;
16254e98e3e1Schristos     referenced |= 1 << 1;
16264e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
16274e98e3e1Schristos   }
16284e98e3e1Schristos   return cycles;
16294e98e3e1Schristos #undef FLD
16304e98e3e1Schristos }
16314e98e3e1Schristos 
16324e98e3e1Schristos static int
16334e98e3e1Schristos model_m32rx_mv (SIM_CPU *current_cpu, void *sem_arg)
16344e98e3e1Schristos {
16354e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
16364e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
16374e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
16384e98e3e1Schristos   int cycles = 0;
16394e98e3e1Schristos   {
16404e98e3e1Schristos     int referenced = 0;
16414e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
16424e98e3e1Schristos     INT in_sr = -1;
16434e98e3e1Schristos     INT in_dr = -1;
16444e98e3e1Schristos     INT out_dr = -1;
16454e98e3e1Schristos     in_sr = FLD (in_sr);
16464e98e3e1Schristos     out_dr = FLD (out_dr);
16474e98e3e1Schristos     referenced |= 1 << 0;
16484e98e3e1Schristos     referenced |= 1 << 2;
16494e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
16504e98e3e1Schristos   }
16514e98e3e1Schristos   return cycles;
16524e98e3e1Schristos #undef FLD
16534e98e3e1Schristos }
16544e98e3e1Schristos 
16554e98e3e1Schristos static int
16564e98e3e1Schristos model_m32rx_mvfachi_a (SIM_CPU *current_cpu, void *sem_arg)
16574e98e3e1Schristos {
16584e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_mvfachi_a.f
16594e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
16604e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
16614e98e3e1Schristos   int cycles = 0;
16624e98e3e1Schristos   {
16634e98e3e1Schristos     int referenced = 0;
16644e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
16654e98e3e1Schristos     INT in_sr = -1;
16664e98e3e1Schristos     INT in_dr = -1;
16674e98e3e1Schristos     INT out_dr = -1;
16684e98e3e1Schristos     out_dr = FLD (out_dr);
16694e98e3e1Schristos     referenced |= 1 << 2;
16704e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
16714e98e3e1Schristos   }
16724e98e3e1Schristos   return cycles;
16734e98e3e1Schristos #undef FLD
16744e98e3e1Schristos }
16754e98e3e1Schristos 
16764e98e3e1Schristos static int
16774e98e3e1Schristos model_m32rx_mvfaclo_a (SIM_CPU *current_cpu, void *sem_arg)
16784e98e3e1Schristos {
16794e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_mvfachi_a.f
16804e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
16814e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
16824e98e3e1Schristos   int cycles = 0;
16834e98e3e1Schristos   {
16844e98e3e1Schristos     int referenced = 0;
16854e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
16864e98e3e1Schristos     INT in_sr = -1;
16874e98e3e1Schristos     INT in_dr = -1;
16884e98e3e1Schristos     INT out_dr = -1;
16894e98e3e1Schristos     out_dr = FLD (out_dr);
16904e98e3e1Schristos     referenced |= 1 << 2;
16914e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
16924e98e3e1Schristos   }
16934e98e3e1Schristos   return cycles;
16944e98e3e1Schristos #undef FLD
16954e98e3e1Schristos }
16964e98e3e1Schristos 
16974e98e3e1Schristos static int
16984e98e3e1Schristos model_m32rx_mvfacmi_a (SIM_CPU *current_cpu, void *sem_arg)
16994e98e3e1Schristos {
17004e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_mvfachi_a.f
17014e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
17024e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
17034e98e3e1Schristos   int cycles = 0;
17044e98e3e1Schristos   {
17054e98e3e1Schristos     int referenced = 0;
17064e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
17074e98e3e1Schristos     INT in_sr = -1;
17084e98e3e1Schristos     INT in_dr = -1;
17094e98e3e1Schristos     INT out_dr = -1;
17104e98e3e1Schristos     out_dr = FLD (out_dr);
17114e98e3e1Schristos     referenced |= 1 << 2;
17124e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
17134e98e3e1Schristos   }
17144e98e3e1Schristos   return cycles;
17154e98e3e1Schristos #undef FLD
17164e98e3e1Schristos }
17174e98e3e1Schristos 
17184e98e3e1Schristos static int
17194e98e3e1Schristos model_m32rx_mvfc (SIM_CPU *current_cpu, void *sem_arg)
17204e98e3e1Schristos {
17214e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
17224e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
17234e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
17244e98e3e1Schristos   int cycles = 0;
17254e98e3e1Schristos   {
17264e98e3e1Schristos     int referenced = 0;
17274e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
17284e98e3e1Schristos     INT in_sr = -1;
17294e98e3e1Schristos     INT in_dr = -1;
17304e98e3e1Schristos     INT out_dr = -1;
17314e98e3e1Schristos     out_dr = FLD (out_dr);
17324e98e3e1Schristos     referenced |= 1 << 2;
17334e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
17344e98e3e1Schristos   }
17354e98e3e1Schristos   return cycles;
17364e98e3e1Schristos #undef FLD
17374e98e3e1Schristos }
17384e98e3e1Schristos 
17394e98e3e1Schristos static int
17404e98e3e1Schristos model_m32rx_mvtachi_a (SIM_CPU *current_cpu, void *sem_arg)
17414e98e3e1Schristos {
17424e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_mvtachi_a.f
17434e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
17444e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
17454e98e3e1Schristos   int cycles = 0;
17464e98e3e1Schristos   {
17474e98e3e1Schristos     int referenced = 0;
17484e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
17494e98e3e1Schristos     INT in_sr = -1;
17504e98e3e1Schristos     INT in_dr = -1;
17514e98e3e1Schristos     INT out_dr = -1;
17524e98e3e1Schristos     in_sr = FLD (in_src1);
17534e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
17544e98e3e1Schristos   }
17554e98e3e1Schristos   return cycles;
17564e98e3e1Schristos #undef FLD
17574e98e3e1Schristos }
17584e98e3e1Schristos 
17594e98e3e1Schristos static int
17604e98e3e1Schristos model_m32rx_mvtaclo_a (SIM_CPU *current_cpu, void *sem_arg)
17614e98e3e1Schristos {
17624e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_mvtachi_a.f
17634e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
17644e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
17654e98e3e1Schristos   int cycles = 0;
17664e98e3e1Schristos   {
17674e98e3e1Schristos     int referenced = 0;
17684e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
17694e98e3e1Schristos     INT in_sr = -1;
17704e98e3e1Schristos     INT in_dr = -1;
17714e98e3e1Schristos     INT out_dr = -1;
17724e98e3e1Schristos     in_sr = FLD (in_src1);
17734e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
17744e98e3e1Schristos   }
17754e98e3e1Schristos   return cycles;
17764e98e3e1Schristos #undef FLD
17774e98e3e1Schristos }
17784e98e3e1Schristos 
17794e98e3e1Schristos static int
17804e98e3e1Schristos model_m32rx_mvtc (SIM_CPU *current_cpu, void *sem_arg)
17814e98e3e1Schristos {
17824e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
17834e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
17844e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
17854e98e3e1Schristos   int cycles = 0;
17864e98e3e1Schristos   {
17874e98e3e1Schristos     int referenced = 0;
17884e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
17894e98e3e1Schristos     INT in_sr = -1;
17904e98e3e1Schristos     INT in_dr = -1;
17914e98e3e1Schristos     INT out_dr = -1;
17924e98e3e1Schristos     in_sr = FLD (in_sr);
17934e98e3e1Schristos     referenced |= 1 << 0;
17944e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
17954e98e3e1Schristos   }
17964e98e3e1Schristos   return cycles;
17974e98e3e1Schristos #undef FLD
17984e98e3e1Schristos }
17994e98e3e1Schristos 
18004e98e3e1Schristos static int
18014e98e3e1Schristos model_m32rx_neg (SIM_CPU *current_cpu, void *sem_arg)
18024e98e3e1Schristos {
18034e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
18044e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
18054e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
18064e98e3e1Schristos   int cycles = 0;
18074e98e3e1Schristos   {
18084e98e3e1Schristos     int referenced = 0;
18094e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
18104e98e3e1Schristos     INT in_sr = -1;
18114e98e3e1Schristos     INT in_dr = -1;
18124e98e3e1Schristos     INT out_dr = -1;
18134e98e3e1Schristos     in_sr = FLD (in_sr);
18144e98e3e1Schristos     out_dr = FLD (out_dr);
18154e98e3e1Schristos     referenced |= 1 << 0;
18164e98e3e1Schristos     referenced |= 1 << 2;
18174e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
18184e98e3e1Schristos   }
18194e98e3e1Schristos   return cycles;
18204e98e3e1Schristos #undef FLD
18214e98e3e1Schristos }
18224e98e3e1Schristos 
18234e98e3e1Schristos static int
18244e98e3e1Schristos model_m32rx_nop (SIM_CPU *current_cpu, void *sem_arg)
18254e98e3e1Schristos {
18264e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f
18274e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
18284e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
18294e98e3e1Schristos   int cycles = 0;
18304e98e3e1Schristos   {
18314e98e3e1Schristos     int referenced = 0;
18324e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
18334e98e3e1Schristos     INT in_sr = -1;
18344e98e3e1Schristos     INT in_dr = -1;
18354e98e3e1Schristos     INT out_dr = -1;
18364e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
18374e98e3e1Schristos   }
18384e98e3e1Schristos   return cycles;
18394e98e3e1Schristos #undef FLD
18404e98e3e1Schristos }
18414e98e3e1Schristos 
18424e98e3e1Schristos static int
18434e98e3e1Schristos model_m32rx_not (SIM_CPU *current_cpu, void *sem_arg)
18444e98e3e1Schristos {
18454e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
18464e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
18474e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
18484e98e3e1Schristos   int cycles = 0;
18494e98e3e1Schristos   {
18504e98e3e1Schristos     int referenced = 0;
18514e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
18524e98e3e1Schristos     INT in_sr = -1;
18534e98e3e1Schristos     INT in_dr = -1;
18544e98e3e1Schristos     INT out_dr = -1;
18554e98e3e1Schristos     in_sr = FLD (in_sr);
18564e98e3e1Schristos     out_dr = FLD (out_dr);
18574e98e3e1Schristos     referenced |= 1 << 0;
18584e98e3e1Schristos     referenced |= 1 << 2;
18594e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
18604e98e3e1Schristos   }
18614e98e3e1Schristos   return cycles;
18624e98e3e1Schristos #undef FLD
18634e98e3e1Schristos }
18644e98e3e1Schristos 
18654e98e3e1Schristos static int
18664e98e3e1Schristos model_m32rx_rac_dsi (SIM_CPU *current_cpu, void *sem_arg)
18674e98e3e1Schristos {
18684e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_rac_dsi.f
18694e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
18704e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
18714e98e3e1Schristos   int cycles = 0;
18724e98e3e1Schristos   {
18734e98e3e1Schristos     int referenced = 0;
18744e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
18754e98e3e1Schristos     INT in_src1 = -1;
18764e98e3e1Schristos     INT in_src2 = -1;
18774e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
18784e98e3e1Schristos   }
18794e98e3e1Schristos   return cycles;
18804e98e3e1Schristos #undef FLD
18814e98e3e1Schristos }
18824e98e3e1Schristos 
18834e98e3e1Schristos static int
18844e98e3e1Schristos model_m32rx_rach_dsi (SIM_CPU *current_cpu, void *sem_arg)
18854e98e3e1Schristos {
18864e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_rac_dsi.f
18874e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
18884e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
18894e98e3e1Schristos   int cycles = 0;
18904e98e3e1Schristos   {
18914e98e3e1Schristos     int referenced = 0;
18924e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
18934e98e3e1Schristos     INT in_src1 = -1;
18944e98e3e1Schristos     INT in_src2 = -1;
18954e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
18964e98e3e1Schristos   }
18974e98e3e1Schristos   return cycles;
18984e98e3e1Schristos #undef FLD
18994e98e3e1Schristos }
19004e98e3e1Schristos 
19014e98e3e1Schristos static int
19024e98e3e1Schristos model_m32rx_rte (SIM_CPU *current_cpu, void *sem_arg)
19034e98e3e1Schristos {
19044e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f
19054e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
19064e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
19074e98e3e1Schristos   int cycles = 0;
19084e98e3e1Schristos   {
19094e98e3e1Schristos     int referenced = 0;
19104e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
19114e98e3e1Schristos     INT in_sr = -1;
19124e98e3e1Schristos     INT in_dr = -1;
19134e98e3e1Schristos     INT out_dr = -1;
19144e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
19154e98e3e1Schristos   }
19164e98e3e1Schristos   return cycles;
19174e98e3e1Schristos #undef FLD
19184e98e3e1Schristos }
19194e98e3e1Schristos 
19204e98e3e1Schristos static int
19214e98e3e1Schristos model_m32rx_seth (SIM_CPU *current_cpu, void *sem_arg)
19224e98e3e1Schristos {
19234e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_seth.f
19244e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
19254e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
19264e98e3e1Schristos   int cycles = 0;
19274e98e3e1Schristos   {
19284e98e3e1Schristos     int referenced = 0;
19294e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
19304e98e3e1Schristos     INT in_sr = -1;
19314e98e3e1Schristos     INT in_dr = -1;
19324e98e3e1Schristos     INT out_dr = -1;
19334e98e3e1Schristos     out_dr = FLD (out_dr);
19344e98e3e1Schristos     referenced |= 1 << 2;
19354e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
19364e98e3e1Schristos   }
19374e98e3e1Schristos   return cycles;
19384e98e3e1Schristos #undef FLD
19394e98e3e1Schristos }
19404e98e3e1Schristos 
19414e98e3e1Schristos static int
19424e98e3e1Schristos model_m32rx_sll (SIM_CPU *current_cpu, void *sem_arg)
19434e98e3e1Schristos {
19444e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
19454e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
19464e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
19474e98e3e1Schristos   int cycles = 0;
19484e98e3e1Schristos   {
19494e98e3e1Schristos     int referenced = 0;
19504e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
19514e98e3e1Schristos     INT in_sr = -1;
19524e98e3e1Schristos     INT in_dr = -1;
19534e98e3e1Schristos     INT out_dr = -1;
19544e98e3e1Schristos     in_sr = FLD (in_sr);
19554e98e3e1Schristos     in_dr = FLD (in_dr);
19564e98e3e1Schristos     out_dr = FLD (out_dr);
19574e98e3e1Schristos     referenced |= 1 << 0;
19584e98e3e1Schristos     referenced |= 1 << 1;
19594e98e3e1Schristos     referenced |= 1 << 2;
19604e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
19614e98e3e1Schristos   }
19624e98e3e1Schristos   return cycles;
19634e98e3e1Schristos #undef FLD
19644e98e3e1Schristos }
19654e98e3e1Schristos 
19664e98e3e1Schristos static int
19674e98e3e1Schristos model_m32rx_sll3 (SIM_CPU *current_cpu, void *sem_arg)
19684e98e3e1Schristos {
19694e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
19704e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
19714e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
19724e98e3e1Schristos   int cycles = 0;
19734e98e3e1Schristos   {
19744e98e3e1Schristos     int referenced = 0;
19754e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
19764e98e3e1Schristos     INT in_sr = -1;
19774e98e3e1Schristos     INT in_dr = -1;
19784e98e3e1Schristos     INT out_dr = -1;
19794e98e3e1Schristos     in_sr = FLD (in_sr);
19804e98e3e1Schristos     out_dr = FLD (out_dr);
19814e98e3e1Schristos     referenced |= 1 << 0;
19824e98e3e1Schristos     referenced |= 1 << 2;
19834e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
19844e98e3e1Schristos   }
19854e98e3e1Schristos   return cycles;
19864e98e3e1Schristos #undef FLD
19874e98e3e1Schristos }
19884e98e3e1Schristos 
19894e98e3e1Schristos static int
19904e98e3e1Schristos model_m32rx_slli (SIM_CPU *current_cpu, void *sem_arg)
19914e98e3e1Schristos {
19924e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_slli.f
19934e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
19944e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
19954e98e3e1Schristos   int cycles = 0;
19964e98e3e1Schristos   {
19974e98e3e1Schristos     int referenced = 0;
19984e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
19994e98e3e1Schristos     INT in_sr = -1;
20004e98e3e1Schristos     INT in_dr = -1;
20014e98e3e1Schristos     INT out_dr = -1;
20024e98e3e1Schristos     in_dr = FLD (in_dr);
20034e98e3e1Schristos     out_dr = FLD (out_dr);
20044e98e3e1Schristos     referenced |= 1 << 1;
20054e98e3e1Schristos     referenced |= 1 << 2;
20064e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
20074e98e3e1Schristos   }
20084e98e3e1Schristos   return cycles;
20094e98e3e1Schristos #undef FLD
20104e98e3e1Schristos }
20114e98e3e1Schristos 
20124e98e3e1Schristos static int
20134e98e3e1Schristos model_m32rx_sra (SIM_CPU *current_cpu, void *sem_arg)
20144e98e3e1Schristos {
20154e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
20164e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
20174e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
20184e98e3e1Schristos   int cycles = 0;
20194e98e3e1Schristos   {
20204e98e3e1Schristos     int referenced = 0;
20214e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
20224e98e3e1Schristos     INT in_sr = -1;
20234e98e3e1Schristos     INT in_dr = -1;
20244e98e3e1Schristos     INT out_dr = -1;
20254e98e3e1Schristos     in_sr = FLD (in_sr);
20264e98e3e1Schristos     in_dr = FLD (in_dr);
20274e98e3e1Schristos     out_dr = FLD (out_dr);
20284e98e3e1Schristos     referenced |= 1 << 0;
20294e98e3e1Schristos     referenced |= 1 << 1;
20304e98e3e1Schristos     referenced |= 1 << 2;
20314e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
20324e98e3e1Schristos   }
20334e98e3e1Schristos   return cycles;
20344e98e3e1Schristos #undef FLD
20354e98e3e1Schristos }
20364e98e3e1Schristos 
20374e98e3e1Schristos static int
20384e98e3e1Schristos model_m32rx_sra3 (SIM_CPU *current_cpu, void *sem_arg)
20394e98e3e1Schristos {
20404e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
20414e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
20424e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
20434e98e3e1Schristos   int cycles = 0;
20444e98e3e1Schristos   {
20454e98e3e1Schristos     int referenced = 0;
20464e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
20474e98e3e1Schristos     INT in_sr = -1;
20484e98e3e1Schristos     INT in_dr = -1;
20494e98e3e1Schristos     INT out_dr = -1;
20504e98e3e1Schristos     in_sr = FLD (in_sr);
20514e98e3e1Schristos     out_dr = FLD (out_dr);
20524e98e3e1Schristos     referenced |= 1 << 0;
20534e98e3e1Schristos     referenced |= 1 << 2;
20544e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
20554e98e3e1Schristos   }
20564e98e3e1Schristos   return cycles;
20574e98e3e1Schristos #undef FLD
20584e98e3e1Schristos }
20594e98e3e1Schristos 
20604e98e3e1Schristos static int
20614e98e3e1Schristos model_m32rx_srai (SIM_CPU *current_cpu, void *sem_arg)
20624e98e3e1Schristos {
20634e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_slli.f
20644e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
20654e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
20664e98e3e1Schristos   int cycles = 0;
20674e98e3e1Schristos   {
20684e98e3e1Schristos     int referenced = 0;
20694e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
20704e98e3e1Schristos     INT in_sr = -1;
20714e98e3e1Schristos     INT in_dr = -1;
20724e98e3e1Schristos     INT out_dr = -1;
20734e98e3e1Schristos     in_dr = FLD (in_dr);
20744e98e3e1Schristos     out_dr = FLD (out_dr);
20754e98e3e1Schristos     referenced |= 1 << 1;
20764e98e3e1Schristos     referenced |= 1 << 2;
20774e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
20784e98e3e1Schristos   }
20794e98e3e1Schristos   return cycles;
20804e98e3e1Schristos #undef FLD
20814e98e3e1Schristos }
20824e98e3e1Schristos 
20834e98e3e1Schristos static int
20844e98e3e1Schristos model_m32rx_srl (SIM_CPU *current_cpu, void *sem_arg)
20854e98e3e1Schristos {
20864e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
20874e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
20884e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
20894e98e3e1Schristos   int cycles = 0;
20904e98e3e1Schristos   {
20914e98e3e1Schristos     int referenced = 0;
20924e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
20934e98e3e1Schristos     INT in_sr = -1;
20944e98e3e1Schristos     INT in_dr = -1;
20954e98e3e1Schristos     INT out_dr = -1;
20964e98e3e1Schristos     in_sr = FLD (in_sr);
20974e98e3e1Schristos     in_dr = FLD (in_dr);
20984e98e3e1Schristos     out_dr = FLD (out_dr);
20994e98e3e1Schristos     referenced |= 1 << 0;
21004e98e3e1Schristos     referenced |= 1 << 1;
21014e98e3e1Schristos     referenced |= 1 << 2;
21024e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
21034e98e3e1Schristos   }
21044e98e3e1Schristos   return cycles;
21054e98e3e1Schristos #undef FLD
21064e98e3e1Schristos }
21074e98e3e1Schristos 
21084e98e3e1Schristos static int
21094e98e3e1Schristos model_m32rx_srl3 (SIM_CPU *current_cpu, void *sem_arg)
21104e98e3e1Schristos {
21114e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
21124e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
21134e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
21144e98e3e1Schristos   int cycles = 0;
21154e98e3e1Schristos   {
21164e98e3e1Schristos     int referenced = 0;
21174e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
21184e98e3e1Schristos     INT in_sr = -1;
21194e98e3e1Schristos     INT in_dr = -1;
21204e98e3e1Schristos     INT out_dr = -1;
21214e98e3e1Schristos     in_sr = FLD (in_sr);
21224e98e3e1Schristos     out_dr = FLD (out_dr);
21234e98e3e1Schristos     referenced |= 1 << 0;
21244e98e3e1Schristos     referenced |= 1 << 2;
21254e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
21264e98e3e1Schristos   }
21274e98e3e1Schristos   return cycles;
21284e98e3e1Schristos #undef FLD
21294e98e3e1Schristos }
21304e98e3e1Schristos 
21314e98e3e1Schristos static int
21324e98e3e1Schristos model_m32rx_srli (SIM_CPU *current_cpu, void *sem_arg)
21334e98e3e1Schristos {
21344e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_slli.f
21354e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
21364e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
21374e98e3e1Schristos   int cycles = 0;
21384e98e3e1Schristos   {
21394e98e3e1Schristos     int referenced = 0;
21404e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
21414e98e3e1Schristos     INT in_sr = -1;
21424e98e3e1Schristos     INT in_dr = -1;
21434e98e3e1Schristos     INT out_dr = -1;
21444e98e3e1Schristos     in_dr = FLD (in_dr);
21454e98e3e1Schristos     out_dr = FLD (out_dr);
21464e98e3e1Schristos     referenced |= 1 << 1;
21474e98e3e1Schristos     referenced |= 1 << 2;
21484e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
21494e98e3e1Schristos   }
21504e98e3e1Schristos   return cycles;
21514e98e3e1Schristos #undef FLD
21524e98e3e1Schristos }
21534e98e3e1Schristos 
21544e98e3e1Schristos static int
21554e98e3e1Schristos model_m32rx_st (SIM_CPU *current_cpu, void *sem_arg)
21564e98e3e1Schristos {
21574e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
21584e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
21594e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
21604e98e3e1Schristos   int cycles = 0;
21614e98e3e1Schristos   {
21624e98e3e1Schristos     int referenced = 0;
21634e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
21644e98e3e1Schristos     INT in_src1 = 0;
21654e98e3e1Schristos     INT in_src2 = 0;
21664e98e3e1Schristos     in_src1 = FLD (in_src1);
21674e98e3e1Schristos     in_src2 = FLD (in_src2);
21684e98e3e1Schristos     referenced |= 1 << 0;
21694e98e3e1Schristos     referenced |= 1 << 1;
21704e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
21714e98e3e1Schristos   }
21724e98e3e1Schristos   return cycles;
21734e98e3e1Schristos #undef FLD
21744e98e3e1Schristos }
21754e98e3e1Schristos 
21764e98e3e1Schristos static int
21774e98e3e1Schristos model_m32rx_st_d (SIM_CPU *current_cpu, void *sem_arg)
21784e98e3e1Schristos {
21794e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f
21804e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
21814e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
21824e98e3e1Schristos   int cycles = 0;
21834e98e3e1Schristos   {
21844e98e3e1Schristos     int referenced = 0;
21854e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
21864e98e3e1Schristos     INT in_src1 = 0;
21874e98e3e1Schristos     INT in_src2 = 0;
21884e98e3e1Schristos     in_src1 = FLD (in_src1);
21894e98e3e1Schristos     in_src2 = FLD (in_src2);
21904e98e3e1Schristos     referenced |= 1 << 0;
21914e98e3e1Schristos     referenced |= 1 << 1;
21924e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
21934e98e3e1Schristos   }
21944e98e3e1Schristos   return cycles;
21954e98e3e1Schristos #undef FLD
21964e98e3e1Schristos }
21974e98e3e1Schristos 
21984e98e3e1Schristos static int
21994e98e3e1Schristos model_m32rx_stb (SIM_CPU *current_cpu, void *sem_arg)
22004e98e3e1Schristos {
22014e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
22024e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
22034e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
22044e98e3e1Schristos   int cycles = 0;
22054e98e3e1Schristos   {
22064e98e3e1Schristos     int referenced = 0;
22074e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
22084e98e3e1Schristos     INT in_src1 = 0;
22094e98e3e1Schristos     INT in_src2 = 0;
22104e98e3e1Schristos     in_src1 = FLD (in_src1);
22114e98e3e1Schristos     in_src2 = FLD (in_src2);
22124e98e3e1Schristos     referenced |= 1 << 0;
22134e98e3e1Schristos     referenced |= 1 << 1;
22144e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
22154e98e3e1Schristos   }
22164e98e3e1Schristos   return cycles;
22174e98e3e1Schristos #undef FLD
22184e98e3e1Schristos }
22194e98e3e1Schristos 
22204e98e3e1Schristos static int
22214e98e3e1Schristos model_m32rx_stb_d (SIM_CPU *current_cpu, void *sem_arg)
22224e98e3e1Schristos {
22234e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f
22244e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
22254e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
22264e98e3e1Schristos   int cycles = 0;
22274e98e3e1Schristos   {
22284e98e3e1Schristos     int referenced = 0;
22294e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
22304e98e3e1Schristos     INT in_src1 = 0;
22314e98e3e1Schristos     INT in_src2 = 0;
22324e98e3e1Schristos     in_src1 = FLD (in_src1);
22334e98e3e1Schristos     in_src2 = FLD (in_src2);
22344e98e3e1Schristos     referenced |= 1 << 0;
22354e98e3e1Schristos     referenced |= 1 << 1;
22364e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
22374e98e3e1Schristos   }
22384e98e3e1Schristos   return cycles;
22394e98e3e1Schristos #undef FLD
22404e98e3e1Schristos }
22414e98e3e1Schristos 
22424e98e3e1Schristos static int
22434e98e3e1Schristos model_m32rx_sth (SIM_CPU *current_cpu, void *sem_arg)
22444e98e3e1Schristos {
22454e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
22464e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
22474e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
22484e98e3e1Schristos   int cycles = 0;
22494e98e3e1Schristos   {
22504e98e3e1Schristos     int referenced = 0;
22514e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
22524e98e3e1Schristos     INT in_src1 = 0;
22534e98e3e1Schristos     INT in_src2 = 0;
22544e98e3e1Schristos     in_src1 = FLD (in_src1);
22554e98e3e1Schristos     in_src2 = FLD (in_src2);
22564e98e3e1Schristos     referenced |= 1 << 0;
22574e98e3e1Schristos     referenced |= 1 << 1;
22584e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
22594e98e3e1Schristos   }
22604e98e3e1Schristos   return cycles;
22614e98e3e1Schristos #undef FLD
22624e98e3e1Schristos }
22634e98e3e1Schristos 
22644e98e3e1Schristos static int
22654e98e3e1Schristos model_m32rx_sth_d (SIM_CPU *current_cpu, void *sem_arg)
22664e98e3e1Schristos {
22674e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f
22684e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
22694e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
22704e98e3e1Schristos   int cycles = 0;
22714e98e3e1Schristos   {
22724e98e3e1Schristos     int referenced = 0;
22734e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
22744e98e3e1Schristos     INT in_src1 = 0;
22754e98e3e1Schristos     INT in_src2 = 0;
22764e98e3e1Schristos     in_src1 = FLD (in_src1);
22774e98e3e1Schristos     in_src2 = FLD (in_src2);
22784e98e3e1Schristos     referenced |= 1 << 0;
22794e98e3e1Schristos     referenced |= 1 << 1;
22804e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
22814e98e3e1Schristos   }
22824e98e3e1Schristos   return cycles;
22834e98e3e1Schristos #undef FLD
22844e98e3e1Schristos }
22854e98e3e1Schristos 
22864e98e3e1Schristos static int
22874e98e3e1Schristos model_m32rx_st_plus (SIM_CPU *current_cpu, void *sem_arg)
22884e98e3e1Schristos {
22894e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
22904e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
22914e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
22924e98e3e1Schristos   int cycles = 0;
22934e98e3e1Schristos   {
22944e98e3e1Schristos     int referenced = 0;
22954e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
22964e98e3e1Schristos     INT in_src1 = 0;
22974e98e3e1Schristos     INT in_src2 = 0;
22984e98e3e1Schristos     in_src1 = FLD (in_src1);
22994e98e3e1Schristos     in_src2 = FLD (in_src2);
23004e98e3e1Schristos     referenced |= 1 << 0;
23014e98e3e1Schristos     referenced |= 1 << 1;
23024e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
23034e98e3e1Schristos   }
23044e98e3e1Schristos   {
23054e98e3e1Schristos     int referenced = 0;
23064e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
23074e98e3e1Schristos     INT in_sr = -1;
23084e98e3e1Schristos     INT in_dr = -1;
23094e98e3e1Schristos     INT out_dr = -1;
23104e98e3e1Schristos     in_dr = FLD (in_src2);
23114e98e3e1Schristos     out_dr = FLD (out_src2);
23124e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
23134e98e3e1Schristos   }
23144e98e3e1Schristos   return cycles;
23154e98e3e1Schristos #undef FLD
23164e98e3e1Schristos }
23174e98e3e1Schristos 
23184e98e3e1Schristos static int
23194e98e3e1Schristos model_m32rx_sth_plus (SIM_CPU *current_cpu, void *sem_arg)
23204e98e3e1Schristos {
23214e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
23224e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
23234e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
23244e98e3e1Schristos   int cycles = 0;
23254e98e3e1Schristos   {
23264e98e3e1Schristos     int referenced = 0;
23274e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
23284e98e3e1Schristos     INT in_src1 = 0;
23294e98e3e1Schristos     INT in_src2 = 0;
23304e98e3e1Schristos     in_src1 = FLD (in_src1);
23314e98e3e1Schristos     in_src2 = FLD (in_src2);
23324e98e3e1Schristos     referenced |= 1 << 0;
23334e98e3e1Schristos     referenced |= 1 << 1;
23344e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
23354e98e3e1Schristos   }
23364e98e3e1Schristos   {
23374e98e3e1Schristos     int referenced = 0;
23384e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
23394e98e3e1Schristos     INT in_sr = -1;
23404e98e3e1Schristos     INT in_dr = -1;
23414e98e3e1Schristos     INT out_dr = -1;
23424e98e3e1Schristos     in_dr = FLD (in_src2);
23434e98e3e1Schristos     out_dr = FLD (out_src2);
23444e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
23454e98e3e1Schristos   }
23464e98e3e1Schristos   return cycles;
23474e98e3e1Schristos #undef FLD
23484e98e3e1Schristos }
23494e98e3e1Schristos 
23504e98e3e1Schristos static int
23514e98e3e1Schristos model_m32rx_stb_plus (SIM_CPU *current_cpu, void *sem_arg)
23524e98e3e1Schristos {
23534e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
23544e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
23554e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
23564e98e3e1Schristos   int cycles = 0;
23574e98e3e1Schristos   {
23584e98e3e1Schristos     int referenced = 0;
23594e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
23604e98e3e1Schristos     INT in_src1 = 0;
23614e98e3e1Schristos     INT in_src2 = 0;
23624e98e3e1Schristos     in_src1 = FLD (in_src1);
23634e98e3e1Schristos     in_src2 = FLD (in_src2);
23644e98e3e1Schristos     referenced |= 1 << 0;
23654e98e3e1Schristos     referenced |= 1 << 1;
23664e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
23674e98e3e1Schristos   }
23684e98e3e1Schristos   {
23694e98e3e1Schristos     int referenced = 0;
23704e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
23714e98e3e1Schristos     INT in_sr = -1;
23724e98e3e1Schristos     INT in_dr = -1;
23734e98e3e1Schristos     INT out_dr = -1;
23744e98e3e1Schristos     in_dr = FLD (in_src2);
23754e98e3e1Schristos     out_dr = FLD (out_src2);
23764e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
23774e98e3e1Schristos   }
23784e98e3e1Schristos   return cycles;
23794e98e3e1Schristos #undef FLD
23804e98e3e1Schristos }
23814e98e3e1Schristos 
23824e98e3e1Schristos static int
23834e98e3e1Schristos model_m32rx_st_minus (SIM_CPU *current_cpu, void *sem_arg)
23844e98e3e1Schristos {
23854e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
23864e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
23874e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
23884e98e3e1Schristos   int cycles = 0;
23894e98e3e1Schristos   {
23904e98e3e1Schristos     int referenced = 0;
23914e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
23924e98e3e1Schristos     INT in_src1 = 0;
23934e98e3e1Schristos     INT in_src2 = 0;
23944e98e3e1Schristos     in_src1 = FLD (in_src1);
23954e98e3e1Schristos     in_src2 = FLD (in_src2);
23964e98e3e1Schristos     referenced |= 1 << 0;
23974e98e3e1Schristos     referenced |= 1 << 1;
23984e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
23994e98e3e1Schristos   }
24004e98e3e1Schristos   {
24014e98e3e1Schristos     int referenced = 0;
24024e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
24034e98e3e1Schristos     INT in_sr = -1;
24044e98e3e1Schristos     INT in_dr = -1;
24054e98e3e1Schristos     INT out_dr = -1;
24064e98e3e1Schristos     in_dr = FLD (in_src2);
24074e98e3e1Schristos     out_dr = FLD (out_src2);
24084e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
24094e98e3e1Schristos   }
24104e98e3e1Schristos   return cycles;
24114e98e3e1Schristos #undef FLD
24124e98e3e1Schristos }
24134e98e3e1Schristos 
24144e98e3e1Schristos static int
24154e98e3e1Schristos model_m32rx_sub (SIM_CPU *current_cpu, void *sem_arg)
24164e98e3e1Schristos {
24174e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
24184e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
24194e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
24204e98e3e1Schristos   int cycles = 0;
24214e98e3e1Schristos   {
24224e98e3e1Schristos     int referenced = 0;
24234e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
24244e98e3e1Schristos     INT in_sr = -1;
24254e98e3e1Schristos     INT in_dr = -1;
24264e98e3e1Schristos     INT out_dr = -1;
24274e98e3e1Schristos     in_sr = FLD (in_sr);
24284e98e3e1Schristos     in_dr = FLD (in_dr);
24294e98e3e1Schristos     out_dr = FLD (out_dr);
24304e98e3e1Schristos     referenced |= 1 << 0;
24314e98e3e1Schristos     referenced |= 1 << 1;
24324e98e3e1Schristos     referenced |= 1 << 2;
24334e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
24344e98e3e1Schristos   }
24354e98e3e1Schristos   return cycles;
24364e98e3e1Schristos #undef FLD
24374e98e3e1Schristos }
24384e98e3e1Schristos 
24394e98e3e1Schristos static int
24404e98e3e1Schristos model_m32rx_subv (SIM_CPU *current_cpu, void *sem_arg)
24414e98e3e1Schristos {
24424e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
24434e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
24444e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
24454e98e3e1Schristos   int cycles = 0;
24464e98e3e1Schristos   {
24474e98e3e1Schristos     int referenced = 0;
24484e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
24494e98e3e1Schristos     INT in_sr = -1;
24504e98e3e1Schristos     INT in_dr = -1;
24514e98e3e1Schristos     INT out_dr = -1;
24524e98e3e1Schristos     in_sr = FLD (in_sr);
24534e98e3e1Schristos     in_dr = FLD (in_dr);
24544e98e3e1Schristos     out_dr = FLD (out_dr);
24554e98e3e1Schristos     referenced |= 1 << 0;
24564e98e3e1Schristos     referenced |= 1 << 1;
24574e98e3e1Schristos     referenced |= 1 << 2;
24584e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
24594e98e3e1Schristos   }
24604e98e3e1Schristos   return cycles;
24614e98e3e1Schristos #undef FLD
24624e98e3e1Schristos }
24634e98e3e1Schristos 
24644e98e3e1Schristos static int
24654e98e3e1Schristos model_m32rx_subx (SIM_CPU *current_cpu, void *sem_arg)
24664e98e3e1Schristos {
24674e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.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     INT in_sr = -1;
24754e98e3e1Schristos     INT in_dr = -1;
24764e98e3e1Schristos     INT out_dr = -1;
24774e98e3e1Schristos     in_sr = FLD (in_sr);
24784e98e3e1Schristos     in_dr = FLD (in_dr);
24794e98e3e1Schristos     out_dr = FLD (out_dr);
24804e98e3e1Schristos     referenced |= 1 << 0;
24814e98e3e1Schristos     referenced |= 1 << 1;
24824e98e3e1Schristos     referenced |= 1 << 2;
24834e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
24844e98e3e1Schristos   }
24854e98e3e1Schristos   return cycles;
24864e98e3e1Schristos #undef FLD
24874e98e3e1Schristos }
24884e98e3e1Schristos 
24894e98e3e1Schristos static int
24904e98e3e1Schristos model_m32rx_trap (SIM_CPU *current_cpu, void *sem_arg)
24914e98e3e1Schristos {
24924e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_trap.f
24934e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
24944e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
24954e98e3e1Schristos   int cycles = 0;
24964e98e3e1Schristos   {
24974e98e3e1Schristos     int referenced = 0;
24984e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
24994e98e3e1Schristos     INT in_sr = -1;
25004e98e3e1Schristos     INT in_dr = -1;
25014e98e3e1Schristos     INT out_dr = -1;
25024e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
25034e98e3e1Schristos   }
25044e98e3e1Schristos   return cycles;
25054e98e3e1Schristos #undef FLD
25064e98e3e1Schristos }
25074e98e3e1Schristos 
25084e98e3e1Schristos static int
25094e98e3e1Schristos model_m32rx_unlock (SIM_CPU *current_cpu, void *sem_arg)
25104e98e3e1Schristos {
25114e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
25124e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
25134e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
25144e98e3e1Schristos   int cycles = 0;
25154e98e3e1Schristos   {
25164e98e3e1Schristos     int referenced = 0;
25174e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
25184e98e3e1Schristos     INT in_sr = 0;
25194e98e3e1Schristos     INT out_dr = 0;
25204e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
25214e98e3e1Schristos   }
25224e98e3e1Schristos   return cycles;
25234e98e3e1Schristos #undef FLD
25244e98e3e1Schristos }
25254e98e3e1Schristos 
25264e98e3e1Schristos static int
25274e98e3e1Schristos model_m32rx_satb (SIM_CPU *current_cpu, void *sem_arg)
25284e98e3e1Schristos {
25294e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
25304e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
25314e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
25324e98e3e1Schristos   int cycles = 0;
25334e98e3e1Schristos   {
25344e98e3e1Schristos     int referenced = 0;
25354e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
25364e98e3e1Schristos     INT in_sr = -1;
25374e98e3e1Schristos     INT in_dr = -1;
25384e98e3e1Schristos     INT out_dr = -1;
25394e98e3e1Schristos     in_sr = FLD (in_sr);
25404e98e3e1Schristos     out_dr = FLD (out_dr);
25414e98e3e1Schristos     referenced |= 1 << 0;
25424e98e3e1Schristos     referenced |= 1 << 2;
25434e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
25444e98e3e1Schristos   }
25454e98e3e1Schristos   return cycles;
25464e98e3e1Schristos #undef FLD
25474e98e3e1Schristos }
25484e98e3e1Schristos 
25494e98e3e1Schristos static int
25504e98e3e1Schristos model_m32rx_sath (SIM_CPU *current_cpu, void *sem_arg)
25514e98e3e1Schristos {
25524e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
25534e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
25544e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
25554e98e3e1Schristos   int cycles = 0;
25564e98e3e1Schristos   {
25574e98e3e1Schristos     int referenced = 0;
25584e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
25594e98e3e1Schristos     INT in_sr = -1;
25604e98e3e1Schristos     INT in_dr = -1;
25614e98e3e1Schristos     INT out_dr = -1;
25624e98e3e1Schristos     in_sr = FLD (in_sr);
25634e98e3e1Schristos     out_dr = FLD (out_dr);
25644e98e3e1Schristos     referenced |= 1 << 0;
25654e98e3e1Schristos     referenced |= 1 << 2;
25664e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
25674e98e3e1Schristos   }
25684e98e3e1Schristos   return cycles;
25694e98e3e1Schristos #undef FLD
25704e98e3e1Schristos }
25714e98e3e1Schristos 
25724e98e3e1Schristos static int
25734e98e3e1Schristos model_m32rx_sat (SIM_CPU *current_cpu, void *sem_arg)
25744e98e3e1Schristos {
25754e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
25764e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
25774e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
25784e98e3e1Schristos   int cycles = 0;
25794e98e3e1Schristos   {
25804e98e3e1Schristos     int referenced = 0;
25814e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
25824e98e3e1Schristos     INT in_sr = -1;
25834e98e3e1Schristos     INT in_dr = -1;
25844e98e3e1Schristos     INT out_dr = -1;
25854e98e3e1Schristos     in_sr = FLD (in_sr);
25864e98e3e1Schristos     out_dr = FLD (out_dr);
25874e98e3e1Schristos     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
25884e98e3e1Schristos     referenced |= 1 << 2;
25894e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
25904e98e3e1Schristos   }
25914e98e3e1Schristos   return cycles;
25924e98e3e1Schristos #undef FLD
25934e98e3e1Schristos }
25944e98e3e1Schristos 
25954e98e3e1Schristos static int
25964e98e3e1Schristos model_m32rx_pcmpbz (SIM_CPU *current_cpu, void *sem_arg)
25974e98e3e1Schristos {
25984e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
25994e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
26004e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
26014e98e3e1Schristos   int cycles = 0;
26024e98e3e1Schristos   {
26034e98e3e1Schristos     int referenced = 0;
26044e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
26054e98e3e1Schristos     INT in_src1 = -1;
26064e98e3e1Schristos     INT in_src2 = -1;
26074e98e3e1Schristos     in_src2 = FLD (in_src2);
26084e98e3e1Schristos     referenced |= 1 << 1;
26094e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
26104e98e3e1Schristos   }
26114e98e3e1Schristos   return cycles;
26124e98e3e1Schristos #undef FLD
26134e98e3e1Schristos }
26144e98e3e1Schristos 
26154e98e3e1Schristos static int
26164e98e3e1Schristos model_m32rx_sadd (SIM_CPU *current_cpu, void *sem_arg)
26174e98e3e1Schristos {
26184e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f
26194e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
26204e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
26214e98e3e1Schristos   int cycles = 0;
26224e98e3e1Schristos   {
26234e98e3e1Schristos     int referenced = 0;
26244e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
26254e98e3e1Schristos     INT in_src1 = -1;
26264e98e3e1Schristos     INT in_src2 = -1;
26274e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
26284e98e3e1Schristos   }
26294e98e3e1Schristos   return cycles;
26304e98e3e1Schristos #undef FLD
26314e98e3e1Schristos }
26324e98e3e1Schristos 
26334e98e3e1Schristos static int
26344e98e3e1Schristos model_m32rx_macwu1 (SIM_CPU *current_cpu, void *sem_arg)
26354e98e3e1Schristos {
26364e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
26374e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
26384e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
26394e98e3e1Schristos   int cycles = 0;
26404e98e3e1Schristos   {
26414e98e3e1Schristos     int referenced = 0;
26424e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
26434e98e3e1Schristos     INT in_src1 = -1;
26444e98e3e1Schristos     INT in_src2 = -1;
26454e98e3e1Schristos     in_src1 = FLD (in_src1);
26464e98e3e1Schristos     in_src2 = FLD (in_src2);
26474e98e3e1Schristos     referenced |= 1 << 0;
26484e98e3e1Schristos     referenced |= 1 << 1;
26494e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
26504e98e3e1Schristos   }
26514e98e3e1Schristos   return cycles;
26524e98e3e1Schristos #undef FLD
26534e98e3e1Schristos }
26544e98e3e1Schristos 
26554e98e3e1Schristos static int
26564e98e3e1Schristos model_m32rx_msblo (SIM_CPU *current_cpu, void *sem_arg)
26574e98e3e1Schristos {
26584e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
26594e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
26604e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
26614e98e3e1Schristos   int cycles = 0;
26624e98e3e1Schristos   {
26634e98e3e1Schristos     int referenced = 0;
26644e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
26654e98e3e1Schristos     INT in_src1 = -1;
26664e98e3e1Schristos     INT in_src2 = -1;
26674e98e3e1Schristos     in_src1 = FLD (in_src1);
26684e98e3e1Schristos     in_src2 = FLD (in_src2);
26694e98e3e1Schristos     referenced |= 1 << 0;
26704e98e3e1Schristos     referenced |= 1 << 1;
26714e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
26724e98e3e1Schristos   }
26734e98e3e1Schristos   return cycles;
26744e98e3e1Schristos #undef FLD
26754e98e3e1Schristos }
26764e98e3e1Schristos 
26774e98e3e1Schristos static int
26784e98e3e1Schristos model_m32rx_mulwu1 (SIM_CPU *current_cpu, void *sem_arg)
26794e98e3e1Schristos {
26804e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
26814e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
26824e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
26834e98e3e1Schristos   int cycles = 0;
26844e98e3e1Schristos   {
26854e98e3e1Schristos     int referenced = 0;
26864e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
26874e98e3e1Schristos     INT in_src1 = -1;
26884e98e3e1Schristos     INT in_src2 = -1;
26894e98e3e1Schristos     in_src1 = FLD (in_src1);
26904e98e3e1Schristos     in_src2 = FLD (in_src2);
26914e98e3e1Schristos     referenced |= 1 << 0;
26924e98e3e1Schristos     referenced |= 1 << 1;
26934e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
26944e98e3e1Schristos   }
26954e98e3e1Schristos   return cycles;
26964e98e3e1Schristos #undef FLD
26974e98e3e1Schristos }
26984e98e3e1Schristos 
26994e98e3e1Schristos static int
27004e98e3e1Schristos model_m32rx_maclh1 (SIM_CPU *current_cpu, void *sem_arg)
27014e98e3e1Schristos {
27024e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
27034e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
27044e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
27054e98e3e1Schristos   int cycles = 0;
27064e98e3e1Schristos   {
27074e98e3e1Schristos     int referenced = 0;
27084e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
27094e98e3e1Schristos     INT in_src1 = -1;
27104e98e3e1Schristos     INT in_src2 = -1;
27114e98e3e1Schristos     in_src1 = FLD (in_src1);
27124e98e3e1Schristos     in_src2 = FLD (in_src2);
27134e98e3e1Schristos     referenced |= 1 << 0;
27144e98e3e1Schristos     referenced |= 1 << 1;
27154e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
27164e98e3e1Schristos   }
27174e98e3e1Schristos   return cycles;
27184e98e3e1Schristos #undef FLD
27194e98e3e1Schristos }
27204e98e3e1Schristos 
27214e98e3e1Schristos static int
27224e98e3e1Schristos model_m32rx_sc (SIM_CPU *current_cpu, void *sem_arg)
27234e98e3e1Schristos {
27244e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f
27254e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
27264e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
27274e98e3e1Schristos   int cycles = 0;
27284e98e3e1Schristos   {
27294e98e3e1Schristos     int referenced = 0;
27304e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
27314e98e3e1Schristos     INT in_sr = -1;
27324e98e3e1Schristos     INT in_dr = -1;
27334e98e3e1Schristos     INT out_dr = -1;
27344e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
27354e98e3e1Schristos   }
27364e98e3e1Schristos   return cycles;
27374e98e3e1Schristos #undef FLD
27384e98e3e1Schristos }
27394e98e3e1Schristos 
27404e98e3e1Schristos static int
27414e98e3e1Schristos model_m32rx_snc (SIM_CPU *current_cpu, void *sem_arg)
27424e98e3e1Schristos {
27434e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f
27444e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
27454e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
27464e98e3e1Schristos   int cycles = 0;
27474e98e3e1Schristos   {
27484e98e3e1Schristos     int referenced = 0;
27494e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
27504e98e3e1Schristos     INT in_sr = -1;
27514e98e3e1Schristos     INT in_dr = -1;
27524e98e3e1Schristos     INT out_dr = -1;
27534e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
27544e98e3e1Schristos   }
27554e98e3e1Schristos   return cycles;
27564e98e3e1Schristos #undef FLD
27574e98e3e1Schristos }
27584e98e3e1Schristos 
27594e98e3e1Schristos static int
27604e98e3e1Schristos model_m32rx_clrpsw (SIM_CPU *current_cpu, void *sem_arg)
27614e98e3e1Schristos {
27624e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_clrpsw.f
27634e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
27644e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
27654e98e3e1Schristos   int cycles = 0;
27664e98e3e1Schristos   {
27674e98e3e1Schristos     int referenced = 0;
27684e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
27694e98e3e1Schristos     INT in_sr = -1;
27704e98e3e1Schristos     INT in_dr = -1;
27714e98e3e1Schristos     INT out_dr = -1;
27724e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
27734e98e3e1Schristos   }
27744e98e3e1Schristos   return cycles;
27754e98e3e1Schristos #undef FLD
27764e98e3e1Schristos }
27774e98e3e1Schristos 
27784e98e3e1Schristos static int
27794e98e3e1Schristos model_m32rx_setpsw (SIM_CPU *current_cpu, void *sem_arg)
27804e98e3e1Schristos {
27814e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_clrpsw.f
27824e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
27834e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
27844e98e3e1Schristos   int cycles = 0;
27854e98e3e1Schristos   {
27864e98e3e1Schristos     int referenced = 0;
27874e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
27884e98e3e1Schristos     INT in_sr = -1;
27894e98e3e1Schristos     INT in_dr = -1;
27904e98e3e1Schristos     INT out_dr = -1;
27914e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
27924e98e3e1Schristos   }
27934e98e3e1Schristos   return cycles;
27944e98e3e1Schristos #undef FLD
27954e98e3e1Schristos }
27964e98e3e1Schristos 
27974e98e3e1Schristos static int
27984e98e3e1Schristos model_m32rx_bset (SIM_CPU *current_cpu, void *sem_arg)
27994e98e3e1Schristos {
28004e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f
28014e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
28024e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
28034e98e3e1Schristos   int cycles = 0;
28044e98e3e1Schristos   {
28054e98e3e1Schristos     int referenced = 0;
28064e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
28074e98e3e1Schristos     INT in_sr = -1;
28084e98e3e1Schristos     INT in_dr = -1;
28094e98e3e1Schristos     INT out_dr = -1;
28104e98e3e1Schristos     in_sr = FLD (in_sr);
28114e98e3e1Schristos     referenced |= 1 << 0;
28124e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
28134e98e3e1Schristos   }
28144e98e3e1Schristos   return cycles;
28154e98e3e1Schristos #undef FLD
28164e98e3e1Schristos }
28174e98e3e1Schristos 
28184e98e3e1Schristos static int
28194e98e3e1Schristos model_m32rx_bclr (SIM_CPU *current_cpu, void *sem_arg)
28204e98e3e1Schristos {
28214e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f
28224e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
28234e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
28244e98e3e1Schristos   int cycles = 0;
28254e98e3e1Schristos   {
28264e98e3e1Schristos     int referenced = 0;
28274e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
28284e98e3e1Schristos     INT in_sr = -1;
28294e98e3e1Schristos     INT in_dr = -1;
28304e98e3e1Schristos     INT out_dr = -1;
28314e98e3e1Schristos     in_sr = FLD (in_sr);
28324e98e3e1Schristos     referenced |= 1 << 0;
28334e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
28344e98e3e1Schristos   }
28354e98e3e1Schristos   return cycles;
28364e98e3e1Schristos #undef FLD
28374e98e3e1Schristos }
28384e98e3e1Schristos 
28394e98e3e1Schristos static int
28404e98e3e1Schristos model_m32rx_btst (SIM_CPU *current_cpu, void *sem_arg)
28414e98e3e1Schristos {
28424e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f
28434e98e3e1Schristos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
28444e98e3e1Schristos   const IDESC * UNUSED idesc = abuf->idesc;
28454e98e3e1Schristos   int cycles = 0;
28464e98e3e1Schristos   {
28474e98e3e1Schristos     int referenced = 0;
28484e98e3e1Schristos     int UNUSED insn_referenced = abuf->written;
28494e98e3e1Schristos     INT in_sr = -1;
28504e98e3e1Schristos     INT in_dr = -1;
28514e98e3e1Schristos     INT out_dr = -1;
28524e98e3e1Schristos     in_sr = FLD (in_sr);
28534e98e3e1Schristos     referenced |= 1 << 0;
28544e98e3e1Schristos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
28554e98e3e1Schristos   }
28564e98e3e1Schristos   return cycles;
28574e98e3e1Schristos #undef FLD
28584e98e3e1Schristos }
28594e98e3e1Schristos 
28604e98e3e1Schristos /* We assume UNIT_NONE == 0 because the tables don't always terminate
28614e98e3e1Schristos    entries with it.  */
28624e98e3e1Schristos 
28634e98e3e1Schristos /* Model timing data for `m32rx'.  */
28644e98e3e1Schristos 
28654e98e3e1Schristos static const INSN_TIMING m32rx_timing[] = {
28664e98e3e1Schristos   { M32RXF_INSN_X_INVALID, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28674e98e3e1Schristos   { M32RXF_INSN_X_AFTER, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28684e98e3e1Schristos   { M32RXF_INSN_X_BEFORE, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28694e98e3e1Schristos   { M32RXF_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28704e98e3e1Schristos   { M32RXF_INSN_X_CHAIN, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28714e98e3e1Schristos   { M32RXF_INSN_X_BEGIN, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28724e98e3e1Schristos   { M32RXF_INSN_ADD, model_m32rx_add, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28734e98e3e1Schristos   { M32RXF_INSN_ADD3, model_m32rx_add3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28744e98e3e1Schristos   { M32RXF_INSN_AND, model_m32rx_and, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28754e98e3e1Schristos   { M32RXF_INSN_AND3, model_m32rx_and3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28764e98e3e1Schristos   { M32RXF_INSN_OR, model_m32rx_or, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28774e98e3e1Schristos   { M32RXF_INSN_OR3, model_m32rx_or3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28784e98e3e1Schristos   { M32RXF_INSN_XOR, model_m32rx_xor, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28794e98e3e1Schristos   { M32RXF_INSN_XOR3, model_m32rx_xor3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28804e98e3e1Schristos   { M32RXF_INSN_ADDI, model_m32rx_addi, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28814e98e3e1Schristos   { M32RXF_INSN_ADDV, model_m32rx_addv, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28824e98e3e1Schristos   { M32RXF_INSN_ADDV3, model_m32rx_addv3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28834e98e3e1Schristos   { M32RXF_INSN_ADDX, model_m32rx_addx, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
28844e98e3e1Schristos   { M32RXF_INSN_BC8, model_m32rx_bc8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
28854e98e3e1Schristos   { M32RXF_INSN_BC24, model_m32rx_bc24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
28864e98e3e1Schristos   { M32RXF_INSN_BEQ, model_m32rx_beq, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
28874e98e3e1Schristos   { M32RXF_INSN_BEQZ, model_m32rx_beqz, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
28884e98e3e1Schristos   { M32RXF_INSN_BGEZ, model_m32rx_bgez, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
28894e98e3e1Schristos   { M32RXF_INSN_BGTZ, model_m32rx_bgtz, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
28904e98e3e1Schristos   { M32RXF_INSN_BLEZ, model_m32rx_blez, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
28914e98e3e1Schristos   { M32RXF_INSN_BLTZ, model_m32rx_bltz, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
28924e98e3e1Schristos   { M32RXF_INSN_BNEZ, model_m32rx_bnez, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
28934e98e3e1Schristos   { M32RXF_INSN_BL8, model_m32rx_bl8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
28944e98e3e1Schristos   { M32RXF_INSN_BL24, model_m32rx_bl24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
28954e98e3e1Schristos   { M32RXF_INSN_BCL8, model_m32rx_bcl8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
28964e98e3e1Schristos   { M32RXF_INSN_BCL24, model_m32rx_bcl24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
28974e98e3e1Schristos   { M32RXF_INSN_BNC8, model_m32rx_bnc8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
28984e98e3e1Schristos   { M32RXF_INSN_BNC24, model_m32rx_bnc24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
28994e98e3e1Schristos   { M32RXF_INSN_BNE, model_m32rx_bne, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
29004e98e3e1Schristos   { M32RXF_INSN_BRA8, model_m32rx_bra8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
29014e98e3e1Schristos   { M32RXF_INSN_BRA24, model_m32rx_bra24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
29024e98e3e1Schristos   { M32RXF_INSN_BNCL8, model_m32rx_bncl8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
29034e98e3e1Schristos   { M32RXF_INSN_BNCL24, model_m32rx_bncl24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
29044e98e3e1Schristos   { M32RXF_INSN_CMP, model_m32rx_cmp, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } },
29054e98e3e1Schristos   { M32RXF_INSN_CMPI, model_m32rx_cmpi, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } },
29064e98e3e1Schristos   { M32RXF_INSN_CMPU, model_m32rx_cmpu, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } },
29074e98e3e1Schristos   { M32RXF_INSN_CMPUI, model_m32rx_cmpui, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } },
29084e98e3e1Schristos   { M32RXF_INSN_CMPEQ, model_m32rx_cmpeq, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } },
29094e98e3e1Schristos   { M32RXF_INSN_CMPZ, model_m32rx_cmpz, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } },
29104e98e3e1Schristos   { M32RXF_INSN_DIV, model_m32rx_div, { { (int) UNIT_M32RX_U_EXEC, 1, 37 } } },
29114e98e3e1Schristos   { M32RXF_INSN_DIVU, model_m32rx_divu, { { (int) UNIT_M32RX_U_EXEC, 1, 37 } } },
29124e98e3e1Schristos   { M32RXF_INSN_REM, model_m32rx_rem, { { (int) UNIT_M32RX_U_EXEC, 1, 37 } } },
29134e98e3e1Schristos   { M32RXF_INSN_REMU, model_m32rx_remu, { { (int) UNIT_M32RX_U_EXEC, 1, 37 } } },
29144e98e3e1Schristos   { M32RXF_INSN_DIVH, model_m32rx_divh, { { (int) UNIT_M32RX_U_EXEC, 1, 21 } } },
29154e98e3e1Schristos   { M32RXF_INSN_JC, model_m32rx_jc, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
29164e98e3e1Schristos   { M32RXF_INSN_JNC, model_m32rx_jnc, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
29174e98e3e1Schristos   { M32RXF_INSN_JL, model_m32rx_jl, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
29184e98e3e1Schristos   { M32RXF_INSN_JMP, model_m32rx_jmp, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
29194e98e3e1Schristos   { M32RXF_INSN_LD, model_m32rx_ld, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } },
29204e98e3e1Schristos   { M32RXF_INSN_LD_D, model_m32rx_ld_d, { { (int) UNIT_M32RX_U_LOAD, 1, 2 } } },
29214e98e3e1Schristos   { M32RXF_INSN_LDB, model_m32rx_ldb, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } },
29224e98e3e1Schristos   { M32RXF_INSN_LDB_D, model_m32rx_ldb_d, { { (int) UNIT_M32RX_U_LOAD, 1, 2 } } },
29234e98e3e1Schristos   { M32RXF_INSN_LDH, model_m32rx_ldh, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } },
29244e98e3e1Schristos   { M32RXF_INSN_LDH_D, model_m32rx_ldh_d, { { (int) UNIT_M32RX_U_LOAD, 1, 2 } } },
29254e98e3e1Schristos   { M32RXF_INSN_LDUB, model_m32rx_ldub, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } },
29264e98e3e1Schristos   { M32RXF_INSN_LDUB_D, model_m32rx_ldub_d, { { (int) UNIT_M32RX_U_LOAD, 1, 2 } } },
29274e98e3e1Schristos   { M32RXF_INSN_LDUH, model_m32rx_lduh, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } },
29284e98e3e1Schristos   { M32RXF_INSN_LDUH_D, model_m32rx_lduh_d, { { (int) UNIT_M32RX_U_LOAD, 1, 2 } } },
29294e98e3e1Schristos   { M32RXF_INSN_LD_PLUS, model_m32rx_ld_plus, { { (int) UNIT_M32RX_U_LOAD, 1, 1 }, { (int) UNIT_M32RX_U_EXEC, 1, 0 } } },
29304e98e3e1Schristos   { M32RXF_INSN_LD24, model_m32rx_ld24, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29314e98e3e1Schristos   { M32RXF_INSN_LDI8, model_m32rx_ldi8, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29324e98e3e1Schristos   { M32RXF_INSN_LDI16, model_m32rx_ldi16, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29334e98e3e1Schristos   { M32RXF_INSN_LOCK, model_m32rx_lock, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } },
29344e98e3e1Schristos   { M32RXF_INSN_MACHI_A, model_m32rx_machi_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
29354e98e3e1Schristos   { M32RXF_INSN_MACLO_A, model_m32rx_maclo_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
29364e98e3e1Schristos   { M32RXF_INSN_MACWHI_A, model_m32rx_macwhi_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
29374e98e3e1Schristos   { M32RXF_INSN_MACWLO_A, model_m32rx_macwlo_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
29384e98e3e1Schristos   { M32RXF_INSN_MUL, model_m32rx_mul, { { (int) UNIT_M32RX_U_EXEC, 1, 4 } } },
29394e98e3e1Schristos   { M32RXF_INSN_MULHI_A, model_m32rx_mulhi_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
29404e98e3e1Schristos   { M32RXF_INSN_MULLO_A, model_m32rx_mullo_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
29414e98e3e1Schristos   { M32RXF_INSN_MULWHI_A, model_m32rx_mulwhi_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
29424e98e3e1Schristos   { M32RXF_INSN_MULWLO_A, model_m32rx_mulwlo_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
29434e98e3e1Schristos   { M32RXF_INSN_MV, model_m32rx_mv, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29444e98e3e1Schristos   { M32RXF_INSN_MVFACHI_A, model_m32rx_mvfachi_a, { { (int) UNIT_M32RX_U_EXEC, 1, 2 } } },
29454e98e3e1Schristos   { M32RXF_INSN_MVFACLO_A, model_m32rx_mvfaclo_a, { { (int) UNIT_M32RX_U_EXEC, 1, 2 } } },
29464e98e3e1Schristos   { M32RXF_INSN_MVFACMI_A, model_m32rx_mvfacmi_a, { { (int) UNIT_M32RX_U_EXEC, 1, 2 } } },
29474e98e3e1Schristos   { M32RXF_INSN_MVFC, model_m32rx_mvfc, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29484e98e3e1Schristos   { M32RXF_INSN_MVTACHI_A, model_m32rx_mvtachi_a, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29494e98e3e1Schristos   { M32RXF_INSN_MVTACLO_A, model_m32rx_mvtaclo_a, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29504e98e3e1Schristos   { M32RXF_INSN_MVTC, model_m32rx_mvtc, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29514e98e3e1Schristos   { M32RXF_INSN_NEG, model_m32rx_neg, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29524e98e3e1Schristos   { M32RXF_INSN_NOP, model_m32rx_nop, { { (int) UNIT_M32RX_U_EXEC, 1, 0 } } },
29534e98e3e1Schristos   { M32RXF_INSN_NOT, model_m32rx_not, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29544e98e3e1Schristos   { M32RXF_INSN_RAC_DSI, model_m32rx_rac_dsi, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
29554e98e3e1Schristos   { M32RXF_INSN_RACH_DSI, model_m32rx_rach_dsi, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
29564e98e3e1Schristos   { M32RXF_INSN_RTE, model_m32rx_rte, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29574e98e3e1Schristos   { M32RXF_INSN_SETH, model_m32rx_seth, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29584e98e3e1Schristos   { M32RXF_INSN_SLL, model_m32rx_sll, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29594e98e3e1Schristos   { M32RXF_INSN_SLL3, model_m32rx_sll3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29604e98e3e1Schristos   { M32RXF_INSN_SLLI, model_m32rx_slli, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29614e98e3e1Schristos   { M32RXF_INSN_SRA, model_m32rx_sra, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29624e98e3e1Schristos   { M32RXF_INSN_SRA3, model_m32rx_sra3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29634e98e3e1Schristos   { M32RXF_INSN_SRAI, model_m32rx_srai, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29644e98e3e1Schristos   { M32RXF_INSN_SRL, model_m32rx_srl, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29654e98e3e1Schristos   { M32RXF_INSN_SRL3, model_m32rx_srl3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29664e98e3e1Schristos   { M32RXF_INSN_SRLI, model_m32rx_srli, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29674e98e3e1Schristos   { M32RXF_INSN_ST, model_m32rx_st, { { (int) UNIT_M32RX_U_STORE, 1, 1 } } },
29684e98e3e1Schristos   { M32RXF_INSN_ST_D, model_m32rx_st_d, { { (int) UNIT_M32RX_U_STORE, 1, 2 } } },
29694e98e3e1Schristos   { M32RXF_INSN_STB, model_m32rx_stb, { { (int) UNIT_M32RX_U_STORE, 1, 1 } } },
29704e98e3e1Schristos   { M32RXF_INSN_STB_D, model_m32rx_stb_d, { { (int) UNIT_M32RX_U_STORE, 1, 2 } } },
29714e98e3e1Schristos   { M32RXF_INSN_STH, model_m32rx_sth, { { (int) UNIT_M32RX_U_STORE, 1, 1 } } },
29724e98e3e1Schristos   { M32RXF_INSN_STH_D, model_m32rx_sth_d, { { (int) UNIT_M32RX_U_STORE, 1, 2 } } },
29734e98e3e1Schristos   { M32RXF_INSN_ST_PLUS, model_m32rx_st_plus, { { (int) UNIT_M32RX_U_STORE, 1, 1 }, { (int) UNIT_M32RX_U_EXEC, 1, 0 } } },
29744e98e3e1Schristos   { M32RXF_INSN_STH_PLUS, model_m32rx_sth_plus, { { (int) UNIT_M32RX_U_STORE, 1, 1 }, { (int) UNIT_M32RX_U_EXEC, 1, 0 } } },
29754e98e3e1Schristos   { M32RXF_INSN_STB_PLUS, model_m32rx_stb_plus, { { (int) UNIT_M32RX_U_STORE, 1, 1 }, { (int) UNIT_M32RX_U_EXEC, 1, 0 } } },
29764e98e3e1Schristos   { M32RXF_INSN_ST_MINUS, model_m32rx_st_minus, { { (int) UNIT_M32RX_U_STORE, 1, 1 }, { (int) UNIT_M32RX_U_EXEC, 1, 0 } } },
29774e98e3e1Schristos   { M32RXF_INSN_SUB, model_m32rx_sub, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29784e98e3e1Schristos   { M32RXF_INSN_SUBV, model_m32rx_subv, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29794e98e3e1Schristos   { M32RXF_INSN_SUBX, model_m32rx_subx, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29804e98e3e1Schristos   { M32RXF_INSN_TRAP, model_m32rx_trap, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29814e98e3e1Schristos   { M32RXF_INSN_UNLOCK, model_m32rx_unlock, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } },
29824e98e3e1Schristos   { M32RXF_INSN_SATB, model_m32rx_satb, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29834e98e3e1Schristos   { M32RXF_INSN_SATH, model_m32rx_sath, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29844e98e3e1Schristos   { M32RXF_INSN_SAT, model_m32rx_sat, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29854e98e3e1Schristos   { M32RXF_INSN_PCMPBZ, model_m32rx_pcmpbz, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } },
29864e98e3e1Schristos   { M32RXF_INSN_SADD, model_m32rx_sadd, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
29874e98e3e1Schristos   { M32RXF_INSN_MACWU1, model_m32rx_macwu1, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
29884e98e3e1Schristos   { M32RXF_INSN_MSBLO, model_m32rx_msblo, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
29894e98e3e1Schristos   { M32RXF_INSN_MULWU1, model_m32rx_mulwu1, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
29904e98e3e1Schristos   { M32RXF_INSN_MACLH1, model_m32rx_maclh1, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
29914e98e3e1Schristos   { M32RXF_INSN_SC, model_m32rx_sc, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29924e98e3e1Schristos   { M32RXF_INSN_SNC, model_m32rx_snc, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29934e98e3e1Schristos   { M32RXF_INSN_CLRPSW, model_m32rx_clrpsw, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29944e98e3e1Schristos   { M32RXF_INSN_SETPSW, model_m32rx_setpsw, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29954e98e3e1Schristos   { M32RXF_INSN_BSET, model_m32rx_bset, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29964e98e3e1Schristos   { M32RXF_INSN_BCLR, model_m32rx_bclr, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29974e98e3e1Schristos   { M32RXF_INSN_BTST, model_m32rx_btst, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
29984e98e3e1Schristos };
29994e98e3e1Schristos 
30004e98e3e1Schristos #endif /* WITH_PROFILE_MODEL_P */
30014e98e3e1Schristos 
30024e98e3e1Schristos static void
30034e98e3e1Schristos m32rx_model_init (SIM_CPU *cpu)
30044e98e3e1Schristos {
30054e98e3e1Schristos   CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_M32RX_DATA));
30064e98e3e1Schristos }
30074e98e3e1Schristos 
30084e98e3e1Schristos #if WITH_PROFILE_MODEL_P
30094e98e3e1Schristos #define TIMING_DATA(td) td
30104e98e3e1Schristos #else
30114e98e3e1Schristos #define TIMING_DATA(td) 0
30124e98e3e1Schristos #endif
30134e98e3e1Schristos 
3014ba340e45Schristos static const SIM_MODEL m32rx_models[] =
30154e98e3e1Schristos {
30164e98e3e1Schristos   { "m32rx", & m32rx_mach, MODEL_M32RX, TIMING_DATA (& m32rx_timing[0]), m32rx_model_init },
30174e98e3e1Schristos   { 0 }
30184e98e3e1Schristos };
30194e98e3e1Schristos 
30204e98e3e1Schristos /* The properties of this cpu's implementation.  */
30214e98e3e1Schristos 
3022ba340e45Schristos static const SIM_MACH_IMP_PROPERTIES m32rxf_imp_properties =
30234e98e3e1Schristos {
30244e98e3e1Schristos   sizeof (SIM_CPU),
30254e98e3e1Schristos #if WITH_SCACHE
30264e98e3e1Schristos   sizeof (SCACHE)
30274e98e3e1Schristos #else
30284e98e3e1Schristos   0
30294e98e3e1Schristos #endif
30304e98e3e1Schristos };
30314e98e3e1Schristos 
30324e98e3e1Schristos 
30334e98e3e1Schristos static void
30344e98e3e1Schristos m32rxf_prepare_run (SIM_CPU *cpu)
30354e98e3e1Schristos {
30364e98e3e1Schristos   if (CPU_IDESC (cpu) == NULL)
30374e98e3e1Schristos     m32rxf_init_idesc_table (cpu);
30384e98e3e1Schristos }
30394e98e3e1Schristos 
30404e98e3e1Schristos static const CGEN_INSN *
30414e98e3e1Schristos m32rxf_get_idata (SIM_CPU *cpu, int inum)
30424e98e3e1Schristos {
30434e98e3e1Schristos   return CPU_IDESC (cpu) [inum].idata;
30444e98e3e1Schristos }
30454e98e3e1Schristos 
30464e98e3e1Schristos static void
30474e98e3e1Schristos m32rx_init_cpu (SIM_CPU *cpu)
30484e98e3e1Schristos {
30494e98e3e1Schristos   CPU_REG_FETCH (cpu) = m32rxf_fetch_register;
30504e98e3e1Schristos   CPU_REG_STORE (cpu) = m32rxf_store_register;
30514e98e3e1Schristos   CPU_PC_FETCH (cpu) = m32rxf_h_pc_get;
30524e98e3e1Schristos   CPU_PC_STORE (cpu) = m32rxf_h_pc_set;
30534e98e3e1Schristos   CPU_GET_IDATA (cpu) = m32rxf_get_idata;
30544e98e3e1Schristos   CPU_MAX_INSNS (cpu) = M32RXF_INSN__MAX;
30554e98e3e1Schristos   CPU_INSN_NAME (cpu) = cgen_insn_name;
30564e98e3e1Schristos   CPU_FULL_ENGINE_FN (cpu) = m32rxf_engine_run_full;
30574e98e3e1Schristos #if WITH_FAST
30584e98e3e1Schristos   CPU_FAST_ENGINE_FN (cpu) = m32rxf_engine_run_fast;
30594e98e3e1Schristos #else
30604e98e3e1Schristos   CPU_FAST_ENGINE_FN (cpu) = m32rxf_engine_run_full;
30614e98e3e1Schristos #endif
30624e98e3e1Schristos }
30634e98e3e1Schristos 
3064ba340e45Schristos const SIM_MACH m32rx_mach =
30654e98e3e1Schristos {
30664e98e3e1Schristos   "m32rx", "m32rx", MACH_M32RX,
30674e98e3e1Schristos   32, 32, & m32rx_models[0], & m32rxf_imp_properties,
30684e98e3e1Schristos   m32rx_init_cpu,
30694e98e3e1Schristos   m32rxf_prepare_run
30704e98e3e1Schristos };
30714e98e3e1Schristos 
3072