Home | History | Annotate | Line # | Download | only in m32r
      1   1.1  christos /* Simulator model support for m32rxf.
      2   1.1  christos 
      3   1.1  christos THIS FILE IS MACHINE GENERATED WITH CGEN.
      4   1.1  christos 
      5  1.11  christos Copyright (C) 1996-2024 Free Software Foundation, Inc.
      6   1.1  christos 
      7   1.1  christos This file is part of the GNU simulators.
      8   1.1  christos 
      9   1.1  christos    This file is free software; you can redistribute it and/or modify
     10   1.1  christos    it under the terms of the GNU General Public License as published by
     11   1.1  christos    the Free Software Foundation; either version 3, or (at your option)
     12   1.1  christos    any later version.
     13   1.1  christos 
     14   1.1  christos    It is distributed in the hope that it will be useful, but WITHOUT
     15   1.1  christos    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     16   1.1  christos    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
     17   1.1  christos    License for more details.
     18   1.1  christos 
     19   1.1  christos    You should have received a copy of the GNU General Public License along
     20  1.11  christos    with this program; if not, write to the Free Software Foundation, Inc.,
     21  1.11  christos    51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
     22   1.1  christos 
     23   1.1  christos */
     24   1.1  christos 
     25   1.1  christos #define WANT_CPU m32rxf
     26   1.1  christos #define WANT_CPU_M32RXF
     27   1.1  christos 
     28   1.1  christos #include "sim-main.h"
     29   1.1  christos 
     30   1.1  christos /* The profiling data is recorded here, but is accessed via the profiling
     31   1.1  christos    mechanism.  After all, this is information for profiling.  */
     32   1.1  christos 
     33   1.1  christos #if WITH_PROFILE_MODEL_P
     34   1.1  christos 
     35   1.1  christos /* Model handlers for each insn.  */
     36   1.1  christos 
     37   1.1  christos static int
     38   1.1  christos model_m32rx_add (SIM_CPU *current_cpu, void *sem_arg)
     39   1.1  christos {
     40   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
     41   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
     42   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
     43   1.1  christos   int cycles = 0;
     44   1.1  christos   {
     45   1.1  christos     int referenced = 0;
     46   1.1  christos     int UNUSED insn_referenced = abuf->written;
     47   1.1  christos     INT in_sr = -1;
     48   1.1  christos     INT in_dr = -1;
     49   1.1  christos     INT out_dr = -1;
     50   1.1  christos     in_sr = FLD (in_sr);
     51   1.1  christos     in_dr = FLD (in_dr);
     52   1.1  christos     out_dr = FLD (out_dr);
     53   1.1  christos     referenced |= 1 << 0;
     54   1.1  christos     referenced |= 1 << 1;
     55   1.1  christos     referenced |= 1 << 2;
     56   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
     57   1.1  christos   }
     58   1.1  christos   return cycles;
     59   1.1  christos #undef FLD
     60   1.1  christos }
     61   1.1  christos 
     62   1.1  christos static int
     63   1.1  christos model_m32rx_add3 (SIM_CPU *current_cpu, void *sem_arg)
     64   1.1  christos {
     65   1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
     66   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
     67   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
     68   1.1  christos   int cycles = 0;
     69   1.1  christos   {
     70   1.1  christos     int referenced = 0;
     71   1.1  christos     int UNUSED insn_referenced = abuf->written;
     72   1.1  christos     INT in_sr = -1;
     73   1.1  christos     INT in_dr = -1;
     74   1.1  christos     INT out_dr = -1;
     75   1.1  christos     in_sr = FLD (in_sr);
     76   1.1  christos     out_dr = FLD (out_dr);
     77   1.1  christos     referenced |= 1 << 0;
     78   1.1  christos     referenced |= 1 << 2;
     79   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
     80   1.1  christos   }
     81   1.1  christos   return cycles;
     82   1.1  christos #undef FLD
     83   1.1  christos }
     84   1.1  christos 
     85   1.1  christos static int
     86   1.1  christos model_m32rx_and (SIM_CPU *current_cpu, void *sem_arg)
     87   1.1  christos {
     88   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
     89   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
     90   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
     91   1.1  christos   int cycles = 0;
     92   1.1  christos   {
     93   1.1  christos     int referenced = 0;
     94   1.1  christos     int UNUSED insn_referenced = abuf->written;
     95   1.1  christos     INT in_sr = -1;
     96   1.1  christos     INT in_dr = -1;
     97   1.1  christos     INT out_dr = -1;
     98   1.1  christos     in_sr = FLD (in_sr);
     99   1.1  christos     in_dr = FLD (in_dr);
    100   1.1  christos     out_dr = FLD (out_dr);
    101   1.1  christos     referenced |= 1 << 0;
    102   1.1  christos     referenced |= 1 << 1;
    103   1.1  christos     referenced |= 1 << 2;
    104   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    105   1.1  christos   }
    106   1.1  christos   return cycles;
    107   1.1  christos #undef FLD
    108   1.1  christos }
    109   1.1  christos 
    110   1.1  christos static int
    111   1.1  christos model_m32rx_and3 (SIM_CPU *current_cpu, void *sem_arg)
    112   1.1  christos {
    113   1.1  christos #define FLD(f) abuf->fields.sfmt_and3.f
    114   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    115   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    116   1.1  christos   int cycles = 0;
    117   1.1  christos   {
    118   1.1  christos     int referenced = 0;
    119   1.1  christos     int UNUSED insn_referenced = abuf->written;
    120   1.1  christos     INT in_sr = -1;
    121   1.1  christos     INT in_dr = -1;
    122   1.1  christos     INT out_dr = -1;
    123   1.1  christos     in_sr = FLD (in_sr);
    124   1.1  christos     out_dr = FLD (out_dr);
    125   1.1  christos     referenced |= 1 << 0;
    126   1.1  christos     referenced |= 1 << 2;
    127   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    128   1.1  christos   }
    129   1.1  christos   return cycles;
    130   1.1  christos #undef FLD
    131   1.1  christos }
    132   1.1  christos 
    133   1.1  christos static int
    134   1.1  christos model_m32rx_or (SIM_CPU *current_cpu, void *sem_arg)
    135   1.1  christos {
    136   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
    137   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    138   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    139   1.1  christos   int cycles = 0;
    140   1.1  christos   {
    141   1.1  christos     int referenced = 0;
    142   1.1  christos     int UNUSED insn_referenced = abuf->written;
    143   1.1  christos     INT in_sr = -1;
    144   1.1  christos     INT in_dr = -1;
    145   1.1  christos     INT out_dr = -1;
    146   1.1  christos     in_sr = FLD (in_sr);
    147   1.1  christos     in_dr = FLD (in_dr);
    148   1.1  christos     out_dr = FLD (out_dr);
    149   1.1  christos     referenced |= 1 << 0;
    150   1.1  christos     referenced |= 1 << 1;
    151   1.1  christos     referenced |= 1 << 2;
    152   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    153   1.1  christos   }
    154   1.1  christos   return cycles;
    155   1.1  christos #undef FLD
    156   1.1  christos }
    157   1.1  christos 
    158   1.1  christos static int
    159   1.1  christos model_m32rx_or3 (SIM_CPU *current_cpu, void *sem_arg)
    160   1.1  christos {
    161   1.1  christos #define FLD(f) abuf->fields.sfmt_and3.f
    162   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    163   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    164   1.1  christos   int cycles = 0;
    165   1.1  christos   {
    166   1.1  christos     int referenced = 0;
    167   1.1  christos     int UNUSED insn_referenced = abuf->written;
    168   1.1  christos     INT in_sr = -1;
    169   1.1  christos     INT in_dr = -1;
    170   1.1  christos     INT out_dr = -1;
    171   1.1  christos     in_sr = FLD (in_sr);
    172   1.1  christos     out_dr = FLD (out_dr);
    173   1.1  christos     referenced |= 1 << 0;
    174   1.1  christos     referenced |= 1 << 2;
    175   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    176   1.1  christos   }
    177   1.1  christos   return cycles;
    178   1.1  christos #undef FLD
    179   1.1  christos }
    180   1.1  christos 
    181   1.1  christos static int
    182   1.1  christos model_m32rx_xor (SIM_CPU *current_cpu, void *sem_arg)
    183   1.1  christos {
    184   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
    185   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    186   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    187   1.1  christos   int cycles = 0;
    188   1.1  christos   {
    189   1.1  christos     int referenced = 0;
    190   1.1  christos     int UNUSED insn_referenced = abuf->written;
    191   1.1  christos     INT in_sr = -1;
    192   1.1  christos     INT in_dr = -1;
    193   1.1  christos     INT out_dr = -1;
    194   1.1  christos     in_sr = FLD (in_sr);
    195   1.1  christos     in_dr = FLD (in_dr);
    196   1.1  christos     out_dr = FLD (out_dr);
    197   1.1  christos     referenced |= 1 << 0;
    198   1.1  christos     referenced |= 1 << 1;
    199   1.1  christos     referenced |= 1 << 2;
    200   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    201   1.1  christos   }
    202   1.1  christos   return cycles;
    203   1.1  christos #undef FLD
    204   1.1  christos }
    205   1.1  christos 
    206   1.1  christos static int
    207   1.1  christos model_m32rx_xor3 (SIM_CPU *current_cpu, void *sem_arg)
    208   1.1  christos {
    209   1.1  christos #define FLD(f) abuf->fields.sfmt_and3.f
    210   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    211   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    212   1.1  christos   int cycles = 0;
    213   1.1  christos   {
    214   1.1  christos     int referenced = 0;
    215   1.1  christos     int UNUSED insn_referenced = abuf->written;
    216   1.1  christos     INT in_sr = -1;
    217   1.1  christos     INT in_dr = -1;
    218   1.1  christos     INT out_dr = -1;
    219   1.1  christos     in_sr = FLD (in_sr);
    220   1.1  christos     out_dr = FLD (out_dr);
    221   1.1  christos     referenced |= 1 << 0;
    222   1.1  christos     referenced |= 1 << 2;
    223   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    224   1.1  christos   }
    225   1.1  christos   return cycles;
    226   1.1  christos #undef FLD
    227   1.1  christos }
    228   1.1  christos 
    229   1.1  christos static int
    230   1.1  christos model_m32rx_addi (SIM_CPU *current_cpu, void *sem_arg)
    231   1.1  christos {
    232   1.1  christos #define FLD(f) abuf->fields.sfmt_addi.f
    233   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    234   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    235   1.1  christos   int cycles = 0;
    236   1.1  christos   {
    237   1.1  christos     int referenced = 0;
    238   1.1  christos     int UNUSED insn_referenced = abuf->written;
    239   1.1  christos     INT in_sr = -1;
    240   1.1  christos     INT in_dr = -1;
    241   1.1  christos     INT out_dr = -1;
    242   1.1  christos     in_dr = FLD (in_dr);
    243   1.1  christos     out_dr = FLD (out_dr);
    244   1.1  christos     referenced |= 1 << 1;
    245   1.1  christos     referenced |= 1 << 2;
    246   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    247   1.1  christos   }
    248   1.1  christos   return cycles;
    249   1.1  christos #undef FLD
    250   1.1  christos }
    251   1.1  christos 
    252   1.1  christos static int
    253   1.1  christos model_m32rx_addv (SIM_CPU *current_cpu, void *sem_arg)
    254   1.1  christos {
    255   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
    256   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    257   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    258   1.1  christos   int cycles = 0;
    259   1.1  christos   {
    260   1.1  christos     int referenced = 0;
    261   1.1  christos     int UNUSED insn_referenced = abuf->written;
    262   1.1  christos     INT in_sr = -1;
    263   1.1  christos     INT in_dr = -1;
    264   1.1  christos     INT out_dr = -1;
    265   1.1  christos     in_sr = FLD (in_sr);
    266   1.1  christos     in_dr = FLD (in_dr);
    267   1.1  christos     out_dr = FLD (out_dr);
    268   1.1  christos     referenced |= 1 << 0;
    269   1.1  christos     referenced |= 1 << 1;
    270   1.1  christos     referenced |= 1 << 2;
    271   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    272   1.1  christos   }
    273   1.1  christos   return cycles;
    274   1.1  christos #undef FLD
    275   1.1  christos }
    276   1.1  christos 
    277   1.1  christos static int
    278   1.1  christos model_m32rx_addv3 (SIM_CPU *current_cpu, void *sem_arg)
    279   1.1  christos {
    280   1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
    281   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    282   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    283   1.1  christos   int cycles = 0;
    284   1.1  christos   {
    285   1.1  christos     int referenced = 0;
    286   1.1  christos     int UNUSED insn_referenced = abuf->written;
    287   1.1  christos     INT in_sr = -1;
    288   1.1  christos     INT in_dr = -1;
    289   1.1  christos     INT out_dr = -1;
    290   1.1  christos     in_sr = FLD (in_sr);
    291   1.1  christos     out_dr = FLD (out_dr);
    292   1.1  christos     referenced |= 1 << 0;
    293   1.1  christos     referenced |= 1 << 2;
    294   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    295   1.1  christos   }
    296   1.1  christos   return cycles;
    297   1.1  christos #undef FLD
    298   1.1  christos }
    299   1.1  christos 
    300   1.1  christos static int
    301   1.1  christos model_m32rx_addx (SIM_CPU *current_cpu, void *sem_arg)
    302   1.1  christos {
    303   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
    304   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    305   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    306   1.1  christos   int cycles = 0;
    307   1.1  christos   {
    308   1.1  christos     int referenced = 0;
    309   1.1  christos     int UNUSED insn_referenced = abuf->written;
    310   1.1  christos     INT in_sr = -1;
    311   1.1  christos     INT in_dr = -1;
    312   1.1  christos     INT out_dr = -1;
    313   1.1  christos     in_sr = FLD (in_sr);
    314   1.1  christos     in_dr = FLD (in_dr);
    315   1.1  christos     out_dr = FLD (out_dr);
    316   1.1  christos     referenced |= 1 << 0;
    317   1.1  christos     referenced |= 1 << 1;
    318   1.1  christos     referenced |= 1 << 2;
    319   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    320   1.1  christos   }
    321   1.1  christos   return cycles;
    322   1.1  christos #undef FLD
    323   1.1  christos }
    324   1.1  christos 
    325   1.1  christos static int
    326   1.1  christos model_m32rx_bc8 (SIM_CPU *current_cpu, void *sem_arg)
    327   1.1  christos {
    328   1.1  christos #define FLD(f) abuf->fields.sfmt_bl8.f
    329   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    330   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    331   1.1  christos   int cycles = 0;
    332   1.1  christos   {
    333   1.1  christos     int referenced = 0;
    334   1.1  christos     int UNUSED insn_referenced = abuf->written;
    335   1.1  christos     INT in_sr = -1;
    336   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
    337   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    338   1.1  christos   }
    339   1.1  christos   return cycles;
    340   1.1  christos #undef FLD
    341   1.1  christos }
    342   1.1  christos 
    343   1.1  christos static int
    344   1.1  christos model_m32rx_bc24 (SIM_CPU *current_cpu, void *sem_arg)
    345   1.1  christos {
    346   1.1  christos #define FLD(f) abuf->fields.sfmt_bl24.f
    347   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    348   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    349   1.1  christos   int cycles = 0;
    350   1.1  christos   {
    351   1.1  christos     int referenced = 0;
    352   1.1  christos     int UNUSED insn_referenced = abuf->written;
    353   1.1  christos     INT in_sr = -1;
    354   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
    355   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    356   1.1  christos   }
    357   1.1  christos   return cycles;
    358   1.1  christos #undef FLD
    359   1.1  christos }
    360   1.1  christos 
    361   1.1  christos static int
    362   1.1  christos model_m32rx_beq (SIM_CPU *current_cpu, void *sem_arg)
    363   1.1  christos {
    364   1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
    365   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    366   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    367   1.1  christos   int cycles = 0;
    368   1.1  christos   {
    369   1.1  christos     int referenced = 0;
    370   1.1  christos     int UNUSED insn_referenced = abuf->written;
    371   1.1  christos     INT in_sr = -1;
    372   1.1  christos     if (insn_referenced & (1 << 3)) referenced |= 1 << 1;
    373   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    374   1.1  christos   }
    375   1.1  christos   {
    376   1.1  christos     int referenced = 0;
    377   1.1  christos     int UNUSED insn_referenced = abuf->written;
    378   1.1  christos     INT in_src1 = -1;
    379   1.1  christos     INT in_src2 = -1;
    380   1.1  christos     in_src1 = FLD (in_src1);
    381   1.1  christos     in_src2 = FLD (in_src2);
    382   1.1  christos     referenced |= 1 << 0;
    383   1.1  christos     referenced |= 1 << 1;
    384   1.1  christos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
    385   1.1  christos   }
    386   1.1  christos   return cycles;
    387   1.1  christos #undef FLD
    388   1.1  christos }
    389   1.1  christos 
    390   1.1  christos static int
    391   1.1  christos model_m32rx_beqz (SIM_CPU *current_cpu, void *sem_arg)
    392   1.1  christos {
    393   1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
    394   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    395   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    396   1.1  christos   int cycles = 0;
    397   1.1  christos   {
    398   1.1  christos     int referenced = 0;
    399   1.1  christos     int UNUSED insn_referenced = abuf->written;
    400   1.1  christos     INT in_sr = -1;
    401   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
    402   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    403   1.1  christos   }
    404   1.1  christos   {
    405   1.1  christos     int referenced = 0;
    406   1.1  christos     int UNUSED insn_referenced = abuf->written;
    407   1.1  christos     INT in_src1 = -1;
    408   1.1  christos     INT in_src2 = -1;
    409   1.1  christos     in_src2 = FLD (in_src2);
    410   1.1  christos     referenced |= 1 << 1;
    411   1.1  christos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
    412   1.1  christos   }
    413   1.1  christos   return cycles;
    414   1.1  christos #undef FLD
    415   1.1  christos }
    416   1.1  christos 
    417   1.1  christos static int
    418   1.1  christos model_m32rx_bgez (SIM_CPU *current_cpu, void *sem_arg)
    419   1.1  christos {
    420   1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
    421   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    422   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    423   1.1  christos   int cycles = 0;
    424   1.1  christos   {
    425   1.1  christos     int referenced = 0;
    426   1.1  christos     int UNUSED insn_referenced = abuf->written;
    427   1.1  christos     INT in_sr = -1;
    428   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
    429   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    430   1.1  christos   }
    431   1.1  christos   {
    432   1.1  christos     int referenced = 0;
    433   1.1  christos     int UNUSED insn_referenced = abuf->written;
    434   1.1  christos     INT in_src1 = -1;
    435   1.1  christos     INT in_src2 = -1;
    436   1.1  christos     in_src2 = FLD (in_src2);
    437   1.1  christos     referenced |= 1 << 1;
    438   1.1  christos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
    439   1.1  christos   }
    440   1.1  christos   return cycles;
    441   1.1  christos #undef FLD
    442   1.1  christos }
    443   1.1  christos 
    444   1.1  christos static int
    445   1.1  christos model_m32rx_bgtz (SIM_CPU *current_cpu, void *sem_arg)
    446   1.1  christos {
    447   1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
    448   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    449   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    450   1.1  christos   int cycles = 0;
    451   1.1  christos   {
    452   1.1  christos     int referenced = 0;
    453   1.1  christos     int UNUSED insn_referenced = abuf->written;
    454   1.1  christos     INT in_sr = -1;
    455   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
    456   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    457   1.1  christos   }
    458   1.1  christos   {
    459   1.1  christos     int referenced = 0;
    460   1.1  christos     int UNUSED insn_referenced = abuf->written;
    461   1.1  christos     INT in_src1 = -1;
    462   1.1  christos     INT in_src2 = -1;
    463   1.1  christos     in_src2 = FLD (in_src2);
    464   1.1  christos     referenced |= 1 << 1;
    465   1.1  christos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
    466   1.1  christos   }
    467   1.1  christos   return cycles;
    468   1.1  christos #undef FLD
    469   1.1  christos }
    470   1.1  christos 
    471   1.1  christos static int
    472   1.1  christos model_m32rx_blez (SIM_CPU *current_cpu, void *sem_arg)
    473   1.1  christos {
    474   1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
    475   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    476   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    477   1.1  christos   int cycles = 0;
    478   1.1  christos   {
    479   1.1  christos     int referenced = 0;
    480   1.1  christos     int UNUSED insn_referenced = abuf->written;
    481   1.1  christos     INT in_sr = -1;
    482   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
    483   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    484   1.1  christos   }
    485   1.1  christos   {
    486   1.1  christos     int referenced = 0;
    487   1.1  christos     int UNUSED insn_referenced = abuf->written;
    488   1.1  christos     INT in_src1 = -1;
    489   1.1  christos     INT in_src2 = -1;
    490   1.1  christos     in_src2 = FLD (in_src2);
    491   1.1  christos     referenced |= 1 << 1;
    492   1.1  christos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
    493   1.1  christos   }
    494   1.1  christos   return cycles;
    495   1.1  christos #undef FLD
    496   1.1  christos }
    497   1.1  christos 
    498   1.1  christos static int
    499   1.1  christos model_m32rx_bltz (SIM_CPU *current_cpu, void *sem_arg)
    500   1.1  christos {
    501   1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
    502   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    503   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    504   1.1  christos   int cycles = 0;
    505   1.1  christos   {
    506   1.1  christos     int referenced = 0;
    507   1.1  christos     int UNUSED insn_referenced = abuf->written;
    508   1.1  christos     INT in_sr = -1;
    509   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
    510   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    511   1.1  christos   }
    512   1.1  christos   {
    513   1.1  christos     int referenced = 0;
    514   1.1  christos     int UNUSED insn_referenced = abuf->written;
    515   1.1  christos     INT in_src1 = -1;
    516   1.1  christos     INT in_src2 = -1;
    517   1.1  christos     in_src2 = FLD (in_src2);
    518   1.1  christos     referenced |= 1 << 1;
    519   1.1  christos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
    520   1.1  christos   }
    521   1.1  christos   return cycles;
    522   1.1  christos #undef FLD
    523   1.1  christos }
    524   1.1  christos 
    525   1.1  christos static int
    526   1.1  christos model_m32rx_bnez (SIM_CPU *current_cpu, void *sem_arg)
    527   1.1  christos {
    528   1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
    529   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    530   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    531   1.1  christos   int cycles = 0;
    532   1.1  christos   {
    533   1.1  christos     int referenced = 0;
    534   1.1  christos     int UNUSED insn_referenced = abuf->written;
    535   1.1  christos     INT in_sr = -1;
    536   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
    537   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    538   1.1  christos   }
    539   1.1  christos   {
    540   1.1  christos     int referenced = 0;
    541   1.1  christos     int UNUSED insn_referenced = abuf->written;
    542   1.1  christos     INT in_src1 = -1;
    543   1.1  christos     INT in_src2 = -1;
    544   1.1  christos     in_src2 = FLD (in_src2);
    545   1.1  christos     referenced |= 1 << 1;
    546   1.1  christos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
    547   1.1  christos   }
    548   1.1  christos   return cycles;
    549   1.1  christos #undef FLD
    550   1.1  christos }
    551   1.1  christos 
    552   1.1  christos static int
    553   1.1  christos model_m32rx_bl8 (SIM_CPU *current_cpu, void *sem_arg)
    554   1.1  christos {
    555   1.1  christos #define FLD(f) abuf->fields.sfmt_bl8.f
    556   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    557   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    558   1.1  christos   int cycles = 0;
    559   1.1  christos   {
    560   1.1  christos     int referenced = 0;
    561   1.1  christos     int UNUSED insn_referenced = abuf->written;
    562   1.1  christos     INT in_sr = -1;
    563   1.1  christos     referenced |= 1 << 1;
    564   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    565   1.1  christos   }
    566   1.1  christos   return cycles;
    567   1.1  christos #undef FLD
    568   1.1  christos }
    569   1.1  christos 
    570   1.1  christos static int
    571   1.1  christos model_m32rx_bl24 (SIM_CPU *current_cpu, void *sem_arg)
    572   1.1  christos {
    573   1.1  christos #define FLD(f) abuf->fields.sfmt_bl24.f
    574   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    575   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    576   1.1  christos   int cycles = 0;
    577   1.1  christos   {
    578   1.1  christos     int referenced = 0;
    579   1.1  christos     int UNUSED insn_referenced = abuf->written;
    580   1.1  christos     INT in_sr = -1;
    581   1.1  christos     referenced |= 1 << 1;
    582   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    583   1.1  christos   }
    584   1.1  christos   return cycles;
    585   1.1  christos #undef FLD
    586   1.1  christos }
    587   1.1  christos 
    588   1.1  christos static int
    589   1.1  christos model_m32rx_bcl8 (SIM_CPU *current_cpu, void *sem_arg)
    590   1.1  christos {
    591   1.1  christos #define FLD(f) abuf->fields.sfmt_bl8.f
    592   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    593   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    594   1.1  christos   int cycles = 0;
    595   1.1  christos   {
    596   1.1  christos     int referenced = 0;
    597   1.1  christos     int UNUSED insn_referenced = abuf->written;
    598   1.1  christos     INT in_sr = -1;
    599   1.1  christos     if (insn_referenced & (1 << 4)) referenced |= 1 << 1;
    600   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    601   1.1  christos   }
    602   1.1  christos   return cycles;
    603   1.1  christos #undef FLD
    604   1.1  christos }
    605   1.1  christos 
    606   1.1  christos static int
    607   1.1  christos model_m32rx_bcl24 (SIM_CPU *current_cpu, void *sem_arg)
    608   1.1  christos {
    609   1.1  christos #define FLD(f) abuf->fields.sfmt_bl24.f
    610   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    611   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    612   1.1  christos   int cycles = 0;
    613   1.1  christos   {
    614   1.1  christos     int referenced = 0;
    615   1.1  christos     int UNUSED insn_referenced = abuf->written;
    616   1.1  christos     INT in_sr = -1;
    617   1.1  christos     if (insn_referenced & (1 << 4)) referenced |= 1 << 1;
    618   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    619   1.1  christos   }
    620   1.1  christos   return cycles;
    621   1.1  christos #undef FLD
    622   1.1  christos }
    623   1.1  christos 
    624   1.1  christos static int
    625   1.1  christos model_m32rx_bnc8 (SIM_CPU *current_cpu, void *sem_arg)
    626   1.1  christos {
    627   1.1  christos #define FLD(f) abuf->fields.sfmt_bl8.f
    628   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    629   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    630   1.1  christos   int cycles = 0;
    631   1.1  christos   {
    632   1.1  christos     int referenced = 0;
    633   1.1  christos     int UNUSED insn_referenced = abuf->written;
    634   1.1  christos     INT in_sr = -1;
    635   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
    636   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    637   1.1  christos   }
    638   1.1  christos   return cycles;
    639   1.1  christos #undef FLD
    640   1.1  christos }
    641   1.1  christos 
    642   1.1  christos static int
    643   1.1  christos model_m32rx_bnc24 (SIM_CPU *current_cpu, void *sem_arg)
    644   1.1  christos {
    645   1.1  christos #define FLD(f) abuf->fields.sfmt_bl24.f
    646   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    647   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    648   1.1  christos   int cycles = 0;
    649   1.1  christos   {
    650   1.1  christos     int referenced = 0;
    651   1.1  christos     int UNUSED insn_referenced = abuf->written;
    652   1.1  christos     INT in_sr = -1;
    653   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
    654   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    655   1.1  christos   }
    656   1.1  christos   return cycles;
    657   1.1  christos #undef FLD
    658   1.1  christos }
    659   1.1  christos 
    660   1.1  christos static int
    661   1.1  christos model_m32rx_bne (SIM_CPU *current_cpu, void *sem_arg)
    662   1.1  christos {
    663   1.1  christos #define FLD(f) abuf->fields.sfmt_beq.f
    664   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    665   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    666   1.1  christos   int cycles = 0;
    667   1.1  christos   {
    668   1.1  christos     int referenced = 0;
    669   1.1  christos     int UNUSED insn_referenced = abuf->written;
    670   1.1  christos     INT in_sr = -1;
    671   1.1  christos     if (insn_referenced & (1 << 3)) referenced |= 1 << 1;
    672   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    673   1.1  christos   }
    674   1.1  christos   {
    675   1.1  christos     int referenced = 0;
    676   1.1  christos     int UNUSED insn_referenced = abuf->written;
    677   1.1  christos     INT in_src1 = -1;
    678   1.1  christos     INT in_src2 = -1;
    679   1.1  christos     in_src1 = FLD (in_src1);
    680   1.1  christos     in_src2 = FLD (in_src2);
    681   1.1  christos     referenced |= 1 << 0;
    682   1.1  christos     referenced |= 1 << 1;
    683   1.1  christos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
    684   1.1  christos   }
    685   1.1  christos   return cycles;
    686   1.1  christos #undef FLD
    687   1.1  christos }
    688   1.1  christos 
    689   1.1  christos static int
    690   1.1  christos model_m32rx_bra8 (SIM_CPU *current_cpu, void *sem_arg)
    691   1.1  christos {
    692   1.1  christos #define FLD(f) abuf->fields.sfmt_bl8.f
    693   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    694   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    695   1.1  christos   int cycles = 0;
    696   1.1  christos   {
    697   1.1  christos     int referenced = 0;
    698   1.1  christos     int UNUSED insn_referenced = abuf->written;
    699   1.1  christos     INT in_sr = -1;
    700   1.1  christos     referenced |= 1 << 1;
    701   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    702   1.1  christos   }
    703   1.1  christos   return cycles;
    704   1.1  christos #undef FLD
    705   1.1  christos }
    706   1.1  christos 
    707   1.1  christos static int
    708   1.1  christos model_m32rx_bra24 (SIM_CPU *current_cpu, void *sem_arg)
    709   1.1  christos {
    710   1.1  christos #define FLD(f) abuf->fields.sfmt_bl24.f
    711   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    712   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    713   1.1  christos   int cycles = 0;
    714   1.1  christos   {
    715   1.1  christos     int referenced = 0;
    716   1.1  christos     int UNUSED insn_referenced = abuf->written;
    717   1.1  christos     INT in_sr = -1;
    718   1.1  christos     referenced |= 1 << 1;
    719   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    720   1.1  christos   }
    721   1.1  christos   return cycles;
    722   1.1  christos #undef FLD
    723   1.1  christos }
    724   1.1  christos 
    725   1.1  christos static int
    726   1.1  christos model_m32rx_bncl8 (SIM_CPU *current_cpu, void *sem_arg)
    727   1.1  christos {
    728   1.1  christos #define FLD(f) abuf->fields.sfmt_bl8.f
    729   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    730   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    731   1.1  christos   int cycles = 0;
    732   1.1  christos   {
    733   1.1  christos     int referenced = 0;
    734   1.1  christos     int UNUSED insn_referenced = abuf->written;
    735   1.1  christos     INT in_sr = -1;
    736   1.1  christos     if (insn_referenced & (1 << 4)) referenced |= 1 << 1;
    737   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    738   1.1  christos   }
    739   1.1  christos   return cycles;
    740   1.1  christos #undef FLD
    741   1.1  christos }
    742   1.1  christos 
    743   1.1  christos static int
    744   1.1  christos model_m32rx_bncl24 (SIM_CPU *current_cpu, void *sem_arg)
    745   1.1  christos {
    746   1.1  christos #define FLD(f) abuf->fields.sfmt_bl24.f
    747   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    748   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    749   1.1  christos   int cycles = 0;
    750   1.1  christos   {
    751   1.1  christos     int referenced = 0;
    752   1.1  christos     int UNUSED insn_referenced = abuf->written;
    753   1.1  christos     INT in_sr = -1;
    754   1.1  christos     if (insn_referenced & (1 << 4)) referenced |= 1 << 1;
    755   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
    756   1.1  christos   }
    757   1.1  christos   return cycles;
    758   1.1  christos #undef FLD
    759   1.1  christos }
    760   1.1  christos 
    761   1.1  christos static int
    762   1.1  christos model_m32rx_cmp (SIM_CPU *current_cpu, void *sem_arg)
    763   1.1  christos {
    764   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
    765   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    766   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    767   1.1  christos   int cycles = 0;
    768   1.1  christos   {
    769   1.1  christos     int referenced = 0;
    770   1.1  christos     int UNUSED insn_referenced = abuf->written;
    771   1.1  christos     INT in_src1 = -1;
    772   1.1  christos     INT in_src2 = -1;
    773   1.1  christos     in_src1 = FLD (in_src1);
    774   1.1  christos     in_src2 = FLD (in_src2);
    775   1.1  christos     referenced |= 1 << 0;
    776   1.1  christos     referenced |= 1 << 1;
    777   1.1  christos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
    778   1.1  christos   }
    779   1.1  christos   return cycles;
    780   1.1  christos #undef FLD
    781   1.1  christos }
    782   1.1  christos 
    783   1.1  christos static int
    784   1.1  christos model_m32rx_cmpi (SIM_CPU *current_cpu, void *sem_arg)
    785   1.1  christos {
    786   1.1  christos #define FLD(f) abuf->fields.sfmt_st_d.f
    787   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    788   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    789   1.1  christos   int cycles = 0;
    790   1.1  christos   {
    791   1.1  christos     int referenced = 0;
    792   1.1  christos     int UNUSED insn_referenced = abuf->written;
    793   1.1  christos     INT in_src1 = -1;
    794   1.1  christos     INT in_src2 = -1;
    795   1.1  christos     in_src2 = FLD (in_src2);
    796   1.1  christos     referenced |= 1 << 1;
    797   1.1  christos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
    798   1.1  christos   }
    799   1.1  christos   return cycles;
    800   1.1  christos #undef FLD
    801   1.1  christos }
    802   1.1  christos 
    803   1.1  christos static int
    804   1.1  christos model_m32rx_cmpu (SIM_CPU *current_cpu, void *sem_arg)
    805   1.1  christos {
    806   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
    807   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    808   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    809   1.1  christos   int cycles = 0;
    810   1.1  christos   {
    811   1.1  christos     int referenced = 0;
    812   1.1  christos     int UNUSED insn_referenced = abuf->written;
    813   1.1  christos     INT in_src1 = -1;
    814   1.1  christos     INT in_src2 = -1;
    815   1.1  christos     in_src1 = FLD (in_src1);
    816   1.1  christos     in_src2 = FLD (in_src2);
    817   1.1  christos     referenced |= 1 << 0;
    818   1.1  christos     referenced |= 1 << 1;
    819   1.1  christos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
    820   1.1  christos   }
    821   1.1  christos   return cycles;
    822   1.1  christos #undef FLD
    823   1.1  christos }
    824   1.1  christos 
    825   1.1  christos static int
    826   1.1  christos model_m32rx_cmpui (SIM_CPU *current_cpu, void *sem_arg)
    827   1.1  christos {
    828   1.1  christos #define FLD(f) abuf->fields.sfmt_st_d.f
    829   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    830   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    831   1.1  christos   int cycles = 0;
    832   1.1  christos   {
    833   1.1  christos     int referenced = 0;
    834   1.1  christos     int UNUSED insn_referenced = abuf->written;
    835   1.1  christos     INT in_src1 = -1;
    836   1.1  christos     INT in_src2 = -1;
    837   1.1  christos     in_src2 = FLD (in_src2);
    838   1.1  christos     referenced |= 1 << 1;
    839   1.1  christos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
    840   1.1  christos   }
    841   1.1  christos   return cycles;
    842   1.1  christos #undef FLD
    843   1.1  christos }
    844   1.1  christos 
    845   1.1  christos static int
    846   1.1  christos model_m32rx_cmpeq (SIM_CPU *current_cpu, void *sem_arg)
    847   1.1  christos {
    848   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
    849   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    850   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    851   1.1  christos   int cycles = 0;
    852   1.1  christos   {
    853   1.1  christos     int referenced = 0;
    854   1.1  christos     int UNUSED insn_referenced = abuf->written;
    855   1.1  christos     INT in_src1 = -1;
    856   1.1  christos     INT in_src2 = -1;
    857   1.1  christos     in_src1 = FLD (in_src1);
    858   1.1  christos     in_src2 = FLD (in_src2);
    859   1.1  christos     referenced |= 1 << 0;
    860   1.1  christos     referenced |= 1 << 1;
    861   1.1  christos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
    862   1.1  christos   }
    863   1.1  christos   return cycles;
    864   1.1  christos #undef FLD
    865   1.1  christos }
    866   1.1  christos 
    867   1.1  christos static int
    868   1.1  christos model_m32rx_cmpz (SIM_CPU *current_cpu, void *sem_arg)
    869   1.1  christos {
    870   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
    871   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    872   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    873   1.1  christos   int cycles = 0;
    874   1.1  christos   {
    875   1.1  christos     int referenced = 0;
    876   1.1  christos     int UNUSED insn_referenced = abuf->written;
    877   1.1  christos     INT in_src1 = -1;
    878   1.1  christos     INT in_src2 = -1;
    879   1.1  christos     in_src2 = FLD (in_src2);
    880   1.1  christos     referenced |= 1 << 1;
    881   1.1  christos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
    882   1.1  christos   }
    883   1.1  christos   return cycles;
    884   1.1  christos #undef FLD
    885   1.1  christos }
    886   1.1  christos 
    887   1.1  christos static int
    888   1.1  christos model_m32rx_div (SIM_CPU *current_cpu, void *sem_arg)
    889   1.1  christos {
    890   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
    891   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    892   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    893   1.1  christos   int cycles = 0;
    894   1.1  christos   {
    895   1.1  christos     int referenced = 0;
    896   1.1  christos     int UNUSED insn_referenced = abuf->written;
    897   1.1  christos     INT in_sr = -1;
    898   1.1  christos     INT in_dr = -1;
    899   1.1  christos     INT out_dr = -1;
    900   1.1  christos     in_sr = FLD (in_sr);
    901   1.1  christos     in_dr = FLD (in_dr);
    902   1.1  christos     out_dr = FLD (out_dr);
    903   1.1  christos     referenced |= 1 << 0;
    904   1.1  christos     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
    905   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
    906   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    907   1.1  christos   }
    908   1.1  christos   return cycles;
    909   1.1  christos #undef FLD
    910   1.1  christos }
    911   1.1  christos 
    912   1.1  christos static int
    913   1.1  christos model_m32rx_divu (SIM_CPU *current_cpu, void *sem_arg)
    914   1.1  christos {
    915   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
    916   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    917   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    918   1.1  christos   int cycles = 0;
    919   1.1  christos   {
    920   1.1  christos     int referenced = 0;
    921   1.1  christos     int UNUSED insn_referenced = abuf->written;
    922   1.1  christos     INT in_sr = -1;
    923   1.1  christos     INT in_dr = -1;
    924   1.1  christos     INT out_dr = -1;
    925   1.1  christos     in_sr = FLD (in_sr);
    926   1.1  christos     in_dr = FLD (in_dr);
    927   1.1  christos     out_dr = FLD (out_dr);
    928   1.1  christos     referenced |= 1 << 0;
    929   1.1  christos     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
    930   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
    931   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    932   1.1  christos   }
    933   1.1  christos   return cycles;
    934   1.1  christos #undef FLD
    935   1.1  christos }
    936   1.1  christos 
    937   1.1  christos static int
    938   1.1  christos model_m32rx_rem (SIM_CPU *current_cpu, void *sem_arg)
    939   1.1  christos {
    940   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
    941   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    942   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    943   1.1  christos   int cycles = 0;
    944   1.1  christos   {
    945   1.1  christos     int referenced = 0;
    946   1.1  christos     int UNUSED insn_referenced = abuf->written;
    947   1.1  christos     INT in_sr = -1;
    948   1.1  christos     INT in_dr = -1;
    949   1.1  christos     INT out_dr = -1;
    950   1.1  christos     in_sr = FLD (in_sr);
    951   1.1  christos     in_dr = FLD (in_dr);
    952   1.1  christos     out_dr = FLD (out_dr);
    953   1.1  christos     referenced |= 1 << 0;
    954   1.1  christos     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
    955   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
    956   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    957   1.1  christos   }
    958   1.1  christos   return cycles;
    959   1.1  christos #undef FLD
    960   1.1  christos }
    961   1.1  christos 
    962   1.1  christos static int
    963   1.1  christos model_m32rx_remu (SIM_CPU *current_cpu, void *sem_arg)
    964   1.1  christos {
    965   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
    966   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    967   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    968   1.1  christos   int cycles = 0;
    969   1.1  christos   {
    970   1.1  christos     int referenced = 0;
    971   1.1  christos     int UNUSED insn_referenced = abuf->written;
    972   1.1  christos     INT in_sr = -1;
    973   1.1  christos     INT in_dr = -1;
    974   1.1  christos     INT out_dr = -1;
    975   1.1  christos     in_sr = FLD (in_sr);
    976   1.1  christos     in_dr = FLD (in_dr);
    977   1.1  christos     out_dr = FLD (out_dr);
    978   1.1  christos     referenced |= 1 << 0;
    979   1.1  christos     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
    980   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
    981   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
    982   1.1  christos   }
    983   1.1  christos   return cycles;
    984   1.1  christos #undef FLD
    985   1.1  christos }
    986   1.1  christos 
    987   1.1  christos static int
    988   1.1  christos model_m32rx_divh (SIM_CPU *current_cpu, void *sem_arg)
    989   1.1  christos {
    990   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
    991   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
    992   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
    993   1.1  christos   int cycles = 0;
    994   1.1  christos   {
    995   1.1  christos     int referenced = 0;
    996   1.1  christos     int UNUSED insn_referenced = abuf->written;
    997   1.1  christos     INT in_sr = -1;
    998   1.1  christos     INT in_dr = -1;
    999   1.1  christos     INT out_dr = -1;
   1000   1.1  christos     in_sr = FLD (in_sr);
   1001   1.1  christos     in_dr = FLD (in_dr);
   1002   1.1  christos     out_dr = FLD (out_dr);
   1003   1.1  christos     referenced |= 1 << 0;
   1004   1.1  christos     if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
   1005   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
   1006   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1007   1.1  christos   }
   1008   1.1  christos   return cycles;
   1009   1.1  christos #undef FLD
   1010   1.1  christos }
   1011   1.1  christos 
   1012   1.1  christos static int
   1013   1.1  christos model_m32rx_jc (SIM_CPU *current_cpu, void *sem_arg)
   1014   1.1  christos {
   1015   1.1  christos #define FLD(f) abuf->fields.sfmt_jl.f
   1016   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1017   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1018   1.1  christos   int cycles = 0;
   1019   1.1  christos   {
   1020   1.1  christos     int referenced = 0;
   1021   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1022   1.1  christos     INT in_sr = -1;
   1023   1.1  christos     in_sr = FLD (in_sr);
   1024   1.1  christos     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   1025   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
   1026   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
   1027   1.1  christos   }
   1028   1.1  christos   return cycles;
   1029   1.1  christos #undef FLD
   1030   1.1  christos }
   1031   1.1  christos 
   1032   1.1  christos static int
   1033   1.1  christos model_m32rx_jnc (SIM_CPU *current_cpu, void *sem_arg)
   1034   1.1  christos {
   1035   1.1  christos #define FLD(f) abuf->fields.sfmt_jl.f
   1036   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1037   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1038   1.1  christos   int cycles = 0;
   1039   1.1  christos   {
   1040   1.1  christos     int referenced = 0;
   1041   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1042   1.1  christos     INT in_sr = -1;
   1043   1.1  christos     in_sr = FLD (in_sr);
   1044   1.1  christos     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   1045   1.1  christos     if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
   1046   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
   1047   1.1  christos   }
   1048   1.1  christos   return cycles;
   1049   1.1  christos #undef FLD
   1050   1.1  christos }
   1051   1.1  christos 
   1052   1.1  christos static int
   1053   1.1  christos model_m32rx_jl (SIM_CPU *current_cpu, void *sem_arg)
   1054   1.1  christos {
   1055   1.1  christos #define FLD(f) abuf->fields.sfmt_jl.f
   1056   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1057   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1058   1.1  christos   int cycles = 0;
   1059   1.1  christos   {
   1060   1.1  christos     int referenced = 0;
   1061   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1062   1.1  christos     INT in_sr = -1;
   1063   1.1  christos     in_sr = FLD (in_sr);
   1064   1.1  christos     referenced |= 1 << 0;
   1065   1.1  christos     referenced |= 1 << 1;
   1066   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
   1067   1.1  christos   }
   1068   1.1  christos   return cycles;
   1069   1.1  christos #undef FLD
   1070   1.1  christos }
   1071   1.1  christos 
   1072   1.1  christos static int
   1073   1.1  christos model_m32rx_jmp (SIM_CPU *current_cpu, void *sem_arg)
   1074   1.1  christos {
   1075   1.1  christos #define FLD(f) abuf->fields.sfmt_jl.f
   1076   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1077   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1078   1.1  christos   int cycles = 0;
   1079   1.1  christos   {
   1080   1.1  christos     int referenced = 0;
   1081   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1082   1.1  christos     INT in_sr = -1;
   1083   1.1  christos     in_sr = FLD (in_sr);
   1084   1.1  christos     referenced |= 1 << 0;
   1085   1.1  christos     referenced |= 1 << 1;
   1086   1.1  christos     cycles += m32rxf_model_m32rx_u_cti (current_cpu, idesc, 0, referenced, in_sr);
   1087   1.1  christos   }
   1088   1.1  christos   return cycles;
   1089   1.1  christos #undef FLD
   1090   1.1  christos }
   1091   1.1  christos 
   1092   1.1  christos static int
   1093   1.1  christos model_m32rx_ld (SIM_CPU *current_cpu, void *sem_arg)
   1094   1.1  christos {
   1095   1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1096   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1097   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1098   1.1  christos   int cycles = 0;
   1099   1.1  christos   {
   1100   1.1  christos     int referenced = 0;
   1101   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1102   1.1  christos     INT in_sr = 0;
   1103   1.1  christos     INT out_dr = 0;
   1104   1.1  christos     in_sr = FLD (in_sr);
   1105   1.1  christos     out_dr = FLD (out_dr);
   1106   1.1  christos     referenced |= 1 << 0;
   1107   1.1  christos     referenced |= 1 << 1;
   1108   1.1  christos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1109   1.1  christos   }
   1110   1.1  christos   return cycles;
   1111   1.1  christos #undef FLD
   1112   1.1  christos }
   1113   1.1  christos 
   1114   1.1  christos static int
   1115   1.1  christos model_m32rx_ld_d (SIM_CPU *current_cpu, void *sem_arg)
   1116   1.1  christos {
   1117   1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   1118   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1119   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1120   1.1  christos   int cycles = 0;
   1121   1.1  christos   {
   1122   1.1  christos     int referenced = 0;
   1123   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1124   1.1  christos     INT in_sr = 0;
   1125   1.1  christos     INT out_dr = 0;
   1126   1.1  christos     in_sr = FLD (in_sr);
   1127   1.1  christos     out_dr = FLD (out_dr);
   1128   1.1  christos     referenced |= 1 << 0;
   1129   1.1  christos     referenced |= 1 << 1;
   1130   1.1  christos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1131   1.1  christos   }
   1132   1.1  christos   return cycles;
   1133   1.1  christos #undef FLD
   1134   1.1  christos }
   1135   1.1  christos 
   1136   1.1  christos static int
   1137   1.1  christos model_m32rx_ldb (SIM_CPU *current_cpu, void *sem_arg)
   1138   1.1  christos {
   1139   1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1140   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1141   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1142   1.1  christos   int cycles = 0;
   1143   1.1  christos   {
   1144   1.1  christos     int referenced = 0;
   1145   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1146   1.1  christos     INT in_sr = 0;
   1147   1.1  christos     INT out_dr = 0;
   1148   1.1  christos     in_sr = FLD (in_sr);
   1149   1.1  christos     out_dr = FLD (out_dr);
   1150   1.1  christos     referenced |= 1 << 0;
   1151   1.1  christos     referenced |= 1 << 1;
   1152   1.1  christos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1153   1.1  christos   }
   1154   1.1  christos   return cycles;
   1155   1.1  christos #undef FLD
   1156   1.1  christos }
   1157   1.1  christos 
   1158   1.1  christos static int
   1159   1.1  christos model_m32rx_ldb_d (SIM_CPU *current_cpu, void *sem_arg)
   1160   1.1  christos {
   1161   1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   1162   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1163   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1164   1.1  christos   int cycles = 0;
   1165   1.1  christos   {
   1166   1.1  christos     int referenced = 0;
   1167   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1168   1.1  christos     INT in_sr = 0;
   1169   1.1  christos     INT out_dr = 0;
   1170   1.1  christos     in_sr = FLD (in_sr);
   1171   1.1  christos     out_dr = FLD (out_dr);
   1172   1.1  christos     referenced |= 1 << 0;
   1173   1.1  christos     referenced |= 1 << 1;
   1174   1.1  christos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1175   1.1  christos   }
   1176   1.1  christos   return cycles;
   1177   1.1  christos #undef FLD
   1178   1.1  christos }
   1179   1.1  christos 
   1180   1.1  christos static int
   1181   1.1  christos model_m32rx_ldh (SIM_CPU *current_cpu, void *sem_arg)
   1182   1.1  christos {
   1183   1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1184   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1185   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1186   1.1  christos   int cycles = 0;
   1187   1.1  christos   {
   1188   1.1  christos     int referenced = 0;
   1189   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1190   1.1  christos     INT in_sr = 0;
   1191   1.1  christos     INT out_dr = 0;
   1192   1.1  christos     in_sr = FLD (in_sr);
   1193   1.1  christos     out_dr = FLD (out_dr);
   1194   1.1  christos     referenced |= 1 << 0;
   1195   1.1  christos     referenced |= 1 << 1;
   1196   1.1  christos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1197   1.1  christos   }
   1198   1.1  christos   return cycles;
   1199   1.1  christos #undef FLD
   1200   1.1  christos }
   1201   1.1  christos 
   1202   1.1  christos static int
   1203   1.1  christos model_m32rx_ldh_d (SIM_CPU *current_cpu, void *sem_arg)
   1204   1.1  christos {
   1205   1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   1206   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1207   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1208   1.1  christos   int cycles = 0;
   1209   1.1  christos   {
   1210   1.1  christos     int referenced = 0;
   1211   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1212   1.1  christos     INT in_sr = 0;
   1213   1.1  christos     INT out_dr = 0;
   1214   1.1  christos     in_sr = FLD (in_sr);
   1215   1.1  christos     out_dr = FLD (out_dr);
   1216   1.1  christos     referenced |= 1 << 0;
   1217   1.1  christos     referenced |= 1 << 1;
   1218   1.1  christos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1219   1.1  christos   }
   1220   1.1  christos   return cycles;
   1221   1.1  christos #undef FLD
   1222   1.1  christos }
   1223   1.1  christos 
   1224   1.1  christos static int
   1225   1.1  christos model_m32rx_ldub (SIM_CPU *current_cpu, void *sem_arg)
   1226   1.1  christos {
   1227   1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1228   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1229   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1230   1.1  christos   int cycles = 0;
   1231   1.1  christos   {
   1232   1.1  christos     int referenced = 0;
   1233   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1234   1.1  christos     INT in_sr = 0;
   1235   1.1  christos     INT out_dr = 0;
   1236   1.1  christos     in_sr = FLD (in_sr);
   1237   1.1  christos     out_dr = FLD (out_dr);
   1238   1.1  christos     referenced |= 1 << 0;
   1239   1.1  christos     referenced |= 1 << 1;
   1240   1.1  christos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1241   1.1  christos   }
   1242   1.1  christos   return cycles;
   1243   1.1  christos #undef FLD
   1244   1.1  christos }
   1245   1.1  christos 
   1246   1.1  christos static int
   1247   1.1  christos model_m32rx_ldub_d (SIM_CPU *current_cpu, void *sem_arg)
   1248   1.1  christos {
   1249   1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   1250   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1251   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1252   1.1  christos   int cycles = 0;
   1253   1.1  christos   {
   1254   1.1  christos     int referenced = 0;
   1255   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1256   1.1  christos     INT in_sr = 0;
   1257   1.1  christos     INT out_dr = 0;
   1258   1.1  christos     in_sr = FLD (in_sr);
   1259   1.1  christos     out_dr = FLD (out_dr);
   1260   1.1  christos     referenced |= 1 << 0;
   1261   1.1  christos     referenced |= 1 << 1;
   1262   1.1  christos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1263   1.1  christos   }
   1264   1.1  christos   return cycles;
   1265   1.1  christos #undef FLD
   1266   1.1  christos }
   1267   1.1  christos 
   1268   1.1  christos static int
   1269   1.1  christos model_m32rx_lduh (SIM_CPU *current_cpu, void *sem_arg)
   1270   1.1  christos {
   1271   1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1272   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1273   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1274   1.1  christos   int cycles = 0;
   1275   1.1  christos   {
   1276   1.1  christos     int referenced = 0;
   1277   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1278   1.1  christos     INT in_sr = 0;
   1279   1.1  christos     INT out_dr = 0;
   1280   1.1  christos     in_sr = FLD (in_sr);
   1281   1.1  christos     out_dr = FLD (out_dr);
   1282   1.1  christos     referenced |= 1 << 0;
   1283   1.1  christos     referenced |= 1 << 1;
   1284   1.1  christos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1285   1.1  christos   }
   1286   1.1  christos   return cycles;
   1287   1.1  christos #undef FLD
   1288   1.1  christos }
   1289   1.1  christos 
   1290   1.1  christos static int
   1291   1.1  christos model_m32rx_lduh_d (SIM_CPU *current_cpu, void *sem_arg)
   1292   1.1  christos {
   1293   1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   1294   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1295   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1296   1.1  christos   int cycles = 0;
   1297   1.1  christos   {
   1298   1.1  christos     int referenced = 0;
   1299   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1300   1.1  christos     INT in_sr = 0;
   1301   1.1  christos     INT out_dr = 0;
   1302   1.1  christos     in_sr = FLD (in_sr);
   1303   1.1  christos     out_dr = FLD (out_dr);
   1304   1.1  christos     referenced |= 1 << 0;
   1305   1.1  christos     referenced |= 1 << 1;
   1306   1.1  christos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1307   1.1  christos   }
   1308   1.1  christos   return cycles;
   1309   1.1  christos #undef FLD
   1310   1.1  christos }
   1311   1.1  christos 
   1312   1.1  christos static int
   1313   1.1  christos model_m32rx_ld_plus (SIM_CPU *current_cpu, void *sem_arg)
   1314   1.1  christos {
   1315   1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1316   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1317   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1318   1.1  christos   int cycles = 0;
   1319   1.1  christos   {
   1320   1.1  christos     int referenced = 0;
   1321   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1322   1.1  christos     INT in_sr = 0;
   1323   1.1  christos     INT out_dr = 0;
   1324   1.1  christos     in_sr = FLD (in_sr);
   1325   1.1  christos     out_dr = FLD (out_dr);
   1326   1.1  christos     referenced |= 1 << 0;
   1327   1.1  christos     referenced |= 1 << 1;
   1328   1.1  christos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1329   1.1  christos   }
   1330   1.1  christos   {
   1331   1.1  christos     int referenced = 0;
   1332   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1333   1.1  christos     INT in_sr = -1;
   1334   1.1  christos     INT in_dr = -1;
   1335   1.1  christos     INT out_dr = -1;
   1336   1.1  christos     in_dr = FLD (in_sr);
   1337   1.1  christos     out_dr = FLD (out_sr);
   1338   1.1  christos     referenced |= 1 << 0;
   1339   1.1  christos     referenced |= 1 << 2;
   1340   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
   1341   1.1  christos   }
   1342   1.1  christos   return cycles;
   1343   1.1  christos #undef FLD
   1344   1.1  christos }
   1345   1.1  christos 
   1346   1.1  christos static int
   1347   1.1  christos model_m32rx_ld24 (SIM_CPU *current_cpu, void *sem_arg)
   1348   1.1  christos {
   1349   1.1  christos #define FLD(f) abuf->fields.sfmt_ld24.f
   1350   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1351   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1352   1.1  christos   int cycles = 0;
   1353   1.1  christos   {
   1354   1.1  christos     int referenced = 0;
   1355   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1356   1.1  christos     INT in_sr = -1;
   1357   1.1  christos     INT in_dr = -1;
   1358   1.1  christos     INT out_dr = -1;
   1359   1.1  christos     out_dr = FLD (out_dr);
   1360   1.1  christos     referenced |= 1 << 2;
   1361   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1362   1.1  christos   }
   1363   1.1  christos   return cycles;
   1364   1.1  christos #undef FLD
   1365   1.1  christos }
   1366   1.1  christos 
   1367   1.1  christos static int
   1368   1.1  christos model_m32rx_ldi8 (SIM_CPU *current_cpu, void *sem_arg)
   1369   1.1  christos {
   1370   1.1  christos #define FLD(f) abuf->fields.sfmt_addi.f
   1371   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1372   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1373   1.1  christos   int cycles = 0;
   1374   1.1  christos   {
   1375   1.1  christos     int referenced = 0;
   1376   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1377   1.1  christos     INT in_sr = -1;
   1378   1.1  christos     INT in_dr = -1;
   1379   1.1  christos     INT out_dr = -1;
   1380   1.1  christos     out_dr = FLD (out_dr);
   1381   1.1  christos     referenced |= 1 << 2;
   1382   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1383   1.1  christos   }
   1384   1.1  christos   return cycles;
   1385   1.1  christos #undef FLD
   1386   1.1  christos }
   1387   1.1  christos 
   1388   1.1  christos static int
   1389   1.1  christos model_m32rx_ldi16 (SIM_CPU *current_cpu, void *sem_arg)
   1390   1.1  christos {
   1391   1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   1392   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1393   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1394   1.1  christos   int cycles = 0;
   1395   1.1  christos   {
   1396   1.1  christos     int referenced = 0;
   1397   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1398   1.1  christos     INT in_sr = -1;
   1399   1.1  christos     INT in_dr = -1;
   1400   1.1  christos     INT out_dr = -1;
   1401   1.1  christos     out_dr = FLD (out_dr);
   1402   1.1  christos     referenced |= 1 << 2;
   1403   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1404   1.1  christos   }
   1405   1.1  christos   return cycles;
   1406   1.1  christos #undef FLD
   1407   1.1  christos }
   1408   1.1  christos 
   1409   1.1  christos static int
   1410   1.1  christos model_m32rx_lock (SIM_CPU *current_cpu, void *sem_arg)
   1411   1.1  christos {
   1412   1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1413   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1414   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1415   1.1  christos   int cycles = 0;
   1416   1.1  christos   {
   1417   1.1  christos     int referenced = 0;
   1418   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1419   1.1  christos     INT in_sr = 0;
   1420   1.1  christos     INT out_dr = 0;
   1421   1.1  christos     in_sr = FLD (in_sr);
   1422   1.1  christos     out_dr = FLD (out_dr);
   1423   1.1  christos     referenced |= 1 << 0;
   1424   1.1  christos     referenced |= 1 << 1;
   1425   1.1  christos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   1426   1.1  christos   }
   1427   1.1  christos   return cycles;
   1428   1.1  christos #undef FLD
   1429   1.1  christos }
   1430   1.1  christos 
   1431   1.1  christos static int
   1432   1.1  christos model_m32rx_machi_a (SIM_CPU *current_cpu, void *sem_arg)
   1433   1.1  christos {
   1434   1.1  christos #define FLD(f) abuf->fields.sfmt_machi_a.f
   1435   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1436   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1437   1.1  christos   int cycles = 0;
   1438   1.1  christos   {
   1439   1.1  christos     int referenced = 0;
   1440   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1441   1.1  christos     INT in_src1 = -1;
   1442   1.1  christos     INT in_src2 = -1;
   1443   1.1  christos     in_src1 = FLD (in_src1);
   1444   1.1  christos     in_src2 = FLD (in_src2);
   1445   1.1  christos     referenced |= 1 << 0;
   1446   1.1  christos     referenced |= 1 << 1;
   1447   1.1  christos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1448   1.1  christos   }
   1449   1.1  christos   return cycles;
   1450   1.1  christos #undef FLD
   1451   1.1  christos }
   1452   1.1  christos 
   1453   1.1  christos static int
   1454   1.1  christos model_m32rx_maclo_a (SIM_CPU *current_cpu, void *sem_arg)
   1455   1.1  christos {
   1456   1.1  christos #define FLD(f) abuf->fields.sfmt_machi_a.f
   1457   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1458   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1459   1.1  christos   int cycles = 0;
   1460   1.1  christos   {
   1461   1.1  christos     int referenced = 0;
   1462   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1463   1.1  christos     INT in_src1 = -1;
   1464   1.1  christos     INT in_src2 = -1;
   1465   1.1  christos     in_src1 = FLD (in_src1);
   1466   1.1  christos     in_src2 = FLD (in_src2);
   1467   1.1  christos     referenced |= 1 << 0;
   1468   1.1  christos     referenced |= 1 << 1;
   1469   1.1  christos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1470   1.1  christos   }
   1471   1.1  christos   return cycles;
   1472   1.1  christos #undef FLD
   1473   1.1  christos }
   1474   1.1  christos 
   1475   1.1  christos static int
   1476   1.1  christos model_m32rx_macwhi_a (SIM_CPU *current_cpu, void *sem_arg)
   1477   1.1  christos {
   1478   1.1  christos #define FLD(f) abuf->fields.sfmt_machi_a.f
   1479   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1480   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1481   1.1  christos   int cycles = 0;
   1482   1.1  christos   {
   1483   1.1  christos     int referenced = 0;
   1484   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1485   1.1  christos     INT in_src1 = -1;
   1486   1.1  christos     INT in_src2 = -1;
   1487   1.1  christos     in_src1 = FLD (in_src1);
   1488   1.1  christos     in_src2 = FLD (in_src2);
   1489   1.1  christos     referenced |= 1 << 0;
   1490   1.1  christos     referenced |= 1 << 1;
   1491   1.1  christos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1492   1.1  christos   }
   1493   1.1  christos   return cycles;
   1494   1.1  christos #undef FLD
   1495   1.1  christos }
   1496   1.1  christos 
   1497   1.1  christos static int
   1498   1.1  christos model_m32rx_macwlo_a (SIM_CPU *current_cpu, void *sem_arg)
   1499   1.1  christos {
   1500   1.1  christos #define FLD(f) abuf->fields.sfmt_machi_a.f
   1501   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1502   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1503   1.1  christos   int cycles = 0;
   1504   1.1  christos   {
   1505   1.1  christos     int referenced = 0;
   1506   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1507   1.1  christos     INT in_src1 = -1;
   1508   1.1  christos     INT in_src2 = -1;
   1509   1.1  christos     in_src1 = FLD (in_src1);
   1510   1.1  christos     in_src2 = FLD (in_src2);
   1511   1.1  christos     referenced |= 1 << 0;
   1512   1.1  christos     referenced |= 1 << 1;
   1513   1.1  christos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1514   1.1  christos   }
   1515   1.1  christos   return cycles;
   1516   1.1  christos #undef FLD
   1517   1.1  christos }
   1518   1.1  christos 
   1519   1.1  christos static int
   1520   1.1  christos model_m32rx_mul (SIM_CPU *current_cpu, void *sem_arg)
   1521   1.1  christos {
   1522   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   1523   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1524   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1525   1.1  christos   int cycles = 0;
   1526   1.1  christos   {
   1527   1.1  christos     int referenced = 0;
   1528   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1529   1.1  christos     INT in_sr = -1;
   1530   1.1  christos     INT in_dr = -1;
   1531   1.1  christos     INT out_dr = -1;
   1532   1.1  christos     in_sr = FLD (in_sr);
   1533   1.1  christos     in_dr = FLD (in_dr);
   1534   1.1  christos     out_dr = FLD (out_dr);
   1535   1.1  christos     referenced |= 1 << 0;
   1536   1.1  christos     referenced |= 1 << 1;
   1537   1.1  christos     referenced |= 1 << 2;
   1538   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1539   1.1  christos   }
   1540   1.1  christos   return cycles;
   1541   1.1  christos #undef FLD
   1542   1.1  christos }
   1543   1.1  christos 
   1544   1.1  christos static int
   1545   1.1  christos model_m32rx_mulhi_a (SIM_CPU *current_cpu, void *sem_arg)
   1546   1.1  christos {
   1547   1.1  christos #define FLD(f) abuf->fields.sfmt_machi_a.f
   1548   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1549   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1550   1.1  christos   int cycles = 0;
   1551   1.1  christos   {
   1552   1.1  christos     int referenced = 0;
   1553   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1554   1.1  christos     INT in_src1 = -1;
   1555   1.1  christos     INT in_src2 = -1;
   1556   1.1  christos     in_src1 = FLD (in_src1);
   1557   1.1  christos     in_src2 = FLD (in_src2);
   1558   1.1  christos     referenced |= 1 << 0;
   1559   1.1  christos     referenced |= 1 << 1;
   1560   1.1  christos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1561   1.1  christos   }
   1562   1.1  christos   return cycles;
   1563   1.1  christos #undef FLD
   1564   1.1  christos }
   1565   1.1  christos 
   1566   1.1  christos static int
   1567   1.1  christos model_m32rx_mullo_a (SIM_CPU *current_cpu, void *sem_arg)
   1568   1.1  christos {
   1569   1.1  christos #define FLD(f) abuf->fields.sfmt_machi_a.f
   1570   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1571   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1572   1.1  christos   int cycles = 0;
   1573   1.1  christos   {
   1574   1.1  christos     int referenced = 0;
   1575   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1576   1.1  christos     INT in_src1 = -1;
   1577   1.1  christos     INT in_src2 = -1;
   1578   1.1  christos     in_src1 = FLD (in_src1);
   1579   1.1  christos     in_src2 = FLD (in_src2);
   1580   1.1  christos     referenced |= 1 << 0;
   1581   1.1  christos     referenced |= 1 << 1;
   1582   1.1  christos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1583   1.1  christos   }
   1584   1.1  christos   return cycles;
   1585   1.1  christos #undef FLD
   1586   1.1  christos }
   1587   1.1  christos 
   1588   1.1  christos static int
   1589   1.1  christos model_m32rx_mulwhi_a (SIM_CPU *current_cpu, void *sem_arg)
   1590   1.1  christos {
   1591   1.1  christos #define FLD(f) abuf->fields.sfmt_machi_a.f
   1592   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1593   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1594   1.1  christos   int cycles = 0;
   1595   1.1  christos   {
   1596   1.1  christos     int referenced = 0;
   1597   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1598   1.1  christos     INT in_src1 = -1;
   1599   1.1  christos     INT in_src2 = -1;
   1600   1.1  christos     in_src1 = FLD (in_src1);
   1601   1.1  christos     in_src2 = FLD (in_src2);
   1602   1.1  christos     referenced |= 1 << 0;
   1603   1.1  christos     referenced |= 1 << 1;
   1604   1.1  christos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1605   1.1  christos   }
   1606   1.1  christos   return cycles;
   1607   1.1  christos #undef FLD
   1608   1.1  christos }
   1609   1.1  christos 
   1610   1.1  christos static int
   1611   1.1  christos model_m32rx_mulwlo_a (SIM_CPU *current_cpu, void *sem_arg)
   1612   1.1  christos {
   1613   1.1  christos #define FLD(f) abuf->fields.sfmt_machi_a.f
   1614   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1615   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1616   1.1  christos   int cycles = 0;
   1617   1.1  christos   {
   1618   1.1  christos     int referenced = 0;
   1619   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1620   1.1  christos     INT in_src1 = -1;
   1621   1.1  christos     INT in_src2 = -1;
   1622   1.1  christos     in_src1 = FLD (in_src1);
   1623   1.1  christos     in_src2 = FLD (in_src2);
   1624   1.1  christos     referenced |= 1 << 0;
   1625   1.1  christos     referenced |= 1 << 1;
   1626   1.1  christos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1627   1.1  christos   }
   1628   1.1  christos   return cycles;
   1629   1.1  christos #undef FLD
   1630   1.1  christos }
   1631   1.1  christos 
   1632   1.1  christos static int
   1633   1.1  christos model_m32rx_mv (SIM_CPU *current_cpu, void *sem_arg)
   1634   1.1  christos {
   1635   1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1636   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1637   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1638   1.1  christos   int cycles = 0;
   1639   1.1  christos   {
   1640   1.1  christos     int referenced = 0;
   1641   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1642   1.1  christos     INT in_sr = -1;
   1643   1.1  christos     INT in_dr = -1;
   1644   1.1  christos     INT out_dr = -1;
   1645   1.1  christos     in_sr = FLD (in_sr);
   1646   1.1  christos     out_dr = FLD (out_dr);
   1647   1.1  christos     referenced |= 1 << 0;
   1648   1.1  christos     referenced |= 1 << 2;
   1649   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1650   1.1  christos   }
   1651   1.1  christos   return cycles;
   1652   1.1  christos #undef FLD
   1653   1.1  christos }
   1654   1.1  christos 
   1655   1.1  christos static int
   1656   1.1  christos model_m32rx_mvfachi_a (SIM_CPU *current_cpu, void *sem_arg)
   1657   1.1  christos {
   1658   1.1  christos #define FLD(f) abuf->fields.sfmt_mvfachi_a.f
   1659   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1660   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1661   1.1  christos   int cycles = 0;
   1662   1.1  christos   {
   1663   1.1  christos     int referenced = 0;
   1664   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1665   1.1  christos     INT in_sr = -1;
   1666   1.1  christos     INT in_dr = -1;
   1667   1.1  christos     INT out_dr = -1;
   1668   1.1  christos     out_dr = FLD (out_dr);
   1669   1.1  christos     referenced |= 1 << 2;
   1670   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1671   1.1  christos   }
   1672   1.1  christos   return cycles;
   1673   1.1  christos #undef FLD
   1674   1.1  christos }
   1675   1.1  christos 
   1676   1.1  christos static int
   1677   1.1  christos model_m32rx_mvfaclo_a (SIM_CPU *current_cpu, void *sem_arg)
   1678   1.1  christos {
   1679   1.1  christos #define FLD(f) abuf->fields.sfmt_mvfachi_a.f
   1680   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1681   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1682   1.1  christos   int cycles = 0;
   1683   1.1  christos   {
   1684   1.1  christos     int referenced = 0;
   1685   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1686   1.1  christos     INT in_sr = -1;
   1687   1.1  christos     INT in_dr = -1;
   1688   1.1  christos     INT out_dr = -1;
   1689   1.1  christos     out_dr = FLD (out_dr);
   1690   1.1  christos     referenced |= 1 << 2;
   1691   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1692   1.1  christos   }
   1693   1.1  christos   return cycles;
   1694   1.1  christos #undef FLD
   1695   1.1  christos }
   1696   1.1  christos 
   1697   1.1  christos static int
   1698   1.1  christos model_m32rx_mvfacmi_a (SIM_CPU *current_cpu, void *sem_arg)
   1699   1.1  christos {
   1700   1.1  christos #define FLD(f) abuf->fields.sfmt_mvfachi_a.f
   1701   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1702   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1703   1.1  christos   int cycles = 0;
   1704   1.1  christos   {
   1705   1.1  christos     int referenced = 0;
   1706   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1707   1.1  christos     INT in_sr = -1;
   1708   1.1  christos     INT in_dr = -1;
   1709   1.1  christos     INT out_dr = -1;
   1710   1.1  christos     out_dr = FLD (out_dr);
   1711   1.1  christos     referenced |= 1 << 2;
   1712   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1713   1.1  christos   }
   1714   1.1  christos   return cycles;
   1715   1.1  christos #undef FLD
   1716   1.1  christos }
   1717   1.1  christos 
   1718   1.1  christos static int
   1719   1.1  christos model_m32rx_mvfc (SIM_CPU *current_cpu, void *sem_arg)
   1720   1.1  christos {
   1721   1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1722   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1723   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1724   1.1  christos   int cycles = 0;
   1725   1.1  christos   {
   1726   1.1  christos     int referenced = 0;
   1727   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1728   1.1  christos     INT in_sr = -1;
   1729   1.1  christos     INT in_dr = -1;
   1730   1.1  christos     INT out_dr = -1;
   1731   1.1  christos     out_dr = FLD (out_dr);
   1732   1.1  christos     referenced |= 1 << 2;
   1733   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1734   1.1  christos   }
   1735   1.1  christos   return cycles;
   1736   1.1  christos #undef FLD
   1737   1.1  christos }
   1738   1.1  christos 
   1739   1.1  christos static int
   1740   1.1  christos model_m32rx_mvtachi_a (SIM_CPU *current_cpu, void *sem_arg)
   1741   1.1  christos {
   1742   1.1  christos #define FLD(f) abuf->fields.sfmt_mvtachi_a.f
   1743   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1744   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1745   1.1  christos   int cycles = 0;
   1746   1.1  christos   {
   1747   1.1  christos     int referenced = 0;
   1748   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1749   1.1  christos     INT in_sr = -1;
   1750   1.1  christos     INT in_dr = -1;
   1751   1.1  christos     INT out_dr = -1;
   1752   1.1  christos     in_sr = FLD (in_src1);
   1753   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1754   1.1  christos   }
   1755   1.1  christos   return cycles;
   1756   1.1  christos #undef FLD
   1757   1.1  christos }
   1758   1.1  christos 
   1759   1.1  christos static int
   1760   1.1  christos model_m32rx_mvtaclo_a (SIM_CPU *current_cpu, void *sem_arg)
   1761   1.1  christos {
   1762   1.1  christos #define FLD(f) abuf->fields.sfmt_mvtachi_a.f
   1763   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1764   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1765   1.1  christos   int cycles = 0;
   1766   1.1  christos   {
   1767   1.1  christos     int referenced = 0;
   1768   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1769   1.1  christos     INT in_sr = -1;
   1770   1.1  christos     INT in_dr = -1;
   1771   1.1  christos     INT out_dr = -1;
   1772   1.1  christos     in_sr = FLD (in_src1);
   1773   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1774   1.1  christos   }
   1775   1.1  christos   return cycles;
   1776   1.1  christos #undef FLD
   1777   1.1  christos }
   1778   1.1  christos 
   1779   1.1  christos static int
   1780   1.1  christos model_m32rx_mvtc (SIM_CPU *current_cpu, void *sem_arg)
   1781   1.1  christos {
   1782   1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1783   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1784   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1785   1.1  christos   int cycles = 0;
   1786   1.1  christos   {
   1787   1.1  christos     int referenced = 0;
   1788   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1789   1.1  christos     INT in_sr = -1;
   1790   1.1  christos     INT in_dr = -1;
   1791   1.1  christos     INT out_dr = -1;
   1792   1.1  christos     in_sr = FLD (in_sr);
   1793   1.1  christos     referenced |= 1 << 0;
   1794   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1795   1.1  christos   }
   1796   1.1  christos   return cycles;
   1797   1.1  christos #undef FLD
   1798   1.1  christos }
   1799   1.1  christos 
   1800   1.1  christos static int
   1801   1.1  christos model_m32rx_neg (SIM_CPU *current_cpu, void *sem_arg)
   1802   1.1  christos {
   1803   1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1804   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1805   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1806   1.1  christos   int cycles = 0;
   1807   1.1  christos   {
   1808   1.1  christos     int referenced = 0;
   1809   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1810   1.1  christos     INT in_sr = -1;
   1811   1.1  christos     INT in_dr = -1;
   1812   1.1  christos     INT out_dr = -1;
   1813   1.1  christos     in_sr = FLD (in_sr);
   1814   1.1  christos     out_dr = FLD (out_dr);
   1815   1.1  christos     referenced |= 1 << 0;
   1816   1.1  christos     referenced |= 1 << 2;
   1817   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1818   1.1  christos   }
   1819   1.1  christos   return cycles;
   1820   1.1  christos #undef FLD
   1821   1.1  christos }
   1822   1.1  christos 
   1823   1.1  christos static int
   1824   1.1  christos model_m32rx_nop (SIM_CPU *current_cpu, void *sem_arg)
   1825   1.1  christos {
   1826   1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   1827   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1828   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1829   1.1  christos   int cycles = 0;
   1830   1.1  christos   {
   1831   1.1  christos     int referenced = 0;
   1832   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1833   1.1  christos     INT in_sr = -1;
   1834   1.1  christos     INT in_dr = -1;
   1835   1.1  christos     INT out_dr = -1;
   1836   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1837   1.1  christos   }
   1838   1.1  christos   return cycles;
   1839   1.1  christos #undef FLD
   1840   1.1  christos }
   1841   1.1  christos 
   1842   1.1  christos static int
   1843   1.1  christos model_m32rx_not (SIM_CPU *current_cpu, void *sem_arg)
   1844   1.1  christos {
   1845   1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1846   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1847   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1848   1.1  christos   int cycles = 0;
   1849   1.1  christos   {
   1850   1.1  christos     int referenced = 0;
   1851   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1852   1.1  christos     INT in_sr = -1;
   1853   1.1  christos     INT in_dr = -1;
   1854   1.1  christos     INT out_dr = -1;
   1855   1.1  christos     in_sr = FLD (in_sr);
   1856   1.1  christos     out_dr = FLD (out_dr);
   1857   1.1  christos     referenced |= 1 << 0;
   1858   1.1  christos     referenced |= 1 << 2;
   1859   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1860   1.1  christos   }
   1861   1.1  christos   return cycles;
   1862   1.1  christos #undef FLD
   1863   1.1  christos }
   1864   1.1  christos 
   1865   1.1  christos static int
   1866   1.1  christos model_m32rx_rac_dsi (SIM_CPU *current_cpu, void *sem_arg)
   1867   1.1  christos {
   1868   1.1  christos #define FLD(f) abuf->fields.sfmt_rac_dsi.f
   1869   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1870   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1871   1.1  christos   int cycles = 0;
   1872   1.1  christos   {
   1873   1.1  christos     int referenced = 0;
   1874   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1875   1.1  christos     INT in_src1 = -1;
   1876   1.1  christos     INT in_src2 = -1;
   1877   1.1  christos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1878   1.1  christos   }
   1879   1.1  christos   return cycles;
   1880   1.1  christos #undef FLD
   1881   1.1  christos }
   1882   1.1  christos 
   1883   1.1  christos static int
   1884   1.1  christos model_m32rx_rach_dsi (SIM_CPU *current_cpu, void *sem_arg)
   1885   1.1  christos {
   1886   1.1  christos #define FLD(f) abuf->fields.sfmt_rac_dsi.f
   1887   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1888   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1889   1.1  christos   int cycles = 0;
   1890   1.1  christos   {
   1891   1.1  christos     int referenced = 0;
   1892   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1893   1.1  christos     INT in_src1 = -1;
   1894   1.1  christos     INT in_src2 = -1;
   1895   1.1  christos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   1896   1.1  christos   }
   1897   1.1  christos   return cycles;
   1898   1.1  christos #undef FLD
   1899   1.1  christos }
   1900   1.1  christos 
   1901   1.1  christos static int
   1902   1.1  christos model_m32rx_rte (SIM_CPU *current_cpu, void *sem_arg)
   1903   1.1  christos {
   1904   1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   1905   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1906   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1907   1.1  christos   int cycles = 0;
   1908   1.1  christos   {
   1909   1.1  christos     int referenced = 0;
   1910   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1911   1.1  christos     INT in_sr = -1;
   1912   1.1  christos     INT in_dr = -1;
   1913   1.1  christos     INT out_dr = -1;
   1914   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1915   1.1  christos   }
   1916   1.1  christos   return cycles;
   1917   1.1  christos #undef FLD
   1918   1.1  christos }
   1919   1.1  christos 
   1920   1.1  christos static int
   1921   1.1  christos model_m32rx_seth (SIM_CPU *current_cpu, void *sem_arg)
   1922   1.1  christos {
   1923   1.1  christos #define FLD(f) abuf->fields.sfmt_seth.f
   1924   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1925   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1926   1.1  christos   int cycles = 0;
   1927   1.1  christos   {
   1928   1.1  christos     int referenced = 0;
   1929   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1930   1.1  christos     INT in_sr = -1;
   1931   1.1  christos     INT in_dr = -1;
   1932   1.1  christos     INT out_dr = -1;
   1933   1.1  christos     out_dr = FLD (out_dr);
   1934   1.1  christos     referenced |= 1 << 2;
   1935   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1936   1.1  christos   }
   1937   1.1  christos   return cycles;
   1938   1.1  christos #undef FLD
   1939   1.1  christos }
   1940   1.1  christos 
   1941   1.1  christos static int
   1942   1.1  christos model_m32rx_sll (SIM_CPU *current_cpu, void *sem_arg)
   1943   1.1  christos {
   1944   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   1945   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1946   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1947   1.1  christos   int cycles = 0;
   1948   1.1  christos   {
   1949   1.1  christos     int referenced = 0;
   1950   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1951   1.1  christos     INT in_sr = -1;
   1952   1.1  christos     INT in_dr = -1;
   1953   1.1  christos     INT out_dr = -1;
   1954   1.1  christos     in_sr = FLD (in_sr);
   1955   1.1  christos     in_dr = FLD (in_dr);
   1956   1.1  christos     out_dr = FLD (out_dr);
   1957   1.1  christos     referenced |= 1 << 0;
   1958   1.1  christos     referenced |= 1 << 1;
   1959   1.1  christos     referenced |= 1 << 2;
   1960   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1961   1.1  christos   }
   1962   1.1  christos   return cycles;
   1963   1.1  christos #undef FLD
   1964   1.1  christos }
   1965   1.1  christos 
   1966   1.1  christos static int
   1967   1.1  christos model_m32rx_sll3 (SIM_CPU *current_cpu, void *sem_arg)
   1968   1.1  christos {
   1969   1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   1970   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1971   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1972   1.1  christos   int cycles = 0;
   1973   1.1  christos   {
   1974   1.1  christos     int referenced = 0;
   1975   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1976   1.1  christos     INT in_sr = -1;
   1977   1.1  christos     INT in_dr = -1;
   1978   1.1  christos     INT out_dr = -1;
   1979   1.1  christos     in_sr = FLD (in_sr);
   1980   1.1  christos     out_dr = FLD (out_dr);
   1981   1.1  christos     referenced |= 1 << 0;
   1982   1.1  christos     referenced |= 1 << 2;
   1983   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   1984   1.1  christos   }
   1985   1.1  christos   return cycles;
   1986   1.1  christos #undef FLD
   1987   1.1  christos }
   1988   1.1  christos 
   1989   1.1  christos static int
   1990   1.1  christos model_m32rx_slli (SIM_CPU *current_cpu, void *sem_arg)
   1991   1.1  christos {
   1992   1.1  christos #define FLD(f) abuf->fields.sfmt_slli.f
   1993   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   1994   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   1995   1.1  christos   int cycles = 0;
   1996   1.1  christos   {
   1997   1.1  christos     int referenced = 0;
   1998   1.1  christos     int UNUSED insn_referenced = abuf->written;
   1999   1.1  christos     INT in_sr = -1;
   2000   1.1  christos     INT in_dr = -1;
   2001   1.1  christos     INT out_dr = -1;
   2002   1.1  christos     in_dr = FLD (in_dr);
   2003   1.1  christos     out_dr = FLD (out_dr);
   2004   1.1  christos     referenced |= 1 << 1;
   2005   1.1  christos     referenced |= 1 << 2;
   2006   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2007   1.1  christos   }
   2008   1.1  christos   return cycles;
   2009   1.1  christos #undef FLD
   2010   1.1  christos }
   2011   1.1  christos 
   2012   1.1  christos static int
   2013   1.1  christos model_m32rx_sra (SIM_CPU *current_cpu, void *sem_arg)
   2014   1.1  christos {
   2015   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2016   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2017   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2018   1.1  christos   int cycles = 0;
   2019   1.1  christos   {
   2020   1.1  christos     int referenced = 0;
   2021   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2022   1.1  christos     INT in_sr = -1;
   2023   1.1  christos     INT in_dr = -1;
   2024   1.1  christos     INT out_dr = -1;
   2025   1.1  christos     in_sr = FLD (in_sr);
   2026   1.1  christos     in_dr = FLD (in_dr);
   2027   1.1  christos     out_dr = FLD (out_dr);
   2028   1.1  christos     referenced |= 1 << 0;
   2029   1.1  christos     referenced |= 1 << 1;
   2030   1.1  christos     referenced |= 1 << 2;
   2031   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2032   1.1  christos   }
   2033   1.1  christos   return cycles;
   2034   1.1  christos #undef FLD
   2035   1.1  christos }
   2036   1.1  christos 
   2037   1.1  christos static int
   2038   1.1  christos model_m32rx_sra3 (SIM_CPU *current_cpu, void *sem_arg)
   2039   1.1  christos {
   2040   1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   2041   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2042   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2043   1.1  christos   int cycles = 0;
   2044   1.1  christos   {
   2045   1.1  christos     int referenced = 0;
   2046   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2047   1.1  christos     INT in_sr = -1;
   2048   1.1  christos     INT in_dr = -1;
   2049   1.1  christos     INT out_dr = -1;
   2050   1.1  christos     in_sr = FLD (in_sr);
   2051   1.1  christos     out_dr = FLD (out_dr);
   2052   1.1  christos     referenced |= 1 << 0;
   2053   1.1  christos     referenced |= 1 << 2;
   2054   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2055   1.1  christos   }
   2056   1.1  christos   return cycles;
   2057   1.1  christos #undef FLD
   2058   1.1  christos }
   2059   1.1  christos 
   2060   1.1  christos static int
   2061   1.1  christos model_m32rx_srai (SIM_CPU *current_cpu, void *sem_arg)
   2062   1.1  christos {
   2063   1.1  christos #define FLD(f) abuf->fields.sfmt_slli.f
   2064   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2065   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2066   1.1  christos   int cycles = 0;
   2067   1.1  christos   {
   2068   1.1  christos     int referenced = 0;
   2069   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2070   1.1  christos     INT in_sr = -1;
   2071   1.1  christos     INT in_dr = -1;
   2072   1.1  christos     INT out_dr = -1;
   2073   1.1  christos     in_dr = FLD (in_dr);
   2074   1.1  christos     out_dr = FLD (out_dr);
   2075   1.1  christos     referenced |= 1 << 1;
   2076   1.1  christos     referenced |= 1 << 2;
   2077   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2078   1.1  christos   }
   2079   1.1  christos   return cycles;
   2080   1.1  christos #undef FLD
   2081   1.1  christos }
   2082   1.1  christos 
   2083   1.1  christos static int
   2084   1.1  christos model_m32rx_srl (SIM_CPU *current_cpu, void *sem_arg)
   2085   1.1  christos {
   2086   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2087   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2088   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2089   1.1  christos   int cycles = 0;
   2090   1.1  christos   {
   2091   1.1  christos     int referenced = 0;
   2092   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2093   1.1  christos     INT in_sr = -1;
   2094   1.1  christos     INT in_dr = -1;
   2095   1.1  christos     INT out_dr = -1;
   2096   1.1  christos     in_sr = FLD (in_sr);
   2097   1.1  christos     in_dr = FLD (in_dr);
   2098   1.1  christos     out_dr = FLD (out_dr);
   2099   1.1  christos     referenced |= 1 << 0;
   2100   1.1  christos     referenced |= 1 << 1;
   2101   1.1  christos     referenced |= 1 << 2;
   2102   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2103   1.1  christos   }
   2104   1.1  christos   return cycles;
   2105   1.1  christos #undef FLD
   2106   1.1  christos }
   2107   1.1  christos 
   2108   1.1  christos static int
   2109   1.1  christos model_m32rx_srl3 (SIM_CPU *current_cpu, void *sem_arg)
   2110   1.1  christos {
   2111   1.1  christos #define FLD(f) abuf->fields.sfmt_add3.f
   2112   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2113   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2114   1.1  christos   int cycles = 0;
   2115   1.1  christos   {
   2116   1.1  christos     int referenced = 0;
   2117   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2118   1.1  christos     INT in_sr = -1;
   2119   1.1  christos     INT in_dr = -1;
   2120   1.1  christos     INT out_dr = -1;
   2121   1.1  christos     in_sr = FLD (in_sr);
   2122   1.1  christos     out_dr = FLD (out_dr);
   2123   1.1  christos     referenced |= 1 << 0;
   2124   1.1  christos     referenced |= 1 << 2;
   2125   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2126   1.1  christos   }
   2127   1.1  christos   return cycles;
   2128   1.1  christos #undef FLD
   2129   1.1  christos }
   2130   1.1  christos 
   2131   1.1  christos static int
   2132   1.1  christos model_m32rx_srli (SIM_CPU *current_cpu, void *sem_arg)
   2133   1.1  christos {
   2134   1.1  christos #define FLD(f) abuf->fields.sfmt_slli.f
   2135   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2136   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2137   1.1  christos   int cycles = 0;
   2138   1.1  christos   {
   2139   1.1  christos     int referenced = 0;
   2140   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2141   1.1  christos     INT in_sr = -1;
   2142   1.1  christos     INT in_dr = -1;
   2143   1.1  christos     INT out_dr = -1;
   2144   1.1  christos     in_dr = FLD (in_dr);
   2145   1.1  christos     out_dr = FLD (out_dr);
   2146   1.1  christos     referenced |= 1 << 1;
   2147   1.1  christos     referenced |= 1 << 2;
   2148   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2149   1.1  christos   }
   2150   1.1  christos   return cycles;
   2151   1.1  christos #undef FLD
   2152   1.1  christos }
   2153   1.1  christos 
   2154   1.1  christos static int
   2155   1.1  christos model_m32rx_st (SIM_CPU *current_cpu, void *sem_arg)
   2156   1.1  christos {
   2157   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2158   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2159   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2160   1.1  christos   int cycles = 0;
   2161   1.1  christos   {
   2162   1.1  christos     int referenced = 0;
   2163   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2164   1.1  christos     INT in_src1 = 0;
   2165   1.1  christos     INT in_src2 = 0;
   2166   1.1  christos     in_src1 = FLD (in_src1);
   2167   1.1  christos     in_src2 = FLD (in_src2);
   2168   1.1  christos     referenced |= 1 << 0;
   2169   1.1  christos     referenced |= 1 << 1;
   2170   1.1  christos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2171   1.1  christos   }
   2172   1.1  christos   return cycles;
   2173   1.1  christos #undef FLD
   2174   1.1  christos }
   2175   1.1  christos 
   2176   1.1  christos static int
   2177   1.1  christos model_m32rx_st_d (SIM_CPU *current_cpu, void *sem_arg)
   2178   1.1  christos {
   2179   1.1  christos #define FLD(f) abuf->fields.sfmt_st_d.f
   2180   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2181   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2182   1.1  christos   int cycles = 0;
   2183   1.1  christos   {
   2184   1.1  christos     int referenced = 0;
   2185   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2186   1.1  christos     INT in_src1 = 0;
   2187   1.1  christos     INT in_src2 = 0;
   2188   1.1  christos     in_src1 = FLD (in_src1);
   2189   1.1  christos     in_src2 = FLD (in_src2);
   2190   1.1  christos     referenced |= 1 << 0;
   2191   1.1  christos     referenced |= 1 << 1;
   2192   1.1  christos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2193   1.1  christos   }
   2194   1.1  christos   return cycles;
   2195   1.1  christos #undef FLD
   2196   1.1  christos }
   2197   1.1  christos 
   2198   1.1  christos static int
   2199   1.1  christos model_m32rx_stb (SIM_CPU *current_cpu, void *sem_arg)
   2200   1.1  christos {
   2201   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2202   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2203   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2204   1.1  christos   int cycles = 0;
   2205   1.1  christos   {
   2206   1.1  christos     int referenced = 0;
   2207   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2208   1.1  christos     INT in_src1 = 0;
   2209   1.1  christos     INT in_src2 = 0;
   2210   1.1  christos     in_src1 = FLD (in_src1);
   2211   1.1  christos     in_src2 = FLD (in_src2);
   2212   1.1  christos     referenced |= 1 << 0;
   2213   1.1  christos     referenced |= 1 << 1;
   2214   1.1  christos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2215   1.1  christos   }
   2216   1.1  christos   return cycles;
   2217   1.1  christos #undef FLD
   2218   1.1  christos }
   2219   1.1  christos 
   2220   1.1  christos static int
   2221   1.1  christos model_m32rx_stb_d (SIM_CPU *current_cpu, void *sem_arg)
   2222   1.1  christos {
   2223   1.1  christos #define FLD(f) abuf->fields.sfmt_st_d.f
   2224   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2225   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2226   1.1  christos   int cycles = 0;
   2227   1.1  christos   {
   2228   1.1  christos     int referenced = 0;
   2229   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2230   1.1  christos     INT in_src1 = 0;
   2231   1.1  christos     INT in_src2 = 0;
   2232   1.1  christos     in_src1 = FLD (in_src1);
   2233   1.1  christos     in_src2 = FLD (in_src2);
   2234   1.1  christos     referenced |= 1 << 0;
   2235   1.1  christos     referenced |= 1 << 1;
   2236   1.1  christos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2237   1.1  christos   }
   2238   1.1  christos   return cycles;
   2239   1.1  christos #undef FLD
   2240   1.1  christos }
   2241   1.1  christos 
   2242   1.1  christos static int
   2243   1.1  christos model_m32rx_sth (SIM_CPU *current_cpu, void *sem_arg)
   2244   1.1  christos {
   2245   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2246   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2247   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2248   1.1  christos   int cycles = 0;
   2249   1.1  christos   {
   2250   1.1  christos     int referenced = 0;
   2251   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2252   1.1  christos     INT in_src1 = 0;
   2253   1.1  christos     INT in_src2 = 0;
   2254   1.1  christos     in_src1 = FLD (in_src1);
   2255   1.1  christos     in_src2 = FLD (in_src2);
   2256   1.1  christos     referenced |= 1 << 0;
   2257   1.1  christos     referenced |= 1 << 1;
   2258   1.1  christos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2259   1.1  christos   }
   2260   1.1  christos   return cycles;
   2261   1.1  christos #undef FLD
   2262   1.1  christos }
   2263   1.1  christos 
   2264   1.1  christos static int
   2265   1.1  christos model_m32rx_sth_d (SIM_CPU *current_cpu, void *sem_arg)
   2266   1.1  christos {
   2267   1.1  christos #define FLD(f) abuf->fields.sfmt_st_d.f
   2268   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2269   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2270   1.1  christos   int cycles = 0;
   2271   1.1  christos   {
   2272   1.1  christos     int referenced = 0;
   2273   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2274   1.1  christos     INT in_src1 = 0;
   2275   1.1  christos     INT in_src2 = 0;
   2276   1.1  christos     in_src1 = FLD (in_src1);
   2277   1.1  christos     in_src2 = FLD (in_src2);
   2278   1.1  christos     referenced |= 1 << 0;
   2279   1.1  christos     referenced |= 1 << 1;
   2280   1.1  christos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2281   1.1  christos   }
   2282   1.1  christos   return cycles;
   2283   1.1  christos #undef FLD
   2284   1.1  christos }
   2285   1.1  christos 
   2286   1.1  christos static int
   2287   1.1  christos model_m32rx_st_plus (SIM_CPU *current_cpu, void *sem_arg)
   2288   1.1  christos {
   2289   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2290   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2291   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2292   1.1  christos   int cycles = 0;
   2293   1.1  christos   {
   2294   1.1  christos     int referenced = 0;
   2295   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2296   1.1  christos     INT in_src1 = 0;
   2297   1.1  christos     INT in_src2 = 0;
   2298   1.1  christos     in_src1 = FLD (in_src1);
   2299   1.1  christos     in_src2 = FLD (in_src2);
   2300   1.1  christos     referenced |= 1 << 0;
   2301   1.1  christos     referenced |= 1 << 1;
   2302   1.1  christos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2303   1.1  christos   }
   2304   1.1  christos   {
   2305   1.1  christos     int referenced = 0;
   2306   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2307   1.1  christos     INT in_sr = -1;
   2308   1.1  christos     INT in_dr = -1;
   2309   1.1  christos     INT out_dr = -1;
   2310   1.1  christos     in_dr = FLD (in_src2);
   2311   1.1  christos     out_dr = FLD (out_src2);
   2312   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
   2313   1.1  christos   }
   2314   1.1  christos   return cycles;
   2315   1.1  christos #undef FLD
   2316   1.1  christos }
   2317   1.1  christos 
   2318   1.1  christos static int
   2319   1.1  christos model_m32rx_sth_plus (SIM_CPU *current_cpu, void *sem_arg)
   2320   1.1  christos {
   2321   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2322   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2323   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2324   1.1  christos   int cycles = 0;
   2325   1.1  christos   {
   2326   1.1  christos     int referenced = 0;
   2327   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2328   1.1  christos     INT in_src1 = 0;
   2329   1.1  christos     INT in_src2 = 0;
   2330   1.1  christos     in_src1 = FLD (in_src1);
   2331   1.1  christos     in_src2 = FLD (in_src2);
   2332   1.1  christos     referenced |= 1 << 0;
   2333   1.1  christos     referenced |= 1 << 1;
   2334   1.1  christos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2335   1.1  christos   }
   2336   1.1  christos   {
   2337   1.1  christos     int referenced = 0;
   2338   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2339   1.1  christos     INT in_sr = -1;
   2340   1.1  christos     INT in_dr = -1;
   2341   1.1  christos     INT out_dr = -1;
   2342   1.1  christos     in_dr = FLD (in_src2);
   2343   1.1  christos     out_dr = FLD (out_src2);
   2344   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
   2345   1.1  christos   }
   2346   1.1  christos   return cycles;
   2347   1.1  christos #undef FLD
   2348   1.1  christos }
   2349   1.1  christos 
   2350   1.1  christos static int
   2351   1.1  christos model_m32rx_stb_plus (SIM_CPU *current_cpu, void *sem_arg)
   2352   1.1  christos {
   2353   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2354   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2355   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2356   1.1  christos   int cycles = 0;
   2357   1.1  christos   {
   2358   1.1  christos     int referenced = 0;
   2359   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2360   1.1  christos     INT in_src1 = 0;
   2361   1.1  christos     INT in_src2 = 0;
   2362   1.1  christos     in_src1 = FLD (in_src1);
   2363   1.1  christos     in_src2 = FLD (in_src2);
   2364   1.1  christos     referenced |= 1 << 0;
   2365   1.1  christos     referenced |= 1 << 1;
   2366   1.1  christos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2367   1.1  christos   }
   2368   1.1  christos   {
   2369   1.1  christos     int referenced = 0;
   2370   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2371   1.1  christos     INT in_sr = -1;
   2372   1.1  christos     INT in_dr = -1;
   2373   1.1  christos     INT out_dr = -1;
   2374   1.1  christos     in_dr = FLD (in_src2);
   2375   1.1  christos     out_dr = FLD (out_src2);
   2376   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
   2377   1.1  christos   }
   2378   1.1  christos   return cycles;
   2379   1.1  christos #undef FLD
   2380   1.1  christos }
   2381   1.1  christos 
   2382   1.1  christos static int
   2383   1.1  christos model_m32rx_st_minus (SIM_CPU *current_cpu, void *sem_arg)
   2384   1.1  christos {
   2385   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2386   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2387   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2388   1.1  christos   int cycles = 0;
   2389   1.1  christos   {
   2390   1.1  christos     int referenced = 0;
   2391   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2392   1.1  christos     INT in_src1 = 0;
   2393   1.1  christos     INT in_src2 = 0;
   2394   1.1  christos     in_src1 = FLD (in_src1);
   2395   1.1  christos     in_src2 = FLD (in_src2);
   2396   1.1  christos     referenced |= 1 << 0;
   2397   1.1  christos     referenced |= 1 << 1;
   2398   1.1  christos     cycles += m32rxf_model_m32rx_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2399   1.1  christos   }
   2400   1.1  christos   {
   2401   1.1  christos     int referenced = 0;
   2402   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2403   1.1  christos     INT in_sr = -1;
   2404   1.1  christos     INT in_dr = -1;
   2405   1.1  christos     INT out_dr = -1;
   2406   1.1  christos     in_dr = FLD (in_src2);
   2407   1.1  christos     out_dr = FLD (out_src2);
   2408   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
   2409   1.1  christos   }
   2410   1.1  christos   return cycles;
   2411   1.1  christos #undef FLD
   2412   1.1  christos }
   2413   1.1  christos 
   2414   1.1  christos static int
   2415   1.1  christos model_m32rx_sub (SIM_CPU *current_cpu, void *sem_arg)
   2416   1.1  christos {
   2417   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2418   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2419   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2420   1.1  christos   int cycles = 0;
   2421   1.1  christos   {
   2422   1.1  christos     int referenced = 0;
   2423   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2424   1.1  christos     INT in_sr = -1;
   2425   1.1  christos     INT in_dr = -1;
   2426   1.1  christos     INT out_dr = -1;
   2427   1.1  christos     in_sr = FLD (in_sr);
   2428   1.1  christos     in_dr = FLD (in_dr);
   2429   1.1  christos     out_dr = FLD (out_dr);
   2430   1.1  christos     referenced |= 1 << 0;
   2431   1.1  christos     referenced |= 1 << 1;
   2432   1.1  christos     referenced |= 1 << 2;
   2433   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2434   1.1  christos   }
   2435   1.1  christos   return cycles;
   2436   1.1  christos #undef FLD
   2437   1.1  christos }
   2438   1.1  christos 
   2439   1.1  christos static int
   2440   1.1  christos model_m32rx_subv (SIM_CPU *current_cpu, void *sem_arg)
   2441   1.1  christos {
   2442   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2443   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2444   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2445   1.1  christos   int cycles = 0;
   2446   1.1  christos   {
   2447   1.1  christos     int referenced = 0;
   2448   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2449   1.1  christos     INT in_sr = -1;
   2450   1.1  christos     INT in_dr = -1;
   2451   1.1  christos     INT out_dr = -1;
   2452   1.1  christos     in_sr = FLD (in_sr);
   2453   1.1  christos     in_dr = FLD (in_dr);
   2454   1.1  christos     out_dr = FLD (out_dr);
   2455   1.1  christos     referenced |= 1 << 0;
   2456   1.1  christos     referenced |= 1 << 1;
   2457   1.1  christos     referenced |= 1 << 2;
   2458   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2459   1.1  christos   }
   2460   1.1  christos   return cycles;
   2461   1.1  christos #undef FLD
   2462   1.1  christos }
   2463   1.1  christos 
   2464   1.1  christos static int
   2465   1.1  christos model_m32rx_subx (SIM_CPU *current_cpu, void *sem_arg)
   2466   1.1  christos {
   2467   1.1  christos #define FLD(f) abuf->fields.sfmt_add.f
   2468   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2469   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2470   1.1  christos   int cycles = 0;
   2471   1.1  christos   {
   2472   1.1  christos     int referenced = 0;
   2473   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2474   1.1  christos     INT in_sr = -1;
   2475   1.1  christos     INT in_dr = -1;
   2476   1.1  christos     INT out_dr = -1;
   2477   1.1  christos     in_sr = FLD (in_sr);
   2478   1.1  christos     in_dr = FLD (in_dr);
   2479   1.1  christos     out_dr = FLD (out_dr);
   2480   1.1  christos     referenced |= 1 << 0;
   2481   1.1  christos     referenced |= 1 << 1;
   2482   1.1  christos     referenced |= 1 << 2;
   2483   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2484   1.1  christos   }
   2485   1.1  christos   return cycles;
   2486   1.1  christos #undef FLD
   2487   1.1  christos }
   2488   1.1  christos 
   2489   1.1  christos static int
   2490   1.1  christos model_m32rx_trap (SIM_CPU *current_cpu, void *sem_arg)
   2491   1.1  christos {
   2492   1.1  christos #define FLD(f) abuf->fields.sfmt_trap.f
   2493   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2494   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2495   1.1  christos   int cycles = 0;
   2496   1.1  christos   {
   2497   1.1  christos     int referenced = 0;
   2498   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2499   1.1  christos     INT in_sr = -1;
   2500   1.1  christos     INT in_dr = -1;
   2501   1.1  christos     INT out_dr = -1;
   2502   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2503   1.1  christos   }
   2504   1.1  christos   return cycles;
   2505   1.1  christos #undef FLD
   2506   1.1  christos }
   2507   1.1  christos 
   2508   1.1  christos static int
   2509   1.1  christos model_m32rx_unlock (SIM_CPU *current_cpu, void *sem_arg)
   2510   1.1  christos {
   2511   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2512   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2513   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2514   1.1  christos   int cycles = 0;
   2515   1.1  christos   {
   2516   1.1  christos     int referenced = 0;
   2517   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2518   1.1  christos     INT in_sr = 0;
   2519   1.1  christos     INT out_dr = 0;
   2520   1.1  christos     cycles += m32rxf_model_m32rx_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
   2521   1.1  christos   }
   2522   1.1  christos   return cycles;
   2523   1.1  christos #undef FLD
   2524   1.1  christos }
   2525   1.1  christos 
   2526   1.1  christos static int
   2527   1.1  christos model_m32rx_satb (SIM_CPU *current_cpu, void *sem_arg)
   2528   1.1  christos {
   2529   1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   2530   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2531   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2532   1.1  christos   int cycles = 0;
   2533   1.1  christos   {
   2534   1.1  christos     int referenced = 0;
   2535   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2536   1.1  christos     INT in_sr = -1;
   2537   1.1  christos     INT in_dr = -1;
   2538   1.1  christos     INT out_dr = -1;
   2539   1.1  christos     in_sr = FLD (in_sr);
   2540   1.1  christos     out_dr = FLD (out_dr);
   2541   1.1  christos     referenced |= 1 << 0;
   2542   1.1  christos     referenced |= 1 << 2;
   2543   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2544   1.1  christos   }
   2545   1.1  christos   return cycles;
   2546   1.1  christos #undef FLD
   2547   1.1  christos }
   2548   1.1  christos 
   2549   1.1  christos static int
   2550   1.1  christos model_m32rx_sath (SIM_CPU *current_cpu, void *sem_arg)
   2551   1.1  christos {
   2552   1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   2553   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2554   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2555   1.1  christos   int cycles = 0;
   2556   1.1  christos   {
   2557   1.1  christos     int referenced = 0;
   2558   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2559   1.1  christos     INT in_sr = -1;
   2560   1.1  christos     INT in_dr = -1;
   2561   1.1  christos     INT out_dr = -1;
   2562   1.1  christos     in_sr = FLD (in_sr);
   2563   1.1  christos     out_dr = FLD (out_dr);
   2564   1.1  christos     referenced |= 1 << 0;
   2565   1.1  christos     referenced |= 1 << 2;
   2566   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2567   1.1  christos   }
   2568   1.1  christos   return cycles;
   2569   1.1  christos #undef FLD
   2570   1.1  christos }
   2571   1.1  christos 
   2572   1.1  christos static int
   2573   1.1  christos model_m32rx_sat (SIM_CPU *current_cpu, void *sem_arg)
   2574   1.1  christos {
   2575   1.1  christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
   2576   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2577   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2578   1.1  christos   int cycles = 0;
   2579   1.1  christos   {
   2580   1.1  christos     int referenced = 0;
   2581   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2582   1.1  christos     INT in_sr = -1;
   2583   1.1  christos     INT in_dr = -1;
   2584   1.1  christos     INT out_dr = -1;
   2585   1.1  christos     in_sr = FLD (in_sr);
   2586   1.1  christos     out_dr = FLD (out_dr);
   2587   1.1  christos     if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
   2588   1.1  christos     referenced |= 1 << 2;
   2589   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2590   1.1  christos   }
   2591   1.1  christos   return cycles;
   2592   1.1  christos #undef FLD
   2593   1.1  christos }
   2594   1.1  christos 
   2595   1.1  christos static int
   2596   1.1  christos model_m32rx_pcmpbz (SIM_CPU *current_cpu, void *sem_arg)
   2597   1.1  christos {
   2598   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2599   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2600   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2601   1.1  christos   int cycles = 0;
   2602   1.1  christos   {
   2603   1.1  christos     int referenced = 0;
   2604   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2605   1.1  christos     INT in_src1 = -1;
   2606   1.1  christos     INT in_src2 = -1;
   2607   1.1  christos     in_src2 = FLD (in_src2);
   2608   1.1  christos     referenced |= 1 << 1;
   2609   1.1  christos     cycles += m32rxf_model_m32rx_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2610   1.1  christos   }
   2611   1.1  christos   return cycles;
   2612   1.1  christos #undef FLD
   2613   1.1  christos }
   2614   1.1  christos 
   2615   1.1  christos static int
   2616   1.1  christos model_m32rx_sadd (SIM_CPU *current_cpu, void *sem_arg)
   2617   1.1  christos {
   2618   1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   2619   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2620   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2621   1.1  christos   int cycles = 0;
   2622   1.1  christos   {
   2623   1.1  christos     int referenced = 0;
   2624   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2625   1.1  christos     INT in_src1 = -1;
   2626   1.1  christos     INT in_src2 = -1;
   2627   1.1  christos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2628   1.1  christos   }
   2629   1.1  christos   return cycles;
   2630   1.1  christos #undef FLD
   2631   1.1  christos }
   2632   1.1  christos 
   2633   1.1  christos static int
   2634   1.1  christos model_m32rx_macwu1 (SIM_CPU *current_cpu, void *sem_arg)
   2635   1.1  christos {
   2636   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2637   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2638   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2639   1.1  christos   int cycles = 0;
   2640   1.1  christos   {
   2641   1.1  christos     int referenced = 0;
   2642   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2643   1.1  christos     INT in_src1 = -1;
   2644   1.1  christos     INT in_src2 = -1;
   2645   1.1  christos     in_src1 = FLD (in_src1);
   2646   1.1  christos     in_src2 = FLD (in_src2);
   2647   1.1  christos     referenced |= 1 << 0;
   2648   1.1  christos     referenced |= 1 << 1;
   2649   1.1  christos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2650   1.1  christos   }
   2651   1.1  christos   return cycles;
   2652   1.1  christos #undef FLD
   2653   1.1  christos }
   2654   1.1  christos 
   2655   1.1  christos static int
   2656   1.1  christos model_m32rx_msblo (SIM_CPU *current_cpu, void *sem_arg)
   2657   1.1  christos {
   2658   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2659   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2660   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2661   1.1  christos   int cycles = 0;
   2662   1.1  christos   {
   2663   1.1  christos     int referenced = 0;
   2664   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2665   1.1  christos     INT in_src1 = -1;
   2666   1.1  christos     INT in_src2 = -1;
   2667   1.1  christos     in_src1 = FLD (in_src1);
   2668   1.1  christos     in_src2 = FLD (in_src2);
   2669   1.1  christos     referenced |= 1 << 0;
   2670   1.1  christos     referenced |= 1 << 1;
   2671   1.1  christos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2672   1.1  christos   }
   2673   1.1  christos   return cycles;
   2674   1.1  christos #undef FLD
   2675   1.1  christos }
   2676   1.1  christos 
   2677   1.1  christos static int
   2678   1.1  christos model_m32rx_mulwu1 (SIM_CPU *current_cpu, void *sem_arg)
   2679   1.1  christos {
   2680   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2681   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2682   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2683   1.1  christos   int cycles = 0;
   2684   1.1  christos   {
   2685   1.1  christos     int referenced = 0;
   2686   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2687   1.1  christos     INT in_src1 = -1;
   2688   1.1  christos     INT in_src2 = -1;
   2689   1.1  christos     in_src1 = FLD (in_src1);
   2690   1.1  christos     in_src2 = FLD (in_src2);
   2691   1.1  christos     referenced |= 1 << 0;
   2692   1.1  christos     referenced |= 1 << 1;
   2693   1.1  christos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2694   1.1  christos   }
   2695   1.1  christos   return cycles;
   2696   1.1  christos #undef FLD
   2697   1.1  christos }
   2698   1.1  christos 
   2699   1.1  christos static int
   2700   1.1  christos model_m32rx_maclh1 (SIM_CPU *current_cpu, void *sem_arg)
   2701   1.1  christos {
   2702   1.1  christos #define FLD(f) abuf->fields.sfmt_st_plus.f
   2703   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2704   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2705   1.1  christos   int cycles = 0;
   2706   1.1  christos   {
   2707   1.1  christos     int referenced = 0;
   2708   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2709   1.1  christos     INT in_src1 = -1;
   2710   1.1  christos     INT in_src2 = -1;
   2711   1.1  christos     in_src1 = FLD (in_src1);
   2712   1.1  christos     in_src2 = FLD (in_src2);
   2713   1.1  christos     referenced |= 1 << 0;
   2714   1.1  christos     referenced |= 1 << 1;
   2715   1.1  christos     cycles += m32rxf_model_m32rx_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
   2716   1.1  christos   }
   2717   1.1  christos   return cycles;
   2718   1.1  christos #undef FLD
   2719   1.1  christos }
   2720   1.1  christos 
   2721   1.1  christos static int
   2722   1.1  christos model_m32rx_sc (SIM_CPU *current_cpu, void *sem_arg)
   2723   1.1  christos {
   2724   1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   2725   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2726   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2727   1.1  christos   int cycles = 0;
   2728   1.1  christos   {
   2729   1.1  christos     int referenced = 0;
   2730   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2731   1.1  christos     INT in_sr = -1;
   2732   1.1  christos     INT in_dr = -1;
   2733   1.1  christos     INT out_dr = -1;
   2734   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2735   1.1  christos   }
   2736   1.1  christos   return cycles;
   2737   1.1  christos #undef FLD
   2738   1.1  christos }
   2739   1.1  christos 
   2740   1.1  christos static int
   2741   1.1  christos model_m32rx_snc (SIM_CPU *current_cpu, void *sem_arg)
   2742   1.1  christos {
   2743   1.1  christos #define FLD(f) abuf->fields.sfmt_empty.f
   2744   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2745   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2746   1.1  christos   int cycles = 0;
   2747   1.1  christos   {
   2748   1.1  christos     int referenced = 0;
   2749   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2750   1.1  christos     INT in_sr = -1;
   2751   1.1  christos     INT in_dr = -1;
   2752   1.1  christos     INT out_dr = -1;
   2753   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2754   1.1  christos   }
   2755   1.1  christos   return cycles;
   2756   1.1  christos #undef FLD
   2757   1.1  christos }
   2758   1.1  christos 
   2759   1.1  christos static int
   2760   1.1  christos model_m32rx_clrpsw (SIM_CPU *current_cpu, void *sem_arg)
   2761   1.1  christos {
   2762   1.1  christos #define FLD(f) abuf->fields.sfmt_clrpsw.f
   2763   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2764   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2765   1.1  christos   int cycles = 0;
   2766   1.1  christos   {
   2767   1.1  christos     int referenced = 0;
   2768   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2769   1.1  christos     INT in_sr = -1;
   2770   1.1  christos     INT in_dr = -1;
   2771   1.1  christos     INT out_dr = -1;
   2772   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2773   1.1  christos   }
   2774   1.1  christos   return cycles;
   2775   1.1  christos #undef FLD
   2776   1.1  christos }
   2777   1.1  christos 
   2778   1.1  christos static int
   2779   1.1  christos model_m32rx_setpsw (SIM_CPU *current_cpu, void *sem_arg)
   2780   1.1  christos {
   2781   1.1  christos #define FLD(f) abuf->fields.sfmt_clrpsw.f
   2782   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2783   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2784   1.1  christos   int cycles = 0;
   2785   1.1  christos   {
   2786   1.1  christos     int referenced = 0;
   2787   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2788   1.1  christos     INT in_sr = -1;
   2789   1.1  christos     INT in_dr = -1;
   2790   1.1  christos     INT out_dr = -1;
   2791   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2792   1.1  christos   }
   2793   1.1  christos   return cycles;
   2794   1.1  christos #undef FLD
   2795   1.1  christos }
   2796   1.1  christos 
   2797   1.1  christos static int
   2798   1.1  christos model_m32rx_bset (SIM_CPU *current_cpu, void *sem_arg)
   2799   1.1  christos {
   2800   1.1  christos #define FLD(f) abuf->fields.sfmt_bset.f
   2801   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2802   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2803   1.1  christos   int cycles = 0;
   2804   1.1  christos   {
   2805   1.1  christos     int referenced = 0;
   2806   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2807   1.1  christos     INT in_sr = -1;
   2808   1.1  christos     INT in_dr = -1;
   2809   1.1  christos     INT out_dr = -1;
   2810   1.1  christos     in_sr = FLD (in_sr);
   2811   1.1  christos     referenced |= 1 << 0;
   2812   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2813   1.1  christos   }
   2814   1.1  christos   return cycles;
   2815   1.1  christos #undef FLD
   2816   1.1  christos }
   2817   1.1  christos 
   2818   1.1  christos static int
   2819   1.1  christos model_m32rx_bclr (SIM_CPU *current_cpu, void *sem_arg)
   2820   1.1  christos {
   2821   1.1  christos #define FLD(f) abuf->fields.sfmt_bset.f
   2822   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2823   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2824   1.1  christos   int cycles = 0;
   2825   1.1  christos   {
   2826   1.1  christos     int referenced = 0;
   2827   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2828   1.1  christos     INT in_sr = -1;
   2829   1.1  christos     INT in_dr = -1;
   2830   1.1  christos     INT out_dr = -1;
   2831   1.1  christos     in_sr = FLD (in_sr);
   2832   1.1  christos     referenced |= 1 << 0;
   2833   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2834   1.1  christos   }
   2835   1.1  christos   return cycles;
   2836   1.1  christos #undef FLD
   2837   1.1  christos }
   2838   1.1  christos 
   2839   1.1  christos static int
   2840   1.1  christos model_m32rx_btst (SIM_CPU *current_cpu, void *sem_arg)
   2841   1.1  christos {
   2842   1.1  christos #define FLD(f) abuf->fields.sfmt_bset.f
   2843   1.1  christos   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
   2844   1.1  christos   const IDESC * UNUSED idesc = abuf->idesc;
   2845   1.1  christos   int cycles = 0;
   2846   1.1  christos   {
   2847   1.1  christos     int referenced = 0;
   2848   1.1  christos     int UNUSED insn_referenced = abuf->written;
   2849   1.1  christos     INT in_sr = -1;
   2850   1.1  christos     INT in_dr = -1;
   2851   1.1  christos     INT out_dr = -1;
   2852   1.1  christos     in_sr = FLD (in_sr);
   2853   1.1  christos     referenced |= 1 << 0;
   2854   1.1  christos     cycles += m32rxf_model_m32rx_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
   2855   1.1  christos   }
   2856   1.1  christos   return cycles;
   2857   1.1  christos #undef FLD
   2858   1.1  christos }
   2859   1.1  christos 
   2860   1.1  christos /* We assume UNIT_NONE == 0 because the tables don't always terminate
   2861   1.1  christos    entries with it.  */
   2862   1.1  christos 
   2863   1.1  christos /* Model timing data for `m32rx'.  */
   2864   1.1  christos 
   2865   1.1  christos static const INSN_TIMING m32rx_timing[] = {
   2866   1.1  christos   { M32RXF_INSN_X_INVALID, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2867   1.1  christos   { M32RXF_INSN_X_AFTER, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2868   1.1  christos   { M32RXF_INSN_X_BEFORE, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2869   1.1  christos   { M32RXF_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2870   1.1  christos   { M32RXF_INSN_X_CHAIN, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2871   1.1  christos   { M32RXF_INSN_X_BEGIN, 0, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2872   1.1  christos   { M32RXF_INSN_ADD, model_m32rx_add, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2873   1.1  christos   { M32RXF_INSN_ADD3, model_m32rx_add3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2874   1.1  christos   { M32RXF_INSN_AND, model_m32rx_and, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2875   1.1  christos   { M32RXF_INSN_AND3, model_m32rx_and3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2876   1.1  christos   { M32RXF_INSN_OR, model_m32rx_or, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2877   1.1  christos   { M32RXF_INSN_OR3, model_m32rx_or3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2878   1.1  christos   { M32RXF_INSN_XOR, model_m32rx_xor, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2879   1.1  christos   { M32RXF_INSN_XOR3, model_m32rx_xor3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2880   1.1  christos   { M32RXF_INSN_ADDI, model_m32rx_addi, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2881   1.1  christos   { M32RXF_INSN_ADDV, model_m32rx_addv, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2882   1.1  christos   { M32RXF_INSN_ADDV3, model_m32rx_addv3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2883   1.1  christos   { M32RXF_INSN_ADDX, model_m32rx_addx, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2884   1.1  christos   { M32RXF_INSN_BC8, model_m32rx_bc8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2885   1.1  christos   { M32RXF_INSN_BC24, model_m32rx_bc24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2886   1.1  christos   { M32RXF_INSN_BEQ, model_m32rx_beq, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
   2887   1.1  christos   { M32RXF_INSN_BEQZ, model_m32rx_beqz, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
   2888   1.1  christos   { M32RXF_INSN_BGEZ, model_m32rx_bgez, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
   2889   1.1  christos   { M32RXF_INSN_BGTZ, model_m32rx_bgtz, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
   2890   1.1  christos   { M32RXF_INSN_BLEZ, model_m32rx_blez, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
   2891   1.1  christos   { M32RXF_INSN_BLTZ, model_m32rx_bltz, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
   2892   1.1  christos   { M32RXF_INSN_BNEZ, model_m32rx_bnez, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
   2893   1.1  christos   { M32RXF_INSN_BL8, model_m32rx_bl8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2894   1.1  christos   { M32RXF_INSN_BL24, model_m32rx_bl24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2895   1.1  christos   { M32RXF_INSN_BCL8, model_m32rx_bcl8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2896   1.1  christos   { M32RXF_INSN_BCL24, model_m32rx_bcl24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2897   1.1  christos   { M32RXF_INSN_BNC8, model_m32rx_bnc8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2898   1.1  christos   { M32RXF_INSN_BNC24, model_m32rx_bnc24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2899   1.1  christos   { M32RXF_INSN_BNE, model_m32rx_bne, { { (int) UNIT_M32RX_U_CTI, 1, 1 }, { (int) UNIT_M32RX_U_CMP, 1, 0 } } },
   2900   1.1  christos   { M32RXF_INSN_BRA8, model_m32rx_bra8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2901   1.1  christos   { M32RXF_INSN_BRA24, model_m32rx_bra24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2902   1.1  christos   { M32RXF_INSN_BNCL8, model_m32rx_bncl8, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2903   1.1  christos   { M32RXF_INSN_BNCL24, model_m32rx_bncl24, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2904   1.1  christos   { M32RXF_INSN_CMP, model_m32rx_cmp, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } },
   2905   1.1  christos   { M32RXF_INSN_CMPI, model_m32rx_cmpi, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } },
   2906   1.1  christos   { M32RXF_INSN_CMPU, model_m32rx_cmpu, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } },
   2907   1.1  christos   { M32RXF_INSN_CMPUI, model_m32rx_cmpui, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } },
   2908   1.1  christos   { M32RXF_INSN_CMPEQ, model_m32rx_cmpeq, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } },
   2909   1.1  christos   { M32RXF_INSN_CMPZ, model_m32rx_cmpz, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } },
   2910   1.1  christos   { M32RXF_INSN_DIV, model_m32rx_div, { { (int) UNIT_M32RX_U_EXEC, 1, 37 } } },
   2911   1.1  christos   { M32RXF_INSN_DIVU, model_m32rx_divu, { { (int) UNIT_M32RX_U_EXEC, 1, 37 } } },
   2912   1.1  christos   { M32RXF_INSN_REM, model_m32rx_rem, { { (int) UNIT_M32RX_U_EXEC, 1, 37 } } },
   2913   1.1  christos   { M32RXF_INSN_REMU, model_m32rx_remu, { { (int) UNIT_M32RX_U_EXEC, 1, 37 } } },
   2914   1.1  christos   { M32RXF_INSN_DIVH, model_m32rx_divh, { { (int) UNIT_M32RX_U_EXEC, 1, 21 } } },
   2915   1.1  christos   { M32RXF_INSN_JC, model_m32rx_jc, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2916   1.1  christos   { M32RXF_INSN_JNC, model_m32rx_jnc, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2917   1.1  christos   { M32RXF_INSN_JL, model_m32rx_jl, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2918   1.1  christos   { M32RXF_INSN_JMP, model_m32rx_jmp, { { (int) UNIT_M32RX_U_CTI, 1, 1 } } },
   2919   1.1  christos   { M32RXF_INSN_LD, model_m32rx_ld, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } },
   2920   1.1  christos   { M32RXF_INSN_LD_D, model_m32rx_ld_d, { { (int) UNIT_M32RX_U_LOAD, 1, 2 } } },
   2921   1.1  christos   { M32RXF_INSN_LDB, model_m32rx_ldb, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } },
   2922   1.1  christos   { M32RXF_INSN_LDB_D, model_m32rx_ldb_d, { { (int) UNIT_M32RX_U_LOAD, 1, 2 } } },
   2923   1.1  christos   { M32RXF_INSN_LDH, model_m32rx_ldh, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } },
   2924   1.1  christos   { M32RXF_INSN_LDH_D, model_m32rx_ldh_d, { { (int) UNIT_M32RX_U_LOAD, 1, 2 } } },
   2925   1.1  christos   { M32RXF_INSN_LDUB, model_m32rx_ldub, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } },
   2926   1.1  christos   { M32RXF_INSN_LDUB_D, model_m32rx_ldub_d, { { (int) UNIT_M32RX_U_LOAD, 1, 2 } } },
   2927   1.1  christos   { M32RXF_INSN_LDUH, model_m32rx_lduh, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } },
   2928   1.1  christos   { M32RXF_INSN_LDUH_D, model_m32rx_lduh_d, { { (int) UNIT_M32RX_U_LOAD, 1, 2 } } },
   2929   1.1  christos   { M32RXF_INSN_LD_PLUS, model_m32rx_ld_plus, { { (int) UNIT_M32RX_U_LOAD, 1, 1 }, { (int) UNIT_M32RX_U_EXEC, 1, 0 } } },
   2930   1.1  christos   { M32RXF_INSN_LD24, model_m32rx_ld24, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2931   1.1  christos   { M32RXF_INSN_LDI8, model_m32rx_ldi8, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2932   1.1  christos   { M32RXF_INSN_LDI16, model_m32rx_ldi16, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2933   1.1  christos   { M32RXF_INSN_LOCK, model_m32rx_lock, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } },
   2934   1.1  christos   { M32RXF_INSN_MACHI_A, model_m32rx_machi_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
   2935   1.1  christos   { M32RXF_INSN_MACLO_A, model_m32rx_maclo_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
   2936   1.1  christos   { M32RXF_INSN_MACWHI_A, model_m32rx_macwhi_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
   2937   1.1  christos   { M32RXF_INSN_MACWLO_A, model_m32rx_macwlo_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
   2938   1.1  christos   { M32RXF_INSN_MUL, model_m32rx_mul, { { (int) UNIT_M32RX_U_EXEC, 1, 4 } } },
   2939   1.1  christos   { M32RXF_INSN_MULHI_A, model_m32rx_mulhi_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
   2940   1.1  christos   { M32RXF_INSN_MULLO_A, model_m32rx_mullo_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
   2941   1.1  christos   { M32RXF_INSN_MULWHI_A, model_m32rx_mulwhi_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
   2942   1.1  christos   { M32RXF_INSN_MULWLO_A, model_m32rx_mulwlo_a, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
   2943   1.1  christos   { M32RXF_INSN_MV, model_m32rx_mv, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2944   1.1  christos   { M32RXF_INSN_MVFACHI_A, model_m32rx_mvfachi_a, { { (int) UNIT_M32RX_U_EXEC, 1, 2 } } },
   2945   1.1  christos   { M32RXF_INSN_MVFACLO_A, model_m32rx_mvfaclo_a, { { (int) UNIT_M32RX_U_EXEC, 1, 2 } } },
   2946   1.1  christos   { M32RXF_INSN_MVFACMI_A, model_m32rx_mvfacmi_a, { { (int) UNIT_M32RX_U_EXEC, 1, 2 } } },
   2947   1.1  christos   { M32RXF_INSN_MVFC, model_m32rx_mvfc, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2948   1.1  christos   { M32RXF_INSN_MVTACHI_A, model_m32rx_mvtachi_a, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2949   1.1  christos   { M32RXF_INSN_MVTACLO_A, model_m32rx_mvtaclo_a, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2950   1.1  christos   { M32RXF_INSN_MVTC, model_m32rx_mvtc, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2951   1.1  christos   { M32RXF_INSN_NEG, model_m32rx_neg, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2952   1.1  christos   { M32RXF_INSN_NOP, model_m32rx_nop, { { (int) UNIT_M32RX_U_EXEC, 1, 0 } } },
   2953   1.1  christos   { M32RXF_INSN_NOT, model_m32rx_not, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2954   1.1  christos   { M32RXF_INSN_RAC_DSI, model_m32rx_rac_dsi, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
   2955   1.1  christos   { M32RXF_INSN_RACH_DSI, model_m32rx_rach_dsi, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
   2956   1.1  christos   { M32RXF_INSN_RTE, model_m32rx_rte, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2957   1.1  christos   { M32RXF_INSN_SETH, model_m32rx_seth, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2958   1.1  christos   { M32RXF_INSN_SLL, model_m32rx_sll, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2959   1.1  christos   { M32RXF_INSN_SLL3, model_m32rx_sll3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2960   1.1  christos   { M32RXF_INSN_SLLI, model_m32rx_slli, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2961   1.1  christos   { M32RXF_INSN_SRA, model_m32rx_sra, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2962   1.1  christos   { M32RXF_INSN_SRA3, model_m32rx_sra3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2963   1.1  christos   { M32RXF_INSN_SRAI, model_m32rx_srai, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2964   1.1  christos   { M32RXF_INSN_SRL, model_m32rx_srl, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2965   1.1  christos   { M32RXF_INSN_SRL3, model_m32rx_srl3, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2966   1.1  christos   { M32RXF_INSN_SRLI, model_m32rx_srli, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2967   1.1  christos   { M32RXF_INSN_ST, model_m32rx_st, { { (int) UNIT_M32RX_U_STORE, 1, 1 } } },
   2968   1.1  christos   { M32RXF_INSN_ST_D, model_m32rx_st_d, { { (int) UNIT_M32RX_U_STORE, 1, 2 } } },
   2969   1.1  christos   { M32RXF_INSN_STB, model_m32rx_stb, { { (int) UNIT_M32RX_U_STORE, 1, 1 } } },
   2970   1.1  christos   { M32RXF_INSN_STB_D, model_m32rx_stb_d, { { (int) UNIT_M32RX_U_STORE, 1, 2 } } },
   2971   1.1  christos   { M32RXF_INSN_STH, model_m32rx_sth, { { (int) UNIT_M32RX_U_STORE, 1, 1 } } },
   2972   1.1  christos   { M32RXF_INSN_STH_D, model_m32rx_sth_d, { { (int) UNIT_M32RX_U_STORE, 1, 2 } } },
   2973   1.1  christos   { M32RXF_INSN_ST_PLUS, model_m32rx_st_plus, { { (int) UNIT_M32RX_U_STORE, 1, 1 }, { (int) UNIT_M32RX_U_EXEC, 1, 0 } } },
   2974   1.1  christos   { M32RXF_INSN_STH_PLUS, model_m32rx_sth_plus, { { (int) UNIT_M32RX_U_STORE, 1, 1 }, { (int) UNIT_M32RX_U_EXEC, 1, 0 } } },
   2975   1.1  christos   { M32RXF_INSN_STB_PLUS, model_m32rx_stb_plus, { { (int) UNIT_M32RX_U_STORE, 1, 1 }, { (int) UNIT_M32RX_U_EXEC, 1, 0 } } },
   2976   1.1  christos   { M32RXF_INSN_ST_MINUS, model_m32rx_st_minus, { { (int) UNIT_M32RX_U_STORE, 1, 1 }, { (int) UNIT_M32RX_U_EXEC, 1, 0 } } },
   2977   1.1  christos   { M32RXF_INSN_SUB, model_m32rx_sub, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2978   1.1  christos   { M32RXF_INSN_SUBV, model_m32rx_subv, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2979   1.1  christos   { M32RXF_INSN_SUBX, model_m32rx_subx, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2980   1.1  christos   { M32RXF_INSN_TRAP, model_m32rx_trap, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2981   1.1  christos   { M32RXF_INSN_UNLOCK, model_m32rx_unlock, { { (int) UNIT_M32RX_U_LOAD, 1, 1 } } },
   2982   1.1  christos   { M32RXF_INSN_SATB, model_m32rx_satb, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2983   1.1  christos   { M32RXF_INSN_SATH, model_m32rx_sath, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2984   1.1  christos   { M32RXF_INSN_SAT, model_m32rx_sat, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2985   1.1  christos   { M32RXF_INSN_PCMPBZ, model_m32rx_pcmpbz, { { (int) UNIT_M32RX_U_CMP, 1, 1 } } },
   2986   1.1  christos   { M32RXF_INSN_SADD, model_m32rx_sadd, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
   2987   1.1  christos   { M32RXF_INSN_MACWU1, model_m32rx_macwu1, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
   2988   1.1  christos   { M32RXF_INSN_MSBLO, model_m32rx_msblo, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
   2989   1.1  christos   { M32RXF_INSN_MULWU1, model_m32rx_mulwu1, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
   2990   1.1  christos   { M32RXF_INSN_MACLH1, model_m32rx_maclh1, { { (int) UNIT_M32RX_U_MAC, 1, 1 } } },
   2991   1.1  christos   { M32RXF_INSN_SC, model_m32rx_sc, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2992   1.1  christos   { M32RXF_INSN_SNC, model_m32rx_snc, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2993   1.1  christos   { M32RXF_INSN_CLRPSW, model_m32rx_clrpsw, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2994   1.1  christos   { M32RXF_INSN_SETPSW, model_m32rx_setpsw, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2995   1.1  christos   { M32RXF_INSN_BSET, model_m32rx_bset, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2996   1.1  christos   { M32RXF_INSN_BCLR, model_m32rx_bclr, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2997   1.1  christos   { M32RXF_INSN_BTST, model_m32rx_btst, { { (int) UNIT_M32RX_U_EXEC, 1, 1 } } },
   2998   1.1  christos };
   2999   1.1  christos 
   3000   1.1  christos #endif /* WITH_PROFILE_MODEL_P */
   3001   1.1  christos 
   3002   1.1  christos static void
   3003   1.1  christos m32rx_model_init (SIM_CPU *cpu)
   3004   1.1  christos {
   3005   1.1  christos   CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_M32RX_DATA));
   3006   1.1  christos }
   3007   1.1  christos 
   3008   1.1  christos #if WITH_PROFILE_MODEL_P
   3009   1.1  christos #define TIMING_DATA(td) td
   3010   1.1  christos #else
   3011   1.1  christos #define TIMING_DATA(td) 0
   3012   1.1  christos #endif
   3013   1.1  christos 
   3014   1.6  christos static const SIM_MODEL m32rx_models[] =
   3015   1.1  christos {
   3016   1.1  christos   { "m32rx", & m32rx_mach, MODEL_M32RX, TIMING_DATA (& m32rx_timing[0]), m32rx_model_init },
   3017   1.1  christos   { 0 }
   3018   1.1  christos };
   3019   1.1  christos 
   3020   1.1  christos /* The properties of this cpu's implementation.  */
   3021   1.1  christos 
   3022   1.6  christos static const SIM_MACH_IMP_PROPERTIES m32rxf_imp_properties =
   3023   1.1  christos {
   3024   1.1  christos   sizeof (SIM_CPU),
   3025   1.1  christos #if WITH_SCACHE
   3026   1.1  christos   sizeof (SCACHE)
   3027   1.1  christos #else
   3028   1.1  christos   0
   3029   1.1  christos #endif
   3030   1.1  christos };
   3031   1.1  christos 
   3032   1.1  christos 
   3033   1.1  christos static void
   3034   1.1  christos m32rxf_prepare_run (SIM_CPU *cpu)
   3035   1.1  christos {
   3036   1.1  christos   if (CPU_IDESC (cpu) == NULL)
   3037   1.1  christos     m32rxf_init_idesc_table (cpu);
   3038   1.1  christos }
   3039   1.1  christos 
   3040   1.1  christos static const CGEN_INSN *
   3041   1.1  christos m32rxf_get_idata (SIM_CPU *cpu, int inum)
   3042   1.1  christos {
   3043   1.1  christos   return CPU_IDESC (cpu) [inum].idata;
   3044   1.1  christos }
   3045   1.1  christos 
   3046   1.1  christos static void
   3047   1.1  christos m32rx_init_cpu (SIM_CPU *cpu)
   3048   1.1  christos {
   3049   1.1  christos   CPU_REG_FETCH (cpu) = m32rxf_fetch_register;
   3050   1.1  christos   CPU_REG_STORE (cpu) = m32rxf_store_register;
   3051   1.1  christos   CPU_PC_FETCH (cpu) = m32rxf_h_pc_get;
   3052   1.1  christos   CPU_PC_STORE (cpu) = m32rxf_h_pc_set;
   3053   1.1  christos   CPU_GET_IDATA (cpu) = m32rxf_get_idata;
   3054   1.1  christos   CPU_MAX_INSNS (cpu) = M32RXF_INSN__MAX;
   3055   1.1  christos   CPU_INSN_NAME (cpu) = cgen_insn_name;
   3056   1.1  christos   CPU_FULL_ENGINE_FN (cpu) = m32rxf_engine_run_full;
   3057   1.1  christos #if WITH_FAST
   3058   1.1  christos   CPU_FAST_ENGINE_FN (cpu) = m32rxf_engine_run_fast;
   3059   1.1  christos #else
   3060   1.1  christos   CPU_FAST_ENGINE_FN (cpu) = m32rxf_engine_run_full;
   3061   1.1  christos #endif
   3062   1.1  christos }
   3063   1.1  christos 
   3064   1.6  christos const SIM_MACH m32rx_mach =
   3065   1.1  christos {
   3066   1.1  christos   "m32rx", "m32rx", MACH_M32RX,
   3067   1.1  christos   32, 32, & m32rx_models[0], & m32rxf_imp_properties,
   3068   1.1  christos   m32rx_init_cpu,
   3069   1.1  christos   m32rxf_prepare_run
   3070   1.1  christos };
   3071   1.1  christos 
   3072