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