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