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