Home | History | Annotate | Line # | Download | only in m32r
model.c revision 1.1.1.3
      1      1.1  christos /* Simulator model support for m32rbf.
      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 m32rbf
     25      1.1  christos #define WANT_CPU_M32RBF
     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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_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 += m32rbf_model_m32r_d_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_m32r_d_bnc8 (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 << 2)) referenced |= 1 << 1;
    599      1.1  christos     cycles += m32rbf_model_m32r_d_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_m32r_d_bnc24 (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 << 2)) referenced |= 1 << 1;
    617      1.1  christos     cycles += m32rbf_model_m32r_d_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_m32r_d_bne (SIM_CPU *current_cpu, void *sem_arg)
    625      1.1  christos {
    626      1.1  christos #define FLD(f) abuf->fields.sfmt_beq.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 << 3)) referenced |= 1 << 1;
    635      1.1  christos     cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    636      1.1  christos   }
    637      1.1  christos   {
    638      1.1  christos     int referenced = 0;
    639      1.1  christos     int UNUSED insn_referenced = abuf->written;
    640      1.1  christos     INT in_src1 = -1;
    641      1.1  christos     INT in_src2 = -1;
    642      1.1  christos     in_src1 = FLD (in_src1);
    643      1.1  christos     in_src2 = FLD (in_src2);
    644      1.1  christos     referenced |= 1 << 0;
    645      1.1  christos     referenced |= 1 << 1;
    646      1.1  christos     cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
    647      1.1  christos   }
    648      1.1  christos   return cycles;
    649      1.1  christos #undef FLD
    650      1.1  christos }
    651      1.1  christos 
    652      1.1  christos static int
    653      1.1  christos model_m32r_d_bra8 (SIM_CPU *current_cpu, void *sem_arg)
    654      1.1  christos {
    655      1.1  christos #define FLD(f) abuf->fields.sfmt_bl8.f
    656      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    657      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    658      1.1  christos   int cycles = 0;
    659      1.1  christos   {
    660      1.1  christos     int referenced = 0;
    661      1.1  christos     int UNUSED insn_referenced = abuf->written;
    662      1.1  christos     INT in_sr = -1;
    663      1.1  christos     referenced |= 1 << 1;
    664      1.1  christos     cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    665      1.1  christos   }
    666      1.1  christos   return cycles;
    667      1.1  christos #undef FLD
    668      1.1  christos }
    669      1.1  christos 
    670      1.1  christos static int
    671      1.1  christos model_m32r_d_bra24 (SIM_CPU *current_cpu, void *sem_arg)
    672      1.1  christos {
    673      1.1  christos #define FLD(f) abuf->fields.sfmt_bl24.f
    674      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    675      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    676      1.1  christos   int cycles = 0;
    677      1.1  christos   {
    678      1.1  christos     int referenced = 0;
    679      1.1  christos     int UNUSED insn_referenced = abuf->written;
    680      1.1  christos     INT in_sr = -1;
    681      1.1  christos     referenced |= 1 << 1;
    682      1.1  christos     cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    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_m32r_d_cmp (SIM_CPU *current_cpu, void *sem_arg)
    690      1.1  christos {
    691      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.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_src1 = -1;
    699      1.1  christos     INT in_src2 = -1;
    700      1.1  christos     in_src1 = FLD (in_src1);
    701      1.1  christos     in_src2 = FLD (in_src2);
    702      1.1  christos     referenced |= 1 << 0;
    703      1.1  christos     referenced |= 1 << 1;
    704      1.1  christos     cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
    705      1.1  christos   }
    706      1.1  christos   return cycles;
    707      1.1  christos #undef FLD
    708      1.1  christos }
    709      1.1  christos 
    710      1.1  christos static int
    711      1.1  christos model_m32r_d_cmpi (SIM_CPU *current_cpu, void *sem_arg)
    712      1.1  christos {
    713      1.1  christos #define FLD(f) abuf->fields.sfmt_st_d.f
    714      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    715      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    716      1.1  christos   int cycles = 0;
    717      1.1  christos   {
    718      1.1  christos     int referenced = 0;
    719      1.1  christos     int UNUSED insn_referenced = abuf->written;
    720      1.1  christos     INT in_src1 = -1;
    721      1.1  christos     INT in_src2 = -1;
    722      1.1  christos     in_src2 = FLD (in_src2);
    723      1.1  christos     referenced |= 1 << 1;
    724      1.1  christos     cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
    725      1.1  christos   }
    726      1.1  christos   return cycles;
    727      1.1  christos #undef FLD
    728      1.1  christos }
    729      1.1  christos 
    730      1.1  christos static int
    731      1.1  christos model_m32r_d_cmpu (SIM_CPU *current_cpu, void *sem_arg)
    732      1.1  christos {
    733      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
    734      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    735      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    736      1.1  christos   int cycles = 0;
    737      1.1  christos   {
    738      1.1  christos     int referenced = 0;
    739      1.1  christos     int UNUSED insn_referenced = abuf->written;
    740      1.1  christos     INT in_src1 = -1;
    741      1.1  christos     INT in_src2 = -1;
    742      1.1  christos     in_src1 = FLD (in_src1);
    743      1.1  christos     in_src2 = FLD (in_src2);
    744      1.1  christos     referenced |= 1 << 0;
    745      1.1  christos     referenced |= 1 << 1;
    746      1.1  christos     cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
    747      1.1  christos   }
    748      1.1  christos   return cycles;
    749      1.1  christos #undef FLD
    750      1.1  christos }
    751      1.1  christos 
    752      1.1  christos static int
    753      1.1  christos model_m32r_d_cmpui (SIM_CPU *current_cpu, void *sem_arg)
    754      1.1  christos {
    755      1.1  christos #define FLD(f) abuf->fields.sfmt_st_d.f
    756      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    757      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    758      1.1  christos   int cycles = 0;
    759      1.1  christos   {
    760      1.1  christos     int referenced = 0;
    761      1.1  christos     int UNUSED insn_referenced = abuf->written;
    762      1.1  christos     INT in_src1 = -1;
    763      1.1  christos     INT in_src2 = -1;
    764      1.1  christos     in_src2 = FLD (in_src2);
    765      1.1  christos     referenced |= 1 << 1;
    766      1.1  christos     cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
    767      1.1  christos   }
    768      1.1  christos   return cycles;
    769      1.1  christos #undef FLD
    770      1.1  christos }
    771      1.1  christos 
    772      1.1  christos static int
    773      1.1  christos model_m32r_d_div (SIM_CPU *current_cpu, void *sem_arg)
    774      1.1  christos {
    775      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
    776      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    777      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    778      1.1  christos   int cycles = 0;
    779      1.1  christos   {
    780      1.1  christos     int referenced = 0;
    781      1.1  christos     int UNUSED insn_referenced = abuf->written;
    782      1.1  christos     INT in_sr = -1;
    783      1.1  christos     INT in_dr = -1;
    784      1.1  christos     INT out_dr = -1;
    785      1.1  christos     in_sr = FLD (in_sr);
    786      1.1  christos     in_dr = FLD (in_dr);
    787      1.1  christos     out_dr = FLD (out_dr);
    788      1.1  christos     referenced |= 1 << 0;
    789      1.1  christos     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
    790      1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
    791      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    792      1.1  christos   }
    793      1.1  christos   return cycles;
    794      1.1  christos #undef FLD
    795      1.1  christos }
    796      1.1  christos 
    797      1.1  christos static int
    798      1.1  christos model_m32r_d_divu (SIM_CPU *current_cpu, void *sem_arg)
    799      1.1  christos {
    800      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
    801      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    802      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    803      1.1  christos   int cycles = 0;
    804      1.1  christos   {
    805      1.1  christos     int referenced = 0;
    806      1.1  christos     int UNUSED insn_referenced = abuf->written;
    807      1.1  christos     INT in_sr = -1;
    808      1.1  christos     INT in_dr = -1;
    809      1.1  christos     INT out_dr = -1;
    810      1.1  christos     in_sr = FLD (in_sr);
    811      1.1  christos     in_dr = FLD (in_dr);
    812      1.1  christos     out_dr = FLD (out_dr);
    813      1.1  christos     referenced |= 1 << 0;
    814      1.1  christos     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
    815      1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
    816      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    817      1.1  christos   }
    818      1.1  christos   return cycles;
    819      1.1  christos #undef FLD
    820      1.1  christos }
    821      1.1  christos 
    822      1.1  christos static int
    823      1.1  christos model_m32r_d_rem (SIM_CPU *current_cpu, void *sem_arg)
    824      1.1  christos {
    825      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
    826      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    827      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    828      1.1  christos   int cycles = 0;
    829      1.1  christos   {
    830      1.1  christos     int referenced = 0;
    831      1.1  christos     int UNUSED insn_referenced = abuf->written;
    832      1.1  christos     INT in_sr = -1;
    833      1.1  christos     INT in_dr = -1;
    834      1.1  christos     INT out_dr = -1;
    835      1.1  christos     in_sr = FLD (in_sr);
    836      1.1  christos     in_dr = FLD (in_dr);
    837      1.1  christos     out_dr = FLD (out_dr);
    838      1.1  christos     referenced |= 1 << 0;
    839      1.1  christos     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
    840      1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
    841      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    842      1.1  christos   }
    843      1.1  christos   return cycles;
    844      1.1  christos #undef FLD
    845      1.1  christos }
    846      1.1  christos 
    847      1.1  christos static int
    848      1.1  christos model_m32r_d_remu (SIM_CPU *current_cpu, void *sem_arg)
    849      1.1  christos {
    850      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
    851      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    852      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    853      1.1  christos   int cycles = 0;
    854      1.1  christos   {
    855      1.1  christos     int referenced = 0;
    856      1.1  christos     int UNUSED insn_referenced = abuf->written;
    857      1.1  christos     INT in_sr = -1;
    858      1.1  christos     INT in_dr = -1;
    859      1.1  christos     INT out_dr = -1;
    860      1.1  christos     in_sr = FLD (in_sr);
    861      1.1  christos     in_dr = FLD (in_dr);
    862      1.1  christos     out_dr = FLD (out_dr);
    863      1.1  christos     referenced |= 1 << 0;
    864      1.1  christos     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
    865      1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
    866      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    867      1.1  christos   }
    868      1.1  christos   return cycles;
    869      1.1  christos #undef FLD
    870      1.1  christos }
    871      1.1  christos 
    872      1.1  christos static int
    873      1.1  christos model_m32r_d_jl (SIM_CPU *current_cpu, void *sem_arg)
    874      1.1  christos {
    875      1.1  christos #define FLD(f) abuf->fields.sfmt_jl.f
    876      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    877      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    878      1.1  christos   int cycles = 0;
    879      1.1  christos   {
    880      1.1  christos     int referenced = 0;
    881      1.1  christos     int UNUSED insn_referenced = abuf->written;
    882      1.1  christos     INT in_sr = -1;
    883      1.1  christos     in_sr = FLD (in_sr);
    884      1.1  christos     referenced |= 1 << 0;
    885      1.1  christos     referenced |= 1 << 1;
    886      1.1  christos     cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    887      1.1  christos   }
    888      1.1  christos   return cycles;
    889      1.1  christos #undef FLD
    890      1.1  christos }
    891      1.1  christos 
    892      1.1  christos static int
    893      1.1  christos model_m32r_d_jmp (SIM_CPU *current_cpu, void *sem_arg)
    894      1.1  christos {
    895      1.1  christos #define FLD(f) abuf->fields.sfmt_jl.f
    896      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    897      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    898      1.1  christos   int cycles = 0;
    899      1.1  christos   {
    900      1.1  christos     int referenced = 0;
    901      1.1  christos     int UNUSED insn_referenced = abuf->written;
    902      1.1  christos     INT in_sr = -1;
    903      1.1  christos     in_sr = FLD (in_sr);
    904      1.1  christos     referenced |= 1 << 0;
    905      1.1  christos     referenced |= 1 << 1;
    906      1.1  christos     cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    907      1.1  christos   }
    908      1.1  christos   return cycles;
    909      1.1  christos #undef FLD
    910      1.1  christos }
    911      1.1  christos 
    912      1.1  christos static int
    913      1.1  christos model_m32r_d_ld (SIM_CPU *current_cpu, void *sem_arg)
    914      1.1  christos {
    915      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
    916      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    917      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    918      1.1  christos   int cycles = 0;
    919      1.1  christos   {
    920      1.1  christos     int referenced = 0;
    921      1.1  christos     int UNUSED insn_referenced = abuf->written;
    922      1.1  christos     INT in_sr = 0;
    923      1.1  christos     INT out_dr = 0;
    924      1.1  christos     in_sr = FLD (in_sr);
    925      1.1  christos     out_dr = FLD (out_dr);
    926      1.1  christos     referenced |= 1 << 0;
    927      1.1  christos     referenced |= 1 << 1;
    928      1.1  christos     cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
    929      1.1  christos   }
    930      1.1  christos   return cycles;
    931      1.1  christos #undef FLD
    932      1.1  christos }
    933      1.1  christos 
    934      1.1  christos static int
    935      1.1  christos model_m32r_d_ld_d (SIM_CPU *current_cpu, void *sem_arg)
    936      1.1  christos {
    937      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
    938      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    939      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    940      1.1  christos   int cycles = 0;
    941      1.1  christos   {
    942      1.1  christos     int referenced = 0;
    943      1.1  christos     int UNUSED insn_referenced = abuf->written;
    944      1.1  christos     INT in_sr = 0;
    945      1.1  christos     INT out_dr = 0;
    946      1.1  christos     in_sr = FLD (in_sr);
    947      1.1  christos     out_dr = FLD (out_dr);
    948      1.1  christos     referenced |= 1 << 0;
    949      1.1  christos     referenced |= 1 << 1;
    950      1.1  christos     cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
    951      1.1  christos   }
    952      1.1  christos   return cycles;
    953      1.1  christos #undef FLD
    954      1.1  christos }
    955      1.1  christos 
    956      1.1  christos static int
    957      1.1  christos model_m32r_d_ldb (SIM_CPU *current_cpu, void *sem_arg)
    958      1.1  christos {
    959      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
    960      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    961      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    962      1.1  christos   int cycles = 0;
    963      1.1  christos   {
    964      1.1  christos     int referenced = 0;
    965      1.1  christos     int UNUSED insn_referenced = abuf->written;
    966      1.1  christos     INT in_sr = 0;
    967      1.1  christos     INT out_dr = 0;
    968      1.1  christos     in_sr = FLD (in_sr);
    969      1.1  christos     out_dr = FLD (out_dr);
    970      1.1  christos     referenced |= 1 << 0;
    971      1.1  christos     referenced |= 1 << 1;
    972      1.1  christos     cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
    973      1.1  christos   }
    974      1.1  christos   return cycles;
    975      1.1  christos #undef FLD
    976      1.1  christos }
    977      1.1  christos 
    978      1.1  christos static int
    979      1.1  christos model_m32r_d_ldb_d (SIM_CPU *current_cpu, void *sem_arg)
    980      1.1  christos {
    981      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
    982      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    983      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    984      1.1  christos   int cycles = 0;
    985      1.1  christos   {
    986      1.1  christos     int referenced = 0;
    987      1.1  christos     int UNUSED insn_referenced = abuf->written;
    988      1.1  christos     INT in_sr = 0;
    989      1.1  christos     INT out_dr = 0;
    990      1.1  christos     in_sr = FLD (in_sr);
    991      1.1  christos     out_dr = FLD (out_dr);
    992      1.1  christos     referenced |= 1 << 0;
    993      1.1  christos     referenced |= 1 << 1;
    994      1.1  christos     cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
    995      1.1  christos   }
    996      1.1  christos   return cycles;
    997      1.1  christos #undef FLD
    998      1.1  christos }
    999      1.1  christos 
   1000      1.1  christos static int
   1001      1.1  christos model_m32r_d_ldh (SIM_CPU *current_cpu, void *sem_arg)
   1002      1.1  christos {
   1003      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1004      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1005      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1006      1.1  christos   int cycles = 0;
   1007      1.1  christos   {
   1008      1.1  christos     int referenced = 0;
   1009      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1010      1.1  christos     INT in_sr = 0;
   1011      1.1  christos     INT out_dr = 0;
   1012      1.1  christos     in_sr = FLD (in_sr);
   1013      1.1  christos     out_dr = FLD (out_dr);
   1014      1.1  christos     referenced |= 1 << 0;
   1015      1.1  christos     referenced |= 1 << 1;
   1016      1.1  christos     cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1017      1.1  christos   }
   1018      1.1  christos   return cycles;
   1019      1.1  christos #undef FLD
   1020      1.1  christos }
   1021      1.1  christos 
   1022      1.1  christos static int
   1023      1.1  christos model_m32r_d_ldh_d (SIM_CPU *current_cpu, void *sem_arg)
   1024      1.1  christos {
   1025      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   1026      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1027      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1028      1.1  christos   int cycles = 0;
   1029      1.1  christos   {
   1030      1.1  christos     int referenced = 0;
   1031      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1032      1.1  christos     INT in_sr = 0;
   1033      1.1  christos     INT out_dr = 0;
   1034      1.1  christos     in_sr = FLD (in_sr);
   1035      1.1  christos     out_dr = FLD (out_dr);
   1036      1.1  christos     referenced |= 1 << 0;
   1037      1.1  christos     referenced |= 1 << 1;
   1038      1.1  christos     cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1039      1.1  christos   }
   1040      1.1  christos   return cycles;
   1041      1.1  christos #undef FLD
   1042      1.1  christos }
   1043      1.1  christos 
   1044      1.1  christos static int
   1045      1.1  christos model_m32r_d_ldub (SIM_CPU *current_cpu, void *sem_arg)
   1046      1.1  christos {
   1047      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1048      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1049      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1050      1.1  christos   int cycles = 0;
   1051      1.1  christos   {
   1052      1.1  christos     int referenced = 0;
   1053      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1054      1.1  christos     INT in_sr = 0;
   1055      1.1  christos     INT out_dr = 0;
   1056      1.1  christos     in_sr = FLD (in_sr);
   1057      1.1  christos     out_dr = FLD (out_dr);
   1058      1.1  christos     referenced |= 1 << 0;
   1059      1.1  christos     referenced |= 1 << 1;
   1060      1.1  christos     cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1061      1.1  christos   }
   1062      1.1  christos   return cycles;
   1063      1.1  christos #undef FLD
   1064      1.1  christos }
   1065      1.1  christos 
   1066      1.1  christos static int
   1067      1.1  christos model_m32r_d_ldub_d (SIM_CPU *current_cpu, void *sem_arg)
   1068      1.1  christos {
   1069      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   1070      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1071      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1072      1.1  christos   int cycles = 0;
   1073      1.1  christos   {
   1074      1.1  christos     int referenced = 0;
   1075      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1076      1.1  christos     INT in_sr = 0;
   1077      1.1  christos     INT out_dr = 0;
   1078      1.1  christos     in_sr = FLD (in_sr);
   1079      1.1  christos     out_dr = FLD (out_dr);
   1080      1.1  christos     referenced |= 1 << 0;
   1081      1.1  christos     referenced |= 1 << 1;
   1082      1.1  christos     cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1083      1.1  christos   }
   1084      1.1  christos   return cycles;
   1085      1.1  christos #undef FLD
   1086      1.1  christos }
   1087      1.1  christos 
   1088      1.1  christos static int
   1089      1.1  christos model_m32r_d_lduh (SIM_CPU *current_cpu, void *sem_arg)
   1090      1.1  christos {
   1091      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1092      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1093      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1094      1.1  christos   int cycles = 0;
   1095      1.1  christos   {
   1096      1.1  christos     int referenced = 0;
   1097      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1098      1.1  christos     INT in_sr = 0;
   1099      1.1  christos     INT out_dr = 0;
   1100      1.1  christos     in_sr = FLD (in_sr);
   1101      1.1  christos     out_dr = FLD (out_dr);
   1102      1.1  christos     referenced |= 1 << 0;
   1103      1.1  christos     referenced |= 1 << 1;
   1104      1.1  christos     cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1105      1.1  christos   }
   1106      1.1  christos   return cycles;
   1107      1.1  christos #undef FLD
   1108      1.1  christos }
   1109      1.1  christos 
   1110      1.1  christos static int
   1111      1.1  christos model_m32r_d_lduh_d (SIM_CPU *current_cpu, void *sem_arg)
   1112      1.1  christos {
   1113      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   1114      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1115      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1116      1.1  christos   int cycles = 0;
   1117      1.1  christos   {
   1118      1.1  christos     int referenced = 0;
   1119      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1120      1.1  christos     INT in_sr = 0;
   1121      1.1  christos     INT out_dr = 0;
   1122      1.1  christos     in_sr = FLD (in_sr);
   1123      1.1  christos     out_dr = FLD (out_dr);
   1124      1.1  christos     referenced |= 1 << 0;
   1125      1.1  christos     referenced |= 1 << 1;
   1126      1.1  christos     cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1127      1.1  christos   }
   1128      1.1  christos   return cycles;
   1129      1.1  christos #undef FLD
   1130      1.1  christos }
   1131      1.1  christos 
   1132      1.1  christos static int
   1133      1.1  christos model_m32r_d_ld_plus (SIM_CPU *current_cpu, void *sem_arg)
   1134      1.1  christos {
   1135      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1136      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1137      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1138      1.1  christos   int cycles = 0;
   1139      1.1  christos   {
   1140      1.1  christos     int referenced = 0;
   1141      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1142      1.1  christos     INT in_sr = 0;
   1143      1.1  christos     INT out_dr = 0;
   1144      1.1  christos     in_sr = FLD (in_sr);
   1145      1.1  christos     out_dr = FLD (out_dr);
   1146      1.1  christos     referenced |= 1 << 0;
   1147      1.1  christos     referenced |= 1 << 1;
   1148      1.1  christos     cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1149      1.1  christos   }
   1150      1.1  christos   {
   1151      1.1  christos     int referenced = 0;
   1152      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1153      1.1  christos     INT in_sr = -1;
   1154      1.1  christos     INT in_dr = -1;
   1155      1.1  christos     INT out_dr = -1;
   1156      1.1  christos     in_dr = FLD (in_sr);
   1157      1.1  christos     out_dr = FLD (out_sr);
   1158      1.1  christos     referenced |= 1 << 0;
   1159      1.1  christos     referenced |= 1 << 2;
   1160      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
   1161      1.1  christos   }
   1162      1.1  christos   return cycles;
   1163      1.1  christos #undef FLD
   1164      1.1  christos }
   1165      1.1  christos 
   1166      1.1  christos static int
   1167      1.1  christos model_m32r_d_ld24 (SIM_CPU *current_cpu, void *sem_arg)
   1168      1.1  christos {
   1169      1.1  christos #define FLD(f) abuf->fields.sfmt_ld24.f
   1170      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1171      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1172      1.1  christos   int cycles = 0;
   1173      1.1  christos   {
   1174      1.1  christos     int referenced = 0;
   1175      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1176      1.1  christos     INT in_sr = -1;
   1177      1.1  christos     INT in_dr = -1;
   1178      1.1  christos     INT out_dr = -1;
   1179      1.1  christos     out_dr = FLD (out_dr);
   1180      1.1  christos     referenced |= 1 << 2;
   1181      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1182      1.1  christos   }
   1183      1.1  christos   return cycles;
   1184      1.1  christos #undef FLD
   1185      1.1  christos }
   1186      1.1  christos 
   1187      1.1  christos static int
   1188      1.1  christos model_m32r_d_ldi8 (SIM_CPU *current_cpu, void *sem_arg)
   1189      1.1  christos {
   1190      1.1  christos #define FLD(f) abuf->fields.sfmt_addi.f
   1191      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1192      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1193      1.1  christos   int cycles = 0;
   1194      1.1  christos   {
   1195      1.1  christos     int referenced = 0;
   1196      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1197      1.1  christos     INT in_sr = -1;
   1198      1.1  christos     INT in_dr = -1;
   1199      1.1  christos     INT out_dr = -1;
   1200      1.1  christos     out_dr = FLD (out_dr);
   1201      1.1  christos     referenced |= 1 << 2;
   1202      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1203      1.1  christos   }
   1204      1.1  christos   return cycles;
   1205      1.1  christos #undef FLD
   1206      1.1  christos }
   1207      1.1  christos 
   1208      1.1  christos static int
   1209      1.1  christos model_m32r_d_ldi16 (SIM_CPU *current_cpu, void *sem_arg)
   1210      1.1  christos {
   1211      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   1212      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1213      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1214      1.1  christos   int cycles = 0;
   1215      1.1  christos   {
   1216      1.1  christos     int referenced = 0;
   1217      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1218      1.1  christos     INT in_sr = -1;
   1219      1.1  christos     INT in_dr = -1;
   1220      1.1  christos     INT out_dr = -1;
   1221      1.1  christos     out_dr = FLD (out_dr);
   1222      1.1  christos     referenced |= 1 << 2;
   1223      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1224      1.1  christos   }
   1225      1.1  christos   return cycles;
   1226      1.1  christos #undef FLD
   1227      1.1  christos }
   1228      1.1  christos 
   1229      1.1  christos static int
   1230      1.1  christos model_m32r_d_lock (SIM_CPU *current_cpu, void *sem_arg)
   1231      1.1  christos {
   1232      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1233      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1234      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1235      1.1  christos   int cycles = 0;
   1236      1.1  christos   {
   1237      1.1  christos     int referenced = 0;
   1238      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1239      1.1  christos     INT in_sr = 0;
   1240      1.1  christos     INT out_dr = 0;
   1241      1.1  christos     in_sr = FLD (in_sr);
   1242      1.1  christos     out_dr = FLD (out_dr);
   1243      1.1  christos     referenced |= 1 << 0;
   1244      1.1  christos     referenced |= 1 << 1;
   1245      1.1  christos     cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1246      1.1  christos   }
   1247      1.1  christos   return cycles;
   1248      1.1  christos #undef FLD
   1249      1.1  christos }
   1250      1.1  christos 
   1251      1.1  christos static int
   1252      1.1  christos model_m32r_d_machi (SIM_CPU *current_cpu, void *sem_arg)
   1253      1.1  christos {
   1254      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   1255      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1256      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1257      1.1  christos   int cycles = 0;
   1258      1.1  christos   {
   1259      1.1  christos     int referenced = 0;
   1260      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1261      1.1  christos     INT in_src1 = -1;
   1262      1.1  christos     INT in_src2 = -1;
   1263      1.1  christos     in_src1 = FLD (in_src1);
   1264      1.1  christos     in_src2 = FLD (in_src2);
   1265      1.1  christos     referenced |= 1 << 0;
   1266      1.1  christos     referenced |= 1 << 1;
   1267      1.1  christos     cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1268      1.1  christos   }
   1269      1.1  christos   return cycles;
   1270      1.1  christos #undef FLD
   1271      1.1  christos }
   1272      1.1  christos 
   1273      1.1  christos static int
   1274      1.1  christos model_m32r_d_maclo (SIM_CPU *current_cpu, void *sem_arg)
   1275      1.1  christos {
   1276      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   1277      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1278      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1279      1.1  christos   int cycles = 0;
   1280      1.1  christos   {
   1281      1.1  christos     int referenced = 0;
   1282      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1283      1.1  christos     INT in_src1 = -1;
   1284      1.1  christos     INT in_src2 = -1;
   1285      1.1  christos     in_src1 = FLD (in_src1);
   1286      1.1  christos     in_src2 = FLD (in_src2);
   1287      1.1  christos     referenced |= 1 << 0;
   1288      1.1  christos     referenced |= 1 << 1;
   1289      1.1  christos     cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1290      1.1  christos   }
   1291      1.1  christos   return cycles;
   1292      1.1  christos #undef FLD
   1293      1.1  christos }
   1294      1.1  christos 
   1295      1.1  christos static int
   1296      1.1  christos model_m32r_d_macwhi (SIM_CPU *current_cpu, void *sem_arg)
   1297      1.1  christos {
   1298      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   1299      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1300      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1301      1.1  christos   int cycles = 0;
   1302      1.1  christos   {
   1303      1.1  christos     int referenced = 0;
   1304      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1305      1.1  christos     INT in_src1 = -1;
   1306      1.1  christos     INT in_src2 = -1;
   1307      1.1  christos     in_src1 = FLD (in_src1);
   1308      1.1  christos     in_src2 = FLD (in_src2);
   1309      1.1  christos     referenced |= 1 << 0;
   1310      1.1  christos     referenced |= 1 << 1;
   1311      1.1  christos     cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1312      1.1  christos   }
   1313      1.1  christos   return cycles;
   1314      1.1  christos #undef FLD
   1315      1.1  christos }
   1316      1.1  christos 
   1317      1.1  christos static int
   1318      1.1  christos model_m32r_d_macwlo (SIM_CPU *current_cpu, void *sem_arg)
   1319      1.1  christos {
   1320      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   1321      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1322      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1323      1.1  christos   int cycles = 0;
   1324      1.1  christos   {
   1325      1.1  christos     int referenced = 0;
   1326      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1327      1.1  christos     INT in_src1 = -1;
   1328      1.1  christos     INT in_src2 = -1;
   1329      1.1  christos     in_src1 = FLD (in_src1);
   1330      1.1  christos     in_src2 = FLD (in_src2);
   1331      1.1  christos     referenced |= 1 << 0;
   1332      1.1  christos     referenced |= 1 << 1;
   1333      1.1  christos     cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1334      1.1  christos   }
   1335      1.1  christos   return cycles;
   1336      1.1  christos #undef FLD
   1337      1.1  christos }
   1338      1.1  christos 
   1339      1.1  christos static int
   1340      1.1  christos model_m32r_d_mul (SIM_CPU *current_cpu, void *sem_arg)
   1341      1.1  christos {
   1342      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   1343      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1344      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1345      1.1  christos   int cycles = 0;
   1346      1.1  christos   {
   1347      1.1  christos     int referenced = 0;
   1348      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1349      1.1  christos     INT in_sr = -1;
   1350      1.1  christos     INT in_dr = -1;
   1351      1.1  christos     INT out_dr = -1;
   1352      1.1  christos     in_sr = FLD (in_sr);
   1353      1.1  christos     in_dr = FLD (in_dr);
   1354      1.1  christos     out_dr = FLD (out_dr);
   1355      1.1  christos     referenced |= 1 << 0;
   1356      1.1  christos     referenced |= 1 << 1;
   1357      1.1  christos     referenced |= 1 << 2;
   1358      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1359      1.1  christos   }
   1360      1.1  christos   return cycles;
   1361      1.1  christos #undef FLD
   1362      1.1  christos }
   1363      1.1  christos 
   1364      1.1  christos static int
   1365      1.1  christos model_m32r_d_mulhi (SIM_CPU *current_cpu, void *sem_arg)
   1366      1.1  christos {
   1367      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   1368      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1369      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1370      1.1  christos   int cycles = 0;
   1371      1.1  christos   {
   1372      1.1  christos     int referenced = 0;
   1373      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1374      1.1  christos     INT in_src1 = -1;
   1375      1.1  christos     INT in_src2 = -1;
   1376      1.1  christos     in_src1 = FLD (in_src1);
   1377      1.1  christos     in_src2 = FLD (in_src2);
   1378      1.1  christos     referenced |= 1 << 0;
   1379      1.1  christos     referenced |= 1 << 1;
   1380      1.1  christos     cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1381      1.1  christos   }
   1382      1.1  christos   return cycles;
   1383      1.1  christos #undef FLD
   1384      1.1  christos }
   1385      1.1  christos 
   1386      1.1  christos static int
   1387      1.1  christos model_m32r_d_mullo (SIM_CPU *current_cpu, void *sem_arg)
   1388      1.1  christos {
   1389      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   1390      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1391      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1392      1.1  christos   int cycles = 0;
   1393      1.1  christos   {
   1394      1.1  christos     int referenced = 0;
   1395      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1396      1.1  christos     INT in_src1 = -1;
   1397      1.1  christos     INT in_src2 = -1;
   1398      1.1  christos     in_src1 = FLD (in_src1);
   1399      1.1  christos     in_src2 = FLD (in_src2);
   1400      1.1  christos     referenced |= 1 << 0;
   1401      1.1  christos     referenced |= 1 << 1;
   1402      1.1  christos     cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   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_m32r_d_mulwhi (SIM_CPU *current_cpu, void *sem_arg)
   1410      1.1  christos {
   1411      1.1  christos #define FLD(f) abuf->fields.sfmt_st_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_src1 = -1;
   1419      1.1  christos     INT in_src2 = -1;
   1420      1.1  christos     in_src1 = FLD (in_src1);
   1421      1.1  christos     in_src2 = FLD (in_src2);
   1422      1.1  christos     referenced |= 1 << 0;
   1423      1.1  christos     referenced |= 1 << 1;
   1424      1.1  christos     cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   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_m32r_d_mulwlo (SIM_CPU *current_cpu, void *sem_arg)
   1432      1.1  christos {
   1433      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.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 += m32rbf_model_m32r_d_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_m32r_d_mv (SIM_CPU *current_cpu, void *sem_arg)
   1454      1.1  christos {
   1455      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.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_sr = -1;
   1463      1.1  christos     INT in_dr = -1;
   1464      1.1  christos     INT out_dr = -1;
   1465      1.1  christos     in_sr = FLD (in_sr);
   1466      1.1  christos     out_dr = FLD (out_dr);
   1467      1.1  christos     referenced |= 1 << 0;
   1468      1.1  christos     referenced |= 1 << 2;
   1469      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1470      1.1  christos   }
   1471      1.1  christos   return cycles;
   1472      1.1  christos #undef FLD
   1473      1.1  christos }
   1474      1.1  christos 
   1475      1.1  christos static int
   1476      1.1  christos model_m32r_d_mvfachi (SIM_CPU *current_cpu, void *sem_arg)
   1477      1.1  christos {
   1478      1.1  christos #define FLD(f) abuf->fields.sfmt_seth.f
   1479      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1480      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1481      1.1  christos   int cycles = 0;
   1482      1.1  christos   {
   1483      1.1  christos     int referenced = 0;
   1484      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1485      1.1  christos     INT in_sr = -1;
   1486      1.1  christos     INT in_dr = -1;
   1487      1.1  christos     INT out_dr = -1;
   1488      1.1  christos     out_dr = FLD (out_dr);
   1489      1.1  christos     referenced |= 1 << 2;
   1490      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   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_m32r_d_mvfaclo (SIM_CPU *current_cpu, void *sem_arg)
   1498      1.1  christos {
   1499      1.1  christos #define FLD(f) abuf->fields.sfmt_seth.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_sr = -1;
   1507      1.1  christos     INT in_dr = -1;
   1508      1.1  christos     INT out_dr = -1;
   1509      1.1  christos     out_dr = FLD (out_dr);
   1510      1.1  christos     referenced |= 1 << 2;
   1511      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1512      1.1  christos   }
   1513      1.1  christos   return cycles;
   1514      1.1  christos #undef FLD
   1515      1.1  christos }
   1516      1.1  christos 
   1517      1.1  christos static int
   1518      1.1  christos model_m32r_d_mvfacmi (SIM_CPU *current_cpu, void *sem_arg)
   1519      1.1  christos {
   1520      1.1  christos #define FLD(f) abuf->fields.sfmt_seth.f
   1521      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1522      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1523      1.1  christos   int cycles = 0;
   1524      1.1  christos   {
   1525      1.1  christos     int referenced = 0;
   1526      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1527      1.1  christos     INT in_sr = -1;
   1528      1.1  christos     INT in_dr = -1;
   1529      1.1  christos     INT out_dr = -1;
   1530      1.1  christos     out_dr = FLD (out_dr);
   1531      1.1  christos     referenced |= 1 << 2;
   1532      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1533      1.1  christos   }
   1534      1.1  christos   return cycles;
   1535      1.1  christos #undef FLD
   1536      1.1  christos }
   1537      1.1  christos 
   1538      1.1  christos static int
   1539      1.1  christos model_m32r_d_mvfc (SIM_CPU *current_cpu, void *sem_arg)
   1540      1.1  christos {
   1541      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1542      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1543      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1544      1.1  christos   int cycles = 0;
   1545      1.1  christos   {
   1546      1.1  christos     int referenced = 0;
   1547      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1548      1.1  christos     INT in_sr = -1;
   1549      1.1  christos     INT in_dr = -1;
   1550      1.1  christos     INT out_dr = -1;
   1551      1.1  christos     out_dr = FLD (out_dr);
   1552      1.1  christos     referenced |= 1 << 2;
   1553      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1554      1.1  christos   }
   1555      1.1  christos   return cycles;
   1556      1.1  christos #undef FLD
   1557      1.1  christos }
   1558      1.1  christos 
   1559      1.1  christos static int
   1560      1.1  christos model_m32r_d_mvtachi (SIM_CPU *current_cpu, void *sem_arg)
   1561      1.1  christos {
   1562      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   1563      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1564      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1565      1.1  christos   int cycles = 0;
   1566      1.1  christos   {
   1567      1.1  christos     int referenced = 0;
   1568      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1569      1.1  christos     INT in_sr = -1;
   1570      1.1  christos     INT in_dr = -1;
   1571      1.1  christos     INT out_dr = -1;
   1572      1.1  christos     in_sr = FLD (in_src1);
   1573      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1574      1.1  christos   }
   1575      1.1  christos   return cycles;
   1576      1.1  christos #undef FLD
   1577      1.1  christos }
   1578      1.1  christos 
   1579      1.1  christos static int
   1580      1.1  christos model_m32r_d_mvtaclo (SIM_CPU *current_cpu, void *sem_arg)
   1581      1.1  christos {
   1582      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   1583      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1584      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1585      1.1  christos   int cycles = 0;
   1586      1.1  christos   {
   1587      1.1  christos     int referenced = 0;
   1588      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1589      1.1  christos     INT in_sr = -1;
   1590      1.1  christos     INT in_dr = -1;
   1591      1.1  christos     INT out_dr = -1;
   1592      1.1  christos     in_sr = FLD (in_src1);
   1593      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1594      1.1  christos   }
   1595      1.1  christos   return cycles;
   1596      1.1  christos #undef FLD
   1597      1.1  christos }
   1598      1.1  christos 
   1599      1.1  christos static int
   1600      1.1  christos model_m32r_d_mvtc (SIM_CPU *current_cpu, void *sem_arg)
   1601      1.1  christos {
   1602      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1603      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1604      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1605      1.1  christos   int cycles = 0;
   1606      1.1  christos   {
   1607      1.1  christos     int referenced = 0;
   1608      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1609      1.1  christos     INT in_sr = -1;
   1610      1.1  christos     INT in_dr = -1;
   1611      1.1  christos     INT out_dr = -1;
   1612      1.1  christos     in_sr = FLD (in_sr);
   1613      1.1  christos     referenced |= 1 << 0;
   1614      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1615      1.1  christos   }
   1616      1.1  christos   return cycles;
   1617      1.1  christos #undef FLD
   1618      1.1  christos }
   1619      1.1  christos 
   1620      1.1  christos static int
   1621      1.1  christos model_m32r_d_neg (SIM_CPU *current_cpu, void *sem_arg)
   1622      1.1  christos {
   1623      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1624      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1625      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1626      1.1  christos   int cycles = 0;
   1627      1.1  christos   {
   1628      1.1  christos     int referenced = 0;
   1629      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1630      1.1  christos     INT in_sr = -1;
   1631      1.1  christos     INT in_dr = -1;
   1632      1.1  christos     INT out_dr = -1;
   1633      1.1  christos     in_sr = FLD (in_sr);
   1634      1.1  christos     out_dr = FLD (out_dr);
   1635      1.1  christos     referenced |= 1 << 0;
   1636      1.1  christos     referenced |= 1 << 2;
   1637      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1638      1.1  christos   }
   1639      1.1  christos   return cycles;
   1640      1.1  christos #undef FLD
   1641      1.1  christos }
   1642      1.1  christos 
   1643      1.1  christos static int
   1644      1.1  christos model_m32r_d_nop (SIM_CPU *current_cpu, void *sem_arg)
   1645      1.1  christos {
   1646      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   1647      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1648      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1649      1.1  christos   int cycles = 0;
   1650      1.1  christos   {
   1651      1.1  christos     int referenced = 0;
   1652      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1653      1.1  christos     INT in_sr = -1;
   1654      1.1  christos     INT in_dr = -1;
   1655      1.1  christos     INT out_dr = -1;
   1656      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1657      1.1  christos   }
   1658      1.1  christos   return cycles;
   1659      1.1  christos #undef FLD
   1660      1.1  christos }
   1661      1.1  christos 
   1662      1.1  christos static int
   1663      1.1  christos model_m32r_d_not (SIM_CPU *current_cpu, void *sem_arg)
   1664      1.1  christos {
   1665      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1666      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1667      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1668      1.1  christos   int cycles = 0;
   1669      1.1  christos   {
   1670      1.1  christos     int referenced = 0;
   1671      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1672      1.1  christos     INT in_sr = -1;
   1673      1.1  christos     INT in_dr = -1;
   1674      1.1  christos     INT out_dr = -1;
   1675      1.1  christos     in_sr = FLD (in_sr);
   1676      1.1  christos     out_dr = FLD (out_dr);
   1677      1.1  christos     referenced |= 1 << 0;
   1678      1.1  christos     referenced |= 1 << 2;
   1679      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1680      1.1  christos   }
   1681      1.1  christos   return cycles;
   1682      1.1  christos #undef FLD
   1683      1.1  christos }
   1684      1.1  christos 
   1685      1.1  christos static int
   1686      1.1  christos model_m32r_d_rac (SIM_CPU *current_cpu, void *sem_arg)
   1687      1.1  christos {
   1688      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   1689      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1690      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1691      1.1  christos   int cycles = 0;
   1692      1.1  christos   {
   1693      1.1  christos     int referenced = 0;
   1694      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1695      1.1  christos     INT in_src1 = -1;
   1696      1.1  christos     INT in_src2 = -1;
   1697      1.1  christos     cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1698      1.1  christos   }
   1699      1.1  christos   return cycles;
   1700      1.1  christos #undef FLD
   1701      1.1  christos }
   1702      1.1  christos 
   1703      1.1  christos static int
   1704      1.1  christos model_m32r_d_rach (SIM_CPU *current_cpu, void *sem_arg)
   1705      1.1  christos {
   1706      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   1707      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1708      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1709      1.1  christos   int cycles = 0;
   1710      1.1  christos   {
   1711      1.1  christos     int referenced = 0;
   1712      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1713      1.1  christos     INT in_src1 = -1;
   1714      1.1  christos     INT in_src2 = -1;
   1715      1.1  christos     cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1716      1.1  christos   }
   1717      1.1  christos   return cycles;
   1718      1.1  christos #undef FLD
   1719      1.1  christos }
   1720      1.1  christos 
   1721      1.1  christos static int
   1722      1.1  christos model_m32r_d_rte (SIM_CPU *current_cpu, void *sem_arg)
   1723      1.1  christos {
   1724      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   1725      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1726      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1727      1.1  christos   int cycles = 0;
   1728      1.1  christos   {
   1729      1.1  christos     int referenced = 0;
   1730      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1731      1.1  christos     INT in_sr = -1;
   1732      1.1  christos     INT in_dr = -1;
   1733      1.1  christos     INT out_dr = -1;
   1734      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1735      1.1  christos   }
   1736      1.1  christos   return cycles;
   1737      1.1  christos #undef FLD
   1738      1.1  christos }
   1739      1.1  christos 
   1740      1.1  christos static int
   1741      1.1  christos model_m32r_d_seth (SIM_CPU *current_cpu, void *sem_arg)
   1742      1.1  christos {
   1743      1.1  christos #define FLD(f) abuf->fields.sfmt_seth.f
   1744      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1745      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1746      1.1  christos   int cycles = 0;
   1747      1.1  christos   {
   1748      1.1  christos     int referenced = 0;
   1749      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1750      1.1  christos     INT in_sr = -1;
   1751      1.1  christos     INT in_dr = -1;
   1752      1.1  christos     INT out_dr = -1;
   1753      1.1  christos     out_dr = FLD (out_dr);
   1754      1.1  christos     referenced |= 1 << 2;
   1755      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1756      1.1  christos   }
   1757      1.1  christos   return cycles;
   1758      1.1  christos #undef FLD
   1759      1.1  christos }
   1760      1.1  christos 
   1761      1.1  christos static int
   1762      1.1  christos model_m32r_d_sll (SIM_CPU *current_cpu, void *sem_arg)
   1763      1.1  christos {
   1764      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   1765      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1766      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1767      1.1  christos   int cycles = 0;
   1768      1.1  christos   {
   1769      1.1  christos     int referenced = 0;
   1770      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1771      1.1  christos     INT in_sr = -1;
   1772      1.1  christos     INT in_dr = -1;
   1773      1.1  christos     INT out_dr = -1;
   1774      1.1  christos     in_sr = FLD (in_sr);
   1775      1.1  christos     in_dr = FLD (in_dr);
   1776      1.1  christos     out_dr = FLD (out_dr);
   1777      1.1  christos     referenced |= 1 << 0;
   1778      1.1  christos     referenced |= 1 << 1;
   1779      1.1  christos     referenced |= 1 << 2;
   1780      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1781      1.1  christos   }
   1782      1.1  christos   return cycles;
   1783      1.1  christos #undef FLD
   1784      1.1  christos }
   1785      1.1  christos 
   1786      1.1  christos static int
   1787      1.1  christos model_m32r_d_sll3 (SIM_CPU *current_cpu, void *sem_arg)
   1788      1.1  christos {
   1789      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   1790      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1791      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1792      1.1  christos   int cycles = 0;
   1793      1.1  christos   {
   1794      1.1  christos     int referenced = 0;
   1795      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1796      1.1  christos     INT in_sr = -1;
   1797      1.1  christos     INT in_dr = -1;
   1798      1.1  christos     INT out_dr = -1;
   1799      1.1  christos     in_sr = FLD (in_sr);
   1800      1.1  christos     out_dr = FLD (out_dr);
   1801      1.1  christos     referenced |= 1 << 0;
   1802      1.1  christos     referenced |= 1 << 2;
   1803      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1804      1.1  christos   }
   1805      1.1  christos   return cycles;
   1806      1.1  christos #undef FLD
   1807      1.1  christos }
   1808      1.1  christos 
   1809      1.1  christos static int
   1810      1.1  christos model_m32r_d_slli (SIM_CPU *current_cpu, void *sem_arg)
   1811      1.1  christos {
   1812      1.1  christos #define FLD(f) abuf->fields.sfmt_slli.f
   1813      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1814      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1815      1.1  christos   int cycles = 0;
   1816      1.1  christos   {
   1817      1.1  christos     int referenced = 0;
   1818      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1819      1.1  christos     INT in_sr = -1;
   1820      1.1  christos     INT in_dr = -1;
   1821      1.1  christos     INT out_dr = -1;
   1822      1.1  christos     in_dr = FLD (in_dr);
   1823      1.1  christos     out_dr = FLD (out_dr);
   1824      1.1  christos     referenced |= 1 << 1;
   1825      1.1  christos     referenced |= 1 << 2;
   1826      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1827      1.1  christos   }
   1828      1.1  christos   return cycles;
   1829      1.1  christos #undef FLD
   1830      1.1  christos }
   1831      1.1  christos 
   1832      1.1  christos static int
   1833      1.1  christos model_m32r_d_sra (SIM_CPU *current_cpu, void *sem_arg)
   1834      1.1  christos {
   1835      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   1836      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1837      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1838      1.1  christos   int cycles = 0;
   1839      1.1  christos   {
   1840      1.1  christos     int referenced = 0;
   1841      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1842      1.1  christos     INT in_sr = -1;
   1843      1.1  christos     INT in_dr = -1;
   1844      1.1  christos     INT out_dr = -1;
   1845      1.1  christos     in_sr = FLD (in_sr);
   1846      1.1  christos     in_dr = FLD (in_dr);
   1847      1.1  christos     out_dr = FLD (out_dr);
   1848      1.1  christos     referenced |= 1 << 0;
   1849      1.1  christos     referenced |= 1 << 1;
   1850      1.1  christos     referenced |= 1 << 2;
   1851      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1852      1.1  christos   }
   1853      1.1  christos   return cycles;
   1854      1.1  christos #undef FLD
   1855      1.1  christos }
   1856      1.1  christos 
   1857      1.1  christos static int
   1858      1.1  christos model_m32r_d_sra3 (SIM_CPU *current_cpu, void *sem_arg)
   1859      1.1  christos {
   1860      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   1861      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1862      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1863      1.1  christos   int cycles = 0;
   1864      1.1  christos   {
   1865      1.1  christos     int referenced = 0;
   1866      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1867      1.1  christos     INT in_sr = -1;
   1868      1.1  christos     INT in_dr = -1;
   1869      1.1  christos     INT out_dr = -1;
   1870      1.1  christos     in_sr = FLD (in_sr);
   1871      1.1  christos     out_dr = FLD (out_dr);
   1872      1.1  christos     referenced |= 1 << 0;
   1873      1.1  christos     referenced |= 1 << 2;
   1874      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1875      1.1  christos   }
   1876      1.1  christos   return cycles;
   1877      1.1  christos #undef FLD
   1878      1.1  christos }
   1879      1.1  christos 
   1880      1.1  christos static int
   1881      1.1  christos model_m32r_d_srai (SIM_CPU *current_cpu, void *sem_arg)
   1882      1.1  christos {
   1883      1.1  christos #define FLD(f) abuf->fields.sfmt_slli.f
   1884      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1885      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1886      1.1  christos   int cycles = 0;
   1887      1.1  christos   {
   1888      1.1  christos     int referenced = 0;
   1889      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1890      1.1  christos     INT in_sr = -1;
   1891      1.1  christos     INT in_dr = -1;
   1892      1.1  christos     INT out_dr = -1;
   1893      1.1  christos     in_dr = FLD (in_dr);
   1894      1.1  christos     out_dr = FLD (out_dr);
   1895      1.1  christos     referenced |= 1 << 1;
   1896      1.1  christos     referenced |= 1 << 2;
   1897      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1898      1.1  christos   }
   1899      1.1  christos   return cycles;
   1900      1.1  christos #undef FLD
   1901      1.1  christos }
   1902      1.1  christos 
   1903      1.1  christos static int
   1904      1.1  christos model_m32r_d_srl (SIM_CPU *current_cpu, void *sem_arg)
   1905      1.1  christos {
   1906      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   1907      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1908      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1909      1.1  christos   int cycles = 0;
   1910      1.1  christos   {
   1911      1.1  christos     int referenced = 0;
   1912      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1913      1.1  christos     INT in_sr = -1;
   1914      1.1  christos     INT in_dr = -1;
   1915      1.1  christos     INT out_dr = -1;
   1916      1.1  christos     in_sr = FLD (in_sr);
   1917      1.1  christos     in_dr = FLD (in_dr);
   1918      1.1  christos     out_dr = FLD (out_dr);
   1919      1.1  christos     referenced |= 1 << 0;
   1920      1.1  christos     referenced |= 1 << 1;
   1921      1.1  christos     referenced |= 1 << 2;
   1922      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1923      1.1  christos   }
   1924      1.1  christos   return cycles;
   1925      1.1  christos #undef FLD
   1926      1.1  christos }
   1927      1.1  christos 
   1928      1.1  christos static int
   1929      1.1  christos model_m32r_d_srl3 (SIM_CPU *current_cpu, void *sem_arg)
   1930      1.1  christos {
   1931      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   1932      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1933      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1934      1.1  christos   int cycles = 0;
   1935      1.1  christos   {
   1936      1.1  christos     int referenced = 0;
   1937      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1938      1.1  christos     INT in_sr = -1;
   1939      1.1  christos     INT in_dr = -1;
   1940      1.1  christos     INT out_dr = -1;
   1941      1.1  christos     in_sr = FLD (in_sr);
   1942      1.1  christos     out_dr = FLD (out_dr);
   1943      1.1  christos     referenced |= 1 << 0;
   1944      1.1  christos     referenced |= 1 << 2;
   1945      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1946      1.1  christos   }
   1947      1.1  christos   return cycles;
   1948      1.1  christos #undef FLD
   1949      1.1  christos }
   1950      1.1  christos 
   1951      1.1  christos static int
   1952      1.1  christos model_m32r_d_srli (SIM_CPU *current_cpu, void *sem_arg)
   1953      1.1  christos {
   1954      1.1  christos #define FLD(f) abuf->fields.sfmt_slli.f
   1955      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1956      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1957      1.1  christos   int cycles = 0;
   1958      1.1  christos   {
   1959      1.1  christos     int referenced = 0;
   1960      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1961      1.1  christos     INT in_sr = -1;
   1962      1.1  christos     INT in_dr = -1;
   1963      1.1  christos     INT out_dr = -1;
   1964      1.1  christos     in_dr = FLD (in_dr);
   1965      1.1  christos     out_dr = FLD (out_dr);
   1966      1.1  christos     referenced |= 1 << 1;
   1967      1.1  christos     referenced |= 1 << 2;
   1968      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1969      1.1  christos   }
   1970      1.1  christos   return cycles;
   1971      1.1  christos #undef FLD
   1972      1.1  christos }
   1973      1.1  christos 
   1974      1.1  christos static int
   1975      1.1  christos model_m32r_d_st (SIM_CPU *current_cpu, void *sem_arg)
   1976      1.1  christos {
   1977      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   1978      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1979      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1980      1.1  christos   int cycles = 0;
   1981      1.1  christos   {
   1982      1.1  christos     int referenced = 0;
   1983      1.1  christos     int UNUSED insn_referenced = abuf->written;
   1984      1.1  christos     INT in_src1 = 0;
   1985      1.1  christos     INT in_src2 = 0;
   1986      1.1  christos     in_src1 = FLD (in_src1);
   1987      1.1  christos     in_src2 = FLD (in_src2);
   1988      1.1  christos     referenced |= 1 << 0;
   1989      1.1  christos     referenced |= 1 << 1;
   1990      1.1  christos     cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1991      1.1  christos   }
   1992      1.1  christos   return cycles;
   1993      1.1  christos #undef FLD
   1994      1.1  christos }
   1995      1.1  christos 
   1996      1.1  christos static int
   1997      1.1  christos model_m32r_d_st_d (SIM_CPU *current_cpu, void *sem_arg)
   1998      1.1  christos {
   1999      1.1  christos #define FLD(f) abuf->fields.sfmt_st_d.f
   2000      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2001      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2002      1.1  christos   int cycles = 0;
   2003      1.1  christos   {
   2004      1.1  christos     int referenced = 0;
   2005      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2006      1.1  christos     INT in_src1 = 0;
   2007      1.1  christos     INT in_src2 = 0;
   2008      1.1  christos     in_src1 = FLD (in_src1);
   2009      1.1  christos     in_src2 = FLD (in_src2);
   2010      1.1  christos     referenced |= 1 << 0;
   2011      1.1  christos     referenced |= 1 << 1;
   2012      1.1  christos     cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2013      1.1  christos   }
   2014      1.1  christos   return cycles;
   2015      1.1  christos #undef FLD
   2016      1.1  christos }
   2017      1.1  christos 
   2018      1.1  christos static int
   2019      1.1  christos model_m32r_d_stb (SIM_CPU *current_cpu, void *sem_arg)
   2020      1.1  christos {
   2021      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2022      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2023      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2024      1.1  christos   int cycles = 0;
   2025      1.1  christos   {
   2026      1.1  christos     int referenced = 0;
   2027      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2028      1.1  christos     INT in_src1 = 0;
   2029      1.1  christos     INT in_src2 = 0;
   2030      1.1  christos     in_src1 = FLD (in_src1);
   2031      1.1  christos     in_src2 = FLD (in_src2);
   2032      1.1  christos     referenced |= 1 << 0;
   2033      1.1  christos     referenced |= 1 << 1;
   2034      1.1  christos     cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2035      1.1  christos   }
   2036      1.1  christos   return cycles;
   2037      1.1  christos #undef FLD
   2038      1.1  christos }
   2039      1.1  christos 
   2040      1.1  christos static int
   2041      1.1  christos model_m32r_d_stb_d (SIM_CPU *current_cpu, void *sem_arg)
   2042      1.1  christos {
   2043      1.1  christos #define FLD(f) abuf->fields.sfmt_st_d.f
   2044      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2045      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2046      1.1  christos   int cycles = 0;
   2047      1.1  christos   {
   2048      1.1  christos     int referenced = 0;
   2049      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2050      1.1  christos     INT in_src1 = 0;
   2051      1.1  christos     INT in_src2 = 0;
   2052      1.1  christos     in_src1 = FLD (in_src1);
   2053      1.1  christos     in_src2 = FLD (in_src2);
   2054      1.1  christos     referenced |= 1 << 0;
   2055      1.1  christos     referenced |= 1 << 1;
   2056      1.1  christos     cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2057      1.1  christos   }
   2058      1.1  christos   return cycles;
   2059      1.1  christos #undef FLD
   2060      1.1  christos }
   2061      1.1  christos 
   2062      1.1  christos static int
   2063      1.1  christos model_m32r_d_sth (SIM_CPU *current_cpu, void *sem_arg)
   2064      1.1  christos {
   2065      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2066      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2067      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2068      1.1  christos   int cycles = 0;
   2069      1.1  christos   {
   2070      1.1  christos     int referenced = 0;
   2071      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2072      1.1  christos     INT in_src1 = 0;
   2073      1.1  christos     INT in_src2 = 0;
   2074      1.1  christos     in_src1 = FLD (in_src1);
   2075      1.1  christos     in_src2 = FLD (in_src2);
   2076      1.1  christos     referenced |= 1 << 0;
   2077      1.1  christos     referenced |= 1 << 1;
   2078      1.1  christos     cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2079      1.1  christos   }
   2080      1.1  christos   return cycles;
   2081      1.1  christos #undef FLD
   2082      1.1  christos }
   2083      1.1  christos 
   2084      1.1  christos static int
   2085      1.1  christos model_m32r_d_sth_d (SIM_CPU *current_cpu, void *sem_arg)
   2086      1.1  christos {
   2087      1.1  christos #define FLD(f) abuf->fields.sfmt_st_d.f
   2088      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2089      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2090      1.1  christos   int cycles = 0;
   2091      1.1  christos   {
   2092      1.1  christos     int referenced = 0;
   2093      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2094      1.1  christos     INT in_src1 = 0;
   2095      1.1  christos     INT in_src2 = 0;
   2096      1.1  christos     in_src1 = FLD (in_src1);
   2097      1.1  christos     in_src2 = FLD (in_src2);
   2098      1.1  christos     referenced |= 1 << 0;
   2099      1.1  christos     referenced |= 1 << 1;
   2100      1.1  christos     cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2101      1.1  christos   }
   2102      1.1  christos   return cycles;
   2103      1.1  christos #undef FLD
   2104      1.1  christos }
   2105      1.1  christos 
   2106      1.1  christos static int
   2107      1.1  christos model_m32r_d_st_plus (SIM_CPU *current_cpu, void *sem_arg)
   2108      1.1  christos {
   2109      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2110      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2111      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2112      1.1  christos   int cycles = 0;
   2113      1.1  christos   {
   2114      1.1  christos     int referenced = 0;
   2115      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2116      1.1  christos     INT in_src1 = 0;
   2117      1.1  christos     INT in_src2 = 0;
   2118      1.1  christos     in_src1 = FLD (in_src1);
   2119      1.1  christos     in_src2 = FLD (in_src2);
   2120      1.1  christos     referenced |= 1 << 0;
   2121      1.1  christos     referenced |= 1 << 1;
   2122      1.1  christos     cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2123      1.1  christos   }
   2124      1.1  christos   {
   2125      1.1  christos     int referenced = 0;
   2126      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2127      1.1  christos     INT in_sr = -1;
   2128      1.1  christos     INT in_dr = -1;
   2129      1.1  christos     INT out_dr = -1;
   2130      1.1  christos     in_dr = FLD (in_src2);
   2131      1.1  christos     out_dr = FLD (out_src2);
   2132      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
   2133      1.1  christos   }
   2134      1.1  christos   return cycles;
   2135      1.1  christos #undef FLD
   2136      1.1  christos }
   2137      1.1  christos 
   2138      1.1  christos static int
   2139      1.1  christos model_m32r_d_st_minus (SIM_CPU *current_cpu, void *sem_arg)
   2140      1.1  christos {
   2141      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2142      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2143      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2144      1.1  christos   int cycles = 0;
   2145      1.1  christos   {
   2146      1.1  christos     int referenced = 0;
   2147      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2148      1.1  christos     INT in_src1 = 0;
   2149      1.1  christos     INT in_src2 = 0;
   2150      1.1  christos     in_src1 = FLD (in_src1);
   2151      1.1  christos     in_src2 = FLD (in_src2);
   2152      1.1  christos     referenced |= 1 << 0;
   2153      1.1  christos     referenced |= 1 << 1;
   2154      1.1  christos     cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2155      1.1  christos   }
   2156      1.1  christos   {
   2157      1.1  christos     int referenced = 0;
   2158      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2159      1.1  christos     INT in_sr = -1;
   2160      1.1  christos     INT in_dr = -1;
   2161      1.1  christos     INT out_dr = -1;
   2162      1.1  christos     in_dr = FLD (in_src2);
   2163      1.1  christos     out_dr = FLD (out_src2);
   2164      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
   2165      1.1  christos   }
   2166      1.1  christos   return cycles;
   2167      1.1  christos #undef FLD
   2168      1.1  christos }
   2169      1.1  christos 
   2170      1.1  christos static int
   2171      1.1  christos model_m32r_d_sub (SIM_CPU *current_cpu, void *sem_arg)
   2172      1.1  christos {
   2173      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2174      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2175      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2176      1.1  christos   int cycles = 0;
   2177      1.1  christos   {
   2178      1.1  christos     int referenced = 0;
   2179      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2180      1.1  christos     INT in_sr = -1;
   2181      1.1  christos     INT in_dr = -1;
   2182      1.1  christos     INT out_dr = -1;
   2183      1.1  christos     in_sr = FLD (in_sr);
   2184      1.1  christos     in_dr = FLD (in_dr);
   2185      1.1  christos     out_dr = FLD (out_dr);
   2186      1.1  christos     referenced |= 1 << 0;
   2187      1.1  christos     referenced |= 1 << 1;
   2188      1.1  christos     referenced |= 1 << 2;
   2189      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2190      1.1  christos   }
   2191      1.1  christos   return cycles;
   2192      1.1  christos #undef FLD
   2193      1.1  christos }
   2194      1.1  christos 
   2195      1.1  christos static int
   2196      1.1  christos model_m32r_d_subv (SIM_CPU *current_cpu, void *sem_arg)
   2197      1.1  christos {
   2198      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2199      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2200      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2201      1.1  christos   int cycles = 0;
   2202      1.1  christos   {
   2203      1.1  christos     int referenced = 0;
   2204      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2205      1.1  christos     INT in_sr = -1;
   2206      1.1  christos     INT in_dr = -1;
   2207      1.1  christos     INT out_dr = -1;
   2208      1.1  christos     in_sr = FLD (in_sr);
   2209      1.1  christos     in_dr = FLD (in_dr);
   2210      1.1  christos     out_dr = FLD (out_dr);
   2211      1.1  christos     referenced |= 1 << 0;
   2212      1.1  christos     referenced |= 1 << 1;
   2213      1.1  christos     referenced |= 1 << 2;
   2214      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2215      1.1  christos   }
   2216      1.1  christos   return cycles;
   2217      1.1  christos #undef FLD
   2218      1.1  christos }
   2219      1.1  christos 
   2220      1.1  christos static int
   2221      1.1  christos model_m32r_d_subx (SIM_CPU *current_cpu, void *sem_arg)
   2222      1.1  christos {
   2223      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2224      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2225      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2226      1.1  christos   int cycles = 0;
   2227      1.1  christos   {
   2228      1.1  christos     int referenced = 0;
   2229      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2230      1.1  christos     INT in_sr = -1;
   2231      1.1  christos     INT in_dr = -1;
   2232      1.1  christos     INT out_dr = -1;
   2233      1.1  christos     in_sr = FLD (in_sr);
   2234      1.1  christos     in_dr = FLD (in_dr);
   2235      1.1  christos     out_dr = FLD (out_dr);
   2236      1.1  christos     referenced |= 1 << 0;
   2237      1.1  christos     referenced |= 1 << 1;
   2238      1.1  christos     referenced |= 1 << 2;
   2239      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2240      1.1  christos   }
   2241      1.1  christos   return cycles;
   2242      1.1  christos #undef FLD
   2243      1.1  christos }
   2244      1.1  christos 
   2245      1.1  christos static int
   2246      1.1  christos model_m32r_d_trap (SIM_CPU *current_cpu, void *sem_arg)
   2247      1.1  christos {
   2248      1.1  christos #define FLD(f) abuf->fields.sfmt_trap.f
   2249      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2250      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2251      1.1  christos   int cycles = 0;
   2252      1.1  christos   {
   2253      1.1  christos     int referenced = 0;
   2254      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2255      1.1  christos     INT in_sr = -1;
   2256      1.1  christos     INT in_dr = -1;
   2257      1.1  christos     INT out_dr = -1;
   2258      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2259      1.1  christos   }
   2260      1.1  christos   return cycles;
   2261      1.1  christos #undef FLD
   2262      1.1  christos }
   2263      1.1  christos 
   2264      1.1  christos static int
   2265      1.1  christos model_m32r_d_unlock (SIM_CPU *current_cpu, void *sem_arg)
   2266      1.1  christos {
   2267      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2268      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2269      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2270      1.1  christos   int cycles = 0;
   2271      1.1  christos   {
   2272      1.1  christos     int referenced = 0;
   2273      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2274      1.1  christos     INT in_sr = 0;
   2275      1.1  christos     INT out_dr = 0;
   2276      1.1  christos     cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   2277      1.1  christos   }
   2278      1.1  christos   return cycles;
   2279      1.1  christos #undef FLD
   2280      1.1  christos }
   2281      1.1  christos 
   2282      1.1  christos static int
   2283      1.1  christos model_m32r_d_clrpsw (SIM_CPU *current_cpu, void *sem_arg)
   2284      1.1  christos {
   2285      1.1  christos #define FLD(f) abuf->fields.sfmt_clrpsw.f
   2286      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2287      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2288      1.1  christos   int cycles = 0;
   2289      1.1  christos   {
   2290      1.1  christos     int referenced = 0;
   2291      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2292      1.1  christos     INT in_sr = -1;
   2293      1.1  christos     INT in_dr = -1;
   2294      1.1  christos     INT out_dr = -1;
   2295      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2296      1.1  christos   }
   2297      1.1  christos   return cycles;
   2298      1.1  christos #undef FLD
   2299      1.1  christos }
   2300      1.1  christos 
   2301      1.1  christos static int
   2302      1.1  christos model_m32r_d_setpsw (SIM_CPU *current_cpu, void *sem_arg)
   2303      1.1  christos {
   2304      1.1  christos #define FLD(f) abuf->fields.sfmt_clrpsw.f
   2305      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2306      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2307      1.1  christos   int cycles = 0;
   2308      1.1  christos   {
   2309      1.1  christos     int referenced = 0;
   2310      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2311      1.1  christos     INT in_sr = -1;
   2312      1.1  christos     INT in_dr = -1;
   2313      1.1  christos     INT out_dr = -1;
   2314      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2315      1.1  christos   }
   2316      1.1  christos   return cycles;
   2317      1.1  christos #undef FLD
   2318      1.1  christos }
   2319      1.1  christos 
   2320      1.1  christos static int
   2321      1.1  christos model_m32r_d_bset (SIM_CPU *current_cpu, void *sem_arg)
   2322      1.1  christos {
   2323      1.1  christos #define FLD(f) abuf->fields.sfmt_bset.f
   2324      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2325      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2326      1.1  christos   int cycles = 0;
   2327      1.1  christos   {
   2328      1.1  christos     int referenced = 0;
   2329      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2330      1.1  christos     INT in_sr = -1;
   2331      1.1  christos     INT in_dr = -1;
   2332      1.1  christos     INT out_dr = -1;
   2333      1.1  christos     in_sr = FLD (in_sr);
   2334      1.1  christos     referenced |= 1 << 0;
   2335      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2336      1.1  christos   }
   2337      1.1  christos   return cycles;
   2338      1.1  christos #undef FLD
   2339      1.1  christos }
   2340      1.1  christos 
   2341      1.1  christos static int
   2342      1.1  christos model_m32r_d_bclr (SIM_CPU *current_cpu, void *sem_arg)
   2343      1.1  christos {
   2344      1.1  christos #define FLD(f) abuf->fields.sfmt_bset.f
   2345      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2346      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2347      1.1  christos   int cycles = 0;
   2348      1.1  christos   {
   2349      1.1  christos     int referenced = 0;
   2350      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2351      1.1  christos     INT in_sr = -1;
   2352      1.1  christos     INT in_dr = -1;
   2353      1.1  christos     INT out_dr = -1;
   2354      1.1  christos     in_sr = FLD (in_sr);
   2355      1.1  christos     referenced |= 1 << 0;
   2356      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2357      1.1  christos   }
   2358      1.1  christos   return cycles;
   2359      1.1  christos #undef FLD
   2360      1.1  christos }
   2361      1.1  christos 
   2362      1.1  christos static int
   2363      1.1  christos model_m32r_d_btst (SIM_CPU *current_cpu, void *sem_arg)
   2364      1.1  christos {
   2365      1.1  christos #define FLD(f) abuf->fields.sfmt_bset.f
   2366      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2367      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2368      1.1  christos   int cycles = 0;
   2369      1.1  christos   {
   2370      1.1  christos     int referenced = 0;
   2371      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2372      1.1  christos     INT in_sr = -1;
   2373      1.1  christos     INT in_dr = -1;
   2374      1.1  christos     INT out_dr = -1;
   2375      1.1  christos     in_sr = FLD (in_sr);
   2376      1.1  christos     referenced |= 1 << 0;
   2377      1.1  christos     cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2378      1.1  christos   }
   2379      1.1  christos   return cycles;
   2380      1.1  christos #undef FLD
   2381      1.1  christos }
   2382      1.1  christos 
   2383      1.1  christos static int
   2384      1.1  christos model_test_add (SIM_CPU *current_cpu, void *sem_arg)
   2385      1.1  christos {
   2386      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2387      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2388      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2389      1.1  christos   int cycles = 0;
   2390      1.1  christos   {
   2391      1.1  christos     int referenced = 0;
   2392      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2393      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2394      1.1  christos   }
   2395      1.1  christos   return cycles;
   2396      1.1  christos #undef FLD
   2397      1.1  christos }
   2398      1.1  christos 
   2399      1.1  christos static int
   2400      1.1  christos model_test_add3 (SIM_CPU *current_cpu, void *sem_arg)
   2401      1.1  christos {
   2402      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   2403      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2404      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2405      1.1  christos   int cycles = 0;
   2406      1.1  christos   {
   2407      1.1  christos     int referenced = 0;
   2408      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2409      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2410      1.1  christos   }
   2411      1.1  christos   return cycles;
   2412      1.1  christos #undef FLD
   2413      1.1  christos }
   2414      1.1  christos 
   2415      1.1  christos static int
   2416      1.1  christos model_test_and (SIM_CPU *current_cpu, void *sem_arg)
   2417      1.1  christos {
   2418      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2419      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2420      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2421      1.1  christos   int cycles = 0;
   2422      1.1  christos   {
   2423      1.1  christos     int referenced = 0;
   2424      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2425      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2426      1.1  christos   }
   2427      1.1  christos   return cycles;
   2428      1.1  christos #undef FLD
   2429      1.1  christos }
   2430      1.1  christos 
   2431      1.1  christos static int
   2432      1.1  christos model_test_and3 (SIM_CPU *current_cpu, void *sem_arg)
   2433      1.1  christos {
   2434      1.1  christos #define FLD(f) abuf->fields.sfmt_and3.f
   2435      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2436      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2437      1.1  christos   int cycles = 0;
   2438      1.1  christos   {
   2439      1.1  christos     int referenced = 0;
   2440      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2441      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2442      1.1  christos   }
   2443      1.1  christos   return cycles;
   2444      1.1  christos #undef FLD
   2445      1.1  christos }
   2446      1.1  christos 
   2447      1.1  christos static int
   2448      1.1  christos model_test_or (SIM_CPU *current_cpu, void *sem_arg)
   2449      1.1  christos {
   2450      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2451      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2452      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2453      1.1  christos   int cycles = 0;
   2454      1.1  christos   {
   2455      1.1  christos     int referenced = 0;
   2456      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2457      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   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_test_or3 (SIM_CPU *current_cpu, void *sem_arg)
   2465      1.1  christos {
   2466      1.1  christos #define FLD(f) abuf->fields.sfmt_and3.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     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2474      1.1  christos   }
   2475      1.1  christos   return cycles;
   2476      1.1  christos #undef FLD
   2477      1.1  christos }
   2478      1.1  christos 
   2479      1.1  christos static int
   2480      1.1  christos model_test_xor (SIM_CPU *current_cpu, void *sem_arg)
   2481      1.1  christos {
   2482      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2483      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2484      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2485      1.1  christos   int cycles = 0;
   2486      1.1  christos   {
   2487      1.1  christos     int referenced = 0;
   2488      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2489      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2490      1.1  christos   }
   2491      1.1  christos   return cycles;
   2492      1.1  christos #undef FLD
   2493      1.1  christos }
   2494      1.1  christos 
   2495      1.1  christos static int
   2496      1.1  christos model_test_xor3 (SIM_CPU *current_cpu, void *sem_arg)
   2497      1.1  christos {
   2498      1.1  christos #define FLD(f) abuf->fields.sfmt_and3.f
   2499      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2500      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2501      1.1  christos   int cycles = 0;
   2502      1.1  christos   {
   2503      1.1  christos     int referenced = 0;
   2504      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2505      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2506      1.1  christos   }
   2507      1.1  christos   return cycles;
   2508      1.1  christos #undef FLD
   2509      1.1  christos }
   2510      1.1  christos 
   2511      1.1  christos static int
   2512      1.1  christos model_test_addi (SIM_CPU *current_cpu, void *sem_arg)
   2513      1.1  christos {
   2514      1.1  christos #define FLD(f) abuf->fields.sfmt_addi.f
   2515      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2516      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2517      1.1  christos   int cycles = 0;
   2518      1.1  christos   {
   2519      1.1  christos     int referenced = 0;
   2520      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2521      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2522      1.1  christos   }
   2523      1.1  christos   return cycles;
   2524      1.1  christos #undef FLD
   2525      1.1  christos }
   2526      1.1  christos 
   2527      1.1  christos static int
   2528      1.1  christos model_test_addv (SIM_CPU *current_cpu, void *sem_arg)
   2529      1.1  christos {
   2530      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2531      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2532      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2533      1.1  christos   int cycles = 0;
   2534      1.1  christos   {
   2535      1.1  christos     int referenced = 0;
   2536      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2537      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2538      1.1  christos   }
   2539      1.1  christos   return cycles;
   2540      1.1  christos #undef FLD
   2541      1.1  christos }
   2542      1.1  christos 
   2543      1.1  christos static int
   2544      1.1  christos model_test_addv3 (SIM_CPU *current_cpu, void *sem_arg)
   2545      1.1  christos {
   2546      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   2547      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2548      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2549      1.1  christos   int cycles = 0;
   2550      1.1  christos   {
   2551      1.1  christos     int referenced = 0;
   2552      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2553      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2554      1.1  christos   }
   2555      1.1  christos   return cycles;
   2556      1.1  christos #undef FLD
   2557      1.1  christos }
   2558      1.1  christos 
   2559      1.1  christos static int
   2560      1.1  christos model_test_addx (SIM_CPU *current_cpu, void *sem_arg)
   2561      1.1  christos {
   2562      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2563      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2564      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2565      1.1  christos   int cycles = 0;
   2566      1.1  christos   {
   2567      1.1  christos     int referenced = 0;
   2568      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2569      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2570      1.1  christos   }
   2571      1.1  christos   return cycles;
   2572      1.1  christos #undef FLD
   2573      1.1  christos }
   2574      1.1  christos 
   2575      1.1  christos static int
   2576      1.1  christos model_test_bc8 (SIM_CPU *current_cpu, void *sem_arg)
   2577      1.1  christos {
   2578      1.1  christos #define FLD(f) abuf->fields.sfmt_bl8.f
   2579      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2580      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2581      1.1  christos   int cycles = 0;
   2582      1.1  christos   {
   2583      1.1  christos     int referenced = 0;
   2584      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2585      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2586      1.1  christos   }
   2587      1.1  christos   return cycles;
   2588      1.1  christos #undef FLD
   2589      1.1  christos }
   2590      1.1  christos 
   2591      1.1  christos static int
   2592      1.1  christos model_test_bc24 (SIM_CPU *current_cpu, void *sem_arg)
   2593      1.1  christos {
   2594      1.1  christos #define FLD(f) abuf->fields.sfmt_bl24.f
   2595      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2596      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2597      1.1  christos   int cycles = 0;
   2598      1.1  christos   {
   2599      1.1  christos     int referenced = 0;
   2600      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2601      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2602      1.1  christos   }
   2603      1.1  christos   return cycles;
   2604      1.1  christos #undef FLD
   2605      1.1  christos }
   2606      1.1  christos 
   2607      1.1  christos static int
   2608      1.1  christos model_test_beq (SIM_CPU *current_cpu, void *sem_arg)
   2609      1.1  christos {
   2610      1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
   2611      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2612      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2613      1.1  christos   int cycles = 0;
   2614      1.1  christos   {
   2615      1.1  christos     int referenced = 0;
   2616      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2617      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2618      1.1  christos   }
   2619      1.1  christos   return cycles;
   2620      1.1  christos #undef FLD
   2621      1.1  christos }
   2622      1.1  christos 
   2623      1.1  christos static int
   2624      1.1  christos model_test_beqz (SIM_CPU *current_cpu, void *sem_arg)
   2625      1.1  christos {
   2626      1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
   2627      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2628      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2629      1.1  christos   int cycles = 0;
   2630      1.1  christos   {
   2631      1.1  christos     int referenced = 0;
   2632      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2633      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2634      1.1  christos   }
   2635      1.1  christos   return cycles;
   2636      1.1  christos #undef FLD
   2637      1.1  christos }
   2638      1.1  christos 
   2639      1.1  christos static int
   2640      1.1  christos model_test_bgez (SIM_CPU *current_cpu, void *sem_arg)
   2641      1.1  christos {
   2642      1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
   2643      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2644      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2645      1.1  christos   int cycles = 0;
   2646      1.1  christos   {
   2647      1.1  christos     int referenced = 0;
   2648      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2649      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2650      1.1  christos   }
   2651      1.1  christos   return cycles;
   2652      1.1  christos #undef FLD
   2653      1.1  christos }
   2654      1.1  christos 
   2655      1.1  christos static int
   2656      1.1  christos model_test_bgtz (SIM_CPU *current_cpu, void *sem_arg)
   2657      1.1  christos {
   2658      1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
   2659      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2660      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2661      1.1  christos   int cycles = 0;
   2662      1.1  christos   {
   2663      1.1  christos     int referenced = 0;
   2664      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2665      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2666      1.1  christos   }
   2667      1.1  christos   return cycles;
   2668      1.1  christos #undef FLD
   2669      1.1  christos }
   2670      1.1  christos 
   2671      1.1  christos static int
   2672      1.1  christos model_test_blez (SIM_CPU *current_cpu, void *sem_arg)
   2673      1.1  christos {
   2674      1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
   2675      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2676      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2677      1.1  christos   int cycles = 0;
   2678      1.1  christos   {
   2679      1.1  christos     int referenced = 0;
   2680      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2681      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2682      1.1  christos   }
   2683      1.1  christos   return cycles;
   2684      1.1  christos #undef FLD
   2685      1.1  christos }
   2686      1.1  christos 
   2687      1.1  christos static int
   2688      1.1  christos model_test_bltz (SIM_CPU *current_cpu, void *sem_arg)
   2689      1.1  christos {
   2690      1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
   2691      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2692      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2693      1.1  christos   int cycles = 0;
   2694      1.1  christos   {
   2695      1.1  christos     int referenced = 0;
   2696      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2697      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2698      1.1  christos   }
   2699      1.1  christos   return cycles;
   2700      1.1  christos #undef FLD
   2701      1.1  christos }
   2702      1.1  christos 
   2703      1.1  christos static int
   2704      1.1  christos model_test_bnez (SIM_CPU *current_cpu, void *sem_arg)
   2705      1.1  christos {
   2706      1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
   2707      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2708      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2709      1.1  christos   int cycles = 0;
   2710      1.1  christos   {
   2711      1.1  christos     int referenced = 0;
   2712      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2713      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2714      1.1  christos   }
   2715      1.1  christos   return cycles;
   2716      1.1  christos #undef FLD
   2717      1.1  christos }
   2718      1.1  christos 
   2719      1.1  christos static int
   2720      1.1  christos model_test_bl8 (SIM_CPU *current_cpu, void *sem_arg)
   2721      1.1  christos {
   2722      1.1  christos #define FLD(f) abuf->fields.sfmt_bl8.f
   2723      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2724      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2725      1.1  christos   int cycles = 0;
   2726      1.1  christos   {
   2727      1.1  christos     int referenced = 0;
   2728      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2729      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2730      1.1  christos   }
   2731      1.1  christos   return cycles;
   2732      1.1  christos #undef FLD
   2733      1.1  christos }
   2734      1.1  christos 
   2735      1.1  christos static int
   2736      1.1  christos model_test_bl24 (SIM_CPU *current_cpu, void *sem_arg)
   2737      1.1  christos {
   2738      1.1  christos #define FLD(f) abuf->fields.sfmt_bl24.f
   2739      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2740      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2741      1.1  christos   int cycles = 0;
   2742      1.1  christos   {
   2743      1.1  christos     int referenced = 0;
   2744      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2745      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2746      1.1  christos   }
   2747      1.1  christos   return cycles;
   2748      1.1  christos #undef FLD
   2749      1.1  christos }
   2750      1.1  christos 
   2751      1.1  christos static int
   2752      1.1  christos model_test_bnc8 (SIM_CPU *current_cpu, void *sem_arg)
   2753      1.1  christos {
   2754      1.1  christos #define FLD(f) abuf->fields.sfmt_bl8.f
   2755      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2756      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2757      1.1  christos   int cycles = 0;
   2758      1.1  christos   {
   2759      1.1  christos     int referenced = 0;
   2760      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2761      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2762      1.1  christos   }
   2763      1.1  christos   return cycles;
   2764      1.1  christos #undef FLD
   2765      1.1  christos }
   2766      1.1  christos 
   2767      1.1  christos static int
   2768      1.1  christos model_test_bnc24 (SIM_CPU *current_cpu, void *sem_arg)
   2769      1.1  christos {
   2770      1.1  christos #define FLD(f) abuf->fields.sfmt_bl24.f
   2771      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2772      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2773      1.1  christos   int cycles = 0;
   2774      1.1  christos   {
   2775      1.1  christos     int referenced = 0;
   2776      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2777      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2778      1.1  christos   }
   2779      1.1  christos   return cycles;
   2780      1.1  christos #undef FLD
   2781      1.1  christos }
   2782      1.1  christos 
   2783      1.1  christos static int
   2784      1.1  christos model_test_bne (SIM_CPU *current_cpu, void *sem_arg)
   2785      1.1  christos {
   2786      1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
   2787      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2788      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2789      1.1  christos   int cycles = 0;
   2790      1.1  christos   {
   2791      1.1  christos     int referenced = 0;
   2792      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2793      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2794      1.1  christos   }
   2795      1.1  christos   return cycles;
   2796      1.1  christos #undef FLD
   2797      1.1  christos }
   2798      1.1  christos 
   2799      1.1  christos static int
   2800      1.1  christos model_test_bra8 (SIM_CPU *current_cpu, void *sem_arg)
   2801      1.1  christos {
   2802      1.1  christos #define FLD(f) abuf->fields.sfmt_bl8.f
   2803      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2804      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2805      1.1  christos   int cycles = 0;
   2806      1.1  christos   {
   2807      1.1  christos     int referenced = 0;
   2808      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2809      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2810      1.1  christos   }
   2811      1.1  christos   return cycles;
   2812      1.1  christos #undef FLD
   2813      1.1  christos }
   2814      1.1  christos 
   2815      1.1  christos static int
   2816      1.1  christos model_test_bra24 (SIM_CPU *current_cpu, void *sem_arg)
   2817      1.1  christos {
   2818      1.1  christos #define FLD(f) abuf->fields.sfmt_bl24.f
   2819      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2820      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2821      1.1  christos   int cycles = 0;
   2822      1.1  christos   {
   2823      1.1  christos     int referenced = 0;
   2824      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2825      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2826      1.1  christos   }
   2827      1.1  christos   return cycles;
   2828      1.1  christos #undef FLD
   2829      1.1  christos }
   2830      1.1  christos 
   2831      1.1  christos static int
   2832      1.1  christos model_test_cmp (SIM_CPU *current_cpu, void *sem_arg)
   2833      1.1  christos {
   2834      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2835      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2836      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2837      1.1  christos   int cycles = 0;
   2838      1.1  christos   {
   2839      1.1  christos     int referenced = 0;
   2840      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2841      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2842      1.1  christos   }
   2843      1.1  christos   return cycles;
   2844      1.1  christos #undef FLD
   2845      1.1  christos }
   2846      1.1  christos 
   2847      1.1  christos static int
   2848      1.1  christos model_test_cmpi (SIM_CPU *current_cpu, void *sem_arg)
   2849      1.1  christos {
   2850      1.1  christos #define FLD(f) abuf->fields.sfmt_st_d.f
   2851      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2852      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2853      1.1  christos   int cycles = 0;
   2854      1.1  christos   {
   2855      1.1  christos     int referenced = 0;
   2856      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2857      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2858      1.1  christos   }
   2859      1.1  christos   return cycles;
   2860      1.1  christos #undef FLD
   2861      1.1  christos }
   2862      1.1  christos 
   2863      1.1  christos static int
   2864      1.1  christos model_test_cmpu (SIM_CPU *current_cpu, void *sem_arg)
   2865      1.1  christos {
   2866      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2867      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2868      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2869      1.1  christos   int cycles = 0;
   2870      1.1  christos   {
   2871      1.1  christos     int referenced = 0;
   2872      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2873      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2874      1.1  christos   }
   2875      1.1  christos   return cycles;
   2876      1.1  christos #undef FLD
   2877      1.1  christos }
   2878      1.1  christos 
   2879      1.1  christos static int
   2880      1.1  christos model_test_cmpui (SIM_CPU *current_cpu, void *sem_arg)
   2881      1.1  christos {
   2882      1.1  christos #define FLD(f) abuf->fields.sfmt_st_d.f
   2883      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2884      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2885      1.1  christos   int cycles = 0;
   2886      1.1  christos   {
   2887      1.1  christos     int referenced = 0;
   2888      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2889      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2890      1.1  christos   }
   2891      1.1  christos   return cycles;
   2892      1.1  christos #undef FLD
   2893      1.1  christos }
   2894      1.1  christos 
   2895      1.1  christos static int
   2896      1.1  christos model_test_div (SIM_CPU *current_cpu, void *sem_arg)
   2897      1.1  christos {
   2898      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2899      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2900      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2901      1.1  christos   int cycles = 0;
   2902      1.1  christos   {
   2903      1.1  christos     int referenced = 0;
   2904      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2905      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2906      1.1  christos   }
   2907      1.1  christos   return cycles;
   2908      1.1  christos #undef FLD
   2909      1.1  christos }
   2910      1.1  christos 
   2911      1.1  christos static int
   2912      1.1  christos model_test_divu (SIM_CPU *current_cpu, void *sem_arg)
   2913      1.1  christos {
   2914      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2915      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2916      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2917      1.1  christos   int cycles = 0;
   2918      1.1  christos   {
   2919      1.1  christos     int referenced = 0;
   2920      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2921      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2922      1.1  christos   }
   2923      1.1  christos   return cycles;
   2924      1.1  christos #undef FLD
   2925      1.1  christos }
   2926      1.1  christos 
   2927      1.1  christos static int
   2928      1.1  christos model_test_rem (SIM_CPU *current_cpu, void *sem_arg)
   2929      1.1  christos {
   2930      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2931      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2932      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2933      1.1  christos   int cycles = 0;
   2934      1.1  christos   {
   2935      1.1  christos     int referenced = 0;
   2936      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2937      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2938      1.1  christos   }
   2939      1.1  christos   return cycles;
   2940      1.1  christos #undef FLD
   2941      1.1  christos }
   2942      1.1  christos 
   2943      1.1  christos static int
   2944      1.1  christos model_test_remu (SIM_CPU *current_cpu, void *sem_arg)
   2945      1.1  christos {
   2946      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2947      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2948      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2949      1.1  christos   int cycles = 0;
   2950      1.1  christos   {
   2951      1.1  christos     int referenced = 0;
   2952      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2953      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2954      1.1  christos   }
   2955      1.1  christos   return cycles;
   2956      1.1  christos #undef FLD
   2957      1.1  christos }
   2958      1.1  christos 
   2959      1.1  christos static int
   2960      1.1  christos model_test_jl (SIM_CPU *current_cpu, void *sem_arg)
   2961      1.1  christos {
   2962      1.1  christos #define FLD(f) abuf->fields.sfmt_jl.f
   2963      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2964      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2965      1.1  christos   int cycles = 0;
   2966      1.1  christos   {
   2967      1.1  christos     int referenced = 0;
   2968      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2969      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2970      1.1  christos   }
   2971      1.1  christos   return cycles;
   2972      1.1  christos #undef FLD
   2973      1.1  christos }
   2974      1.1  christos 
   2975      1.1  christos static int
   2976      1.1  christos model_test_jmp (SIM_CPU *current_cpu, void *sem_arg)
   2977      1.1  christos {
   2978      1.1  christos #define FLD(f) abuf->fields.sfmt_jl.f
   2979      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2980      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2981      1.1  christos   int cycles = 0;
   2982      1.1  christos   {
   2983      1.1  christos     int referenced = 0;
   2984      1.1  christos     int UNUSED insn_referenced = abuf->written;
   2985      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   2986      1.1  christos   }
   2987      1.1  christos   return cycles;
   2988      1.1  christos #undef FLD
   2989      1.1  christos }
   2990      1.1  christos 
   2991      1.1  christos static int
   2992      1.1  christos model_test_ld (SIM_CPU *current_cpu, void *sem_arg)
   2993      1.1  christos {
   2994      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   2995      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2996      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2997      1.1  christos   int cycles = 0;
   2998      1.1  christos   {
   2999      1.1  christos     int referenced = 0;
   3000      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3001      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3002      1.1  christos   }
   3003      1.1  christos   return cycles;
   3004      1.1  christos #undef FLD
   3005      1.1  christos }
   3006      1.1  christos 
   3007      1.1  christos static int
   3008      1.1  christos model_test_ld_d (SIM_CPU *current_cpu, void *sem_arg)
   3009      1.1  christos {
   3010      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   3011      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3012      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3013      1.1  christos   int cycles = 0;
   3014      1.1  christos   {
   3015      1.1  christos     int referenced = 0;
   3016      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3017      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3018      1.1  christos   }
   3019      1.1  christos   return cycles;
   3020      1.1  christos #undef FLD
   3021      1.1  christos }
   3022      1.1  christos 
   3023      1.1  christos static int
   3024      1.1  christos model_test_ldb (SIM_CPU *current_cpu, void *sem_arg)
   3025      1.1  christos {
   3026      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   3027      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3028      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3029      1.1  christos   int cycles = 0;
   3030      1.1  christos   {
   3031      1.1  christos     int referenced = 0;
   3032      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3033      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3034      1.1  christos   }
   3035      1.1  christos   return cycles;
   3036      1.1  christos #undef FLD
   3037      1.1  christos }
   3038      1.1  christos 
   3039      1.1  christos static int
   3040      1.1  christos model_test_ldb_d (SIM_CPU *current_cpu, void *sem_arg)
   3041      1.1  christos {
   3042      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   3043      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3044      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3045      1.1  christos   int cycles = 0;
   3046      1.1  christos   {
   3047      1.1  christos     int referenced = 0;
   3048      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3049      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3050      1.1  christos   }
   3051      1.1  christos   return cycles;
   3052      1.1  christos #undef FLD
   3053      1.1  christos }
   3054      1.1  christos 
   3055      1.1  christos static int
   3056      1.1  christos model_test_ldh (SIM_CPU *current_cpu, void *sem_arg)
   3057      1.1  christos {
   3058      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   3059      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3060      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3061      1.1  christos   int cycles = 0;
   3062      1.1  christos   {
   3063      1.1  christos     int referenced = 0;
   3064      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3065      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3066      1.1  christos   }
   3067      1.1  christos   return cycles;
   3068      1.1  christos #undef FLD
   3069      1.1  christos }
   3070      1.1  christos 
   3071      1.1  christos static int
   3072      1.1  christos model_test_ldh_d (SIM_CPU *current_cpu, void *sem_arg)
   3073      1.1  christos {
   3074      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   3075      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3076      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3077      1.1  christos   int cycles = 0;
   3078      1.1  christos   {
   3079      1.1  christos     int referenced = 0;
   3080      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3081      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3082      1.1  christos   }
   3083      1.1  christos   return cycles;
   3084      1.1  christos #undef FLD
   3085      1.1  christos }
   3086      1.1  christos 
   3087      1.1  christos static int
   3088      1.1  christos model_test_ldub (SIM_CPU *current_cpu, void *sem_arg)
   3089      1.1  christos {
   3090      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   3091      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3092      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3093      1.1  christos   int cycles = 0;
   3094      1.1  christos   {
   3095      1.1  christos     int referenced = 0;
   3096      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3097      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3098      1.1  christos   }
   3099      1.1  christos   return cycles;
   3100      1.1  christos #undef FLD
   3101      1.1  christos }
   3102      1.1  christos 
   3103      1.1  christos static int
   3104      1.1  christos model_test_ldub_d (SIM_CPU *current_cpu, void *sem_arg)
   3105      1.1  christos {
   3106      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   3107      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3108      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3109      1.1  christos   int cycles = 0;
   3110      1.1  christos   {
   3111      1.1  christos     int referenced = 0;
   3112      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3113      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3114      1.1  christos   }
   3115      1.1  christos   return cycles;
   3116      1.1  christos #undef FLD
   3117      1.1  christos }
   3118      1.1  christos 
   3119      1.1  christos static int
   3120      1.1  christos model_test_lduh (SIM_CPU *current_cpu, void *sem_arg)
   3121      1.1  christos {
   3122      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   3123      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3124      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3125      1.1  christos   int cycles = 0;
   3126      1.1  christos   {
   3127      1.1  christos     int referenced = 0;
   3128      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3129      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3130      1.1  christos   }
   3131      1.1  christos   return cycles;
   3132      1.1  christos #undef FLD
   3133      1.1  christos }
   3134      1.1  christos 
   3135      1.1  christos static int
   3136      1.1  christos model_test_lduh_d (SIM_CPU *current_cpu, void *sem_arg)
   3137      1.1  christos {
   3138      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   3139      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3140      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3141      1.1  christos   int cycles = 0;
   3142      1.1  christos   {
   3143      1.1  christos     int referenced = 0;
   3144      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3145      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3146      1.1  christos   }
   3147      1.1  christos   return cycles;
   3148      1.1  christos #undef FLD
   3149      1.1  christos }
   3150      1.1  christos 
   3151      1.1  christos static int
   3152      1.1  christos model_test_ld_plus (SIM_CPU *current_cpu, void *sem_arg)
   3153      1.1  christos {
   3154      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   3155      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3156      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3157      1.1  christos   int cycles = 0;
   3158      1.1  christos   {
   3159      1.1  christos     int referenced = 0;
   3160      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3161      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3162      1.1  christos   }
   3163      1.1  christos   return cycles;
   3164      1.1  christos #undef FLD
   3165      1.1  christos }
   3166      1.1  christos 
   3167      1.1  christos static int
   3168      1.1  christos model_test_ld24 (SIM_CPU *current_cpu, void *sem_arg)
   3169      1.1  christos {
   3170      1.1  christos #define FLD(f) abuf->fields.sfmt_ld24.f
   3171      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3172      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3173      1.1  christos   int cycles = 0;
   3174      1.1  christos   {
   3175      1.1  christos     int referenced = 0;
   3176      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3177      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3178      1.1  christos   }
   3179      1.1  christos   return cycles;
   3180      1.1  christos #undef FLD
   3181      1.1  christos }
   3182      1.1  christos 
   3183      1.1  christos static int
   3184      1.1  christos model_test_ldi8 (SIM_CPU *current_cpu, void *sem_arg)
   3185      1.1  christos {
   3186      1.1  christos #define FLD(f) abuf->fields.sfmt_addi.f
   3187      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3188      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3189      1.1  christos   int cycles = 0;
   3190      1.1  christos   {
   3191      1.1  christos     int referenced = 0;
   3192      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3193      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3194      1.1  christos   }
   3195      1.1  christos   return cycles;
   3196      1.1  christos #undef FLD
   3197      1.1  christos }
   3198      1.1  christos 
   3199      1.1  christos static int
   3200      1.1  christos model_test_ldi16 (SIM_CPU *current_cpu, void *sem_arg)
   3201      1.1  christos {
   3202      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   3203      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3204      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3205      1.1  christos   int cycles = 0;
   3206      1.1  christos   {
   3207      1.1  christos     int referenced = 0;
   3208      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3209      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3210      1.1  christos   }
   3211      1.1  christos   return cycles;
   3212      1.1  christos #undef FLD
   3213      1.1  christos }
   3214      1.1  christos 
   3215      1.1  christos static int
   3216      1.1  christos model_test_lock (SIM_CPU *current_cpu, void *sem_arg)
   3217      1.1  christos {
   3218      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   3219      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3220      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3221      1.1  christos   int cycles = 0;
   3222      1.1  christos   {
   3223      1.1  christos     int referenced = 0;
   3224      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3225      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3226      1.1  christos   }
   3227      1.1  christos   return cycles;
   3228      1.1  christos #undef FLD
   3229      1.1  christos }
   3230      1.1  christos 
   3231      1.1  christos static int
   3232      1.1  christos model_test_machi (SIM_CPU *current_cpu, void *sem_arg)
   3233      1.1  christos {
   3234      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3235      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3236      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3237      1.1  christos   int cycles = 0;
   3238      1.1  christos   {
   3239      1.1  christos     int referenced = 0;
   3240      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3241      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3242      1.1  christos   }
   3243      1.1  christos   return cycles;
   3244      1.1  christos #undef FLD
   3245      1.1  christos }
   3246      1.1  christos 
   3247      1.1  christos static int
   3248      1.1  christos model_test_maclo (SIM_CPU *current_cpu, void *sem_arg)
   3249      1.1  christos {
   3250      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3251      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3252      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3253      1.1  christos   int cycles = 0;
   3254      1.1  christos   {
   3255      1.1  christos     int referenced = 0;
   3256      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3257      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3258      1.1  christos   }
   3259      1.1  christos   return cycles;
   3260      1.1  christos #undef FLD
   3261      1.1  christos }
   3262      1.1  christos 
   3263      1.1  christos static int
   3264      1.1  christos model_test_macwhi (SIM_CPU *current_cpu, void *sem_arg)
   3265      1.1  christos {
   3266      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3267      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3268      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3269      1.1  christos   int cycles = 0;
   3270      1.1  christos   {
   3271      1.1  christos     int referenced = 0;
   3272      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3273      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3274      1.1  christos   }
   3275      1.1  christos   return cycles;
   3276      1.1  christos #undef FLD
   3277      1.1  christos }
   3278      1.1  christos 
   3279      1.1  christos static int
   3280      1.1  christos model_test_macwlo (SIM_CPU *current_cpu, void *sem_arg)
   3281      1.1  christos {
   3282      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3283      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3284      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3285      1.1  christos   int cycles = 0;
   3286      1.1  christos   {
   3287      1.1  christos     int referenced = 0;
   3288      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3289      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3290      1.1  christos   }
   3291      1.1  christos   return cycles;
   3292      1.1  christos #undef FLD
   3293      1.1  christos }
   3294      1.1  christos 
   3295      1.1  christos static int
   3296      1.1  christos model_test_mul (SIM_CPU *current_cpu, void *sem_arg)
   3297      1.1  christos {
   3298      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   3299      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3300      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3301      1.1  christos   int cycles = 0;
   3302      1.1  christos   {
   3303      1.1  christos     int referenced = 0;
   3304      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3305      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3306      1.1  christos   }
   3307      1.1  christos   return cycles;
   3308      1.1  christos #undef FLD
   3309      1.1  christos }
   3310      1.1  christos 
   3311      1.1  christos static int
   3312      1.1  christos model_test_mulhi (SIM_CPU *current_cpu, void *sem_arg)
   3313      1.1  christos {
   3314      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3315      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3316      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3317      1.1  christos   int cycles = 0;
   3318      1.1  christos   {
   3319      1.1  christos     int referenced = 0;
   3320      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3321      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3322      1.1  christos   }
   3323      1.1  christos   return cycles;
   3324      1.1  christos #undef FLD
   3325      1.1  christos }
   3326      1.1  christos 
   3327      1.1  christos static int
   3328      1.1  christos model_test_mullo (SIM_CPU *current_cpu, void *sem_arg)
   3329      1.1  christos {
   3330      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3331      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3332      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3333      1.1  christos   int cycles = 0;
   3334      1.1  christos   {
   3335      1.1  christos     int referenced = 0;
   3336      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3337      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3338      1.1  christos   }
   3339      1.1  christos   return cycles;
   3340      1.1  christos #undef FLD
   3341      1.1  christos }
   3342      1.1  christos 
   3343      1.1  christos static int
   3344      1.1  christos model_test_mulwhi (SIM_CPU *current_cpu, void *sem_arg)
   3345      1.1  christos {
   3346      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3347      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3348      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3349      1.1  christos   int cycles = 0;
   3350      1.1  christos   {
   3351      1.1  christos     int referenced = 0;
   3352      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3353      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3354      1.1  christos   }
   3355      1.1  christos   return cycles;
   3356      1.1  christos #undef FLD
   3357      1.1  christos }
   3358      1.1  christos 
   3359      1.1  christos static int
   3360      1.1  christos model_test_mulwlo (SIM_CPU *current_cpu, void *sem_arg)
   3361      1.1  christos {
   3362      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3363      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3364      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3365      1.1  christos   int cycles = 0;
   3366      1.1  christos   {
   3367      1.1  christos     int referenced = 0;
   3368      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3369      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3370      1.1  christos   }
   3371      1.1  christos   return cycles;
   3372      1.1  christos #undef FLD
   3373      1.1  christos }
   3374      1.1  christos 
   3375      1.1  christos static int
   3376      1.1  christos model_test_mv (SIM_CPU *current_cpu, void *sem_arg)
   3377      1.1  christos {
   3378      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   3379      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3380      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3381      1.1  christos   int cycles = 0;
   3382      1.1  christos   {
   3383      1.1  christos     int referenced = 0;
   3384      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3385      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3386      1.1  christos   }
   3387      1.1  christos   return cycles;
   3388      1.1  christos #undef FLD
   3389      1.1  christos }
   3390      1.1  christos 
   3391      1.1  christos static int
   3392      1.1  christos model_test_mvfachi (SIM_CPU *current_cpu, void *sem_arg)
   3393      1.1  christos {
   3394      1.1  christos #define FLD(f) abuf->fields.sfmt_seth.f
   3395      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3396      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3397      1.1  christos   int cycles = 0;
   3398      1.1  christos   {
   3399      1.1  christos     int referenced = 0;
   3400      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3401      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3402      1.1  christos   }
   3403      1.1  christos   return cycles;
   3404      1.1  christos #undef FLD
   3405      1.1  christos }
   3406      1.1  christos 
   3407      1.1  christos static int
   3408      1.1  christos model_test_mvfaclo (SIM_CPU *current_cpu, void *sem_arg)
   3409      1.1  christos {
   3410      1.1  christos #define FLD(f) abuf->fields.sfmt_seth.f
   3411      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3412      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3413      1.1  christos   int cycles = 0;
   3414      1.1  christos   {
   3415      1.1  christos     int referenced = 0;
   3416      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3417      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3418      1.1  christos   }
   3419      1.1  christos   return cycles;
   3420      1.1  christos #undef FLD
   3421      1.1  christos }
   3422      1.1  christos 
   3423      1.1  christos static int
   3424      1.1  christos model_test_mvfacmi (SIM_CPU *current_cpu, void *sem_arg)
   3425      1.1  christos {
   3426      1.1  christos #define FLD(f) abuf->fields.sfmt_seth.f
   3427      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3428      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3429      1.1  christos   int cycles = 0;
   3430      1.1  christos   {
   3431      1.1  christos     int referenced = 0;
   3432      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3433      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3434      1.1  christos   }
   3435      1.1  christos   return cycles;
   3436      1.1  christos #undef FLD
   3437      1.1  christos }
   3438      1.1  christos 
   3439      1.1  christos static int
   3440      1.1  christos model_test_mvfc (SIM_CPU *current_cpu, void *sem_arg)
   3441      1.1  christos {
   3442      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   3443      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3444      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3445      1.1  christos   int cycles = 0;
   3446      1.1  christos   {
   3447      1.1  christos     int referenced = 0;
   3448      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3449      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3450      1.1  christos   }
   3451      1.1  christos   return cycles;
   3452      1.1  christos #undef FLD
   3453      1.1  christos }
   3454      1.1  christos 
   3455      1.1  christos static int
   3456      1.1  christos model_test_mvtachi (SIM_CPU *current_cpu, void *sem_arg)
   3457      1.1  christos {
   3458      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3459      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3460      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3461      1.1  christos   int cycles = 0;
   3462      1.1  christos   {
   3463      1.1  christos     int referenced = 0;
   3464      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3465      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3466      1.1  christos   }
   3467      1.1  christos   return cycles;
   3468      1.1  christos #undef FLD
   3469      1.1  christos }
   3470      1.1  christos 
   3471      1.1  christos static int
   3472      1.1  christos model_test_mvtaclo (SIM_CPU *current_cpu, void *sem_arg)
   3473      1.1  christos {
   3474      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3475      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3476      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3477      1.1  christos   int cycles = 0;
   3478      1.1  christos   {
   3479      1.1  christos     int referenced = 0;
   3480      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3481      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3482      1.1  christos   }
   3483      1.1  christos   return cycles;
   3484      1.1  christos #undef FLD
   3485      1.1  christos }
   3486      1.1  christos 
   3487      1.1  christos static int
   3488      1.1  christos model_test_mvtc (SIM_CPU *current_cpu, void *sem_arg)
   3489      1.1  christos {
   3490      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   3491      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3492      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3493      1.1  christos   int cycles = 0;
   3494      1.1  christos   {
   3495      1.1  christos     int referenced = 0;
   3496      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3497      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3498      1.1  christos   }
   3499      1.1  christos   return cycles;
   3500      1.1  christos #undef FLD
   3501      1.1  christos }
   3502      1.1  christos 
   3503      1.1  christos static int
   3504      1.1  christos model_test_neg (SIM_CPU *current_cpu, void *sem_arg)
   3505      1.1  christos {
   3506      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   3507      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3508      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3509      1.1  christos   int cycles = 0;
   3510      1.1  christos   {
   3511      1.1  christos     int referenced = 0;
   3512      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3513      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3514      1.1  christos   }
   3515      1.1  christos   return cycles;
   3516      1.1  christos #undef FLD
   3517      1.1  christos }
   3518      1.1  christos 
   3519      1.1  christos static int
   3520      1.1  christos model_test_nop (SIM_CPU *current_cpu, void *sem_arg)
   3521      1.1  christos {
   3522      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   3523      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3524      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3525      1.1  christos   int cycles = 0;
   3526      1.1  christos   {
   3527      1.1  christos     int referenced = 0;
   3528      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3529      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3530      1.1  christos   }
   3531      1.1  christos   return cycles;
   3532      1.1  christos #undef FLD
   3533      1.1  christos }
   3534      1.1  christos 
   3535      1.1  christos static int
   3536      1.1  christos model_test_not (SIM_CPU *current_cpu, void *sem_arg)
   3537      1.1  christos {
   3538      1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   3539      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3540      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3541      1.1  christos   int cycles = 0;
   3542      1.1  christos   {
   3543      1.1  christos     int referenced = 0;
   3544      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3545      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3546      1.1  christos   }
   3547      1.1  christos   return cycles;
   3548      1.1  christos #undef FLD
   3549      1.1  christos }
   3550      1.1  christos 
   3551      1.1  christos static int
   3552      1.1  christos model_test_rac (SIM_CPU *current_cpu, void *sem_arg)
   3553      1.1  christos {
   3554      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   3555      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3556      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3557      1.1  christos   int cycles = 0;
   3558      1.1  christos   {
   3559      1.1  christos     int referenced = 0;
   3560      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3561      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3562      1.1  christos   }
   3563      1.1  christos   return cycles;
   3564      1.1  christos #undef FLD
   3565      1.1  christos }
   3566      1.1  christos 
   3567      1.1  christos static int
   3568      1.1  christos model_test_rach (SIM_CPU *current_cpu, void *sem_arg)
   3569      1.1  christos {
   3570      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   3571      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3572      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3573      1.1  christos   int cycles = 0;
   3574      1.1  christos   {
   3575      1.1  christos     int referenced = 0;
   3576      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3577      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3578      1.1  christos   }
   3579      1.1  christos   return cycles;
   3580      1.1  christos #undef FLD
   3581      1.1  christos }
   3582      1.1  christos 
   3583      1.1  christos static int
   3584      1.1  christos model_test_rte (SIM_CPU *current_cpu, void *sem_arg)
   3585      1.1  christos {
   3586      1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   3587      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3588      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3589      1.1  christos   int cycles = 0;
   3590      1.1  christos   {
   3591      1.1  christos     int referenced = 0;
   3592      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3593      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3594      1.1  christos   }
   3595      1.1  christos   return cycles;
   3596      1.1  christos #undef FLD
   3597      1.1  christos }
   3598      1.1  christos 
   3599      1.1  christos static int
   3600      1.1  christos model_test_seth (SIM_CPU *current_cpu, void *sem_arg)
   3601      1.1  christos {
   3602      1.1  christos #define FLD(f) abuf->fields.sfmt_seth.f
   3603      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3604      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3605      1.1  christos   int cycles = 0;
   3606      1.1  christos   {
   3607      1.1  christos     int referenced = 0;
   3608      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3609      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3610      1.1  christos   }
   3611      1.1  christos   return cycles;
   3612      1.1  christos #undef FLD
   3613      1.1  christos }
   3614      1.1  christos 
   3615      1.1  christos static int
   3616      1.1  christos model_test_sll (SIM_CPU *current_cpu, void *sem_arg)
   3617      1.1  christos {
   3618      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   3619      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3620      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3621      1.1  christos   int cycles = 0;
   3622      1.1  christos   {
   3623      1.1  christos     int referenced = 0;
   3624      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3625      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3626      1.1  christos   }
   3627      1.1  christos   return cycles;
   3628      1.1  christos #undef FLD
   3629      1.1  christos }
   3630      1.1  christos 
   3631      1.1  christos static int
   3632      1.1  christos model_test_sll3 (SIM_CPU *current_cpu, void *sem_arg)
   3633      1.1  christos {
   3634      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   3635      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3636      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3637      1.1  christos   int cycles = 0;
   3638      1.1  christos   {
   3639      1.1  christos     int referenced = 0;
   3640      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3641      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3642      1.1  christos   }
   3643      1.1  christos   return cycles;
   3644      1.1  christos #undef FLD
   3645      1.1  christos }
   3646      1.1  christos 
   3647      1.1  christos static int
   3648      1.1  christos model_test_slli (SIM_CPU *current_cpu, void *sem_arg)
   3649      1.1  christos {
   3650      1.1  christos #define FLD(f) abuf->fields.sfmt_slli.f
   3651      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3652      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3653      1.1  christos   int cycles = 0;
   3654      1.1  christos   {
   3655      1.1  christos     int referenced = 0;
   3656      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3657      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3658      1.1  christos   }
   3659      1.1  christos   return cycles;
   3660      1.1  christos #undef FLD
   3661      1.1  christos }
   3662      1.1  christos 
   3663      1.1  christos static int
   3664      1.1  christos model_test_sra (SIM_CPU *current_cpu, void *sem_arg)
   3665      1.1  christos {
   3666      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   3667      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3668      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3669      1.1  christos   int cycles = 0;
   3670      1.1  christos   {
   3671      1.1  christos     int referenced = 0;
   3672      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3673      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3674      1.1  christos   }
   3675      1.1  christos   return cycles;
   3676      1.1  christos #undef FLD
   3677      1.1  christos }
   3678      1.1  christos 
   3679      1.1  christos static int
   3680      1.1  christos model_test_sra3 (SIM_CPU *current_cpu, void *sem_arg)
   3681      1.1  christos {
   3682      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   3683      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3684      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3685      1.1  christos   int cycles = 0;
   3686      1.1  christos   {
   3687      1.1  christos     int referenced = 0;
   3688      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3689      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3690      1.1  christos   }
   3691      1.1  christos   return cycles;
   3692      1.1  christos #undef FLD
   3693      1.1  christos }
   3694      1.1  christos 
   3695      1.1  christos static int
   3696      1.1  christos model_test_srai (SIM_CPU *current_cpu, void *sem_arg)
   3697      1.1  christos {
   3698      1.1  christos #define FLD(f) abuf->fields.sfmt_slli.f
   3699      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3700      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3701      1.1  christos   int cycles = 0;
   3702      1.1  christos   {
   3703      1.1  christos     int referenced = 0;
   3704      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3705      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3706      1.1  christos   }
   3707      1.1  christos   return cycles;
   3708      1.1  christos #undef FLD
   3709      1.1  christos }
   3710      1.1  christos 
   3711      1.1  christos static int
   3712      1.1  christos model_test_srl (SIM_CPU *current_cpu, void *sem_arg)
   3713      1.1  christos {
   3714      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   3715      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3716      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3717      1.1  christos   int cycles = 0;
   3718      1.1  christos   {
   3719      1.1  christos     int referenced = 0;
   3720      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3721      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3722      1.1  christos   }
   3723      1.1  christos   return cycles;
   3724      1.1  christos #undef FLD
   3725      1.1  christos }
   3726      1.1  christos 
   3727      1.1  christos static int
   3728      1.1  christos model_test_srl3 (SIM_CPU *current_cpu, void *sem_arg)
   3729      1.1  christos {
   3730      1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   3731      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3732      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3733      1.1  christos   int cycles = 0;
   3734      1.1  christos   {
   3735      1.1  christos     int referenced = 0;
   3736      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3737      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3738      1.1  christos   }
   3739      1.1  christos   return cycles;
   3740      1.1  christos #undef FLD
   3741      1.1  christos }
   3742      1.1  christos 
   3743      1.1  christos static int
   3744      1.1  christos model_test_srli (SIM_CPU *current_cpu, void *sem_arg)
   3745      1.1  christos {
   3746      1.1  christos #define FLD(f) abuf->fields.sfmt_slli.f
   3747      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3748      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3749      1.1  christos   int cycles = 0;
   3750      1.1  christos   {
   3751      1.1  christos     int referenced = 0;
   3752      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3753      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3754      1.1  christos   }
   3755      1.1  christos   return cycles;
   3756      1.1  christos #undef FLD
   3757      1.1  christos }
   3758      1.1  christos 
   3759      1.1  christos static int
   3760      1.1  christos model_test_st (SIM_CPU *current_cpu, void *sem_arg)
   3761      1.1  christos {
   3762      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3763      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3764      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3765      1.1  christos   int cycles = 0;
   3766      1.1  christos   {
   3767      1.1  christos     int referenced = 0;
   3768      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3769      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3770      1.1  christos   }
   3771      1.1  christos   return cycles;
   3772      1.1  christos #undef FLD
   3773      1.1  christos }
   3774      1.1  christos 
   3775      1.1  christos static int
   3776      1.1  christos model_test_st_d (SIM_CPU *current_cpu, void *sem_arg)
   3777      1.1  christos {
   3778      1.1  christos #define FLD(f) abuf->fields.sfmt_st_d.f
   3779      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3780      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3781      1.1  christos   int cycles = 0;
   3782      1.1  christos   {
   3783      1.1  christos     int referenced = 0;
   3784      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3785      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3786      1.1  christos   }
   3787      1.1  christos   return cycles;
   3788      1.1  christos #undef FLD
   3789      1.1  christos }
   3790      1.1  christos 
   3791      1.1  christos static int
   3792      1.1  christos model_test_stb (SIM_CPU *current_cpu, void *sem_arg)
   3793      1.1  christos {
   3794      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3795      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3796      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3797      1.1  christos   int cycles = 0;
   3798      1.1  christos   {
   3799      1.1  christos     int referenced = 0;
   3800      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3801      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3802      1.1  christos   }
   3803      1.1  christos   return cycles;
   3804      1.1  christos #undef FLD
   3805      1.1  christos }
   3806      1.1  christos 
   3807      1.1  christos static int
   3808      1.1  christos model_test_stb_d (SIM_CPU *current_cpu, void *sem_arg)
   3809      1.1  christos {
   3810      1.1  christos #define FLD(f) abuf->fields.sfmt_st_d.f
   3811      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3812      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3813      1.1  christos   int cycles = 0;
   3814      1.1  christos   {
   3815      1.1  christos     int referenced = 0;
   3816      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3817      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3818      1.1  christos   }
   3819      1.1  christos   return cycles;
   3820      1.1  christos #undef FLD
   3821      1.1  christos }
   3822      1.1  christos 
   3823      1.1  christos static int
   3824      1.1  christos model_test_sth (SIM_CPU *current_cpu, void *sem_arg)
   3825      1.1  christos {
   3826      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3827      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3828      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3829      1.1  christos   int cycles = 0;
   3830      1.1  christos   {
   3831      1.1  christos     int referenced = 0;
   3832      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3833      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3834      1.1  christos   }
   3835      1.1  christos   return cycles;
   3836      1.1  christos #undef FLD
   3837      1.1  christos }
   3838      1.1  christos 
   3839      1.1  christos static int
   3840      1.1  christos model_test_sth_d (SIM_CPU *current_cpu, void *sem_arg)
   3841      1.1  christos {
   3842      1.1  christos #define FLD(f) abuf->fields.sfmt_st_d.f
   3843      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3844      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3845      1.1  christos   int cycles = 0;
   3846      1.1  christos   {
   3847      1.1  christos     int referenced = 0;
   3848      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3849      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3850      1.1  christos   }
   3851      1.1  christos   return cycles;
   3852      1.1  christos #undef FLD
   3853      1.1  christos }
   3854      1.1  christos 
   3855      1.1  christos static int
   3856      1.1  christos model_test_st_plus (SIM_CPU *current_cpu, void *sem_arg)
   3857      1.1  christos {
   3858      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3859      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3860      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3861      1.1  christos   int cycles = 0;
   3862      1.1  christos   {
   3863      1.1  christos     int referenced = 0;
   3864      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3865      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3866      1.1  christos   }
   3867      1.1  christos   return cycles;
   3868      1.1  christos #undef FLD
   3869      1.1  christos }
   3870      1.1  christos 
   3871      1.1  christos static int
   3872      1.1  christos model_test_st_minus (SIM_CPU *current_cpu, void *sem_arg)
   3873      1.1  christos {
   3874      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3875      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3876      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3877      1.1  christos   int cycles = 0;
   3878      1.1  christos   {
   3879      1.1  christos     int referenced = 0;
   3880      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3881      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3882      1.1  christos   }
   3883      1.1  christos   return cycles;
   3884      1.1  christos #undef FLD
   3885      1.1  christos }
   3886      1.1  christos 
   3887      1.1  christos static int
   3888      1.1  christos model_test_sub (SIM_CPU *current_cpu, void *sem_arg)
   3889      1.1  christos {
   3890      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   3891      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3892      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3893      1.1  christos   int cycles = 0;
   3894      1.1  christos   {
   3895      1.1  christos     int referenced = 0;
   3896      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3897      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3898      1.1  christos   }
   3899      1.1  christos   return cycles;
   3900      1.1  christos #undef FLD
   3901      1.1  christos }
   3902      1.1  christos 
   3903      1.1  christos static int
   3904      1.1  christos model_test_subv (SIM_CPU *current_cpu, void *sem_arg)
   3905      1.1  christos {
   3906      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   3907      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3908      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3909      1.1  christos   int cycles = 0;
   3910      1.1  christos   {
   3911      1.1  christos     int referenced = 0;
   3912      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3913      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3914      1.1  christos   }
   3915      1.1  christos   return cycles;
   3916      1.1  christos #undef FLD
   3917      1.1  christos }
   3918      1.1  christos 
   3919      1.1  christos static int
   3920      1.1  christos model_test_subx (SIM_CPU *current_cpu, void *sem_arg)
   3921      1.1  christos {
   3922      1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   3923      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3924      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3925      1.1  christos   int cycles = 0;
   3926      1.1  christos   {
   3927      1.1  christos     int referenced = 0;
   3928      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3929      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3930      1.1  christos   }
   3931      1.1  christos   return cycles;
   3932      1.1  christos #undef FLD
   3933      1.1  christos }
   3934      1.1  christos 
   3935      1.1  christos static int
   3936      1.1  christos model_test_trap (SIM_CPU *current_cpu, void *sem_arg)
   3937      1.1  christos {
   3938      1.1  christos #define FLD(f) abuf->fields.sfmt_trap.f
   3939      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3940      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3941      1.1  christos   int cycles = 0;
   3942      1.1  christos   {
   3943      1.1  christos     int referenced = 0;
   3944      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3945      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3946      1.1  christos   }
   3947      1.1  christos   return cycles;
   3948      1.1  christos #undef FLD
   3949      1.1  christos }
   3950      1.1  christos 
   3951      1.1  christos static int
   3952      1.1  christos model_test_unlock (SIM_CPU *current_cpu, void *sem_arg)
   3953      1.1  christos {
   3954      1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   3955      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3956      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3957      1.1  christos   int cycles = 0;
   3958      1.1  christos   {
   3959      1.1  christos     int referenced = 0;
   3960      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3961      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3962      1.1  christos   }
   3963      1.1  christos   return cycles;
   3964      1.1  christos #undef FLD
   3965      1.1  christos }
   3966      1.1  christos 
   3967      1.1  christos static int
   3968      1.1  christos model_test_clrpsw (SIM_CPU *current_cpu, void *sem_arg)
   3969      1.1  christos {
   3970      1.1  christos #define FLD(f) abuf->fields.sfmt_clrpsw.f
   3971      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3972      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3973      1.1  christos   int cycles = 0;
   3974      1.1  christos   {
   3975      1.1  christos     int referenced = 0;
   3976      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3977      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3978      1.1  christos   }
   3979      1.1  christos   return cycles;
   3980      1.1  christos #undef FLD
   3981      1.1  christos }
   3982      1.1  christos 
   3983      1.1  christos static int
   3984      1.1  christos model_test_setpsw (SIM_CPU *current_cpu, void *sem_arg)
   3985      1.1  christos {
   3986      1.1  christos #define FLD(f) abuf->fields.sfmt_clrpsw.f
   3987      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3988      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3989      1.1  christos   int cycles = 0;
   3990      1.1  christos   {
   3991      1.1  christos     int referenced = 0;
   3992      1.1  christos     int UNUSED insn_referenced = abuf->written;
   3993      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   3994      1.1  christos   }
   3995      1.1  christos   return cycles;
   3996      1.1  christos #undef FLD
   3997      1.1  christos }
   3998      1.1  christos 
   3999      1.1  christos static int
   4000      1.1  christos model_test_bset (SIM_CPU *current_cpu, void *sem_arg)
   4001      1.1  christos {
   4002      1.1  christos #define FLD(f) abuf->fields.sfmt_bset.f
   4003      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4004      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   4005      1.1  christos   int cycles = 0;
   4006      1.1  christos   {
   4007      1.1  christos     int referenced = 0;
   4008      1.1  christos     int UNUSED insn_referenced = abuf->written;
   4009      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   4010      1.1  christos   }
   4011      1.1  christos   return cycles;
   4012      1.1  christos #undef FLD
   4013      1.1  christos }
   4014      1.1  christos 
   4015      1.1  christos static int
   4016      1.1  christos model_test_bclr (SIM_CPU *current_cpu, void *sem_arg)
   4017      1.1  christos {
   4018      1.1  christos #define FLD(f) abuf->fields.sfmt_bset.f
   4019      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4020      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   4021      1.1  christos   int cycles = 0;
   4022      1.1  christos   {
   4023      1.1  christos     int referenced = 0;
   4024      1.1  christos     int UNUSED insn_referenced = abuf->written;
   4025      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   4026      1.1  christos   }
   4027      1.1  christos   return cycles;
   4028      1.1  christos #undef FLD
   4029      1.1  christos }
   4030      1.1  christos 
   4031      1.1  christos static int
   4032      1.1  christos model_test_btst (SIM_CPU *current_cpu, void *sem_arg)
   4033      1.1  christos {
   4034      1.1  christos #define FLD(f) abuf->fields.sfmt_bset.f
   4035      1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4036      1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   4037      1.1  christos   int cycles = 0;
   4038      1.1  christos   {
   4039      1.1  christos     int referenced = 0;
   4040      1.1  christos     int UNUSED insn_referenced = abuf->written;
   4041      1.1  christos     cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
   4042      1.1  christos   }
   4043      1.1  christos   return cycles;
   4044      1.1  christos #undef FLD
   4045      1.1  christos }
   4046      1.1  christos 
   4047      1.1  christos /* We assume UNIT_NONE == 0 because the tables don't always terminate
   4048      1.1  christos    entries with it.  */
   4049      1.1  christos 
   4050      1.1  christos /* Model timing data for `m32r/d'.  */
   4051      1.1  christos 
   4052      1.1  christos static const INSN_TIMING m32r_d_timing[] = {
   4053      1.1  christos   { M32RBF_INSN_X_INVALID, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4054      1.1  christos   { M32RBF_INSN_X_AFTER, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4055      1.1  christos   { M32RBF_INSN_X_BEFORE, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4056      1.1  christos   { M32RBF_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4057      1.1  christos   { M32RBF_INSN_X_CHAIN, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4058      1.1  christos   { M32RBF_INSN_X_BEGIN, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4059      1.1  christos   { M32RBF_INSN_ADD, model_m32r_d_add, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4060      1.1  christos   { M32RBF_INSN_ADD3, model_m32r_d_add3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4061      1.1  christos   { M32RBF_INSN_AND, model_m32r_d_and, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4062      1.1  christos   { M32RBF_INSN_AND3, model_m32r_d_and3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4063      1.1  christos   { M32RBF_INSN_OR, model_m32r_d_or, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4064      1.1  christos   { M32RBF_INSN_OR3, model_m32r_d_or3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4065      1.1  christos   { M32RBF_INSN_XOR, model_m32r_d_xor, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4066      1.1  christos   { M32RBF_INSN_XOR3, model_m32r_d_xor3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4067      1.1  christos   { M32RBF_INSN_ADDI, model_m32r_d_addi, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4068      1.1  christos   { M32RBF_INSN_ADDV, model_m32r_d_addv, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4069      1.1  christos   { M32RBF_INSN_ADDV3, model_m32r_d_addv3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4070      1.1  christos   { M32RBF_INSN_ADDX, model_m32r_d_addx, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4071      1.1  christos   { M32RBF_INSN_BC8, model_m32r_d_bc8, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
   4072      1.1  christos   { M32RBF_INSN_BC24, model_m32r_d_bc24, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
   4073      1.1  christos   { M32RBF_INSN_BEQ, model_m32r_d_beq, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
   4074      1.1  christos   { M32RBF_INSN_BEQZ, model_m32r_d_beqz, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
   4075      1.1  christos   { M32RBF_INSN_BGEZ, model_m32r_d_bgez, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
   4076      1.1  christos   { M32RBF_INSN_BGTZ, model_m32r_d_bgtz, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
   4077      1.1  christos   { M32RBF_INSN_BLEZ, model_m32r_d_blez, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
   4078      1.1  christos   { M32RBF_INSN_BLTZ, model_m32r_d_bltz, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
   4079      1.1  christos   { M32RBF_INSN_BNEZ, model_m32r_d_bnez, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
   4080      1.1  christos   { M32RBF_INSN_BL8, model_m32r_d_bl8, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
   4081      1.1  christos   { M32RBF_INSN_BL24, model_m32r_d_bl24, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
   4082      1.1  christos   { M32RBF_INSN_BNC8, model_m32r_d_bnc8, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
   4083      1.1  christos   { M32RBF_INSN_BNC24, model_m32r_d_bnc24, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
   4084      1.1  christos   { M32RBF_INSN_BNE, model_m32r_d_bne, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
   4085      1.1  christos   { M32RBF_INSN_BRA8, model_m32r_d_bra8, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
   4086      1.1  christos   { M32RBF_INSN_BRA24, model_m32r_d_bra24, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
   4087      1.1  christos   { M32RBF_INSN_CMP, model_m32r_d_cmp, { { (int) UNIT_M32R_D_U_CMP, 1, 1 } } },
   4088      1.1  christos   { M32RBF_INSN_CMPI, model_m32r_d_cmpi, { { (int) UNIT_M32R_D_U_CMP, 1, 1 } } },
   4089      1.1  christos   { M32RBF_INSN_CMPU, model_m32r_d_cmpu, { { (int) UNIT_M32R_D_U_CMP, 1, 1 } } },
   4090      1.1  christos   { M32RBF_INSN_CMPUI, model_m32r_d_cmpui, { { (int) UNIT_M32R_D_U_CMP, 1, 1 } } },
   4091      1.1  christos   { M32RBF_INSN_DIV, model_m32r_d_div, { { (int) UNIT_M32R_D_U_EXEC, 1, 37 } } },
   4092      1.1  christos   { M32RBF_INSN_DIVU, model_m32r_d_divu, { { (int) UNIT_M32R_D_U_EXEC, 1, 37 } } },
   4093      1.1  christos   { M32RBF_INSN_REM, model_m32r_d_rem, { { (int) UNIT_M32R_D_U_EXEC, 1, 37 } } },
   4094      1.1  christos   { M32RBF_INSN_REMU, model_m32r_d_remu, { { (int) UNIT_M32R_D_U_EXEC, 1, 37 } } },
   4095      1.1  christos   { M32RBF_INSN_JL, model_m32r_d_jl, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
   4096      1.1  christos   { M32RBF_INSN_JMP, model_m32r_d_jmp, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
   4097      1.1  christos   { M32RBF_INSN_LD, model_m32r_d_ld, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } },
   4098      1.1  christos   { M32RBF_INSN_LD_D, model_m32r_d_ld_d, { { (int) UNIT_M32R_D_U_LOAD, 1, 2 } } },
   4099      1.1  christos   { M32RBF_INSN_LDB, model_m32r_d_ldb, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } },
   4100      1.1  christos   { M32RBF_INSN_LDB_D, model_m32r_d_ldb_d, { { (int) UNIT_M32R_D_U_LOAD, 1, 2 } } },
   4101      1.1  christos   { M32RBF_INSN_LDH, model_m32r_d_ldh, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } },
   4102      1.1  christos   { M32RBF_INSN_LDH_D, model_m32r_d_ldh_d, { { (int) UNIT_M32R_D_U_LOAD, 1, 2 } } },
   4103      1.1  christos   { M32RBF_INSN_LDUB, model_m32r_d_ldub, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } },
   4104      1.1  christos   { M32RBF_INSN_LDUB_D, model_m32r_d_ldub_d, { { (int) UNIT_M32R_D_U_LOAD, 1, 2 } } },
   4105      1.1  christos   { M32RBF_INSN_LDUH, model_m32r_d_lduh, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } },
   4106      1.1  christos   { M32RBF_INSN_LDUH_D, model_m32r_d_lduh_d, { { (int) UNIT_M32R_D_U_LOAD, 1, 2 } } },
   4107      1.1  christos   { M32RBF_INSN_LD_PLUS, model_m32r_d_ld_plus, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 }, { (int) UNIT_M32R_D_U_EXEC, 1, 0 } } },
   4108      1.1  christos   { M32RBF_INSN_LD24, model_m32r_d_ld24, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4109      1.1  christos   { M32RBF_INSN_LDI8, model_m32r_d_ldi8, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4110      1.1  christos   { M32RBF_INSN_LDI16, model_m32r_d_ldi16, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4111      1.1  christos   { M32RBF_INSN_LOCK, model_m32r_d_lock, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } },
   4112      1.1  christos   { M32RBF_INSN_MACHI, model_m32r_d_machi, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
   4113      1.1  christos   { M32RBF_INSN_MACLO, model_m32r_d_maclo, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
   4114      1.1  christos   { M32RBF_INSN_MACWHI, model_m32r_d_macwhi, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
   4115      1.1  christos   { M32RBF_INSN_MACWLO, model_m32r_d_macwlo, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
   4116      1.1  christos   { M32RBF_INSN_MUL, model_m32r_d_mul, { { (int) UNIT_M32R_D_U_EXEC, 1, 4 } } },
   4117      1.1  christos   { M32RBF_INSN_MULHI, model_m32r_d_mulhi, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
   4118      1.1  christos   { M32RBF_INSN_MULLO, model_m32r_d_mullo, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
   4119      1.1  christos   { M32RBF_INSN_MULWHI, model_m32r_d_mulwhi, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
   4120      1.1  christos   { M32RBF_INSN_MULWLO, model_m32r_d_mulwlo, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
   4121      1.1  christos   { M32RBF_INSN_MV, model_m32r_d_mv, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4122      1.1  christos   { M32RBF_INSN_MVFACHI, model_m32r_d_mvfachi, { { (int) UNIT_M32R_D_U_EXEC, 1, 2 } } },
   4123      1.1  christos   { M32RBF_INSN_MVFACLO, model_m32r_d_mvfaclo, { { (int) UNIT_M32R_D_U_EXEC, 1, 2 } } },
   4124      1.1  christos   { M32RBF_INSN_MVFACMI, model_m32r_d_mvfacmi, { { (int) UNIT_M32R_D_U_EXEC, 1, 2 } } },
   4125      1.1  christos   { M32RBF_INSN_MVFC, model_m32r_d_mvfc, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4126      1.1  christos   { M32RBF_INSN_MVTACHI, model_m32r_d_mvtachi, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4127      1.1  christos   { M32RBF_INSN_MVTACLO, model_m32r_d_mvtaclo, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4128      1.1  christos   { M32RBF_INSN_MVTC, model_m32r_d_mvtc, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4129      1.1  christos   { M32RBF_INSN_NEG, model_m32r_d_neg, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4130      1.1  christos   { M32RBF_INSN_NOP, model_m32r_d_nop, { { (int) UNIT_M32R_D_U_EXEC, 1, 0 } } },
   4131      1.1  christos   { M32RBF_INSN_NOT, model_m32r_d_not, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4132      1.1  christos   { M32RBF_INSN_RAC, model_m32r_d_rac, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
   4133      1.1  christos   { M32RBF_INSN_RACH, model_m32r_d_rach, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
   4134      1.1  christos   { M32RBF_INSN_RTE, model_m32r_d_rte, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4135      1.1  christos   { M32RBF_INSN_SETH, model_m32r_d_seth, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4136      1.1  christos   { M32RBF_INSN_SLL, model_m32r_d_sll, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4137      1.1  christos   { M32RBF_INSN_SLL3, model_m32r_d_sll3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4138      1.1  christos   { M32RBF_INSN_SLLI, model_m32r_d_slli, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4139      1.1  christos   { M32RBF_INSN_SRA, model_m32r_d_sra, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4140      1.1  christos   { M32RBF_INSN_SRA3, model_m32r_d_sra3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4141      1.1  christos   { M32RBF_INSN_SRAI, model_m32r_d_srai, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4142      1.1  christos   { M32RBF_INSN_SRL, model_m32r_d_srl, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4143      1.1  christos   { M32RBF_INSN_SRL3, model_m32r_d_srl3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4144      1.1  christos   { M32RBF_INSN_SRLI, model_m32r_d_srli, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4145      1.1  christos   { M32RBF_INSN_ST, model_m32r_d_st, { { (int) UNIT_M32R_D_U_STORE, 1, 1 } } },
   4146      1.1  christos   { M32RBF_INSN_ST_D, model_m32r_d_st_d, { { (int) UNIT_M32R_D_U_STORE, 1, 2 } } },
   4147      1.1  christos   { M32RBF_INSN_STB, model_m32r_d_stb, { { (int) UNIT_M32R_D_U_STORE, 1, 1 } } },
   4148      1.1  christos   { M32RBF_INSN_STB_D, model_m32r_d_stb_d, { { (int) UNIT_M32R_D_U_STORE, 1, 2 } } },
   4149      1.1  christos   { M32RBF_INSN_STH, model_m32r_d_sth, { { (int) UNIT_M32R_D_U_STORE, 1, 1 } } },
   4150      1.1  christos   { M32RBF_INSN_STH_D, model_m32r_d_sth_d, { { (int) UNIT_M32R_D_U_STORE, 1, 2 } } },
   4151      1.1  christos   { M32RBF_INSN_ST_PLUS, model_m32r_d_st_plus, { { (int) UNIT_M32R_D_U_STORE, 1, 1 }, { (int) UNIT_M32R_D_U_EXEC, 1, 0 } } },
   4152      1.1  christos   { M32RBF_INSN_ST_MINUS, model_m32r_d_st_minus, { { (int) UNIT_M32R_D_U_STORE, 1, 1 }, { (int) UNIT_M32R_D_U_EXEC, 1, 0 } } },
   4153      1.1  christos   { M32RBF_INSN_SUB, model_m32r_d_sub, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4154      1.1  christos   { M32RBF_INSN_SUBV, model_m32r_d_subv, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4155      1.1  christos   { M32RBF_INSN_SUBX, model_m32r_d_subx, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4156      1.1  christos   { M32RBF_INSN_TRAP, model_m32r_d_trap, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4157      1.1  christos   { M32RBF_INSN_UNLOCK, model_m32r_d_unlock, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } },
   4158      1.1  christos   { M32RBF_INSN_CLRPSW, model_m32r_d_clrpsw, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4159      1.1  christos   { M32RBF_INSN_SETPSW, model_m32r_d_setpsw, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4160      1.1  christos   { M32RBF_INSN_BSET, model_m32r_d_bset, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4161      1.1  christos   { M32RBF_INSN_BCLR, model_m32r_d_bclr, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4162      1.1  christos   { M32RBF_INSN_BTST, model_m32r_d_btst, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
   4163      1.1  christos };
   4164      1.1  christos 
   4165      1.1  christos /* Model timing data for `test'.  */
   4166      1.1  christos 
   4167      1.1  christos static const INSN_TIMING test_timing[] = {
   4168      1.1  christos   { M32RBF_INSN_X_INVALID, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4169      1.1  christos   { M32RBF_INSN_X_AFTER, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4170      1.1  christos   { M32RBF_INSN_X_BEFORE, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4171      1.1  christos   { M32RBF_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4172      1.1  christos   { M32RBF_INSN_X_CHAIN, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4173      1.1  christos   { M32RBF_INSN_X_BEGIN, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4174      1.1  christos   { M32RBF_INSN_ADD, model_test_add, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4175      1.1  christos   { M32RBF_INSN_ADD3, model_test_add3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4176      1.1  christos   { M32RBF_INSN_AND, model_test_and, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4177      1.1  christos   { M32RBF_INSN_AND3, model_test_and3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4178      1.1  christos   { M32RBF_INSN_OR, model_test_or, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4179      1.1  christos   { M32RBF_INSN_OR3, model_test_or3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4180      1.1  christos   { M32RBF_INSN_XOR, model_test_xor, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4181      1.1  christos   { M32RBF_INSN_XOR3, model_test_xor3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4182      1.1  christos   { M32RBF_INSN_ADDI, model_test_addi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4183      1.1  christos   { M32RBF_INSN_ADDV, model_test_addv, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4184      1.1  christos   { M32RBF_INSN_ADDV3, model_test_addv3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4185      1.1  christos   { M32RBF_INSN_ADDX, model_test_addx, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4186      1.1  christos   { M32RBF_INSN_BC8, model_test_bc8, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4187      1.1  christos   { M32RBF_INSN_BC24, model_test_bc24, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4188      1.1  christos   { M32RBF_INSN_BEQ, model_test_beq, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4189      1.1  christos   { M32RBF_INSN_BEQZ, model_test_beqz, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4190      1.1  christos   { M32RBF_INSN_BGEZ, model_test_bgez, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4191      1.1  christos   { M32RBF_INSN_BGTZ, model_test_bgtz, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4192      1.1  christos   { M32RBF_INSN_BLEZ, model_test_blez, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4193      1.1  christos   { M32RBF_INSN_BLTZ, model_test_bltz, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4194      1.1  christos   { M32RBF_INSN_BNEZ, model_test_bnez, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4195      1.1  christos   { M32RBF_INSN_BL8, model_test_bl8, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4196      1.1  christos   { M32RBF_INSN_BL24, model_test_bl24, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4197      1.1  christos   { M32RBF_INSN_BNC8, model_test_bnc8, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4198      1.1  christos   { M32RBF_INSN_BNC24, model_test_bnc24, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4199      1.1  christos   { M32RBF_INSN_BNE, model_test_bne, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4200      1.1  christos   { M32RBF_INSN_BRA8, model_test_bra8, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4201      1.1  christos   { M32RBF_INSN_BRA24, model_test_bra24, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4202      1.1  christos   { M32RBF_INSN_CMP, model_test_cmp, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4203      1.1  christos   { M32RBF_INSN_CMPI, model_test_cmpi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4204      1.1  christos   { M32RBF_INSN_CMPU, model_test_cmpu, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4205      1.1  christos   { M32RBF_INSN_CMPUI, model_test_cmpui, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4206      1.1  christos   { M32RBF_INSN_DIV, model_test_div, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4207      1.1  christos   { M32RBF_INSN_DIVU, model_test_divu, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4208      1.1  christos   { M32RBF_INSN_REM, model_test_rem, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4209      1.1  christos   { M32RBF_INSN_REMU, model_test_remu, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4210      1.1  christos   { M32RBF_INSN_JL, model_test_jl, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4211      1.1  christos   { M32RBF_INSN_JMP, model_test_jmp, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4212      1.1  christos   { M32RBF_INSN_LD, model_test_ld, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4213      1.1  christos   { M32RBF_INSN_LD_D, model_test_ld_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4214      1.1  christos   { M32RBF_INSN_LDB, model_test_ldb, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4215      1.1  christos   { M32RBF_INSN_LDB_D, model_test_ldb_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4216      1.1  christos   { M32RBF_INSN_LDH, model_test_ldh, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4217      1.1  christos   { M32RBF_INSN_LDH_D, model_test_ldh_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4218      1.1  christos   { M32RBF_INSN_LDUB, model_test_ldub, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4219      1.1  christos   { M32RBF_INSN_LDUB_D, model_test_ldub_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4220      1.1  christos   { M32RBF_INSN_LDUH, model_test_lduh, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4221      1.1  christos   { M32RBF_INSN_LDUH_D, model_test_lduh_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4222      1.1  christos   { M32RBF_INSN_LD_PLUS, model_test_ld_plus, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4223      1.1  christos   { M32RBF_INSN_LD24, model_test_ld24, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4224      1.1  christos   { M32RBF_INSN_LDI8, model_test_ldi8, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4225      1.1  christos   { M32RBF_INSN_LDI16, model_test_ldi16, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4226      1.1  christos   { M32RBF_INSN_LOCK, model_test_lock, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4227      1.1  christos   { M32RBF_INSN_MACHI, model_test_machi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4228      1.1  christos   { M32RBF_INSN_MACLO, model_test_maclo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4229      1.1  christos   { M32RBF_INSN_MACWHI, model_test_macwhi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4230      1.1  christos   { M32RBF_INSN_MACWLO, model_test_macwlo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4231      1.1  christos   { M32RBF_INSN_MUL, model_test_mul, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4232      1.1  christos   { M32RBF_INSN_MULHI, model_test_mulhi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4233      1.1  christos   { M32RBF_INSN_MULLO, model_test_mullo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4234      1.1  christos   { M32RBF_INSN_MULWHI, model_test_mulwhi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4235      1.1  christos   { M32RBF_INSN_MULWLO, model_test_mulwlo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4236      1.1  christos   { M32RBF_INSN_MV, model_test_mv, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4237      1.1  christos   { M32RBF_INSN_MVFACHI, model_test_mvfachi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4238      1.1  christos   { M32RBF_INSN_MVFACLO, model_test_mvfaclo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4239      1.1  christos   { M32RBF_INSN_MVFACMI, model_test_mvfacmi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4240      1.1  christos   { M32RBF_INSN_MVFC, model_test_mvfc, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4241      1.1  christos   { M32RBF_INSN_MVTACHI, model_test_mvtachi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4242      1.1  christos   { M32RBF_INSN_MVTACLO, model_test_mvtaclo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4243      1.1  christos   { M32RBF_INSN_MVTC, model_test_mvtc, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4244      1.1  christos   { M32RBF_INSN_NEG, model_test_neg, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4245      1.1  christos   { M32RBF_INSN_NOP, model_test_nop, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4246      1.1  christos   { M32RBF_INSN_NOT, model_test_not, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4247      1.1  christos   { M32RBF_INSN_RAC, model_test_rac, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4248      1.1  christos   { M32RBF_INSN_RACH, model_test_rach, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4249      1.1  christos   { M32RBF_INSN_RTE, model_test_rte, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4250      1.1  christos   { M32RBF_INSN_SETH, model_test_seth, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4251      1.1  christos   { M32RBF_INSN_SLL, model_test_sll, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4252      1.1  christos   { M32RBF_INSN_SLL3, model_test_sll3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4253      1.1  christos   { M32RBF_INSN_SLLI, model_test_slli, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4254      1.1  christos   { M32RBF_INSN_SRA, model_test_sra, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4255      1.1  christos   { M32RBF_INSN_SRA3, model_test_sra3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4256      1.1  christos   { M32RBF_INSN_SRAI, model_test_srai, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4257      1.1  christos   { M32RBF_INSN_SRL, model_test_srl, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4258      1.1  christos   { M32RBF_INSN_SRL3, model_test_srl3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4259      1.1  christos   { M32RBF_INSN_SRLI, model_test_srli, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4260      1.1  christos   { M32RBF_INSN_ST, model_test_st, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4261      1.1  christos   { M32RBF_INSN_ST_D, model_test_st_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4262      1.1  christos   { M32RBF_INSN_STB, model_test_stb, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4263      1.1  christos   { M32RBF_INSN_STB_D, model_test_stb_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4264      1.1  christos   { M32RBF_INSN_STH, model_test_sth, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4265      1.1  christos   { M32RBF_INSN_STH_D, model_test_sth_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4266      1.1  christos   { M32RBF_INSN_ST_PLUS, model_test_st_plus, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4267      1.1  christos   { M32RBF_INSN_ST_MINUS, model_test_st_minus, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4268      1.1  christos   { M32RBF_INSN_SUB, model_test_sub, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4269      1.1  christos   { M32RBF_INSN_SUBV, model_test_subv, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4270      1.1  christos   { M32RBF_INSN_SUBX, model_test_subx, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4271      1.1  christos   { M32RBF_INSN_TRAP, model_test_trap, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4272      1.1  christos   { M32RBF_INSN_UNLOCK, model_test_unlock, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4273      1.1  christos   { M32RBF_INSN_CLRPSW, model_test_clrpsw, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4274      1.1  christos   { M32RBF_INSN_SETPSW, model_test_setpsw, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4275      1.1  christos   { M32RBF_INSN_BSET, model_test_bset, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4276      1.1  christos   { M32RBF_INSN_BCLR, model_test_bclr, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4277      1.1  christos   { M32RBF_INSN_BTST, model_test_btst, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
   4278      1.1  christos };
   4279      1.1  christos 
   4280      1.1  christos #endif /* WITH_PROFILE_MODEL_P */
   4281      1.1  christos 
   4282      1.1  christos static void
   4283      1.1  christos m32r_d_model_init (SIM_CPU *cpu)
   4284      1.1  christos {
   4285      1.1  christos   CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_M32R_D_DATA));
   4286      1.1  christos }
   4287      1.1  christos 
   4288      1.1  christos static void
   4289      1.1  christos test_model_init (SIM_CPU *cpu)
   4290      1.1  christos {
   4291      1.1  christos   CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_TEST_DATA));
   4292      1.1  christos }
   4293      1.1  christos 
   4294      1.1  christos #if WITH_PROFILE_MODEL_P
   4295      1.1  christos #define TIMING_DATA(td) td
   4296      1.1  christos #else
   4297      1.1  christos #define TIMING_DATA(td) 0
   4298      1.1  christos #endif
   4299      1.1  christos 
   4300  1.1.1.3  christos static const SIM_MODEL m32r_models[] =
   4301      1.1  christos {
   4302      1.1  christos   { "m32r/d", & m32r_mach, MODEL_M32R_D, TIMING_DATA (& m32r_d_timing[0]), m32r_d_model_init },
   4303      1.1  christos   { "test", & m32r_mach, MODEL_TEST, TIMING_DATA (& test_timing[0]), test_model_init },
   4304      1.1  christos   { 0 }
   4305      1.1  christos };
   4306      1.1  christos 
   4307      1.1  christos /* The properties of this cpu's implementation.  */
   4308      1.1  christos 
   4309  1.1.1.3  christos static const SIM_MACH_IMP_PROPERTIES m32rbf_imp_properties =
   4310      1.1  christos {
   4311      1.1  christos   sizeof (SIM_CPU),
   4312      1.1  christos #if WITH_SCACHE
   4313      1.1  christos   sizeof (SCACHE)
   4314      1.1  christos #else
   4315      1.1  christos   0
   4316      1.1  christos #endif
   4317      1.1  christos };
   4318      1.1  christos 
   4319      1.1  christos 
   4320      1.1  christos static void
   4321      1.1  christos m32rbf_prepare_run (SIM_CPU *cpu)
   4322      1.1  christos {
   4323      1.1  christos   if (CPU_IDESC (cpu) == NULL)
   4324      1.1  christos     m32rbf_init_idesc_table (cpu);
   4325      1.1  christos }
   4326      1.1  christos 
   4327      1.1  christos static const CGEN_INSN *
   4328      1.1  christos m32rbf_get_idata (SIM_CPU *cpu, int inum)
   4329      1.1  christos {
   4330      1.1  christos   return CPU_IDESC (cpu) [inum].idata;
   4331      1.1  christos }
   4332      1.1  christos 
   4333      1.1  christos static void
   4334      1.1  christos m32r_init_cpu (SIM_CPU *cpu)
   4335      1.1  christos {
   4336      1.1  christos   CPU_REG_FETCH (cpu) = m32rbf_fetch_register;
   4337      1.1  christos   CPU_REG_STORE (cpu) = m32rbf_store_register;
   4338      1.1  christos   CPU_PC_FETCH (cpu) = m32rbf_h_pc_get;
   4339      1.1  christos   CPU_PC_STORE (cpu) = m32rbf_h_pc_set;
   4340      1.1  christos   CPU_GET_IDATA (cpu) = m32rbf_get_idata;
   4341      1.1  christos   CPU_MAX_INSNS (cpu) = M32RBF_INSN__MAX;
   4342      1.1  christos   CPU_INSN_NAME (cpu) = cgen_insn_name;
   4343      1.1  christos   CPU_FULL_ENGINE_FN (cpu) = m32rbf_engine_run_full;
   4344      1.1  christos #if WITH_FAST
   4345      1.1  christos   CPU_FAST_ENGINE_FN (cpu) = m32rbf_engine_run_fast;
   4346      1.1  christos #else
   4347      1.1  christos   CPU_FAST_ENGINE_FN (cpu) = m32rbf_engine_run_full;
   4348      1.1  christos #endif
   4349      1.1  christos }
   4350      1.1  christos 
   4351  1.1.1.3  christos const SIM_MACH m32r_mach =
   4352      1.1  christos {
   4353      1.1  christos   "m32r", "m32r", MACH_M32R,
   4354      1.1  christos   32, 32, & m32r_models[0], & m32rbf_imp_properties,
   4355      1.1  christos   m32r_init_cpu,
   4356      1.1  christos   m32rbf_prepare_run
   4357      1.1  christos };
   4358      1.1  christos 
   4359