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