Home | History | Annotate | Line # | Download | only in cris
modelv10.c revision 1.1
      1  1.1  christos /* Simulator model support for crisv10f.
      2  1.1  christos 
      3  1.1  christos THIS FILE IS MACHINE GENERATED WITH CGEN.
      4  1.1  christos 
      5  1.1  christos Copyright 1996-2014 Free Software Foundation, Inc.
      6  1.1  christos 
      7  1.1  christos This file is part of the GNU simulators.
      8  1.1  christos 
      9  1.1  christos    This file is free software; you can redistribute it and/or modify
     10  1.1  christos    it under the terms of the GNU General Public License as published by
     11  1.1  christos    the Free Software Foundation; either version 3, or (at your option)
     12  1.1  christos    any later version.
     13  1.1  christos 
     14  1.1  christos    It is distributed in the hope that it will be useful, but WITHOUT
     15  1.1  christos    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     16  1.1  christos    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
     17  1.1  christos    License for more details.
     18  1.1  christos 
     19  1.1  christos    You should have received a copy of the GNU General Public License along
     20  1.1  christos    with this program; if not, see <http://www.gnu.org/licenses/>.
     21  1.1  christos 
     22  1.1  christos */
     23  1.1  christos 
     24  1.1  christos #define WANT_CPU crisv10f
     25  1.1  christos #define WANT_CPU_CRISV10F
     26  1.1  christos 
     27  1.1  christos #include "sim-main.h"
     28  1.1  christos 
     29  1.1  christos /* The profiling data is recorded here, but is accessed via the profiling
     30  1.1  christos    mechanism.  After all, this is information for profiling.  */
     31  1.1  christos 
     32  1.1  christos #if WITH_PROFILE_MODEL_P
     33  1.1  christos 
     34  1.1  christos /* Model handlers for each insn.  */
     35  1.1  christos 
     36  1.1  christos static int
     37  1.1  christos model_crisv10_nop (SIM_CPU *current_cpu, void *sem_arg)
     38  1.1  christos {
     39  1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
     40  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
     41  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
     42  1.1  christos   int cycles = 0;
     43  1.1  christos   {
     44  1.1  christos     int referenced = 0;
     45  1.1  christos     int UNUSED insn_referenced = abuf->written;
     46  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
     47  1.1  christos   }
     48  1.1  christos   return cycles;
     49  1.1  christos #undef FLD
     50  1.1  christos }
     51  1.1  christos 
     52  1.1  christos static int
     53  1.1  christos model_crisv10_move_b_r (SIM_CPU *current_cpu, void *sem_arg)
     54  1.1  christos {
     55  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
     56  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
     57  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
     58  1.1  christos   int cycles = 0;
     59  1.1  christos   {
     60  1.1  christos     int referenced = 0;
     61  1.1  christos     int UNUSED insn_referenced = abuf->written;
     62  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
     63  1.1  christos   }
     64  1.1  christos   return cycles;
     65  1.1  christos #undef FLD
     66  1.1  christos }
     67  1.1  christos 
     68  1.1  christos static int
     69  1.1  christos model_crisv10_move_w_r (SIM_CPU *current_cpu, void *sem_arg)
     70  1.1  christos {
     71  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
     72  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
     73  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
     74  1.1  christos   int cycles = 0;
     75  1.1  christos   {
     76  1.1  christos     int referenced = 0;
     77  1.1  christos     int UNUSED insn_referenced = abuf->written;
     78  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
     79  1.1  christos   }
     80  1.1  christos   return cycles;
     81  1.1  christos #undef FLD
     82  1.1  christos }
     83  1.1  christos 
     84  1.1  christos static int
     85  1.1  christos model_crisv10_move_d_r (SIM_CPU *current_cpu, void *sem_arg)
     86  1.1  christos {
     87  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
     88  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
     89  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
     90  1.1  christos   int cycles = 0;
     91  1.1  christos   {
     92  1.1  christos     int referenced = 0;
     93  1.1  christos     int UNUSED insn_referenced = abuf->written;
     94  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
     95  1.1  christos   }
     96  1.1  christos   return cycles;
     97  1.1  christos #undef FLD
     98  1.1  christos }
     99  1.1  christos 
    100  1.1  christos static int
    101  1.1  christos model_crisv10_movepcr (SIM_CPU *current_cpu, void *sem_arg)
    102  1.1  christos {
    103  1.1  christos #define FLD(f) abuf->fields.sfmt_moveq.f
    104  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    105  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    106  1.1  christos   int cycles = 0;
    107  1.1  christos   {
    108  1.1  christos     int referenced = 0;
    109  1.1  christos     int UNUSED insn_referenced = abuf->written;
    110  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
    111  1.1  christos   }
    112  1.1  christos   return cycles;
    113  1.1  christos #undef FLD
    114  1.1  christos }
    115  1.1  christos 
    116  1.1  christos static int
    117  1.1  christos model_crisv10_moveq (SIM_CPU *current_cpu, void *sem_arg)
    118  1.1  christos {
    119  1.1  christos #define FLD(f) abuf->fields.sfmt_moveq.f
    120  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    121  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    122  1.1  christos   int cycles = 0;
    123  1.1  christos   {
    124  1.1  christos     int referenced = 0;
    125  1.1  christos     int UNUSED insn_referenced = abuf->written;
    126  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
    127  1.1  christos   }
    128  1.1  christos   return cycles;
    129  1.1  christos #undef FLD
    130  1.1  christos }
    131  1.1  christos 
    132  1.1  christos static int
    133  1.1  christos model_crisv10_movs_b_r (SIM_CPU *current_cpu, void *sem_arg)
    134  1.1  christos {
    135  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
    136  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    137  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    138  1.1  christos   int cycles = 0;
    139  1.1  christos   {
    140  1.1  christos     int referenced = 0;
    141  1.1  christos     int UNUSED insn_referenced = abuf->written;
    142  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
    143  1.1  christos   }
    144  1.1  christos   return cycles;
    145  1.1  christos #undef FLD
    146  1.1  christos }
    147  1.1  christos 
    148  1.1  christos static int
    149  1.1  christos model_crisv10_movs_w_r (SIM_CPU *current_cpu, void *sem_arg)
    150  1.1  christos {
    151  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
    152  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    153  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    154  1.1  christos   int cycles = 0;
    155  1.1  christos   {
    156  1.1  christos     int referenced = 0;
    157  1.1  christos     int UNUSED insn_referenced = abuf->written;
    158  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
    159  1.1  christos   }
    160  1.1  christos   return cycles;
    161  1.1  christos #undef FLD
    162  1.1  christos }
    163  1.1  christos 
    164  1.1  christos static int
    165  1.1  christos model_crisv10_movu_b_r (SIM_CPU *current_cpu, void *sem_arg)
    166  1.1  christos {
    167  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
    168  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    169  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    170  1.1  christos   int cycles = 0;
    171  1.1  christos   {
    172  1.1  christos     int referenced = 0;
    173  1.1  christos     int UNUSED insn_referenced = abuf->written;
    174  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
    175  1.1  christos   }
    176  1.1  christos   return cycles;
    177  1.1  christos #undef FLD
    178  1.1  christos }
    179  1.1  christos 
    180  1.1  christos static int
    181  1.1  christos model_crisv10_movu_w_r (SIM_CPU *current_cpu, void *sem_arg)
    182  1.1  christos {
    183  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
    184  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    185  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    186  1.1  christos   int cycles = 0;
    187  1.1  christos   {
    188  1.1  christos     int referenced = 0;
    189  1.1  christos     int UNUSED insn_referenced = abuf->written;
    190  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
    191  1.1  christos   }
    192  1.1  christos   return cycles;
    193  1.1  christos #undef FLD
    194  1.1  christos }
    195  1.1  christos 
    196  1.1  christos static int
    197  1.1  christos model_crisv10_movecbr (SIM_CPU *current_cpu, void *sem_arg)
    198  1.1  christos {
    199  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
    200  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    201  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    202  1.1  christos   int cycles = 0;
    203  1.1  christos   {
    204  1.1  christos     int referenced = 0;
    205  1.1  christos     int UNUSED insn_referenced = abuf->written;
    206  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
    207  1.1  christos   }
    208  1.1  christos   {
    209  1.1  christos     int referenced = 0;
    210  1.1  christos     int UNUSED insn_referenced = abuf->written;
    211  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    212  1.1  christos   }
    213  1.1  christos   return cycles;
    214  1.1  christos #undef FLD
    215  1.1  christos }
    216  1.1  christos 
    217  1.1  christos static int
    218  1.1  christos model_crisv10_movecwr (SIM_CPU *current_cpu, void *sem_arg)
    219  1.1  christos {
    220  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
    221  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    222  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    223  1.1  christos   int cycles = 0;
    224  1.1  christos   {
    225  1.1  christos     int referenced = 0;
    226  1.1  christos     int UNUSED insn_referenced = abuf->written;
    227  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
    228  1.1  christos   }
    229  1.1  christos   {
    230  1.1  christos     int referenced = 0;
    231  1.1  christos     int UNUSED insn_referenced = abuf->written;
    232  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    233  1.1  christos   }
    234  1.1  christos   return cycles;
    235  1.1  christos #undef FLD
    236  1.1  christos }
    237  1.1  christos 
    238  1.1  christos static int
    239  1.1  christos model_crisv10_movecdr (SIM_CPU *current_cpu, void *sem_arg)
    240  1.1  christos {
    241  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
    242  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    243  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    244  1.1  christos   int cycles = 0;
    245  1.1  christos   {
    246  1.1  christos     int referenced = 0;
    247  1.1  christos     int UNUSED insn_referenced = abuf->written;
    248  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
    249  1.1  christos   }
    250  1.1  christos   {
    251  1.1  christos     int referenced = 0;
    252  1.1  christos     int UNUSED insn_referenced = abuf->written;
    253  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    254  1.1  christos   }
    255  1.1  christos   return cycles;
    256  1.1  christos #undef FLD
    257  1.1  christos }
    258  1.1  christos 
    259  1.1  christos static int
    260  1.1  christos model_crisv10_movscbr (SIM_CPU *current_cpu, void *sem_arg)
    261  1.1  christos {
    262  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
    263  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    264  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    265  1.1  christos   int cycles = 0;
    266  1.1  christos   {
    267  1.1  christos     int referenced = 0;
    268  1.1  christos     int UNUSED insn_referenced = abuf->written;
    269  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
    270  1.1  christos   }
    271  1.1  christos   {
    272  1.1  christos     int referenced = 0;
    273  1.1  christos     int UNUSED insn_referenced = abuf->written;
    274  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    275  1.1  christos   }
    276  1.1  christos   return cycles;
    277  1.1  christos #undef FLD
    278  1.1  christos }
    279  1.1  christos 
    280  1.1  christos static int
    281  1.1  christos model_crisv10_movscwr (SIM_CPU *current_cpu, void *sem_arg)
    282  1.1  christos {
    283  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
    284  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    285  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    286  1.1  christos   int cycles = 0;
    287  1.1  christos   {
    288  1.1  christos     int referenced = 0;
    289  1.1  christos     int UNUSED insn_referenced = abuf->written;
    290  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
    291  1.1  christos   }
    292  1.1  christos   {
    293  1.1  christos     int referenced = 0;
    294  1.1  christos     int UNUSED insn_referenced = abuf->written;
    295  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    296  1.1  christos   }
    297  1.1  christos   return cycles;
    298  1.1  christos #undef FLD
    299  1.1  christos }
    300  1.1  christos 
    301  1.1  christos static int
    302  1.1  christos model_crisv10_movucbr (SIM_CPU *current_cpu, void *sem_arg)
    303  1.1  christos {
    304  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
    305  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    306  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    307  1.1  christos   int cycles = 0;
    308  1.1  christos   {
    309  1.1  christos     int referenced = 0;
    310  1.1  christos     int UNUSED insn_referenced = abuf->written;
    311  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
    312  1.1  christos   }
    313  1.1  christos   {
    314  1.1  christos     int referenced = 0;
    315  1.1  christos     int UNUSED insn_referenced = abuf->written;
    316  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    317  1.1  christos   }
    318  1.1  christos   return cycles;
    319  1.1  christos #undef FLD
    320  1.1  christos }
    321  1.1  christos 
    322  1.1  christos static int
    323  1.1  christos model_crisv10_movucwr (SIM_CPU *current_cpu, void *sem_arg)
    324  1.1  christos {
    325  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
    326  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    327  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    328  1.1  christos   int cycles = 0;
    329  1.1  christos   {
    330  1.1  christos     int referenced = 0;
    331  1.1  christos     int UNUSED insn_referenced = abuf->written;
    332  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
    333  1.1  christos   }
    334  1.1  christos   {
    335  1.1  christos     int referenced = 0;
    336  1.1  christos     int UNUSED insn_referenced = abuf->written;
    337  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    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_crisv10_addq (SIM_CPU *current_cpu, void *sem_arg)
    345  1.1  christos {
    346  1.1  christos #define FLD(f) abuf->fields.sfmt_addq.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     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
    354  1.1  christos   }
    355  1.1  christos   return cycles;
    356  1.1  christos #undef FLD
    357  1.1  christos }
    358  1.1  christos 
    359  1.1  christos static int
    360  1.1  christos model_crisv10_subq (SIM_CPU *current_cpu, void *sem_arg)
    361  1.1  christos {
    362  1.1  christos #define FLD(f) abuf->fields.sfmt_addq.f
    363  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    364  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    365  1.1  christos   int cycles = 0;
    366  1.1  christos   {
    367  1.1  christos     int referenced = 0;
    368  1.1  christos     int UNUSED insn_referenced = abuf->written;
    369  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
    370  1.1  christos   }
    371  1.1  christos   return cycles;
    372  1.1  christos #undef FLD
    373  1.1  christos }
    374  1.1  christos 
    375  1.1  christos static int
    376  1.1  christos model_crisv10_cmp_r_b_r (SIM_CPU *current_cpu, void *sem_arg)
    377  1.1  christos {
    378  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
    379  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    380  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    381  1.1  christos   int cycles = 0;
    382  1.1  christos   {
    383  1.1  christos     int referenced = 0;
    384  1.1  christos     int UNUSED insn_referenced = abuf->written;
    385  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
    386  1.1  christos   }
    387  1.1  christos   return cycles;
    388  1.1  christos #undef FLD
    389  1.1  christos }
    390  1.1  christos 
    391  1.1  christos static int
    392  1.1  christos model_crisv10_cmp_r_w_r (SIM_CPU *current_cpu, void *sem_arg)
    393  1.1  christos {
    394  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
    395  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    396  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    397  1.1  christos   int cycles = 0;
    398  1.1  christos   {
    399  1.1  christos     int referenced = 0;
    400  1.1  christos     int UNUSED insn_referenced = abuf->written;
    401  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
    402  1.1  christos   }
    403  1.1  christos   return cycles;
    404  1.1  christos #undef FLD
    405  1.1  christos }
    406  1.1  christos 
    407  1.1  christos static int
    408  1.1  christos model_crisv10_cmp_r_d_r (SIM_CPU *current_cpu, void *sem_arg)
    409  1.1  christos {
    410  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
    411  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    412  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    413  1.1  christos   int cycles = 0;
    414  1.1  christos   {
    415  1.1  christos     int referenced = 0;
    416  1.1  christos     int UNUSED insn_referenced = abuf->written;
    417  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
    418  1.1  christos   }
    419  1.1  christos   return cycles;
    420  1.1  christos #undef FLD
    421  1.1  christos }
    422  1.1  christos 
    423  1.1  christos static int
    424  1.1  christos model_crisv10_cmp_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
    425  1.1  christos {
    426  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
    427  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    428  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    429  1.1  christos   int cycles = 0;
    430  1.1  christos   {
    431  1.1  christos     int referenced = 0;
    432  1.1  christos     int UNUSED insn_referenced = abuf->written;
    433  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
    434  1.1  christos   }
    435  1.1  christos   {
    436  1.1  christos     int referenced = 0;
    437  1.1  christos     int UNUSED insn_referenced = abuf->written;
    438  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    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_crisv10_cmp_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
    446  1.1  christos {
    447  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.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     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
    455  1.1  christos   }
    456  1.1  christos   {
    457  1.1  christos     int referenced = 0;
    458  1.1  christos     int UNUSED insn_referenced = abuf->written;
    459  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    460  1.1  christos   }
    461  1.1  christos   return cycles;
    462  1.1  christos #undef FLD
    463  1.1  christos }
    464  1.1  christos 
    465  1.1  christos static int
    466  1.1  christos model_crisv10_cmp_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
    467  1.1  christos {
    468  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
    469  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    470  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    471  1.1  christos   int cycles = 0;
    472  1.1  christos   {
    473  1.1  christos     int referenced = 0;
    474  1.1  christos     int UNUSED insn_referenced = abuf->written;
    475  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
    476  1.1  christos   }
    477  1.1  christos   {
    478  1.1  christos     int referenced = 0;
    479  1.1  christos     int UNUSED insn_referenced = abuf->written;
    480  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    481  1.1  christos   }
    482  1.1  christos   return cycles;
    483  1.1  christos #undef FLD
    484  1.1  christos }
    485  1.1  christos 
    486  1.1  christos static int
    487  1.1  christos model_crisv10_cmpcbr (SIM_CPU *current_cpu, void *sem_arg)
    488  1.1  christos {
    489  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
    490  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    491  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    492  1.1  christos   int cycles = 0;
    493  1.1  christos   {
    494  1.1  christos     int referenced = 0;
    495  1.1  christos     int UNUSED insn_referenced = abuf->written;
    496  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
    497  1.1  christos   }
    498  1.1  christos   {
    499  1.1  christos     int referenced = 0;
    500  1.1  christos     int UNUSED insn_referenced = abuf->written;
    501  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    502  1.1  christos   }
    503  1.1  christos   return cycles;
    504  1.1  christos #undef FLD
    505  1.1  christos }
    506  1.1  christos 
    507  1.1  christos static int
    508  1.1  christos model_crisv10_cmpcwr (SIM_CPU *current_cpu, void *sem_arg)
    509  1.1  christos {
    510  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
    511  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    512  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    513  1.1  christos   int cycles = 0;
    514  1.1  christos   {
    515  1.1  christos     int referenced = 0;
    516  1.1  christos     int UNUSED insn_referenced = abuf->written;
    517  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
    518  1.1  christos   }
    519  1.1  christos   {
    520  1.1  christos     int referenced = 0;
    521  1.1  christos     int UNUSED insn_referenced = abuf->written;
    522  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    523  1.1  christos   }
    524  1.1  christos   return cycles;
    525  1.1  christos #undef FLD
    526  1.1  christos }
    527  1.1  christos 
    528  1.1  christos static int
    529  1.1  christos model_crisv10_cmpcdr (SIM_CPU *current_cpu, void *sem_arg)
    530  1.1  christos {
    531  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
    532  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    533  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    534  1.1  christos   int cycles = 0;
    535  1.1  christos   {
    536  1.1  christos     int referenced = 0;
    537  1.1  christos     int UNUSED insn_referenced = abuf->written;
    538  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
    539  1.1  christos   }
    540  1.1  christos   {
    541  1.1  christos     int referenced = 0;
    542  1.1  christos     int UNUSED insn_referenced = abuf->written;
    543  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    544  1.1  christos   }
    545  1.1  christos   return cycles;
    546  1.1  christos #undef FLD
    547  1.1  christos }
    548  1.1  christos 
    549  1.1  christos static int
    550  1.1  christos model_crisv10_cmpq (SIM_CPU *current_cpu, void *sem_arg)
    551  1.1  christos {
    552  1.1  christos #define FLD(f) abuf->fields.sfmt_andq.f
    553  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    554  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    555  1.1  christos   int cycles = 0;
    556  1.1  christos   {
    557  1.1  christos     int referenced = 0;
    558  1.1  christos     int UNUSED insn_referenced = abuf->written;
    559  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
    560  1.1  christos   }
    561  1.1  christos   return cycles;
    562  1.1  christos #undef FLD
    563  1.1  christos }
    564  1.1  christos 
    565  1.1  christos static int
    566  1.1  christos model_crisv10_cmps_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
    567  1.1  christos {
    568  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
    569  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    570  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    571  1.1  christos   int cycles = 0;
    572  1.1  christos   {
    573  1.1  christos     int referenced = 0;
    574  1.1  christos     int UNUSED insn_referenced = abuf->written;
    575  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
    576  1.1  christos   }
    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     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    581  1.1  christos   }
    582  1.1  christos   return cycles;
    583  1.1  christos #undef FLD
    584  1.1  christos }
    585  1.1  christos 
    586  1.1  christos static int
    587  1.1  christos model_crisv10_cmps_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
    588  1.1  christos {
    589  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
    590  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    591  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    592  1.1  christos   int cycles = 0;
    593  1.1  christos   {
    594  1.1  christos     int referenced = 0;
    595  1.1  christos     int UNUSED insn_referenced = abuf->written;
    596  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
    597  1.1  christos   }
    598  1.1  christos   {
    599  1.1  christos     int referenced = 0;
    600  1.1  christos     int UNUSED insn_referenced = abuf->written;
    601  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    602  1.1  christos   }
    603  1.1  christos   return cycles;
    604  1.1  christos #undef FLD
    605  1.1  christos }
    606  1.1  christos 
    607  1.1  christos static int
    608  1.1  christos model_crisv10_cmpscbr (SIM_CPU *current_cpu, void *sem_arg)
    609  1.1  christos {
    610  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
    611  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    612  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    613  1.1  christos   int cycles = 0;
    614  1.1  christos   {
    615  1.1  christos     int referenced = 0;
    616  1.1  christos     int UNUSED insn_referenced = abuf->written;
    617  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
    618  1.1  christos   }
    619  1.1  christos   {
    620  1.1  christos     int referenced = 0;
    621  1.1  christos     int UNUSED insn_referenced = abuf->written;
    622  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    623  1.1  christos   }
    624  1.1  christos   return cycles;
    625  1.1  christos #undef FLD
    626  1.1  christos }
    627  1.1  christos 
    628  1.1  christos static int
    629  1.1  christos model_crisv10_cmpscwr (SIM_CPU *current_cpu, void *sem_arg)
    630  1.1  christos {
    631  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
    632  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    633  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    634  1.1  christos   int cycles = 0;
    635  1.1  christos   {
    636  1.1  christos     int referenced = 0;
    637  1.1  christos     int UNUSED insn_referenced = abuf->written;
    638  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
    639  1.1  christos   }
    640  1.1  christos   {
    641  1.1  christos     int referenced = 0;
    642  1.1  christos     int UNUSED insn_referenced = abuf->written;
    643  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    644  1.1  christos   }
    645  1.1  christos   return cycles;
    646  1.1  christos #undef FLD
    647  1.1  christos }
    648  1.1  christos 
    649  1.1  christos static int
    650  1.1  christos model_crisv10_cmpu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
    651  1.1  christos {
    652  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
    653  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    654  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    655  1.1  christos   int cycles = 0;
    656  1.1  christos   {
    657  1.1  christos     int referenced = 0;
    658  1.1  christos     int UNUSED insn_referenced = abuf->written;
    659  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
    660  1.1  christos   }
    661  1.1  christos   {
    662  1.1  christos     int referenced = 0;
    663  1.1  christos     int UNUSED insn_referenced = abuf->written;
    664  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    665  1.1  christos   }
    666  1.1  christos   return cycles;
    667  1.1  christos #undef FLD
    668  1.1  christos }
    669  1.1  christos 
    670  1.1  christos static int
    671  1.1  christos model_crisv10_cmpu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
    672  1.1  christos {
    673  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
    674  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    675  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    676  1.1  christos   int cycles = 0;
    677  1.1  christos   {
    678  1.1  christos     int referenced = 0;
    679  1.1  christos     int UNUSED insn_referenced = abuf->written;
    680  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
    681  1.1  christos   }
    682  1.1  christos   {
    683  1.1  christos     int referenced = 0;
    684  1.1  christos     int UNUSED insn_referenced = abuf->written;
    685  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    686  1.1  christos   }
    687  1.1  christos   return cycles;
    688  1.1  christos #undef FLD
    689  1.1  christos }
    690  1.1  christos 
    691  1.1  christos static int
    692  1.1  christos model_crisv10_cmpucbr (SIM_CPU *current_cpu, void *sem_arg)
    693  1.1  christos {
    694  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
    695  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    696  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    697  1.1  christos   int cycles = 0;
    698  1.1  christos   {
    699  1.1  christos     int referenced = 0;
    700  1.1  christos     int UNUSED insn_referenced = abuf->written;
    701  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
    702  1.1  christos   }
    703  1.1  christos   {
    704  1.1  christos     int referenced = 0;
    705  1.1  christos     int UNUSED insn_referenced = abuf->written;
    706  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    707  1.1  christos   }
    708  1.1  christos   return cycles;
    709  1.1  christos #undef FLD
    710  1.1  christos }
    711  1.1  christos 
    712  1.1  christos static int
    713  1.1  christos model_crisv10_cmpucwr (SIM_CPU *current_cpu, void *sem_arg)
    714  1.1  christos {
    715  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
    716  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    717  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    718  1.1  christos   int cycles = 0;
    719  1.1  christos   {
    720  1.1  christos     int referenced = 0;
    721  1.1  christos     int UNUSED insn_referenced = abuf->written;
    722  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
    723  1.1  christos   }
    724  1.1  christos   {
    725  1.1  christos     int referenced = 0;
    726  1.1  christos     int UNUSED insn_referenced = abuf->written;
    727  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    728  1.1  christos   }
    729  1.1  christos   return cycles;
    730  1.1  christos #undef FLD
    731  1.1  christos }
    732  1.1  christos 
    733  1.1  christos static int
    734  1.1  christos model_crisv10_move_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
    735  1.1  christos {
    736  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
    737  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    738  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    739  1.1  christos   int cycles = 0;
    740  1.1  christos   {
    741  1.1  christos     int referenced = 0;
    742  1.1  christos     int UNUSED insn_referenced = abuf->written;
    743  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
    744  1.1  christos   }
    745  1.1  christos   {
    746  1.1  christos     int referenced = 0;
    747  1.1  christos     int UNUSED insn_referenced = abuf->written;
    748  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    749  1.1  christos   }
    750  1.1  christos   return cycles;
    751  1.1  christos #undef FLD
    752  1.1  christos }
    753  1.1  christos 
    754  1.1  christos static int
    755  1.1  christos model_crisv10_move_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
    756  1.1  christos {
    757  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
    758  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    759  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    760  1.1  christos   int cycles = 0;
    761  1.1  christos   {
    762  1.1  christos     int referenced = 0;
    763  1.1  christos     int UNUSED insn_referenced = abuf->written;
    764  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
    765  1.1  christos   }
    766  1.1  christos   {
    767  1.1  christos     int referenced = 0;
    768  1.1  christos     int UNUSED insn_referenced = abuf->written;
    769  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    770  1.1  christos   }
    771  1.1  christos   return cycles;
    772  1.1  christos #undef FLD
    773  1.1  christos }
    774  1.1  christos 
    775  1.1  christos static int
    776  1.1  christos model_crisv10_move_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
    777  1.1  christos {
    778  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
    779  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    780  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    781  1.1  christos   int cycles = 0;
    782  1.1  christos   {
    783  1.1  christos     int referenced = 0;
    784  1.1  christos     int UNUSED insn_referenced = abuf->written;
    785  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
    786  1.1  christos   }
    787  1.1  christos   {
    788  1.1  christos     int referenced = 0;
    789  1.1  christos     int UNUSED insn_referenced = abuf->written;
    790  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    791  1.1  christos   }
    792  1.1  christos   return cycles;
    793  1.1  christos #undef FLD
    794  1.1  christos }
    795  1.1  christos 
    796  1.1  christos static int
    797  1.1  christos model_crisv10_movs_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
    798  1.1  christos {
    799  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
    800  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    801  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    802  1.1  christos   int cycles = 0;
    803  1.1  christos   {
    804  1.1  christos     int referenced = 0;
    805  1.1  christos     int UNUSED insn_referenced = abuf->written;
    806  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
    807  1.1  christos   }
    808  1.1  christos   {
    809  1.1  christos     int referenced = 0;
    810  1.1  christos     int UNUSED insn_referenced = abuf->written;
    811  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    812  1.1  christos   }
    813  1.1  christos   return cycles;
    814  1.1  christos #undef FLD
    815  1.1  christos }
    816  1.1  christos 
    817  1.1  christos static int
    818  1.1  christos model_crisv10_movs_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
    819  1.1  christos {
    820  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
    821  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    822  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    823  1.1  christos   int cycles = 0;
    824  1.1  christos   {
    825  1.1  christos     int referenced = 0;
    826  1.1  christos     int UNUSED insn_referenced = abuf->written;
    827  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
    828  1.1  christos   }
    829  1.1  christos   {
    830  1.1  christos     int referenced = 0;
    831  1.1  christos     int UNUSED insn_referenced = abuf->written;
    832  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    833  1.1  christos   }
    834  1.1  christos   return cycles;
    835  1.1  christos #undef FLD
    836  1.1  christos }
    837  1.1  christos 
    838  1.1  christos static int
    839  1.1  christos model_crisv10_movu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
    840  1.1  christos {
    841  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
    842  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    843  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    844  1.1  christos   int cycles = 0;
    845  1.1  christos   {
    846  1.1  christos     int referenced = 0;
    847  1.1  christos     int UNUSED insn_referenced = abuf->written;
    848  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
    849  1.1  christos   }
    850  1.1  christos   {
    851  1.1  christos     int referenced = 0;
    852  1.1  christos     int UNUSED insn_referenced = abuf->written;
    853  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    854  1.1  christos   }
    855  1.1  christos   return cycles;
    856  1.1  christos #undef FLD
    857  1.1  christos }
    858  1.1  christos 
    859  1.1  christos static int
    860  1.1  christos model_crisv10_movu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
    861  1.1  christos {
    862  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
    863  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    864  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    865  1.1  christos   int cycles = 0;
    866  1.1  christos   {
    867  1.1  christos     int referenced = 0;
    868  1.1  christos     int UNUSED insn_referenced = abuf->written;
    869  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
    870  1.1  christos   }
    871  1.1  christos   {
    872  1.1  christos     int referenced = 0;
    873  1.1  christos     int UNUSED insn_referenced = abuf->written;
    874  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    875  1.1  christos   }
    876  1.1  christos   return cycles;
    877  1.1  christos #undef FLD
    878  1.1  christos }
    879  1.1  christos 
    880  1.1  christos static int
    881  1.1  christos model_crisv10_move_r_sprv10 (SIM_CPU *current_cpu, void *sem_arg)
    882  1.1  christos {
    883  1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
    884  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    885  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    886  1.1  christos   int cycles = 0;
    887  1.1  christos   {
    888  1.1  christos     int referenced = 0;
    889  1.1  christos     int UNUSED insn_referenced = abuf->written;
    890  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
    891  1.1  christos   }
    892  1.1  christos   return cycles;
    893  1.1  christos #undef FLD
    894  1.1  christos }
    895  1.1  christos 
    896  1.1  christos static int
    897  1.1  christos model_crisv10_move_spr_rv10 (SIM_CPU *current_cpu, void *sem_arg)
    898  1.1  christos {
    899  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_rv10.f
    900  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    901  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    902  1.1  christos   int cycles = 0;
    903  1.1  christos   {
    904  1.1  christos     int referenced = 0;
    905  1.1  christos     int UNUSED insn_referenced = abuf->written;
    906  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
    907  1.1  christos   }
    908  1.1  christos   return cycles;
    909  1.1  christos #undef FLD
    910  1.1  christos }
    911  1.1  christos 
    912  1.1  christos static int
    913  1.1  christos model_crisv10_ret_type (SIM_CPU *current_cpu, void *sem_arg)
    914  1.1  christos {
    915  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_rv10.f
    916  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    917  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    918  1.1  christos   int cycles = 0;
    919  1.1  christos   {
    920  1.1  christos     int referenced = 0;
    921  1.1  christos     int UNUSED insn_referenced = abuf->written;
    922  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
    923  1.1  christos   }
    924  1.1  christos   return cycles;
    925  1.1  christos #undef FLD
    926  1.1  christos }
    927  1.1  christos 
    928  1.1  christos static int
    929  1.1  christos model_crisv10_move_m_sprv10 (SIM_CPU *current_cpu, void *sem_arg)
    930  1.1  christos {
    931  1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
    932  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    933  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    934  1.1  christos   int cycles = 0;
    935  1.1  christos   {
    936  1.1  christos     int referenced = 0;
    937  1.1  christos     int UNUSED insn_referenced = abuf->written;
    938  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
    939  1.1  christos   }
    940  1.1  christos   {
    941  1.1  christos     int referenced = 0;
    942  1.1  christos     int UNUSED insn_referenced = abuf->written;
    943  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    944  1.1  christos   }
    945  1.1  christos   return cycles;
    946  1.1  christos #undef FLD
    947  1.1  christos }
    948  1.1  christos 
    949  1.1  christos static int
    950  1.1  christos model_crisv10_move_c_sprv10_p5 (SIM_CPU *current_cpu, void *sem_arg)
    951  1.1  christos {
    952  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p5.f
    953  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    954  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    955  1.1  christos   int cycles = 0;
    956  1.1  christos   {
    957  1.1  christos     int referenced = 0;
    958  1.1  christos     int UNUSED insn_referenced = abuf->written;
    959  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
    960  1.1  christos   }
    961  1.1  christos   {
    962  1.1  christos     int referenced = 0;
    963  1.1  christos     int UNUSED insn_referenced = abuf->written;
    964  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    965  1.1  christos   }
    966  1.1  christos   return cycles;
    967  1.1  christos #undef FLD
    968  1.1  christos }
    969  1.1  christos 
    970  1.1  christos static int
    971  1.1  christos model_crisv10_move_c_sprv10_p9 (SIM_CPU *current_cpu, void *sem_arg)
    972  1.1  christos {
    973  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
    974  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    975  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    976  1.1  christos   int cycles = 0;
    977  1.1  christos   {
    978  1.1  christos     int referenced = 0;
    979  1.1  christos     int UNUSED insn_referenced = abuf->written;
    980  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
    981  1.1  christos   }
    982  1.1  christos   {
    983  1.1  christos     int referenced = 0;
    984  1.1  christos     int UNUSED insn_referenced = abuf->written;
    985  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
    986  1.1  christos   }
    987  1.1  christos   return cycles;
    988  1.1  christos #undef FLD
    989  1.1  christos }
    990  1.1  christos 
    991  1.1  christos static int
    992  1.1  christos model_crisv10_move_c_sprv10_p10 (SIM_CPU *current_cpu, void *sem_arg)
    993  1.1  christos {
    994  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
    995  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    996  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    997  1.1  christos   int cycles = 0;
    998  1.1  christos   {
    999  1.1  christos     int referenced = 0;
   1000  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1001  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   1002  1.1  christos   }
   1003  1.1  christos   {
   1004  1.1  christos     int referenced = 0;
   1005  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1006  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1007  1.1  christos   }
   1008  1.1  christos   return cycles;
   1009  1.1  christos #undef FLD
   1010  1.1  christos }
   1011  1.1  christos 
   1012  1.1  christos static int
   1013  1.1  christos model_crisv10_move_c_sprv10_p11 (SIM_CPU *current_cpu, void *sem_arg)
   1014  1.1  christos {
   1015  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
   1016  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1017  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1018  1.1  christos   int cycles = 0;
   1019  1.1  christos   {
   1020  1.1  christos     int referenced = 0;
   1021  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1022  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   1023  1.1  christos   }
   1024  1.1  christos   {
   1025  1.1  christos     int referenced = 0;
   1026  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1027  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1028  1.1  christos   }
   1029  1.1  christos   return cycles;
   1030  1.1  christos #undef FLD
   1031  1.1  christos }
   1032  1.1  christos 
   1033  1.1  christos static int
   1034  1.1  christos model_crisv10_move_c_sprv10_p12 (SIM_CPU *current_cpu, void *sem_arg)
   1035  1.1  christos {
   1036  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
   1037  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1038  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1039  1.1  christos   int cycles = 0;
   1040  1.1  christos   {
   1041  1.1  christos     int referenced = 0;
   1042  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1043  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   1044  1.1  christos   }
   1045  1.1  christos   {
   1046  1.1  christos     int referenced = 0;
   1047  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1048  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1049  1.1  christos   }
   1050  1.1  christos   return cycles;
   1051  1.1  christos #undef FLD
   1052  1.1  christos }
   1053  1.1  christos 
   1054  1.1  christos static int
   1055  1.1  christos model_crisv10_move_c_sprv10_p13 (SIM_CPU *current_cpu, void *sem_arg)
   1056  1.1  christos {
   1057  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
   1058  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1059  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1060  1.1  christos   int cycles = 0;
   1061  1.1  christos   {
   1062  1.1  christos     int referenced = 0;
   1063  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1064  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   1065  1.1  christos   }
   1066  1.1  christos   {
   1067  1.1  christos     int referenced = 0;
   1068  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1069  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1070  1.1  christos   }
   1071  1.1  christos   return cycles;
   1072  1.1  christos #undef FLD
   1073  1.1  christos }
   1074  1.1  christos 
   1075  1.1  christos static int
   1076  1.1  christos model_crisv10_move_c_sprv10_p7 (SIM_CPU *current_cpu, void *sem_arg)
   1077  1.1  christos {
   1078  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
   1079  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1080  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1081  1.1  christos   int cycles = 0;
   1082  1.1  christos   {
   1083  1.1  christos     int referenced = 0;
   1084  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1085  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   1086  1.1  christos   }
   1087  1.1  christos   {
   1088  1.1  christos     int referenced = 0;
   1089  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1090  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1091  1.1  christos   }
   1092  1.1  christos   return cycles;
   1093  1.1  christos #undef FLD
   1094  1.1  christos }
   1095  1.1  christos 
   1096  1.1  christos static int
   1097  1.1  christos model_crisv10_move_c_sprv10_p14 (SIM_CPU *current_cpu, void *sem_arg)
   1098  1.1  christos {
   1099  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
   1100  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1101  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1102  1.1  christos   int cycles = 0;
   1103  1.1  christos   {
   1104  1.1  christos     int referenced = 0;
   1105  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1106  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   1107  1.1  christos   }
   1108  1.1  christos   {
   1109  1.1  christos     int referenced = 0;
   1110  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1111  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1112  1.1  christos   }
   1113  1.1  christos   return cycles;
   1114  1.1  christos #undef FLD
   1115  1.1  christos }
   1116  1.1  christos 
   1117  1.1  christos static int
   1118  1.1  christos model_crisv10_move_c_sprv10_p15 (SIM_CPU *current_cpu, void *sem_arg)
   1119  1.1  christos {
   1120  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
   1121  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1122  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1123  1.1  christos   int cycles = 0;
   1124  1.1  christos   {
   1125  1.1  christos     int referenced = 0;
   1126  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1127  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   1128  1.1  christos   }
   1129  1.1  christos   {
   1130  1.1  christos     int referenced = 0;
   1131  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1132  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1133  1.1  christos   }
   1134  1.1  christos   return cycles;
   1135  1.1  christos #undef FLD
   1136  1.1  christos }
   1137  1.1  christos 
   1138  1.1  christos static int
   1139  1.1  christos model_crisv10_move_spr_mv10 (SIM_CPU *current_cpu, void *sem_arg)
   1140  1.1  christos {
   1141  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
   1142  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1143  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1144  1.1  christos   int cycles = 0;
   1145  1.1  christos   {
   1146  1.1  christos     int referenced = 0;
   1147  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1148  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   1149  1.1  christos   }
   1150  1.1  christos   {
   1151  1.1  christos     int referenced = 0;
   1152  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1153  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1154  1.1  christos   }
   1155  1.1  christos   return cycles;
   1156  1.1  christos #undef FLD
   1157  1.1  christos }
   1158  1.1  christos 
   1159  1.1  christos static int
   1160  1.1  christos model_crisv10_sbfs (SIM_CPU *current_cpu, void *sem_arg)
   1161  1.1  christos {
   1162  1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   1163  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1164  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1165  1.1  christos   int cycles = 0;
   1166  1.1  christos   {
   1167  1.1  christos     int referenced = 0;
   1168  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1169  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   1170  1.1  christos   }
   1171  1.1  christos   return cycles;
   1172  1.1  christos #undef FLD
   1173  1.1  christos }
   1174  1.1  christos 
   1175  1.1  christos static int
   1176  1.1  christos model_crisv10_movem_r_m (SIM_CPU *current_cpu, void *sem_arg)
   1177  1.1  christos {
   1178  1.1  christos #define FLD(f) abuf->fields.sfmt_movem_r_m.f
   1179  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1180  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1181  1.1  christos   int cycles = 0;
   1182  1.1  christos   {
   1183  1.1  christos     int referenced = 0;
   1184  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1185  1.1  christos     INT in_Rd = -1;
   1186  1.1  christos     in_Rd = FLD (in_Rd);
   1187  1.1  christos     referenced |= 1 << 0;
   1188  1.1  christos     cycles += crisv10f_model_crisv10_u_movem (current_cpu, idesc, 0, referenced, in_Rd);
   1189  1.1  christos   }
   1190  1.1  christos   {
   1191  1.1  christos     int referenced = 0;
   1192  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1193  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1194  1.1  christos   }
   1195  1.1  christos   return cycles;
   1196  1.1  christos #undef FLD
   1197  1.1  christos }
   1198  1.1  christos 
   1199  1.1  christos static int
   1200  1.1  christos model_crisv10_movem_m_r (SIM_CPU *current_cpu, void *sem_arg)
   1201  1.1  christos {
   1202  1.1  christos #define FLD(f) abuf->fields.sfmt_movem_m_r.f
   1203  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1204  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1205  1.1  christos   int cycles = 0;
   1206  1.1  christos   {
   1207  1.1  christos     int referenced = 0;
   1208  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1209  1.1  christos     INT in_Rd = -1;
   1210  1.1  christos     in_Rd = FLD (in_Rd);
   1211  1.1  christos     referenced |= 1 << 0;
   1212  1.1  christos     cycles += crisv10f_model_crisv10_u_movem (current_cpu, idesc, 0, referenced, in_Rd);
   1213  1.1  christos   }
   1214  1.1  christos   {
   1215  1.1  christos     int referenced = 0;
   1216  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1217  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1218  1.1  christos   }
   1219  1.1  christos   return cycles;
   1220  1.1  christos #undef FLD
   1221  1.1  christos }
   1222  1.1  christos 
   1223  1.1  christos static int
   1224  1.1  christos model_crisv10_movem_m_pc (SIM_CPU *current_cpu, void *sem_arg)
   1225  1.1  christos {
   1226  1.1  christos #define FLD(f) abuf->fields.sfmt_movem_m_r.f
   1227  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1228  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1229  1.1  christos   int cycles = 0;
   1230  1.1  christos   {
   1231  1.1  christos     int referenced = 0;
   1232  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1233  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   1234  1.1  christos   }
   1235  1.1  christos   {
   1236  1.1  christos     int referenced = 0;
   1237  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1238  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1239  1.1  christos   }
   1240  1.1  christos   return cycles;
   1241  1.1  christos #undef FLD
   1242  1.1  christos }
   1243  1.1  christos 
   1244  1.1  christos static int
   1245  1.1  christos model_crisv10_add_b_r (SIM_CPU *current_cpu, void *sem_arg)
   1246  1.1  christos {
   1247  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   1248  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1249  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1250  1.1  christos   int cycles = 0;
   1251  1.1  christos   {
   1252  1.1  christos     int referenced = 0;
   1253  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1254  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   1255  1.1  christos   }
   1256  1.1  christos   return cycles;
   1257  1.1  christos #undef FLD
   1258  1.1  christos }
   1259  1.1  christos 
   1260  1.1  christos static int
   1261  1.1  christos model_crisv10_add_w_r (SIM_CPU *current_cpu, void *sem_arg)
   1262  1.1  christos {
   1263  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   1264  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1265  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1266  1.1  christos   int cycles = 0;
   1267  1.1  christos   {
   1268  1.1  christos     int referenced = 0;
   1269  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1270  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   1271  1.1  christos   }
   1272  1.1  christos   return cycles;
   1273  1.1  christos #undef FLD
   1274  1.1  christos }
   1275  1.1  christos 
   1276  1.1  christos static int
   1277  1.1  christos model_crisv10_add_d_r (SIM_CPU *current_cpu, void *sem_arg)
   1278  1.1  christos {
   1279  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   1280  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1281  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1282  1.1  christos   int cycles = 0;
   1283  1.1  christos   {
   1284  1.1  christos     int referenced = 0;
   1285  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1286  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   1287  1.1  christos   }
   1288  1.1  christos   return cycles;
   1289  1.1  christos #undef FLD
   1290  1.1  christos }
   1291  1.1  christos 
   1292  1.1  christos static int
   1293  1.1  christos model_crisv10_add_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   1294  1.1  christos {
   1295  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   1296  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1297  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1298  1.1  christos   int cycles = 0;
   1299  1.1  christos   {
   1300  1.1  christos     int referenced = 0;
   1301  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1302  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   1303  1.1  christos   }
   1304  1.1  christos   {
   1305  1.1  christos     int referenced = 0;
   1306  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1307  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1308  1.1  christos   }
   1309  1.1  christos   return cycles;
   1310  1.1  christos #undef FLD
   1311  1.1  christos }
   1312  1.1  christos 
   1313  1.1  christos static int
   1314  1.1  christos model_crisv10_add_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   1315  1.1  christos {
   1316  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   1317  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1318  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1319  1.1  christos   int cycles = 0;
   1320  1.1  christos   {
   1321  1.1  christos     int referenced = 0;
   1322  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1323  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   1324  1.1  christos   }
   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     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1329  1.1  christos   }
   1330  1.1  christos   return cycles;
   1331  1.1  christos #undef FLD
   1332  1.1  christos }
   1333  1.1  christos 
   1334  1.1  christos static int
   1335  1.1  christos model_crisv10_add_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   1336  1.1  christos {
   1337  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   1338  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1339  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1340  1.1  christos   int cycles = 0;
   1341  1.1  christos   {
   1342  1.1  christos     int referenced = 0;
   1343  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1344  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   1345  1.1  christos   }
   1346  1.1  christos   {
   1347  1.1  christos     int referenced = 0;
   1348  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1349  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1350  1.1  christos   }
   1351  1.1  christos   return cycles;
   1352  1.1  christos #undef FLD
   1353  1.1  christos }
   1354  1.1  christos 
   1355  1.1  christos static int
   1356  1.1  christos model_crisv10_addcbr (SIM_CPU *current_cpu, void *sem_arg)
   1357  1.1  christos {
   1358  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   1359  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1360  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1361  1.1  christos   int cycles = 0;
   1362  1.1  christos   {
   1363  1.1  christos     int referenced = 0;
   1364  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1365  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   1366  1.1  christos   }
   1367  1.1  christos   {
   1368  1.1  christos     int referenced = 0;
   1369  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1370  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1371  1.1  christos   }
   1372  1.1  christos   return cycles;
   1373  1.1  christos #undef FLD
   1374  1.1  christos }
   1375  1.1  christos 
   1376  1.1  christos static int
   1377  1.1  christos model_crisv10_addcwr (SIM_CPU *current_cpu, void *sem_arg)
   1378  1.1  christos {
   1379  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   1380  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1381  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1382  1.1  christos   int cycles = 0;
   1383  1.1  christos   {
   1384  1.1  christos     int referenced = 0;
   1385  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1386  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   1387  1.1  christos   }
   1388  1.1  christos   {
   1389  1.1  christos     int referenced = 0;
   1390  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1391  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1392  1.1  christos   }
   1393  1.1  christos   return cycles;
   1394  1.1  christos #undef FLD
   1395  1.1  christos }
   1396  1.1  christos 
   1397  1.1  christos static int
   1398  1.1  christos model_crisv10_addcdr (SIM_CPU *current_cpu, void *sem_arg)
   1399  1.1  christos {
   1400  1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   1401  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1402  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1403  1.1  christos   int cycles = 0;
   1404  1.1  christos   {
   1405  1.1  christos     int referenced = 0;
   1406  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1407  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   1408  1.1  christos   }
   1409  1.1  christos   {
   1410  1.1  christos     int referenced = 0;
   1411  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1412  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1413  1.1  christos   }
   1414  1.1  christos   return cycles;
   1415  1.1  christos #undef FLD
   1416  1.1  christos }
   1417  1.1  christos 
   1418  1.1  christos static int
   1419  1.1  christos model_crisv10_addcpc (SIM_CPU *current_cpu, void *sem_arg)
   1420  1.1  christos {
   1421  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
   1422  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1423  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1424  1.1  christos   int cycles = 0;
   1425  1.1  christos   {
   1426  1.1  christos     int referenced = 0;
   1427  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1428  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   1429  1.1  christos   }
   1430  1.1  christos   {
   1431  1.1  christos     int referenced = 0;
   1432  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1433  1.1  christos     cycles += crisv10f_model_crisv10_u_stall (current_cpu, idesc, 1, referenced);
   1434  1.1  christos   }
   1435  1.1  christos   {
   1436  1.1  christos     int referenced = 0;
   1437  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1438  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 2, referenced);
   1439  1.1  christos   }
   1440  1.1  christos   return cycles;
   1441  1.1  christos #undef FLD
   1442  1.1  christos }
   1443  1.1  christos 
   1444  1.1  christos static int
   1445  1.1  christos model_crisv10_adds_b_r (SIM_CPU *current_cpu, void *sem_arg)
   1446  1.1  christos {
   1447  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   1448  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1449  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1450  1.1  christos   int cycles = 0;
   1451  1.1  christos   {
   1452  1.1  christos     int referenced = 0;
   1453  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1454  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   1455  1.1  christos   }
   1456  1.1  christos   return cycles;
   1457  1.1  christos #undef FLD
   1458  1.1  christos }
   1459  1.1  christos 
   1460  1.1  christos static int
   1461  1.1  christos model_crisv10_adds_w_r (SIM_CPU *current_cpu, void *sem_arg)
   1462  1.1  christos {
   1463  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   1464  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1465  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1466  1.1  christos   int cycles = 0;
   1467  1.1  christos   {
   1468  1.1  christos     int referenced = 0;
   1469  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1470  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   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_crisv10_adds_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   1478  1.1  christos {
   1479  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.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     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   1487  1.1  christos   }
   1488  1.1  christos   {
   1489  1.1  christos     int referenced = 0;
   1490  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1491  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   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_crisv10_adds_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   1499  1.1  christos {
   1500  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.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     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   1508  1.1  christos   }
   1509  1.1  christos   {
   1510  1.1  christos     int referenced = 0;
   1511  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1512  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   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_crisv10_addscbr (SIM_CPU *current_cpu, void *sem_arg)
   1520  1.1  christos {
   1521  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.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     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   1529  1.1  christos   }
   1530  1.1  christos   {
   1531  1.1  christos     int referenced = 0;
   1532  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1533  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   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_crisv10_addscwr (SIM_CPU *current_cpu, void *sem_arg)
   1541  1.1  christos {
   1542  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.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     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   1550  1.1  christos   }
   1551  1.1  christos   {
   1552  1.1  christos     int referenced = 0;
   1553  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1554  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   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_crisv10_addspcpc (SIM_CPU *current_cpu, void *sem_arg)
   1562  1.1  christos {
   1563  1.1  christos #define FLD(f) abuf->fields.sfmt_empty.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     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   1571  1.1  christos   }
   1572  1.1  christos   {
   1573  1.1  christos     int referenced = 0;
   1574  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1575  1.1  christos     cycles += crisv10f_model_crisv10_u_stall (current_cpu, idesc, 1, referenced);
   1576  1.1  christos   }
   1577  1.1  christos   {
   1578  1.1  christos     int referenced = 0;
   1579  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1580  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 2, referenced);
   1581  1.1  christos   }
   1582  1.1  christos   return cycles;
   1583  1.1  christos #undef FLD
   1584  1.1  christos }
   1585  1.1  christos 
   1586  1.1  christos static int
   1587  1.1  christos model_crisv10_addu_b_r (SIM_CPU *current_cpu, void *sem_arg)
   1588  1.1  christos {
   1589  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   1590  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1591  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1592  1.1  christos   int cycles = 0;
   1593  1.1  christos   {
   1594  1.1  christos     int referenced = 0;
   1595  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1596  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   1597  1.1  christos   }
   1598  1.1  christos   return cycles;
   1599  1.1  christos #undef FLD
   1600  1.1  christos }
   1601  1.1  christos 
   1602  1.1  christos static int
   1603  1.1  christos model_crisv10_addu_w_r (SIM_CPU *current_cpu, void *sem_arg)
   1604  1.1  christos {
   1605  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   1606  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1607  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1608  1.1  christos   int cycles = 0;
   1609  1.1  christos   {
   1610  1.1  christos     int referenced = 0;
   1611  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1612  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   1613  1.1  christos   }
   1614  1.1  christos   return cycles;
   1615  1.1  christos #undef FLD
   1616  1.1  christos }
   1617  1.1  christos 
   1618  1.1  christos static int
   1619  1.1  christos model_crisv10_addu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   1620  1.1  christos {
   1621  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   1622  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1623  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1624  1.1  christos   int cycles = 0;
   1625  1.1  christos   {
   1626  1.1  christos     int referenced = 0;
   1627  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1628  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   1629  1.1  christos   }
   1630  1.1  christos   {
   1631  1.1  christos     int referenced = 0;
   1632  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1633  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1634  1.1  christos   }
   1635  1.1  christos   return cycles;
   1636  1.1  christos #undef FLD
   1637  1.1  christos }
   1638  1.1  christos 
   1639  1.1  christos static int
   1640  1.1  christos model_crisv10_addu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   1641  1.1  christos {
   1642  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   1643  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1644  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1645  1.1  christos   int cycles = 0;
   1646  1.1  christos   {
   1647  1.1  christos     int referenced = 0;
   1648  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1649  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   1650  1.1  christos   }
   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     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1655  1.1  christos   }
   1656  1.1  christos   return cycles;
   1657  1.1  christos #undef FLD
   1658  1.1  christos }
   1659  1.1  christos 
   1660  1.1  christos static int
   1661  1.1  christos model_crisv10_adducbr (SIM_CPU *current_cpu, void *sem_arg)
   1662  1.1  christos {
   1663  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   1664  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1665  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1666  1.1  christos   int cycles = 0;
   1667  1.1  christos   {
   1668  1.1  christos     int referenced = 0;
   1669  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1670  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   1671  1.1  christos   }
   1672  1.1  christos   {
   1673  1.1  christos     int referenced = 0;
   1674  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1675  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1676  1.1  christos   }
   1677  1.1  christos   return cycles;
   1678  1.1  christos #undef FLD
   1679  1.1  christos }
   1680  1.1  christos 
   1681  1.1  christos static int
   1682  1.1  christos model_crisv10_adducwr (SIM_CPU *current_cpu, void *sem_arg)
   1683  1.1  christos {
   1684  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   1685  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1686  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1687  1.1  christos   int cycles = 0;
   1688  1.1  christos   {
   1689  1.1  christos     int referenced = 0;
   1690  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1691  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   1692  1.1  christos   }
   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     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1697  1.1  christos   }
   1698  1.1  christos   return cycles;
   1699  1.1  christos #undef FLD
   1700  1.1  christos }
   1701  1.1  christos 
   1702  1.1  christos static int
   1703  1.1  christos model_crisv10_sub_b_r (SIM_CPU *current_cpu, void *sem_arg)
   1704  1.1  christos {
   1705  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   1706  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1707  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1708  1.1  christos   int cycles = 0;
   1709  1.1  christos   {
   1710  1.1  christos     int referenced = 0;
   1711  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1712  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   1713  1.1  christos   }
   1714  1.1  christos   return cycles;
   1715  1.1  christos #undef FLD
   1716  1.1  christos }
   1717  1.1  christos 
   1718  1.1  christos static int
   1719  1.1  christos model_crisv10_sub_w_r (SIM_CPU *current_cpu, void *sem_arg)
   1720  1.1  christos {
   1721  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   1722  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1723  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1724  1.1  christos   int cycles = 0;
   1725  1.1  christos   {
   1726  1.1  christos     int referenced = 0;
   1727  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1728  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   1729  1.1  christos   }
   1730  1.1  christos   return cycles;
   1731  1.1  christos #undef FLD
   1732  1.1  christos }
   1733  1.1  christos 
   1734  1.1  christos static int
   1735  1.1  christos model_crisv10_sub_d_r (SIM_CPU *current_cpu, void *sem_arg)
   1736  1.1  christos {
   1737  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   1738  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1739  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1740  1.1  christos   int cycles = 0;
   1741  1.1  christos   {
   1742  1.1  christos     int referenced = 0;
   1743  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1744  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   1745  1.1  christos   }
   1746  1.1  christos   return cycles;
   1747  1.1  christos #undef FLD
   1748  1.1  christos }
   1749  1.1  christos 
   1750  1.1  christos static int
   1751  1.1  christos model_crisv10_sub_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   1752  1.1  christos {
   1753  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   1754  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1755  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1756  1.1  christos   int cycles = 0;
   1757  1.1  christos   {
   1758  1.1  christos     int referenced = 0;
   1759  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1760  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   1761  1.1  christos   }
   1762  1.1  christos   {
   1763  1.1  christos     int referenced = 0;
   1764  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1765  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1766  1.1  christos   }
   1767  1.1  christos   return cycles;
   1768  1.1  christos #undef FLD
   1769  1.1  christos }
   1770  1.1  christos 
   1771  1.1  christos static int
   1772  1.1  christos model_crisv10_sub_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   1773  1.1  christos {
   1774  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   1775  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1776  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1777  1.1  christos   int cycles = 0;
   1778  1.1  christos   {
   1779  1.1  christos     int referenced = 0;
   1780  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1781  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   1782  1.1  christos   }
   1783  1.1  christos   {
   1784  1.1  christos     int referenced = 0;
   1785  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1786  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1787  1.1  christos   }
   1788  1.1  christos   return cycles;
   1789  1.1  christos #undef FLD
   1790  1.1  christos }
   1791  1.1  christos 
   1792  1.1  christos static int
   1793  1.1  christos model_crisv10_sub_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   1794  1.1  christos {
   1795  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   1796  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1797  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1798  1.1  christos   int cycles = 0;
   1799  1.1  christos   {
   1800  1.1  christos     int referenced = 0;
   1801  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1802  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   1803  1.1  christos   }
   1804  1.1  christos   {
   1805  1.1  christos     int referenced = 0;
   1806  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1807  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1808  1.1  christos   }
   1809  1.1  christos   return cycles;
   1810  1.1  christos #undef FLD
   1811  1.1  christos }
   1812  1.1  christos 
   1813  1.1  christos static int
   1814  1.1  christos model_crisv10_subcbr (SIM_CPU *current_cpu, void *sem_arg)
   1815  1.1  christos {
   1816  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   1817  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1818  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1819  1.1  christos   int cycles = 0;
   1820  1.1  christos   {
   1821  1.1  christos     int referenced = 0;
   1822  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1823  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   1824  1.1  christos   }
   1825  1.1  christos   {
   1826  1.1  christos     int referenced = 0;
   1827  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1828  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1829  1.1  christos   }
   1830  1.1  christos   return cycles;
   1831  1.1  christos #undef FLD
   1832  1.1  christos }
   1833  1.1  christos 
   1834  1.1  christos static int
   1835  1.1  christos model_crisv10_subcwr (SIM_CPU *current_cpu, void *sem_arg)
   1836  1.1  christos {
   1837  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   1838  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1839  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1840  1.1  christos   int cycles = 0;
   1841  1.1  christos   {
   1842  1.1  christos     int referenced = 0;
   1843  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1844  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   1845  1.1  christos   }
   1846  1.1  christos   {
   1847  1.1  christos     int referenced = 0;
   1848  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1849  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1850  1.1  christos   }
   1851  1.1  christos   return cycles;
   1852  1.1  christos #undef FLD
   1853  1.1  christos }
   1854  1.1  christos 
   1855  1.1  christos static int
   1856  1.1  christos model_crisv10_subcdr (SIM_CPU *current_cpu, void *sem_arg)
   1857  1.1  christos {
   1858  1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   1859  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1860  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1861  1.1  christos   int cycles = 0;
   1862  1.1  christos   {
   1863  1.1  christos     int referenced = 0;
   1864  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1865  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   1866  1.1  christos   }
   1867  1.1  christos   {
   1868  1.1  christos     int referenced = 0;
   1869  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1870  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1871  1.1  christos   }
   1872  1.1  christos   return cycles;
   1873  1.1  christos #undef FLD
   1874  1.1  christos }
   1875  1.1  christos 
   1876  1.1  christos static int
   1877  1.1  christos model_crisv10_subs_b_r (SIM_CPU *current_cpu, void *sem_arg)
   1878  1.1  christos {
   1879  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   1880  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1881  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1882  1.1  christos   int cycles = 0;
   1883  1.1  christos   {
   1884  1.1  christos     int referenced = 0;
   1885  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1886  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   1887  1.1  christos   }
   1888  1.1  christos   return cycles;
   1889  1.1  christos #undef FLD
   1890  1.1  christos }
   1891  1.1  christos 
   1892  1.1  christos static int
   1893  1.1  christos model_crisv10_subs_w_r (SIM_CPU *current_cpu, void *sem_arg)
   1894  1.1  christos {
   1895  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   1896  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1897  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1898  1.1  christos   int cycles = 0;
   1899  1.1  christos   {
   1900  1.1  christos     int referenced = 0;
   1901  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1902  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   1903  1.1  christos   }
   1904  1.1  christos   return cycles;
   1905  1.1  christos #undef FLD
   1906  1.1  christos }
   1907  1.1  christos 
   1908  1.1  christos static int
   1909  1.1  christos model_crisv10_subs_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   1910  1.1  christos {
   1911  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   1912  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1913  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1914  1.1  christos   int cycles = 0;
   1915  1.1  christos   {
   1916  1.1  christos     int referenced = 0;
   1917  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1918  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   1919  1.1  christos   }
   1920  1.1  christos   {
   1921  1.1  christos     int referenced = 0;
   1922  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1923  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   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_crisv10_subs_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   1931  1.1  christos {
   1932  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.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     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   1940  1.1  christos   }
   1941  1.1  christos   {
   1942  1.1  christos     int referenced = 0;
   1943  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1944  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1945  1.1  christos   }
   1946  1.1  christos   return cycles;
   1947  1.1  christos #undef FLD
   1948  1.1  christos }
   1949  1.1  christos 
   1950  1.1  christos static int
   1951  1.1  christos model_crisv10_subscbr (SIM_CPU *current_cpu, void *sem_arg)
   1952  1.1  christos {
   1953  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   1954  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1955  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1956  1.1  christos   int cycles = 0;
   1957  1.1  christos   {
   1958  1.1  christos     int referenced = 0;
   1959  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1960  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   1961  1.1  christos   }
   1962  1.1  christos   {
   1963  1.1  christos     int referenced = 0;
   1964  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1965  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1966  1.1  christos   }
   1967  1.1  christos   return cycles;
   1968  1.1  christos #undef FLD
   1969  1.1  christos }
   1970  1.1  christos 
   1971  1.1  christos static int
   1972  1.1  christos model_crisv10_subscwr (SIM_CPU *current_cpu, void *sem_arg)
   1973  1.1  christos {
   1974  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   1975  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1976  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1977  1.1  christos   int cycles = 0;
   1978  1.1  christos   {
   1979  1.1  christos     int referenced = 0;
   1980  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1981  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   1982  1.1  christos   }
   1983  1.1  christos   {
   1984  1.1  christos     int referenced = 0;
   1985  1.1  christos     int UNUSED insn_referenced = abuf->written;
   1986  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   1987  1.1  christos   }
   1988  1.1  christos   return cycles;
   1989  1.1  christos #undef FLD
   1990  1.1  christos }
   1991  1.1  christos 
   1992  1.1  christos static int
   1993  1.1  christos model_crisv10_subu_b_r (SIM_CPU *current_cpu, void *sem_arg)
   1994  1.1  christos {
   1995  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   1996  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1997  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1998  1.1  christos   int cycles = 0;
   1999  1.1  christos   {
   2000  1.1  christos     int referenced = 0;
   2001  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2002  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2003  1.1  christos   }
   2004  1.1  christos   return cycles;
   2005  1.1  christos #undef FLD
   2006  1.1  christos }
   2007  1.1  christos 
   2008  1.1  christos static int
   2009  1.1  christos model_crisv10_subu_w_r (SIM_CPU *current_cpu, void *sem_arg)
   2010  1.1  christos {
   2011  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   2012  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2013  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2014  1.1  christos   int cycles = 0;
   2015  1.1  christos   {
   2016  1.1  christos     int referenced = 0;
   2017  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2018  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2019  1.1  christos   }
   2020  1.1  christos   return cycles;
   2021  1.1  christos #undef FLD
   2022  1.1  christos }
   2023  1.1  christos 
   2024  1.1  christos static int
   2025  1.1  christos model_crisv10_subu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   2026  1.1  christos {
   2027  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2028  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2029  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2030  1.1  christos   int cycles = 0;
   2031  1.1  christos   {
   2032  1.1  christos     int referenced = 0;
   2033  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2034  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   2035  1.1  christos   }
   2036  1.1  christos   {
   2037  1.1  christos     int referenced = 0;
   2038  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2039  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2040  1.1  christos   }
   2041  1.1  christos   return cycles;
   2042  1.1  christos #undef FLD
   2043  1.1  christos }
   2044  1.1  christos 
   2045  1.1  christos static int
   2046  1.1  christos model_crisv10_subu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   2047  1.1  christos {
   2048  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2049  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2050  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2051  1.1  christos   int cycles = 0;
   2052  1.1  christos   {
   2053  1.1  christos     int referenced = 0;
   2054  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2055  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   2056  1.1  christos   }
   2057  1.1  christos   {
   2058  1.1  christos     int referenced = 0;
   2059  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2060  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2061  1.1  christos   }
   2062  1.1  christos   return cycles;
   2063  1.1  christos #undef FLD
   2064  1.1  christos }
   2065  1.1  christos 
   2066  1.1  christos static int
   2067  1.1  christos model_crisv10_subucbr (SIM_CPU *current_cpu, void *sem_arg)
   2068  1.1  christos {
   2069  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   2070  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2071  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2072  1.1  christos   int cycles = 0;
   2073  1.1  christos   {
   2074  1.1  christos     int referenced = 0;
   2075  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2076  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   2077  1.1  christos   }
   2078  1.1  christos   {
   2079  1.1  christos     int referenced = 0;
   2080  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2081  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2082  1.1  christos   }
   2083  1.1  christos   return cycles;
   2084  1.1  christos #undef FLD
   2085  1.1  christos }
   2086  1.1  christos 
   2087  1.1  christos static int
   2088  1.1  christos model_crisv10_subucwr (SIM_CPU *current_cpu, void *sem_arg)
   2089  1.1  christos {
   2090  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   2091  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2092  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2093  1.1  christos   int cycles = 0;
   2094  1.1  christos   {
   2095  1.1  christos     int referenced = 0;
   2096  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2097  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   2098  1.1  christos   }
   2099  1.1  christos   {
   2100  1.1  christos     int referenced = 0;
   2101  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2102  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2103  1.1  christos   }
   2104  1.1  christos   return cycles;
   2105  1.1  christos #undef FLD
   2106  1.1  christos }
   2107  1.1  christos 
   2108  1.1  christos static int
   2109  1.1  christos model_crisv10_addi_b_r (SIM_CPU *current_cpu, void *sem_arg)
   2110  1.1  christos {
   2111  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
   2112  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2113  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2114  1.1  christos   int cycles = 0;
   2115  1.1  christos   {
   2116  1.1  christos     int referenced = 0;
   2117  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2118  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2119  1.1  christos   }
   2120  1.1  christos   return cycles;
   2121  1.1  christos #undef FLD
   2122  1.1  christos }
   2123  1.1  christos 
   2124  1.1  christos static int
   2125  1.1  christos model_crisv10_addi_w_r (SIM_CPU *current_cpu, void *sem_arg)
   2126  1.1  christos {
   2127  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
   2128  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2129  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2130  1.1  christos   int cycles = 0;
   2131  1.1  christos   {
   2132  1.1  christos     int referenced = 0;
   2133  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2134  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2135  1.1  christos   }
   2136  1.1  christos   return cycles;
   2137  1.1  christos #undef FLD
   2138  1.1  christos }
   2139  1.1  christos 
   2140  1.1  christos static int
   2141  1.1  christos model_crisv10_addi_d_r (SIM_CPU *current_cpu, void *sem_arg)
   2142  1.1  christos {
   2143  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
   2144  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2145  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2146  1.1  christos   int cycles = 0;
   2147  1.1  christos   {
   2148  1.1  christos     int referenced = 0;
   2149  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2150  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2151  1.1  christos   }
   2152  1.1  christos   return cycles;
   2153  1.1  christos #undef FLD
   2154  1.1  christos }
   2155  1.1  christos 
   2156  1.1  christos static int
   2157  1.1  christos model_crisv10_neg_b_r (SIM_CPU *current_cpu, void *sem_arg)
   2158  1.1  christos {
   2159  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   2160  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2161  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2162  1.1  christos   int cycles = 0;
   2163  1.1  christos   {
   2164  1.1  christos     int referenced = 0;
   2165  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2166  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2167  1.1  christos   }
   2168  1.1  christos   return cycles;
   2169  1.1  christos #undef FLD
   2170  1.1  christos }
   2171  1.1  christos 
   2172  1.1  christos static int
   2173  1.1  christos model_crisv10_neg_w_r (SIM_CPU *current_cpu, void *sem_arg)
   2174  1.1  christos {
   2175  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   2176  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2177  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2178  1.1  christos   int cycles = 0;
   2179  1.1  christos   {
   2180  1.1  christos     int referenced = 0;
   2181  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2182  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2183  1.1  christos   }
   2184  1.1  christos   return cycles;
   2185  1.1  christos #undef FLD
   2186  1.1  christos }
   2187  1.1  christos 
   2188  1.1  christos static int
   2189  1.1  christos model_crisv10_neg_d_r (SIM_CPU *current_cpu, void *sem_arg)
   2190  1.1  christos {
   2191  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   2192  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2193  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2194  1.1  christos   int cycles = 0;
   2195  1.1  christos   {
   2196  1.1  christos     int referenced = 0;
   2197  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2198  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2199  1.1  christos   }
   2200  1.1  christos   return cycles;
   2201  1.1  christos #undef FLD
   2202  1.1  christos }
   2203  1.1  christos 
   2204  1.1  christos static int
   2205  1.1  christos model_crisv10_test_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   2206  1.1  christos {
   2207  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
   2208  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2209  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2210  1.1  christos   int cycles = 0;
   2211  1.1  christos   {
   2212  1.1  christos     int referenced = 0;
   2213  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2214  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   2215  1.1  christos   }
   2216  1.1  christos   {
   2217  1.1  christos     int referenced = 0;
   2218  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2219  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2220  1.1  christos   }
   2221  1.1  christos   return cycles;
   2222  1.1  christos #undef FLD
   2223  1.1  christos }
   2224  1.1  christos 
   2225  1.1  christos static int
   2226  1.1  christos model_crisv10_test_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   2227  1.1  christos {
   2228  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
   2229  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2230  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2231  1.1  christos   int cycles = 0;
   2232  1.1  christos   {
   2233  1.1  christos     int referenced = 0;
   2234  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2235  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   2236  1.1  christos   }
   2237  1.1  christos   {
   2238  1.1  christos     int referenced = 0;
   2239  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2240  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   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_crisv10_test_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   2248  1.1  christos {
   2249  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv10.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     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   2257  1.1  christos   }
   2258  1.1  christos   {
   2259  1.1  christos     int referenced = 0;
   2260  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2261  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2262  1.1  christos   }
   2263  1.1  christos   return cycles;
   2264  1.1  christos #undef FLD
   2265  1.1  christos }
   2266  1.1  christos 
   2267  1.1  christos static int
   2268  1.1  christos model_crisv10_move_r_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   2269  1.1  christos {
   2270  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
   2271  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2272  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2273  1.1  christos   int cycles = 0;
   2274  1.1  christos   {
   2275  1.1  christos     int referenced = 0;
   2276  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2277  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   2278  1.1  christos   }
   2279  1.1  christos   {
   2280  1.1  christos     int referenced = 0;
   2281  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2282  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2283  1.1  christos   }
   2284  1.1  christos   return cycles;
   2285  1.1  christos #undef FLD
   2286  1.1  christos }
   2287  1.1  christos 
   2288  1.1  christos static int
   2289  1.1  christos model_crisv10_move_r_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   2290  1.1  christos {
   2291  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
   2292  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2293  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2294  1.1  christos   int cycles = 0;
   2295  1.1  christos   {
   2296  1.1  christos     int referenced = 0;
   2297  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2298  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   2299  1.1  christos   }
   2300  1.1  christos   {
   2301  1.1  christos     int referenced = 0;
   2302  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2303  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2304  1.1  christos   }
   2305  1.1  christos   return cycles;
   2306  1.1  christos #undef FLD
   2307  1.1  christos }
   2308  1.1  christos 
   2309  1.1  christos static int
   2310  1.1  christos model_crisv10_move_r_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   2311  1.1  christos {
   2312  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
   2313  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2314  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2315  1.1  christos   int cycles = 0;
   2316  1.1  christos   {
   2317  1.1  christos     int referenced = 0;
   2318  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2319  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   2320  1.1  christos   }
   2321  1.1  christos   {
   2322  1.1  christos     int referenced = 0;
   2323  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2324  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2325  1.1  christos   }
   2326  1.1  christos   return cycles;
   2327  1.1  christos #undef FLD
   2328  1.1  christos }
   2329  1.1  christos 
   2330  1.1  christos static int
   2331  1.1  christos model_crisv10_muls_b (SIM_CPU *current_cpu, void *sem_arg)
   2332  1.1  christos {
   2333  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   2334  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2335  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2336  1.1  christos   int cycles = 0;
   2337  1.1  christos   {
   2338  1.1  christos     int referenced = 0;
   2339  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2340  1.1  christos     cycles += crisv10f_model_crisv10_u_multiply (current_cpu, idesc, 0, referenced);
   2341  1.1  christos   }
   2342  1.1  christos   {
   2343  1.1  christos     int referenced = 0;
   2344  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2345  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2346  1.1  christos   }
   2347  1.1  christos   return cycles;
   2348  1.1  christos #undef FLD
   2349  1.1  christos }
   2350  1.1  christos 
   2351  1.1  christos static int
   2352  1.1  christos model_crisv10_muls_w (SIM_CPU *current_cpu, void *sem_arg)
   2353  1.1  christos {
   2354  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   2355  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2356  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2357  1.1  christos   int cycles = 0;
   2358  1.1  christos   {
   2359  1.1  christos     int referenced = 0;
   2360  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2361  1.1  christos     cycles += crisv10f_model_crisv10_u_multiply (current_cpu, idesc, 0, referenced);
   2362  1.1  christos   }
   2363  1.1  christos   {
   2364  1.1  christos     int referenced = 0;
   2365  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2366  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2367  1.1  christos   }
   2368  1.1  christos   return cycles;
   2369  1.1  christos #undef FLD
   2370  1.1  christos }
   2371  1.1  christos 
   2372  1.1  christos static int
   2373  1.1  christos model_crisv10_muls_d (SIM_CPU *current_cpu, void *sem_arg)
   2374  1.1  christos {
   2375  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   2376  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2377  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2378  1.1  christos   int cycles = 0;
   2379  1.1  christos   {
   2380  1.1  christos     int referenced = 0;
   2381  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2382  1.1  christos     cycles += crisv10f_model_crisv10_u_multiply (current_cpu, idesc, 0, referenced);
   2383  1.1  christos   }
   2384  1.1  christos   {
   2385  1.1  christos     int referenced = 0;
   2386  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2387  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2388  1.1  christos   }
   2389  1.1  christos   return cycles;
   2390  1.1  christos #undef FLD
   2391  1.1  christos }
   2392  1.1  christos 
   2393  1.1  christos static int
   2394  1.1  christos model_crisv10_mulu_b (SIM_CPU *current_cpu, void *sem_arg)
   2395  1.1  christos {
   2396  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   2397  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2398  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2399  1.1  christos   int cycles = 0;
   2400  1.1  christos   {
   2401  1.1  christos     int referenced = 0;
   2402  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2403  1.1  christos     cycles += crisv10f_model_crisv10_u_multiply (current_cpu, idesc, 0, referenced);
   2404  1.1  christos   }
   2405  1.1  christos   {
   2406  1.1  christos     int referenced = 0;
   2407  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2408  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2409  1.1  christos   }
   2410  1.1  christos   return cycles;
   2411  1.1  christos #undef FLD
   2412  1.1  christos }
   2413  1.1  christos 
   2414  1.1  christos static int
   2415  1.1  christos model_crisv10_mulu_w (SIM_CPU *current_cpu, void *sem_arg)
   2416  1.1  christos {
   2417  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   2418  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2419  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2420  1.1  christos   int cycles = 0;
   2421  1.1  christos   {
   2422  1.1  christos     int referenced = 0;
   2423  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2424  1.1  christos     cycles += crisv10f_model_crisv10_u_multiply (current_cpu, idesc, 0, referenced);
   2425  1.1  christos   }
   2426  1.1  christos   {
   2427  1.1  christos     int referenced = 0;
   2428  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2429  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2430  1.1  christos   }
   2431  1.1  christos   return cycles;
   2432  1.1  christos #undef FLD
   2433  1.1  christos }
   2434  1.1  christos 
   2435  1.1  christos static int
   2436  1.1  christos model_crisv10_mulu_d (SIM_CPU *current_cpu, void *sem_arg)
   2437  1.1  christos {
   2438  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   2439  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2440  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2441  1.1  christos   int cycles = 0;
   2442  1.1  christos   {
   2443  1.1  christos     int referenced = 0;
   2444  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2445  1.1  christos     cycles += crisv10f_model_crisv10_u_multiply (current_cpu, idesc, 0, referenced);
   2446  1.1  christos   }
   2447  1.1  christos   {
   2448  1.1  christos     int referenced = 0;
   2449  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2450  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2451  1.1  christos   }
   2452  1.1  christos   return cycles;
   2453  1.1  christos #undef FLD
   2454  1.1  christos }
   2455  1.1  christos 
   2456  1.1  christos static int
   2457  1.1  christos model_crisv10_mstep (SIM_CPU *current_cpu, void *sem_arg)
   2458  1.1  christos {
   2459  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   2460  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2461  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2462  1.1  christos   int cycles = 0;
   2463  1.1  christos   {
   2464  1.1  christos     int referenced = 0;
   2465  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2466  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2467  1.1  christos   }
   2468  1.1  christos   return cycles;
   2469  1.1  christos #undef FLD
   2470  1.1  christos }
   2471  1.1  christos 
   2472  1.1  christos static int
   2473  1.1  christos model_crisv10_dstep (SIM_CPU *current_cpu, void *sem_arg)
   2474  1.1  christos {
   2475  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   2476  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2477  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2478  1.1  christos   int cycles = 0;
   2479  1.1  christos   {
   2480  1.1  christos     int referenced = 0;
   2481  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2482  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2483  1.1  christos   }
   2484  1.1  christos   return cycles;
   2485  1.1  christos #undef FLD
   2486  1.1  christos }
   2487  1.1  christos 
   2488  1.1  christos static int
   2489  1.1  christos model_crisv10_abs (SIM_CPU *current_cpu, void *sem_arg)
   2490  1.1  christos {
   2491  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   2492  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2493  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2494  1.1  christos   int cycles = 0;
   2495  1.1  christos   {
   2496  1.1  christos     int referenced = 0;
   2497  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2498  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2499  1.1  christos   }
   2500  1.1  christos   return cycles;
   2501  1.1  christos #undef FLD
   2502  1.1  christos }
   2503  1.1  christos 
   2504  1.1  christos static int
   2505  1.1  christos model_crisv10_and_b_r (SIM_CPU *current_cpu, void *sem_arg)
   2506  1.1  christos {
   2507  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   2508  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2509  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2510  1.1  christos   int cycles = 0;
   2511  1.1  christos   {
   2512  1.1  christos     int referenced = 0;
   2513  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2514  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2515  1.1  christos   }
   2516  1.1  christos   return cycles;
   2517  1.1  christos #undef FLD
   2518  1.1  christos }
   2519  1.1  christos 
   2520  1.1  christos static int
   2521  1.1  christos model_crisv10_and_w_r (SIM_CPU *current_cpu, void *sem_arg)
   2522  1.1  christos {
   2523  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   2524  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2525  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2526  1.1  christos   int cycles = 0;
   2527  1.1  christos   {
   2528  1.1  christos     int referenced = 0;
   2529  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2530  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2531  1.1  christos   }
   2532  1.1  christos   return cycles;
   2533  1.1  christos #undef FLD
   2534  1.1  christos }
   2535  1.1  christos 
   2536  1.1  christos static int
   2537  1.1  christos model_crisv10_and_d_r (SIM_CPU *current_cpu, void *sem_arg)
   2538  1.1  christos {
   2539  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   2540  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2541  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2542  1.1  christos   int cycles = 0;
   2543  1.1  christos   {
   2544  1.1  christos     int referenced = 0;
   2545  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2546  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2547  1.1  christos   }
   2548  1.1  christos   return cycles;
   2549  1.1  christos #undef FLD
   2550  1.1  christos }
   2551  1.1  christos 
   2552  1.1  christos static int
   2553  1.1  christos model_crisv10_and_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   2554  1.1  christos {
   2555  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2556  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2557  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2558  1.1  christos   int cycles = 0;
   2559  1.1  christos   {
   2560  1.1  christos     int referenced = 0;
   2561  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2562  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   2563  1.1  christos   }
   2564  1.1  christos   {
   2565  1.1  christos     int referenced = 0;
   2566  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2567  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2568  1.1  christos   }
   2569  1.1  christos   return cycles;
   2570  1.1  christos #undef FLD
   2571  1.1  christos }
   2572  1.1  christos 
   2573  1.1  christos static int
   2574  1.1  christos model_crisv10_and_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   2575  1.1  christos {
   2576  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2577  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2578  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2579  1.1  christos   int cycles = 0;
   2580  1.1  christos   {
   2581  1.1  christos     int referenced = 0;
   2582  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2583  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   2584  1.1  christos   }
   2585  1.1  christos   {
   2586  1.1  christos     int referenced = 0;
   2587  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2588  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2589  1.1  christos   }
   2590  1.1  christos   return cycles;
   2591  1.1  christos #undef FLD
   2592  1.1  christos }
   2593  1.1  christos 
   2594  1.1  christos static int
   2595  1.1  christos model_crisv10_and_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   2596  1.1  christos {
   2597  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2598  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2599  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2600  1.1  christos   int cycles = 0;
   2601  1.1  christos   {
   2602  1.1  christos     int referenced = 0;
   2603  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2604  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   2605  1.1  christos   }
   2606  1.1  christos   {
   2607  1.1  christos     int referenced = 0;
   2608  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2609  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2610  1.1  christos   }
   2611  1.1  christos   return cycles;
   2612  1.1  christos #undef FLD
   2613  1.1  christos }
   2614  1.1  christos 
   2615  1.1  christos static int
   2616  1.1  christos model_crisv10_andcbr (SIM_CPU *current_cpu, void *sem_arg)
   2617  1.1  christos {
   2618  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   2619  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2620  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2621  1.1  christos   int cycles = 0;
   2622  1.1  christos   {
   2623  1.1  christos     int referenced = 0;
   2624  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2625  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   2626  1.1  christos   }
   2627  1.1  christos   {
   2628  1.1  christos     int referenced = 0;
   2629  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2630  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2631  1.1  christos   }
   2632  1.1  christos   return cycles;
   2633  1.1  christos #undef FLD
   2634  1.1  christos }
   2635  1.1  christos 
   2636  1.1  christos static int
   2637  1.1  christos model_crisv10_andcwr (SIM_CPU *current_cpu, void *sem_arg)
   2638  1.1  christos {
   2639  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   2640  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2641  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2642  1.1  christos   int cycles = 0;
   2643  1.1  christos   {
   2644  1.1  christos     int referenced = 0;
   2645  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2646  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   2647  1.1  christos   }
   2648  1.1  christos   {
   2649  1.1  christos     int referenced = 0;
   2650  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2651  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2652  1.1  christos   }
   2653  1.1  christos   return cycles;
   2654  1.1  christos #undef FLD
   2655  1.1  christos }
   2656  1.1  christos 
   2657  1.1  christos static int
   2658  1.1  christos model_crisv10_andcdr (SIM_CPU *current_cpu, void *sem_arg)
   2659  1.1  christos {
   2660  1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   2661  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2662  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2663  1.1  christos   int cycles = 0;
   2664  1.1  christos   {
   2665  1.1  christos     int referenced = 0;
   2666  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2667  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   2668  1.1  christos   }
   2669  1.1  christos   {
   2670  1.1  christos     int referenced = 0;
   2671  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2672  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2673  1.1  christos   }
   2674  1.1  christos   return cycles;
   2675  1.1  christos #undef FLD
   2676  1.1  christos }
   2677  1.1  christos 
   2678  1.1  christos static int
   2679  1.1  christos model_crisv10_andq (SIM_CPU *current_cpu, void *sem_arg)
   2680  1.1  christos {
   2681  1.1  christos #define FLD(f) abuf->fields.sfmt_andq.f
   2682  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2683  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2684  1.1  christos   int cycles = 0;
   2685  1.1  christos   {
   2686  1.1  christos     int referenced = 0;
   2687  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2688  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2689  1.1  christos   }
   2690  1.1  christos   return cycles;
   2691  1.1  christos #undef FLD
   2692  1.1  christos }
   2693  1.1  christos 
   2694  1.1  christos static int
   2695  1.1  christos model_crisv10_orr_b_r (SIM_CPU *current_cpu, void *sem_arg)
   2696  1.1  christos {
   2697  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   2698  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2699  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2700  1.1  christos   int cycles = 0;
   2701  1.1  christos   {
   2702  1.1  christos     int referenced = 0;
   2703  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2704  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2705  1.1  christos   }
   2706  1.1  christos   return cycles;
   2707  1.1  christos #undef FLD
   2708  1.1  christos }
   2709  1.1  christos 
   2710  1.1  christos static int
   2711  1.1  christos model_crisv10_orr_w_r (SIM_CPU *current_cpu, void *sem_arg)
   2712  1.1  christos {
   2713  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   2714  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2715  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2716  1.1  christos   int cycles = 0;
   2717  1.1  christos   {
   2718  1.1  christos     int referenced = 0;
   2719  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2720  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2721  1.1  christos   }
   2722  1.1  christos   return cycles;
   2723  1.1  christos #undef FLD
   2724  1.1  christos }
   2725  1.1  christos 
   2726  1.1  christos static int
   2727  1.1  christos model_crisv10_orr_d_r (SIM_CPU *current_cpu, void *sem_arg)
   2728  1.1  christos {
   2729  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   2730  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2731  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2732  1.1  christos   int cycles = 0;
   2733  1.1  christos   {
   2734  1.1  christos     int referenced = 0;
   2735  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2736  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2737  1.1  christos   }
   2738  1.1  christos   return cycles;
   2739  1.1  christos #undef FLD
   2740  1.1  christos }
   2741  1.1  christos 
   2742  1.1  christos static int
   2743  1.1  christos model_crisv10_or_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   2744  1.1  christos {
   2745  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2746  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2747  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2748  1.1  christos   int cycles = 0;
   2749  1.1  christos   {
   2750  1.1  christos     int referenced = 0;
   2751  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2752  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   2753  1.1  christos   }
   2754  1.1  christos   {
   2755  1.1  christos     int referenced = 0;
   2756  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2757  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2758  1.1  christos   }
   2759  1.1  christos   return cycles;
   2760  1.1  christos #undef FLD
   2761  1.1  christos }
   2762  1.1  christos 
   2763  1.1  christos static int
   2764  1.1  christos model_crisv10_or_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   2765  1.1  christos {
   2766  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2767  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2768  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2769  1.1  christos   int cycles = 0;
   2770  1.1  christos   {
   2771  1.1  christos     int referenced = 0;
   2772  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2773  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   2774  1.1  christos   }
   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 += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, 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_crisv10_or_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   2786  1.1  christos {
   2787  1.1  christos #define FLD(f) abuf->fields.sfmt_add_m_b_m.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 += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   2795  1.1  christos   }
   2796  1.1  christos   {
   2797  1.1  christos     int referenced = 0;
   2798  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2799  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2800  1.1  christos   }
   2801  1.1  christos   return cycles;
   2802  1.1  christos #undef FLD
   2803  1.1  christos }
   2804  1.1  christos 
   2805  1.1  christos static int
   2806  1.1  christos model_crisv10_orcbr (SIM_CPU *current_cpu, void *sem_arg)
   2807  1.1  christos {
   2808  1.1  christos #define FLD(f) abuf->fields.sfmt_addcbr.f
   2809  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2810  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2811  1.1  christos   int cycles = 0;
   2812  1.1  christos   {
   2813  1.1  christos     int referenced = 0;
   2814  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2815  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   2816  1.1  christos   }
   2817  1.1  christos   {
   2818  1.1  christos     int referenced = 0;
   2819  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2820  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2821  1.1  christos   }
   2822  1.1  christos   return cycles;
   2823  1.1  christos #undef FLD
   2824  1.1  christos }
   2825  1.1  christos 
   2826  1.1  christos static int
   2827  1.1  christos model_crisv10_orcwr (SIM_CPU *current_cpu, void *sem_arg)
   2828  1.1  christos {
   2829  1.1  christos #define FLD(f) abuf->fields.sfmt_addcwr.f
   2830  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2831  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2832  1.1  christos   int cycles = 0;
   2833  1.1  christos   {
   2834  1.1  christos     int referenced = 0;
   2835  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2836  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   2837  1.1  christos   }
   2838  1.1  christos   {
   2839  1.1  christos     int referenced = 0;
   2840  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2841  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2842  1.1  christos   }
   2843  1.1  christos   return cycles;
   2844  1.1  christos #undef FLD
   2845  1.1  christos }
   2846  1.1  christos 
   2847  1.1  christos static int
   2848  1.1  christos model_crisv10_orcdr (SIM_CPU *current_cpu, void *sem_arg)
   2849  1.1  christos {
   2850  1.1  christos #define FLD(f) abuf->fields.sfmt_addcdr.f
   2851  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2852  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2853  1.1  christos   int cycles = 0;
   2854  1.1  christos   {
   2855  1.1  christos     int referenced = 0;
   2856  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2857  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   2858  1.1  christos   }
   2859  1.1  christos   {
   2860  1.1  christos     int referenced = 0;
   2861  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2862  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   2863  1.1  christos   }
   2864  1.1  christos   return cycles;
   2865  1.1  christos #undef FLD
   2866  1.1  christos }
   2867  1.1  christos 
   2868  1.1  christos static int
   2869  1.1  christos model_crisv10_orq (SIM_CPU *current_cpu, void *sem_arg)
   2870  1.1  christos {
   2871  1.1  christos #define FLD(f) abuf->fields.sfmt_andq.f
   2872  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2873  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2874  1.1  christos   int cycles = 0;
   2875  1.1  christos   {
   2876  1.1  christos     int referenced = 0;
   2877  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2878  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2879  1.1  christos   }
   2880  1.1  christos   return cycles;
   2881  1.1  christos #undef FLD
   2882  1.1  christos }
   2883  1.1  christos 
   2884  1.1  christos static int
   2885  1.1  christos model_crisv10_xor (SIM_CPU *current_cpu, void *sem_arg)
   2886  1.1  christos {
   2887  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   2888  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2889  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2890  1.1  christos   int cycles = 0;
   2891  1.1  christos   {
   2892  1.1  christos     int referenced = 0;
   2893  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2894  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2895  1.1  christos   }
   2896  1.1  christos   return cycles;
   2897  1.1  christos #undef FLD
   2898  1.1  christos }
   2899  1.1  christos 
   2900  1.1  christos static int
   2901  1.1  christos model_crisv10_swap (SIM_CPU *current_cpu, void *sem_arg)
   2902  1.1  christos {
   2903  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
   2904  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2905  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2906  1.1  christos   int cycles = 0;
   2907  1.1  christos   {
   2908  1.1  christos     int referenced = 0;
   2909  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2910  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2911  1.1  christos   }
   2912  1.1  christos   return cycles;
   2913  1.1  christos #undef FLD
   2914  1.1  christos }
   2915  1.1  christos 
   2916  1.1  christos static int
   2917  1.1  christos model_crisv10_asrr_b_r (SIM_CPU *current_cpu, void *sem_arg)
   2918  1.1  christos {
   2919  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   2920  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2921  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2922  1.1  christos   int cycles = 0;
   2923  1.1  christos   {
   2924  1.1  christos     int referenced = 0;
   2925  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2926  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2927  1.1  christos   }
   2928  1.1  christos   return cycles;
   2929  1.1  christos #undef FLD
   2930  1.1  christos }
   2931  1.1  christos 
   2932  1.1  christos static int
   2933  1.1  christos model_crisv10_asrr_w_r (SIM_CPU *current_cpu, void *sem_arg)
   2934  1.1  christos {
   2935  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   2936  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2937  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2938  1.1  christos   int cycles = 0;
   2939  1.1  christos   {
   2940  1.1  christos     int referenced = 0;
   2941  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2942  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2943  1.1  christos   }
   2944  1.1  christos   return cycles;
   2945  1.1  christos #undef FLD
   2946  1.1  christos }
   2947  1.1  christos 
   2948  1.1  christos static int
   2949  1.1  christos model_crisv10_asrr_d_r (SIM_CPU *current_cpu, void *sem_arg)
   2950  1.1  christos {
   2951  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   2952  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2953  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2954  1.1  christos   int cycles = 0;
   2955  1.1  christos   {
   2956  1.1  christos     int referenced = 0;
   2957  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2958  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2959  1.1  christos   }
   2960  1.1  christos   return cycles;
   2961  1.1  christos #undef FLD
   2962  1.1  christos }
   2963  1.1  christos 
   2964  1.1  christos static int
   2965  1.1  christos model_crisv10_asrq (SIM_CPU *current_cpu, void *sem_arg)
   2966  1.1  christos {
   2967  1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   2968  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2969  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2970  1.1  christos   int cycles = 0;
   2971  1.1  christos   {
   2972  1.1  christos     int referenced = 0;
   2973  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2974  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2975  1.1  christos   }
   2976  1.1  christos   return cycles;
   2977  1.1  christos #undef FLD
   2978  1.1  christos }
   2979  1.1  christos 
   2980  1.1  christos static int
   2981  1.1  christos model_crisv10_lsrr_b_r (SIM_CPU *current_cpu, void *sem_arg)
   2982  1.1  christos {
   2983  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   2984  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2985  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2986  1.1  christos   int cycles = 0;
   2987  1.1  christos   {
   2988  1.1  christos     int referenced = 0;
   2989  1.1  christos     int UNUSED insn_referenced = abuf->written;
   2990  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   2991  1.1  christos   }
   2992  1.1  christos   return cycles;
   2993  1.1  christos #undef FLD
   2994  1.1  christos }
   2995  1.1  christos 
   2996  1.1  christos static int
   2997  1.1  christos model_crisv10_lsrr_w_r (SIM_CPU *current_cpu, void *sem_arg)
   2998  1.1  christos {
   2999  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   3000  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3001  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3002  1.1  christos   int cycles = 0;
   3003  1.1  christos   {
   3004  1.1  christos     int referenced = 0;
   3005  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3006  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3007  1.1  christos   }
   3008  1.1  christos   return cycles;
   3009  1.1  christos #undef FLD
   3010  1.1  christos }
   3011  1.1  christos 
   3012  1.1  christos static int
   3013  1.1  christos model_crisv10_lsrr_d_r (SIM_CPU *current_cpu, void *sem_arg)
   3014  1.1  christos {
   3015  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   3016  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3017  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3018  1.1  christos   int cycles = 0;
   3019  1.1  christos   {
   3020  1.1  christos     int referenced = 0;
   3021  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3022  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3023  1.1  christos   }
   3024  1.1  christos   return cycles;
   3025  1.1  christos #undef FLD
   3026  1.1  christos }
   3027  1.1  christos 
   3028  1.1  christos static int
   3029  1.1  christos model_crisv10_lsrq (SIM_CPU *current_cpu, void *sem_arg)
   3030  1.1  christos {
   3031  1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   3032  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3033  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3034  1.1  christos   int cycles = 0;
   3035  1.1  christos   {
   3036  1.1  christos     int referenced = 0;
   3037  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3038  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3039  1.1  christos   }
   3040  1.1  christos   return cycles;
   3041  1.1  christos #undef FLD
   3042  1.1  christos }
   3043  1.1  christos 
   3044  1.1  christos static int
   3045  1.1  christos model_crisv10_lslr_b_r (SIM_CPU *current_cpu, void *sem_arg)
   3046  1.1  christos {
   3047  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   3048  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3049  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3050  1.1  christos   int cycles = 0;
   3051  1.1  christos   {
   3052  1.1  christos     int referenced = 0;
   3053  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3054  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3055  1.1  christos   }
   3056  1.1  christos   return cycles;
   3057  1.1  christos #undef FLD
   3058  1.1  christos }
   3059  1.1  christos 
   3060  1.1  christos static int
   3061  1.1  christos model_crisv10_lslr_w_r (SIM_CPU *current_cpu, void *sem_arg)
   3062  1.1  christos {
   3063  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   3064  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3065  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3066  1.1  christos   int cycles = 0;
   3067  1.1  christos   {
   3068  1.1  christos     int referenced = 0;
   3069  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3070  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3071  1.1  christos   }
   3072  1.1  christos   return cycles;
   3073  1.1  christos #undef FLD
   3074  1.1  christos }
   3075  1.1  christos 
   3076  1.1  christos static int
   3077  1.1  christos model_crisv10_lslr_d_r (SIM_CPU *current_cpu, void *sem_arg)
   3078  1.1  christos {
   3079  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   3080  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3081  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3082  1.1  christos   int cycles = 0;
   3083  1.1  christos   {
   3084  1.1  christos     int referenced = 0;
   3085  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3086  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3087  1.1  christos   }
   3088  1.1  christos   return cycles;
   3089  1.1  christos #undef FLD
   3090  1.1  christos }
   3091  1.1  christos 
   3092  1.1  christos static int
   3093  1.1  christos model_crisv10_lslq (SIM_CPU *current_cpu, void *sem_arg)
   3094  1.1  christos {
   3095  1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   3096  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3097  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3098  1.1  christos   int cycles = 0;
   3099  1.1  christos   {
   3100  1.1  christos     int referenced = 0;
   3101  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3102  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3103  1.1  christos   }
   3104  1.1  christos   return cycles;
   3105  1.1  christos #undef FLD
   3106  1.1  christos }
   3107  1.1  christos 
   3108  1.1  christos static int
   3109  1.1  christos model_crisv10_btst (SIM_CPU *current_cpu, void *sem_arg)
   3110  1.1  christos {
   3111  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   3112  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3113  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3114  1.1  christos   int cycles = 0;
   3115  1.1  christos   {
   3116  1.1  christos     int referenced = 0;
   3117  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3118  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3119  1.1  christos   }
   3120  1.1  christos   return cycles;
   3121  1.1  christos #undef FLD
   3122  1.1  christos }
   3123  1.1  christos 
   3124  1.1  christos static int
   3125  1.1  christos model_crisv10_btstq (SIM_CPU *current_cpu, void *sem_arg)
   3126  1.1  christos {
   3127  1.1  christos #define FLD(f) abuf->fields.sfmt_asrq.f
   3128  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3129  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3130  1.1  christos   int cycles = 0;
   3131  1.1  christos   {
   3132  1.1  christos     int referenced = 0;
   3133  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3134  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3135  1.1  christos   }
   3136  1.1  christos   return cycles;
   3137  1.1  christos #undef FLD
   3138  1.1  christos }
   3139  1.1  christos 
   3140  1.1  christos static int
   3141  1.1  christos model_crisv10_setf (SIM_CPU *current_cpu, void *sem_arg)
   3142  1.1  christos {
   3143  1.1  christos #define FLD(f) abuf->fields.sfmt_setf.f
   3144  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3145  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3146  1.1  christos   int cycles = 0;
   3147  1.1  christos   {
   3148  1.1  christos     int referenced = 0;
   3149  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3150  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3151  1.1  christos   }
   3152  1.1  christos   return cycles;
   3153  1.1  christos #undef FLD
   3154  1.1  christos }
   3155  1.1  christos 
   3156  1.1  christos static int
   3157  1.1  christos model_crisv10_clearf (SIM_CPU *current_cpu, void *sem_arg)
   3158  1.1  christos {
   3159  1.1  christos #define FLD(f) abuf->fields.sfmt_setf.f
   3160  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3161  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3162  1.1  christos   int cycles = 0;
   3163  1.1  christos   {
   3164  1.1  christos     int referenced = 0;
   3165  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3166  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3167  1.1  christos   }
   3168  1.1  christos   return cycles;
   3169  1.1  christos #undef FLD
   3170  1.1  christos }
   3171  1.1  christos 
   3172  1.1  christos static int
   3173  1.1  christos model_crisv10_bcc_b (SIM_CPU *current_cpu, void *sem_arg)
   3174  1.1  christos {
   3175  1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_b.f
   3176  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3177  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3178  1.1  christos   int cycles = 0;
   3179  1.1  christos   {
   3180  1.1  christos     int referenced = 0;
   3181  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3182  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3183  1.1  christos   }
   3184  1.1  christos   return cycles;
   3185  1.1  christos #undef FLD
   3186  1.1  christos }
   3187  1.1  christos 
   3188  1.1  christos static int
   3189  1.1  christos model_crisv10_ba_b (SIM_CPU *current_cpu, void *sem_arg)
   3190  1.1  christos {
   3191  1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_b.f
   3192  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3193  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3194  1.1  christos   int cycles = 0;
   3195  1.1  christos   {
   3196  1.1  christos     int referenced = 0;
   3197  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3198  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3199  1.1  christos   }
   3200  1.1  christos   return cycles;
   3201  1.1  christos #undef FLD
   3202  1.1  christos }
   3203  1.1  christos 
   3204  1.1  christos static int
   3205  1.1  christos model_crisv10_bcc_w (SIM_CPU *current_cpu, void *sem_arg)
   3206  1.1  christos {
   3207  1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_w.f
   3208  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3209  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3210  1.1  christos   int cycles = 0;
   3211  1.1  christos   {
   3212  1.1  christos     int referenced = 0;
   3213  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3214  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   3215  1.1  christos   }
   3216  1.1  christos   {
   3217  1.1  christos     int referenced = 0;
   3218  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3219  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3220  1.1  christos   }
   3221  1.1  christos   return cycles;
   3222  1.1  christos #undef FLD
   3223  1.1  christos }
   3224  1.1  christos 
   3225  1.1  christos static int
   3226  1.1  christos model_crisv10_ba_w (SIM_CPU *current_cpu, void *sem_arg)
   3227  1.1  christos {
   3228  1.1  christos #define FLD(f) abuf->fields.sfmt_bcc_w.f
   3229  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3230  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3231  1.1  christos   int cycles = 0;
   3232  1.1  christos   {
   3233  1.1  christos     int referenced = 0;
   3234  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3235  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   3236  1.1  christos   }
   3237  1.1  christos   {
   3238  1.1  christos     int referenced = 0;
   3239  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3240  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3241  1.1  christos   }
   3242  1.1  christos   return cycles;
   3243  1.1  christos #undef FLD
   3244  1.1  christos }
   3245  1.1  christos 
   3246  1.1  christos static int
   3247  1.1  christos model_crisv10_jump_r (SIM_CPU *current_cpu, void *sem_arg)
   3248  1.1  christos {
   3249  1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
   3250  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3251  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3252  1.1  christos   int cycles = 0;
   3253  1.1  christos   {
   3254  1.1  christos     int referenced = 0;
   3255  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3256  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3257  1.1  christos   }
   3258  1.1  christos   return cycles;
   3259  1.1  christos #undef FLD
   3260  1.1  christos }
   3261  1.1  christos 
   3262  1.1  christos static int
   3263  1.1  christos model_crisv10_jump_m (SIM_CPU *current_cpu, void *sem_arg)
   3264  1.1  christos {
   3265  1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
   3266  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3267  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3268  1.1  christos   int cycles = 0;
   3269  1.1  christos   {
   3270  1.1  christos     int referenced = 0;
   3271  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3272  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   3273  1.1  christos   }
   3274  1.1  christos   {
   3275  1.1  christos     int referenced = 0;
   3276  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3277  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3278  1.1  christos   }
   3279  1.1  christos   return cycles;
   3280  1.1  christos #undef FLD
   3281  1.1  christos }
   3282  1.1  christos 
   3283  1.1  christos static int
   3284  1.1  christos model_crisv10_jump_c (SIM_CPU *current_cpu, void *sem_arg)
   3285  1.1  christos {
   3286  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
   3287  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3288  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3289  1.1  christos   int cycles = 0;
   3290  1.1  christos   {
   3291  1.1  christos     int referenced = 0;
   3292  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3293  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   3294  1.1  christos   }
   3295  1.1  christos   {
   3296  1.1  christos     int referenced = 0;
   3297  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3298  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3299  1.1  christos   }
   3300  1.1  christos   return cycles;
   3301  1.1  christos #undef FLD
   3302  1.1  christos }
   3303  1.1  christos 
   3304  1.1  christos static int
   3305  1.1  christos model_crisv10_break (SIM_CPU *current_cpu, void *sem_arg)
   3306  1.1  christos {
   3307  1.1  christos #define FLD(f) abuf->fields.sfmt_break.f
   3308  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3309  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3310  1.1  christos   int cycles = 0;
   3311  1.1  christos   {
   3312  1.1  christos     int referenced = 0;
   3313  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3314  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3315  1.1  christos   }
   3316  1.1  christos   return cycles;
   3317  1.1  christos #undef FLD
   3318  1.1  christos }
   3319  1.1  christos 
   3320  1.1  christos static int
   3321  1.1  christos model_crisv10_bound_r_b_r (SIM_CPU *current_cpu, void *sem_arg)
   3322  1.1  christos {
   3323  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   3324  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3325  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3326  1.1  christos   int cycles = 0;
   3327  1.1  christos   {
   3328  1.1  christos     int referenced = 0;
   3329  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3330  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3331  1.1  christos   }
   3332  1.1  christos   return cycles;
   3333  1.1  christos #undef FLD
   3334  1.1  christos }
   3335  1.1  christos 
   3336  1.1  christos static int
   3337  1.1  christos model_crisv10_bound_r_w_r (SIM_CPU *current_cpu, void *sem_arg)
   3338  1.1  christos {
   3339  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   3340  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3341  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3342  1.1  christos   int cycles = 0;
   3343  1.1  christos   {
   3344  1.1  christos     int referenced = 0;
   3345  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3346  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3347  1.1  christos   }
   3348  1.1  christos   return cycles;
   3349  1.1  christos #undef FLD
   3350  1.1  christos }
   3351  1.1  christos 
   3352  1.1  christos static int
   3353  1.1  christos model_crisv10_bound_r_d_r (SIM_CPU *current_cpu, void *sem_arg)
   3354  1.1  christos {
   3355  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   3356  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3357  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3358  1.1  christos   int cycles = 0;
   3359  1.1  christos   {
   3360  1.1  christos     int referenced = 0;
   3361  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3362  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3363  1.1  christos   }
   3364  1.1  christos   return cycles;
   3365  1.1  christos #undef FLD
   3366  1.1  christos }
   3367  1.1  christos 
   3368  1.1  christos static int
   3369  1.1  christos model_crisv10_bound_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   3370  1.1  christos {
   3371  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
   3372  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3373  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3374  1.1  christos   int cycles = 0;
   3375  1.1  christos   {
   3376  1.1  christos     int referenced = 0;
   3377  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3378  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   3379  1.1  christos   }
   3380  1.1  christos   {
   3381  1.1  christos     int referenced = 0;
   3382  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3383  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3384  1.1  christos   }
   3385  1.1  christos   return cycles;
   3386  1.1  christos #undef FLD
   3387  1.1  christos }
   3388  1.1  christos 
   3389  1.1  christos static int
   3390  1.1  christos model_crisv10_bound_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   3391  1.1  christos {
   3392  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
   3393  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3394  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3395  1.1  christos   int cycles = 0;
   3396  1.1  christos   {
   3397  1.1  christos     int referenced = 0;
   3398  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3399  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   3400  1.1  christos   }
   3401  1.1  christos   {
   3402  1.1  christos     int referenced = 0;
   3403  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3404  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3405  1.1  christos   }
   3406  1.1  christos   return cycles;
   3407  1.1  christos #undef FLD
   3408  1.1  christos }
   3409  1.1  christos 
   3410  1.1  christos static int
   3411  1.1  christos model_crisv10_bound_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   3412  1.1  christos {
   3413  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
   3414  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3415  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3416  1.1  christos   int cycles = 0;
   3417  1.1  christos   {
   3418  1.1  christos     int referenced = 0;
   3419  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3420  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   3421  1.1  christos   }
   3422  1.1  christos   {
   3423  1.1  christos     int referenced = 0;
   3424  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3425  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3426  1.1  christos   }
   3427  1.1  christos   return cycles;
   3428  1.1  christos #undef FLD
   3429  1.1  christos }
   3430  1.1  christos 
   3431  1.1  christos static int
   3432  1.1  christos model_crisv10_bound_cb (SIM_CPU *current_cpu, void *sem_arg)
   3433  1.1  christos {
   3434  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   3435  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3436  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3437  1.1  christos   int cycles = 0;
   3438  1.1  christos   {
   3439  1.1  christos     int referenced = 0;
   3440  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3441  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   3442  1.1  christos   }
   3443  1.1  christos   {
   3444  1.1  christos     int referenced = 0;
   3445  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3446  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3447  1.1  christos   }
   3448  1.1  christos   return cycles;
   3449  1.1  christos #undef FLD
   3450  1.1  christos }
   3451  1.1  christos 
   3452  1.1  christos static int
   3453  1.1  christos model_crisv10_bound_cw (SIM_CPU *current_cpu, void *sem_arg)
   3454  1.1  christos {
   3455  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   3456  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3457  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3458  1.1  christos   int cycles = 0;
   3459  1.1  christos   {
   3460  1.1  christos     int referenced = 0;
   3461  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3462  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   3463  1.1  christos   }
   3464  1.1  christos   {
   3465  1.1  christos     int referenced = 0;
   3466  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3467  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3468  1.1  christos   }
   3469  1.1  christos   return cycles;
   3470  1.1  christos #undef FLD
   3471  1.1  christos }
   3472  1.1  christos 
   3473  1.1  christos static int
   3474  1.1  christos model_crisv10_bound_cd (SIM_CPU *current_cpu, void *sem_arg)
   3475  1.1  christos {
   3476  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
   3477  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3478  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3479  1.1  christos   int cycles = 0;
   3480  1.1  christos   {
   3481  1.1  christos     int referenced = 0;
   3482  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3483  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   3484  1.1  christos   }
   3485  1.1  christos   {
   3486  1.1  christos     int referenced = 0;
   3487  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3488  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3489  1.1  christos   }
   3490  1.1  christos   return cycles;
   3491  1.1  christos #undef FLD
   3492  1.1  christos }
   3493  1.1  christos 
   3494  1.1  christos static int
   3495  1.1  christos model_crisv10_scc (SIM_CPU *current_cpu, void *sem_arg)
   3496  1.1  christos {
   3497  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
   3498  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3499  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3500  1.1  christos   int cycles = 0;
   3501  1.1  christos   {
   3502  1.1  christos     int referenced = 0;
   3503  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3504  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3505  1.1  christos   }
   3506  1.1  christos   return cycles;
   3507  1.1  christos #undef FLD
   3508  1.1  christos }
   3509  1.1  christos 
   3510  1.1  christos static int
   3511  1.1  christos model_crisv10_lz (SIM_CPU *current_cpu, void *sem_arg)
   3512  1.1  christos {
   3513  1.1  christos #define FLD(f) abuf->fields.sfmt_muls_b.f
   3514  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3515  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3516  1.1  christos   int cycles = 0;
   3517  1.1  christos   {
   3518  1.1  christos     int referenced = 0;
   3519  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3520  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3521  1.1  christos   }
   3522  1.1  christos   return cycles;
   3523  1.1  christos #undef FLD
   3524  1.1  christos }
   3525  1.1  christos 
   3526  1.1  christos static int
   3527  1.1  christos model_crisv10_addoq (SIM_CPU *current_cpu, void *sem_arg)
   3528  1.1  christos {
   3529  1.1  christos #define FLD(f) abuf->fields.sfmt_addoq.f
   3530  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3531  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3532  1.1  christos   int cycles = 0;
   3533  1.1  christos   {
   3534  1.1  christos     int referenced = 0;
   3535  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3536  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3537  1.1  christos   }
   3538  1.1  christos   return cycles;
   3539  1.1  christos #undef FLD
   3540  1.1  christos }
   3541  1.1  christos 
   3542  1.1  christos static int
   3543  1.1  christos model_crisv10_bdapqpc (SIM_CPU *current_cpu, void *sem_arg)
   3544  1.1  christos {
   3545  1.1  christos #define FLD(f) abuf->fields.sfmt_addoq.f
   3546  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3547  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3548  1.1  christos   int cycles = 0;
   3549  1.1  christos   {
   3550  1.1  christos     int referenced = 0;
   3551  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3552  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3553  1.1  christos   }
   3554  1.1  christos   return cycles;
   3555  1.1  christos #undef FLD
   3556  1.1  christos }
   3557  1.1  christos 
   3558  1.1  christos static int
   3559  1.1  christos model_crisv10_bdap_32_pc (SIM_CPU *current_cpu, void *sem_arg)
   3560  1.1  christos {
   3561  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
   3562  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3563  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3564  1.1  christos   int cycles = 0;
   3565  1.1  christos   {
   3566  1.1  christos     int referenced = 0;
   3567  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3568  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   3569  1.1  christos   }
   3570  1.1  christos   {
   3571  1.1  christos     int referenced = 0;
   3572  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3573  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3574  1.1  christos   }
   3575  1.1  christos   return cycles;
   3576  1.1  christos #undef FLD
   3577  1.1  christos }
   3578  1.1  christos 
   3579  1.1  christos static int
   3580  1.1  christos model_crisv10_move_m_pcplus_p0 (SIM_CPU *current_cpu, void *sem_arg)
   3581  1.1  christos {
   3582  1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_spplus_p8.f
   3583  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3584  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3585  1.1  christos   int cycles = 0;
   3586  1.1  christos   {
   3587  1.1  christos     int referenced = 0;
   3588  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3589  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   3590  1.1  christos   }
   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 += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, 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_crisv10_move_m_spplus_p8 (SIM_CPU *current_cpu, void *sem_arg)
   3602  1.1  christos {
   3603  1.1  christos #define FLD(f) abuf->fields.sfmt_move_m_spplus_p8.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 += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   3611  1.1  christos   }
   3612  1.1  christos   {
   3613  1.1  christos     int referenced = 0;
   3614  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3615  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3616  1.1  christos   }
   3617  1.1  christos   return cycles;
   3618  1.1  christos #undef FLD
   3619  1.1  christos }
   3620  1.1  christos 
   3621  1.1  christos static int
   3622  1.1  christos model_crisv10_addo_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   3623  1.1  christos {
   3624  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
   3625  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3626  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3627  1.1  christos   int cycles = 0;
   3628  1.1  christos   {
   3629  1.1  christos     int referenced = 0;
   3630  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3631  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   3632  1.1  christos   }
   3633  1.1  christos   {
   3634  1.1  christos     int referenced = 0;
   3635  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3636  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3637  1.1  christos   }
   3638  1.1  christos   return cycles;
   3639  1.1  christos #undef FLD
   3640  1.1  christos }
   3641  1.1  christos 
   3642  1.1  christos static int
   3643  1.1  christos model_crisv10_addo_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   3644  1.1  christos {
   3645  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
   3646  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3647  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3648  1.1  christos   int cycles = 0;
   3649  1.1  christos   {
   3650  1.1  christos     int referenced = 0;
   3651  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3652  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   3653  1.1  christos   }
   3654  1.1  christos   {
   3655  1.1  christos     int referenced = 0;
   3656  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3657  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3658  1.1  christos   }
   3659  1.1  christos   return cycles;
   3660  1.1  christos #undef FLD
   3661  1.1  christos }
   3662  1.1  christos 
   3663  1.1  christos static int
   3664  1.1  christos model_crisv10_addo_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   3665  1.1  christos {
   3666  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
   3667  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3668  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3669  1.1  christos   int cycles = 0;
   3670  1.1  christos   {
   3671  1.1  christos     int referenced = 0;
   3672  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3673  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   3674  1.1  christos   }
   3675  1.1  christos   {
   3676  1.1  christos     int referenced = 0;
   3677  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3678  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3679  1.1  christos   }
   3680  1.1  christos   return cycles;
   3681  1.1  christos #undef FLD
   3682  1.1  christos }
   3683  1.1  christos 
   3684  1.1  christos static int
   3685  1.1  christos model_crisv10_addo_cb (SIM_CPU *current_cpu, void *sem_arg)
   3686  1.1  christos {
   3687  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cb.f
   3688  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3689  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3690  1.1  christos   int cycles = 0;
   3691  1.1  christos   {
   3692  1.1  christos     int referenced = 0;
   3693  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3694  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   3695  1.1  christos   }
   3696  1.1  christos   {
   3697  1.1  christos     int referenced = 0;
   3698  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3699  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3700  1.1  christos   }
   3701  1.1  christos   return cycles;
   3702  1.1  christos #undef FLD
   3703  1.1  christos }
   3704  1.1  christos 
   3705  1.1  christos static int
   3706  1.1  christos model_crisv10_addo_cw (SIM_CPU *current_cpu, void *sem_arg)
   3707  1.1  christos {
   3708  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cw.f
   3709  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3710  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3711  1.1  christos   int cycles = 0;
   3712  1.1  christos   {
   3713  1.1  christos     int referenced = 0;
   3714  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3715  1.1  christos     cycles += crisv10f_model_crisv10_u_const16 (current_cpu, idesc, 0, referenced);
   3716  1.1  christos   }
   3717  1.1  christos   {
   3718  1.1  christos     int referenced = 0;
   3719  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3720  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3721  1.1  christos   }
   3722  1.1  christos   return cycles;
   3723  1.1  christos #undef FLD
   3724  1.1  christos }
   3725  1.1  christos 
   3726  1.1  christos static int
   3727  1.1  christos model_crisv10_addo_cd (SIM_CPU *current_cpu, void *sem_arg)
   3728  1.1  christos {
   3729  1.1  christos #define FLD(f) abuf->fields.sfmt_bound_cd.f
   3730  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3731  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3732  1.1  christos   int cycles = 0;
   3733  1.1  christos   {
   3734  1.1  christos     int referenced = 0;
   3735  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3736  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   3737  1.1  christos   }
   3738  1.1  christos   {
   3739  1.1  christos     int referenced = 0;
   3740  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3741  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3742  1.1  christos   }
   3743  1.1  christos   return cycles;
   3744  1.1  christos #undef FLD
   3745  1.1  christos }
   3746  1.1  christos 
   3747  1.1  christos static int
   3748  1.1  christos model_crisv10_dip_m (SIM_CPU *current_cpu, void *sem_arg)
   3749  1.1  christos {
   3750  1.1  christos #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
   3751  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3752  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3753  1.1  christos   int cycles = 0;
   3754  1.1  christos   {
   3755  1.1  christos     int referenced = 0;
   3756  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3757  1.1  christos     cycles += crisv10f_model_crisv10_u_mem (current_cpu, idesc, 0, referenced);
   3758  1.1  christos   }
   3759  1.1  christos   {
   3760  1.1  christos     int referenced = 0;
   3761  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3762  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3763  1.1  christos   }
   3764  1.1  christos   return cycles;
   3765  1.1  christos #undef FLD
   3766  1.1  christos }
   3767  1.1  christos 
   3768  1.1  christos static int
   3769  1.1  christos model_crisv10_dip_c (SIM_CPU *current_cpu, void *sem_arg)
   3770  1.1  christos {
   3771  1.1  christos #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
   3772  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3773  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3774  1.1  christos   int cycles = 0;
   3775  1.1  christos   {
   3776  1.1  christos     int referenced = 0;
   3777  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3778  1.1  christos     cycles += crisv10f_model_crisv10_u_const32 (current_cpu, idesc, 0, referenced);
   3779  1.1  christos   }
   3780  1.1  christos   {
   3781  1.1  christos     int referenced = 0;
   3782  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3783  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 1, referenced);
   3784  1.1  christos   }
   3785  1.1  christos   return cycles;
   3786  1.1  christos #undef FLD
   3787  1.1  christos }
   3788  1.1  christos 
   3789  1.1  christos static int
   3790  1.1  christos model_crisv10_addi_acr_b_r (SIM_CPU *current_cpu, void *sem_arg)
   3791  1.1  christos {
   3792  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   3793  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3794  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3795  1.1  christos   int cycles = 0;
   3796  1.1  christos   {
   3797  1.1  christos     int referenced = 0;
   3798  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3799  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3800  1.1  christos   }
   3801  1.1  christos   return cycles;
   3802  1.1  christos #undef FLD
   3803  1.1  christos }
   3804  1.1  christos 
   3805  1.1  christos static int
   3806  1.1  christos model_crisv10_addi_acr_w_r (SIM_CPU *current_cpu, void *sem_arg)
   3807  1.1  christos {
   3808  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   3809  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3810  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3811  1.1  christos   int cycles = 0;
   3812  1.1  christos   {
   3813  1.1  christos     int referenced = 0;
   3814  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3815  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3816  1.1  christos   }
   3817  1.1  christos   return cycles;
   3818  1.1  christos #undef FLD
   3819  1.1  christos }
   3820  1.1  christos 
   3821  1.1  christos static int
   3822  1.1  christos model_crisv10_addi_acr_d_r (SIM_CPU *current_cpu, void *sem_arg)
   3823  1.1  christos {
   3824  1.1  christos #define FLD(f) abuf->fields.sfmt_add_b_r.f
   3825  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3826  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3827  1.1  christos   int cycles = 0;
   3828  1.1  christos   {
   3829  1.1  christos     int referenced = 0;
   3830  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3831  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3832  1.1  christos   }
   3833  1.1  christos   return cycles;
   3834  1.1  christos #undef FLD
   3835  1.1  christos }
   3836  1.1  christos 
   3837  1.1  christos static int
   3838  1.1  christos model_crisv10_biap_pc_b_r (SIM_CPU *current_cpu, void *sem_arg)
   3839  1.1  christos {
   3840  1.1  christos #define FLD(f) abuf->fields.sfmt_addoq.f
   3841  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3842  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3843  1.1  christos   int cycles = 0;
   3844  1.1  christos   {
   3845  1.1  christos     int referenced = 0;
   3846  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3847  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3848  1.1  christos   }
   3849  1.1  christos   return cycles;
   3850  1.1  christos #undef FLD
   3851  1.1  christos }
   3852  1.1  christos 
   3853  1.1  christos static int
   3854  1.1  christos model_crisv10_biap_pc_w_r (SIM_CPU *current_cpu, void *sem_arg)
   3855  1.1  christos {
   3856  1.1  christos #define FLD(f) abuf->fields.sfmt_addoq.f
   3857  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3858  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3859  1.1  christos   int cycles = 0;
   3860  1.1  christos   {
   3861  1.1  christos     int referenced = 0;
   3862  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3863  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3864  1.1  christos   }
   3865  1.1  christos   return cycles;
   3866  1.1  christos #undef FLD
   3867  1.1  christos }
   3868  1.1  christos 
   3869  1.1  christos static int
   3870  1.1  christos model_crisv10_biap_pc_d_r (SIM_CPU *current_cpu, void *sem_arg)
   3871  1.1  christos {
   3872  1.1  christos #define FLD(f) abuf->fields.sfmt_addoq.f
   3873  1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3874  1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   3875  1.1  christos   int cycles = 0;
   3876  1.1  christos   {
   3877  1.1  christos     int referenced = 0;
   3878  1.1  christos     int UNUSED insn_referenced = abuf->written;
   3879  1.1  christos     cycles += crisv10f_model_crisv10_u_exec (current_cpu, idesc, 0, referenced);
   3880  1.1  christos   }
   3881  1.1  christos   return cycles;
   3882  1.1  christos #undef FLD
   3883  1.1  christos }
   3884  1.1  christos 
   3885  1.1  christos /* We assume UNIT_NONE == 0 because the tables don't always terminate
   3886  1.1  christos    entries with it.  */
   3887  1.1  christos 
   3888  1.1  christos /* Model timing data for `crisv10'.  */
   3889  1.1  christos 
   3890  1.1  christos static const INSN_TIMING crisv10_timing[] = {
   3891  1.1  christos   { CRISV10F_INSN_X_INVALID, 0, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3892  1.1  christos   { CRISV10F_INSN_X_AFTER, 0, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3893  1.1  christos   { CRISV10F_INSN_X_BEFORE, 0, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3894  1.1  christos   { CRISV10F_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3895  1.1  christos   { CRISV10F_INSN_X_CHAIN, 0, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3896  1.1  christos   { CRISV10F_INSN_X_BEGIN, 0, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3897  1.1  christos   { CRISV10F_INSN_NOP, model_crisv10_nop, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3898  1.1  christos   { CRISV10F_INSN_MOVE_B_R, model_crisv10_move_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3899  1.1  christos   { CRISV10F_INSN_MOVE_W_R, model_crisv10_move_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3900  1.1  christos   { CRISV10F_INSN_MOVE_D_R, model_crisv10_move_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3901  1.1  christos   { CRISV10F_INSN_MOVEPCR, model_crisv10_movepcr, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3902  1.1  christos   { CRISV10F_INSN_MOVEQ, model_crisv10_moveq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3903  1.1  christos   { CRISV10F_INSN_MOVS_B_R, model_crisv10_movs_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3904  1.1  christos   { CRISV10F_INSN_MOVS_W_R, model_crisv10_movs_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3905  1.1  christos   { CRISV10F_INSN_MOVU_B_R, model_crisv10_movu_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3906  1.1  christos   { CRISV10F_INSN_MOVU_W_R, model_crisv10_movu_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3907  1.1  christos   { CRISV10F_INSN_MOVECBR, model_crisv10_movecbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3908  1.1  christos   { CRISV10F_INSN_MOVECWR, model_crisv10_movecwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3909  1.1  christos   { CRISV10F_INSN_MOVECDR, model_crisv10_movecdr, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3910  1.1  christos   { CRISV10F_INSN_MOVSCBR, model_crisv10_movscbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3911  1.1  christos   { CRISV10F_INSN_MOVSCWR, model_crisv10_movscwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3912  1.1  christos   { CRISV10F_INSN_MOVUCBR, model_crisv10_movucbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3913  1.1  christos   { CRISV10F_INSN_MOVUCWR, model_crisv10_movucwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3914  1.1  christos   { CRISV10F_INSN_ADDQ, model_crisv10_addq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3915  1.1  christos   { CRISV10F_INSN_SUBQ, model_crisv10_subq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3916  1.1  christos   { CRISV10F_INSN_CMP_R_B_R, model_crisv10_cmp_r_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3917  1.1  christos   { CRISV10F_INSN_CMP_R_W_R, model_crisv10_cmp_r_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3918  1.1  christos   { CRISV10F_INSN_CMP_R_D_R, model_crisv10_cmp_r_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3919  1.1  christos   { CRISV10F_INSN_CMP_M_B_M, model_crisv10_cmp_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3920  1.1  christos   { CRISV10F_INSN_CMP_M_W_M, model_crisv10_cmp_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3921  1.1  christos   { CRISV10F_INSN_CMP_M_D_M, model_crisv10_cmp_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3922  1.1  christos   { CRISV10F_INSN_CMPCBR, model_crisv10_cmpcbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3923  1.1  christos   { CRISV10F_INSN_CMPCWR, model_crisv10_cmpcwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3924  1.1  christos   { CRISV10F_INSN_CMPCDR, model_crisv10_cmpcdr, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3925  1.1  christos   { CRISV10F_INSN_CMPQ, model_crisv10_cmpq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3926  1.1  christos   { CRISV10F_INSN_CMPS_M_B_M, model_crisv10_cmps_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3927  1.1  christos   { CRISV10F_INSN_CMPS_M_W_M, model_crisv10_cmps_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3928  1.1  christos   { CRISV10F_INSN_CMPSCBR, model_crisv10_cmpscbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3929  1.1  christos   { CRISV10F_INSN_CMPSCWR, model_crisv10_cmpscwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3930  1.1  christos   { CRISV10F_INSN_CMPU_M_B_M, model_crisv10_cmpu_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3931  1.1  christos   { CRISV10F_INSN_CMPU_M_W_M, model_crisv10_cmpu_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3932  1.1  christos   { CRISV10F_INSN_CMPUCBR, model_crisv10_cmpucbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3933  1.1  christos   { CRISV10F_INSN_CMPUCWR, model_crisv10_cmpucwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3934  1.1  christos   { CRISV10F_INSN_MOVE_M_B_M, model_crisv10_move_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3935  1.1  christos   { CRISV10F_INSN_MOVE_M_W_M, model_crisv10_move_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3936  1.1  christos   { CRISV10F_INSN_MOVE_M_D_M, model_crisv10_move_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3937  1.1  christos   { CRISV10F_INSN_MOVS_M_B_M, model_crisv10_movs_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3938  1.1  christos   { CRISV10F_INSN_MOVS_M_W_M, model_crisv10_movs_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3939  1.1  christos   { CRISV10F_INSN_MOVU_M_B_M, model_crisv10_movu_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3940  1.1  christos   { CRISV10F_INSN_MOVU_M_W_M, model_crisv10_movu_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3941  1.1  christos   { CRISV10F_INSN_MOVE_R_SPRV10, model_crisv10_move_r_sprv10, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3942  1.1  christos   { CRISV10F_INSN_MOVE_SPR_RV10, model_crisv10_move_spr_rv10, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3943  1.1  christos   { CRISV10F_INSN_RET_TYPE, model_crisv10_ret_type, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3944  1.1  christos   { CRISV10F_INSN_MOVE_M_SPRV10, model_crisv10_move_m_sprv10, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3945  1.1  christos   { CRISV10F_INSN_MOVE_C_SPRV10_P5, model_crisv10_move_c_sprv10_p5, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3946  1.1  christos   { CRISV10F_INSN_MOVE_C_SPRV10_P9, model_crisv10_move_c_sprv10_p9, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3947  1.1  christos   { CRISV10F_INSN_MOVE_C_SPRV10_P10, model_crisv10_move_c_sprv10_p10, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3948  1.1  christos   { CRISV10F_INSN_MOVE_C_SPRV10_P11, model_crisv10_move_c_sprv10_p11, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3949  1.1  christos   { CRISV10F_INSN_MOVE_C_SPRV10_P12, model_crisv10_move_c_sprv10_p12, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3950  1.1  christos   { CRISV10F_INSN_MOVE_C_SPRV10_P13, model_crisv10_move_c_sprv10_p13, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3951  1.1  christos   { CRISV10F_INSN_MOVE_C_SPRV10_P7, model_crisv10_move_c_sprv10_p7, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3952  1.1  christos   { CRISV10F_INSN_MOVE_C_SPRV10_P14, model_crisv10_move_c_sprv10_p14, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3953  1.1  christos   { CRISV10F_INSN_MOVE_C_SPRV10_P15, model_crisv10_move_c_sprv10_p15, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3954  1.1  christos   { CRISV10F_INSN_MOVE_SPR_MV10, model_crisv10_move_spr_mv10, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3955  1.1  christos   { CRISV10F_INSN_SBFS, model_crisv10_sbfs, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3956  1.1  christos   { CRISV10F_INSN_MOVEM_R_M, model_crisv10_movem_r_m, { { (int) UNIT_CRISV10_U_MOVEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3957  1.1  christos   { CRISV10F_INSN_MOVEM_M_R, model_crisv10_movem_m_r, { { (int) UNIT_CRISV10_U_MOVEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3958  1.1  christos   { CRISV10F_INSN_MOVEM_M_PC, model_crisv10_movem_m_pc, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3959  1.1  christos   { CRISV10F_INSN_ADD_B_R, model_crisv10_add_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3960  1.1  christos   { CRISV10F_INSN_ADD_W_R, model_crisv10_add_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3961  1.1  christos   { CRISV10F_INSN_ADD_D_R, model_crisv10_add_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3962  1.1  christos   { CRISV10F_INSN_ADD_M_B_M, model_crisv10_add_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3963  1.1  christos   { CRISV10F_INSN_ADD_M_W_M, model_crisv10_add_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3964  1.1  christos   { CRISV10F_INSN_ADD_M_D_M, model_crisv10_add_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3965  1.1  christos   { CRISV10F_INSN_ADDCBR, model_crisv10_addcbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3966  1.1  christos   { CRISV10F_INSN_ADDCWR, model_crisv10_addcwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3967  1.1  christos   { CRISV10F_INSN_ADDCDR, model_crisv10_addcdr, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3968  1.1  christos   { CRISV10F_INSN_ADDCPC, model_crisv10_addcpc, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_STALL, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3969  1.1  christos   { CRISV10F_INSN_ADDS_B_R, model_crisv10_adds_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3970  1.1  christos   { CRISV10F_INSN_ADDS_W_R, model_crisv10_adds_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3971  1.1  christos   { CRISV10F_INSN_ADDS_M_B_M, model_crisv10_adds_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3972  1.1  christos   { CRISV10F_INSN_ADDS_M_W_M, model_crisv10_adds_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3973  1.1  christos   { CRISV10F_INSN_ADDSCBR, model_crisv10_addscbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3974  1.1  christos   { CRISV10F_INSN_ADDSCWR, model_crisv10_addscwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3975  1.1  christos   { CRISV10F_INSN_ADDSPCPC, model_crisv10_addspcpc, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_STALL, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3976  1.1  christos   { CRISV10F_INSN_ADDU_B_R, model_crisv10_addu_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3977  1.1  christos   { CRISV10F_INSN_ADDU_W_R, model_crisv10_addu_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3978  1.1  christos   { CRISV10F_INSN_ADDU_M_B_M, model_crisv10_addu_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3979  1.1  christos   { CRISV10F_INSN_ADDU_M_W_M, model_crisv10_addu_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3980  1.1  christos   { CRISV10F_INSN_ADDUCBR, model_crisv10_adducbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3981  1.1  christos   { CRISV10F_INSN_ADDUCWR, model_crisv10_adducwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3982  1.1  christos   { CRISV10F_INSN_SUB_B_R, model_crisv10_sub_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3983  1.1  christos   { CRISV10F_INSN_SUB_W_R, model_crisv10_sub_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3984  1.1  christos   { CRISV10F_INSN_SUB_D_R, model_crisv10_sub_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3985  1.1  christos   { CRISV10F_INSN_SUB_M_B_M, model_crisv10_sub_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3986  1.1  christos   { CRISV10F_INSN_SUB_M_W_M, model_crisv10_sub_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3987  1.1  christos   { CRISV10F_INSN_SUB_M_D_M, model_crisv10_sub_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3988  1.1  christos   { CRISV10F_INSN_SUBCBR, model_crisv10_subcbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3989  1.1  christos   { CRISV10F_INSN_SUBCWR, model_crisv10_subcwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3990  1.1  christos   { CRISV10F_INSN_SUBCDR, model_crisv10_subcdr, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3991  1.1  christos   { CRISV10F_INSN_SUBS_B_R, model_crisv10_subs_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3992  1.1  christos   { CRISV10F_INSN_SUBS_W_R, model_crisv10_subs_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3993  1.1  christos   { CRISV10F_INSN_SUBS_M_B_M, model_crisv10_subs_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3994  1.1  christos   { CRISV10F_INSN_SUBS_M_W_M, model_crisv10_subs_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3995  1.1  christos   { CRISV10F_INSN_SUBSCBR, model_crisv10_subscbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3996  1.1  christos   { CRISV10F_INSN_SUBSCWR, model_crisv10_subscwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3997  1.1  christos   { CRISV10F_INSN_SUBU_B_R, model_crisv10_subu_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3998  1.1  christos   { CRISV10F_INSN_SUBU_W_R, model_crisv10_subu_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   3999  1.1  christos   { CRISV10F_INSN_SUBU_M_B_M, model_crisv10_subu_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4000  1.1  christos   { CRISV10F_INSN_SUBU_M_W_M, model_crisv10_subu_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4001  1.1  christos   { CRISV10F_INSN_SUBUCBR, model_crisv10_subucbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4002  1.1  christos   { CRISV10F_INSN_SUBUCWR, model_crisv10_subucwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4003  1.1  christos   { CRISV10F_INSN_ADDI_B_R, model_crisv10_addi_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4004  1.1  christos   { CRISV10F_INSN_ADDI_W_R, model_crisv10_addi_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4005  1.1  christos   { CRISV10F_INSN_ADDI_D_R, model_crisv10_addi_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4006  1.1  christos   { CRISV10F_INSN_NEG_B_R, model_crisv10_neg_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4007  1.1  christos   { CRISV10F_INSN_NEG_W_R, model_crisv10_neg_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4008  1.1  christos   { CRISV10F_INSN_NEG_D_R, model_crisv10_neg_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4009  1.1  christos   { CRISV10F_INSN_TEST_M_B_M, model_crisv10_test_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4010  1.1  christos   { CRISV10F_INSN_TEST_M_W_M, model_crisv10_test_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4011  1.1  christos   { CRISV10F_INSN_TEST_M_D_M, model_crisv10_test_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4012  1.1  christos   { CRISV10F_INSN_MOVE_R_M_B_M, model_crisv10_move_r_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4013  1.1  christos   { CRISV10F_INSN_MOVE_R_M_W_M, model_crisv10_move_r_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4014  1.1  christos   { CRISV10F_INSN_MOVE_R_M_D_M, model_crisv10_move_r_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4015  1.1  christos   { CRISV10F_INSN_MULS_B, model_crisv10_muls_b, { { (int) UNIT_CRISV10_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4016  1.1  christos   { CRISV10F_INSN_MULS_W, model_crisv10_muls_w, { { (int) UNIT_CRISV10_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4017  1.1  christos   { CRISV10F_INSN_MULS_D, model_crisv10_muls_d, { { (int) UNIT_CRISV10_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4018  1.1  christos   { CRISV10F_INSN_MULU_B, model_crisv10_mulu_b, { { (int) UNIT_CRISV10_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4019  1.1  christos   { CRISV10F_INSN_MULU_W, model_crisv10_mulu_w, { { (int) UNIT_CRISV10_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4020  1.1  christos   { CRISV10F_INSN_MULU_D, model_crisv10_mulu_d, { { (int) UNIT_CRISV10_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4021  1.1  christos   { CRISV10F_INSN_MSTEP, model_crisv10_mstep, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4022  1.1  christos   { CRISV10F_INSN_DSTEP, model_crisv10_dstep, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4023  1.1  christos   { CRISV10F_INSN_ABS, model_crisv10_abs, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4024  1.1  christos   { CRISV10F_INSN_AND_B_R, model_crisv10_and_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4025  1.1  christos   { CRISV10F_INSN_AND_W_R, model_crisv10_and_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4026  1.1  christos   { CRISV10F_INSN_AND_D_R, model_crisv10_and_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4027  1.1  christos   { CRISV10F_INSN_AND_M_B_M, model_crisv10_and_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4028  1.1  christos   { CRISV10F_INSN_AND_M_W_M, model_crisv10_and_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4029  1.1  christos   { CRISV10F_INSN_AND_M_D_M, model_crisv10_and_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4030  1.1  christos   { CRISV10F_INSN_ANDCBR, model_crisv10_andcbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4031  1.1  christos   { CRISV10F_INSN_ANDCWR, model_crisv10_andcwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4032  1.1  christos   { CRISV10F_INSN_ANDCDR, model_crisv10_andcdr, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4033  1.1  christos   { CRISV10F_INSN_ANDQ, model_crisv10_andq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4034  1.1  christos   { CRISV10F_INSN_ORR_B_R, model_crisv10_orr_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4035  1.1  christos   { CRISV10F_INSN_ORR_W_R, model_crisv10_orr_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4036  1.1  christos   { CRISV10F_INSN_ORR_D_R, model_crisv10_orr_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4037  1.1  christos   { CRISV10F_INSN_OR_M_B_M, model_crisv10_or_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4038  1.1  christos   { CRISV10F_INSN_OR_M_W_M, model_crisv10_or_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4039  1.1  christos   { CRISV10F_INSN_OR_M_D_M, model_crisv10_or_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4040  1.1  christos   { CRISV10F_INSN_ORCBR, model_crisv10_orcbr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4041  1.1  christos   { CRISV10F_INSN_ORCWR, model_crisv10_orcwr, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4042  1.1  christos   { CRISV10F_INSN_ORCDR, model_crisv10_orcdr, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4043  1.1  christos   { CRISV10F_INSN_ORQ, model_crisv10_orq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4044  1.1  christos   { CRISV10F_INSN_XOR, model_crisv10_xor, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4045  1.1  christos   { CRISV10F_INSN_SWAP, model_crisv10_swap, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4046  1.1  christos   { CRISV10F_INSN_ASRR_B_R, model_crisv10_asrr_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4047  1.1  christos   { CRISV10F_INSN_ASRR_W_R, model_crisv10_asrr_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4048  1.1  christos   { CRISV10F_INSN_ASRR_D_R, model_crisv10_asrr_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4049  1.1  christos   { CRISV10F_INSN_ASRQ, model_crisv10_asrq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4050  1.1  christos   { CRISV10F_INSN_LSRR_B_R, model_crisv10_lsrr_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4051  1.1  christos   { CRISV10F_INSN_LSRR_W_R, model_crisv10_lsrr_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4052  1.1  christos   { CRISV10F_INSN_LSRR_D_R, model_crisv10_lsrr_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4053  1.1  christos   { CRISV10F_INSN_LSRQ, model_crisv10_lsrq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4054  1.1  christos   { CRISV10F_INSN_LSLR_B_R, model_crisv10_lslr_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4055  1.1  christos   { CRISV10F_INSN_LSLR_W_R, model_crisv10_lslr_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4056  1.1  christos   { CRISV10F_INSN_LSLR_D_R, model_crisv10_lslr_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4057  1.1  christos   { CRISV10F_INSN_LSLQ, model_crisv10_lslq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4058  1.1  christos   { CRISV10F_INSN_BTST, model_crisv10_btst, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4059  1.1  christos   { CRISV10F_INSN_BTSTQ, model_crisv10_btstq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4060  1.1  christos   { CRISV10F_INSN_SETF, model_crisv10_setf, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4061  1.1  christos   { CRISV10F_INSN_CLEARF, model_crisv10_clearf, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4062  1.1  christos   { CRISV10F_INSN_BCC_B, model_crisv10_bcc_b, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4063  1.1  christos   { CRISV10F_INSN_BA_B, model_crisv10_ba_b, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4064  1.1  christos   { CRISV10F_INSN_BCC_W, model_crisv10_bcc_w, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4065  1.1  christos   { CRISV10F_INSN_BA_W, model_crisv10_ba_w, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4066  1.1  christos   { CRISV10F_INSN_JUMP_R, model_crisv10_jump_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4067  1.1  christos   { CRISV10F_INSN_JUMP_M, model_crisv10_jump_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4068  1.1  christos   { CRISV10F_INSN_JUMP_C, model_crisv10_jump_c, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4069  1.1  christos   { CRISV10F_INSN_BREAK, model_crisv10_break, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4070  1.1  christos   { CRISV10F_INSN_BOUND_R_B_R, model_crisv10_bound_r_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4071  1.1  christos   { CRISV10F_INSN_BOUND_R_W_R, model_crisv10_bound_r_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4072  1.1  christos   { CRISV10F_INSN_BOUND_R_D_R, model_crisv10_bound_r_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4073  1.1  christos   { CRISV10F_INSN_BOUND_M_B_M, model_crisv10_bound_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4074  1.1  christos   { CRISV10F_INSN_BOUND_M_W_M, model_crisv10_bound_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4075  1.1  christos   { CRISV10F_INSN_BOUND_M_D_M, model_crisv10_bound_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4076  1.1  christos   { CRISV10F_INSN_BOUND_CB, model_crisv10_bound_cb, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4077  1.1  christos   { CRISV10F_INSN_BOUND_CW, model_crisv10_bound_cw, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4078  1.1  christos   { CRISV10F_INSN_BOUND_CD, model_crisv10_bound_cd, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4079  1.1  christos   { CRISV10F_INSN_SCC, model_crisv10_scc, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4080  1.1  christos   { CRISV10F_INSN_LZ, model_crisv10_lz, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4081  1.1  christos   { CRISV10F_INSN_ADDOQ, model_crisv10_addoq, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4082  1.1  christos   { CRISV10F_INSN_BDAPQPC, model_crisv10_bdapqpc, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4083  1.1  christos   { CRISV10F_INSN_BDAP_32_PC, model_crisv10_bdap_32_pc, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4084  1.1  christos   { CRISV10F_INSN_MOVE_M_PCPLUS_P0, model_crisv10_move_m_pcplus_p0, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4085  1.1  christos   { CRISV10F_INSN_MOVE_M_SPPLUS_P8, model_crisv10_move_m_spplus_p8, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4086  1.1  christos   { CRISV10F_INSN_ADDO_M_B_M, model_crisv10_addo_m_b_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4087  1.1  christos   { CRISV10F_INSN_ADDO_M_W_M, model_crisv10_addo_m_w_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4088  1.1  christos   { CRISV10F_INSN_ADDO_M_D_M, model_crisv10_addo_m_d_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4089  1.1  christos   { CRISV10F_INSN_ADDO_CB, model_crisv10_addo_cb, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4090  1.1  christos   { CRISV10F_INSN_ADDO_CW, model_crisv10_addo_cw, { { (int) UNIT_CRISV10_U_CONST16, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4091  1.1  christos   { CRISV10F_INSN_ADDO_CD, model_crisv10_addo_cd, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4092  1.1  christos   { CRISV10F_INSN_DIP_M, model_crisv10_dip_m, { { (int) UNIT_CRISV10_U_MEM, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4093  1.1  christos   { CRISV10F_INSN_DIP_C, model_crisv10_dip_c, { { (int) UNIT_CRISV10_U_CONST32, 1, 1 }, { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4094  1.1  christos   { CRISV10F_INSN_ADDI_ACR_B_R, model_crisv10_addi_acr_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4095  1.1  christos   { CRISV10F_INSN_ADDI_ACR_W_R, model_crisv10_addi_acr_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4096  1.1  christos   { CRISV10F_INSN_ADDI_ACR_D_R, model_crisv10_addi_acr_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4097  1.1  christos   { CRISV10F_INSN_BIAP_PC_B_R, model_crisv10_biap_pc_b_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4098  1.1  christos   { CRISV10F_INSN_BIAP_PC_W_R, model_crisv10_biap_pc_w_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4099  1.1  christos   { CRISV10F_INSN_BIAP_PC_D_R, model_crisv10_biap_pc_d_r, { { (int) UNIT_CRISV10_U_EXEC, 1, 1 } } },
   4100  1.1  christos };
   4101  1.1  christos 
   4102  1.1  christos #endif /* WITH_PROFILE_MODEL_P */
   4103  1.1  christos 
   4104  1.1  christos static void
   4105  1.1  christos crisv10_model_init (SIM_CPU *cpu)
   4106  1.1  christos {
   4107  1.1  christos   CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_CRISV10_DATA));
   4108  1.1  christos }
   4109  1.1  christos 
   4110  1.1  christos #if WITH_PROFILE_MODEL_P
   4111  1.1  christos #define TIMING_DATA(td) td
   4112  1.1  christos #else
   4113  1.1  christos #define TIMING_DATA(td) 0
   4114  1.1  christos #endif
   4115  1.1  christos 
   4116  1.1  christos static const MODEL crisv10_models[] =
   4117  1.1  christos {
   4118  1.1  christos   { "crisv10", & crisv10_mach, MODEL_CRISV10, TIMING_DATA (& crisv10_timing[0]), crisv10_model_init },
   4119  1.1  christos   { 0 }
   4120  1.1  christos };
   4121  1.1  christos 
   4122  1.1  christos /* The properties of this cpu's implementation.  */
   4123  1.1  christos 
   4124  1.1  christos static const MACH_IMP_PROPERTIES crisv10f_imp_properties =
   4125  1.1  christos {
   4126  1.1  christos   sizeof (SIM_CPU),
   4127  1.1  christos #if WITH_SCACHE
   4128  1.1  christos   sizeof (SCACHE)
   4129  1.1  christos #else
   4130  1.1  christos   0
   4131  1.1  christos #endif
   4132  1.1  christos };
   4133  1.1  christos 
   4134  1.1  christos 
   4135  1.1  christos static void
   4136  1.1  christos crisv10f_prepare_run (SIM_CPU *cpu)
   4137  1.1  christos {
   4138  1.1  christos   if (CPU_IDESC (cpu) == NULL)
   4139  1.1  christos     crisv10f_init_idesc_table (cpu);
   4140  1.1  christos }
   4141  1.1  christos 
   4142  1.1  christos static const CGEN_INSN *
   4143  1.1  christos crisv10f_get_idata (SIM_CPU *cpu, int inum)
   4144  1.1  christos {
   4145  1.1  christos   return CPU_IDESC (cpu) [inum].idata;
   4146  1.1  christos }
   4147  1.1  christos 
   4148  1.1  christos static void
   4149  1.1  christos crisv10_init_cpu (SIM_CPU *cpu)
   4150  1.1  christos {
   4151  1.1  christos   CPU_REG_FETCH (cpu) = crisv10f_fetch_register;
   4152  1.1  christos   CPU_REG_STORE (cpu) = crisv10f_store_register;
   4153  1.1  christos   CPU_PC_FETCH (cpu) = crisv10f_h_pc_get;
   4154  1.1  christos   CPU_PC_STORE (cpu) = crisv10f_h_pc_set;
   4155  1.1  christos   CPU_GET_IDATA (cpu) = crisv10f_get_idata;
   4156  1.1  christos   CPU_MAX_INSNS (cpu) = CRISV10F_INSN__MAX;
   4157  1.1  christos   CPU_INSN_NAME (cpu) = cgen_insn_name;
   4158  1.1  christos   CPU_FULL_ENGINE_FN (cpu) = crisv10f_engine_run_full;
   4159  1.1  christos #if WITH_FAST
   4160  1.1  christos   CPU_FAST_ENGINE_FN (cpu) = crisv10f_engine_run_fast;
   4161  1.1  christos #else
   4162  1.1  christos   CPU_FAST_ENGINE_FN (cpu) = crisv10f_engine_run_full;
   4163  1.1  christos #endif
   4164  1.1  christos }
   4165  1.1  christos 
   4166  1.1  christos const MACH crisv10_mach =
   4167  1.1  christos {
   4168  1.1  christos   "crisv10", "cris", MACH_CRISV10,
   4169  1.1  christos   32, 32, & crisv10_models[0], & crisv10f_imp_properties,
   4170  1.1  christos   crisv10_init_cpu,
   4171  1.1  christos   crisv10f_prepare_run
   4172  1.1  christos };
   4173  1.1  christos 
   4174