Home | History | Annotate | Line # | Download | only in cris
modelv32.c revision 1.11
      1 /* Simulator model support for crisv32f.
      2 
      3 THIS FILE IS MACHINE GENERATED WITH CGEN.
      4 
      5 Copyright (C) 1996-2024 Free Software Foundation, Inc.
      6 
      7 This file is part of the GNU simulators.
      8 
      9    This file is free software; you can redistribute it and/or modify
     10    it under the terms of the GNU General Public License as published by
     11    the Free Software Foundation; either version 3, or (at your option)
     12    any later version.
     13 
     14    It is distributed in the hope that it will be useful, but WITHOUT
     15    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     16    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
     17    License for more details.
     18 
     19    You should have received a copy of the GNU General Public License along
     20    with this program; if not, write to the Free Software Foundation, Inc.,
     21    51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
     22 
     23 */
     24 
     25 #define WANT_CPU crisv32f
     26 #define WANT_CPU_CRISV32F
     27 
     28 #include "sim-main.h"
     29 
     30 /* The profiling data is recorded here, but is accessed via the profiling
     31    mechanism.  After all, this is information for profiling.  */
     32 
     33 #if WITH_PROFILE_MODEL_P
     34 
     35 /* Model handlers for each insn.  */
     36 
     37 static int
     38 model_crisv32_move_b_r (SIM_CPU *current_cpu, void *sem_arg)
     39 {
     40 #define FLD(f) abuf->fields.sfmt_addc_m.f
     41   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
     42   const IDESC * UNUSED idesc = abuf->idesc;
     43   int cycles = 0;
     44   {
     45     int referenced = 0;
     46     int UNUSED insn_referenced = abuf->written;
     47     INT in_Rd = -1;
     48     INT in_Rs = -1;
     49     INT out_Rd = -1;
     50     in_Rs = FLD (in_Rs);
     51     referenced |= 1 << 1;
     52     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
     53   }
     54   return cycles;
     55 #undef FLD
     56 }
     57 
     58 static int
     59 model_crisv32_move_w_r (SIM_CPU *current_cpu, void *sem_arg)
     60 {
     61 #define FLD(f) abuf->fields.sfmt_addc_m.f
     62   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
     63   const IDESC * UNUSED idesc = abuf->idesc;
     64   int cycles = 0;
     65   {
     66     int referenced = 0;
     67     int UNUSED insn_referenced = abuf->written;
     68     INT in_Rd = -1;
     69     INT in_Rs = -1;
     70     INT out_Rd = -1;
     71     in_Rs = FLD (in_Rs);
     72     referenced |= 1 << 1;
     73     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
     74   }
     75   return cycles;
     76 #undef FLD
     77 }
     78 
     79 static int
     80 model_crisv32_move_d_r (SIM_CPU *current_cpu, void *sem_arg)
     81 {
     82 #define FLD(f) abuf->fields.sfmt_addc_m.f
     83   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
     84   const IDESC * UNUSED idesc = abuf->idesc;
     85   int cycles = 0;
     86   {
     87     int referenced = 0;
     88     int UNUSED insn_referenced = abuf->written;
     89     INT in_Rd = -1;
     90     INT in_Rs = -1;
     91     INT out_Rd = -1;
     92     in_Rs = FLD (in_Rs);
     93     referenced |= 1 << 1;
     94     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
     95   }
     96   return cycles;
     97 #undef FLD
     98 }
     99 
    100 static int
    101 model_crisv32_moveq (SIM_CPU *current_cpu, void *sem_arg)
    102 {
    103 #define FLD(f) abuf->fields.sfmt_moveq.f
    104   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    105   const IDESC * UNUSED idesc = abuf->idesc;
    106   int cycles = 0;
    107   {
    108     int referenced = 0;
    109     int UNUSED insn_referenced = abuf->written;
    110     INT in_Rd = -1;
    111     INT in_Rs = -1;
    112     INT out_Rd = -1;
    113     out_Rd = FLD (out_Rd);
    114     referenced |= 1 << 2;
    115     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
    116   }
    117   return cycles;
    118 #undef FLD
    119 }
    120 
    121 static int
    122 model_crisv32_movs_b_r (SIM_CPU *current_cpu, void *sem_arg)
    123 {
    124 #define FLD(f) abuf->fields.sfmt_muls_b.f
    125   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    126   const IDESC * UNUSED idesc = abuf->idesc;
    127   int cycles = 0;
    128   {
    129     int referenced = 0;
    130     int UNUSED insn_referenced = abuf->written;
    131     INT in_Rd = -1;
    132     INT in_Rs = -1;
    133     INT out_Rd = -1;
    134     in_Rs = FLD (in_Rs);
    135     out_Rd = FLD (out_Rd);
    136     referenced |= 1 << 1;
    137     referenced |= 1 << 2;
    138     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
    139   }
    140   return cycles;
    141 #undef FLD
    142 }
    143 
    144 static int
    145 model_crisv32_movs_w_r (SIM_CPU *current_cpu, void *sem_arg)
    146 {
    147 #define FLD(f) abuf->fields.sfmt_muls_b.f
    148   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    149   const IDESC * UNUSED idesc = abuf->idesc;
    150   int cycles = 0;
    151   {
    152     int referenced = 0;
    153     int UNUSED insn_referenced = abuf->written;
    154     INT in_Rd = -1;
    155     INT in_Rs = -1;
    156     INT out_Rd = -1;
    157     in_Rs = FLD (in_Rs);
    158     out_Rd = FLD (out_Rd);
    159     referenced |= 1 << 1;
    160     referenced |= 1 << 2;
    161     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
    162   }
    163   return cycles;
    164 #undef FLD
    165 }
    166 
    167 static int
    168 model_crisv32_movu_b_r (SIM_CPU *current_cpu, void *sem_arg)
    169 {
    170 #define FLD(f) abuf->fields.sfmt_muls_b.f
    171   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    172   const IDESC * UNUSED idesc = abuf->idesc;
    173   int cycles = 0;
    174   {
    175     int referenced = 0;
    176     int UNUSED insn_referenced = abuf->written;
    177     INT in_Rd = -1;
    178     INT in_Rs = -1;
    179     INT out_Rd = -1;
    180     in_Rs = FLD (in_Rs);
    181     out_Rd = FLD (out_Rd);
    182     referenced |= 1 << 1;
    183     referenced |= 1 << 2;
    184     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
    185   }
    186   return cycles;
    187 #undef FLD
    188 }
    189 
    190 static int
    191 model_crisv32_movu_w_r (SIM_CPU *current_cpu, void *sem_arg)
    192 {
    193 #define FLD(f) abuf->fields.sfmt_muls_b.f
    194   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    195   const IDESC * UNUSED idesc = abuf->idesc;
    196   int cycles = 0;
    197   {
    198     int referenced = 0;
    199     int UNUSED insn_referenced = abuf->written;
    200     INT in_Rd = -1;
    201     INT in_Rs = -1;
    202     INT out_Rd = -1;
    203     in_Rs = FLD (in_Rs);
    204     out_Rd = FLD (out_Rd);
    205     referenced |= 1 << 1;
    206     referenced |= 1 << 2;
    207     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
    208   }
    209   return cycles;
    210 #undef FLD
    211 }
    212 
    213 static int
    214 model_crisv32_movecbr (SIM_CPU *current_cpu, void *sem_arg)
    215 {
    216 #define FLD(f) abuf->fields.sfmt_addcbr.f
    217   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    218   const IDESC * UNUSED idesc = abuf->idesc;
    219   int cycles = 0;
    220   {
    221     int referenced = 0;
    222     int UNUSED insn_referenced = abuf->written;
    223     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
    224   }
    225   {
    226     int referenced = 0;
    227     int UNUSED insn_referenced = abuf->written;
    228     INT in_Rd = -1;
    229     INT in_Rs = -1;
    230     INT out_Rd = -1;
    231     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
    232   }
    233   return cycles;
    234 #undef FLD
    235 }
    236 
    237 static int
    238 model_crisv32_movecwr (SIM_CPU *current_cpu, void *sem_arg)
    239 {
    240 #define FLD(f) abuf->fields.sfmt_addcwr.f
    241   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    242   const IDESC * UNUSED idesc = abuf->idesc;
    243   int cycles = 0;
    244   {
    245     int referenced = 0;
    246     int UNUSED insn_referenced = abuf->written;
    247     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
    248   }
    249   {
    250     int referenced = 0;
    251     int UNUSED insn_referenced = abuf->written;
    252     INT in_Rd = -1;
    253     INT in_Rs = -1;
    254     INT out_Rd = -1;
    255     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
    256   }
    257   return cycles;
    258 #undef FLD
    259 }
    260 
    261 static int
    262 model_crisv32_movecdr (SIM_CPU *current_cpu, void *sem_arg)
    263 {
    264 #define FLD(f) abuf->fields.sfmt_bound_cd.f
    265   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    266   const IDESC * UNUSED idesc = abuf->idesc;
    267   int cycles = 0;
    268   {
    269     int referenced = 0;
    270     int UNUSED insn_referenced = abuf->written;
    271     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
    272   }
    273   {
    274     int referenced = 0;
    275     int UNUSED insn_referenced = abuf->written;
    276     INT in_Rd = -1;
    277     INT in_Rs = -1;
    278     INT out_Rd = -1;
    279     out_Rd = FLD (out_Rd);
    280     referenced |= 1 << 2;
    281     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
    282   }
    283   return cycles;
    284 #undef FLD
    285 }
    286 
    287 static int
    288 model_crisv32_movscbr (SIM_CPU *current_cpu, void *sem_arg)
    289 {
    290 #define FLD(f) abuf->fields.sfmt_bound_cb.f
    291   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    292   const IDESC * UNUSED idesc = abuf->idesc;
    293   int cycles = 0;
    294   {
    295     int referenced = 0;
    296     int UNUSED insn_referenced = abuf->written;
    297     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
    298   }
    299   {
    300     int referenced = 0;
    301     int UNUSED insn_referenced = abuf->written;
    302     INT in_Rd = -1;
    303     INT in_Rs = -1;
    304     INT out_Rd = -1;
    305     out_Rd = FLD (out_Rd);
    306     referenced |= 1 << 2;
    307     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
    308   }
    309   return cycles;
    310 #undef FLD
    311 }
    312 
    313 static int
    314 model_crisv32_movscwr (SIM_CPU *current_cpu, void *sem_arg)
    315 {
    316 #define FLD(f) abuf->fields.sfmt_bound_cw.f
    317   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    318   const IDESC * UNUSED idesc = abuf->idesc;
    319   int cycles = 0;
    320   {
    321     int referenced = 0;
    322     int UNUSED insn_referenced = abuf->written;
    323     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
    324   }
    325   {
    326     int referenced = 0;
    327     int UNUSED insn_referenced = abuf->written;
    328     INT in_Rd = -1;
    329     INT in_Rs = -1;
    330     INT out_Rd = -1;
    331     out_Rd = FLD (out_Rd);
    332     referenced |= 1 << 2;
    333     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
    334   }
    335   return cycles;
    336 #undef FLD
    337 }
    338 
    339 static int
    340 model_crisv32_movucbr (SIM_CPU *current_cpu, void *sem_arg)
    341 {
    342 #define FLD(f) abuf->fields.sfmt_bound_cb.f
    343   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    344   const IDESC * UNUSED idesc = abuf->idesc;
    345   int cycles = 0;
    346   {
    347     int referenced = 0;
    348     int UNUSED insn_referenced = abuf->written;
    349     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
    350   }
    351   {
    352     int referenced = 0;
    353     int UNUSED insn_referenced = abuf->written;
    354     INT in_Rd = -1;
    355     INT in_Rs = -1;
    356     INT out_Rd = -1;
    357     out_Rd = FLD (out_Rd);
    358     referenced |= 1 << 2;
    359     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
    360   }
    361   return cycles;
    362 #undef FLD
    363 }
    364 
    365 static int
    366 model_crisv32_movucwr (SIM_CPU *current_cpu, void *sem_arg)
    367 {
    368 #define FLD(f) abuf->fields.sfmt_bound_cw.f
    369   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    370   const IDESC * UNUSED idesc = abuf->idesc;
    371   int cycles = 0;
    372   {
    373     int referenced = 0;
    374     int UNUSED insn_referenced = abuf->written;
    375     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
    376   }
    377   {
    378     int referenced = 0;
    379     int UNUSED insn_referenced = abuf->written;
    380     INT in_Rd = -1;
    381     INT in_Rs = -1;
    382     INT out_Rd = -1;
    383     out_Rd = FLD (out_Rd);
    384     referenced |= 1 << 2;
    385     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
    386   }
    387   return cycles;
    388 #undef FLD
    389 }
    390 
    391 static int
    392 model_crisv32_addq (SIM_CPU *current_cpu, void *sem_arg)
    393 {
    394 #define FLD(f) abuf->fields.sfmt_addq.f
    395   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    396   const IDESC * UNUSED idesc = abuf->idesc;
    397   int cycles = 0;
    398   {
    399     int referenced = 0;
    400     int UNUSED insn_referenced = abuf->written;
    401     INT in_Rd = -1;
    402     INT in_Rs = -1;
    403     INT out_Rd = -1;
    404     in_Rd = FLD (in_Rd);
    405     referenced |= 1 << 0;
    406     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
    407   }
    408   return cycles;
    409 #undef FLD
    410 }
    411 
    412 static int
    413 model_crisv32_subq (SIM_CPU *current_cpu, void *sem_arg)
    414 {
    415 #define FLD(f) abuf->fields.sfmt_addq.f
    416   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    417   const IDESC * UNUSED idesc = abuf->idesc;
    418   int cycles = 0;
    419   {
    420     int referenced = 0;
    421     int UNUSED insn_referenced = abuf->written;
    422     INT in_Rd = -1;
    423     INT in_Rs = -1;
    424     INT out_Rd = -1;
    425     in_Rd = FLD (in_Rd);
    426     referenced |= 1 << 0;
    427     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
    428   }
    429   return cycles;
    430 #undef FLD
    431 }
    432 
    433 static int
    434 model_crisv32_cmp_r_b_r (SIM_CPU *current_cpu, void *sem_arg)
    435 {
    436 #define FLD(f) abuf->fields.sfmt_muls_b.f
    437   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    438   const IDESC * UNUSED idesc = abuf->idesc;
    439   int cycles = 0;
    440   {
    441     int referenced = 0;
    442     int UNUSED insn_referenced = abuf->written;
    443     INT in_Rd = -1;
    444     INT in_Rs = -1;
    445     INT out_Rd = -1;
    446     in_Rd = FLD (in_Rd);
    447     in_Rs = FLD (in_Rs);
    448     referenced |= 1 << 0;
    449     referenced |= 1 << 1;
    450     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
    451   }
    452   return cycles;
    453 #undef FLD
    454 }
    455 
    456 static int
    457 model_crisv32_cmp_r_w_r (SIM_CPU *current_cpu, void *sem_arg)
    458 {
    459 #define FLD(f) abuf->fields.sfmt_muls_b.f
    460   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    461   const IDESC * UNUSED idesc = abuf->idesc;
    462   int cycles = 0;
    463   {
    464     int referenced = 0;
    465     int UNUSED insn_referenced = abuf->written;
    466     INT in_Rd = -1;
    467     INT in_Rs = -1;
    468     INT out_Rd = -1;
    469     in_Rd = FLD (in_Rd);
    470     in_Rs = FLD (in_Rs);
    471     referenced |= 1 << 0;
    472     referenced |= 1 << 1;
    473     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
    474   }
    475   return cycles;
    476 #undef FLD
    477 }
    478 
    479 static int
    480 model_crisv32_cmp_r_d_r (SIM_CPU *current_cpu, void *sem_arg)
    481 {
    482 #define FLD(f) abuf->fields.sfmt_muls_b.f
    483   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    484   const IDESC * UNUSED idesc = abuf->idesc;
    485   int cycles = 0;
    486   {
    487     int referenced = 0;
    488     int UNUSED insn_referenced = abuf->written;
    489     INT in_Rd = -1;
    490     INT in_Rs = -1;
    491     INT out_Rd = -1;
    492     in_Rd = FLD (in_Rd);
    493     in_Rs = FLD (in_Rs);
    494     referenced |= 1 << 0;
    495     referenced |= 1 << 1;
    496     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
    497   }
    498   return cycles;
    499 #undef FLD
    500 }
    501 
    502 static int
    503 model_crisv32_cmp_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
    504 {
    505 #define FLD(f) abuf->fields.sfmt_addc_m.f
    506   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    507   const IDESC * UNUSED idesc = abuf->idesc;
    508   int cycles = 0;
    509   {
    510     int referenced = 0;
    511     int UNUSED insn_referenced = abuf->written;
    512     INT in_Rs = -1;
    513     in_Rs = FLD (in_Rs);
    514     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
    515     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
    516   }
    517   {
    518     int referenced = 0;
    519     int UNUSED insn_referenced = abuf->written;
    520     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
    521   }
    522   {
    523     int referenced = 0;
    524     int UNUSED insn_referenced = abuf->written;
    525     INT in_Rd = -1;
    526     INT in_Rs = -1;
    527     INT out_Rd = -1;
    528     in_Rd = FLD (in_Rd);
    529     in_Rs = FLD (in_Rs);
    530     referenced |= 1 << 0;
    531     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
    532     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
    533   }
    534   return cycles;
    535 #undef FLD
    536 }
    537 
    538 static int
    539 model_crisv32_cmp_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
    540 {
    541 #define FLD(f) abuf->fields.sfmt_addc_m.f
    542   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    543   const IDESC * UNUSED idesc = abuf->idesc;
    544   int cycles = 0;
    545   {
    546     int referenced = 0;
    547     int UNUSED insn_referenced = abuf->written;
    548     INT in_Rs = -1;
    549     in_Rs = FLD (in_Rs);
    550     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
    551     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
    552   }
    553   {
    554     int referenced = 0;
    555     int UNUSED insn_referenced = abuf->written;
    556     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
    557   }
    558   {
    559     int referenced = 0;
    560     int UNUSED insn_referenced = abuf->written;
    561     INT in_Rd = -1;
    562     INT in_Rs = -1;
    563     INT out_Rd = -1;
    564     in_Rd = FLD (in_Rd);
    565     in_Rs = FLD (in_Rs);
    566     referenced |= 1 << 0;
    567     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
    568     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
    569   }
    570   return cycles;
    571 #undef FLD
    572 }
    573 
    574 static int
    575 model_crisv32_cmp_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
    576 {
    577 #define FLD(f) abuf->fields.sfmt_addc_m.f
    578   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    579   const IDESC * UNUSED idesc = abuf->idesc;
    580   int cycles = 0;
    581   {
    582     int referenced = 0;
    583     int UNUSED insn_referenced = abuf->written;
    584     INT in_Rs = -1;
    585     in_Rs = FLD (in_Rs);
    586     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
    587     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
    588   }
    589   {
    590     int referenced = 0;
    591     int UNUSED insn_referenced = abuf->written;
    592     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
    593   }
    594   {
    595     int referenced = 0;
    596     int UNUSED insn_referenced = abuf->written;
    597     INT in_Rd = -1;
    598     INT in_Rs = -1;
    599     INT out_Rd = -1;
    600     in_Rd = FLD (in_Rd);
    601     in_Rs = FLD (in_Rs);
    602     referenced |= 1 << 0;
    603     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
    604     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
    605   }
    606   return cycles;
    607 #undef FLD
    608 }
    609 
    610 static int
    611 model_crisv32_cmpcbr (SIM_CPU *current_cpu, void *sem_arg)
    612 {
    613 #define FLD(f) abuf->fields.sfmt_bound_cb.f
    614   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    615   const IDESC * UNUSED idesc = abuf->idesc;
    616   int cycles = 0;
    617   {
    618     int referenced = 0;
    619     int UNUSED insn_referenced = abuf->written;
    620     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
    621   }
    622   {
    623     int referenced = 0;
    624     int UNUSED insn_referenced = abuf->written;
    625     INT in_Rd = -1;
    626     INT in_Rs = -1;
    627     INT out_Rd = -1;
    628     in_Rd = FLD (in_Rd);
    629     referenced |= 1 << 0;
    630     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
    631   }
    632   return cycles;
    633 #undef FLD
    634 }
    635 
    636 static int
    637 model_crisv32_cmpcwr (SIM_CPU *current_cpu, void *sem_arg)
    638 {
    639 #define FLD(f) abuf->fields.sfmt_bound_cw.f
    640   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    641   const IDESC * UNUSED idesc = abuf->idesc;
    642   int cycles = 0;
    643   {
    644     int referenced = 0;
    645     int UNUSED insn_referenced = abuf->written;
    646     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
    647   }
    648   {
    649     int referenced = 0;
    650     int UNUSED insn_referenced = abuf->written;
    651     INT in_Rd = -1;
    652     INT in_Rs = -1;
    653     INT out_Rd = -1;
    654     in_Rd = FLD (in_Rd);
    655     referenced |= 1 << 0;
    656     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
    657   }
    658   return cycles;
    659 #undef FLD
    660 }
    661 
    662 static int
    663 model_crisv32_cmpcdr (SIM_CPU *current_cpu, void *sem_arg)
    664 {
    665 #define FLD(f) abuf->fields.sfmt_bound_cd.f
    666   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    667   const IDESC * UNUSED idesc = abuf->idesc;
    668   int cycles = 0;
    669   {
    670     int referenced = 0;
    671     int UNUSED insn_referenced = abuf->written;
    672     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
    673   }
    674   {
    675     int referenced = 0;
    676     int UNUSED insn_referenced = abuf->written;
    677     INT in_Rd = -1;
    678     INT in_Rs = -1;
    679     INT out_Rd = -1;
    680     in_Rd = FLD (in_Rd);
    681     referenced |= 1 << 0;
    682     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
    683   }
    684   return cycles;
    685 #undef FLD
    686 }
    687 
    688 static int
    689 model_crisv32_cmpq (SIM_CPU *current_cpu, void *sem_arg)
    690 {
    691 #define FLD(f) abuf->fields.sfmt_andq.f
    692   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    693   const IDESC * UNUSED idesc = abuf->idesc;
    694   int cycles = 0;
    695   {
    696     int referenced = 0;
    697     int UNUSED insn_referenced = abuf->written;
    698     INT in_Rd = -1;
    699     INT in_Rs = -1;
    700     INT out_Rd = -1;
    701     in_Rd = FLD (in_Rd);
    702     referenced |= 1 << 0;
    703     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
    704   }
    705   return cycles;
    706 #undef FLD
    707 }
    708 
    709 static int
    710 model_crisv32_cmps_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
    711 {
    712 #define FLD(f) abuf->fields.sfmt_addc_m.f
    713   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    714   const IDESC * UNUSED idesc = abuf->idesc;
    715   int cycles = 0;
    716   {
    717     int referenced = 0;
    718     int UNUSED insn_referenced = abuf->written;
    719     INT in_Rs = -1;
    720     in_Rs = FLD (in_Rs);
    721     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
    722     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
    723   }
    724   {
    725     int referenced = 0;
    726     int UNUSED insn_referenced = abuf->written;
    727     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
    728   }
    729   {
    730     int referenced = 0;
    731     int UNUSED insn_referenced = abuf->written;
    732     INT in_Rd = -1;
    733     INT in_Rs = -1;
    734     INT out_Rd = -1;
    735     in_Rd = FLD (in_Rd);
    736     in_Rs = FLD (in_Rs);
    737     referenced |= 1 << 0;
    738     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
    739     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
    740   }
    741   return cycles;
    742 #undef FLD
    743 }
    744 
    745 static int
    746 model_crisv32_cmps_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
    747 {
    748 #define FLD(f) abuf->fields.sfmt_addc_m.f
    749   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    750   const IDESC * UNUSED idesc = abuf->idesc;
    751   int cycles = 0;
    752   {
    753     int referenced = 0;
    754     int UNUSED insn_referenced = abuf->written;
    755     INT in_Rs = -1;
    756     in_Rs = FLD (in_Rs);
    757     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
    758     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
    759   }
    760   {
    761     int referenced = 0;
    762     int UNUSED insn_referenced = abuf->written;
    763     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
    764   }
    765   {
    766     int referenced = 0;
    767     int UNUSED insn_referenced = abuf->written;
    768     INT in_Rd = -1;
    769     INT in_Rs = -1;
    770     INT out_Rd = -1;
    771     in_Rd = FLD (in_Rd);
    772     in_Rs = FLD (in_Rs);
    773     referenced |= 1 << 0;
    774     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
    775     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
    776   }
    777   return cycles;
    778 #undef FLD
    779 }
    780 
    781 static int
    782 model_crisv32_cmpscbr (SIM_CPU *current_cpu, void *sem_arg)
    783 {
    784 #define FLD(f) abuf->fields.sfmt_bound_cb.f
    785   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    786   const IDESC * UNUSED idesc = abuf->idesc;
    787   int cycles = 0;
    788   {
    789     int referenced = 0;
    790     int UNUSED insn_referenced = abuf->written;
    791     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
    792   }
    793   {
    794     int referenced = 0;
    795     int UNUSED insn_referenced = abuf->written;
    796     INT in_Rd = -1;
    797     INT in_Rs = -1;
    798     INT out_Rd = -1;
    799     in_Rd = FLD (in_Rd);
    800     referenced |= 1 << 0;
    801     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
    802   }
    803   return cycles;
    804 #undef FLD
    805 }
    806 
    807 static int
    808 model_crisv32_cmpscwr (SIM_CPU *current_cpu, void *sem_arg)
    809 {
    810 #define FLD(f) abuf->fields.sfmt_bound_cw.f
    811   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    812   const IDESC * UNUSED idesc = abuf->idesc;
    813   int cycles = 0;
    814   {
    815     int referenced = 0;
    816     int UNUSED insn_referenced = abuf->written;
    817     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
    818   }
    819   {
    820     int referenced = 0;
    821     int UNUSED insn_referenced = abuf->written;
    822     INT in_Rd = -1;
    823     INT in_Rs = -1;
    824     INT out_Rd = -1;
    825     in_Rd = FLD (in_Rd);
    826     referenced |= 1 << 0;
    827     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
    828   }
    829   return cycles;
    830 #undef FLD
    831 }
    832 
    833 static int
    834 model_crisv32_cmpu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
    835 {
    836 #define FLD(f) abuf->fields.sfmt_addc_m.f
    837   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    838   const IDESC * UNUSED idesc = abuf->idesc;
    839   int cycles = 0;
    840   {
    841     int referenced = 0;
    842     int UNUSED insn_referenced = abuf->written;
    843     INT in_Rs = -1;
    844     in_Rs = FLD (in_Rs);
    845     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
    846     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
    847   }
    848   {
    849     int referenced = 0;
    850     int UNUSED insn_referenced = abuf->written;
    851     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
    852   }
    853   {
    854     int referenced = 0;
    855     int UNUSED insn_referenced = abuf->written;
    856     INT in_Rd = -1;
    857     INT in_Rs = -1;
    858     INT out_Rd = -1;
    859     in_Rd = FLD (in_Rd);
    860     in_Rs = FLD (in_Rs);
    861     referenced |= 1 << 0;
    862     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
    863     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
    864   }
    865   return cycles;
    866 #undef FLD
    867 }
    868 
    869 static int
    870 model_crisv32_cmpu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
    871 {
    872 #define FLD(f) abuf->fields.sfmt_addc_m.f
    873   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    874   const IDESC * UNUSED idesc = abuf->idesc;
    875   int cycles = 0;
    876   {
    877     int referenced = 0;
    878     int UNUSED insn_referenced = abuf->written;
    879     INT in_Rs = -1;
    880     in_Rs = FLD (in_Rs);
    881     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
    882     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
    883   }
    884   {
    885     int referenced = 0;
    886     int UNUSED insn_referenced = abuf->written;
    887     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
    888   }
    889   {
    890     int referenced = 0;
    891     int UNUSED insn_referenced = abuf->written;
    892     INT in_Rd = -1;
    893     INT in_Rs = -1;
    894     INT out_Rd = -1;
    895     in_Rd = FLD (in_Rd);
    896     in_Rs = FLD (in_Rs);
    897     referenced |= 1 << 0;
    898     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
    899     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
    900   }
    901   return cycles;
    902 #undef FLD
    903 }
    904 
    905 static int
    906 model_crisv32_cmpucbr (SIM_CPU *current_cpu, void *sem_arg)
    907 {
    908 #define FLD(f) abuf->fields.sfmt_bound_cb.f
    909   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    910   const IDESC * UNUSED idesc = abuf->idesc;
    911   int cycles = 0;
    912   {
    913     int referenced = 0;
    914     int UNUSED insn_referenced = abuf->written;
    915     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
    916   }
    917   {
    918     int referenced = 0;
    919     int UNUSED insn_referenced = abuf->written;
    920     INT in_Rd = -1;
    921     INT in_Rs = -1;
    922     INT out_Rd = -1;
    923     in_Rd = FLD (in_Rd);
    924     referenced |= 1 << 0;
    925     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
    926   }
    927   return cycles;
    928 #undef FLD
    929 }
    930 
    931 static int
    932 model_crisv32_cmpucwr (SIM_CPU *current_cpu, void *sem_arg)
    933 {
    934 #define FLD(f) abuf->fields.sfmt_bound_cw.f
    935   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    936   const IDESC * UNUSED idesc = abuf->idesc;
    937   int cycles = 0;
    938   {
    939     int referenced = 0;
    940     int UNUSED insn_referenced = abuf->written;
    941     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
    942   }
    943   {
    944     int referenced = 0;
    945     int UNUSED insn_referenced = abuf->written;
    946     INT in_Rd = -1;
    947     INT in_Rs = -1;
    948     INT out_Rd = -1;
    949     in_Rd = FLD (in_Rd);
    950     referenced |= 1 << 0;
    951     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
    952   }
    953   return cycles;
    954 #undef FLD
    955 }
    956 
    957 static int
    958 model_crisv32_move_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
    959 {
    960 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
    961   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    962   const IDESC * UNUSED idesc = abuf->idesc;
    963   int cycles = 0;
    964   {
    965     int referenced = 0;
    966     int UNUSED insn_referenced = abuf->written;
    967     INT in_Rs = -1;
    968     in_Rs = FLD (in_Rs);
    969     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
    970     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
    971   }
    972   {
    973     int referenced = 0;
    974     int UNUSED insn_referenced = abuf->written;
    975     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
    976   }
    977   {
    978     int referenced = 0;
    979     int UNUSED insn_referenced = abuf->written;
    980     INT in_Rd = -1;
    981     INT in_Rs = -1;
    982     INT out_Rd = -1;
    983     in_Rs = FLD (in_Rs);
    984     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
    985     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
    986   }
    987   return cycles;
    988 #undef FLD
    989 }
    990 
    991 static int
    992 model_crisv32_move_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
    993 {
    994 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
    995   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    996   const IDESC * UNUSED idesc = abuf->idesc;
    997   int cycles = 0;
    998   {
    999     int referenced = 0;
   1000     int UNUSED insn_referenced = abuf->written;
   1001     INT in_Rs = -1;
   1002     in_Rs = FLD (in_Rs);
   1003     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   1004     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   1005   }
   1006   {
   1007     int referenced = 0;
   1008     int UNUSED insn_referenced = abuf->written;
   1009     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   1010   }
   1011   {
   1012     int referenced = 0;
   1013     int UNUSED insn_referenced = abuf->written;
   1014     INT in_Rd = -1;
   1015     INT in_Rs = -1;
   1016     INT out_Rd = -1;
   1017     in_Rs = FLD (in_Rs);
   1018     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
   1019     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   1020   }
   1021   return cycles;
   1022 #undef FLD
   1023 }
   1024 
   1025 static int
   1026 model_crisv32_move_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   1027 {
   1028 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   1029   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1030   const IDESC * UNUSED idesc = abuf->idesc;
   1031   int cycles = 0;
   1032   {
   1033     int referenced = 0;
   1034     int UNUSED insn_referenced = abuf->written;
   1035     INT in_Rs = -1;
   1036     in_Rs = FLD (in_Rs);
   1037     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   1038     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   1039   }
   1040   {
   1041     int referenced = 0;
   1042     int UNUSED insn_referenced = abuf->written;
   1043     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   1044   }
   1045   {
   1046     int referenced = 0;
   1047     int UNUSED insn_referenced = abuf->written;
   1048     INT in_Rd = -1;
   1049     INT in_Rs = -1;
   1050     INT out_Rd = -1;
   1051     in_Rs = FLD (in_Rs);
   1052     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
   1053     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   1054   }
   1055   return cycles;
   1056 #undef FLD
   1057 }
   1058 
   1059 static int
   1060 model_crisv32_movs_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   1061 {
   1062 #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
   1063   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1064   const IDESC * UNUSED idesc = abuf->idesc;
   1065   int cycles = 0;
   1066   {
   1067     int referenced = 0;
   1068     int UNUSED insn_referenced = abuf->written;
   1069     INT in_Rs = -1;
   1070     in_Rs = FLD (in_Rs);
   1071     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   1072     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   1073   }
   1074   {
   1075     int referenced = 0;
   1076     int UNUSED insn_referenced = abuf->written;
   1077     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   1078   }
   1079   {
   1080     int referenced = 0;
   1081     int UNUSED insn_referenced = abuf->written;
   1082     INT in_Rd = -1;
   1083     INT in_Rs = -1;
   1084     INT out_Rd = -1;
   1085     in_Rs = FLD (in_Rs);
   1086     out_Rd = FLD (out_Rd);
   1087     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
   1088     if (insn_referenced & (1 << 7)) referenced |= 1 << 2;
   1089     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   1090   }
   1091   return cycles;
   1092 #undef FLD
   1093 }
   1094 
   1095 static int
   1096 model_crisv32_movs_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   1097 {
   1098 #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
   1099   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1100   const IDESC * UNUSED idesc = abuf->idesc;
   1101   int cycles = 0;
   1102   {
   1103     int referenced = 0;
   1104     int UNUSED insn_referenced = abuf->written;
   1105     INT in_Rs = -1;
   1106     in_Rs = FLD (in_Rs);
   1107     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   1108     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   1109   }
   1110   {
   1111     int referenced = 0;
   1112     int UNUSED insn_referenced = abuf->written;
   1113     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   1114   }
   1115   {
   1116     int referenced = 0;
   1117     int UNUSED insn_referenced = abuf->written;
   1118     INT in_Rd = -1;
   1119     INT in_Rs = -1;
   1120     INT out_Rd = -1;
   1121     in_Rs = FLD (in_Rs);
   1122     out_Rd = FLD (out_Rd);
   1123     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
   1124     if (insn_referenced & (1 << 7)) referenced |= 1 << 2;
   1125     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   1126   }
   1127   return cycles;
   1128 #undef FLD
   1129 }
   1130 
   1131 static int
   1132 model_crisv32_movu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   1133 {
   1134 #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
   1135   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1136   const IDESC * UNUSED idesc = abuf->idesc;
   1137   int cycles = 0;
   1138   {
   1139     int referenced = 0;
   1140     int UNUSED insn_referenced = abuf->written;
   1141     INT in_Rs = -1;
   1142     in_Rs = FLD (in_Rs);
   1143     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   1144     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   1145   }
   1146   {
   1147     int referenced = 0;
   1148     int UNUSED insn_referenced = abuf->written;
   1149     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   1150   }
   1151   {
   1152     int referenced = 0;
   1153     int UNUSED insn_referenced = abuf->written;
   1154     INT in_Rd = -1;
   1155     INT in_Rs = -1;
   1156     INT out_Rd = -1;
   1157     in_Rs = FLD (in_Rs);
   1158     out_Rd = FLD (out_Rd);
   1159     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
   1160     if (insn_referenced & (1 << 7)) referenced |= 1 << 2;
   1161     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   1162   }
   1163   return cycles;
   1164 #undef FLD
   1165 }
   1166 
   1167 static int
   1168 model_crisv32_movu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   1169 {
   1170 #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
   1171   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1172   const IDESC * UNUSED idesc = abuf->idesc;
   1173   int cycles = 0;
   1174   {
   1175     int referenced = 0;
   1176     int UNUSED insn_referenced = abuf->written;
   1177     INT in_Rs = -1;
   1178     in_Rs = FLD (in_Rs);
   1179     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   1180     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   1181   }
   1182   {
   1183     int referenced = 0;
   1184     int UNUSED insn_referenced = abuf->written;
   1185     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   1186   }
   1187   {
   1188     int referenced = 0;
   1189     int UNUSED insn_referenced = abuf->written;
   1190     INT in_Rd = -1;
   1191     INT in_Rs = -1;
   1192     INT out_Rd = -1;
   1193     in_Rs = FLD (in_Rs);
   1194     out_Rd = FLD (out_Rd);
   1195     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
   1196     if (insn_referenced & (1 << 7)) referenced |= 1 << 2;
   1197     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   1198   }
   1199   return cycles;
   1200 #undef FLD
   1201 }
   1202 
   1203 static int
   1204 model_crisv32_move_r_sprv32 (SIM_CPU *current_cpu, void *sem_arg)
   1205 {
   1206 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   1207   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1208   const IDESC * UNUSED idesc = abuf->idesc;
   1209   int cycles = 0;
   1210   {
   1211     int referenced = 0;
   1212     int UNUSED insn_referenced = abuf->written;
   1213     INT in_Rs = -1;
   1214     INT out_Pd = -1;
   1215     in_Rs = FLD (in_Rs);
   1216     out_Pd = FLD (out_Pd);
   1217     referenced |= 1 << 0;
   1218     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
   1219     cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 0, referenced, in_Rs, out_Pd);
   1220   }
   1221   return cycles;
   1222 #undef FLD
   1223 }
   1224 
   1225 static int
   1226 model_crisv32_move_spr_rv32 (SIM_CPU *current_cpu, void *sem_arg)
   1227 {
   1228 #define FLD(f) abuf->fields.sfmt_mcp.f
   1229   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1230   const IDESC * UNUSED idesc = abuf->idesc;
   1231   int cycles = 0;
   1232   {
   1233     int referenced = 0;
   1234     int UNUSED insn_referenced = abuf->written;
   1235     INT in_Rd = -1;
   1236     INT in_Rs = -1;
   1237     INT out_Rd = -1;
   1238     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   1239   }
   1240   return cycles;
   1241 #undef FLD
   1242 }
   1243 
   1244 static int
   1245 model_crisv32_move_m_sprv32 (SIM_CPU *current_cpu, void *sem_arg)
   1246 {
   1247 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   1248   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1249   const IDESC * UNUSED idesc = abuf->idesc;
   1250   int cycles = 0;
   1251   {
   1252     int referenced = 0;
   1253     int UNUSED insn_referenced = abuf->written;
   1254     INT in_Rs = -1;
   1255     in_Rs = FLD (in_Rs);
   1256     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   1257     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   1258   }
   1259   {
   1260     int referenced = 0;
   1261     int UNUSED insn_referenced = abuf->written;
   1262     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   1263   }
   1264   {
   1265     int referenced = 0;
   1266     int UNUSED insn_referenced = abuf->written;
   1267     INT in_Rs = -1;
   1268     INT out_Pd = -1;
   1269     in_Rs = FLD (in_Rs);
   1270     out_Pd = FLD (out_Pd);
   1271     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   1272     referenced |= 1 << 1;
   1273     cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 2, referenced, in_Rs, out_Pd);
   1274   }
   1275   return cycles;
   1276 #undef FLD
   1277 }
   1278 
   1279 static int
   1280 model_crisv32_move_c_sprv32_p2 (SIM_CPU *current_cpu, void *sem_arg)
   1281 {
   1282 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   1283   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1284   const IDESC * UNUSED idesc = abuf->idesc;
   1285   int cycles = 0;
   1286   {
   1287     int referenced = 0;
   1288     int UNUSED insn_referenced = abuf->written;
   1289     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   1290   }
   1291   {
   1292     int referenced = 0;
   1293     int UNUSED insn_referenced = abuf->written;
   1294     INT in_Rs = -1;
   1295     INT out_Pd = -1;
   1296     out_Pd = FLD (out_Pd);
   1297     referenced |= 1 << 1;
   1298     cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
   1299   }
   1300   return cycles;
   1301 #undef FLD
   1302 }
   1303 
   1304 static int
   1305 model_crisv32_move_c_sprv32_p3 (SIM_CPU *current_cpu, void *sem_arg)
   1306 {
   1307 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   1308   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1309   const IDESC * UNUSED idesc = abuf->idesc;
   1310   int cycles = 0;
   1311   {
   1312     int referenced = 0;
   1313     int UNUSED insn_referenced = abuf->written;
   1314     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   1315   }
   1316   {
   1317     int referenced = 0;
   1318     int UNUSED insn_referenced = abuf->written;
   1319     INT in_Rs = -1;
   1320     INT out_Pd = -1;
   1321     out_Pd = FLD (out_Pd);
   1322     referenced |= 1 << 1;
   1323     cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
   1324   }
   1325   return cycles;
   1326 #undef FLD
   1327 }
   1328 
   1329 static int
   1330 model_crisv32_move_c_sprv32_p5 (SIM_CPU *current_cpu, void *sem_arg)
   1331 {
   1332 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   1333   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1334   const IDESC * UNUSED idesc = abuf->idesc;
   1335   int cycles = 0;
   1336   {
   1337     int referenced = 0;
   1338     int UNUSED insn_referenced = abuf->written;
   1339     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   1340   }
   1341   {
   1342     int referenced = 0;
   1343     int UNUSED insn_referenced = abuf->written;
   1344     INT in_Rs = -1;
   1345     INT out_Pd = -1;
   1346     out_Pd = FLD (out_Pd);
   1347     referenced |= 1 << 1;
   1348     cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
   1349   }
   1350   return cycles;
   1351 #undef FLD
   1352 }
   1353 
   1354 static int
   1355 model_crisv32_move_c_sprv32_p6 (SIM_CPU *current_cpu, void *sem_arg)
   1356 {
   1357 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   1358   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1359   const IDESC * UNUSED idesc = abuf->idesc;
   1360   int cycles = 0;
   1361   {
   1362     int referenced = 0;
   1363     int UNUSED insn_referenced = abuf->written;
   1364     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   1365   }
   1366   {
   1367     int referenced = 0;
   1368     int UNUSED insn_referenced = abuf->written;
   1369     INT in_Rs = -1;
   1370     INT out_Pd = -1;
   1371     out_Pd = FLD (out_Pd);
   1372     referenced |= 1 << 1;
   1373     cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
   1374   }
   1375   return cycles;
   1376 #undef FLD
   1377 }
   1378 
   1379 static int
   1380 model_crisv32_move_c_sprv32_p7 (SIM_CPU *current_cpu, void *sem_arg)
   1381 {
   1382 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   1383   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1384   const IDESC * UNUSED idesc = abuf->idesc;
   1385   int cycles = 0;
   1386   {
   1387     int referenced = 0;
   1388     int UNUSED insn_referenced = abuf->written;
   1389     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   1390   }
   1391   {
   1392     int referenced = 0;
   1393     int UNUSED insn_referenced = abuf->written;
   1394     INT in_Rs = -1;
   1395     INT out_Pd = -1;
   1396     out_Pd = FLD (out_Pd);
   1397     referenced |= 1 << 1;
   1398     cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
   1399   }
   1400   return cycles;
   1401 #undef FLD
   1402 }
   1403 
   1404 static int
   1405 model_crisv32_move_c_sprv32_p9 (SIM_CPU *current_cpu, void *sem_arg)
   1406 {
   1407 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   1408   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1409   const IDESC * UNUSED idesc = abuf->idesc;
   1410   int cycles = 0;
   1411   {
   1412     int referenced = 0;
   1413     int UNUSED insn_referenced = abuf->written;
   1414     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   1415   }
   1416   {
   1417     int referenced = 0;
   1418     int UNUSED insn_referenced = abuf->written;
   1419     INT in_Rs = -1;
   1420     INT out_Pd = -1;
   1421     out_Pd = FLD (out_Pd);
   1422     referenced |= 1 << 1;
   1423     cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
   1424   }
   1425   return cycles;
   1426 #undef FLD
   1427 }
   1428 
   1429 static int
   1430 model_crisv32_move_c_sprv32_p10 (SIM_CPU *current_cpu, void *sem_arg)
   1431 {
   1432 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   1433   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1434   const IDESC * UNUSED idesc = abuf->idesc;
   1435   int cycles = 0;
   1436   {
   1437     int referenced = 0;
   1438     int UNUSED insn_referenced = abuf->written;
   1439     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   1440   }
   1441   {
   1442     int referenced = 0;
   1443     int UNUSED insn_referenced = abuf->written;
   1444     INT in_Rs = -1;
   1445     INT out_Pd = -1;
   1446     out_Pd = FLD (out_Pd);
   1447     referenced |= 1 << 1;
   1448     cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
   1449   }
   1450   return cycles;
   1451 #undef FLD
   1452 }
   1453 
   1454 static int
   1455 model_crisv32_move_c_sprv32_p11 (SIM_CPU *current_cpu, void *sem_arg)
   1456 {
   1457 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   1458   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1459   const IDESC * UNUSED idesc = abuf->idesc;
   1460   int cycles = 0;
   1461   {
   1462     int referenced = 0;
   1463     int UNUSED insn_referenced = abuf->written;
   1464     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   1465   }
   1466   {
   1467     int referenced = 0;
   1468     int UNUSED insn_referenced = abuf->written;
   1469     INT in_Rs = -1;
   1470     INT out_Pd = -1;
   1471     out_Pd = FLD (out_Pd);
   1472     referenced |= 1 << 1;
   1473     cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
   1474   }
   1475   return cycles;
   1476 #undef FLD
   1477 }
   1478 
   1479 static int
   1480 model_crisv32_move_c_sprv32_p12 (SIM_CPU *current_cpu, void *sem_arg)
   1481 {
   1482 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   1483   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1484   const IDESC * UNUSED idesc = abuf->idesc;
   1485   int cycles = 0;
   1486   {
   1487     int referenced = 0;
   1488     int UNUSED insn_referenced = abuf->written;
   1489     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   1490   }
   1491   {
   1492     int referenced = 0;
   1493     int UNUSED insn_referenced = abuf->written;
   1494     INT in_Rs = -1;
   1495     INT out_Pd = -1;
   1496     out_Pd = FLD (out_Pd);
   1497     referenced |= 1 << 1;
   1498     cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
   1499   }
   1500   return cycles;
   1501 #undef FLD
   1502 }
   1503 
   1504 static int
   1505 model_crisv32_move_c_sprv32_p13 (SIM_CPU *current_cpu, void *sem_arg)
   1506 {
   1507 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   1508   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1509   const IDESC * UNUSED idesc = abuf->idesc;
   1510   int cycles = 0;
   1511   {
   1512     int referenced = 0;
   1513     int UNUSED insn_referenced = abuf->written;
   1514     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   1515   }
   1516   {
   1517     int referenced = 0;
   1518     int UNUSED insn_referenced = abuf->written;
   1519     INT in_Rs = -1;
   1520     INT out_Pd = -1;
   1521     out_Pd = FLD (out_Pd);
   1522     referenced |= 1 << 1;
   1523     cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
   1524   }
   1525   return cycles;
   1526 #undef FLD
   1527 }
   1528 
   1529 static int
   1530 model_crisv32_move_c_sprv32_p14 (SIM_CPU *current_cpu, void *sem_arg)
   1531 {
   1532 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   1533   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1534   const IDESC * UNUSED idesc = abuf->idesc;
   1535   int cycles = 0;
   1536   {
   1537     int referenced = 0;
   1538     int UNUSED insn_referenced = abuf->written;
   1539     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   1540   }
   1541   {
   1542     int referenced = 0;
   1543     int UNUSED insn_referenced = abuf->written;
   1544     INT in_Rs = -1;
   1545     INT out_Pd = -1;
   1546     out_Pd = FLD (out_Pd);
   1547     referenced |= 1 << 1;
   1548     cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
   1549   }
   1550   return cycles;
   1551 #undef FLD
   1552 }
   1553 
   1554 static int
   1555 model_crisv32_move_c_sprv32_p15 (SIM_CPU *current_cpu, void *sem_arg)
   1556 {
   1557 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   1558   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1559   const IDESC * UNUSED idesc = abuf->idesc;
   1560   int cycles = 0;
   1561   {
   1562     int referenced = 0;
   1563     int UNUSED insn_referenced = abuf->written;
   1564     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   1565   }
   1566   {
   1567     int referenced = 0;
   1568     int UNUSED insn_referenced = abuf->written;
   1569     INT in_Rs = -1;
   1570     INT out_Pd = -1;
   1571     out_Pd = FLD (out_Pd);
   1572     referenced |= 1 << 1;
   1573     cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
   1574   }
   1575   return cycles;
   1576 #undef FLD
   1577 }
   1578 
   1579 static int
   1580 model_crisv32_move_spr_mv32 (SIM_CPU *current_cpu, void *sem_arg)
   1581 {
   1582 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   1583   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1584   const IDESC * UNUSED idesc = abuf->idesc;
   1585   int cycles = 0;
   1586   {
   1587     int referenced = 0;
   1588     int UNUSED insn_referenced = abuf->written;
   1589     INT in_Rs = -1;
   1590     in_Rs = FLD (in_Rs);
   1591     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   1592     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   1593   }
   1594   {
   1595     int referenced = 0;
   1596     int UNUSED insn_referenced = abuf->written;
   1597     INT in_Rd = -1;
   1598     INT in_Rs = -1;
   1599     INT out_Rd = -1;
   1600     in_Rs = FLD (in_Rs);
   1601     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   1602     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   1603   }
   1604   {
   1605     int referenced = 0;
   1606     int UNUSED insn_referenced = abuf->written;
   1607     cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced);
   1608   }
   1609   return cycles;
   1610 #undef FLD
   1611 }
   1612 
   1613 static int
   1614 model_crisv32_move_ss_r (SIM_CPU *current_cpu, void *sem_arg)
   1615 {
   1616 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   1617   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1618   const IDESC * UNUSED idesc = abuf->idesc;
   1619   int cycles = 0;
   1620   {
   1621     int referenced = 0;
   1622     int UNUSED insn_referenced = abuf->written;
   1623     INT in_Rd = -1;
   1624     INT in_Rs = -1;
   1625     INT out_Rd = -1;
   1626     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   1627   }
   1628   return cycles;
   1629 #undef FLD
   1630 }
   1631 
   1632 static int
   1633 model_crisv32_move_r_ss (SIM_CPU *current_cpu, void *sem_arg)
   1634 {
   1635 #define FLD(f) abuf->fields.sfmt_mcp.f
   1636   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1637   const IDESC * UNUSED idesc = abuf->idesc;
   1638   int cycles = 0;
   1639   {
   1640     int referenced = 0;
   1641     int UNUSED insn_referenced = abuf->written;
   1642     INT in_Rd = -1;
   1643     INT in_Rs = -1;
   1644     INT out_Rd = -1;
   1645     in_Rs = FLD (in_Rs);
   1646     referenced |= 1 << 1;
   1647     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   1648   }
   1649   return cycles;
   1650 #undef FLD
   1651 }
   1652 
   1653 static int
   1654 model_crisv32_movem_r_m_v32 (SIM_CPU *current_cpu, void *sem_arg)
   1655 {
   1656 #define FLD(f) abuf->fields.sfmt_movem_r_m_v32.f
   1657   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1658   const IDESC * UNUSED idesc = abuf->idesc;
   1659   int cycles = 0;
   1660   {
   1661     int referenced = 0;
   1662     int UNUSED insn_referenced = abuf->written;
   1663     INT in_Rs = -1;
   1664     in_Rs = FLD (in_Rs);
   1665     referenced |= 1 << 0;
   1666     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   1667   }
   1668   {
   1669     int referenced = 0;
   1670     int UNUSED insn_referenced = abuf->written;
   1671     INT in_Rs = -1;
   1672     INT in_Rd = -1;
   1673     in_Rs = FLD (in_Rs);
   1674     in_Rd = FLD (in_Rd);
   1675     referenced |= 1 << 0;
   1676     referenced |= 1 << 1;
   1677     cycles += crisv32f_model_crisv32_u_movem_rtom (current_cpu, idesc, 1, referenced, in_Rs, in_Rd);
   1678   }
   1679   {
   1680     int referenced = 0;
   1681     int UNUSED insn_referenced = abuf->written;
   1682     INT in_Rs = -1;
   1683     INT out_Rd = -1;
   1684     in_Rs = FLD (in_Rs);
   1685     referenced |= 1 << 0;
   1686     cycles += crisv32f_model_crisv32_u_exec_movem (current_cpu, idesc, 2, referenced, in_Rs, out_Rd);
   1687   }
   1688   {
   1689     int referenced = 0;
   1690     int UNUSED insn_referenced = abuf->written;
   1691     cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 3, referenced);
   1692   }
   1693   return cycles;
   1694 #undef FLD
   1695 }
   1696 
   1697 static int
   1698 model_crisv32_movem_m_r_v32 (SIM_CPU *current_cpu, void *sem_arg)
   1699 {
   1700 #define FLD(f) abuf->fields.sfmt_movem_m_r_v32.f
   1701   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1702   const IDESC * UNUSED idesc = abuf->idesc;
   1703   int cycles = 0;
   1704   {
   1705     int referenced = 0;
   1706     int UNUSED insn_referenced = abuf->written;
   1707     INT in_Rs = -1;
   1708     in_Rs = FLD (in_Rs);
   1709     referenced |= 1 << 0;
   1710     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   1711   }
   1712   {
   1713     int referenced = 0;
   1714     int UNUSED insn_referenced = abuf->written;
   1715     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   1716   }
   1717   {
   1718     int referenced = 0;
   1719     int UNUSED insn_referenced = abuf->written;
   1720     INT in_Rs = -1;
   1721     INT in_Rd = -1;
   1722     in_Rs = FLD (in_Rs);
   1723     in_Rd = FLD (in_Rd);
   1724     referenced |= 1 << 0;
   1725     referenced |= 1 << 1;
   1726     cycles += crisv32f_model_crisv32_u_movem_mtor (current_cpu, idesc, 2, referenced, in_Rs, in_Rd);
   1727   }
   1728   {
   1729     int referenced = 0;
   1730     int UNUSED insn_referenced = abuf->written;
   1731     INT in_Rs = -1;
   1732     INT out_Rd = -1;
   1733     in_Rs = FLD (in_Rs);
   1734     referenced |= 1 << 0;
   1735     cycles += crisv32f_model_crisv32_u_exec_movem (current_cpu, idesc, 3, referenced, in_Rs, out_Rd);
   1736   }
   1737   return cycles;
   1738 #undef FLD
   1739 }
   1740 
   1741 static int
   1742 model_crisv32_add_b_r (SIM_CPU *current_cpu, void *sem_arg)
   1743 {
   1744 #define FLD(f) abuf->fields.sfmt_addc_m.f
   1745   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1746   const IDESC * UNUSED idesc = abuf->idesc;
   1747   int cycles = 0;
   1748   {
   1749     int referenced = 0;
   1750     int UNUSED insn_referenced = abuf->written;
   1751     INT in_Rd = -1;
   1752     INT in_Rs = -1;
   1753     INT out_Rd = -1;
   1754     in_Rd = FLD (in_Rd);
   1755     in_Rs = FLD (in_Rs);
   1756     referenced |= 1 << 0;
   1757     referenced |= 1 << 1;
   1758     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   1759   }
   1760   return cycles;
   1761 #undef FLD
   1762 }
   1763 
   1764 static int
   1765 model_crisv32_add_w_r (SIM_CPU *current_cpu, void *sem_arg)
   1766 {
   1767 #define FLD(f) abuf->fields.sfmt_addc_m.f
   1768   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1769   const IDESC * UNUSED idesc = abuf->idesc;
   1770   int cycles = 0;
   1771   {
   1772     int referenced = 0;
   1773     int UNUSED insn_referenced = abuf->written;
   1774     INT in_Rd = -1;
   1775     INT in_Rs = -1;
   1776     INT out_Rd = -1;
   1777     in_Rd = FLD (in_Rd);
   1778     in_Rs = FLD (in_Rs);
   1779     referenced |= 1 << 0;
   1780     referenced |= 1 << 1;
   1781     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   1782   }
   1783   return cycles;
   1784 #undef FLD
   1785 }
   1786 
   1787 static int
   1788 model_crisv32_add_d_r (SIM_CPU *current_cpu, void *sem_arg)
   1789 {
   1790 #define FLD(f) abuf->fields.sfmt_addc_m.f
   1791   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1792   const IDESC * UNUSED idesc = abuf->idesc;
   1793   int cycles = 0;
   1794   {
   1795     int referenced = 0;
   1796     int UNUSED insn_referenced = abuf->written;
   1797     INT in_Rd = -1;
   1798     INT in_Rs = -1;
   1799     INT out_Rd = -1;
   1800     in_Rd = FLD (in_Rd);
   1801     in_Rs = FLD (in_Rs);
   1802     referenced |= 1 << 0;
   1803     referenced |= 1 << 1;
   1804     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   1805   }
   1806   return cycles;
   1807 #undef FLD
   1808 }
   1809 
   1810 static int
   1811 model_crisv32_add_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   1812 {
   1813 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   1814   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1815   const IDESC * UNUSED idesc = abuf->idesc;
   1816   int cycles = 0;
   1817   {
   1818     int referenced = 0;
   1819     int UNUSED insn_referenced = abuf->written;
   1820     INT in_Rs = -1;
   1821     in_Rs = FLD (in_Rs);
   1822     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   1823     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   1824   }
   1825   {
   1826     int referenced = 0;
   1827     int UNUSED insn_referenced = abuf->written;
   1828     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   1829   }
   1830   {
   1831     int referenced = 0;
   1832     int UNUSED insn_referenced = abuf->written;
   1833     INT in_Rd = -1;
   1834     INT in_Rs = -1;
   1835     INT out_Rd = -1;
   1836     in_Rd = FLD (in_Rd);
   1837     in_Rs = FLD (in_Rs);
   1838     referenced |= 1 << 0;
   1839     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   1840     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   1841   }
   1842   return cycles;
   1843 #undef FLD
   1844 }
   1845 
   1846 static int
   1847 model_crisv32_add_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   1848 {
   1849 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   1850   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1851   const IDESC * UNUSED idesc = abuf->idesc;
   1852   int cycles = 0;
   1853   {
   1854     int referenced = 0;
   1855     int UNUSED insn_referenced = abuf->written;
   1856     INT in_Rs = -1;
   1857     in_Rs = FLD (in_Rs);
   1858     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   1859     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   1860   }
   1861   {
   1862     int referenced = 0;
   1863     int UNUSED insn_referenced = abuf->written;
   1864     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   1865   }
   1866   {
   1867     int referenced = 0;
   1868     int UNUSED insn_referenced = abuf->written;
   1869     INT in_Rd = -1;
   1870     INT in_Rs = -1;
   1871     INT out_Rd = -1;
   1872     in_Rd = FLD (in_Rd);
   1873     in_Rs = FLD (in_Rs);
   1874     referenced |= 1 << 0;
   1875     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   1876     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   1877   }
   1878   return cycles;
   1879 #undef FLD
   1880 }
   1881 
   1882 static int
   1883 model_crisv32_add_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   1884 {
   1885 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   1886   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1887   const IDESC * UNUSED idesc = abuf->idesc;
   1888   int cycles = 0;
   1889   {
   1890     int referenced = 0;
   1891     int UNUSED insn_referenced = abuf->written;
   1892     INT in_Rs = -1;
   1893     in_Rs = FLD (in_Rs);
   1894     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   1895     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   1896   }
   1897   {
   1898     int referenced = 0;
   1899     int UNUSED insn_referenced = abuf->written;
   1900     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   1901   }
   1902   {
   1903     int referenced = 0;
   1904     int UNUSED insn_referenced = abuf->written;
   1905     INT in_Rd = -1;
   1906     INT in_Rs = -1;
   1907     INT out_Rd = -1;
   1908     in_Rd = FLD (in_Rd);
   1909     in_Rs = FLD (in_Rs);
   1910     referenced |= 1 << 0;
   1911     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   1912     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   1913   }
   1914   return cycles;
   1915 #undef FLD
   1916 }
   1917 
   1918 static int
   1919 model_crisv32_addcbr (SIM_CPU *current_cpu, void *sem_arg)
   1920 {
   1921 #define FLD(f) abuf->fields.sfmt_addcbr.f
   1922   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1923   const IDESC * UNUSED idesc = abuf->idesc;
   1924   int cycles = 0;
   1925   {
   1926     int referenced = 0;
   1927     int UNUSED insn_referenced = abuf->written;
   1928     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   1929   }
   1930   {
   1931     int referenced = 0;
   1932     int UNUSED insn_referenced = abuf->written;
   1933     INT in_Rd = -1;
   1934     INT in_Rs = -1;
   1935     INT out_Rd = -1;
   1936     in_Rd = FLD (in_Rd);
   1937     referenced |= 1 << 0;
   1938     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   1939   }
   1940   return cycles;
   1941 #undef FLD
   1942 }
   1943 
   1944 static int
   1945 model_crisv32_addcwr (SIM_CPU *current_cpu, void *sem_arg)
   1946 {
   1947 #define FLD(f) abuf->fields.sfmt_addcwr.f
   1948   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1949   const IDESC * UNUSED idesc = abuf->idesc;
   1950   int cycles = 0;
   1951   {
   1952     int referenced = 0;
   1953     int UNUSED insn_referenced = abuf->written;
   1954     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   1955   }
   1956   {
   1957     int referenced = 0;
   1958     int UNUSED insn_referenced = abuf->written;
   1959     INT in_Rd = -1;
   1960     INT in_Rs = -1;
   1961     INT out_Rd = -1;
   1962     in_Rd = FLD (in_Rd);
   1963     referenced |= 1 << 0;
   1964     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   1965   }
   1966   return cycles;
   1967 #undef FLD
   1968 }
   1969 
   1970 static int
   1971 model_crisv32_addcdr (SIM_CPU *current_cpu, void *sem_arg)
   1972 {
   1973 #define FLD(f) abuf->fields.sfmt_addcdr.f
   1974   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1975   const IDESC * UNUSED idesc = abuf->idesc;
   1976   int cycles = 0;
   1977   {
   1978     int referenced = 0;
   1979     int UNUSED insn_referenced = abuf->written;
   1980     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   1981   }
   1982   {
   1983     int referenced = 0;
   1984     int UNUSED insn_referenced = abuf->written;
   1985     INT in_Rd = -1;
   1986     INT in_Rs = -1;
   1987     INT out_Rd = -1;
   1988     in_Rd = FLD (in_Rd);
   1989     referenced |= 1 << 0;
   1990     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   1991   }
   1992   return cycles;
   1993 #undef FLD
   1994 }
   1995 
   1996 static int
   1997 model_crisv32_adds_b_r (SIM_CPU *current_cpu, void *sem_arg)
   1998 {
   1999 #define FLD(f) abuf->fields.sfmt_addc_m.f
   2000   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2001   const IDESC * UNUSED idesc = abuf->idesc;
   2002   int cycles = 0;
   2003   {
   2004     int referenced = 0;
   2005     int UNUSED insn_referenced = abuf->written;
   2006     INT in_Rd = -1;
   2007     INT in_Rs = -1;
   2008     INT out_Rd = -1;
   2009     in_Rd = FLD (in_Rd);
   2010     in_Rs = FLD (in_Rs);
   2011     referenced |= 1 << 0;
   2012     referenced |= 1 << 1;
   2013     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   2014   }
   2015   return cycles;
   2016 #undef FLD
   2017 }
   2018 
   2019 static int
   2020 model_crisv32_adds_w_r (SIM_CPU *current_cpu, void *sem_arg)
   2021 {
   2022 #define FLD(f) abuf->fields.sfmt_addc_m.f
   2023   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2024   const IDESC * UNUSED idesc = abuf->idesc;
   2025   int cycles = 0;
   2026   {
   2027     int referenced = 0;
   2028     int UNUSED insn_referenced = abuf->written;
   2029     INT in_Rd = -1;
   2030     INT in_Rs = -1;
   2031     INT out_Rd = -1;
   2032     in_Rd = FLD (in_Rd);
   2033     in_Rs = FLD (in_Rs);
   2034     referenced |= 1 << 0;
   2035     referenced |= 1 << 1;
   2036     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   2037   }
   2038   return cycles;
   2039 #undef FLD
   2040 }
   2041 
   2042 static int
   2043 model_crisv32_adds_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   2044 {
   2045 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2046   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2047   const IDESC * UNUSED idesc = abuf->idesc;
   2048   int cycles = 0;
   2049   {
   2050     int referenced = 0;
   2051     int UNUSED insn_referenced = abuf->written;
   2052     INT in_Rs = -1;
   2053     in_Rs = FLD (in_Rs);
   2054     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   2055     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   2056   }
   2057   {
   2058     int referenced = 0;
   2059     int UNUSED insn_referenced = abuf->written;
   2060     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   2061   }
   2062   {
   2063     int referenced = 0;
   2064     int UNUSED insn_referenced = abuf->written;
   2065     INT in_Rd = -1;
   2066     INT in_Rs = -1;
   2067     INT out_Rd = -1;
   2068     in_Rd = FLD (in_Rd);
   2069     in_Rs = FLD (in_Rs);
   2070     referenced |= 1 << 0;
   2071     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   2072     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   2073   }
   2074   return cycles;
   2075 #undef FLD
   2076 }
   2077 
   2078 static int
   2079 model_crisv32_adds_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   2080 {
   2081 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2082   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2083   const IDESC * UNUSED idesc = abuf->idesc;
   2084   int cycles = 0;
   2085   {
   2086     int referenced = 0;
   2087     int UNUSED insn_referenced = abuf->written;
   2088     INT in_Rs = -1;
   2089     in_Rs = FLD (in_Rs);
   2090     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   2091     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   2092   }
   2093   {
   2094     int referenced = 0;
   2095     int UNUSED insn_referenced = abuf->written;
   2096     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   2097   }
   2098   {
   2099     int referenced = 0;
   2100     int UNUSED insn_referenced = abuf->written;
   2101     INT in_Rd = -1;
   2102     INT in_Rs = -1;
   2103     INT out_Rd = -1;
   2104     in_Rd = FLD (in_Rd);
   2105     in_Rs = FLD (in_Rs);
   2106     referenced |= 1 << 0;
   2107     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   2108     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   2109   }
   2110   return cycles;
   2111 #undef FLD
   2112 }
   2113 
   2114 static int
   2115 model_crisv32_addscbr (SIM_CPU *current_cpu, void *sem_arg)
   2116 {
   2117 #define FLD(f) abuf->fields.sfmt_addcbr.f
   2118   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2119   const IDESC * UNUSED idesc = abuf->idesc;
   2120   int cycles = 0;
   2121   {
   2122     int referenced = 0;
   2123     int UNUSED insn_referenced = abuf->written;
   2124     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   2125   }
   2126   {
   2127     int referenced = 0;
   2128     int UNUSED insn_referenced = abuf->written;
   2129     INT in_Rd = -1;
   2130     INT in_Rs = -1;
   2131     INT out_Rd = -1;
   2132     in_Rd = FLD (in_Rd);
   2133     referenced |= 1 << 0;
   2134     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   2135   }
   2136   return cycles;
   2137 #undef FLD
   2138 }
   2139 
   2140 static int
   2141 model_crisv32_addscwr (SIM_CPU *current_cpu, void *sem_arg)
   2142 {
   2143 #define FLD(f) abuf->fields.sfmt_addcwr.f
   2144   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2145   const IDESC * UNUSED idesc = abuf->idesc;
   2146   int cycles = 0;
   2147   {
   2148     int referenced = 0;
   2149     int UNUSED insn_referenced = abuf->written;
   2150     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   2151   }
   2152   {
   2153     int referenced = 0;
   2154     int UNUSED insn_referenced = abuf->written;
   2155     INT in_Rd = -1;
   2156     INT in_Rs = -1;
   2157     INT out_Rd = -1;
   2158     in_Rd = FLD (in_Rd);
   2159     referenced |= 1 << 0;
   2160     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   2161   }
   2162   return cycles;
   2163 #undef FLD
   2164 }
   2165 
   2166 static int
   2167 model_crisv32_addu_b_r (SIM_CPU *current_cpu, void *sem_arg)
   2168 {
   2169 #define FLD(f) abuf->fields.sfmt_addc_m.f
   2170   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2171   const IDESC * UNUSED idesc = abuf->idesc;
   2172   int cycles = 0;
   2173   {
   2174     int referenced = 0;
   2175     int UNUSED insn_referenced = abuf->written;
   2176     INT in_Rd = -1;
   2177     INT in_Rs = -1;
   2178     INT out_Rd = -1;
   2179     in_Rd = FLD (in_Rd);
   2180     in_Rs = FLD (in_Rs);
   2181     referenced |= 1 << 0;
   2182     referenced |= 1 << 1;
   2183     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   2184   }
   2185   return cycles;
   2186 #undef FLD
   2187 }
   2188 
   2189 static int
   2190 model_crisv32_addu_w_r (SIM_CPU *current_cpu, void *sem_arg)
   2191 {
   2192 #define FLD(f) abuf->fields.sfmt_addc_m.f
   2193   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2194   const IDESC * UNUSED idesc = abuf->idesc;
   2195   int cycles = 0;
   2196   {
   2197     int referenced = 0;
   2198     int UNUSED insn_referenced = abuf->written;
   2199     INT in_Rd = -1;
   2200     INT in_Rs = -1;
   2201     INT out_Rd = -1;
   2202     in_Rd = FLD (in_Rd);
   2203     in_Rs = FLD (in_Rs);
   2204     referenced |= 1 << 0;
   2205     referenced |= 1 << 1;
   2206     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   2207   }
   2208   return cycles;
   2209 #undef FLD
   2210 }
   2211 
   2212 static int
   2213 model_crisv32_addu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   2214 {
   2215 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2216   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2217   const IDESC * UNUSED idesc = abuf->idesc;
   2218   int cycles = 0;
   2219   {
   2220     int referenced = 0;
   2221     int UNUSED insn_referenced = abuf->written;
   2222     INT in_Rs = -1;
   2223     in_Rs = FLD (in_Rs);
   2224     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   2225     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   2226   }
   2227   {
   2228     int referenced = 0;
   2229     int UNUSED insn_referenced = abuf->written;
   2230     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   2231   }
   2232   {
   2233     int referenced = 0;
   2234     int UNUSED insn_referenced = abuf->written;
   2235     INT in_Rd = -1;
   2236     INT in_Rs = -1;
   2237     INT out_Rd = -1;
   2238     in_Rd = FLD (in_Rd);
   2239     in_Rs = FLD (in_Rs);
   2240     referenced |= 1 << 0;
   2241     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   2242     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   2243   }
   2244   return cycles;
   2245 #undef FLD
   2246 }
   2247 
   2248 static int
   2249 model_crisv32_addu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   2250 {
   2251 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2252   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2253   const IDESC * UNUSED idesc = abuf->idesc;
   2254   int cycles = 0;
   2255   {
   2256     int referenced = 0;
   2257     int UNUSED insn_referenced = abuf->written;
   2258     INT in_Rs = -1;
   2259     in_Rs = FLD (in_Rs);
   2260     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   2261     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   2262   }
   2263   {
   2264     int referenced = 0;
   2265     int UNUSED insn_referenced = abuf->written;
   2266     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   2267   }
   2268   {
   2269     int referenced = 0;
   2270     int UNUSED insn_referenced = abuf->written;
   2271     INT in_Rd = -1;
   2272     INT in_Rs = -1;
   2273     INT out_Rd = -1;
   2274     in_Rd = FLD (in_Rd);
   2275     in_Rs = FLD (in_Rs);
   2276     referenced |= 1 << 0;
   2277     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   2278     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   2279   }
   2280   return cycles;
   2281 #undef FLD
   2282 }
   2283 
   2284 static int
   2285 model_crisv32_adducbr (SIM_CPU *current_cpu, void *sem_arg)
   2286 {
   2287 #define FLD(f) abuf->fields.sfmt_addcbr.f
   2288   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2289   const IDESC * UNUSED idesc = abuf->idesc;
   2290   int cycles = 0;
   2291   {
   2292     int referenced = 0;
   2293     int UNUSED insn_referenced = abuf->written;
   2294     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   2295   }
   2296   {
   2297     int referenced = 0;
   2298     int UNUSED insn_referenced = abuf->written;
   2299     INT in_Rd = -1;
   2300     INT in_Rs = -1;
   2301     INT out_Rd = -1;
   2302     in_Rd = FLD (in_Rd);
   2303     referenced |= 1 << 0;
   2304     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   2305   }
   2306   return cycles;
   2307 #undef FLD
   2308 }
   2309 
   2310 static int
   2311 model_crisv32_adducwr (SIM_CPU *current_cpu, void *sem_arg)
   2312 {
   2313 #define FLD(f) abuf->fields.sfmt_addcwr.f
   2314   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2315   const IDESC * UNUSED idesc = abuf->idesc;
   2316   int cycles = 0;
   2317   {
   2318     int referenced = 0;
   2319     int UNUSED insn_referenced = abuf->written;
   2320     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   2321   }
   2322   {
   2323     int referenced = 0;
   2324     int UNUSED insn_referenced = abuf->written;
   2325     INT in_Rd = -1;
   2326     INT in_Rs = -1;
   2327     INT out_Rd = -1;
   2328     in_Rd = FLD (in_Rd);
   2329     referenced |= 1 << 0;
   2330     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   2331   }
   2332   return cycles;
   2333 #undef FLD
   2334 }
   2335 
   2336 static int
   2337 model_crisv32_sub_b_r (SIM_CPU *current_cpu, void *sem_arg)
   2338 {
   2339 #define FLD(f) abuf->fields.sfmt_addc_m.f
   2340   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2341   const IDESC * UNUSED idesc = abuf->idesc;
   2342   int cycles = 0;
   2343   {
   2344     int referenced = 0;
   2345     int UNUSED insn_referenced = abuf->written;
   2346     INT in_Rd = -1;
   2347     INT in_Rs = -1;
   2348     INT out_Rd = -1;
   2349     in_Rd = FLD (in_Rd);
   2350     in_Rs = FLD (in_Rs);
   2351     referenced |= 1 << 0;
   2352     referenced |= 1 << 1;
   2353     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   2354   }
   2355   return cycles;
   2356 #undef FLD
   2357 }
   2358 
   2359 static int
   2360 model_crisv32_sub_w_r (SIM_CPU *current_cpu, void *sem_arg)
   2361 {
   2362 #define FLD(f) abuf->fields.sfmt_addc_m.f
   2363   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2364   const IDESC * UNUSED idesc = abuf->idesc;
   2365   int cycles = 0;
   2366   {
   2367     int referenced = 0;
   2368     int UNUSED insn_referenced = abuf->written;
   2369     INT in_Rd = -1;
   2370     INT in_Rs = -1;
   2371     INT out_Rd = -1;
   2372     in_Rd = FLD (in_Rd);
   2373     in_Rs = FLD (in_Rs);
   2374     referenced |= 1 << 0;
   2375     referenced |= 1 << 1;
   2376     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   2377   }
   2378   return cycles;
   2379 #undef FLD
   2380 }
   2381 
   2382 static int
   2383 model_crisv32_sub_d_r (SIM_CPU *current_cpu, void *sem_arg)
   2384 {
   2385 #define FLD(f) abuf->fields.sfmt_addc_m.f
   2386   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2387   const IDESC * UNUSED idesc = abuf->idesc;
   2388   int cycles = 0;
   2389   {
   2390     int referenced = 0;
   2391     int UNUSED insn_referenced = abuf->written;
   2392     INT in_Rd = -1;
   2393     INT in_Rs = -1;
   2394     INT out_Rd = -1;
   2395     in_Rd = FLD (in_Rd);
   2396     in_Rs = FLD (in_Rs);
   2397     referenced |= 1 << 0;
   2398     referenced |= 1 << 1;
   2399     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   2400   }
   2401   return cycles;
   2402 #undef FLD
   2403 }
   2404 
   2405 static int
   2406 model_crisv32_sub_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   2407 {
   2408 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2409   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2410   const IDESC * UNUSED idesc = abuf->idesc;
   2411   int cycles = 0;
   2412   {
   2413     int referenced = 0;
   2414     int UNUSED insn_referenced = abuf->written;
   2415     INT in_Rs = -1;
   2416     in_Rs = FLD (in_Rs);
   2417     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   2418     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   2419   }
   2420   {
   2421     int referenced = 0;
   2422     int UNUSED insn_referenced = abuf->written;
   2423     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   2424   }
   2425   {
   2426     int referenced = 0;
   2427     int UNUSED insn_referenced = abuf->written;
   2428     INT in_Rd = -1;
   2429     INT in_Rs = -1;
   2430     INT out_Rd = -1;
   2431     in_Rd = FLD (in_Rd);
   2432     in_Rs = FLD (in_Rs);
   2433     referenced |= 1 << 0;
   2434     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   2435     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   2436   }
   2437   return cycles;
   2438 #undef FLD
   2439 }
   2440 
   2441 static int
   2442 model_crisv32_sub_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   2443 {
   2444 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2445   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2446   const IDESC * UNUSED idesc = abuf->idesc;
   2447   int cycles = 0;
   2448   {
   2449     int referenced = 0;
   2450     int UNUSED insn_referenced = abuf->written;
   2451     INT in_Rs = -1;
   2452     in_Rs = FLD (in_Rs);
   2453     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   2454     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   2455   }
   2456   {
   2457     int referenced = 0;
   2458     int UNUSED insn_referenced = abuf->written;
   2459     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   2460   }
   2461   {
   2462     int referenced = 0;
   2463     int UNUSED insn_referenced = abuf->written;
   2464     INT in_Rd = -1;
   2465     INT in_Rs = -1;
   2466     INT out_Rd = -1;
   2467     in_Rd = FLD (in_Rd);
   2468     in_Rs = FLD (in_Rs);
   2469     referenced |= 1 << 0;
   2470     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   2471     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   2472   }
   2473   return cycles;
   2474 #undef FLD
   2475 }
   2476 
   2477 static int
   2478 model_crisv32_sub_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   2479 {
   2480 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2481   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2482   const IDESC * UNUSED idesc = abuf->idesc;
   2483   int cycles = 0;
   2484   {
   2485     int referenced = 0;
   2486     int UNUSED insn_referenced = abuf->written;
   2487     INT in_Rs = -1;
   2488     in_Rs = FLD (in_Rs);
   2489     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   2490     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   2491   }
   2492   {
   2493     int referenced = 0;
   2494     int UNUSED insn_referenced = abuf->written;
   2495     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   2496   }
   2497   {
   2498     int referenced = 0;
   2499     int UNUSED insn_referenced = abuf->written;
   2500     INT in_Rd = -1;
   2501     INT in_Rs = -1;
   2502     INT out_Rd = -1;
   2503     in_Rd = FLD (in_Rd);
   2504     in_Rs = FLD (in_Rs);
   2505     referenced |= 1 << 0;
   2506     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   2507     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   2508   }
   2509   return cycles;
   2510 #undef FLD
   2511 }
   2512 
   2513 static int
   2514 model_crisv32_subcbr (SIM_CPU *current_cpu, void *sem_arg)
   2515 {
   2516 #define FLD(f) abuf->fields.sfmt_addcbr.f
   2517   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2518   const IDESC * UNUSED idesc = abuf->idesc;
   2519   int cycles = 0;
   2520   {
   2521     int referenced = 0;
   2522     int UNUSED insn_referenced = abuf->written;
   2523     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   2524   }
   2525   {
   2526     int referenced = 0;
   2527     int UNUSED insn_referenced = abuf->written;
   2528     INT in_Rd = -1;
   2529     INT in_Rs = -1;
   2530     INT out_Rd = -1;
   2531     in_Rd = FLD (in_Rd);
   2532     referenced |= 1 << 0;
   2533     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   2534   }
   2535   return cycles;
   2536 #undef FLD
   2537 }
   2538 
   2539 static int
   2540 model_crisv32_subcwr (SIM_CPU *current_cpu, void *sem_arg)
   2541 {
   2542 #define FLD(f) abuf->fields.sfmt_addcwr.f
   2543   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2544   const IDESC * UNUSED idesc = abuf->idesc;
   2545   int cycles = 0;
   2546   {
   2547     int referenced = 0;
   2548     int UNUSED insn_referenced = abuf->written;
   2549     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   2550   }
   2551   {
   2552     int referenced = 0;
   2553     int UNUSED insn_referenced = abuf->written;
   2554     INT in_Rd = -1;
   2555     INT in_Rs = -1;
   2556     INT out_Rd = -1;
   2557     in_Rd = FLD (in_Rd);
   2558     referenced |= 1 << 0;
   2559     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   2560   }
   2561   return cycles;
   2562 #undef FLD
   2563 }
   2564 
   2565 static int
   2566 model_crisv32_subcdr (SIM_CPU *current_cpu, void *sem_arg)
   2567 {
   2568 #define FLD(f) abuf->fields.sfmt_addcdr.f
   2569   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2570   const IDESC * UNUSED idesc = abuf->idesc;
   2571   int cycles = 0;
   2572   {
   2573     int referenced = 0;
   2574     int UNUSED insn_referenced = abuf->written;
   2575     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   2576   }
   2577   {
   2578     int referenced = 0;
   2579     int UNUSED insn_referenced = abuf->written;
   2580     INT in_Rd = -1;
   2581     INT in_Rs = -1;
   2582     INT out_Rd = -1;
   2583     in_Rd = FLD (in_Rd);
   2584     referenced |= 1 << 0;
   2585     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   2586   }
   2587   return cycles;
   2588 #undef FLD
   2589 }
   2590 
   2591 static int
   2592 model_crisv32_subs_b_r (SIM_CPU *current_cpu, void *sem_arg)
   2593 {
   2594 #define FLD(f) abuf->fields.sfmt_addc_m.f
   2595   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2596   const IDESC * UNUSED idesc = abuf->idesc;
   2597   int cycles = 0;
   2598   {
   2599     int referenced = 0;
   2600     int UNUSED insn_referenced = abuf->written;
   2601     INT in_Rd = -1;
   2602     INT in_Rs = -1;
   2603     INT out_Rd = -1;
   2604     in_Rd = FLD (in_Rd);
   2605     in_Rs = FLD (in_Rs);
   2606     referenced |= 1 << 0;
   2607     referenced |= 1 << 1;
   2608     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   2609   }
   2610   return cycles;
   2611 #undef FLD
   2612 }
   2613 
   2614 static int
   2615 model_crisv32_subs_w_r (SIM_CPU *current_cpu, void *sem_arg)
   2616 {
   2617 #define FLD(f) abuf->fields.sfmt_addc_m.f
   2618   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2619   const IDESC * UNUSED idesc = abuf->idesc;
   2620   int cycles = 0;
   2621   {
   2622     int referenced = 0;
   2623     int UNUSED insn_referenced = abuf->written;
   2624     INT in_Rd = -1;
   2625     INT in_Rs = -1;
   2626     INT out_Rd = -1;
   2627     in_Rd = FLD (in_Rd);
   2628     in_Rs = FLD (in_Rs);
   2629     referenced |= 1 << 0;
   2630     referenced |= 1 << 1;
   2631     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   2632   }
   2633   return cycles;
   2634 #undef FLD
   2635 }
   2636 
   2637 static int
   2638 model_crisv32_subs_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   2639 {
   2640 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2641   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2642   const IDESC * UNUSED idesc = abuf->idesc;
   2643   int cycles = 0;
   2644   {
   2645     int referenced = 0;
   2646     int UNUSED insn_referenced = abuf->written;
   2647     INT in_Rs = -1;
   2648     in_Rs = FLD (in_Rs);
   2649     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   2650     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   2651   }
   2652   {
   2653     int referenced = 0;
   2654     int UNUSED insn_referenced = abuf->written;
   2655     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   2656   }
   2657   {
   2658     int referenced = 0;
   2659     int UNUSED insn_referenced = abuf->written;
   2660     INT in_Rd = -1;
   2661     INT in_Rs = -1;
   2662     INT out_Rd = -1;
   2663     in_Rd = FLD (in_Rd);
   2664     in_Rs = FLD (in_Rs);
   2665     referenced |= 1 << 0;
   2666     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   2667     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   2668   }
   2669   return cycles;
   2670 #undef FLD
   2671 }
   2672 
   2673 static int
   2674 model_crisv32_subs_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   2675 {
   2676 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2677   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2678   const IDESC * UNUSED idesc = abuf->idesc;
   2679   int cycles = 0;
   2680   {
   2681     int referenced = 0;
   2682     int UNUSED insn_referenced = abuf->written;
   2683     INT in_Rs = -1;
   2684     in_Rs = FLD (in_Rs);
   2685     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   2686     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   2687   }
   2688   {
   2689     int referenced = 0;
   2690     int UNUSED insn_referenced = abuf->written;
   2691     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   2692   }
   2693   {
   2694     int referenced = 0;
   2695     int UNUSED insn_referenced = abuf->written;
   2696     INT in_Rd = -1;
   2697     INT in_Rs = -1;
   2698     INT out_Rd = -1;
   2699     in_Rd = FLD (in_Rd);
   2700     in_Rs = FLD (in_Rs);
   2701     referenced |= 1 << 0;
   2702     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   2703     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   2704   }
   2705   return cycles;
   2706 #undef FLD
   2707 }
   2708 
   2709 static int
   2710 model_crisv32_subscbr (SIM_CPU *current_cpu, void *sem_arg)
   2711 {
   2712 #define FLD(f) abuf->fields.sfmt_addcbr.f
   2713   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2714   const IDESC * UNUSED idesc = abuf->idesc;
   2715   int cycles = 0;
   2716   {
   2717     int referenced = 0;
   2718     int UNUSED insn_referenced = abuf->written;
   2719     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   2720   }
   2721   {
   2722     int referenced = 0;
   2723     int UNUSED insn_referenced = abuf->written;
   2724     INT in_Rd = -1;
   2725     INT in_Rs = -1;
   2726     INT out_Rd = -1;
   2727     in_Rd = FLD (in_Rd);
   2728     referenced |= 1 << 0;
   2729     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   2730   }
   2731   return cycles;
   2732 #undef FLD
   2733 }
   2734 
   2735 static int
   2736 model_crisv32_subscwr (SIM_CPU *current_cpu, void *sem_arg)
   2737 {
   2738 #define FLD(f) abuf->fields.sfmt_addcwr.f
   2739   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2740   const IDESC * UNUSED idesc = abuf->idesc;
   2741   int cycles = 0;
   2742   {
   2743     int referenced = 0;
   2744     int UNUSED insn_referenced = abuf->written;
   2745     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   2746   }
   2747   {
   2748     int referenced = 0;
   2749     int UNUSED insn_referenced = abuf->written;
   2750     INT in_Rd = -1;
   2751     INT in_Rs = -1;
   2752     INT out_Rd = -1;
   2753     in_Rd = FLD (in_Rd);
   2754     referenced |= 1 << 0;
   2755     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   2756   }
   2757   return cycles;
   2758 #undef FLD
   2759 }
   2760 
   2761 static int
   2762 model_crisv32_subu_b_r (SIM_CPU *current_cpu, void *sem_arg)
   2763 {
   2764 #define FLD(f) abuf->fields.sfmt_addc_m.f
   2765   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2766   const IDESC * UNUSED idesc = abuf->idesc;
   2767   int cycles = 0;
   2768   {
   2769     int referenced = 0;
   2770     int UNUSED insn_referenced = abuf->written;
   2771     INT in_Rd = -1;
   2772     INT in_Rs = -1;
   2773     INT out_Rd = -1;
   2774     in_Rd = FLD (in_Rd);
   2775     in_Rs = FLD (in_Rs);
   2776     referenced |= 1 << 0;
   2777     referenced |= 1 << 1;
   2778     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   2779   }
   2780   return cycles;
   2781 #undef FLD
   2782 }
   2783 
   2784 static int
   2785 model_crisv32_subu_w_r (SIM_CPU *current_cpu, void *sem_arg)
   2786 {
   2787 #define FLD(f) abuf->fields.sfmt_addc_m.f
   2788   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2789   const IDESC * UNUSED idesc = abuf->idesc;
   2790   int cycles = 0;
   2791   {
   2792     int referenced = 0;
   2793     int UNUSED insn_referenced = abuf->written;
   2794     INT in_Rd = -1;
   2795     INT in_Rs = -1;
   2796     INT out_Rd = -1;
   2797     in_Rd = FLD (in_Rd);
   2798     in_Rs = FLD (in_Rs);
   2799     referenced |= 1 << 0;
   2800     referenced |= 1 << 1;
   2801     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   2802   }
   2803   return cycles;
   2804 #undef FLD
   2805 }
   2806 
   2807 static int
   2808 model_crisv32_subu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   2809 {
   2810 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2811   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2812   const IDESC * UNUSED idesc = abuf->idesc;
   2813   int cycles = 0;
   2814   {
   2815     int referenced = 0;
   2816     int UNUSED insn_referenced = abuf->written;
   2817     INT in_Rs = -1;
   2818     in_Rs = FLD (in_Rs);
   2819     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   2820     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   2821   }
   2822   {
   2823     int referenced = 0;
   2824     int UNUSED insn_referenced = abuf->written;
   2825     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   2826   }
   2827   {
   2828     int referenced = 0;
   2829     int UNUSED insn_referenced = abuf->written;
   2830     INT in_Rd = -1;
   2831     INT in_Rs = -1;
   2832     INT out_Rd = -1;
   2833     in_Rd = FLD (in_Rd);
   2834     in_Rs = FLD (in_Rs);
   2835     referenced |= 1 << 0;
   2836     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   2837     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   2838   }
   2839   return cycles;
   2840 #undef FLD
   2841 }
   2842 
   2843 static int
   2844 model_crisv32_subu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   2845 {
   2846 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   2847   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2848   const IDESC * UNUSED idesc = abuf->idesc;
   2849   int cycles = 0;
   2850   {
   2851     int referenced = 0;
   2852     int UNUSED insn_referenced = abuf->written;
   2853     INT in_Rs = -1;
   2854     in_Rs = FLD (in_Rs);
   2855     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   2856     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   2857   }
   2858   {
   2859     int referenced = 0;
   2860     int UNUSED insn_referenced = abuf->written;
   2861     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   2862   }
   2863   {
   2864     int referenced = 0;
   2865     int UNUSED insn_referenced = abuf->written;
   2866     INT in_Rd = -1;
   2867     INT in_Rs = -1;
   2868     INT out_Rd = -1;
   2869     in_Rd = FLD (in_Rd);
   2870     in_Rs = FLD (in_Rs);
   2871     referenced |= 1 << 0;
   2872     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   2873     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   2874   }
   2875   return cycles;
   2876 #undef FLD
   2877 }
   2878 
   2879 static int
   2880 model_crisv32_subucbr (SIM_CPU *current_cpu, void *sem_arg)
   2881 {
   2882 #define FLD(f) abuf->fields.sfmt_addcbr.f
   2883   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2884   const IDESC * UNUSED idesc = abuf->idesc;
   2885   int cycles = 0;
   2886   {
   2887     int referenced = 0;
   2888     int UNUSED insn_referenced = abuf->written;
   2889     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   2890   }
   2891   {
   2892     int referenced = 0;
   2893     int UNUSED insn_referenced = abuf->written;
   2894     INT in_Rd = -1;
   2895     INT in_Rs = -1;
   2896     INT out_Rd = -1;
   2897     in_Rd = FLD (in_Rd);
   2898     referenced |= 1 << 0;
   2899     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   2900   }
   2901   return cycles;
   2902 #undef FLD
   2903 }
   2904 
   2905 static int
   2906 model_crisv32_subucwr (SIM_CPU *current_cpu, void *sem_arg)
   2907 {
   2908 #define FLD(f) abuf->fields.sfmt_addcwr.f
   2909   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2910   const IDESC * UNUSED idesc = abuf->idesc;
   2911   int cycles = 0;
   2912   {
   2913     int referenced = 0;
   2914     int UNUSED insn_referenced = abuf->written;
   2915     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   2916   }
   2917   {
   2918     int referenced = 0;
   2919     int UNUSED insn_referenced = abuf->written;
   2920     INT in_Rd = -1;
   2921     INT in_Rs = -1;
   2922     INT out_Rd = -1;
   2923     in_Rd = FLD (in_Rd);
   2924     referenced |= 1 << 0;
   2925     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   2926   }
   2927   return cycles;
   2928 #undef FLD
   2929 }
   2930 
   2931 static int
   2932 model_crisv32_addc_r (SIM_CPU *current_cpu, void *sem_arg)
   2933 {
   2934 #define FLD(f) abuf->fields.sfmt_addc_m.f
   2935   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2936   const IDESC * UNUSED idesc = abuf->idesc;
   2937   int cycles = 0;
   2938   {
   2939     int referenced = 0;
   2940     int UNUSED insn_referenced = abuf->written;
   2941     INT in_Rd = -1;
   2942     INT in_Rs = -1;
   2943     INT out_Rd = -1;
   2944     in_Rd = FLD (in_Rd);
   2945     in_Rs = FLD (in_Rs);
   2946     referenced |= 1 << 0;
   2947     referenced |= 1 << 1;
   2948     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   2949   }
   2950   return cycles;
   2951 #undef FLD
   2952 }
   2953 
   2954 static int
   2955 model_crisv32_addc_m (SIM_CPU *current_cpu, void *sem_arg)
   2956 {
   2957 #define FLD(f) abuf->fields.sfmt_addc_m.f
   2958   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2959   const IDESC * UNUSED idesc = abuf->idesc;
   2960   int cycles = 0;
   2961   {
   2962     int referenced = 0;
   2963     int UNUSED insn_referenced = abuf->written;
   2964     INT in_Rs = -1;
   2965     in_Rs = FLD (in_Rs);
   2966     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   2967     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   2968   }
   2969   {
   2970     int referenced = 0;
   2971     int UNUSED insn_referenced = abuf->written;
   2972     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   2973   }
   2974   {
   2975     int referenced = 0;
   2976     int UNUSED insn_referenced = abuf->written;
   2977     INT in_Rd = -1;
   2978     INT in_Rs = -1;
   2979     INT out_Rd = -1;
   2980     in_Rd = FLD (in_Rd);
   2981     in_Rs = FLD (in_Rs);
   2982     referenced |= 1 << 0;
   2983     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   2984     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   2985   }
   2986   return cycles;
   2987 #undef FLD
   2988 }
   2989 
   2990 static int
   2991 model_crisv32_addc_c (SIM_CPU *current_cpu, void *sem_arg)
   2992 {
   2993 #define FLD(f) abuf->fields.sfmt_addcdr.f
   2994   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2995   const IDESC * UNUSED idesc = abuf->idesc;
   2996   int cycles = 0;
   2997   {
   2998     int referenced = 0;
   2999     int UNUSED insn_referenced = abuf->written;
   3000     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   3001   }
   3002   {
   3003     int referenced = 0;
   3004     int UNUSED insn_referenced = abuf->written;
   3005     INT in_Rd = -1;
   3006     INT in_Rs = -1;
   3007     INT out_Rd = -1;
   3008     in_Rd = FLD (in_Rd);
   3009     referenced |= 1 << 0;
   3010     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   3011   }
   3012   return cycles;
   3013 #undef FLD
   3014 }
   3015 
   3016 static int
   3017 model_crisv32_lapc_d (SIM_CPU *current_cpu, void *sem_arg)
   3018 {
   3019 #define FLD(f) abuf->fields.sfmt_lapc_d.f
   3020   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3021   const IDESC * UNUSED idesc = abuf->idesc;
   3022   int cycles = 0;
   3023   {
   3024     int referenced = 0;
   3025     int UNUSED insn_referenced = abuf->written;
   3026     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   3027   }
   3028   {
   3029     int referenced = 0;
   3030     int UNUSED insn_referenced = abuf->written;
   3031     INT in_Rd = -1;
   3032     INT in_Rs = -1;
   3033     INT out_Rd = -1;
   3034     out_Rd = FLD (out_Rd);
   3035     referenced |= 1 << 2;
   3036     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   3037   }
   3038   return cycles;
   3039 #undef FLD
   3040 }
   3041 
   3042 static int
   3043 model_crisv32_lapcq (SIM_CPU *current_cpu, void *sem_arg)
   3044 {
   3045 #define FLD(f) abuf->fields.sfmt_lapcq.f
   3046   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3047   const IDESC * UNUSED idesc = abuf->idesc;
   3048   int cycles = 0;
   3049   {
   3050     int referenced = 0;
   3051     int UNUSED insn_referenced = abuf->written;
   3052     INT in_Rd = -1;
   3053     INT in_Rs = -1;
   3054     INT out_Rd = -1;
   3055     out_Rd = FLD (out_Rd);
   3056     referenced |= 1 << 2;
   3057     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   3058   }
   3059   return cycles;
   3060 #undef FLD
   3061 }
   3062 
   3063 static int
   3064 model_crisv32_addi_b_r (SIM_CPU *current_cpu, void *sem_arg)
   3065 {
   3066 #define FLD(f) abuf->fields.sfmt_addc_m.f
   3067   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3068   const IDESC * UNUSED idesc = abuf->idesc;
   3069   int cycles = 0;
   3070   {
   3071     int referenced = 0;
   3072     int UNUSED insn_referenced = abuf->written;
   3073     INT in_Rd = -1;
   3074     INT in_Rs = -1;
   3075     INT out_Rd = -1;
   3076     in_Rd = FLD (in_Rd);
   3077     in_Rs = FLD (in_Rs);
   3078     referenced |= 1 << 0;
   3079     referenced |= 1 << 1;
   3080     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   3081   }
   3082   return cycles;
   3083 #undef FLD
   3084 }
   3085 
   3086 static int
   3087 model_crisv32_addi_w_r (SIM_CPU *current_cpu, void *sem_arg)
   3088 {
   3089 #define FLD(f) abuf->fields.sfmt_addc_m.f
   3090   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3091   const IDESC * UNUSED idesc = abuf->idesc;
   3092   int cycles = 0;
   3093   {
   3094     int referenced = 0;
   3095     int UNUSED insn_referenced = abuf->written;
   3096     INT in_Rd = -1;
   3097     INT in_Rs = -1;
   3098     INT out_Rd = -1;
   3099     in_Rd = FLD (in_Rd);
   3100     in_Rs = FLD (in_Rs);
   3101     referenced |= 1 << 0;
   3102     referenced |= 1 << 1;
   3103     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   3104   }
   3105   return cycles;
   3106 #undef FLD
   3107 }
   3108 
   3109 static int
   3110 model_crisv32_addi_d_r (SIM_CPU *current_cpu, void *sem_arg)
   3111 {
   3112 #define FLD(f) abuf->fields.sfmt_addc_m.f
   3113   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3114   const IDESC * UNUSED idesc = abuf->idesc;
   3115   int cycles = 0;
   3116   {
   3117     int referenced = 0;
   3118     int UNUSED insn_referenced = abuf->written;
   3119     INT in_Rd = -1;
   3120     INT in_Rs = -1;
   3121     INT out_Rd = -1;
   3122     in_Rd = FLD (in_Rd);
   3123     in_Rs = FLD (in_Rs);
   3124     referenced |= 1 << 0;
   3125     referenced |= 1 << 1;
   3126     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   3127   }
   3128   return cycles;
   3129 #undef FLD
   3130 }
   3131 
   3132 static int
   3133 model_crisv32_neg_b_r (SIM_CPU *current_cpu, void *sem_arg)
   3134 {
   3135 #define FLD(f) abuf->fields.sfmt_addc_m.f
   3136   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3137   const IDESC * UNUSED idesc = abuf->idesc;
   3138   int cycles = 0;
   3139   {
   3140     int referenced = 0;
   3141     int UNUSED insn_referenced = abuf->written;
   3142     INT in_Rd = -1;
   3143     INT in_Rs = -1;
   3144     INT out_Rd = -1;
   3145     in_Rs = FLD (in_Rs);
   3146     referenced |= 1 << 1;
   3147     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   3148   }
   3149   return cycles;
   3150 #undef FLD
   3151 }
   3152 
   3153 static int
   3154 model_crisv32_neg_w_r (SIM_CPU *current_cpu, void *sem_arg)
   3155 {
   3156 #define FLD(f) abuf->fields.sfmt_addc_m.f
   3157   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3158   const IDESC * UNUSED idesc = abuf->idesc;
   3159   int cycles = 0;
   3160   {
   3161     int referenced = 0;
   3162     int UNUSED insn_referenced = abuf->written;
   3163     INT in_Rd = -1;
   3164     INT in_Rs = -1;
   3165     INT out_Rd = -1;
   3166     in_Rs = FLD (in_Rs);
   3167     referenced |= 1 << 1;
   3168     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   3169   }
   3170   return cycles;
   3171 #undef FLD
   3172 }
   3173 
   3174 static int
   3175 model_crisv32_neg_d_r (SIM_CPU *current_cpu, void *sem_arg)
   3176 {
   3177 #define FLD(f) abuf->fields.sfmt_addc_m.f
   3178   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3179   const IDESC * UNUSED idesc = abuf->idesc;
   3180   int cycles = 0;
   3181   {
   3182     int referenced = 0;
   3183     int UNUSED insn_referenced = abuf->written;
   3184     INT in_Rd = -1;
   3185     INT in_Rs = -1;
   3186     INT out_Rd = -1;
   3187     in_Rs = FLD (in_Rs);
   3188     referenced |= 1 << 1;
   3189     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   3190   }
   3191   return cycles;
   3192 #undef FLD
   3193 }
   3194 
   3195 static int
   3196 model_crisv32_test_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   3197 {
   3198 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   3199   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3200   const IDESC * UNUSED idesc = abuf->idesc;
   3201   int cycles = 0;
   3202   {
   3203     int referenced = 0;
   3204     int UNUSED insn_referenced = abuf->written;
   3205     INT in_Rs = -1;
   3206     in_Rs = FLD (in_Rs);
   3207     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   3208     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   3209   }
   3210   {
   3211     int referenced = 0;
   3212     int UNUSED insn_referenced = abuf->written;
   3213     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   3214   }
   3215   {
   3216     int referenced = 0;
   3217     int UNUSED insn_referenced = abuf->written;
   3218     INT in_Rd = -1;
   3219     INT in_Rs = -1;
   3220     INT out_Rd = -1;
   3221     in_Rs = FLD (in_Rs);
   3222     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
   3223     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   3224   }
   3225   return cycles;
   3226 #undef FLD
   3227 }
   3228 
   3229 static int
   3230 model_crisv32_test_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   3231 {
   3232 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   3233   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3234   const IDESC * UNUSED idesc = abuf->idesc;
   3235   int cycles = 0;
   3236   {
   3237     int referenced = 0;
   3238     int UNUSED insn_referenced = abuf->written;
   3239     INT in_Rs = -1;
   3240     in_Rs = FLD (in_Rs);
   3241     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   3242     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   3243   }
   3244   {
   3245     int referenced = 0;
   3246     int UNUSED insn_referenced = abuf->written;
   3247     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   3248   }
   3249   {
   3250     int referenced = 0;
   3251     int UNUSED insn_referenced = abuf->written;
   3252     INT in_Rd = -1;
   3253     INT in_Rs = -1;
   3254     INT out_Rd = -1;
   3255     in_Rs = FLD (in_Rs);
   3256     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
   3257     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   3258   }
   3259   return cycles;
   3260 #undef FLD
   3261 }
   3262 
   3263 static int
   3264 model_crisv32_test_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   3265 {
   3266 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   3267   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3268   const IDESC * UNUSED idesc = abuf->idesc;
   3269   int cycles = 0;
   3270   {
   3271     int referenced = 0;
   3272     int UNUSED insn_referenced = abuf->written;
   3273     INT in_Rs = -1;
   3274     in_Rs = FLD (in_Rs);
   3275     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   3276     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   3277   }
   3278   {
   3279     int referenced = 0;
   3280     int UNUSED insn_referenced = abuf->written;
   3281     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   3282   }
   3283   {
   3284     int referenced = 0;
   3285     int UNUSED insn_referenced = abuf->written;
   3286     INT in_Rd = -1;
   3287     INT in_Rs = -1;
   3288     INT out_Rd = -1;
   3289     in_Rs = FLD (in_Rs);
   3290     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
   3291     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   3292   }
   3293   return cycles;
   3294 #undef FLD
   3295 }
   3296 
   3297 static int
   3298 model_crisv32_move_r_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   3299 {
   3300 #define FLD(f) abuf->fields.sfmt_addc_m.f
   3301   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3302   const IDESC * UNUSED idesc = abuf->idesc;
   3303   int cycles = 0;
   3304   {
   3305     int referenced = 0;
   3306     int UNUSED insn_referenced = abuf->written;
   3307     INT in_Rs = -1;
   3308     in_Rs = FLD (in_Rs);
   3309     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   3310     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   3311   }
   3312   {
   3313     int referenced = 0;
   3314     int UNUSED insn_referenced = abuf->written;
   3315     INT in_Rd = -1;
   3316     INT in_Rs = -1;
   3317     INT out_Rd = -1;
   3318     in_Rd = FLD (in_Rd);
   3319     in_Rs = FLD (in_Rs);
   3320     referenced |= 1 << 0;
   3321     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   3322     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   3323   }
   3324   {
   3325     int referenced = 0;
   3326     int UNUSED insn_referenced = abuf->written;
   3327     cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced);
   3328   }
   3329   return cycles;
   3330 #undef FLD
   3331 }
   3332 
   3333 static int
   3334 model_crisv32_move_r_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   3335 {
   3336 #define FLD(f) abuf->fields.sfmt_addc_m.f
   3337   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3338   const IDESC * UNUSED idesc = abuf->idesc;
   3339   int cycles = 0;
   3340   {
   3341     int referenced = 0;
   3342     int UNUSED insn_referenced = abuf->written;
   3343     INT in_Rs = -1;
   3344     in_Rs = FLD (in_Rs);
   3345     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   3346     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   3347   }
   3348   {
   3349     int referenced = 0;
   3350     int UNUSED insn_referenced = abuf->written;
   3351     INT in_Rd = -1;
   3352     INT in_Rs = -1;
   3353     INT out_Rd = -1;
   3354     in_Rd = FLD (in_Rd);
   3355     in_Rs = FLD (in_Rs);
   3356     referenced |= 1 << 0;
   3357     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   3358     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   3359   }
   3360   {
   3361     int referenced = 0;
   3362     int UNUSED insn_referenced = abuf->written;
   3363     cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced);
   3364   }
   3365   return cycles;
   3366 #undef FLD
   3367 }
   3368 
   3369 static int
   3370 model_crisv32_move_r_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   3371 {
   3372 #define FLD(f) abuf->fields.sfmt_addc_m.f
   3373   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3374   const IDESC * UNUSED idesc = abuf->idesc;
   3375   int cycles = 0;
   3376   {
   3377     int referenced = 0;
   3378     int UNUSED insn_referenced = abuf->written;
   3379     INT in_Rs = -1;
   3380     in_Rs = FLD (in_Rs);
   3381     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   3382     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   3383   }
   3384   {
   3385     int referenced = 0;
   3386     int UNUSED insn_referenced = abuf->written;
   3387     INT in_Rd = -1;
   3388     INT in_Rs = -1;
   3389     INT out_Rd = -1;
   3390     in_Rd = FLD (in_Rd);
   3391     in_Rs = FLD (in_Rs);
   3392     referenced |= 1 << 0;
   3393     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   3394     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   3395   }
   3396   {
   3397     int referenced = 0;
   3398     int UNUSED insn_referenced = abuf->written;
   3399     cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced);
   3400   }
   3401   return cycles;
   3402 #undef FLD
   3403 }
   3404 
   3405 static int
   3406 model_crisv32_muls_b (SIM_CPU *current_cpu, void *sem_arg)
   3407 {
   3408 #define FLD(f) abuf->fields.sfmt_muls_b.f
   3409   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3410   const IDESC * UNUSED idesc = abuf->idesc;
   3411   int cycles = 0;
   3412   {
   3413     int referenced = 0;
   3414     int UNUSED insn_referenced = abuf->written;
   3415     INT in_Rs = -1;
   3416     INT in_Rd = -1;
   3417     in_Rs = FLD (in_Rs);
   3418     in_Rd = FLD (in_Rd);
   3419     referenced |= 1 << 0;
   3420     referenced |= 1 << 1;
   3421     cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
   3422   }
   3423   {
   3424     int referenced = 0;
   3425     int UNUSED insn_referenced = abuf->written;
   3426     INT in_Rd = -1;
   3427     INT in_Rs = -1;
   3428     INT out_Rd = -1;
   3429     in_Rd = FLD (in_Rd);
   3430     in_Rs = FLD (in_Rs);
   3431     out_Rd = FLD (out_Rd);
   3432     referenced |= 1 << 0;
   3433     referenced |= 1 << 1;
   3434     referenced |= 1 << 2;
   3435     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   3436   }
   3437   return cycles;
   3438 #undef FLD
   3439 }
   3440 
   3441 static int
   3442 model_crisv32_muls_w (SIM_CPU *current_cpu, void *sem_arg)
   3443 {
   3444 #define FLD(f) abuf->fields.sfmt_muls_b.f
   3445   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3446   const IDESC * UNUSED idesc = abuf->idesc;
   3447   int cycles = 0;
   3448   {
   3449     int referenced = 0;
   3450     int UNUSED insn_referenced = abuf->written;
   3451     INT in_Rs = -1;
   3452     INT in_Rd = -1;
   3453     in_Rs = FLD (in_Rs);
   3454     in_Rd = FLD (in_Rd);
   3455     referenced |= 1 << 0;
   3456     referenced |= 1 << 1;
   3457     cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
   3458   }
   3459   {
   3460     int referenced = 0;
   3461     int UNUSED insn_referenced = abuf->written;
   3462     INT in_Rd = -1;
   3463     INT in_Rs = -1;
   3464     INT out_Rd = -1;
   3465     in_Rd = FLD (in_Rd);
   3466     in_Rs = FLD (in_Rs);
   3467     out_Rd = FLD (out_Rd);
   3468     referenced |= 1 << 0;
   3469     referenced |= 1 << 1;
   3470     referenced |= 1 << 2;
   3471     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   3472   }
   3473   return cycles;
   3474 #undef FLD
   3475 }
   3476 
   3477 static int
   3478 model_crisv32_muls_d (SIM_CPU *current_cpu, void *sem_arg)
   3479 {
   3480 #define FLD(f) abuf->fields.sfmt_muls_b.f
   3481   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3482   const IDESC * UNUSED idesc = abuf->idesc;
   3483   int cycles = 0;
   3484   {
   3485     int referenced = 0;
   3486     int UNUSED insn_referenced = abuf->written;
   3487     INT in_Rs = -1;
   3488     INT in_Rd = -1;
   3489     in_Rs = FLD (in_Rs);
   3490     in_Rd = FLD (in_Rd);
   3491     referenced |= 1 << 0;
   3492     referenced |= 1 << 1;
   3493     cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
   3494   }
   3495   {
   3496     int referenced = 0;
   3497     int UNUSED insn_referenced = abuf->written;
   3498     INT in_Rd = -1;
   3499     INT in_Rs = -1;
   3500     INT out_Rd = -1;
   3501     in_Rd = FLD (in_Rd);
   3502     in_Rs = FLD (in_Rs);
   3503     out_Rd = FLD (out_Rd);
   3504     referenced |= 1 << 0;
   3505     referenced |= 1 << 1;
   3506     referenced |= 1 << 2;
   3507     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   3508   }
   3509   return cycles;
   3510 #undef FLD
   3511 }
   3512 
   3513 static int
   3514 model_crisv32_mulu_b (SIM_CPU *current_cpu, void *sem_arg)
   3515 {
   3516 #define FLD(f) abuf->fields.sfmt_muls_b.f
   3517   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3518   const IDESC * UNUSED idesc = abuf->idesc;
   3519   int cycles = 0;
   3520   {
   3521     int referenced = 0;
   3522     int UNUSED insn_referenced = abuf->written;
   3523     INT in_Rs = -1;
   3524     INT in_Rd = -1;
   3525     in_Rs = FLD (in_Rs);
   3526     in_Rd = FLD (in_Rd);
   3527     referenced |= 1 << 0;
   3528     referenced |= 1 << 1;
   3529     cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
   3530   }
   3531   {
   3532     int referenced = 0;
   3533     int UNUSED insn_referenced = abuf->written;
   3534     INT in_Rd = -1;
   3535     INT in_Rs = -1;
   3536     INT out_Rd = -1;
   3537     in_Rd = FLD (in_Rd);
   3538     in_Rs = FLD (in_Rs);
   3539     out_Rd = FLD (out_Rd);
   3540     referenced |= 1 << 0;
   3541     referenced |= 1 << 1;
   3542     referenced |= 1 << 2;
   3543     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   3544   }
   3545   return cycles;
   3546 #undef FLD
   3547 }
   3548 
   3549 static int
   3550 model_crisv32_mulu_w (SIM_CPU *current_cpu, void *sem_arg)
   3551 {
   3552 #define FLD(f) abuf->fields.sfmt_muls_b.f
   3553   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3554   const IDESC * UNUSED idesc = abuf->idesc;
   3555   int cycles = 0;
   3556   {
   3557     int referenced = 0;
   3558     int UNUSED insn_referenced = abuf->written;
   3559     INT in_Rs = -1;
   3560     INT in_Rd = -1;
   3561     in_Rs = FLD (in_Rs);
   3562     in_Rd = FLD (in_Rd);
   3563     referenced |= 1 << 0;
   3564     referenced |= 1 << 1;
   3565     cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
   3566   }
   3567   {
   3568     int referenced = 0;
   3569     int UNUSED insn_referenced = abuf->written;
   3570     INT in_Rd = -1;
   3571     INT in_Rs = -1;
   3572     INT out_Rd = -1;
   3573     in_Rd = FLD (in_Rd);
   3574     in_Rs = FLD (in_Rs);
   3575     out_Rd = FLD (out_Rd);
   3576     referenced |= 1 << 0;
   3577     referenced |= 1 << 1;
   3578     referenced |= 1 << 2;
   3579     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   3580   }
   3581   return cycles;
   3582 #undef FLD
   3583 }
   3584 
   3585 static int
   3586 model_crisv32_mulu_d (SIM_CPU *current_cpu, void *sem_arg)
   3587 {
   3588 #define FLD(f) abuf->fields.sfmt_muls_b.f
   3589   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3590   const IDESC * UNUSED idesc = abuf->idesc;
   3591   int cycles = 0;
   3592   {
   3593     int referenced = 0;
   3594     int UNUSED insn_referenced = abuf->written;
   3595     INT in_Rs = -1;
   3596     INT in_Rd = -1;
   3597     in_Rs = FLD (in_Rs);
   3598     in_Rd = FLD (in_Rd);
   3599     referenced |= 1 << 0;
   3600     referenced |= 1 << 1;
   3601     cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
   3602   }
   3603   {
   3604     int referenced = 0;
   3605     int UNUSED insn_referenced = abuf->written;
   3606     INT in_Rd = -1;
   3607     INT in_Rs = -1;
   3608     INT out_Rd = -1;
   3609     in_Rd = FLD (in_Rd);
   3610     in_Rs = FLD (in_Rs);
   3611     out_Rd = FLD (out_Rd);
   3612     referenced |= 1 << 0;
   3613     referenced |= 1 << 1;
   3614     referenced |= 1 << 2;
   3615     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   3616   }
   3617   return cycles;
   3618 #undef FLD
   3619 }
   3620 
   3621 static int
   3622 model_crisv32_mcp (SIM_CPU *current_cpu, void *sem_arg)
   3623 {
   3624 #define FLD(f) abuf->fields.sfmt_mcp.f
   3625   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3626   const IDESC * UNUSED idesc = abuf->idesc;
   3627   int cycles = 0;
   3628   {
   3629     int referenced = 0;
   3630     int UNUSED insn_referenced = abuf->written;
   3631     INT in_Rd = -1;
   3632     INT in_Rs = -1;
   3633     INT out_Rd = -1;
   3634     in_Rs = FLD (in_Rs);
   3635     referenced |= 1 << 1;
   3636     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   3637   }
   3638   return cycles;
   3639 #undef FLD
   3640 }
   3641 
   3642 static int
   3643 model_crisv32_dstep (SIM_CPU *current_cpu, void *sem_arg)
   3644 {
   3645 #define FLD(f) abuf->fields.sfmt_muls_b.f
   3646   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3647   const IDESC * UNUSED idesc = abuf->idesc;
   3648   int cycles = 0;
   3649   {
   3650     int referenced = 0;
   3651     int UNUSED insn_referenced = abuf->written;
   3652     INT in_Rd = -1;
   3653     INT in_Rs = -1;
   3654     INT out_Rd = -1;
   3655     in_Rd = FLD (in_Rd);
   3656     in_Rs = FLD (in_Rs);
   3657     out_Rd = FLD (out_Rd);
   3658     referenced |= 1 << 0;
   3659     referenced |= 1 << 1;
   3660     referenced |= 1 << 2;
   3661     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   3662   }
   3663   return cycles;
   3664 #undef FLD
   3665 }
   3666 
   3667 static int
   3668 model_crisv32_abs (SIM_CPU *current_cpu, void *sem_arg)
   3669 {
   3670 #define FLD(f) abuf->fields.sfmt_muls_b.f
   3671   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3672   const IDESC * UNUSED idesc = abuf->idesc;
   3673   int cycles = 0;
   3674   {
   3675     int referenced = 0;
   3676     int UNUSED insn_referenced = abuf->written;
   3677     INT in_Rd = -1;
   3678     INT in_Rs = -1;
   3679     INT out_Rd = -1;
   3680     in_Rs = FLD (in_Rs);
   3681     out_Rd = FLD (out_Rd);
   3682     referenced |= 1 << 1;
   3683     referenced |= 1 << 2;
   3684     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   3685   }
   3686   return cycles;
   3687 #undef FLD
   3688 }
   3689 
   3690 static int
   3691 model_crisv32_and_b_r (SIM_CPU *current_cpu, void *sem_arg)
   3692 {
   3693 #define FLD(f) abuf->fields.sfmt_addc_m.f
   3694   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3695   const IDESC * UNUSED idesc = abuf->idesc;
   3696   int cycles = 0;
   3697   {
   3698     int referenced = 0;
   3699     int UNUSED insn_referenced = abuf->written;
   3700     INT in_Rd = -1;
   3701     INT in_Rs = -1;
   3702     INT out_Rd = -1;
   3703     in_Rd = FLD (in_Rd);
   3704     in_Rs = FLD (in_Rs);
   3705     referenced |= 1 << 0;
   3706     referenced |= 1 << 1;
   3707     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   3708   }
   3709   return cycles;
   3710 #undef FLD
   3711 }
   3712 
   3713 static int
   3714 model_crisv32_and_w_r (SIM_CPU *current_cpu, void *sem_arg)
   3715 {
   3716 #define FLD(f) abuf->fields.sfmt_addc_m.f
   3717   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3718   const IDESC * UNUSED idesc = abuf->idesc;
   3719   int cycles = 0;
   3720   {
   3721     int referenced = 0;
   3722     int UNUSED insn_referenced = abuf->written;
   3723     INT in_Rd = -1;
   3724     INT in_Rs = -1;
   3725     INT out_Rd = -1;
   3726     in_Rd = FLD (in_Rd);
   3727     in_Rs = FLD (in_Rs);
   3728     referenced |= 1 << 0;
   3729     referenced |= 1 << 1;
   3730     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   3731   }
   3732   return cycles;
   3733 #undef FLD
   3734 }
   3735 
   3736 static int
   3737 model_crisv32_and_d_r (SIM_CPU *current_cpu, void *sem_arg)
   3738 {
   3739 #define FLD(f) abuf->fields.sfmt_addc_m.f
   3740   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3741   const IDESC * UNUSED idesc = abuf->idesc;
   3742   int cycles = 0;
   3743   {
   3744     int referenced = 0;
   3745     int UNUSED insn_referenced = abuf->written;
   3746     INT in_Rd = -1;
   3747     INT in_Rs = -1;
   3748     INT out_Rd = -1;
   3749     in_Rd = FLD (in_Rd);
   3750     in_Rs = FLD (in_Rs);
   3751     referenced |= 1 << 0;
   3752     referenced |= 1 << 1;
   3753     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   3754   }
   3755   return cycles;
   3756 #undef FLD
   3757 }
   3758 
   3759 static int
   3760 model_crisv32_and_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   3761 {
   3762 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   3763   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3764   const IDESC * UNUSED idesc = abuf->idesc;
   3765   int cycles = 0;
   3766   {
   3767     int referenced = 0;
   3768     int UNUSED insn_referenced = abuf->written;
   3769     INT in_Rs = -1;
   3770     in_Rs = FLD (in_Rs);
   3771     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   3772     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   3773   }
   3774   {
   3775     int referenced = 0;
   3776     int UNUSED insn_referenced = abuf->written;
   3777     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   3778   }
   3779   {
   3780     int referenced = 0;
   3781     int UNUSED insn_referenced = abuf->written;
   3782     INT in_Rd = -1;
   3783     INT in_Rs = -1;
   3784     INT out_Rd = -1;
   3785     in_Rd = FLD (in_Rd);
   3786     in_Rs = FLD (in_Rs);
   3787     referenced |= 1 << 0;
   3788     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   3789     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   3790   }
   3791   return cycles;
   3792 #undef FLD
   3793 }
   3794 
   3795 static int
   3796 model_crisv32_and_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   3797 {
   3798 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   3799   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3800   const IDESC * UNUSED idesc = abuf->idesc;
   3801   int cycles = 0;
   3802   {
   3803     int referenced = 0;
   3804     int UNUSED insn_referenced = abuf->written;
   3805     INT in_Rs = -1;
   3806     in_Rs = FLD (in_Rs);
   3807     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   3808     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   3809   }
   3810   {
   3811     int referenced = 0;
   3812     int UNUSED insn_referenced = abuf->written;
   3813     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   3814   }
   3815   {
   3816     int referenced = 0;
   3817     int UNUSED insn_referenced = abuf->written;
   3818     INT in_Rd = -1;
   3819     INT in_Rs = -1;
   3820     INT out_Rd = -1;
   3821     in_Rd = FLD (in_Rd);
   3822     in_Rs = FLD (in_Rs);
   3823     referenced |= 1 << 0;
   3824     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   3825     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   3826   }
   3827   return cycles;
   3828 #undef FLD
   3829 }
   3830 
   3831 static int
   3832 model_crisv32_and_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   3833 {
   3834 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   3835   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3836   const IDESC * UNUSED idesc = abuf->idesc;
   3837   int cycles = 0;
   3838   {
   3839     int referenced = 0;
   3840     int UNUSED insn_referenced = abuf->written;
   3841     INT in_Rs = -1;
   3842     in_Rs = FLD (in_Rs);
   3843     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   3844     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   3845   }
   3846   {
   3847     int referenced = 0;
   3848     int UNUSED insn_referenced = abuf->written;
   3849     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   3850   }
   3851   {
   3852     int referenced = 0;
   3853     int UNUSED insn_referenced = abuf->written;
   3854     INT in_Rd = -1;
   3855     INT in_Rs = -1;
   3856     INT out_Rd = -1;
   3857     in_Rd = FLD (in_Rd);
   3858     in_Rs = FLD (in_Rs);
   3859     referenced |= 1 << 0;
   3860     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   3861     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   3862   }
   3863   return cycles;
   3864 #undef FLD
   3865 }
   3866 
   3867 static int
   3868 model_crisv32_andcbr (SIM_CPU *current_cpu, void *sem_arg)
   3869 {
   3870 #define FLD(f) abuf->fields.sfmt_addcbr.f
   3871   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3872   const IDESC * UNUSED idesc = abuf->idesc;
   3873   int cycles = 0;
   3874   {
   3875     int referenced = 0;
   3876     int UNUSED insn_referenced = abuf->written;
   3877     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   3878   }
   3879   {
   3880     int referenced = 0;
   3881     int UNUSED insn_referenced = abuf->written;
   3882     INT in_Rd = -1;
   3883     INT in_Rs = -1;
   3884     INT out_Rd = -1;
   3885     in_Rd = FLD (in_Rd);
   3886     referenced |= 1 << 0;
   3887     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   3888   }
   3889   return cycles;
   3890 #undef FLD
   3891 }
   3892 
   3893 static int
   3894 model_crisv32_andcwr (SIM_CPU *current_cpu, void *sem_arg)
   3895 {
   3896 #define FLD(f) abuf->fields.sfmt_addcwr.f
   3897   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3898   const IDESC * UNUSED idesc = abuf->idesc;
   3899   int cycles = 0;
   3900   {
   3901     int referenced = 0;
   3902     int UNUSED insn_referenced = abuf->written;
   3903     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   3904   }
   3905   {
   3906     int referenced = 0;
   3907     int UNUSED insn_referenced = abuf->written;
   3908     INT in_Rd = -1;
   3909     INT in_Rs = -1;
   3910     INT out_Rd = -1;
   3911     in_Rd = FLD (in_Rd);
   3912     referenced |= 1 << 0;
   3913     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   3914   }
   3915   return cycles;
   3916 #undef FLD
   3917 }
   3918 
   3919 static int
   3920 model_crisv32_andcdr (SIM_CPU *current_cpu, void *sem_arg)
   3921 {
   3922 #define FLD(f) abuf->fields.sfmt_addcdr.f
   3923   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3924   const IDESC * UNUSED idesc = abuf->idesc;
   3925   int cycles = 0;
   3926   {
   3927     int referenced = 0;
   3928     int UNUSED insn_referenced = abuf->written;
   3929     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   3930   }
   3931   {
   3932     int referenced = 0;
   3933     int UNUSED insn_referenced = abuf->written;
   3934     INT in_Rd = -1;
   3935     INT in_Rs = -1;
   3936     INT out_Rd = -1;
   3937     in_Rd = FLD (in_Rd);
   3938     referenced |= 1 << 0;
   3939     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   3940   }
   3941   return cycles;
   3942 #undef FLD
   3943 }
   3944 
   3945 static int
   3946 model_crisv32_andq (SIM_CPU *current_cpu, void *sem_arg)
   3947 {
   3948 #define FLD(f) abuf->fields.sfmt_andq.f
   3949   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3950   const IDESC * UNUSED idesc = abuf->idesc;
   3951   int cycles = 0;
   3952   {
   3953     int referenced = 0;
   3954     int UNUSED insn_referenced = abuf->written;
   3955     INT in_Rd = -1;
   3956     INT in_Rs = -1;
   3957     INT out_Rd = -1;
   3958     in_Rd = FLD (in_Rd);
   3959     referenced |= 1 << 0;
   3960     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   3961   }
   3962   return cycles;
   3963 #undef FLD
   3964 }
   3965 
   3966 static int
   3967 model_crisv32_orr_b_r (SIM_CPU *current_cpu, void *sem_arg)
   3968 {
   3969 #define FLD(f) abuf->fields.sfmt_addc_m.f
   3970   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3971   const IDESC * UNUSED idesc = abuf->idesc;
   3972   int cycles = 0;
   3973   {
   3974     int referenced = 0;
   3975     int UNUSED insn_referenced = abuf->written;
   3976     INT in_Rd = -1;
   3977     INT in_Rs = -1;
   3978     INT out_Rd = -1;
   3979     in_Rd = FLD (in_Rd);
   3980     in_Rs = FLD (in_Rs);
   3981     referenced |= 1 << 0;
   3982     referenced |= 1 << 1;
   3983     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   3984   }
   3985   return cycles;
   3986 #undef FLD
   3987 }
   3988 
   3989 static int
   3990 model_crisv32_orr_w_r (SIM_CPU *current_cpu, void *sem_arg)
   3991 {
   3992 #define FLD(f) abuf->fields.sfmt_addc_m.f
   3993   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   3994   const IDESC * UNUSED idesc = abuf->idesc;
   3995   int cycles = 0;
   3996   {
   3997     int referenced = 0;
   3998     int UNUSED insn_referenced = abuf->written;
   3999     INT in_Rd = -1;
   4000     INT in_Rs = -1;
   4001     INT out_Rd = -1;
   4002     in_Rd = FLD (in_Rd);
   4003     in_Rs = FLD (in_Rs);
   4004     referenced |= 1 << 0;
   4005     referenced |= 1 << 1;
   4006     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4007   }
   4008   return cycles;
   4009 #undef FLD
   4010 }
   4011 
   4012 static int
   4013 model_crisv32_orr_d_r (SIM_CPU *current_cpu, void *sem_arg)
   4014 {
   4015 #define FLD(f) abuf->fields.sfmt_addc_m.f
   4016   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4017   const IDESC * UNUSED idesc = abuf->idesc;
   4018   int cycles = 0;
   4019   {
   4020     int referenced = 0;
   4021     int UNUSED insn_referenced = abuf->written;
   4022     INT in_Rd = -1;
   4023     INT in_Rs = -1;
   4024     INT out_Rd = -1;
   4025     in_Rd = FLD (in_Rd);
   4026     in_Rs = FLD (in_Rs);
   4027     referenced |= 1 << 0;
   4028     referenced |= 1 << 1;
   4029     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4030   }
   4031   return cycles;
   4032 #undef FLD
   4033 }
   4034 
   4035 static int
   4036 model_crisv32_or_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   4037 {
   4038 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   4039   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4040   const IDESC * UNUSED idesc = abuf->idesc;
   4041   int cycles = 0;
   4042   {
   4043     int referenced = 0;
   4044     int UNUSED insn_referenced = abuf->written;
   4045     INT in_Rs = -1;
   4046     in_Rs = FLD (in_Rs);
   4047     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   4048     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   4049   }
   4050   {
   4051     int referenced = 0;
   4052     int UNUSED insn_referenced = abuf->written;
   4053     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   4054   }
   4055   {
   4056     int referenced = 0;
   4057     int UNUSED insn_referenced = abuf->written;
   4058     INT in_Rd = -1;
   4059     INT in_Rs = -1;
   4060     INT out_Rd = -1;
   4061     in_Rd = FLD (in_Rd);
   4062     in_Rs = FLD (in_Rs);
   4063     referenced |= 1 << 0;
   4064     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   4065     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   4066   }
   4067   return cycles;
   4068 #undef FLD
   4069 }
   4070 
   4071 static int
   4072 model_crisv32_or_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   4073 {
   4074 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   4075   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4076   const IDESC * UNUSED idesc = abuf->idesc;
   4077   int cycles = 0;
   4078   {
   4079     int referenced = 0;
   4080     int UNUSED insn_referenced = abuf->written;
   4081     INT in_Rs = -1;
   4082     in_Rs = FLD (in_Rs);
   4083     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   4084     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   4085   }
   4086   {
   4087     int referenced = 0;
   4088     int UNUSED insn_referenced = abuf->written;
   4089     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   4090   }
   4091   {
   4092     int referenced = 0;
   4093     int UNUSED insn_referenced = abuf->written;
   4094     INT in_Rd = -1;
   4095     INT in_Rs = -1;
   4096     INT out_Rd = -1;
   4097     in_Rd = FLD (in_Rd);
   4098     in_Rs = FLD (in_Rs);
   4099     referenced |= 1 << 0;
   4100     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   4101     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   4102   }
   4103   return cycles;
   4104 #undef FLD
   4105 }
   4106 
   4107 static int
   4108 model_crisv32_or_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   4109 {
   4110 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
   4111   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4112   const IDESC * UNUSED idesc = abuf->idesc;
   4113   int cycles = 0;
   4114   {
   4115     int referenced = 0;
   4116     int UNUSED insn_referenced = abuf->written;
   4117     INT in_Rs = -1;
   4118     in_Rs = FLD (in_Rs);
   4119     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   4120     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   4121   }
   4122   {
   4123     int referenced = 0;
   4124     int UNUSED insn_referenced = abuf->written;
   4125     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   4126   }
   4127   {
   4128     int referenced = 0;
   4129     int UNUSED insn_referenced = abuf->written;
   4130     INT in_Rd = -1;
   4131     INT in_Rs = -1;
   4132     INT out_Rd = -1;
   4133     in_Rd = FLD (in_Rd);
   4134     in_Rs = FLD (in_Rs);
   4135     referenced |= 1 << 0;
   4136     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   4137     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   4138   }
   4139   return cycles;
   4140 #undef FLD
   4141 }
   4142 
   4143 static int
   4144 model_crisv32_orcbr (SIM_CPU *current_cpu, void *sem_arg)
   4145 {
   4146 #define FLD(f) abuf->fields.sfmt_addcbr.f
   4147   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4148   const IDESC * UNUSED idesc = abuf->idesc;
   4149   int cycles = 0;
   4150   {
   4151     int referenced = 0;
   4152     int UNUSED insn_referenced = abuf->written;
   4153     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   4154   }
   4155   {
   4156     int referenced = 0;
   4157     int UNUSED insn_referenced = abuf->written;
   4158     INT in_Rd = -1;
   4159     INT in_Rs = -1;
   4160     INT out_Rd = -1;
   4161     in_Rd = FLD (in_Rd);
   4162     referenced |= 1 << 0;
   4163     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   4164   }
   4165   return cycles;
   4166 #undef FLD
   4167 }
   4168 
   4169 static int
   4170 model_crisv32_orcwr (SIM_CPU *current_cpu, void *sem_arg)
   4171 {
   4172 #define FLD(f) abuf->fields.sfmt_addcwr.f
   4173   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4174   const IDESC * UNUSED idesc = abuf->idesc;
   4175   int cycles = 0;
   4176   {
   4177     int referenced = 0;
   4178     int UNUSED insn_referenced = abuf->written;
   4179     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   4180   }
   4181   {
   4182     int referenced = 0;
   4183     int UNUSED insn_referenced = abuf->written;
   4184     INT in_Rd = -1;
   4185     INT in_Rs = -1;
   4186     INT out_Rd = -1;
   4187     in_Rd = FLD (in_Rd);
   4188     referenced |= 1 << 0;
   4189     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   4190   }
   4191   return cycles;
   4192 #undef FLD
   4193 }
   4194 
   4195 static int
   4196 model_crisv32_orcdr (SIM_CPU *current_cpu, void *sem_arg)
   4197 {
   4198 #define FLD(f) abuf->fields.sfmt_addcdr.f
   4199   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4200   const IDESC * UNUSED idesc = abuf->idesc;
   4201   int cycles = 0;
   4202   {
   4203     int referenced = 0;
   4204     int UNUSED insn_referenced = abuf->written;
   4205     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   4206   }
   4207   {
   4208     int referenced = 0;
   4209     int UNUSED insn_referenced = abuf->written;
   4210     INT in_Rd = -1;
   4211     INT in_Rs = -1;
   4212     INT out_Rd = -1;
   4213     in_Rd = FLD (in_Rd);
   4214     referenced |= 1 << 0;
   4215     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   4216   }
   4217   return cycles;
   4218 #undef FLD
   4219 }
   4220 
   4221 static int
   4222 model_crisv32_orq (SIM_CPU *current_cpu, void *sem_arg)
   4223 {
   4224 #define FLD(f) abuf->fields.sfmt_andq.f
   4225   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4226   const IDESC * UNUSED idesc = abuf->idesc;
   4227   int cycles = 0;
   4228   {
   4229     int referenced = 0;
   4230     int UNUSED insn_referenced = abuf->written;
   4231     INT in_Rd = -1;
   4232     INT in_Rs = -1;
   4233     INT out_Rd = -1;
   4234     in_Rd = FLD (in_Rd);
   4235     referenced |= 1 << 0;
   4236     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4237   }
   4238   return cycles;
   4239 #undef FLD
   4240 }
   4241 
   4242 static int
   4243 model_crisv32_xor (SIM_CPU *current_cpu, void *sem_arg)
   4244 {
   4245 #define FLD(f) abuf->fields.sfmt_muls_b.f
   4246   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4247   const IDESC * UNUSED idesc = abuf->idesc;
   4248   int cycles = 0;
   4249   {
   4250     int referenced = 0;
   4251     int UNUSED insn_referenced = abuf->written;
   4252     INT in_Rd = -1;
   4253     INT in_Rs = -1;
   4254     INT out_Rd = -1;
   4255     in_Rd = FLD (in_Rd);
   4256     in_Rs = FLD (in_Rs);
   4257     out_Rd = FLD (out_Rd);
   4258     referenced |= 1 << 0;
   4259     referenced |= 1 << 1;
   4260     referenced |= 1 << 2;
   4261     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4262   }
   4263   return cycles;
   4264 #undef FLD
   4265 }
   4266 
   4267 static int
   4268 model_crisv32_swap (SIM_CPU *current_cpu, void *sem_arg)
   4269 {
   4270 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   4271   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4272   const IDESC * UNUSED idesc = abuf->idesc;
   4273   int cycles = 0;
   4274   {
   4275     int referenced = 0;
   4276     int UNUSED insn_referenced = abuf->written;
   4277     INT in_Rd = -1;
   4278     INT in_Rs = -1;
   4279     INT out_Rd = -1;
   4280     in_Rs = FLD (in_Rs);
   4281     referenced |= 1 << 1;
   4282     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4283   }
   4284   return cycles;
   4285 #undef FLD
   4286 }
   4287 
   4288 static int
   4289 model_crisv32_asrr_b_r (SIM_CPU *current_cpu, void *sem_arg)
   4290 {
   4291 #define FLD(f) abuf->fields.sfmt_addc_m.f
   4292   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4293   const IDESC * UNUSED idesc = abuf->idesc;
   4294   int cycles = 0;
   4295   {
   4296     int referenced = 0;
   4297     int UNUSED insn_referenced = abuf->written;
   4298     INT in_Rd = -1;
   4299     INT in_Rs = -1;
   4300     INT out_Rd = -1;
   4301     in_Rd = FLD (in_Rd);
   4302     in_Rs = FLD (in_Rs);
   4303     referenced |= 1 << 0;
   4304     referenced |= 1 << 1;
   4305     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4306   }
   4307   return cycles;
   4308 #undef FLD
   4309 }
   4310 
   4311 static int
   4312 model_crisv32_asrr_w_r (SIM_CPU *current_cpu, void *sem_arg)
   4313 {
   4314 #define FLD(f) abuf->fields.sfmt_addc_m.f
   4315   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4316   const IDESC * UNUSED idesc = abuf->idesc;
   4317   int cycles = 0;
   4318   {
   4319     int referenced = 0;
   4320     int UNUSED insn_referenced = abuf->written;
   4321     INT in_Rd = -1;
   4322     INT in_Rs = -1;
   4323     INT out_Rd = -1;
   4324     in_Rd = FLD (in_Rd);
   4325     in_Rs = FLD (in_Rs);
   4326     referenced |= 1 << 0;
   4327     referenced |= 1 << 1;
   4328     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4329   }
   4330   return cycles;
   4331 #undef FLD
   4332 }
   4333 
   4334 static int
   4335 model_crisv32_asrr_d_r (SIM_CPU *current_cpu, void *sem_arg)
   4336 {
   4337 #define FLD(f) abuf->fields.sfmt_addc_m.f
   4338   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4339   const IDESC * UNUSED idesc = abuf->idesc;
   4340   int cycles = 0;
   4341   {
   4342     int referenced = 0;
   4343     int UNUSED insn_referenced = abuf->written;
   4344     INT in_Rd = -1;
   4345     INT in_Rs = -1;
   4346     INT out_Rd = -1;
   4347     in_Rd = FLD (in_Rd);
   4348     in_Rs = FLD (in_Rs);
   4349     referenced |= 1 << 0;
   4350     referenced |= 1 << 1;
   4351     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4352   }
   4353   return cycles;
   4354 #undef FLD
   4355 }
   4356 
   4357 static int
   4358 model_crisv32_asrq (SIM_CPU *current_cpu, void *sem_arg)
   4359 {
   4360 #define FLD(f) abuf->fields.sfmt_asrq.f
   4361   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4362   const IDESC * UNUSED idesc = abuf->idesc;
   4363   int cycles = 0;
   4364   {
   4365     int referenced = 0;
   4366     int UNUSED insn_referenced = abuf->written;
   4367     INT in_Rd = -1;
   4368     INT in_Rs = -1;
   4369     INT out_Rd = -1;
   4370     in_Rd = FLD (in_Rd);
   4371     out_Rd = FLD (out_Rd);
   4372     referenced |= 1 << 0;
   4373     referenced |= 1 << 2;
   4374     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4375   }
   4376   return cycles;
   4377 #undef FLD
   4378 }
   4379 
   4380 static int
   4381 model_crisv32_lsrr_b_r (SIM_CPU *current_cpu, void *sem_arg)
   4382 {
   4383 #define FLD(f) abuf->fields.sfmt_addc_m.f
   4384   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4385   const IDESC * UNUSED idesc = abuf->idesc;
   4386   int cycles = 0;
   4387   {
   4388     int referenced = 0;
   4389     int UNUSED insn_referenced = abuf->written;
   4390     INT in_Rd = -1;
   4391     INT in_Rs = -1;
   4392     INT out_Rd = -1;
   4393     in_Rd = FLD (in_Rd);
   4394     in_Rs = FLD (in_Rs);
   4395     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   4396     referenced |= 1 << 1;
   4397     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4398   }
   4399   return cycles;
   4400 #undef FLD
   4401 }
   4402 
   4403 static int
   4404 model_crisv32_lsrr_w_r (SIM_CPU *current_cpu, void *sem_arg)
   4405 {
   4406 #define FLD(f) abuf->fields.sfmt_addc_m.f
   4407   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4408   const IDESC * UNUSED idesc = abuf->idesc;
   4409   int cycles = 0;
   4410   {
   4411     int referenced = 0;
   4412     int UNUSED insn_referenced = abuf->written;
   4413     INT in_Rd = -1;
   4414     INT in_Rs = -1;
   4415     INT out_Rd = -1;
   4416     in_Rd = FLD (in_Rd);
   4417     in_Rs = FLD (in_Rs);
   4418     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   4419     referenced |= 1 << 1;
   4420     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4421   }
   4422   return cycles;
   4423 #undef FLD
   4424 }
   4425 
   4426 static int
   4427 model_crisv32_lsrr_d_r (SIM_CPU *current_cpu, void *sem_arg)
   4428 {
   4429 #define FLD(f) abuf->fields.sfmt_addc_m.f
   4430   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4431   const IDESC * UNUSED idesc = abuf->idesc;
   4432   int cycles = 0;
   4433   {
   4434     int referenced = 0;
   4435     int UNUSED insn_referenced = abuf->written;
   4436     INT in_Rd = -1;
   4437     INT in_Rs = -1;
   4438     INT out_Rd = -1;
   4439     in_Rd = FLD (in_Rd);
   4440     in_Rs = FLD (in_Rs);
   4441     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   4442     referenced |= 1 << 1;
   4443     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4444   }
   4445   return cycles;
   4446 #undef FLD
   4447 }
   4448 
   4449 static int
   4450 model_crisv32_lsrq (SIM_CPU *current_cpu, void *sem_arg)
   4451 {
   4452 #define FLD(f) abuf->fields.sfmt_asrq.f
   4453   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4454   const IDESC * UNUSED idesc = abuf->idesc;
   4455   int cycles = 0;
   4456   {
   4457     int referenced = 0;
   4458     int UNUSED insn_referenced = abuf->written;
   4459     INT in_Rd = -1;
   4460     INT in_Rs = -1;
   4461     INT out_Rd = -1;
   4462     in_Rd = FLD (in_Rd);
   4463     out_Rd = FLD (out_Rd);
   4464     referenced |= 1 << 0;
   4465     referenced |= 1 << 2;
   4466     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4467   }
   4468   return cycles;
   4469 #undef FLD
   4470 }
   4471 
   4472 static int
   4473 model_crisv32_lslr_b_r (SIM_CPU *current_cpu, void *sem_arg)
   4474 {
   4475 #define FLD(f) abuf->fields.sfmt_addc_m.f
   4476   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4477   const IDESC * UNUSED idesc = abuf->idesc;
   4478   int cycles = 0;
   4479   {
   4480     int referenced = 0;
   4481     int UNUSED insn_referenced = abuf->written;
   4482     INT in_Rd = -1;
   4483     INT in_Rs = -1;
   4484     INT out_Rd = -1;
   4485     in_Rd = FLD (in_Rd);
   4486     in_Rs = FLD (in_Rs);
   4487     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   4488     referenced |= 1 << 1;
   4489     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4490   }
   4491   return cycles;
   4492 #undef FLD
   4493 }
   4494 
   4495 static int
   4496 model_crisv32_lslr_w_r (SIM_CPU *current_cpu, void *sem_arg)
   4497 {
   4498 #define FLD(f) abuf->fields.sfmt_addc_m.f
   4499   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4500   const IDESC * UNUSED idesc = abuf->idesc;
   4501   int cycles = 0;
   4502   {
   4503     int referenced = 0;
   4504     int UNUSED insn_referenced = abuf->written;
   4505     INT in_Rd = -1;
   4506     INT in_Rs = -1;
   4507     INT out_Rd = -1;
   4508     in_Rd = FLD (in_Rd);
   4509     in_Rs = FLD (in_Rs);
   4510     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   4511     referenced |= 1 << 1;
   4512     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4513   }
   4514   return cycles;
   4515 #undef FLD
   4516 }
   4517 
   4518 static int
   4519 model_crisv32_lslr_d_r (SIM_CPU *current_cpu, void *sem_arg)
   4520 {
   4521 #define FLD(f) abuf->fields.sfmt_addc_m.f
   4522   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4523   const IDESC * UNUSED idesc = abuf->idesc;
   4524   int cycles = 0;
   4525   {
   4526     int referenced = 0;
   4527     int UNUSED insn_referenced = abuf->written;
   4528     INT in_Rd = -1;
   4529     INT in_Rs = -1;
   4530     INT out_Rd = -1;
   4531     in_Rd = FLD (in_Rd);
   4532     in_Rs = FLD (in_Rs);
   4533     if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
   4534     referenced |= 1 << 1;
   4535     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4536   }
   4537   return cycles;
   4538 #undef FLD
   4539 }
   4540 
   4541 static int
   4542 model_crisv32_lslq (SIM_CPU *current_cpu, void *sem_arg)
   4543 {
   4544 #define FLD(f) abuf->fields.sfmt_asrq.f
   4545   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4546   const IDESC * UNUSED idesc = abuf->idesc;
   4547   int cycles = 0;
   4548   {
   4549     int referenced = 0;
   4550     int UNUSED insn_referenced = abuf->written;
   4551     INT in_Rd = -1;
   4552     INT in_Rs = -1;
   4553     INT out_Rd = -1;
   4554     in_Rd = FLD (in_Rd);
   4555     out_Rd = FLD (out_Rd);
   4556     referenced |= 1 << 0;
   4557     referenced |= 1 << 2;
   4558     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4559   }
   4560   return cycles;
   4561 #undef FLD
   4562 }
   4563 
   4564 static int
   4565 model_crisv32_btst (SIM_CPU *current_cpu, void *sem_arg)
   4566 {
   4567 #define FLD(f) abuf->fields.sfmt_muls_b.f
   4568   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4569   const IDESC * UNUSED idesc = abuf->idesc;
   4570   int cycles = 0;
   4571   {
   4572     int referenced = 0;
   4573     int UNUSED insn_referenced = abuf->written;
   4574     INT in_Rd = -1;
   4575     INT in_Rs = -1;
   4576     INT out_Rd = -1;
   4577     in_Rd = FLD (in_Rd);
   4578     in_Rs = FLD (in_Rs);
   4579     referenced |= 1 << 0;
   4580     referenced |= 1 << 1;
   4581     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4582   }
   4583   return cycles;
   4584 #undef FLD
   4585 }
   4586 
   4587 static int
   4588 model_crisv32_btstq (SIM_CPU *current_cpu, void *sem_arg)
   4589 {
   4590 #define FLD(f) abuf->fields.sfmt_asrq.f
   4591   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4592   const IDESC * UNUSED idesc = abuf->idesc;
   4593   int cycles = 0;
   4594   {
   4595     int referenced = 0;
   4596     int UNUSED insn_referenced = abuf->written;
   4597     INT in_Rd = -1;
   4598     INT in_Rs = -1;
   4599     INT out_Rd = -1;
   4600     in_Rd = FLD (in_Rd);
   4601     referenced |= 1 << 0;
   4602     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4603   }
   4604   return cycles;
   4605 #undef FLD
   4606 }
   4607 
   4608 static int
   4609 model_crisv32_setf (SIM_CPU *current_cpu, void *sem_arg)
   4610 {
   4611 #define FLD(f) abuf->fields.sfmt_setf.f
   4612   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4613   const IDESC * UNUSED idesc = abuf->idesc;
   4614   int cycles = 0;
   4615   {
   4616     int referenced = 0;
   4617     int UNUSED insn_referenced = abuf->written;
   4618     INT in_Rd = -1;
   4619     INT in_Rs = -1;
   4620     INT out_Rd = -1;
   4621     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4622   }
   4623   return cycles;
   4624 #undef FLD
   4625 }
   4626 
   4627 static int
   4628 model_crisv32_clearf (SIM_CPU *current_cpu, void *sem_arg)
   4629 {
   4630 #define FLD(f) abuf->fields.sfmt_setf.f
   4631   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4632   const IDESC * UNUSED idesc = abuf->idesc;
   4633   int cycles = 0;
   4634   {
   4635     int referenced = 0;
   4636     int UNUSED insn_referenced = abuf->written;
   4637     INT in_Rd = -1;
   4638     INT in_Rs = -1;
   4639     INT out_Rd = -1;
   4640     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4641   }
   4642   return cycles;
   4643 #undef FLD
   4644 }
   4645 
   4646 static int
   4647 model_crisv32_rfe (SIM_CPU *current_cpu, void *sem_arg)
   4648 {
   4649 #define FLD(f) abuf->fields.sfmt_rfe.f
   4650   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4651   const IDESC * UNUSED idesc = abuf->idesc;
   4652   int cycles = 0;
   4653   {
   4654     int referenced = 0;
   4655     int UNUSED insn_referenced = abuf->written;
   4656     INT in_Rd = -1;
   4657     INT in_Rs = -1;
   4658     INT out_Rd = -1;
   4659     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4660   }
   4661   return cycles;
   4662 #undef FLD
   4663 }
   4664 
   4665 static int
   4666 model_crisv32_sfe (SIM_CPU *current_cpu, void *sem_arg)
   4667 {
   4668 #define FLD(f) abuf->fields.sfmt_rfe.f
   4669   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4670   const IDESC * UNUSED idesc = abuf->idesc;
   4671   int cycles = 0;
   4672   {
   4673     int referenced = 0;
   4674     int UNUSED insn_referenced = abuf->written;
   4675     INT in_Rd = -1;
   4676     INT in_Rs = -1;
   4677     INT out_Rd = -1;
   4678     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4679   }
   4680   return cycles;
   4681 #undef FLD
   4682 }
   4683 
   4684 static int
   4685 model_crisv32_rfg (SIM_CPU *current_cpu, void *sem_arg)
   4686 {
   4687 #define FLD(f) abuf->fields.sfmt_empty.f
   4688   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4689   const IDESC * UNUSED idesc = abuf->idesc;
   4690   int cycles = 0;
   4691   {
   4692     int referenced = 0;
   4693     int UNUSED insn_referenced = abuf->written;
   4694     INT in_Rd = -1;
   4695     INT in_Rs = -1;
   4696     INT out_Rd = -1;
   4697     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4698   }
   4699   return cycles;
   4700 #undef FLD
   4701 }
   4702 
   4703 static int
   4704 model_crisv32_rfn (SIM_CPU *current_cpu, void *sem_arg)
   4705 {
   4706 #define FLD(f) abuf->fields.sfmt_rfe.f
   4707   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4708   const IDESC * UNUSED idesc = abuf->idesc;
   4709   int cycles = 0;
   4710   {
   4711     int referenced = 0;
   4712     int UNUSED insn_referenced = abuf->written;
   4713     INT in_Rd = -1;
   4714     INT in_Rs = -1;
   4715     INT out_Rd = -1;
   4716     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4717   }
   4718   return cycles;
   4719 #undef FLD
   4720 }
   4721 
   4722 static int
   4723 model_crisv32_halt (SIM_CPU *current_cpu, void *sem_arg)
   4724 {
   4725 #define FLD(f) abuf->fields.sfmt_empty.f
   4726   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4727   const IDESC * UNUSED idesc = abuf->idesc;
   4728   int cycles = 0;
   4729   {
   4730     int referenced = 0;
   4731     int UNUSED insn_referenced = abuf->written;
   4732     INT in_Rd = -1;
   4733     INT in_Rs = -1;
   4734     INT out_Rd = -1;
   4735     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   4736   }
   4737   return cycles;
   4738 #undef FLD
   4739 }
   4740 
   4741 static int
   4742 model_crisv32_bcc_b (SIM_CPU *current_cpu, void *sem_arg)
   4743 {
   4744 #define FLD(f) abuf->fields.sfmt_bcc_b.f
   4745   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4746   const IDESC * UNUSED idesc = abuf->idesc;
   4747   int cycles = 0;
   4748   {
   4749     int referenced = 0;
   4750     int UNUSED insn_referenced = abuf->written;
   4751     cycles += crisv32f_model_crisv32_u_branch (current_cpu, idesc, 0, referenced);
   4752   }
   4753   {
   4754     int referenced = 0;
   4755     int UNUSED insn_referenced = abuf->written;
   4756     INT in_Rd = -1;
   4757     INT in_Rs = -1;
   4758     INT out_Rd = -1;
   4759     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   4760   }
   4761   return cycles;
   4762 #undef FLD
   4763 }
   4764 
   4765 static int
   4766 model_crisv32_ba_b (SIM_CPU *current_cpu, void *sem_arg)
   4767 {
   4768 #define FLD(f) abuf->fields.sfmt_bcc_b.f
   4769   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4770   const IDESC * UNUSED idesc = abuf->idesc;
   4771   int cycles = 0;
   4772   {
   4773     int referenced = 0;
   4774     int UNUSED insn_referenced = abuf->written;
   4775     INT out_Pd = -1;
   4776     cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 0, referenced, out_Pd);
   4777   }
   4778   {
   4779     int referenced = 0;
   4780     int UNUSED insn_referenced = abuf->written;
   4781     INT in_Rd = -1;
   4782     INT in_Rs = -1;
   4783     INT out_Rd = -1;
   4784     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   4785   }
   4786   return cycles;
   4787 #undef FLD
   4788 }
   4789 
   4790 static int
   4791 model_crisv32_bcc_w (SIM_CPU *current_cpu, void *sem_arg)
   4792 {
   4793 #define FLD(f) abuf->fields.sfmt_bcc_w.f
   4794   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4795   const IDESC * UNUSED idesc = abuf->idesc;
   4796   int cycles = 0;
   4797   {
   4798     int referenced = 0;
   4799     int UNUSED insn_referenced = abuf->written;
   4800     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   4801   }
   4802   {
   4803     int referenced = 0;
   4804     int UNUSED insn_referenced = abuf->written;
   4805     cycles += crisv32f_model_crisv32_u_branch (current_cpu, idesc, 1, referenced);
   4806   }
   4807   {
   4808     int referenced = 0;
   4809     int UNUSED insn_referenced = abuf->written;
   4810     INT in_Rd = -1;
   4811     INT in_Rs = -1;
   4812     INT out_Rd = -1;
   4813     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   4814   }
   4815   return cycles;
   4816 #undef FLD
   4817 }
   4818 
   4819 static int
   4820 model_crisv32_ba_w (SIM_CPU *current_cpu, void *sem_arg)
   4821 {
   4822 #define FLD(f) abuf->fields.sfmt_bcc_w.f
   4823   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4824   const IDESC * UNUSED idesc = abuf->idesc;
   4825   int cycles = 0;
   4826   {
   4827     int referenced = 0;
   4828     int UNUSED insn_referenced = abuf->written;
   4829     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   4830   }
   4831   {
   4832     int referenced = 0;
   4833     int UNUSED insn_referenced = abuf->written;
   4834     INT out_Pd = -1;
   4835     cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd);
   4836   }
   4837   {
   4838     int referenced = 0;
   4839     int UNUSED insn_referenced = abuf->written;
   4840     INT in_Rd = -1;
   4841     INT in_Rs = -1;
   4842     INT out_Rd = -1;
   4843     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   4844   }
   4845   return cycles;
   4846 #undef FLD
   4847 }
   4848 
   4849 static int
   4850 model_crisv32_jas_r (SIM_CPU *current_cpu, void *sem_arg)
   4851 {
   4852 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   4853   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4854   const IDESC * UNUSED idesc = abuf->idesc;
   4855   int cycles = 0;
   4856   {
   4857     int referenced = 0;
   4858     int UNUSED insn_referenced = abuf->written;
   4859     INT in_Rs = -1;
   4860     in_Rs = FLD (in_Rs);
   4861     referenced |= 1 << 0;
   4862     cycles += crisv32f_model_crisv32_u_jump_r (current_cpu, idesc, 0, referenced, in_Rs);
   4863   }
   4864   {
   4865     int referenced = 0;
   4866     int UNUSED insn_referenced = abuf->written;
   4867     INT out_Pd = -1;
   4868     out_Pd = FLD (out_Pd);
   4869     referenced |= 1 << 0;
   4870     cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd);
   4871   }
   4872   {
   4873     int referenced = 0;
   4874     int UNUSED insn_referenced = abuf->written;
   4875     INT in_Rd = -1;
   4876     INT in_Rs = -1;
   4877     INT out_Rd = -1;
   4878     in_Rs = FLD (in_Rs);
   4879     referenced |= 1 << 1;
   4880     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   4881   }
   4882   return cycles;
   4883 #undef FLD
   4884 }
   4885 
   4886 static int
   4887 model_crisv32_jas_c (SIM_CPU *current_cpu, void *sem_arg)
   4888 {
   4889 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   4890   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4891   const IDESC * UNUSED idesc = abuf->idesc;
   4892   int cycles = 0;
   4893   {
   4894     int referenced = 0;
   4895     int UNUSED insn_referenced = abuf->written;
   4896     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   4897   }
   4898   {
   4899     int referenced = 0;
   4900     int UNUSED insn_referenced = abuf->written;
   4901     INT out_Pd = -1;
   4902     out_Pd = FLD (out_Pd);
   4903     referenced |= 1 << 0;
   4904     cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd);
   4905   }
   4906   {
   4907     int referenced = 0;
   4908     int UNUSED insn_referenced = abuf->written;
   4909     INT in_Rd = -1;
   4910     INT in_Rs = -1;
   4911     INT out_Rd = -1;
   4912     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   4913   }
   4914   return cycles;
   4915 #undef FLD
   4916 }
   4917 
   4918 static int
   4919 model_crisv32_jump_p (SIM_CPU *current_cpu, void *sem_arg)
   4920 {
   4921 #define FLD(f) abuf->fields.sfmt_mcp.f
   4922   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4923   const IDESC * UNUSED idesc = abuf->idesc;
   4924   int cycles = 0;
   4925   {
   4926     int referenced = 0;
   4927     int UNUSED insn_referenced = abuf->written;
   4928     INT in_Ps = -1;
   4929     in_Ps = FLD (in_Ps);
   4930     referenced |= 1 << 0;
   4931     cycles += crisv32f_model_crisv32_u_jump_sr (current_cpu, idesc, 0, referenced, in_Ps);
   4932   }
   4933   {
   4934     int referenced = 0;
   4935     int UNUSED insn_referenced = abuf->written;
   4936     INT in_Rd = -1;
   4937     INT in_Rs = -1;
   4938     INT out_Rd = -1;
   4939     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   4940   }
   4941   return cycles;
   4942 #undef FLD
   4943 }
   4944 
   4945 static int
   4946 model_crisv32_bas_c (SIM_CPU *current_cpu, void *sem_arg)
   4947 {
   4948 #define FLD(f) abuf->fields.sfmt_bas_c.f
   4949   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4950   const IDESC * UNUSED idesc = abuf->idesc;
   4951   int cycles = 0;
   4952   {
   4953     int referenced = 0;
   4954     int UNUSED insn_referenced = abuf->written;
   4955     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   4956   }
   4957   {
   4958     int referenced = 0;
   4959     int UNUSED insn_referenced = abuf->written;
   4960     INT out_Pd = -1;
   4961     out_Pd = FLD (out_Pd);
   4962     referenced |= 1 << 0;
   4963     cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd);
   4964   }
   4965   {
   4966     int referenced = 0;
   4967     int UNUSED insn_referenced = abuf->written;
   4968     INT in_Rd = -1;
   4969     INT in_Rs = -1;
   4970     INT out_Rd = -1;
   4971     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   4972   }
   4973   return cycles;
   4974 #undef FLD
   4975 }
   4976 
   4977 static int
   4978 model_crisv32_jasc_r (SIM_CPU *current_cpu, void *sem_arg)
   4979 {
   4980 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
   4981   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   4982   const IDESC * UNUSED idesc = abuf->idesc;
   4983   int cycles = 0;
   4984   {
   4985     int referenced = 0;
   4986     int UNUSED insn_referenced = abuf->written;
   4987     INT in_Rs = -1;
   4988     in_Rs = FLD (in_Rs);
   4989     referenced |= 1 << 0;
   4990     cycles += crisv32f_model_crisv32_u_jump_r (current_cpu, idesc, 0, referenced, in_Rs);
   4991   }
   4992   {
   4993     int referenced = 0;
   4994     int UNUSED insn_referenced = abuf->written;
   4995     cycles += crisv32f_model_crisv32_u_skip4 (current_cpu, idesc, 1, referenced);
   4996   }
   4997   {
   4998     int referenced = 0;
   4999     int UNUSED insn_referenced = abuf->written;
   5000     INT out_Pd = -1;
   5001     out_Pd = FLD (out_Pd);
   5002     referenced |= 1 << 0;
   5003     cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 2, referenced, out_Pd);
   5004   }
   5005   {
   5006     int referenced = 0;
   5007     int UNUSED insn_referenced = abuf->written;
   5008     INT in_Rd = -1;
   5009     INT in_Rs = -1;
   5010     INT out_Rd = -1;
   5011     in_Rs = FLD (in_Rs);
   5012     referenced |= 1 << 1;
   5013     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 3, referenced, in_Rd, in_Rs, out_Rd);
   5014   }
   5015   return cycles;
   5016 #undef FLD
   5017 }
   5018 
   5019 static int
   5020 model_crisv32_jasc_c (SIM_CPU *current_cpu, void *sem_arg)
   5021 {
   5022 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
   5023   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5024   const IDESC * UNUSED idesc = abuf->idesc;
   5025   int cycles = 0;
   5026   {
   5027     int referenced = 0;
   5028     int UNUSED insn_referenced = abuf->written;
   5029     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   5030   }
   5031   {
   5032     int referenced = 0;
   5033     int UNUSED insn_referenced = abuf->written;
   5034     cycles += crisv32f_model_crisv32_u_skip4 (current_cpu, idesc, 1, referenced);
   5035   }
   5036   {
   5037     int referenced = 0;
   5038     int UNUSED insn_referenced = abuf->written;
   5039     INT out_Pd = -1;
   5040     out_Pd = FLD (out_Pd);
   5041     referenced |= 1 << 0;
   5042     cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 2, referenced, out_Pd);
   5043   }
   5044   {
   5045     int referenced = 0;
   5046     int UNUSED insn_referenced = abuf->written;
   5047     INT in_Rd = -1;
   5048     INT in_Rs = -1;
   5049     INT out_Rd = -1;
   5050     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 3, referenced, in_Rd, in_Rs, out_Rd);
   5051   }
   5052   return cycles;
   5053 #undef FLD
   5054 }
   5055 
   5056 static int
   5057 model_crisv32_basc_c (SIM_CPU *current_cpu, void *sem_arg)
   5058 {
   5059 #define FLD(f) abuf->fields.sfmt_bas_c.f
   5060   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5061   const IDESC * UNUSED idesc = abuf->idesc;
   5062   int cycles = 0;
   5063   {
   5064     int referenced = 0;
   5065     int UNUSED insn_referenced = abuf->written;
   5066     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   5067   }
   5068   {
   5069     int referenced = 0;
   5070     int UNUSED insn_referenced = abuf->written;
   5071     cycles += crisv32f_model_crisv32_u_skip4 (current_cpu, idesc, 1, referenced);
   5072   }
   5073   {
   5074     int referenced = 0;
   5075     int UNUSED insn_referenced = abuf->written;
   5076     INT out_Pd = -1;
   5077     out_Pd = FLD (out_Pd);
   5078     referenced |= 1 << 0;
   5079     cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 2, referenced, out_Pd);
   5080   }
   5081   {
   5082     int referenced = 0;
   5083     int UNUSED insn_referenced = abuf->written;
   5084     INT in_Rd = -1;
   5085     INT in_Rs = -1;
   5086     INT out_Rd = -1;
   5087     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 3, referenced, in_Rd, in_Rs, out_Rd);
   5088   }
   5089   return cycles;
   5090 #undef FLD
   5091 }
   5092 
   5093 static int
   5094 model_crisv32_break (SIM_CPU *current_cpu, void *sem_arg)
   5095 {
   5096 #define FLD(f) abuf->fields.sfmt_break.f
   5097   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5098   const IDESC * UNUSED idesc = abuf->idesc;
   5099   int cycles = 0;
   5100   {
   5101     int referenced = 0;
   5102     int UNUSED insn_referenced = abuf->written;
   5103     INT in_Rd = -1;
   5104     INT in_Rs = -1;
   5105     INT out_Rd = -1;
   5106     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   5107   }
   5108   return cycles;
   5109 #undef FLD
   5110 }
   5111 
   5112 static int
   5113 model_crisv32_bound_r_b_r (SIM_CPU *current_cpu, void *sem_arg)
   5114 {
   5115 #define FLD(f) abuf->fields.sfmt_muls_b.f
   5116   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5117   const IDESC * UNUSED idesc = abuf->idesc;
   5118   int cycles = 0;
   5119   {
   5120     int referenced = 0;
   5121     int UNUSED insn_referenced = abuf->written;
   5122     INT in_Rd = -1;
   5123     INT in_Rs = -1;
   5124     INT out_Rd = -1;
   5125     in_Rd = FLD (in_Rd);
   5126     in_Rs = FLD (in_Rs);
   5127     out_Rd = FLD (out_Rd);
   5128     referenced |= 1 << 0;
   5129     referenced |= 1 << 1;
   5130     referenced |= 1 << 2;
   5131     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   5132   }
   5133   return cycles;
   5134 #undef FLD
   5135 }
   5136 
   5137 static int
   5138 model_crisv32_bound_r_w_r (SIM_CPU *current_cpu, void *sem_arg)
   5139 {
   5140 #define FLD(f) abuf->fields.sfmt_muls_b.f
   5141   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5142   const IDESC * UNUSED idesc = abuf->idesc;
   5143   int cycles = 0;
   5144   {
   5145     int referenced = 0;
   5146     int UNUSED insn_referenced = abuf->written;
   5147     INT in_Rd = -1;
   5148     INT in_Rs = -1;
   5149     INT out_Rd = -1;
   5150     in_Rd = FLD (in_Rd);
   5151     in_Rs = FLD (in_Rs);
   5152     out_Rd = FLD (out_Rd);
   5153     referenced |= 1 << 0;
   5154     referenced |= 1 << 1;
   5155     referenced |= 1 << 2;
   5156     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   5157   }
   5158   return cycles;
   5159 #undef FLD
   5160 }
   5161 
   5162 static int
   5163 model_crisv32_bound_r_d_r (SIM_CPU *current_cpu, void *sem_arg)
   5164 {
   5165 #define FLD(f) abuf->fields.sfmt_muls_b.f
   5166   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5167   const IDESC * UNUSED idesc = abuf->idesc;
   5168   int cycles = 0;
   5169   {
   5170     int referenced = 0;
   5171     int UNUSED insn_referenced = abuf->written;
   5172     INT in_Rd = -1;
   5173     INT in_Rs = -1;
   5174     INT out_Rd = -1;
   5175     in_Rd = FLD (in_Rd);
   5176     in_Rs = FLD (in_Rs);
   5177     out_Rd = FLD (out_Rd);
   5178     referenced |= 1 << 0;
   5179     referenced |= 1 << 1;
   5180     referenced |= 1 << 2;
   5181     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   5182   }
   5183   return cycles;
   5184 #undef FLD
   5185 }
   5186 
   5187 static int
   5188 model_crisv32_bound_cb (SIM_CPU *current_cpu, void *sem_arg)
   5189 {
   5190 #define FLD(f) abuf->fields.sfmt_bound_cb.f
   5191   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5192   const IDESC * UNUSED idesc = abuf->idesc;
   5193   int cycles = 0;
   5194   {
   5195     int referenced = 0;
   5196     int UNUSED insn_referenced = abuf->written;
   5197     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   5198   }
   5199   {
   5200     int referenced = 0;
   5201     int UNUSED insn_referenced = abuf->written;
   5202     INT in_Rd = -1;
   5203     INT in_Rs = -1;
   5204     INT out_Rd = -1;
   5205     in_Rd = FLD (in_Rd);
   5206     out_Rd = FLD (out_Rd);
   5207     referenced |= 1 << 0;
   5208     referenced |= 1 << 2;
   5209     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   5210   }
   5211   return cycles;
   5212 #undef FLD
   5213 }
   5214 
   5215 static int
   5216 model_crisv32_bound_cw (SIM_CPU *current_cpu, void *sem_arg)
   5217 {
   5218 #define FLD(f) abuf->fields.sfmt_bound_cw.f
   5219   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5220   const IDESC * UNUSED idesc = abuf->idesc;
   5221   int cycles = 0;
   5222   {
   5223     int referenced = 0;
   5224     int UNUSED insn_referenced = abuf->written;
   5225     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   5226   }
   5227   {
   5228     int referenced = 0;
   5229     int UNUSED insn_referenced = abuf->written;
   5230     INT in_Rd = -1;
   5231     INT in_Rs = -1;
   5232     INT out_Rd = -1;
   5233     in_Rd = FLD (in_Rd);
   5234     out_Rd = FLD (out_Rd);
   5235     referenced |= 1 << 0;
   5236     referenced |= 1 << 2;
   5237     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   5238   }
   5239   return cycles;
   5240 #undef FLD
   5241 }
   5242 
   5243 static int
   5244 model_crisv32_bound_cd (SIM_CPU *current_cpu, void *sem_arg)
   5245 {
   5246 #define FLD(f) abuf->fields.sfmt_bound_cd.f
   5247   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5248   const IDESC * UNUSED idesc = abuf->idesc;
   5249   int cycles = 0;
   5250   {
   5251     int referenced = 0;
   5252     int UNUSED insn_referenced = abuf->written;
   5253     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   5254   }
   5255   {
   5256     int referenced = 0;
   5257     int UNUSED insn_referenced = abuf->written;
   5258     INT in_Rd = -1;
   5259     INT in_Rs = -1;
   5260     INT out_Rd = -1;
   5261     in_Rd = FLD (in_Rd);
   5262     out_Rd = FLD (out_Rd);
   5263     referenced |= 1 << 0;
   5264     referenced |= 1 << 2;
   5265     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   5266   }
   5267   return cycles;
   5268 #undef FLD
   5269 }
   5270 
   5271 static int
   5272 model_crisv32_scc (SIM_CPU *current_cpu, void *sem_arg)
   5273 {
   5274 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
   5275   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5276   const IDESC * UNUSED idesc = abuf->idesc;
   5277   int cycles = 0;
   5278   {
   5279     int referenced = 0;
   5280     int UNUSED insn_referenced = abuf->written;
   5281     INT in_Rd = -1;
   5282     INT in_Rs = -1;
   5283     INT out_Rd = -1;
   5284     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   5285   }
   5286   return cycles;
   5287 #undef FLD
   5288 }
   5289 
   5290 static int
   5291 model_crisv32_lz (SIM_CPU *current_cpu, void *sem_arg)
   5292 {
   5293 #define FLD(f) abuf->fields.sfmt_muls_b.f
   5294   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5295   const IDESC * UNUSED idesc = abuf->idesc;
   5296   int cycles = 0;
   5297   {
   5298     int referenced = 0;
   5299     int UNUSED insn_referenced = abuf->written;
   5300     INT in_Rd = -1;
   5301     INT in_Rs = -1;
   5302     INT out_Rd = -1;
   5303     in_Rs = FLD (in_Rs);
   5304     out_Rd = FLD (out_Rd);
   5305     referenced |= 1 << 1;
   5306     referenced |= 1 << 2;
   5307     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   5308   }
   5309   return cycles;
   5310 #undef FLD
   5311 }
   5312 
   5313 static int
   5314 model_crisv32_addoq (SIM_CPU *current_cpu, void *sem_arg)
   5315 {
   5316 #define FLD(f) abuf->fields.sfmt_addoq.f
   5317   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5318   const IDESC * UNUSED idesc = abuf->idesc;
   5319   int cycles = 0;
   5320   {
   5321     int referenced = 0;
   5322     int UNUSED insn_referenced = abuf->written;
   5323     INT in_Rd = -1;
   5324     INT in_Rs = -1;
   5325     INT out_Rd = -1;
   5326     in_Rd = FLD (in_Rd);
   5327     referenced |= 1 << 0;
   5328     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   5329   }
   5330   return cycles;
   5331 #undef FLD
   5332 }
   5333 
   5334 static int
   5335 model_crisv32_addo_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
   5336 {
   5337 #define FLD(f) abuf->fields.sfmt_addc_m.f
   5338   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5339   const IDESC * UNUSED idesc = abuf->idesc;
   5340   int cycles = 0;
   5341   {
   5342     int referenced = 0;
   5343     int UNUSED insn_referenced = abuf->written;
   5344     INT in_Rs = -1;
   5345     in_Rs = FLD (in_Rs);
   5346     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   5347     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   5348   }
   5349   {
   5350     int referenced = 0;
   5351     int UNUSED insn_referenced = abuf->written;
   5352     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   5353   }
   5354   {
   5355     int referenced = 0;
   5356     int UNUSED insn_referenced = abuf->written;
   5357     INT in_Rd = -1;
   5358     INT in_Rs = -1;
   5359     INT out_Rd = -1;
   5360     in_Rd = FLD (in_Rd);
   5361     in_Rs = FLD (in_Rs);
   5362     referenced |= 1 << 0;
   5363     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   5364     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   5365   }
   5366   return cycles;
   5367 #undef FLD
   5368 }
   5369 
   5370 static int
   5371 model_crisv32_addo_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
   5372 {
   5373 #define FLD(f) abuf->fields.sfmt_addc_m.f
   5374   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5375   const IDESC * UNUSED idesc = abuf->idesc;
   5376   int cycles = 0;
   5377   {
   5378     int referenced = 0;
   5379     int UNUSED insn_referenced = abuf->written;
   5380     INT in_Rs = -1;
   5381     in_Rs = FLD (in_Rs);
   5382     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   5383     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   5384   }
   5385   {
   5386     int referenced = 0;
   5387     int UNUSED insn_referenced = abuf->written;
   5388     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   5389   }
   5390   {
   5391     int referenced = 0;
   5392     int UNUSED insn_referenced = abuf->written;
   5393     INT in_Rd = -1;
   5394     INT in_Rs = -1;
   5395     INT out_Rd = -1;
   5396     in_Rd = FLD (in_Rd);
   5397     in_Rs = FLD (in_Rs);
   5398     referenced |= 1 << 0;
   5399     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   5400     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   5401   }
   5402   return cycles;
   5403 #undef FLD
   5404 }
   5405 
   5406 static int
   5407 model_crisv32_addo_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
   5408 {
   5409 #define FLD(f) abuf->fields.sfmt_addc_m.f
   5410   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5411   const IDESC * UNUSED idesc = abuf->idesc;
   5412   int cycles = 0;
   5413   {
   5414     int referenced = 0;
   5415     int UNUSED insn_referenced = abuf->written;
   5416     INT in_Rs = -1;
   5417     in_Rs = FLD (in_Rs);
   5418     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   5419     cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
   5420   }
   5421   {
   5422     int referenced = 0;
   5423     int UNUSED insn_referenced = abuf->written;
   5424     cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
   5425   }
   5426   {
   5427     int referenced = 0;
   5428     int UNUSED insn_referenced = abuf->written;
   5429     INT in_Rd = -1;
   5430     INT in_Rs = -1;
   5431     INT out_Rd = -1;
   5432     in_Rd = FLD (in_Rd);
   5433     in_Rs = FLD (in_Rs);
   5434     referenced |= 1 << 0;
   5435     if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
   5436     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
   5437   }
   5438   return cycles;
   5439 #undef FLD
   5440 }
   5441 
   5442 static int
   5443 model_crisv32_addo_cb (SIM_CPU *current_cpu, void *sem_arg)
   5444 {
   5445 #define FLD(f) abuf->fields.sfmt_bound_cb.f
   5446   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5447   const IDESC * UNUSED idesc = abuf->idesc;
   5448   int cycles = 0;
   5449   {
   5450     int referenced = 0;
   5451     int UNUSED insn_referenced = abuf->written;
   5452     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   5453   }
   5454   {
   5455     int referenced = 0;
   5456     int UNUSED insn_referenced = abuf->written;
   5457     INT in_Rd = -1;
   5458     INT in_Rs = -1;
   5459     INT out_Rd = -1;
   5460     in_Rd = FLD (in_Rd);
   5461     referenced |= 1 << 0;
   5462     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   5463   }
   5464   return cycles;
   5465 #undef FLD
   5466 }
   5467 
   5468 static int
   5469 model_crisv32_addo_cw (SIM_CPU *current_cpu, void *sem_arg)
   5470 {
   5471 #define FLD(f) abuf->fields.sfmt_bound_cw.f
   5472   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5473   const IDESC * UNUSED idesc = abuf->idesc;
   5474   int cycles = 0;
   5475   {
   5476     int referenced = 0;
   5477     int UNUSED insn_referenced = abuf->written;
   5478     cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
   5479   }
   5480   {
   5481     int referenced = 0;
   5482     int UNUSED insn_referenced = abuf->written;
   5483     INT in_Rd = -1;
   5484     INT in_Rs = -1;
   5485     INT out_Rd = -1;
   5486     in_Rd = FLD (in_Rd);
   5487     referenced |= 1 << 0;
   5488     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   5489   }
   5490   return cycles;
   5491 #undef FLD
   5492 }
   5493 
   5494 static int
   5495 model_crisv32_addo_cd (SIM_CPU *current_cpu, void *sem_arg)
   5496 {
   5497 #define FLD(f) abuf->fields.sfmt_bound_cd.f
   5498   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5499   const IDESC * UNUSED idesc = abuf->idesc;
   5500   int cycles = 0;
   5501   {
   5502     int referenced = 0;
   5503     int UNUSED insn_referenced = abuf->written;
   5504     cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
   5505   }
   5506   {
   5507     int referenced = 0;
   5508     int UNUSED insn_referenced = abuf->written;
   5509     INT in_Rd = -1;
   5510     INT in_Rs = -1;
   5511     INT out_Rd = -1;
   5512     in_Rd = FLD (in_Rd);
   5513     referenced |= 1 << 0;
   5514     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
   5515   }
   5516   return cycles;
   5517 #undef FLD
   5518 }
   5519 
   5520 static int
   5521 model_crisv32_addi_acr_b_r (SIM_CPU *current_cpu, void *sem_arg)
   5522 {
   5523 #define FLD(f) abuf->fields.sfmt_muls_b.f
   5524   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5525   const IDESC * UNUSED idesc = abuf->idesc;
   5526   int cycles = 0;
   5527   {
   5528     int referenced = 0;
   5529     int UNUSED insn_referenced = abuf->written;
   5530     INT in_Rd = -1;
   5531     INT in_Rs = -1;
   5532     INT out_Rd = -1;
   5533     in_Rd = FLD (in_Rd);
   5534     in_Rs = FLD (in_Rs);
   5535     referenced |= 1 << 0;
   5536     referenced |= 1 << 1;
   5537     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   5538   }
   5539   return cycles;
   5540 #undef FLD
   5541 }
   5542 
   5543 static int
   5544 model_crisv32_addi_acr_w_r (SIM_CPU *current_cpu, void *sem_arg)
   5545 {
   5546 #define FLD(f) abuf->fields.sfmt_muls_b.f
   5547   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5548   const IDESC * UNUSED idesc = abuf->idesc;
   5549   int cycles = 0;
   5550   {
   5551     int referenced = 0;
   5552     int UNUSED insn_referenced = abuf->written;
   5553     INT in_Rd = -1;
   5554     INT in_Rs = -1;
   5555     INT out_Rd = -1;
   5556     in_Rd = FLD (in_Rd);
   5557     in_Rs = FLD (in_Rs);
   5558     referenced |= 1 << 0;
   5559     referenced |= 1 << 1;
   5560     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   5561   }
   5562   return cycles;
   5563 #undef FLD
   5564 }
   5565 
   5566 static int
   5567 model_crisv32_addi_acr_d_r (SIM_CPU *current_cpu, void *sem_arg)
   5568 {
   5569 #define FLD(f) abuf->fields.sfmt_muls_b.f
   5570   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5571   const IDESC * UNUSED idesc = abuf->idesc;
   5572   int cycles = 0;
   5573   {
   5574     int referenced = 0;
   5575     int UNUSED insn_referenced = abuf->written;
   5576     INT in_Rd = -1;
   5577     INT in_Rs = -1;
   5578     INT out_Rd = -1;
   5579     in_Rd = FLD (in_Rd);
   5580     in_Rs = FLD (in_Rs);
   5581     referenced |= 1 << 0;
   5582     referenced |= 1 << 1;
   5583     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   5584   }
   5585   return cycles;
   5586 #undef FLD
   5587 }
   5588 
   5589 static int
   5590 model_crisv32_fidxi (SIM_CPU *current_cpu, void *sem_arg)
   5591 {
   5592 #define FLD(f) abuf->fields.sfmt_mcp.f
   5593   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5594   const IDESC * UNUSED idesc = abuf->idesc;
   5595   int cycles = 0;
   5596   {
   5597     int referenced = 0;
   5598     int UNUSED insn_referenced = abuf->written;
   5599     INT in_Rd = -1;
   5600     INT in_Rs = -1;
   5601     INT out_Rd = -1;
   5602     in_Rs = FLD (in_Rs);
   5603     referenced |= 1 << 1;
   5604     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   5605   }
   5606   return cycles;
   5607 #undef FLD
   5608 }
   5609 
   5610 static int
   5611 model_crisv32_ftagi (SIM_CPU *current_cpu, void *sem_arg)
   5612 {
   5613 #define FLD(f) abuf->fields.sfmt_mcp.f
   5614   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5615   const IDESC * UNUSED idesc = abuf->idesc;
   5616   int cycles = 0;
   5617   {
   5618     int referenced = 0;
   5619     int UNUSED insn_referenced = abuf->written;
   5620     INT in_Rd = -1;
   5621     INT in_Rs = -1;
   5622     INT out_Rd = -1;
   5623     in_Rs = FLD (in_Rs);
   5624     referenced |= 1 << 1;
   5625     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   5626   }
   5627   return cycles;
   5628 #undef FLD
   5629 }
   5630 
   5631 static int
   5632 model_crisv32_fidxd (SIM_CPU *current_cpu, void *sem_arg)
   5633 {
   5634 #define FLD(f) abuf->fields.sfmt_mcp.f
   5635   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5636   const IDESC * UNUSED idesc = abuf->idesc;
   5637   int cycles = 0;
   5638   {
   5639     int referenced = 0;
   5640     int UNUSED insn_referenced = abuf->written;
   5641     INT in_Rd = -1;
   5642     INT in_Rs = -1;
   5643     INT out_Rd = -1;
   5644     in_Rs = FLD (in_Rs);
   5645     referenced |= 1 << 1;
   5646     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   5647   }
   5648   return cycles;
   5649 #undef FLD
   5650 }
   5651 
   5652 static int
   5653 model_crisv32_ftagd (SIM_CPU *current_cpu, void *sem_arg)
   5654 {
   5655 #define FLD(f) abuf->fields.sfmt_mcp.f
   5656   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   5657   const IDESC * UNUSED idesc = abuf->idesc;
   5658   int cycles = 0;
   5659   {
   5660     int referenced = 0;
   5661     int UNUSED insn_referenced = abuf->written;
   5662     INT in_Rd = -1;
   5663     INT in_Rs = -1;
   5664     INT out_Rd = -1;
   5665     in_Rs = FLD (in_Rs);
   5666     referenced |= 1 << 1;
   5667     cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
   5668   }
   5669   return cycles;
   5670 #undef FLD
   5671 }
   5672 
   5673 /* We assume UNIT_NONE == 0 because the tables don't always terminate
   5674    entries with it.  */
   5675 
   5676 /* Model timing data for `crisv32'.  */
   5677 
   5678 static const INSN_TIMING crisv32_timing[] = {
   5679   { CRISV32F_INSN_X_INVALID, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5680   { CRISV32F_INSN_X_AFTER, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5681   { CRISV32F_INSN_X_BEFORE, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5682   { CRISV32F_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5683   { CRISV32F_INSN_X_CHAIN, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5684   { CRISV32F_INSN_X_BEGIN, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5685   { CRISV32F_INSN_MOVE_B_R, model_crisv32_move_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5686   { CRISV32F_INSN_MOVE_W_R, model_crisv32_move_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5687   { CRISV32F_INSN_MOVE_D_R, model_crisv32_move_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5688   { CRISV32F_INSN_MOVEQ, model_crisv32_moveq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5689   { CRISV32F_INSN_MOVS_B_R, model_crisv32_movs_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5690   { CRISV32F_INSN_MOVS_W_R, model_crisv32_movs_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5691   { CRISV32F_INSN_MOVU_B_R, model_crisv32_movu_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5692   { CRISV32F_INSN_MOVU_W_R, model_crisv32_movu_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5693   { CRISV32F_INSN_MOVECBR, model_crisv32_movecbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5694   { CRISV32F_INSN_MOVECWR, model_crisv32_movecwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5695   { CRISV32F_INSN_MOVECDR, model_crisv32_movecdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5696   { CRISV32F_INSN_MOVSCBR, model_crisv32_movscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5697   { CRISV32F_INSN_MOVSCWR, model_crisv32_movscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5698   { CRISV32F_INSN_MOVUCBR, model_crisv32_movucbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5699   { CRISV32F_INSN_MOVUCWR, model_crisv32_movucwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5700   { CRISV32F_INSN_ADDQ, model_crisv32_addq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5701   { CRISV32F_INSN_SUBQ, model_crisv32_subq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5702   { CRISV32F_INSN_CMP_R_B_R, model_crisv32_cmp_r_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5703   { CRISV32F_INSN_CMP_R_W_R, model_crisv32_cmp_r_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5704   { CRISV32F_INSN_CMP_R_D_R, model_crisv32_cmp_r_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5705   { CRISV32F_INSN_CMP_M_B_M, model_crisv32_cmp_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5706   { CRISV32F_INSN_CMP_M_W_M, model_crisv32_cmp_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5707   { CRISV32F_INSN_CMP_M_D_M, model_crisv32_cmp_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5708   { CRISV32F_INSN_CMPCBR, model_crisv32_cmpcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5709   { CRISV32F_INSN_CMPCWR, model_crisv32_cmpcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5710   { CRISV32F_INSN_CMPCDR, model_crisv32_cmpcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5711   { CRISV32F_INSN_CMPQ, model_crisv32_cmpq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5712   { CRISV32F_INSN_CMPS_M_B_M, model_crisv32_cmps_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5713   { CRISV32F_INSN_CMPS_M_W_M, model_crisv32_cmps_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5714   { CRISV32F_INSN_CMPSCBR, model_crisv32_cmpscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5715   { CRISV32F_INSN_CMPSCWR, model_crisv32_cmpscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5716   { CRISV32F_INSN_CMPU_M_B_M, model_crisv32_cmpu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5717   { CRISV32F_INSN_CMPU_M_W_M, model_crisv32_cmpu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5718   { CRISV32F_INSN_CMPUCBR, model_crisv32_cmpucbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5719   { CRISV32F_INSN_CMPUCWR, model_crisv32_cmpucwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5720   { CRISV32F_INSN_MOVE_M_B_M, model_crisv32_move_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5721   { CRISV32F_INSN_MOVE_M_W_M, model_crisv32_move_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5722   { CRISV32F_INSN_MOVE_M_D_M, model_crisv32_move_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5723   { CRISV32F_INSN_MOVS_M_B_M, model_crisv32_movs_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5724   { CRISV32F_INSN_MOVS_M_W_M, model_crisv32_movs_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5725   { CRISV32F_INSN_MOVU_M_B_M, model_crisv32_movu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5726   { CRISV32F_INSN_MOVU_M_W_M, model_crisv32_movu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5727   { CRISV32F_INSN_MOVE_R_SPRV32, model_crisv32_move_r_sprv32, { { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
   5728   { CRISV32F_INSN_MOVE_SPR_RV32, model_crisv32_move_spr_rv32, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5729   { CRISV32F_INSN_MOVE_M_SPRV32, model_crisv32_move_m_sprv32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
   5730   { CRISV32F_INSN_MOVE_C_SPRV32_P2, model_crisv32_move_c_sprv32_p2, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
   5731   { CRISV32F_INSN_MOVE_C_SPRV32_P3, model_crisv32_move_c_sprv32_p3, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
   5732   { CRISV32F_INSN_MOVE_C_SPRV32_P5, model_crisv32_move_c_sprv32_p5, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
   5733   { CRISV32F_INSN_MOVE_C_SPRV32_P6, model_crisv32_move_c_sprv32_p6, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
   5734   { CRISV32F_INSN_MOVE_C_SPRV32_P7, model_crisv32_move_c_sprv32_p7, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
   5735   { CRISV32F_INSN_MOVE_C_SPRV32_P9, model_crisv32_move_c_sprv32_p9, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
   5736   { CRISV32F_INSN_MOVE_C_SPRV32_P10, model_crisv32_move_c_sprv32_p10, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
   5737   { CRISV32F_INSN_MOVE_C_SPRV32_P11, model_crisv32_move_c_sprv32_p11, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
   5738   { CRISV32F_INSN_MOVE_C_SPRV32_P12, model_crisv32_move_c_sprv32_p12, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
   5739   { CRISV32F_INSN_MOVE_C_SPRV32_P13, model_crisv32_move_c_sprv32_p13, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
   5740   { CRISV32F_INSN_MOVE_C_SPRV32_P14, model_crisv32_move_c_sprv32_p14, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
   5741   { CRISV32F_INSN_MOVE_C_SPRV32_P15, model_crisv32_move_c_sprv32_p15, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
   5742   { CRISV32F_INSN_MOVE_SPR_MV32, model_crisv32_move_spr_mv32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } },
   5743   { CRISV32F_INSN_MOVE_SS_R, model_crisv32_move_ss_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5744   { CRISV32F_INSN_MOVE_R_SS, model_crisv32_move_r_ss, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5745   { CRISV32F_INSN_MOVEM_R_M_V32, model_crisv32_movem_r_m_v32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MOVEM_RTOM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_MOVEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } },
   5746   { CRISV32F_INSN_MOVEM_M_R_V32, model_crisv32_movem_m_r_v32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_MOVEM_MTOR, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_MOVEM, 1, 1 } } },
   5747   { CRISV32F_INSN_ADD_B_R, model_crisv32_add_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5748   { CRISV32F_INSN_ADD_W_R, model_crisv32_add_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5749   { CRISV32F_INSN_ADD_D_R, model_crisv32_add_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5750   { CRISV32F_INSN_ADD_M_B_M, model_crisv32_add_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5751   { CRISV32F_INSN_ADD_M_W_M, model_crisv32_add_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5752   { CRISV32F_INSN_ADD_M_D_M, model_crisv32_add_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5753   { CRISV32F_INSN_ADDCBR, model_crisv32_addcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5754   { CRISV32F_INSN_ADDCWR, model_crisv32_addcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5755   { CRISV32F_INSN_ADDCDR, model_crisv32_addcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5756   { CRISV32F_INSN_ADDS_B_R, model_crisv32_adds_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5757   { CRISV32F_INSN_ADDS_W_R, model_crisv32_adds_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5758   { CRISV32F_INSN_ADDS_M_B_M, model_crisv32_adds_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5759   { CRISV32F_INSN_ADDS_M_W_M, model_crisv32_adds_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5760   { CRISV32F_INSN_ADDSCBR, model_crisv32_addscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5761   { CRISV32F_INSN_ADDSCWR, model_crisv32_addscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5762   { CRISV32F_INSN_ADDU_B_R, model_crisv32_addu_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5763   { CRISV32F_INSN_ADDU_W_R, model_crisv32_addu_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5764   { CRISV32F_INSN_ADDU_M_B_M, model_crisv32_addu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5765   { CRISV32F_INSN_ADDU_M_W_M, model_crisv32_addu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5766   { CRISV32F_INSN_ADDUCBR, model_crisv32_adducbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5767   { CRISV32F_INSN_ADDUCWR, model_crisv32_adducwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5768   { CRISV32F_INSN_SUB_B_R, model_crisv32_sub_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5769   { CRISV32F_INSN_SUB_W_R, model_crisv32_sub_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5770   { CRISV32F_INSN_SUB_D_R, model_crisv32_sub_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5771   { CRISV32F_INSN_SUB_M_B_M, model_crisv32_sub_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5772   { CRISV32F_INSN_SUB_M_W_M, model_crisv32_sub_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5773   { CRISV32F_INSN_SUB_M_D_M, model_crisv32_sub_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5774   { CRISV32F_INSN_SUBCBR, model_crisv32_subcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5775   { CRISV32F_INSN_SUBCWR, model_crisv32_subcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5776   { CRISV32F_INSN_SUBCDR, model_crisv32_subcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5777   { CRISV32F_INSN_SUBS_B_R, model_crisv32_subs_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5778   { CRISV32F_INSN_SUBS_W_R, model_crisv32_subs_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5779   { CRISV32F_INSN_SUBS_M_B_M, model_crisv32_subs_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5780   { CRISV32F_INSN_SUBS_M_W_M, model_crisv32_subs_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5781   { CRISV32F_INSN_SUBSCBR, model_crisv32_subscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5782   { CRISV32F_INSN_SUBSCWR, model_crisv32_subscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5783   { CRISV32F_INSN_SUBU_B_R, model_crisv32_subu_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5784   { CRISV32F_INSN_SUBU_W_R, model_crisv32_subu_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5785   { CRISV32F_INSN_SUBU_M_B_M, model_crisv32_subu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5786   { CRISV32F_INSN_SUBU_M_W_M, model_crisv32_subu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5787   { CRISV32F_INSN_SUBUCBR, model_crisv32_subucbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5788   { CRISV32F_INSN_SUBUCWR, model_crisv32_subucwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5789   { CRISV32F_INSN_ADDC_R, model_crisv32_addc_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5790   { CRISV32F_INSN_ADDC_M, model_crisv32_addc_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5791   { CRISV32F_INSN_ADDC_C, model_crisv32_addc_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5792   { CRISV32F_INSN_LAPC_D, model_crisv32_lapc_d, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5793   { CRISV32F_INSN_LAPCQ, model_crisv32_lapcq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5794   { CRISV32F_INSN_ADDI_B_R, model_crisv32_addi_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5795   { CRISV32F_INSN_ADDI_W_R, model_crisv32_addi_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5796   { CRISV32F_INSN_ADDI_D_R, model_crisv32_addi_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5797   { CRISV32F_INSN_NEG_B_R, model_crisv32_neg_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5798   { CRISV32F_INSN_NEG_W_R, model_crisv32_neg_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5799   { CRISV32F_INSN_NEG_D_R, model_crisv32_neg_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5800   { CRISV32F_INSN_TEST_M_B_M, model_crisv32_test_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5801   { CRISV32F_INSN_TEST_M_W_M, model_crisv32_test_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5802   { CRISV32F_INSN_TEST_M_D_M, model_crisv32_test_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5803   { CRISV32F_INSN_MOVE_R_M_B_M, model_crisv32_move_r_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } },
   5804   { CRISV32F_INSN_MOVE_R_M_W_M, model_crisv32_move_r_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } },
   5805   { CRISV32F_INSN_MOVE_R_M_D_M, model_crisv32_move_r_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } },
   5806   { CRISV32F_INSN_MULS_B, model_crisv32_muls_b, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5807   { CRISV32F_INSN_MULS_W, model_crisv32_muls_w, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5808   { CRISV32F_INSN_MULS_D, model_crisv32_muls_d, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5809   { CRISV32F_INSN_MULU_B, model_crisv32_mulu_b, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5810   { CRISV32F_INSN_MULU_W, model_crisv32_mulu_w, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5811   { CRISV32F_INSN_MULU_D, model_crisv32_mulu_d, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5812   { CRISV32F_INSN_MCP, model_crisv32_mcp, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5813   { CRISV32F_INSN_DSTEP, model_crisv32_dstep, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5814   { CRISV32F_INSN_ABS, model_crisv32_abs, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5815   { CRISV32F_INSN_AND_B_R, model_crisv32_and_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5816   { CRISV32F_INSN_AND_W_R, model_crisv32_and_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5817   { CRISV32F_INSN_AND_D_R, model_crisv32_and_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5818   { CRISV32F_INSN_AND_M_B_M, model_crisv32_and_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5819   { CRISV32F_INSN_AND_M_W_M, model_crisv32_and_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5820   { CRISV32F_INSN_AND_M_D_M, model_crisv32_and_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5821   { CRISV32F_INSN_ANDCBR, model_crisv32_andcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5822   { CRISV32F_INSN_ANDCWR, model_crisv32_andcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5823   { CRISV32F_INSN_ANDCDR, model_crisv32_andcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5824   { CRISV32F_INSN_ANDQ, model_crisv32_andq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5825   { CRISV32F_INSN_ORR_B_R, model_crisv32_orr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5826   { CRISV32F_INSN_ORR_W_R, model_crisv32_orr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5827   { CRISV32F_INSN_ORR_D_R, model_crisv32_orr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5828   { CRISV32F_INSN_OR_M_B_M, model_crisv32_or_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5829   { CRISV32F_INSN_OR_M_W_M, model_crisv32_or_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5830   { CRISV32F_INSN_OR_M_D_M, model_crisv32_or_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5831   { CRISV32F_INSN_ORCBR, model_crisv32_orcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5832   { CRISV32F_INSN_ORCWR, model_crisv32_orcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5833   { CRISV32F_INSN_ORCDR, model_crisv32_orcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5834   { CRISV32F_INSN_ORQ, model_crisv32_orq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5835   { CRISV32F_INSN_XOR, model_crisv32_xor, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5836   { CRISV32F_INSN_SWAP, model_crisv32_swap, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5837   { CRISV32F_INSN_ASRR_B_R, model_crisv32_asrr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5838   { CRISV32F_INSN_ASRR_W_R, model_crisv32_asrr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5839   { CRISV32F_INSN_ASRR_D_R, model_crisv32_asrr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5840   { CRISV32F_INSN_ASRQ, model_crisv32_asrq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5841   { CRISV32F_INSN_LSRR_B_R, model_crisv32_lsrr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5842   { CRISV32F_INSN_LSRR_W_R, model_crisv32_lsrr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5843   { CRISV32F_INSN_LSRR_D_R, model_crisv32_lsrr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5844   { CRISV32F_INSN_LSRQ, model_crisv32_lsrq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5845   { CRISV32F_INSN_LSLR_B_R, model_crisv32_lslr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5846   { CRISV32F_INSN_LSLR_W_R, model_crisv32_lslr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5847   { CRISV32F_INSN_LSLR_D_R, model_crisv32_lslr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5848   { CRISV32F_INSN_LSLQ, model_crisv32_lslq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5849   { CRISV32F_INSN_BTST, model_crisv32_btst, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5850   { CRISV32F_INSN_BTSTQ, model_crisv32_btstq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5851   { CRISV32F_INSN_SETF, model_crisv32_setf, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5852   { CRISV32F_INSN_CLEARF, model_crisv32_clearf, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5853   { CRISV32F_INSN_RFE, model_crisv32_rfe, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5854   { CRISV32F_INSN_SFE, model_crisv32_sfe, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5855   { CRISV32F_INSN_RFG, model_crisv32_rfg, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5856   { CRISV32F_INSN_RFN, model_crisv32_rfn, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5857   { CRISV32F_INSN_HALT, model_crisv32_halt, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5858   { CRISV32F_INSN_BCC_B, model_crisv32_bcc_b, { { (int) UNIT_CRISV32_U_BRANCH, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5859   { CRISV32F_INSN_BA_B, model_crisv32_ba_b, { { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5860   { CRISV32F_INSN_BCC_W, model_crisv32_bcc_w, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_BRANCH, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5861   { CRISV32F_INSN_BA_W, model_crisv32_ba_w, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5862   { CRISV32F_INSN_JAS_R, model_crisv32_jas_r, { { (int) UNIT_CRISV32_U_JUMP_R, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5863   { CRISV32F_INSN_JAS_C, model_crisv32_jas_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5864   { CRISV32F_INSN_JUMP_P, model_crisv32_jump_p, { { (int) UNIT_CRISV32_U_JUMP_SR, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5865   { CRISV32F_INSN_BAS_C, model_crisv32_bas_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5866   { CRISV32F_INSN_JASC_R, model_crisv32_jasc_r, { { (int) UNIT_CRISV32_U_JUMP_R, 1, 1 }, { (int) UNIT_CRISV32_U_SKIP4, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5867   { CRISV32F_INSN_JASC_C, model_crisv32_jasc_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_SKIP4, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5868   { CRISV32F_INSN_BASC_C, model_crisv32_basc_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_SKIP4, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5869   { CRISV32F_INSN_BREAK, model_crisv32_break, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5870   { CRISV32F_INSN_BOUND_R_B_R, model_crisv32_bound_r_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5871   { CRISV32F_INSN_BOUND_R_W_R, model_crisv32_bound_r_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5872   { CRISV32F_INSN_BOUND_R_D_R, model_crisv32_bound_r_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5873   { CRISV32F_INSN_BOUND_CB, model_crisv32_bound_cb, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5874   { CRISV32F_INSN_BOUND_CW, model_crisv32_bound_cw, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5875   { CRISV32F_INSN_BOUND_CD, model_crisv32_bound_cd, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5876   { CRISV32F_INSN_SCC, model_crisv32_scc, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5877   { CRISV32F_INSN_LZ, model_crisv32_lz, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5878   { CRISV32F_INSN_ADDOQ, model_crisv32_addoq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5879   { CRISV32F_INSN_ADDO_M_B_M, model_crisv32_addo_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5880   { CRISV32F_INSN_ADDO_M_W_M, model_crisv32_addo_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5881   { CRISV32F_INSN_ADDO_M_D_M, model_crisv32_addo_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5882   { CRISV32F_INSN_ADDO_CB, model_crisv32_addo_cb, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5883   { CRISV32F_INSN_ADDO_CW, model_crisv32_addo_cw, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5884   { CRISV32F_INSN_ADDO_CD, model_crisv32_addo_cd, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5885   { CRISV32F_INSN_ADDI_ACR_B_R, model_crisv32_addi_acr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5886   { CRISV32F_INSN_ADDI_ACR_W_R, model_crisv32_addi_acr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5887   { CRISV32F_INSN_ADDI_ACR_D_R, model_crisv32_addi_acr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5888   { CRISV32F_INSN_FIDXI, model_crisv32_fidxi, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5889   { CRISV32F_INSN_FTAGI, model_crisv32_ftagi, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5890   { CRISV32F_INSN_FIDXD, model_crisv32_fidxd, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5891   { CRISV32F_INSN_FTAGD, model_crisv32_ftagd, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
   5892 };
   5893 
   5894 #endif /* WITH_PROFILE_MODEL_P */
   5895 
   5896 static void
   5897 crisv32_model_init (SIM_CPU *cpu)
   5898 {
   5899   CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_CRISV32_DATA));
   5900 }
   5901 
   5902 #if WITH_PROFILE_MODEL_P
   5903 #define TIMING_DATA(td) td
   5904 #else
   5905 #define TIMING_DATA(td) 0
   5906 #endif
   5907 
   5908 static const SIM_MODEL crisv32_models[] =
   5909 {
   5910   { "crisv32", & crisv32_mach, MODEL_CRISV32, TIMING_DATA (& crisv32_timing[0]), crisv32_model_init },
   5911   { 0 }
   5912 };
   5913 
   5914 /* The properties of this cpu's implementation.  */
   5915 
   5916 static const SIM_MACH_IMP_PROPERTIES crisv32f_imp_properties =
   5917 {
   5918   sizeof (SIM_CPU),
   5919 #if WITH_SCACHE
   5920   sizeof (SCACHE)
   5921 #else
   5922   0
   5923 #endif
   5924 };
   5925 
   5926 
   5927 static void
   5928 crisv32f_prepare_run (SIM_CPU *cpu)
   5929 {
   5930   if (CPU_IDESC (cpu) == NULL)
   5931     crisv32f_init_idesc_table (cpu);
   5932 }
   5933 
   5934 static const CGEN_INSN *
   5935 crisv32f_get_idata (SIM_CPU *cpu, int inum)
   5936 {
   5937   return CPU_IDESC (cpu) [inum].idata;
   5938 }
   5939 
   5940 static void
   5941 crisv32_init_cpu (SIM_CPU *cpu)
   5942 {
   5943   CPU_REG_FETCH (cpu) = crisv32f_fetch_register;
   5944   CPU_REG_STORE (cpu) = crisv32f_store_register;
   5945   CPU_PC_FETCH (cpu) = crisv32f_h_pc_get;
   5946   CPU_PC_STORE (cpu) = crisv32f_h_pc_set;
   5947   CPU_GET_IDATA (cpu) = crisv32f_get_idata;
   5948   CPU_MAX_INSNS (cpu) = CRISV32F_INSN__MAX;
   5949   CPU_INSN_NAME (cpu) = cgen_insn_name;
   5950   CPU_FULL_ENGINE_FN (cpu) = crisv32f_engine_run_full;
   5951 #if WITH_FAST
   5952   CPU_FAST_ENGINE_FN (cpu) = crisv32f_engine_run_fast;
   5953 #else
   5954   CPU_FAST_ENGINE_FN (cpu) = crisv32f_engine_run_full;
   5955 #endif
   5956 }
   5957 
   5958 const SIM_MACH crisv32_mach =
   5959 {
   5960   "crisv32", "crisv32", MACH_CRISV32,
   5961   32, 32, & crisv32_models[0], & crisv32f_imp_properties,
   5962   crisv32_init_cpu,
   5963   crisv32f_prepare_run
   5964 };
   5965 
   5966