OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [tags/] [tn_m001/] [gdb-5.0/] [sim/] [fr30/] [sem-switch.c] - Blame information for rev 1782

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 106 markom
/* Simulator instruction semantics for fr30bf.
2
 
3
THIS FILE IS MACHINE GENERATED WITH CGEN.
4
 
5
Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
6
 
7
This file is part of the GNU Simulators.
8
 
9
This program is free software; you can redistribute it and/or modify
10
it under the terms of the GNU General Public License as published by
11
the Free Software Foundation; either version 2, or (at your option)
12
any later version.
13
 
14
This program is distributed in the hope that it will be useful,
15
but WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
GNU General Public License for more details.
18
 
19
You should have received a copy of the GNU General Public License along
20
with this program; if not, write to the Free Software Foundation, Inc.,
21
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
 
23
*/
24
 
25
#ifdef DEFINE_LABELS
26
 
27
  /* The labels have the case they have because the enum of insn types
28
     is all uppercase and in the non-stdc case the insn symbol is built
29
     into the enum name.  */
30
 
31
  static struct {
32
    int index;
33
    void *label;
34
  } labels[] = {
35
    { FR30BF_INSN_X_INVALID, && case_sem_INSN_X_INVALID },
36
    { FR30BF_INSN_X_AFTER, && case_sem_INSN_X_AFTER },
37
    { FR30BF_INSN_X_BEFORE, && case_sem_INSN_X_BEFORE },
38
    { FR30BF_INSN_X_CTI_CHAIN, && case_sem_INSN_X_CTI_CHAIN },
39
    { FR30BF_INSN_X_CHAIN, && case_sem_INSN_X_CHAIN },
40
    { FR30BF_INSN_X_BEGIN, && case_sem_INSN_X_BEGIN },
41
    { FR30BF_INSN_ADD, && case_sem_INSN_ADD },
42
    { FR30BF_INSN_ADDI, && case_sem_INSN_ADDI },
43
    { FR30BF_INSN_ADD2, && case_sem_INSN_ADD2 },
44
    { FR30BF_INSN_ADDC, && case_sem_INSN_ADDC },
45
    { FR30BF_INSN_ADDN, && case_sem_INSN_ADDN },
46
    { FR30BF_INSN_ADDNI, && case_sem_INSN_ADDNI },
47
    { FR30BF_INSN_ADDN2, && case_sem_INSN_ADDN2 },
48
    { FR30BF_INSN_SUB, && case_sem_INSN_SUB },
49
    { FR30BF_INSN_SUBC, && case_sem_INSN_SUBC },
50
    { FR30BF_INSN_SUBN, && case_sem_INSN_SUBN },
51
    { FR30BF_INSN_CMP, && case_sem_INSN_CMP },
52
    { FR30BF_INSN_CMPI, && case_sem_INSN_CMPI },
53
    { FR30BF_INSN_CMP2, && case_sem_INSN_CMP2 },
54
    { FR30BF_INSN_AND, && case_sem_INSN_AND },
55
    { FR30BF_INSN_OR, && case_sem_INSN_OR },
56
    { FR30BF_INSN_EOR, && case_sem_INSN_EOR },
57
    { FR30BF_INSN_ANDM, && case_sem_INSN_ANDM },
58
    { FR30BF_INSN_ANDH, && case_sem_INSN_ANDH },
59
    { FR30BF_INSN_ANDB, && case_sem_INSN_ANDB },
60
    { FR30BF_INSN_ORM, && case_sem_INSN_ORM },
61
    { FR30BF_INSN_ORH, && case_sem_INSN_ORH },
62
    { FR30BF_INSN_ORB, && case_sem_INSN_ORB },
63
    { FR30BF_INSN_EORM, && case_sem_INSN_EORM },
64
    { FR30BF_INSN_EORH, && case_sem_INSN_EORH },
65
    { FR30BF_INSN_EORB, && case_sem_INSN_EORB },
66
    { FR30BF_INSN_BANDL, && case_sem_INSN_BANDL },
67
    { FR30BF_INSN_BORL, && case_sem_INSN_BORL },
68
    { FR30BF_INSN_BEORL, && case_sem_INSN_BEORL },
69
    { FR30BF_INSN_BANDH, && case_sem_INSN_BANDH },
70
    { FR30BF_INSN_BORH, && case_sem_INSN_BORH },
71
    { FR30BF_INSN_BEORH, && case_sem_INSN_BEORH },
72
    { FR30BF_INSN_BTSTL, && case_sem_INSN_BTSTL },
73
    { FR30BF_INSN_BTSTH, && case_sem_INSN_BTSTH },
74
    { FR30BF_INSN_MUL, && case_sem_INSN_MUL },
75
    { FR30BF_INSN_MULU, && case_sem_INSN_MULU },
76
    { FR30BF_INSN_MULH, && case_sem_INSN_MULH },
77
    { FR30BF_INSN_MULUH, && case_sem_INSN_MULUH },
78
    { FR30BF_INSN_DIV0S, && case_sem_INSN_DIV0S },
79
    { FR30BF_INSN_DIV0U, && case_sem_INSN_DIV0U },
80
    { FR30BF_INSN_DIV1, && case_sem_INSN_DIV1 },
81
    { FR30BF_INSN_DIV2, && case_sem_INSN_DIV2 },
82
    { FR30BF_INSN_DIV3, && case_sem_INSN_DIV3 },
83
    { FR30BF_INSN_DIV4S, && case_sem_INSN_DIV4S },
84
    { FR30BF_INSN_LSL, && case_sem_INSN_LSL },
85
    { FR30BF_INSN_LSLI, && case_sem_INSN_LSLI },
86
    { FR30BF_INSN_LSL2, && case_sem_INSN_LSL2 },
87
    { FR30BF_INSN_LSR, && case_sem_INSN_LSR },
88
    { FR30BF_INSN_LSRI, && case_sem_INSN_LSRI },
89
    { FR30BF_INSN_LSR2, && case_sem_INSN_LSR2 },
90
    { FR30BF_INSN_ASR, && case_sem_INSN_ASR },
91
    { FR30BF_INSN_ASRI, && case_sem_INSN_ASRI },
92
    { FR30BF_INSN_ASR2, && case_sem_INSN_ASR2 },
93
    { FR30BF_INSN_LDI8, && case_sem_INSN_LDI8 },
94
    { FR30BF_INSN_LDI20, && case_sem_INSN_LDI20 },
95
    { FR30BF_INSN_LDI32, && case_sem_INSN_LDI32 },
96
    { FR30BF_INSN_LD, && case_sem_INSN_LD },
97
    { FR30BF_INSN_LDUH, && case_sem_INSN_LDUH },
98
    { FR30BF_INSN_LDUB, && case_sem_INSN_LDUB },
99
    { FR30BF_INSN_LDR13, && case_sem_INSN_LDR13 },
100
    { FR30BF_INSN_LDR13UH, && case_sem_INSN_LDR13UH },
101
    { FR30BF_INSN_LDR13UB, && case_sem_INSN_LDR13UB },
102
    { FR30BF_INSN_LDR14, && case_sem_INSN_LDR14 },
103
    { FR30BF_INSN_LDR14UH, && case_sem_INSN_LDR14UH },
104
    { FR30BF_INSN_LDR14UB, && case_sem_INSN_LDR14UB },
105
    { FR30BF_INSN_LDR15, && case_sem_INSN_LDR15 },
106
    { FR30BF_INSN_LDR15GR, && case_sem_INSN_LDR15GR },
107
    { FR30BF_INSN_LDR15DR, && case_sem_INSN_LDR15DR },
108
    { FR30BF_INSN_LDR15PS, && case_sem_INSN_LDR15PS },
109
    { FR30BF_INSN_ST, && case_sem_INSN_ST },
110
    { FR30BF_INSN_STH, && case_sem_INSN_STH },
111
    { FR30BF_INSN_STB, && case_sem_INSN_STB },
112
    { FR30BF_INSN_STR13, && case_sem_INSN_STR13 },
113
    { FR30BF_INSN_STR13H, && case_sem_INSN_STR13H },
114
    { FR30BF_INSN_STR13B, && case_sem_INSN_STR13B },
115
    { FR30BF_INSN_STR14, && case_sem_INSN_STR14 },
116
    { FR30BF_INSN_STR14H, && case_sem_INSN_STR14H },
117
    { FR30BF_INSN_STR14B, && case_sem_INSN_STR14B },
118
    { FR30BF_INSN_STR15, && case_sem_INSN_STR15 },
119
    { FR30BF_INSN_STR15GR, && case_sem_INSN_STR15GR },
120
    { FR30BF_INSN_STR15DR, && case_sem_INSN_STR15DR },
121
    { FR30BF_INSN_STR15PS, && case_sem_INSN_STR15PS },
122
    { FR30BF_INSN_MOV, && case_sem_INSN_MOV },
123
    { FR30BF_INSN_MOVDR, && case_sem_INSN_MOVDR },
124
    { FR30BF_INSN_MOVPS, && case_sem_INSN_MOVPS },
125
    { FR30BF_INSN_MOV2DR, && case_sem_INSN_MOV2DR },
126
    { FR30BF_INSN_MOV2PS, && case_sem_INSN_MOV2PS },
127
    { FR30BF_INSN_JMP, && case_sem_INSN_JMP },
128
    { FR30BF_INSN_JMPD, && case_sem_INSN_JMPD },
129
    { FR30BF_INSN_CALLR, && case_sem_INSN_CALLR },
130
    { FR30BF_INSN_CALLRD, && case_sem_INSN_CALLRD },
131
    { FR30BF_INSN_CALL, && case_sem_INSN_CALL },
132
    { FR30BF_INSN_CALLD, && case_sem_INSN_CALLD },
133
    { FR30BF_INSN_RET, && case_sem_INSN_RET },
134
    { FR30BF_INSN_RET_D, && case_sem_INSN_RET_D },
135
    { FR30BF_INSN_INT, && case_sem_INSN_INT },
136
    { FR30BF_INSN_INTE, && case_sem_INSN_INTE },
137
    { FR30BF_INSN_RETI, && case_sem_INSN_RETI },
138
    { FR30BF_INSN_BRAD, && case_sem_INSN_BRAD },
139
    { FR30BF_INSN_BRA, && case_sem_INSN_BRA },
140
    { FR30BF_INSN_BNOD, && case_sem_INSN_BNOD },
141
    { FR30BF_INSN_BNO, && case_sem_INSN_BNO },
142
    { FR30BF_INSN_BEQD, && case_sem_INSN_BEQD },
143
    { FR30BF_INSN_BEQ, && case_sem_INSN_BEQ },
144
    { FR30BF_INSN_BNED, && case_sem_INSN_BNED },
145
    { FR30BF_INSN_BNE, && case_sem_INSN_BNE },
146
    { FR30BF_INSN_BCD, && case_sem_INSN_BCD },
147
    { FR30BF_INSN_BC, && case_sem_INSN_BC },
148
    { FR30BF_INSN_BNCD, && case_sem_INSN_BNCD },
149
    { FR30BF_INSN_BNC, && case_sem_INSN_BNC },
150
    { FR30BF_INSN_BND, && case_sem_INSN_BND },
151
    { FR30BF_INSN_BN, && case_sem_INSN_BN },
152
    { FR30BF_INSN_BPD, && case_sem_INSN_BPD },
153
    { FR30BF_INSN_BP, && case_sem_INSN_BP },
154
    { FR30BF_INSN_BVD, && case_sem_INSN_BVD },
155
    { FR30BF_INSN_BV, && case_sem_INSN_BV },
156
    { FR30BF_INSN_BNVD, && case_sem_INSN_BNVD },
157
    { FR30BF_INSN_BNV, && case_sem_INSN_BNV },
158
    { FR30BF_INSN_BLTD, && case_sem_INSN_BLTD },
159
    { FR30BF_INSN_BLT, && case_sem_INSN_BLT },
160
    { FR30BF_INSN_BGED, && case_sem_INSN_BGED },
161
    { FR30BF_INSN_BGE, && case_sem_INSN_BGE },
162
    { FR30BF_INSN_BLED, && case_sem_INSN_BLED },
163
    { FR30BF_INSN_BLE, && case_sem_INSN_BLE },
164
    { FR30BF_INSN_BGTD, && case_sem_INSN_BGTD },
165
    { FR30BF_INSN_BGT, && case_sem_INSN_BGT },
166
    { FR30BF_INSN_BLSD, && case_sem_INSN_BLSD },
167
    { FR30BF_INSN_BLS, && case_sem_INSN_BLS },
168
    { FR30BF_INSN_BHID, && case_sem_INSN_BHID },
169
    { FR30BF_INSN_BHI, && case_sem_INSN_BHI },
170
    { FR30BF_INSN_DMOVR13, && case_sem_INSN_DMOVR13 },
171
    { FR30BF_INSN_DMOVR13H, && case_sem_INSN_DMOVR13H },
172
    { FR30BF_INSN_DMOVR13B, && case_sem_INSN_DMOVR13B },
173
    { FR30BF_INSN_DMOVR13PI, && case_sem_INSN_DMOVR13PI },
174
    { FR30BF_INSN_DMOVR13PIH, && case_sem_INSN_DMOVR13PIH },
175
    { FR30BF_INSN_DMOVR13PIB, && case_sem_INSN_DMOVR13PIB },
176
    { FR30BF_INSN_DMOVR15PI, && case_sem_INSN_DMOVR15PI },
177
    { FR30BF_INSN_DMOV2R13, && case_sem_INSN_DMOV2R13 },
178
    { FR30BF_INSN_DMOV2R13H, && case_sem_INSN_DMOV2R13H },
179
    { FR30BF_INSN_DMOV2R13B, && case_sem_INSN_DMOV2R13B },
180
    { FR30BF_INSN_DMOV2R13PI, && case_sem_INSN_DMOV2R13PI },
181
    { FR30BF_INSN_DMOV2R13PIH, && case_sem_INSN_DMOV2R13PIH },
182
    { FR30BF_INSN_DMOV2R13PIB, && case_sem_INSN_DMOV2R13PIB },
183
    { FR30BF_INSN_DMOV2R15PD, && case_sem_INSN_DMOV2R15PD },
184
    { FR30BF_INSN_LDRES, && case_sem_INSN_LDRES },
185
    { FR30BF_INSN_STRES, && case_sem_INSN_STRES },
186
    { FR30BF_INSN_COPOP, && case_sem_INSN_COPOP },
187
    { FR30BF_INSN_COPLD, && case_sem_INSN_COPLD },
188
    { FR30BF_INSN_COPST, && case_sem_INSN_COPST },
189
    { FR30BF_INSN_COPSV, && case_sem_INSN_COPSV },
190
    { FR30BF_INSN_NOP, && case_sem_INSN_NOP },
191
    { FR30BF_INSN_ANDCCR, && case_sem_INSN_ANDCCR },
192
    { FR30BF_INSN_ORCCR, && case_sem_INSN_ORCCR },
193
    { FR30BF_INSN_STILM, && case_sem_INSN_STILM },
194
    { FR30BF_INSN_ADDSP, && case_sem_INSN_ADDSP },
195
    { FR30BF_INSN_EXTSB, && case_sem_INSN_EXTSB },
196
    { FR30BF_INSN_EXTUB, && case_sem_INSN_EXTUB },
197
    { FR30BF_INSN_EXTSH, && case_sem_INSN_EXTSH },
198
    { FR30BF_INSN_EXTUH, && case_sem_INSN_EXTUH },
199
    { FR30BF_INSN_LDM0, && case_sem_INSN_LDM0 },
200
    { FR30BF_INSN_LDM1, && case_sem_INSN_LDM1 },
201
    { FR30BF_INSN_STM0, && case_sem_INSN_STM0 },
202
    { FR30BF_INSN_STM1, && case_sem_INSN_STM1 },
203
    { FR30BF_INSN_ENTER, && case_sem_INSN_ENTER },
204
    { FR30BF_INSN_LEAVE, && case_sem_INSN_LEAVE },
205
    { FR30BF_INSN_XCHB, && case_sem_INSN_XCHB },
206
    { 0, 0 }
207
  };
208
  int i;
209
 
210
  for (i = 0; labels[i].label != 0; ++i)
211
    {
212
#if FAST_P
213
      CPU_IDESC (current_cpu) [labels[i].index].sem_fast_lab = labels[i].label;
214
#else
215
      CPU_IDESC (current_cpu) [labels[i].index].sem_full_lab = labels[i].label;
216
#endif
217
    }
218
 
219
#undef DEFINE_LABELS
220
#endif /* DEFINE_LABELS */
221
 
222
#ifdef DEFINE_SWITCH
223
 
224
/* If hyper-fast [well not unnecessarily slow] execution is selected, turn
225
   off frills like tracing and profiling.  */
226
/* FIXME: A better way would be to have TRACE_RESULT check for something
227
   that can cause it to be optimized out.  Another way would be to emit
228
   special handlers into the instruction "stream".  */
229
 
230
#if FAST_P
231
#undef TRACE_RESULT
232
#define TRACE_RESULT(cpu, abuf, name, type, val)
233
#endif
234
 
235
#undef GET_ATTR
236
#define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
237
 
238
{
239
 
240
#if WITH_SCACHE_PBB
241
 
242
/* Branch to next handler without going around main loop.  */
243
#define NEXT(vpc) goto * SEM_ARGBUF (vpc) -> semantic.sem_case
244
SWITCH (sem, SEM_ARGBUF (vpc) -> semantic.sem_case)
245
 
246
#else /* ! WITH_SCACHE_PBB */
247
 
248
#define NEXT(vpc) BREAK (sem)
249
#ifdef __GNUC__
250
#if FAST_P
251
  SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_fast_lab)
252
#else
253
  SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_full_lab)
254
#endif
255
#else
256
  SWITCH (sem, SEM_ARGBUF (sc) -> idesc->num)
257
#endif
258
 
259
#endif /* ! WITH_SCACHE_PBB */
260
 
261
    {
262
 
263
  CASE (sem, INSN_X_INVALID) : /* --invalid-- */
264
{
265
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
266
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
267
#define FLD(f) abuf->fields.fmt_empty.f
268
  int UNUSED written = 0;
269
  IADDR UNUSED pc = abuf->addr;
270
  vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
271
 
272
  {
273
    /* Update the recorded pc in the cpu state struct.
274
       Only necessary for WITH_SCACHE case, but to avoid the
275
       conditional compilation ....  */
276
    SET_H_PC (pc);
277
    /* Virtual insns have zero size.  Overwrite vpc with address of next insn
278
       using the default-insn-bitsize spec.  When executing insns in parallel
279
       we may want to queue the fault and continue execution.  */
280
    vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
281
    vpc = sim_engine_invalid_insn (current_cpu, pc, vpc);
282
  }
283
 
284
#undef FLD
285
}
286
  NEXT (vpc);
287
 
288
  CASE (sem, INSN_X_AFTER) : /* --after-- */
289
{
290
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
291
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
292
#define FLD(f) abuf->fields.fmt_empty.f
293
  int UNUSED written = 0;
294
  IADDR UNUSED pc = abuf->addr;
295
  vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
296
 
297
  {
298
#if WITH_SCACHE_PBB_FR30BF
299
    fr30bf_pbb_after (current_cpu, sem_arg);
300
#endif
301
  }
302
 
303
#undef FLD
304
}
305
  NEXT (vpc);
306
 
307
  CASE (sem, INSN_X_BEFORE) : /* --before-- */
308
{
309
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
310
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
311
#define FLD(f) abuf->fields.fmt_empty.f
312
  int UNUSED written = 0;
313
  IADDR UNUSED pc = abuf->addr;
314
  vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
315
 
316
  {
317
#if WITH_SCACHE_PBB_FR30BF
318
    fr30bf_pbb_before (current_cpu, sem_arg);
319
#endif
320
  }
321
 
322
#undef FLD
323
}
324
  NEXT (vpc);
325
 
326
  CASE (sem, INSN_X_CTI_CHAIN) : /* --cti-chain-- */
327
{
328
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
329
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
330
#define FLD(f) abuf->fields.fmt_empty.f
331
  int UNUSED written = 0;
332
  IADDR UNUSED pc = abuf->addr;
333
  vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
334
 
335
  {
336
#if WITH_SCACHE_PBB_FR30BF
337
#ifdef DEFINE_SWITCH
338
    vpc = fr30bf_pbb_cti_chain (current_cpu, sem_arg,
339
                               pbb_br_type, pbb_br_npc);
340
    BREAK (sem);
341
#else
342
    /* FIXME: Allow provision of explicit ifmt spec in insn spec.  */
343
    vpc = fr30bf_pbb_cti_chain (current_cpu, sem_arg,
344
                               CPU_PBB_BR_TYPE (current_cpu),
345
                               CPU_PBB_BR_NPC (current_cpu));
346
#endif
347
#endif
348
  }
349
 
350
#undef FLD
351
}
352
  NEXT (vpc);
353
 
354
  CASE (sem, INSN_X_CHAIN) : /* --chain-- */
355
{
356
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
357
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
358
#define FLD(f) abuf->fields.fmt_empty.f
359
  int UNUSED written = 0;
360
  IADDR UNUSED pc = abuf->addr;
361
  vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
362
 
363
  {
364
#if WITH_SCACHE_PBB_FR30BF
365
    vpc = fr30bf_pbb_chain (current_cpu, sem_arg);
366
#ifdef DEFINE_SWITCH
367
    BREAK (sem);
368
#endif
369
#endif
370
  }
371
 
372
#undef FLD
373
}
374
  NEXT (vpc);
375
 
376
  CASE (sem, INSN_X_BEGIN) : /* --begin-- */
377
{
378
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
379
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
380
#define FLD(f) abuf->fields.fmt_empty.f
381
  int UNUSED written = 0;
382
  IADDR UNUSED pc = abuf->addr;
383
  vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
384
 
385
  {
386
#if WITH_SCACHE_PBB_FR30BF
387
#ifdef DEFINE_SWITCH
388
    /* In the switch case FAST_P is a constant, allowing several optimizations
389
       in any called inline functions.  */
390
    vpc = fr30bf_pbb_begin (current_cpu, FAST_P);
391
#else
392
    vpc = fr30bf_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
393
#endif
394
#endif
395
  }
396
 
397
#undef FLD
398
}
399
  NEXT (vpc);
400
 
401
  CASE (sem, INSN_ADD) : /* add $Rj,$Ri */
402
{
403
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
404
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
405
#define FLD(f) abuf->fields.sfmt_add.f
406
  int UNUSED written = 0;
407
  IADDR UNUSED pc = abuf->addr;
408
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
409
 
410
{
411
  {
412
    BI opval = ADDOFSI (* FLD (i_Ri), * FLD (i_Rj), 0);
413
    CPU (h_vbit) = opval;
414
    TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
415
  }
416
  {
417
    BI opval = ADDCFSI (* FLD (i_Ri), * FLD (i_Rj), 0);
418
    CPU (h_cbit) = opval;
419
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
420
  }
421
  {
422
    SI opval = ADDSI (* FLD (i_Ri), * FLD (i_Rj));
423
    * FLD (i_Ri) = opval;
424
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
425
  }
426
{
427
  {
428
    BI opval = EQSI (* FLD (i_Ri), 0);
429
    CPU (h_zbit) = opval;
430
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
431
  }
432
  {
433
    BI opval = LTSI (* FLD (i_Ri), 0);
434
    CPU (h_nbit) = opval;
435
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
436
  }
437
}
438
}
439
 
440
#undef FLD
441
}
442
  NEXT (vpc);
443
 
444
  CASE (sem, INSN_ADDI) : /* add $u4,$Ri */
445
{
446
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
447
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
448
#define FLD(f) abuf->fields.sfmt_addi.f
449
  int UNUSED written = 0;
450
  IADDR UNUSED pc = abuf->addr;
451
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
452
 
453
{
454
  {
455
    BI opval = ADDOFSI (* FLD (i_Ri), FLD (f_u4), 0);
456
    CPU (h_vbit) = opval;
457
    TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
458
  }
459
  {
460
    BI opval = ADDCFSI (* FLD (i_Ri), FLD (f_u4), 0);
461
    CPU (h_cbit) = opval;
462
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
463
  }
464
  {
465
    SI opval = ADDSI (* FLD (i_Ri), FLD (f_u4));
466
    * FLD (i_Ri) = opval;
467
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
468
  }
469
{
470
  {
471
    BI opval = EQSI (* FLD (i_Ri), 0);
472
    CPU (h_zbit) = opval;
473
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
474
  }
475
  {
476
    BI opval = LTSI (* FLD (i_Ri), 0);
477
    CPU (h_nbit) = opval;
478
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
479
  }
480
}
481
}
482
 
483
#undef FLD
484
}
485
  NEXT (vpc);
486
 
487
  CASE (sem, INSN_ADD2) : /* add2 $m4,$Ri */
488
{
489
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
490
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
491
#define FLD(f) abuf->fields.sfmt_add2.f
492
  int UNUSED written = 0;
493
  IADDR UNUSED pc = abuf->addr;
494
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
495
 
496
{
497
  {
498
    BI opval = ADDOFSI (* FLD (i_Ri), FLD (f_m4), 0);
499
    CPU (h_vbit) = opval;
500
    TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
501
  }
502
  {
503
    BI opval = ADDCFSI (* FLD (i_Ri), FLD (f_m4), 0);
504
    CPU (h_cbit) = opval;
505
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
506
  }
507
  {
508
    SI opval = ADDSI (* FLD (i_Ri), FLD (f_m4));
509
    * FLD (i_Ri) = opval;
510
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
511
  }
512
{
513
  {
514
    BI opval = EQSI (* FLD (i_Ri), 0);
515
    CPU (h_zbit) = opval;
516
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
517
  }
518
  {
519
    BI opval = LTSI (* FLD (i_Ri), 0);
520
    CPU (h_nbit) = opval;
521
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
522
  }
523
}
524
}
525
 
526
#undef FLD
527
}
528
  NEXT (vpc);
529
 
530
  CASE (sem, INSN_ADDC) : /* addc $Rj,$Ri */
531
{
532
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
533
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
534
#define FLD(f) abuf->fields.sfmt_add.f
535
  int UNUSED written = 0;
536
  IADDR UNUSED pc = abuf->addr;
537
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
538
 
539
{
540
  SI tmp_tmp;
541
  tmp_tmp = ADDCSI (* FLD (i_Ri), * FLD (i_Rj), CPU (h_cbit));
542
  {
543
    BI opval = ADDOFSI (* FLD (i_Ri), * FLD (i_Rj), CPU (h_cbit));
544
    CPU (h_vbit) = opval;
545
    TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
546
  }
547
  {
548
    BI opval = ADDCFSI (* FLD (i_Ri), * FLD (i_Rj), CPU (h_cbit));
549
    CPU (h_cbit) = opval;
550
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
551
  }
552
  {
553
    SI opval = tmp_tmp;
554
    * FLD (i_Ri) = opval;
555
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
556
  }
557
{
558
  {
559
    BI opval = EQSI (* FLD (i_Ri), 0);
560
    CPU (h_zbit) = opval;
561
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
562
  }
563
  {
564
    BI opval = LTSI (* FLD (i_Ri), 0);
565
    CPU (h_nbit) = opval;
566
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
567
  }
568
}
569
}
570
 
571
#undef FLD
572
}
573
  NEXT (vpc);
574
 
575
  CASE (sem, INSN_ADDN) : /* addn $Rj,$Ri */
576
{
577
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
578
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
579
#define FLD(f) abuf->fields.sfmt_add.f
580
  int UNUSED written = 0;
581
  IADDR UNUSED pc = abuf->addr;
582
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
583
 
584
  {
585
    SI opval = ADDSI (* FLD (i_Ri), * FLD (i_Rj));
586
    * FLD (i_Ri) = opval;
587
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
588
  }
589
 
590
#undef FLD
591
}
592
  NEXT (vpc);
593
 
594
  CASE (sem, INSN_ADDNI) : /* addn $u4,$Ri */
595
{
596
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
597
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
598
#define FLD(f) abuf->fields.sfmt_addi.f
599
  int UNUSED written = 0;
600
  IADDR UNUSED pc = abuf->addr;
601
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
602
 
603
  {
604
    SI opval = ADDSI (* FLD (i_Ri), FLD (f_u4));
605
    * FLD (i_Ri) = opval;
606
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
607
  }
608
 
609
#undef FLD
610
}
611
  NEXT (vpc);
612
 
613
  CASE (sem, INSN_ADDN2) : /* addn2 $m4,$Ri */
614
{
615
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
616
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
617
#define FLD(f) abuf->fields.sfmt_add2.f
618
  int UNUSED written = 0;
619
  IADDR UNUSED pc = abuf->addr;
620
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
621
 
622
  {
623
    SI opval = ADDSI (* FLD (i_Ri), FLD (f_m4));
624
    * FLD (i_Ri) = opval;
625
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
626
  }
627
 
628
#undef FLD
629
}
630
  NEXT (vpc);
631
 
632
  CASE (sem, INSN_SUB) : /* sub $Rj,$Ri */
633
{
634
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
635
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
636
#define FLD(f) abuf->fields.sfmt_add.f
637
  int UNUSED written = 0;
638
  IADDR UNUSED pc = abuf->addr;
639
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
640
 
641
{
642
  {
643
    BI opval = SUBOFSI (* FLD (i_Ri), * FLD (i_Rj), 0);
644
    CPU (h_vbit) = opval;
645
    TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
646
  }
647
  {
648
    BI opval = SUBCFSI (* FLD (i_Ri), * FLD (i_Rj), 0);
649
    CPU (h_cbit) = opval;
650
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
651
  }
652
  {
653
    SI opval = SUBSI (* FLD (i_Ri), * FLD (i_Rj));
654
    * FLD (i_Ri) = opval;
655
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
656
  }
657
{
658
  {
659
    BI opval = EQSI (* FLD (i_Ri), 0);
660
    CPU (h_zbit) = opval;
661
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
662
  }
663
  {
664
    BI opval = LTSI (* FLD (i_Ri), 0);
665
    CPU (h_nbit) = opval;
666
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
667
  }
668
}
669
}
670
 
671
#undef FLD
672
}
673
  NEXT (vpc);
674
 
675
  CASE (sem, INSN_SUBC) : /* subc $Rj,$Ri */
676
{
677
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
678
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
679
#define FLD(f) abuf->fields.sfmt_add.f
680
  int UNUSED written = 0;
681
  IADDR UNUSED pc = abuf->addr;
682
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
683
 
684
{
685
  SI tmp_tmp;
686
  tmp_tmp = SUBCSI (* FLD (i_Ri), * FLD (i_Rj), CPU (h_cbit));
687
  {
688
    BI opval = SUBOFSI (* FLD (i_Ri), * FLD (i_Rj), CPU (h_cbit));
689
    CPU (h_vbit) = opval;
690
    TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
691
  }
692
  {
693
    BI opval = SUBCFSI (* FLD (i_Ri), * FLD (i_Rj), CPU (h_cbit));
694
    CPU (h_cbit) = opval;
695
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
696
  }
697
  {
698
    SI opval = tmp_tmp;
699
    * FLD (i_Ri) = opval;
700
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
701
  }
702
{
703
  {
704
    BI opval = EQSI (* FLD (i_Ri), 0);
705
    CPU (h_zbit) = opval;
706
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
707
  }
708
  {
709
    BI opval = LTSI (* FLD (i_Ri), 0);
710
    CPU (h_nbit) = opval;
711
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
712
  }
713
}
714
}
715
 
716
#undef FLD
717
}
718
  NEXT (vpc);
719
 
720
  CASE (sem, INSN_SUBN) : /* subn $Rj,$Ri */
721
{
722
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
723
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
724
#define FLD(f) abuf->fields.sfmt_add.f
725
  int UNUSED written = 0;
726
  IADDR UNUSED pc = abuf->addr;
727
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
728
 
729
  {
730
    SI opval = SUBSI (* FLD (i_Ri), * FLD (i_Rj));
731
    * FLD (i_Ri) = opval;
732
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
733
  }
734
 
735
#undef FLD
736
}
737
  NEXT (vpc);
738
 
739
  CASE (sem, INSN_CMP) : /* cmp $Rj,$Ri */
740
{
741
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
742
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
743
#define FLD(f) abuf->fields.sfmt_str13.f
744
  int UNUSED written = 0;
745
  IADDR UNUSED pc = abuf->addr;
746
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
747
 
748
{
749
  SI tmp_tmp1;
750
  {
751
    BI opval = SUBOFSI (* FLD (i_Ri), * FLD (i_Rj), 0);
752
    CPU (h_vbit) = opval;
753
    TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
754
  }
755
  {
756
    BI opval = SUBCFSI (* FLD (i_Ri), * FLD (i_Rj), 0);
757
    CPU (h_cbit) = opval;
758
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
759
  }
760
  tmp_tmp1 = SUBSI (* FLD (i_Ri), * FLD (i_Rj));
761
{
762
  {
763
    BI opval = EQSI (tmp_tmp1, 0);
764
    CPU (h_zbit) = opval;
765
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
766
  }
767
  {
768
    BI opval = LTSI (tmp_tmp1, 0);
769
    CPU (h_nbit) = opval;
770
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
771
  }
772
}
773
}
774
 
775
#undef FLD
776
}
777
  NEXT (vpc);
778
 
779
  CASE (sem, INSN_CMPI) : /* cmp $u4,$Ri */
780
{
781
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
782
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
783
#define FLD(f) abuf->fields.sfmt_addi.f
784
  int UNUSED written = 0;
785
  IADDR UNUSED pc = abuf->addr;
786
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
787
 
788
{
789
  SI tmp_tmp1;
790
  {
791
    BI opval = SUBOFSI (* FLD (i_Ri), FLD (f_u4), 0);
792
    CPU (h_vbit) = opval;
793
    TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
794
  }
795
  {
796
    BI opval = SUBCFSI (* FLD (i_Ri), FLD (f_u4), 0);
797
    CPU (h_cbit) = opval;
798
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
799
  }
800
  tmp_tmp1 = SUBSI (* FLD (i_Ri), FLD (f_u4));
801
{
802
  {
803
    BI opval = EQSI (tmp_tmp1, 0);
804
    CPU (h_zbit) = opval;
805
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
806
  }
807
  {
808
    BI opval = LTSI (tmp_tmp1, 0);
809
    CPU (h_nbit) = opval;
810
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
811
  }
812
}
813
}
814
 
815
#undef FLD
816
}
817
  NEXT (vpc);
818
 
819
  CASE (sem, INSN_CMP2) : /* cmp2 $m4,$Ri */
820
{
821
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
822
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
823
#define FLD(f) abuf->fields.sfmt_add2.f
824
  int UNUSED written = 0;
825
  IADDR UNUSED pc = abuf->addr;
826
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
827
 
828
{
829
  SI tmp_tmp1;
830
  {
831
    BI opval = SUBOFSI (* FLD (i_Ri), FLD (f_m4), 0);
832
    CPU (h_vbit) = opval;
833
    TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
834
  }
835
  {
836
    BI opval = SUBCFSI (* FLD (i_Ri), FLD (f_m4), 0);
837
    CPU (h_cbit) = opval;
838
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
839
  }
840
  tmp_tmp1 = SUBSI (* FLD (i_Ri), FLD (f_m4));
841
{
842
  {
843
    BI opval = EQSI (tmp_tmp1, 0);
844
    CPU (h_zbit) = opval;
845
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
846
  }
847
  {
848
    BI opval = LTSI (tmp_tmp1, 0);
849
    CPU (h_nbit) = opval;
850
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
851
  }
852
}
853
}
854
 
855
#undef FLD
856
}
857
  NEXT (vpc);
858
 
859
  CASE (sem, INSN_AND) : /* and $Rj,$Ri */
860
{
861
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
862
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
863
#define FLD(f) abuf->fields.sfmt_add.f
864
  int UNUSED written = 0;
865
  IADDR UNUSED pc = abuf->addr;
866
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
867
 
868
{
869
  {
870
    SI opval = ANDSI (* FLD (i_Ri), * FLD (i_Rj));
871
    * FLD (i_Ri) = opval;
872
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
873
  }
874
{
875
  {
876
    BI opval = EQSI (* FLD (i_Ri), 0);
877
    CPU (h_zbit) = opval;
878
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
879
  }
880
  {
881
    BI opval = LTSI (* FLD (i_Ri), 0);
882
    CPU (h_nbit) = opval;
883
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
884
  }
885
}
886
}
887
 
888
#undef FLD
889
}
890
  NEXT (vpc);
891
 
892
  CASE (sem, INSN_OR) : /* or $Rj,$Ri */
893
{
894
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
895
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
896
#define FLD(f) abuf->fields.sfmt_add.f
897
  int UNUSED written = 0;
898
  IADDR UNUSED pc = abuf->addr;
899
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
900
 
901
{
902
  {
903
    SI opval = ORSI (* FLD (i_Ri), * FLD (i_Rj));
904
    * FLD (i_Ri) = opval;
905
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
906
  }
907
{
908
  {
909
    BI opval = EQSI (* FLD (i_Ri), 0);
910
    CPU (h_zbit) = opval;
911
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
912
  }
913
  {
914
    BI opval = LTSI (* FLD (i_Ri), 0);
915
    CPU (h_nbit) = opval;
916
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
917
  }
918
}
919
}
920
 
921
#undef FLD
922
}
923
  NEXT (vpc);
924
 
925
  CASE (sem, INSN_EOR) : /* eor $Rj,$Ri */
926
{
927
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
928
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
929
#define FLD(f) abuf->fields.sfmt_add.f
930
  int UNUSED written = 0;
931
  IADDR UNUSED pc = abuf->addr;
932
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
933
 
934
{
935
  {
936
    SI opval = XORSI (* FLD (i_Ri), * FLD (i_Rj));
937
    * FLD (i_Ri) = opval;
938
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
939
  }
940
{
941
  {
942
    BI opval = EQSI (* FLD (i_Ri), 0);
943
    CPU (h_zbit) = opval;
944
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
945
  }
946
  {
947
    BI opval = LTSI (* FLD (i_Ri), 0);
948
    CPU (h_nbit) = opval;
949
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
950
  }
951
}
952
}
953
 
954
#undef FLD
955
}
956
  NEXT (vpc);
957
 
958
  CASE (sem, INSN_ANDM) : /* and $Rj,@$Ri */
959
{
960
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
961
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
962
#define FLD(f) abuf->fields.sfmt_str13.f
963
  int UNUSED written = 0;
964
  IADDR UNUSED pc = abuf->addr;
965
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
966
 
967
{
968
  SI tmp_tmp;
969
  tmp_tmp = ANDSI (GETMEMSI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
970
{
971
  {
972
    BI opval = EQSI (tmp_tmp, 0);
973
    CPU (h_zbit) = opval;
974
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
975
  }
976
  {
977
    BI opval = LTSI (tmp_tmp, 0);
978
    CPU (h_nbit) = opval;
979
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
980
  }
981
}
982
  {
983
    SI opval = tmp_tmp;
984
    SETMEMSI (current_cpu, pc, * FLD (i_Ri), opval);
985
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
986
  }
987
}
988
 
989
#undef FLD
990
}
991
  NEXT (vpc);
992
 
993
  CASE (sem, INSN_ANDH) : /* andh $Rj,@$Ri */
994
{
995
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
996
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
997
#define FLD(f) abuf->fields.sfmt_str13.f
998
  int UNUSED written = 0;
999
  IADDR UNUSED pc = abuf->addr;
1000
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1001
 
1002
{
1003
  HI tmp_tmp;
1004
  tmp_tmp = ANDHI (GETMEMHI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
1005
{
1006
  {
1007
    BI opval = EQHI (tmp_tmp, 0);
1008
    CPU (h_zbit) = opval;
1009
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1010
  }
1011
  {
1012
    BI opval = LTHI (tmp_tmp, 0);
1013
    CPU (h_nbit) = opval;
1014
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1015
  }
1016
}
1017
  {
1018
    HI opval = tmp_tmp;
1019
    SETMEMHI (current_cpu, pc, * FLD (i_Ri), opval);
1020
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1021
  }
1022
}
1023
 
1024
#undef FLD
1025
}
1026
  NEXT (vpc);
1027
 
1028
  CASE (sem, INSN_ANDB) : /* andb $Rj,@$Ri */
1029
{
1030
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1031
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1032
#define FLD(f) abuf->fields.sfmt_str13.f
1033
  int UNUSED written = 0;
1034
  IADDR UNUSED pc = abuf->addr;
1035
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1036
 
1037
{
1038
  QI tmp_tmp;
1039
  tmp_tmp = ANDQI (GETMEMQI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
1040
{
1041
  {
1042
    BI opval = EQQI (tmp_tmp, 0);
1043
    CPU (h_zbit) = opval;
1044
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1045
  }
1046
  {
1047
    BI opval = LTQI (tmp_tmp, 0);
1048
    CPU (h_nbit) = opval;
1049
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1050
  }
1051
}
1052
  {
1053
    QI opval = tmp_tmp;
1054
    SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1055
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1056
  }
1057
}
1058
 
1059
#undef FLD
1060
}
1061
  NEXT (vpc);
1062
 
1063
  CASE (sem, INSN_ORM) : /* or $Rj,@$Ri */
1064
{
1065
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1066
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1067
#define FLD(f) abuf->fields.sfmt_str13.f
1068
  int UNUSED written = 0;
1069
  IADDR UNUSED pc = abuf->addr;
1070
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1071
 
1072
{
1073
  SI tmp_tmp;
1074
  tmp_tmp = ORSI (GETMEMSI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
1075
{
1076
  {
1077
    BI opval = EQSI (tmp_tmp, 0);
1078
    CPU (h_zbit) = opval;
1079
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1080
  }
1081
  {
1082
    BI opval = LTSI (tmp_tmp, 0);
1083
    CPU (h_nbit) = opval;
1084
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1085
  }
1086
}
1087
  {
1088
    SI opval = tmp_tmp;
1089
    SETMEMSI (current_cpu, pc, * FLD (i_Ri), opval);
1090
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1091
  }
1092
}
1093
 
1094
#undef FLD
1095
}
1096
  NEXT (vpc);
1097
 
1098
  CASE (sem, INSN_ORH) : /* orh $Rj,@$Ri */
1099
{
1100
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1101
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1102
#define FLD(f) abuf->fields.sfmt_str13.f
1103
  int UNUSED written = 0;
1104
  IADDR UNUSED pc = abuf->addr;
1105
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1106
 
1107
{
1108
  HI tmp_tmp;
1109
  tmp_tmp = ORHI (GETMEMHI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
1110
{
1111
  {
1112
    BI opval = EQHI (tmp_tmp, 0);
1113
    CPU (h_zbit) = opval;
1114
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1115
  }
1116
  {
1117
    BI opval = LTHI (tmp_tmp, 0);
1118
    CPU (h_nbit) = opval;
1119
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1120
  }
1121
}
1122
  {
1123
    HI opval = tmp_tmp;
1124
    SETMEMHI (current_cpu, pc, * FLD (i_Ri), opval);
1125
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1126
  }
1127
}
1128
 
1129
#undef FLD
1130
}
1131
  NEXT (vpc);
1132
 
1133
  CASE (sem, INSN_ORB) : /* orb $Rj,@$Ri */
1134
{
1135
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1136
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1137
#define FLD(f) abuf->fields.sfmt_str13.f
1138
  int UNUSED written = 0;
1139
  IADDR UNUSED pc = abuf->addr;
1140
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1141
 
1142
{
1143
  QI tmp_tmp;
1144
  tmp_tmp = ORQI (GETMEMQI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
1145
{
1146
  {
1147
    BI opval = EQQI (tmp_tmp, 0);
1148
    CPU (h_zbit) = opval;
1149
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1150
  }
1151
  {
1152
    BI opval = LTQI (tmp_tmp, 0);
1153
    CPU (h_nbit) = opval;
1154
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1155
  }
1156
}
1157
  {
1158
    QI opval = tmp_tmp;
1159
    SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1160
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1161
  }
1162
}
1163
 
1164
#undef FLD
1165
}
1166
  NEXT (vpc);
1167
 
1168
  CASE (sem, INSN_EORM) : /* eor $Rj,@$Ri */
1169
{
1170
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1171
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1172
#define FLD(f) abuf->fields.sfmt_str13.f
1173
  int UNUSED written = 0;
1174
  IADDR UNUSED pc = abuf->addr;
1175
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1176
 
1177
{
1178
  SI tmp_tmp;
1179
  tmp_tmp = XORSI (GETMEMSI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
1180
{
1181
  {
1182
    BI opval = EQSI (tmp_tmp, 0);
1183
    CPU (h_zbit) = opval;
1184
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1185
  }
1186
  {
1187
    BI opval = LTSI (tmp_tmp, 0);
1188
    CPU (h_nbit) = opval;
1189
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1190
  }
1191
}
1192
  {
1193
    SI opval = tmp_tmp;
1194
    SETMEMSI (current_cpu, pc, * FLD (i_Ri), opval);
1195
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1196
  }
1197
}
1198
 
1199
#undef FLD
1200
}
1201
  NEXT (vpc);
1202
 
1203
  CASE (sem, INSN_EORH) : /* eorh $Rj,@$Ri */
1204
{
1205
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1206
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1207
#define FLD(f) abuf->fields.sfmt_str13.f
1208
  int UNUSED written = 0;
1209
  IADDR UNUSED pc = abuf->addr;
1210
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1211
 
1212
{
1213
  HI tmp_tmp;
1214
  tmp_tmp = XORHI (GETMEMHI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
1215
{
1216
  {
1217
    BI opval = EQHI (tmp_tmp, 0);
1218
    CPU (h_zbit) = opval;
1219
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1220
  }
1221
  {
1222
    BI opval = LTHI (tmp_tmp, 0);
1223
    CPU (h_nbit) = opval;
1224
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1225
  }
1226
}
1227
  {
1228
    HI opval = tmp_tmp;
1229
    SETMEMHI (current_cpu, pc, * FLD (i_Ri), opval);
1230
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1231
  }
1232
}
1233
 
1234
#undef FLD
1235
}
1236
  NEXT (vpc);
1237
 
1238
  CASE (sem, INSN_EORB) : /* eorb $Rj,@$Ri */
1239
{
1240
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1241
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1242
#define FLD(f) abuf->fields.sfmt_str13.f
1243
  int UNUSED written = 0;
1244
  IADDR UNUSED pc = abuf->addr;
1245
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1246
 
1247
{
1248
  QI tmp_tmp;
1249
  tmp_tmp = XORQI (GETMEMQI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
1250
{
1251
  {
1252
    BI opval = EQQI (tmp_tmp, 0);
1253
    CPU (h_zbit) = opval;
1254
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1255
  }
1256
  {
1257
    BI opval = LTQI (tmp_tmp, 0);
1258
    CPU (h_nbit) = opval;
1259
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1260
  }
1261
}
1262
  {
1263
    QI opval = tmp_tmp;
1264
    SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1265
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1266
  }
1267
}
1268
 
1269
#undef FLD
1270
}
1271
  NEXT (vpc);
1272
 
1273
  CASE (sem, INSN_BANDL) : /* bandl $u4,@$Ri */
1274
{
1275
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1276
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1277
#define FLD(f) abuf->fields.sfmt_addi.f
1278
  int UNUSED written = 0;
1279
  IADDR UNUSED pc = abuf->addr;
1280
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1281
 
1282
  {
1283
    QI opval = ANDQI (ORQI (FLD (f_u4), 240), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1284
    SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1285
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1286
  }
1287
 
1288
#undef FLD
1289
}
1290
  NEXT (vpc);
1291
 
1292
  CASE (sem, INSN_BORL) : /* borl $u4,@$Ri */
1293
{
1294
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1295
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1296
#define FLD(f) abuf->fields.sfmt_addi.f
1297
  int UNUSED written = 0;
1298
  IADDR UNUSED pc = abuf->addr;
1299
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1300
 
1301
  {
1302
    QI opval = ORQI (FLD (f_u4), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1303
    SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1304
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1305
  }
1306
 
1307
#undef FLD
1308
}
1309
  NEXT (vpc);
1310
 
1311
  CASE (sem, INSN_BEORL) : /* beorl $u4,@$Ri */
1312
{
1313
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1314
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1315
#define FLD(f) abuf->fields.sfmt_addi.f
1316
  int UNUSED written = 0;
1317
  IADDR UNUSED pc = abuf->addr;
1318
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1319
 
1320
  {
1321
    QI opval = XORQI (FLD (f_u4), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1322
    SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1323
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1324
  }
1325
 
1326
#undef FLD
1327
}
1328
  NEXT (vpc);
1329
 
1330
  CASE (sem, INSN_BANDH) : /* bandh $u4,@$Ri */
1331
{
1332
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1333
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1334
#define FLD(f) abuf->fields.sfmt_addi.f
1335
  int UNUSED written = 0;
1336
  IADDR UNUSED pc = abuf->addr;
1337
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1338
 
1339
  {
1340
    QI opval = ANDQI (ORQI (SLLQI (FLD (f_u4), 4), 15), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1341
    SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1342
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1343
  }
1344
 
1345
#undef FLD
1346
}
1347
  NEXT (vpc);
1348
 
1349
  CASE (sem, INSN_BORH) : /* borh $u4,@$Ri */
1350
{
1351
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1352
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1353
#define FLD(f) abuf->fields.sfmt_addi.f
1354
  int UNUSED written = 0;
1355
  IADDR UNUSED pc = abuf->addr;
1356
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1357
 
1358
  {
1359
    QI opval = ORQI (SLLQI (FLD (f_u4), 4), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1360
    SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1361
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1362
  }
1363
 
1364
#undef FLD
1365
}
1366
  NEXT (vpc);
1367
 
1368
  CASE (sem, INSN_BEORH) : /* beorh $u4,@$Ri */
1369
{
1370
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1371
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1372
#define FLD(f) abuf->fields.sfmt_addi.f
1373
  int UNUSED written = 0;
1374
  IADDR UNUSED pc = abuf->addr;
1375
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1376
 
1377
  {
1378
    QI opval = XORQI (SLLQI (FLD (f_u4), 4), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1379
    SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1380
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1381
  }
1382
 
1383
#undef FLD
1384
}
1385
  NEXT (vpc);
1386
 
1387
  CASE (sem, INSN_BTSTL) : /* btstl $u4,@$Ri */
1388
{
1389
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1390
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1391
#define FLD(f) abuf->fields.sfmt_addi.f
1392
  int UNUSED written = 0;
1393
  IADDR UNUSED pc = abuf->addr;
1394
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1395
 
1396
{
1397
  QI tmp_tmp;
1398
  tmp_tmp = ANDQI (FLD (f_u4), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1399
  {
1400
    BI opval = EQQI (tmp_tmp, 0);
1401
    CPU (h_zbit) = opval;
1402
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1403
  }
1404
  {
1405
    BI opval = 0;
1406
    CPU (h_nbit) = opval;
1407
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1408
  }
1409
}
1410
 
1411
#undef FLD
1412
}
1413
  NEXT (vpc);
1414
 
1415
  CASE (sem, INSN_BTSTH) : /* btsth $u4,@$Ri */
1416
{
1417
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1418
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1419
#define FLD(f) abuf->fields.sfmt_addi.f
1420
  int UNUSED written = 0;
1421
  IADDR UNUSED pc = abuf->addr;
1422
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1423
 
1424
{
1425
  QI tmp_tmp;
1426
  tmp_tmp = ANDQI (SLLQI (FLD (f_u4), 4), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1427
  {
1428
    BI opval = EQQI (tmp_tmp, 0);
1429
    CPU (h_zbit) = opval;
1430
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1431
  }
1432
  {
1433
    BI opval = LTQI (tmp_tmp, 0);
1434
    CPU (h_nbit) = opval;
1435
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1436
  }
1437
}
1438
 
1439
#undef FLD
1440
}
1441
  NEXT (vpc);
1442
 
1443
  CASE (sem, INSN_MUL) : /* mul $Rj,$Ri */
1444
{
1445
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1446
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1447
#define FLD(f) abuf->fields.sfmt_str13.f
1448
  int UNUSED written = 0;
1449
  IADDR UNUSED pc = abuf->addr;
1450
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1451
 
1452
{
1453
  DI tmp_tmp;
1454
  tmp_tmp = MULDI (EXTSIDI (* FLD (i_Rj)), EXTSIDI (* FLD (i_Ri)));
1455
  {
1456
    SI opval = TRUNCDISI (tmp_tmp);
1457
    SET_H_DR (((UINT) 5), opval);
1458
    TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1459
  }
1460
  {
1461
    SI opval = TRUNCDISI (SRLDI (tmp_tmp, 32));
1462
    SET_H_DR (((UINT) 4), opval);
1463
    TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1464
  }
1465
  {
1466
    BI opval = LTSI (GET_H_DR (((UINT) 5)), 0);
1467
    CPU (h_nbit) = opval;
1468
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1469
  }
1470
  {
1471
    BI opval = EQDI (tmp_tmp, MAKEDI (0, 0));
1472
    CPU (h_zbit) = opval;
1473
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1474
  }
1475
  {
1476
    BI opval = ORIF (GTDI (tmp_tmp, MAKEDI (0, 2147483647)), LTDI (tmp_tmp, NEGDI (MAKEDI (0, 0x80000000))));
1477
    CPU (h_vbit) = opval;
1478
    TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1479
  }
1480
}
1481
 
1482
#undef FLD
1483
}
1484
  NEXT (vpc);
1485
 
1486
  CASE (sem, INSN_MULU) : /* mulu $Rj,$Ri */
1487
{
1488
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1489
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1490
#define FLD(f) abuf->fields.sfmt_str13.f
1491
  int UNUSED written = 0;
1492
  IADDR UNUSED pc = abuf->addr;
1493
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1494
 
1495
{
1496
  DI tmp_tmp;
1497
  tmp_tmp = MULDI (ZEXTSIDI (* FLD (i_Rj)), ZEXTSIDI (* FLD (i_Ri)));
1498
  {
1499
    SI opval = TRUNCDISI (tmp_tmp);
1500
    SET_H_DR (((UINT) 5), opval);
1501
    TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1502
  }
1503
  {
1504
    SI opval = TRUNCDISI (SRLDI (tmp_tmp, 32));
1505
    SET_H_DR (((UINT) 4), opval);
1506
    TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1507
  }
1508
  {
1509
    BI opval = LTSI (GET_H_DR (((UINT) 4)), 0);
1510
    CPU (h_nbit) = opval;
1511
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1512
  }
1513
  {
1514
    BI opval = EQSI (GET_H_DR (((UINT) 5)), 0);
1515
    CPU (h_zbit) = opval;
1516
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1517
  }
1518
  {
1519
    BI opval = NESI (GET_H_DR (((UINT) 4)), 0);
1520
    CPU (h_vbit) = opval;
1521
    TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1522
  }
1523
}
1524
 
1525
#undef FLD
1526
}
1527
  NEXT (vpc);
1528
 
1529
  CASE (sem, INSN_MULH) : /* mulh $Rj,$Ri */
1530
{
1531
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1532
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1533
#define FLD(f) abuf->fields.sfmt_str13.f
1534
  int UNUSED written = 0;
1535
  IADDR UNUSED pc = abuf->addr;
1536
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1537
 
1538
{
1539
  {
1540
    SI opval = MULHI (TRUNCSIHI (* FLD (i_Rj)), TRUNCSIHI (* FLD (i_Ri)));
1541
    SET_H_DR (((UINT) 5), opval);
1542
    TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1543
  }
1544
  {
1545
    BI opval = LTSI (GET_H_DR (((UINT) 5)), 0);
1546
    CPU (h_nbit) = opval;
1547
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1548
  }
1549
  {
1550
    BI opval = GESI (GET_H_DR (((UINT) 5)), 0);
1551
    CPU (h_zbit) = opval;
1552
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1553
  }
1554
}
1555
 
1556
#undef FLD
1557
}
1558
  NEXT (vpc);
1559
 
1560
  CASE (sem, INSN_MULUH) : /* muluh $Rj,$Ri */
1561
{
1562
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1563
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1564
#define FLD(f) abuf->fields.sfmt_str13.f
1565
  int UNUSED written = 0;
1566
  IADDR UNUSED pc = abuf->addr;
1567
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1568
 
1569
{
1570
  {
1571
    SI opval = MULSI (ANDSI (* FLD (i_Rj), 65535), ANDSI (* FLD (i_Ri), 65535));
1572
    SET_H_DR (((UINT) 5), opval);
1573
    TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1574
  }
1575
  {
1576
    BI opval = LTSI (GET_H_DR (((UINT) 5)), 0);
1577
    CPU (h_nbit) = opval;
1578
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1579
  }
1580
  {
1581
    BI opval = GESI (GET_H_DR (((UINT) 5)), 0);
1582
    CPU (h_zbit) = opval;
1583
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1584
  }
1585
}
1586
 
1587
#undef FLD
1588
}
1589
  NEXT (vpc);
1590
 
1591
  CASE (sem, INSN_DIV0S) : /* div0s $Ri */
1592
{
1593
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1594
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1595
#define FLD(f) abuf->fields.sfmt_mov2dr.f
1596
  int UNUSED written = 0;
1597
  IADDR UNUSED pc = abuf->addr;
1598
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1599
 
1600
{
1601
  {
1602
    BI opval = LTSI (GET_H_DR (((UINT) 5)), 0);
1603
    CPU (h_d0bit) = opval;
1604
    TRACE_RESULT (current_cpu, abuf, "d0bit", 'x', opval);
1605
  }
1606
  {
1607
    BI opval = XORBI (CPU (h_d0bit), LTSI (* FLD (i_Ri), 0));
1608
    CPU (h_d1bit) = opval;
1609
    TRACE_RESULT (current_cpu, abuf, "d1bit", 'x', opval);
1610
  }
1611
if (NEBI (CPU (h_d0bit), 0)) {
1612
  {
1613
    SI opval = 0xffffffff;
1614
    SET_H_DR (((UINT) 4), opval);
1615
    written |= (1 << 5);
1616
    TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1617
  }
1618
} else {
1619
  {
1620
    SI opval = 0;
1621
    SET_H_DR (((UINT) 4), opval);
1622
    written |= (1 << 5);
1623
    TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1624
  }
1625
}
1626
}
1627
 
1628
  abuf->written = written;
1629
#undef FLD
1630
}
1631
  NEXT (vpc);
1632
 
1633
  CASE (sem, INSN_DIV0U) : /* div0u $Ri */
1634
{
1635
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1636
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1637
#define FLD(f) abuf->fields.fmt_empty.f
1638
  int UNUSED written = 0;
1639
  IADDR UNUSED pc = abuf->addr;
1640
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1641
 
1642
{
1643
  {
1644
    BI opval = 0;
1645
    CPU (h_d0bit) = opval;
1646
    TRACE_RESULT (current_cpu, abuf, "d0bit", 'x', opval);
1647
  }
1648
  {
1649
    BI opval = 0;
1650
    CPU (h_d1bit) = opval;
1651
    TRACE_RESULT (current_cpu, abuf, "d1bit", 'x', opval);
1652
  }
1653
  {
1654
    SI opval = 0;
1655
    SET_H_DR (((UINT) 4), opval);
1656
    TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1657
  }
1658
}
1659
 
1660
#undef FLD
1661
}
1662
  NEXT (vpc);
1663
 
1664
  CASE (sem, INSN_DIV1) : /* div1 $Ri */
1665
{
1666
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1667
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1668
#define FLD(f) abuf->fields.sfmt_mov2dr.f
1669
  int UNUSED written = 0;
1670
  IADDR UNUSED pc = abuf->addr;
1671
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1672
 
1673
{
1674
  SI tmp_tmp;
1675
  {
1676
    SI opval = SLLSI (GET_H_DR (((UINT) 4)), 1);
1677
    SET_H_DR (((UINT) 4), opval);
1678
    TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1679
  }
1680
if (LTSI (GET_H_DR (((UINT) 5)), 0)) {
1681
  {
1682
    SI opval = ADDSI (GET_H_DR (((UINT) 4)), 1);
1683
    SET_H_DR (((UINT) 4), opval);
1684
    TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1685
  }
1686
}
1687
  {
1688
    SI opval = SLLSI (GET_H_DR (((UINT) 5)), 1);
1689
    SET_H_DR (((UINT) 5), opval);
1690
    TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1691
  }
1692
if (EQBI (CPU (h_d1bit), 1)) {
1693
{
1694
  tmp_tmp = ADDSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri));
1695
  {
1696
    BI opval = ADDCFSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri), 0);
1697
    CPU (h_cbit) = opval;
1698
    written |= (1 << 6);
1699
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1700
  }
1701
}
1702
} else {
1703
{
1704
  tmp_tmp = SUBSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri));
1705
  {
1706
    BI opval = SUBCFSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri), 0);
1707
    CPU (h_cbit) = opval;
1708
    written |= (1 << 6);
1709
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1710
  }
1711
}
1712
}
1713
if (NOTBI (XORBI (XORBI (CPU (h_d0bit), CPU (h_d1bit)), CPU (h_cbit)))) {
1714
{
1715
  {
1716
    SI opval = tmp_tmp;
1717
    SET_H_DR (((UINT) 4), opval);
1718
    TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1719
  }
1720
  {
1721
    SI opval = ORSI (GET_H_DR (((UINT) 5)), 1);
1722
    SET_H_DR (((UINT) 5), opval);
1723
    TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1724
  }
1725
}
1726
}
1727
  {
1728
    BI opval = EQSI (GET_H_DR (((UINT) 4)), 0);
1729
    CPU (h_zbit) = opval;
1730
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1731
  }
1732
}
1733
 
1734
  abuf->written = written;
1735
#undef FLD
1736
}
1737
  NEXT (vpc);
1738
 
1739
  CASE (sem, INSN_DIV2) : /* div2 $Ri */
1740
{
1741
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1742
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1743
#define FLD(f) abuf->fields.sfmt_mov2dr.f
1744
  int UNUSED written = 0;
1745
  IADDR UNUSED pc = abuf->addr;
1746
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1747
 
1748
{
1749
  SI tmp_tmp;
1750
if (EQBI (CPU (h_d1bit), 1)) {
1751
{
1752
  tmp_tmp = ADDSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri));
1753
  {
1754
    BI opval = ADDCFSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri), 0);
1755
    CPU (h_cbit) = opval;
1756
    written |= (1 << 3);
1757
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1758
  }
1759
}
1760
} else {
1761
{
1762
  tmp_tmp = SUBSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri));
1763
  {
1764
    BI opval = SUBCFSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri), 0);
1765
    CPU (h_cbit) = opval;
1766
    written |= (1 << 3);
1767
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1768
  }
1769
}
1770
}
1771
if (EQSI (tmp_tmp, 0)) {
1772
{
1773
  {
1774
    BI opval = 1;
1775
    CPU (h_zbit) = opval;
1776
    written |= (1 << 5);
1777
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1778
  }
1779
  {
1780
    SI opval = 0;
1781
    SET_H_DR (((UINT) 4), opval);
1782
    written |= (1 << 4);
1783
    TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1784
  }
1785
}
1786
} else {
1787
  {
1788
    BI opval = 0;
1789
    CPU (h_zbit) = opval;
1790
    written |= (1 << 5);
1791
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1792
  }
1793
}
1794
}
1795
 
1796
  abuf->written = written;
1797
#undef FLD
1798
}
1799
  NEXT (vpc);
1800
 
1801
  CASE (sem, INSN_DIV3) : /* div3 */
1802
{
1803
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1804
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1805
#define FLD(f) abuf->fields.fmt_empty.f
1806
  int UNUSED written = 0;
1807
  IADDR UNUSED pc = abuf->addr;
1808
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1809
 
1810
if (EQBI (CPU (h_zbit), 1)) {
1811
  {
1812
    SI opval = ADDSI (GET_H_DR (((UINT) 5)), 1);
1813
    SET_H_DR (((UINT) 5), opval);
1814
    written |= (1 << 2);
1815
    TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1816
  }
1817
}
1818
 
1819
  abuf->written = written;
1820
#undef FLD
1821
}
1822
  NEXT (vpc);
1823
 
1824
  CASE (sem, INSN_DIV4S) : /* div4s */
1825
{
1826
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1827
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1828
#define FLD(f) abuf->fields.fmt_empty.f
1829
  int UNUSED written = 0;
1830
  IADDR UNUSED pc = abuf->addr;
1831
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1832
 
1833
if (EQBI (CPU (h_d1bit), 1)) {
1834
  {
1835
    SI opval = NEGSI (GET_H_DR (((UINT) 5)));
1836
    SET_H_DR (((UINT) 5), opval);
1837
    written |= (1 << 2);
1838
    TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1839
  }
1840
}
1841
 
1842
  abuf->written = written;
1843
#undef FLD
1844
}
1845
  NEXT (vpc);
1846
 
1847
  CASE (sem, INSN_LSL) : /* lsl $Rj,$Ri */
1848
{
1849
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1850
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1851
#define FLD(f) abuf->fields.sfmt_add.f
1852
  int UNUSED written = 0;
1853
  IADDR UNUSED pc = abuf->addr;
1854
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1855
 
1856
{
1857
  SI tmp_shift;
1858
  tmp_shift = ANDSI (* FLD (i_Rj), 31);
1859
if (NESI (tmp_shift, 0)) {
1860
{
1861
  {
1862
    BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (32, tmp_shift))), 0);
1863
    CPU (h_cbit) = opval;
1864
    written |= (1 << 3);
1865
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1866
  }
1867
  {
1868
    SI opval = SLLSI (* FLD (i_Ri), tmp_shift);
1869
    * FLD (i_Ri) = opval;
1870
    written |= (1 << 2);
1871
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
1872
  }
1873
}
1874
} else {
1875
  {
1876
    BI opval = 0;
1877
    CPU (h_cbit) = opval;
1878
    written |= (1 << 3);
1879
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1880
  }
1881
}
1882
  {
1883
    BI opval = LTSI (* FLD (i_Ri), 0);
1884
    CPU (h_nbit) = opval;
1885
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1886
  }
1887
  {
1888
    BI opval = EQSI (* FLD (i_Ri), 0);
1889
    CPU (h_zbit) = opval;
1890
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1891
  }
1892
}
1893
 
1894
  abuf->written = written;
1895
#undef FLD
1896
}
1897
  NEXT (vpc);
1898
 
1899
  CASE (sem, INSN_LSLI) : /* lsl $u4,$Ri */
1900
{
1901
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1902
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1903
#define FLD(f) abuf->fields.sfmt_addi.f
1904
  int UNUSED written = 0;
1905
  IADDR UNUSED pc = abuf->addr;
1906
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1907
 
1908
{
1909
  SI tmp_shift;
1910
  tmp_shift = FLD (f_u4);
1911
if (NESI (tmp_shift, 0)) {
1912
{
1913
  {
1914
    BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (32, tmp_shift))), 0);
1915
    CPU (h_cbit) = opval;
1916
    written |= (1 << 3);
1917
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1918
  }
1919
  {
1920
    SI opval = SLLSI (* FLD (i_Ri), tmp_shift);
1921
    * FLD (i_Ri) = opval;
1922
    written |= (1 << 2);
1923
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
1924
  }
1925
}
1926
} else {
1927
  {
1928
    BI opval = 0;
1929
    CPU (h_cbit) = opval;
1930
    written |= (1 << 3);
1931
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1932
  }
1933
}
1934
  {
1935
    BI opval = LTSI (* FLD (i_Ri), 0);
1936
    CPU (h_nbit) = opval;
1937
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1938
  }
1939
  {
1940
    BI opval = EQSI (* FLD (i_Ri), 0);
1941
    CPU (h_zbit) = opval;
1942
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1943
  }
1944
}
1945
 
1946
  abuf->written = written;
1947
#undef FLD
1948
}
1949
  NEXT (vpc);
1950
 
1951
  CASE (sem, INSN_LSL2) : /* lsl2 $u4,$Ri */
1952
{
1953
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1954
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1955
#define FLD(f) abuf->fields.sfmt_addi.f
1956
  int UNUSED written = 0;
1957
  IADDR UNUSED pc = abuf->addr;
1958
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1959
 
1960
{
1961
  SI tmp_shift;
1962
  tmp_shift = ADDSI (FLD (f_u4), 16);
1963
if (NESI (tmp_shift, 0)) {
1964
{
1965
  {
1966
    BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (32, tmp_shift))), 0);
1967
    CPU (h_cbit) = opval;
1968
    written |= (1 << 3);
1969
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1970
  }
1971
  {
1972
    SI opval = SLLSI (* FLD (i_Ri), tmp_shift);
1973
    * FLD (i_Ri) = opval;
1974
    written |= (1 << 2);
1975
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
1976
  }
1977
}
1978
} else {
1979
  {
1980
    BI opval = 0;
1981
    CPU (h_cbit) = opval;
1982
    written |= (1 << 3);
1983
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1984
  }
1985
}
1986
  {
1987
    BI opval = LTSI (* FLD (i_Ri), 0);
1988
    CPU (h_nbit) = opval;
1989
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1990
  }
1991
  {
1992
    BI opval = EQSI (* FLD (i_Ri), 0);
1993
    CPU (h_zbit) = opval;
1994
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1995
  }
1996
}
1997
 
1998
  abuf->written = written;
1999
#undef FLD
2000
}
2001
  NEXT (vpc);
2002
 
2003
  CASE (sem, INSN_LSR) : /* lsr $Rj,$Ri */
2004
{
2005
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2006
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2007
#define FLD(f) abuf->fields.sfmt_add.f
2008
  int UNUSED written = 0;
2009
  IADDR UNUSED pc = abuf->addr;
2010
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2011
 
2012
{
2013
  SI tmp_shift;
2014
  tmp_shift = ANDSI (* FLD (i_Rj), 31);
2015
if (NESI (tmp_shift, 0)) {
2016
{
2017
  {
2018
    BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (tmp_shift, 1))), 0);
2019
    CPU (h_cbit) = opval;
2020
    written |= (1 << 3);
2021
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2022
  }
2023
  {
2024
    SI opval = SRLSI (* FLD (i_Ri), tmp_shift);
2025
    * FLD (i_Ri) = opval;
2026
    written |= (1 << 2);
2027
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2028
  }
2029
}
2030
} else {
2031
  {
2032
    BI opval = 0;
2033
    CPU (h_cbit) = opval;
2034
    written |= (1 << 3);
2035
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2036
  }
2037
}
2038
  {
2039
    BI opval = LTSI (* FLD (i_Ri), 0);
2040
    CPU (h_nbit) = opval;
2041
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2042
  }
2043
  {
2044
    BI opval = EQSI (* FLD (i_Ri), 0);
2045
    CPU (h_zbit) = opval;
2046
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2047
  }
2048
}
2049
 
2050
  abuf->written = written;
2051
#undef FLD
2052
}
2053
  NEXT (vpc);
2054
 
2055
  CASE (sem, INSN_LSRI) : /* lsr $u4,$Ri */
2056
{
2057
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2058
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2059
#define FLD(f) abuf->fields.sfmt_addi.f
2060
  int UNUSED written = 0;
2061
  IADDR UNUSED pc = abuf->addr;
2062
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2063
 
2064
{
2065
  SI tmp_shift;
2066
  tmp_shift = FLD (f_u4);
2067
if (NESI (tmp_shift, 0)) {
2068
{
2069
  {
2070
    BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (tmp_shift, 1))), 0);
2071
    CPU (h_cbit) = opval;
2072
    written |= (1 << 3);
2073
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2074
  }
2075
  {
2076
    SI opval = SRLSI (* FLD (i_Ri), tmp_shift);
2077
    * FLD (i_Ri) = opval;
2078
    written |= (1 << 2);
2079
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2080
  }
2081
}
2082
} else {
2083
  {
2084
    BI opval = 0;
2085
    CPU (h_cbit) = opval;
2086
    written |= (1 << 3);
2087
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2088
  }
2089
}
2090
  {
2091
    BI opval = LTSI (* FLD (i_Ri), 0);
2092
    CPU (h_nbit) = opval;
2093
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2094
  }
2095
  {
2096
    BI opval = EQSI (* FLD (i_Ri), 0);
2097
    CPU (h_zbit) = opval;
2098
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2099
  }
2100
}
2101
 
2102
  abuf->written = written;
2103
#undef FLD
2104
}
2105
  NEXT (vpc);
2106
 
2107
  CASE (sem, INSN_LSR2) : /* lsr2 $u4,$Ri */
2108
{
2109
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2110
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2111
#define FLD(f) abuf->fields.sfmt_addi.f
2112
  int UNUSED written = 0;
2113
  IADDR UNUSED pc = abuf->addr;
2114
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2115
 
2116
{
2117
  SI tmp_shift;
2118
  tmp_shift = ADDSI (FLD (f_u4), 16);
2119
if (NESI (tmp_shift, 0)) {
2120
{
2121
  {
2122
    BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (tmp_shift, 1))), 0);
2123
    CPU (h_cbit) = opval;
2124
    written |= (1 << 3);
2125
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2126
  }
2127
  {
2128
    SI opval = SRLSI (* FLD (i_Ri), tmp_shift);
2129
    * FLD (i_Ri) = opval;
2130
    written |= (1 << 2);
2131
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2132
  }
2133
}
2134
} else {
2135
  {
2136
    BI opval = 0;
2137
    CPU (h_cbit) = opval;
2138
    written |= (1 << 3);
2139
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2140
  }
2141
}
2142
  {
2143
    BI opval = LTSI (* FLD (i_Ri), 0);
2144
    CPU (h_nbit) = opval;
2145
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2146
  }
2147
  {
2148
    BI opval = EQSI (* FLD (i_Ri), 0);
2149
    CPU (h_zbit) = opval;
2150
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2151
  }
2152
}
2153
 
2154
  abuf->written = written;
2155
#undef FLD
2156
}
2157
  NEXT (vpc);
2158
 
2159
  CASE (sem, INSN_ASR) : /* asr $Rj,$Ri */
2160
{
2161
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2162
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2163
#define FLD(f) abuf->fields.sfmt_add.f
2164
  int UNUSED written = 0;
2165
  IADDR UNUSED pc = abuf->addr;
2166
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2167
 
2168
{
2169
  SI tmp_shift;
2170
  tmp_shift = ANDSI (* FLD (i_Rj), 31);
2171
if (NESI (tmp_shift, 0)) {
2172
{
2173
  {
2174
    BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (tmp_shift, 1))), 0);
2175
    CPU (h_cbit) = opval;
2176
    written |= (1 << 3);
2177
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2178
  }
2179
  {
2180
    SI opval = SRASI (* FLD (i_Ri), tmp_shift);
2181
    * FLD (i_Ri) = opval;
2182
    written |= (1 << 2);
2183
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2184
  }
2185
}
2186
} else {
2187
  {
2188
    BI opval = 0;
2189
    CPU (h_cbit) = opval;
2190
    written |= (1 << 3);
2191
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2192
  }
2193
}
2194
  {
2195
    BI opval = LTSI (* FLD (i_Ri), 0);
2196
    CPU (h_nbit) = opval;
2197
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2198
  }
2199
  {
2200
    BI opval = EQSI (* FLD (i_Ri), 0);
2201
    CPU (h_zbit) = opval;
2202
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2203
  }
2204
}
2205
 
2206
  abuf->written = written;
2207
#undef FLD
2208
}
2209
  NEXT (vpc);
2210
 
2211
  CASE (sem, INSN_ASRI) : /* asr $u4,$Ri */
2212
{
2213
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2214
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2215
#define FLD(f) abuf->fields.sfmt_addi.f
2216
  int UNUSED written = 0;
2217
  IADDR UNUSED pc = abuf->addr;
2218
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2219
 
2220
{
2221
  SI tmp_shift;
2222
  tmp_shift = FLD (f_u4);
2223
if (NESI (tmp_shift, 0)) {
2224
{
2225
  {
2226
    BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (tmp_shift, 1))), 0);
2227
    CPU (h_cbit) = opval;
2228
    written |= (1 << 3);
2229
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2230
  }
2231
  {
2232
    SI opval = SRASI (* FLD (i_Ri), tmp_shift);
2233
    * FLD (i_Ri) = opval;
2234
    written |= (1 << 2);
2235
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2236
  }
2237
}
2238
} else {
2239
  {
2240
    BI opval = 0;
2241
    CPU (h_cbit) = opval;
2242
    written |= (1 << 3);
2243
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2244
  }
2245
}
2246
  {
2247
    BI opval = LTSI (* FLD (i_Ri), 0);
2248
    CPU (h_nbit) = opval;
2249
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2250
  }
2251
  {
2252
    BI opval = EQSI (* FLD (i_Ri), 0);
2253
    CPU (h_zbit) = opval;
2254
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2255
  }
2256
}
2257
 
2258
  abuf->written = written;
2259
#undef FLD
2260
}
2261
  NEXT (vpc);
2262
 
2263
  CASE (sem, INSN_ASR2) : /* asr2 $u4,$Ri */
2264
{
2265
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2266
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2267
#define FLD(f) abuf->fields.sfmt_addi.f
2268
  int UNUSED written = 0;
2269
  IADDR UNUSED pc = abuf->addr;
2270
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2271
 
2272
{
2273
  SI tmp_shift;
2274
  tmp_shift = ADDSI (FLD (f_u4), 16);
2275
if (NESI (tmp_shift, 0)) {
2276
{
2277
  {
2278
    BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (tmp_shift, 1))), 0);
2279
    CPU (h_cbit) = opval;
2280
    written |= (1 << 3);
2281
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2282
  }
2283
  {
2284
    SI opval = SRASI (* FLD (i_Ri), tmp_shift);
2285
    * FLD (i_Ri) = opval;
2286
    written |= (1 << 2);
2287
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2288
  }
2289
}
2290
} else {
2291
  {
2292
    BI opval = 0;
2293
    CPU (h_cbit) = opval;
2294
    written |= (1 << 3);
2295
    TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2296
  }
2297
}
2298
  {
2299
    BI opval = LTSI (* FLD (i_Ri), 0);
2300
    CPU (h_nbit) = opval;
2301
    TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2302
  }
2303
  {
2304
    BI opval = EQSI (* FLD (i_Ri), 0);
2305
    CPU (h_zbit) = opval;
2306
    TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2307
  }
2308
}
2309
 
2310
  abuf->written = written;
2311
#undef FLD
2312
}
2313
  NEXT (vpc);
2314
 
2315
  CASE (sem, INSN_LDI8) : /* ldi:8 $i8,$Ri */
2316
{
2317
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2318
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2319
#define FLD(f) abuf->fields.sfmt_ldi8.f
2320
  int UNUSED written = 0;
2321
  IADDR UNUSED pc = abuf->addr;
2322
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2323
 
2324
  {
2325
    SI opval = FLD (f_i8);
2326
    * FLD (i_Ri) = opval;
2327
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2328
  }
2329
 
2330
#undef FLD
2331
}
2332
  NEXT (vpc);
2333
 
2334
  CASE (sem, INSN_LDI20) : /* ldi:20 $i20,$Ri */
2335
{
2336
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2337
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2338
#define FLD(f) abuf->fields.sfmt_ldi20.f
2339
  int UNUSED written = 0;
2340
  IADDR UNUSED pc = abuf->addr;
2341
  vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2342
 
2343
  {
2344
    SI opval = FLD (f_i20);
2345
    * FLD (i_Ri) = opval;
2346
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2347
  }
2348
 
2349
#undef FLD
2350
}
2351
  NEXT (vpc);
2352
 
2353
  CASE (sem, INSN_LDI32) : /* ldi:32 $i32,$Ri */
2354
{
2355
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2356
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2357
#define FLD(f) abuf->fields.sfmt_ldi32.f
2358
  int UNUSED written = 0;
2359
  IADDR UNUSED pc = abuf->addr;
2360
  vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
2361
 
2362
  {
2363
    SI opval = FLD (f_i32);
2364
    * FLD (i_Ri) = opval;
2365
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2366
  }
2367
 
2368
#undef FLD
2369
}
2370
  NEXT (vpc);
2371
 
2372
  CASE (sem, INSN_LD) : /* ld @$Rj,$Ri */
2373
{
2374
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2375
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2376
#define FLD(f) abuf->fields.sfmt_ldr13.f
2377
  int UNUSED written = 0;
2378
  IADDR UNUSED pc = abuf->addr;
2379
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2380
 
2381
  {
2382
    SI opval = GETMEMSI (current_cpu, pc, * FLD (i_Rj));
2383
    * FLD (i_Ri) = opval;
2384
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2385
  }
2386
 
2387
#undef FLD
2388
}
2389
  NEXT (vpc);
2390
 
2391
  CASE (sem, INSN_LDUH) : /* lduh @$Rj,$Ri */
2392
{
2393
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2394
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2395
#define FLD(f) abuf->fields.sfmt_ldr13.f
2396
  int UNUSED written = 0;
2397
  IADDR UNUSED pc = abuf->addr;
2398
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2399
 
2400
  {
2401
    SI opval = GETMEMUHI (current_cpu, pc, * FLD (i_Rj));
2402
    * FLD (i_Ri) = opval;
2403
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2404
  }
2405
 
2406
#undef FLD
2407
}
2408
  NEXT (vpc);
2409
 
2410
  CASE (sem, INSN_LDUB) : /* ldub @$Rj,$Ri */
2411
{
2412
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2413
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2414
#define FLD(f) abuf->fields.sfmt_ldr13.f
2415
  int UNUSED written = 0;
2416
  IADDR UNUSED pc = abuf->addr;
2417
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2418
 
2419
  {
2420
    SI opval = GETMEMUQI (current_cpu, pc, * FLD (i_Rj));
2421
    * FLD (i_Ri) = opval;
2422
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2423
  }
2424
 
2425
#undef FLD
2426
}
2427
  NEXT (vpc);
2428
 
2429
  CASE (sem, INSN_LDR13) : /* ld @($R13,$Rj),$Ri */
2430
{
2431
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2432
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2433
#define FLD(f) abuf->fields.sfmt_ldr13.f
2434
  int UNUSED written = 0;
2435
  IADDR UNUSED pc = abuf->addr;
2436
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2437
 
2438
  {
2439
    SI opval = GETMEMSI (current_cpu, pc, ADDSI (* FLD (i_Rj), CPU (h_gr[((UINT) 13)])));
2440
    * FLD (i_Ri) = opval;
2441
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2442
  }
2443
 
2444
#undef FLD
2445
}
2446
  NEXT (vpc);
2447
 
2448
  CASE (sem, INSN_LDR13UH) : /* lduh @($R13,$Rj),$Ri */
2449
{
2450
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2451
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2452
#define FLD(f) abuf->fields.sfmt_ldr13.f
2453
  int UNUSED written = 0;
2454
  IADDR UNUSED pc = abuf->addr;
2455
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2456
 
2457
  {
2458
    SI opval = GETMEMUHI (current_cpu, pc, ADDSI (* FLD (i_Rj), CPU (h_gr[((UINT) 13)])));
2459
    * FLD (i_Ri) = opval;
2460
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2461
  }
2462
 
2463
#undef FLD
2464
}
2465
  NEXT (vpc);
2466
 
2467
  CASE (sem, INSN_LDR13UB) : /* ldub @($R13,$Rj),$Ri */
2468
{
2469
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2470
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2471
#define FLD(f) abuf->fields.sfmt_ldr13.f
2472
  int UNUSED written = 0;
2473
  IADDR UNUSED pc = abuf->addr;
2474
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2475
 
2476
  {
2477
    SI opval = GETMEMUQI (current_cpu, pc, ADDSI (* FLD (i_Rj), CPU (h_gr[((UINT) 13)])));
2478
    * FLD (i_Ri) = opval;
2479
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2480
  }
2481
 
2482
#undef FLD
2483
}
2484
  NEXT (vpc);
2485
 
2486
  CASE (sem, INSN_LDR14) : /* ld @($R14,$disp10),$Ri */
2487
{
2488
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2489
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2490
#define FLD(f) abuf->fields.sfmt_ldr14.f
2491
  int UNUSED written = 0;
2492
  IADDR UNUSED pc = abuf->addr;
2493
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2494
 
2495
  {
2496
    SI opval = GETMEMSI (current_cpu, pc, ADDSI (FLD (f_disp10), CPU (h_gr[((UINT) 14)])));
2497
    * FLD (i_Ri) = opval;
2498
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2499
  }
2500
 
2501
#undef FLD
2502
}
2503
  NEXT (vpc);
2504
 
2505
  CASE (sem, INSN_LDR14UH) : /* lduh @($R14,$disp9),$Ri */
2506
{
2507
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2508
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2509
#define FLD(f) abuf->fields.sfmt_ldr14uh.f
2510
  int UNUSED written = 0;
2511
  IADDR UNUSED pc = abuf->addr;
2512
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2513
 
2514
  {
2515
    SI opval = GETMEMUHI (current_cpu, pc, ADDSI (FLD (f_disp9), CPU (h_gr[((UINT) 14)])));
2516
    * FLD (i_Ri) = opval;
2517
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2518
  }
2519
 
2520
#undef FLD
2521
}
2522
  NEXT (vpc);
2523
 
2524
  CASE (sem, INSN_LDR14UB) : /* ldub @($R14,$disp8),$Ri */
2525
{
2526
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2527
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2528
#define FLD(f) abuf->fields.sfmt_ldr14ub.f
2529
  int UNUSED written = 0;
2530
  IADDR UNUSED pc = abuf->addr;
2531
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2532
 
2533
  {
2534
    SI opval = GETMEMUQI (current_cpu, pc, ADDSI (FLD (f_disp8), CPU (h_gr[((UINT) 14)])));
2535
    * FLD (i_Ri) = opval;
2536
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2537
  }
2538
 
2539
#undef FLD
2540
}
2541
  NEXT (vpc);
2542
 
2543
  CASE (sem, INSN_LDR15) : /* ld @($R15,$udisp6),$Ri */
2544
{
2545
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2546
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2547
#define FLD(f) abuf->fields.sfmt_ldr15.f
2548
  int UNUSED written = 0;
2549
  IADDR UNUSED pc = abuf->addr;
2550
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2551
 
2552
  {
2553
    SI opval = GETMEMSI (current_cpu, pc, ADDSI (FLD (f_udisp6), CPU (h_gr[((UINT) 15)])));
2554
    * FLD (i_Ri) = opval;
2555
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2556
  }
2557
 
2558
#undef FLD
2559
}
2560
  NEXT (vpc);
2561
 
2562
  CASE (sem, INSN_LDR15GR) : /* ld @$R15+,$Ri */
2563
{
2564
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2565
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2566
#define FLD(f) abuf->fields.sfmt_ldr15gr.f
2567
  int UNUSED written = 0;
2568
  IADDR UNUSED pc = abuf->addr;
2569
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2570
 
2571
{
2572
  {
2573
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
2574
    * FLD (i_Ri) = opval;
2575
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2576
  }
2577
if (NESI (FLD (f_Ri), 15)) {
2578
  {
2579
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
2580
    CPU (h_gr[((UINT) 15)]) = opval;
2581
    written |= (1 << 4);
2582
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
2583
  }
2584
}
2585
}
2586
 
2587
  abuf->written = written;
2588
#undef FLD
2589
}
2590
  NEXT (vpc);
2591
 
2592
  CASE (sem, INSN_LDR15DR) : /* ld @$R15+,$Rs2 */
2593
{
2594
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2595
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2596
#define FLD(f) abuf->fields.sfmt_ldr15dr.f
2597
  int UNUSED written = 0;
2598
  IADDR UNUSED pc = abuf->addr;
2599
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2600
 
2601
{
2602
  SI tmp_tmp;
2603
  tmp_tmp = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
2604
  {
2605
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
2606
    CPU (h_gr[((UINT) 15)]) = opval;
2607
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
2608
  }
2609
  {
2610
    SI opval = tmp_tmp;
2611
    SET_H_DR (FLD (f_Rs2), opval);
2612
    TRACE_RESULT (current_cpu, abuf, "Rs2", 'x', opval);
2613
  }
2614
}
2615
 
2616
#undef FLD
2617
}
2618
  NEXT (vpc);
2619
 
2620
  CASE (sem, INSN_LDR15PS) : /* ld @$R15+,$ps */
2621
{
2622
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2623
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2624
#define FLD(f) abuf->fields.sfmt_addsp.f
2625
  int UNUSED written = 0;
2626
  IADDR UNUSED pc = abuf->addr;
2627
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2628
 
2629
{
2630
  {
2631
    USI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
2632
    SET_H_PS (opval);
2633
    TRACE_RESULT (current_cpu, abuf, "ps", 'x', opval);
2634
  }
2635
  {
2636
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
2637
    CPU (h_gr[((UINT) 15)]) = opval;
2638
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
2639
  }
2640
}
2641
 
2642
#undef FLD
2643
}
2644
  NEXT (vpc);
2645
 
2646
  CASE (sem, INSN_ST) : /* st $Ri,@$Rj */
2647
{
2648
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2649
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2650
#define FLD(f) abuf->fields.sfmt_str13.f
2651
  int UNUSED written = 0;
2652
  IADDR UNUSED pc = abuf->addr;
2653
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2654
 
2655
  {
2656
    SI opval = * FLD (i_Ri);
2657
    SETMEMSI (current_cpu, pc, * FLD (i_Rj), opval);
2658
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2659
  }
2660
 
2661
#undef FLD
2662
}
2663
  NEXT (vpc);
2664
 
2665
  CASE (sem, INSN_STH) : /* sth $Ri,@$Rj */
2666
{
2667
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2668
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2669
#define FLD(f) abuf->fields.sfmt_str13.f
2670
  int UNUSED written = 0;
2671
  IADDR UNUSED pc = abuf->addr;
2672
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2673
 
2674
  {
2675
    HI opval = * FLD (i_Ri);
2676
    SETMEMHI (current_cpu, pc, * FLD (i_Rj), opval);
2677
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2678
  }
2679
 
2680
#undef FLD
2681
}
2682
  NEXT (vpc);
2683
 
2684
  CASE (sem, INSN_STB) : /* stb $Ri,@$Rj */
2685
{
2686
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2687
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2688
#define FLD(f) abuf->fields.sfmt_str13.f
2689
  int UNUSED written = 0;
2690
  IADDR UNUSED pc = abuf->addr;
2691
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2692
 
2693
  {
2694
    QI opval = * FLD (i_Ri);
2695
    SETMEMQI (current_cpu, pc, * FLD (i_Rj), opval);
2696
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2697
  }
2698
 
2699
#undef FLD
2700
}
2701
  NEXT (vpc);
2702
 
2703
  CASE (sem, INSN_STR13) : /* st $Ri,@($R13,$Rj) */
2704
{
2705
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2706
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2707
#define FLD(f) abuf->fields.sfmt_str13.f
2708
  int UNUSED written = 0;
2709
  IADDR UNUSED pc = abuf->addr;
2710
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2711
 
2712
  {
2713
    SI opval = * FLD (i_Ri);
2714
    SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_Rj), CPU (h_gr[((UINT) 13)])), opval);
2715
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2716
  }
2717
 
2718
#undef FLD
2719
}
2720
  NEXT (vpc);
2721
 
2722
  CASE (sem, INSN_STR13H) : /* sth $Ri,@($R13,$Rj) */
2723
{
2724
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2725
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2726
#define FLD(f) abuf->fields.sfmt_str13.f
2727
  int UNUSED written = 0;
2728
  IADDR UNUSED pc = abuf->addr;
2729
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2730
 
2731
  {
2732
    HI opval = * FLD (i_Ri);
2733
    SETMEMHI (current_cpu, pc, ADDSI (* FLD (i_Rj), CPU (h_gr[((UINT) 13)])), opval);
2734
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2735
  }
2736
 
2737
#undef FLD
2738
}
2739
  NEXT (vpc);
2740
 
2741
  CASE (sem, INSN_STR13B) : /* stb $Ri,@($R13,$Rj) */
2742
{
2743
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2744
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2745
#define FLD(f) abuf->fields.sfmt_str13.f
2746
  int UNUSED written = 0;
2747
  IADDR UNUSED pc = abuf->addr;
2748
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2749
 
2750
  {
2751
    QI opval = * FLD (i_Ri);
2752
    SETMEMQI (current_cpu, pc, ADDSI (* FLD (i_Rj), CPU (h_gr[((UINT) 13)])), opval);
2753
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2754
  }
2755
 
2756
#undef FLD
2757
}
2758
  NEXT (vpc);
2759
 
2760
  CASE (sem, INSN_STR14) : /* st $Ri,@($R14,$disp10) */
2761
{
2762
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2763
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2764
#define FLD(f) abuf->fields.sfmt_str14.f
2765
  int UNUSED written = 0;
2766
  IADDR UNUSED pc = abuf->addr;
2767
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2768
 
2769
  {
2770
    SI opval = * FLD (i_Ri);
2771
    SETMEMSI (current_cpu, pc, ADDSI (FLD (f_disp10), CPU (h_gr[((UINT) 14)])), opval);
2772
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2773
  }
2774
 
2775
#undef FLD
2776
}
2777
  NEXT (vpc);
2778
 
2779
  CASE (sem, INSN_STR14H) : /* sth $Ri,@($R14,$disp9) */
2780
{
2781
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2782
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2783
#define FLD(f) abuf->fields.sfmt_str14h.f
2784
  int UNUSED written = 0;
2785
  IADDR UNUSED pc = abuf->addr;
2786
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2787
 
2788
  {
2789
    HI opval = * FLD (i_Ri);
2790
    SETMEMHI (current_cpu, pc, ADDSI (FLD (f_disp9), CPU (h_gr[((UINT) 14)])), opval);
2791
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2792
  }
2793
 
2794
#undef FLD
2795
}
2796
  NEXT (vpc);
2797
 
2798
  CASE (sem, INSN_STR14B) : /* stb $Ri,@($R14,$disp8) */
2799
{
2800
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2801
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2802
#define FLD(f) abuf->fields.sfmt_str14b.f
2803
  int UNUSED written = 0;
2804
  IADDR UNUSED pc = abuf->addr;
2805
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2806
 
2807
  {
2808
    QI opval = * FLD (i_Ri);
2809
    SETMEMQI (current_cpu, pc, ADDSI (FLD (f_disp8), CPU (h_gr[((UINT) 14)])), opval);
2810
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2811
  }
2812
 
2813
#undef FLD
2814
}
2815
  NEXT (vpc);
2816
 
2817
  CASE (sem, INSN_STR15) : /* st $Ri,@($R15,$udisp6) */
2818
{
2819
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2820
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2821
#define FLD(f) abuf->fields.sfmt_str15.f
2822
  int UNUSED written = 0;
2823
  IADDR UNUSED pc = abuf->addr;
2824
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2825
 
2826
  {
2827
    SI opval = * FLD (i_Ri);
2828
    SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 15)]), FLD (f_udisp6)), opval);
2829
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2830
  }
2831
 
2832
#undef FLD
2833
}
2834
  NEXT (vpc);
2835
 
2836
  CASE (sem, INSN_STR15GR) : /* st $Ri,@-$R15 */
2837
{
2838
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2839
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2840
#define FLD(f) abuf->fields.sfmt_str15gr.f
2841
  int UNUSED written = 0;
2842
  IADDR UNUSED pc = abuf->addr;
2843
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2844
 
2845
{
2846
  SI tmp_tmp;
2847
  tmp_tmp = * FLD (i_Ri);
2848
  {
2849
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
2850
    CPU (h_gr[((UINT) 15)]) = opval;
2851
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
2852
  }
2853
  {
2854
    SI opval = tmp_tmp;
2855
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
2856
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2857
  }
2858
}
2859
 
2860
#undef FLD
2861
}
2862
  NEXT (vpc);
2863
 
2864
  CASE (sem, INSN_STR15DR) : /* st $Rs2,@-$R15 */
2865
{
2866
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2867
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2868
#define FLD(f) abuf->fields.sfmt_ldr15dr.f
2869
  int UNUSED written = 0;
2870
  IADDR UNUSED pc = abuf->addr;
2871
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2872
 
2873
{
2874
  SI tmp_tmp;
2875
  tmp_tmp = GET_H_DR (FLD (f_Rs2));
2876
  {
2877
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
2878
    CPU (h_gr[((UINT) 15)]) = opval;
2879
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
2880
  }
2881
  {
2882
    SI opval = tmp_tmp;
2883
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
2884
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2885
  }
2886
}
2887
 
2888
#undef FLD
2889
}
2890
  NEXT (vpc);
2891
 
2892
  CASE (sem, INSN_STR15PS) : /* st $ps,@-$R15 */
2893
{
2894
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2895
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2896
#define FLD(f) abuf->fields.sfmt_addsp.f
2897
  int UNUSED written = 0;
2898
  IADDR UNUSED pc = abuf->addr;
2899
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2900
 
2901
{
2902
  {
2903
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
2904
    CPU (h_gr[((UINT) 15)]) = opval;
2905
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
2906
  }
2907
  {
2908
    SI opval = GET_H_PS ();
2909
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
2910
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2911
  }
2912
}
2913
 
2914
#undef FLD
2915
}
2916
  NEXT (vpc);
2917
 
2918
  CASE (sem, INSN_MOV) : /* mov $Rj,$Ri */
2919
{
2920
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2921
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2922
#define FLD(f) abuf->fields.sfmt_ldr13.f
2923
  int UNUSED written = 0;
2924
  IADDR UNUSED pc = abuf->addr;
2925
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2926
 
2927
  {
2928
    SI opval = * FLD (i_Rj);
2929
    * FLD (i_Ri) = opval;
2930
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2931
  }
2932
 
2933
#undef FLD
2934
}
2935
  NEXT (vpc);
2936
 
2937
  CASE (sem, INSN_MOVDR) : /* mov $Rs1,$Ri */
2938
{
2939
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2940
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2941
#define FLD(f) abuf->fields.sfmt_movdr.f
2942
  int UNUSED written = 0;
2943
  IADDR UNUSED pc = abuf->addr;
2944
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2945
 
2946
  {
2947
    SI opval = GET_H_DR (FLD (f_Rs1));
2948
    * FLD (i_Ri) = opval;
2949
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2950
  }
2951
 
2952
#undef FLD
2953
}
2954
  NEXT (vpc);
2955
 
2956
  CASE (sem, INSN_MOVPS) : /* mov $ps,$Ri */
2957
{
2958
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2959
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2960
#define FLD(f) abuf->fields.sfmt_movdr.f
2961
  int UNUSED written = 0;
2962
  IADDR UNUSED pc = abuf->addr;
2963
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2964
 
2965
  {
2966
    SI opval = GET_H_PS ();
2967
    * FLD (i_Ri) = opval;
2968
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2969
  }
2970
 
2971
#undef FLD
2972
}
2973
  NEXT (vpc);
2974
 
2975
  CASE (sem, INSN_MOV2DR) : /* mov $Ri,$Rs1 */
2976
{
2977
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2978
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2979
#define FLD(f) abuf->fields.sfmt_mov2dr.f
2980
  int UNUSED written = 0;
2981
  IADDR UNUSED pc = abuf->addr;
2982
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2983
 
2984
  {
2985
    SI opval = * FLD (i_Ri);
2986
    SET_H_DR (FLD (f_Rs1), opval);
2987
    TRACE_RESULT (current_cpu, abuf, "Rs1", 'x', opval);
2988
  }
2989
 
2990
#undef FLD
2991
}
2992
  NEXT (vpc);
2993
 
2994
  CASE (sem, INSN_MOV2PS) : /* mov $Ri,$ps */
2995
{
2996
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2997
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2998
#define FLD(f) abuf->fields.sfmt_mov2dr.f
2999
  int UNUSED written = 0;
3000
  IADDR UNUSED pc = abuf->addr;
3001
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3002
 
3003
  {
3004
    USI opval = * FLD (i_Ri);
3005
    SET_H_PS (opval);
3006
    TRACE_RESULT (current_cpu, abuf, "ps", 'x', opval);
3007
  }
3008
 
3009
#undef FLD
3010
}
3011
  NEXT (vpc);
3012
 
3013
  CASE (sem, INSN_JMP) : /* jmp @$Ri */
3014
{
3015
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3016
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3017
#define FLD(f) abuf->fields.sfmt_mov2dr.f
3018
  int UNUSED written = 0;
3019
  IADDR UNUSED pc = abuf->addr;
3020
  SEM_BRANCH_INIT
3021
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3022
 
3023
  {
3024
    USI opval = * FLD (i_Ri);
3025
    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3026
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3027
  }
3028
 
3029
  SEM_BRANCH_FINI (vpc);
3030
#undef FLD
3031
}
3032
  NEXT (vpc);
3033
 
3034
  CASE (sem, INSN_JMPD) : /* jmp:d @$Ri */
3035
{
3036
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3037
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3038
#define FLD(f) abuf->fields.sfmt_mov2dr.f
3039
  int UNUSED written = 0;
3040
  IADDR UNUSED pc = abuf->addr;
3041
  SEM_BRANCH_INIT
3042
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3043
 
3044
{
3045
  {
3046
    USI opval = * FLD (i_Ri);
3047
    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3048
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3049
  }
3050
}
3051
 
3052
  SEM_BRANCH_FINI (vpc);
3053
#undef FLD
3054
}
3055
  NEXT (vpc);
3056
 
3057
  CASE (sem, INSN_CALLR) : /* call @$Ri */
3058
{
3059
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3060
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3061
#define FLD(f) abuf->fields.sfmt_mov2dr.f
3062
  int UNUSED written = 0;
3063
  IADDR UNUSED pc = abuf->addr;
3064
  SEM_BRANCH_INIT
3065
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3066
 
3067
{
3068
  {
3069
    SI opval = ADDSI (pc, 2);
3070
    SET_H_DR (((UINT) 1), opval);
3071
    TRACE_RESULT (current_cpu, abuf, "dr-1", 'x', opval);
3072
  }
3073
  {
3074
    USI opval = * FLD (i_Ri);
3075
    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3076
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3077
  }
3078
}
3079
 
3080
  SEM_BRANCH_FINI (vpc);
3081
#undef FLD
3082
}
3083
  NEXT (vpc);
3084
 
3085
  CASE (sem, INSN_CALLRD) : /* call:d @$Ri */
3086
{
3087
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3088
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3089
#define FLD(f) abuf->fields.sfmt_mov2dr.f
3090
  int UNUSED written = 0;
3091
  IADDR UNUSED pc = abuf->addr;
3092
  SEM_BRANCH_INIT
3093
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3094
 
3095
{
3096
{
3097
  {
3098
    SI opval = ADDSI (pc, 4);
3099
    SET_H_DR (((UINT) 1), opval);
3100
    TRACE_RESULT (current_cpu, abuf, "dr-1", 'x', opval);
3101
  }
3102
  {
3103
    USI opval = * FLD (i_Ri);
3104
    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3105
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3106
  }
3107
}
3108
}
3109
 
3110
  SEM_BRANCH_FINI (vpc);
3111
#undef FLD
3112
}
3113
  NEXT (vpc);
3114
 
3115
  CASE (sem, INSN_CALL) : /* call $label12 */
3116
{
3117
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3118
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3119
#define FLD(f) abuf->fields.sfmt_call.f
3120
  int UNUSED written = 0;
3121
  IADDR UNUSED pc = abuf->addr;
3122
  SEM_BRANCH_INIT
3123
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3124
 
3125
{
3126
  {
3127
    SI opval = ADDSI (pc, 2);
3128
    SET_H_DR (((UINT) 1), opval);
3129
    TRACE_RESULT (current_cpu, abuf, "dr-1", 'x', opval);
3130
  }
3131
  {
3132
    USI opval = FLD (i_label12);
3133
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3134
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3135
  }
3136
}
3137
 
3138
  SEM_BRANCH_FINI (vpc);
3139
#undef FLD
3140
}
3141
  NEXT (vpc);
3142
 
3143
  CASE (sem, INSN_CALLD) : /* call:d $label12 */
3144
{
3145
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3146
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3147
#define FLD(f) abuf->fields.sfmt_call.f
3148
  int UNUSED written = 0;
3149
  IADDR UNUSED pc = abuf->addr;
3150
  SEM_BRANCH_INIT
3151
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3152
 
3153
{
3154
{
3155
  {
3156
    SI opval = ADDSI (pc, 4);
3157
    SET_H_DR (((UINT) 1), opval);
3158
    TRACE_RESULT (current_cpu, abuf, "dr-1", 'x', opval);
3159
  }
3160
  {
3161
    USI opval = FLD (i_label12);
3162
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3163
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3164
  }
3165
}
3166
}
3167
 
3168
  SEM_BRANCH_FINI (vpc);
3169
#undef FLD
3170
}
3171
  NEXT (vpc);
3172
 
3173
  CASE (sem, INSN_RET) : /* ret */
3174
{
3175
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3176
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3177
#define FLD(f) abuf->fields.fmt_empty.f
3178
  int UNUSED written = 0;
3179
  IADDR UNUSED pc = abuf->addr;
3180
  SEM_BRANCH_INIT
3181
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3182
 
3183
  {
3184
    USI opval = GET_H_DR (((UINT) 1));
3185
    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3186
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3187
  }
3188
 
3189
  SEM_BRANCH_FINI (vpc);
3190
#undef FLD
3191
}
3192
  NEXT (vpc);
3193
 
3194
  CASE (sem, INSN_RET_D) : /* ret:d */
3195
{
3196
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3197
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3198
#define FLD(f) abuf->fields.fmt_empty.f
3199
  int UNUSED written = 0;
3200
  IADDR UNUSED pc = abuf->addr;
3201
  SEM_BRANCH_INIT
3202
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3203
 
3204
{
3205
  {
3206
    USI opval = GET_H_DR (((UINT) 1));
3207
    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3208
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3209
  }
3210
}
3211
 
3212
  SEM_BRANCH_FINI (vpc);
3213
#undef FLD
3214
}
3215
  NEXT (vpc);
3216
 
3217
  CASE (sem, INSN_INT) : /* int $u8 */
3218
{
3219
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3220
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3221
#define FLD(f) abuf->fields.sfmt_int.f
3222
  int UNUSED written = 0;
3223
  IADDR UNUSED pc = abuf->addr;
3224
  SEM_BRANCH_INIT
3225
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3226
 
3227
{
3228
; /*clobber*/
3229
; /*clobber*/
3230
; /*clobber*/
3231
  {
3232
    SI opval = fr30_int (current_cpu, pc, FLD (f_u8));
3233
    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3234
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3235
  }
3236
}
3237
 
3238
  SEM_BRANCH_FINI (vpc);
3239
#undef FLD
3240
}
3241
  NEXT (vpc);
3242
 
3243
  CASE (sem, INSN_INTE) : /* inte */
3244
{
3245
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3246
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3247
#define FLD(f) abuf->fields.fmt_empty.f
3248
  int UNUSED written = 0;
3249
  IADDR UNUSED pc = abuf->addr;
3250
  SEM_BRANCH_INIT
3251
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3252
 
3253
{
3254
; /*clobber*/
3255
; /*clobber*/
3256
; /*clobber*/
3257
  {
3258
    SI opval = fr30_inte (current_cpu, pc);
3259
    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3260
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3261
  }
3262
}
3263
 
3264
  SEM_BRANCH_FINI (vpc);
3265
#undef FLD
3266
}
3267
  NEXT (vpc);
3268
 
3269
  CASE (sem, INSN_RETI) : /* reti */
3270
{
3271
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3272
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3273
#define FLD(f) abuf->fields.fmt_empty.f
3274
  int UNUSED written = 0;
3275
  IADDR UNUSED pc = abuf->addr;
3276
  SEM_BRANCH_INIT
3277
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3278
 
3279
if (EQBI (GET_H_SBIT (), 0)) {
3280
{
3281
  {
3282
    SI opval = GETMEMSI (current_cpu, pc, GET_H_DR (((UINT) 2)));
3283
    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3284
    written |= (1 << 7);
3285
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3286
  }
3287
  {
3288
    SI opval = ADDSI (GET_H_DR (((UINT) 2)), 4);
3289
    SET_H_DR (((UINT) 2), opval);
3290
    written |= (1 << 5);
3291
    TRACE_RESULT (current_cpu, abuf, "dr-2", 'x', opval);
3292
  }
3293
  {
3294
    SI opval = GETMEMSI (current_cpu, pc, GET_H_DR (((UINT) 2)));
3295
    SET_H_PS (opval);
3296
    written |= (1 << 8);
3297
    TRACE_RESULT (current_cpu, abuf, "ps", 'x', opval);
3298
  }
3299
  {
3300
    SI opval = ADDSI (GET_H_DR (((UINT) 2)), 4);
3301
    SET_H_DR (((UINT) 2), opval);
3302
    written |= (1 << 5);
3303
    TRACE_RESULT (current_cpu, abuf, "dr-2", 'x', opval);
3304
  }
3305
}
3306
} else {
3307
{
3308
  {
3309
    SI opval = GETMEMSI (current_cpu, pc, GET_H_DR (((UINT) 3)));
3310
    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3311
    written |= (1 << 7);
3312
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3313
  }
3314
  {
3315
    SI opval = ADDSI (GET_H_DR (((UINT) 3)), 4);
3316
    SET_H_DR (((UINT) 3), opval);
3317
    written |= (1 << 6);
3318
    TRACE_RESULT (current_cpu, abuf, "dr-3", 'x', opval);
3319
  }
3320
  {
3321
    SI opval = GETMEMSI (current_cpu, pc, GET_H_DR (((UINT) 3)));
3322
    SET_H_PS (opval);
3323
    written |= (1 << 8);
3324
    TRACE_RESULT (current_cpu, abuf, "ps", 'x', opval);
3325
  }
3326
  {
3327
    SI opval = ADDSI (GET_H_DR (((UINT) 3)), 4);
3328
    SET_H_DR (((UINT) 3), opval);
3329
    written |= (1 << 6);
3330
    TRACE_RESULT (current_cpu, abuf, "dr-3", 'x', opval);
3331
  }
3332
}
3333
}
3334
 
3335
  abuf->written = written;
3336
  SEM_BRANCH_FINI (vpc);
3337
#undef FLD
3338
}
3339
  NEXT (vpc);
3340
 
3341
  CASE (sem, INSN_BRAD) : /* bra:d $label9 */
3342
{
3343
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3344
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3345
#define FLD(f) abuf->fields.sfmt_brad.f
3346
  int UNUSED written = 0;
3347
  IADDR UNUSED pc = abuf->addr;
3348
  SEM_BRANCH_INIT
3349
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3350
 
3351
{
3352
  {
3353
    USI opval = FLD (i_label9);
3354
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3355
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3356
  }
3357
}
3358
 
3359
  SEM_BRANCH_FINI (vpc);
3360
#undef FLD
3361
}
3362
  NEXT (vpc);
3363
 
3364
  CASE (sem, INSN_BRA) : /* bra $label9 */
3365
{
3366
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3367
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3368
#define FLD(f) abuf->fields.sfmt_brad.f
3369
  int UNUSED written = 0;
3370
  IADDR UNUSED pc = abuf->addr;
3371
  SEM_BRANCH_INIT
3372
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3373
 
3374
  {
3375
    USI opval = FLD (i_label9);
3376
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3377
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3378
  }
3379
 
3380
  SEM_BRANCH_FINI (vpc);
3381
#undef FLD
3382
}
3383
  NEXT (vpc);
3384
 
3385
  CASE (sem, INSN_BNOD) : /* bno:d $label9 */
3386
{
3387
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3388
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3389
#define FLD(f) abuf->fields.fmt_empty.f
3390
  int UNUSED written = 0;
3391
  IADDR UNUSED pc = abuf->addr;
3392
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3393
 
3394
{
3395
((void) 0); /*nop*/
3396
}
3397
 
3398
#undef FLD
3399
}
3400
  NEXT (vpc);
3401
 
3402
  CASE (sem, INSN_BNO) : /* bno $label9 */
3403
{
3404
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3405
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3406
#define FLD(f) abuf->fields.fmt_empty.f
3407
  int UNUSED written = 0;
3408
  IADDR UNUSED pc = abuf->addr;
3409
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3410
 
3411
((void) 0); /*nop*/
3412
 
3413
#undef FLD
3414
}
3415
  NEXT (vpc);
3416
 
3417
  CASE (sem, INSN_BEQD) : /* beq:d $label9 */
3418
{
3419
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3420
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3421
#define FLD(f) abuf->fields.sfmt_brad.f
3422
  int UNUSED written = 0;
3423
  IADDR UNUSED pc = abuf->addr;
3424
  SEM_BRANCH_INIT
3425
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3426
 
3427
{
3428
if (CPU (h_zbit)) {
3429
  {
3430
    USI opval = FLD (i_label9);
3431
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3432
    written |= (1 << 2);
3433
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3434
  }
3435
}
3436
}
3437
 
3438
  abuf->written = written;
3439
  SEM_BRANCH_FINI (vpc);
3440
#undef FLD
3441
}
3442
  NEXT (vpc);
3443
 
3444
  CASE (sem, INSN_BEQ) : /* beq $label9 */
3445
{
3446
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3447
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3448
#define FLD(f) abuf->fields.sfmt_brad.f
3449
  int UNUSED written = 0;
3450
  IADDR UNUSED pc = abuf->addr;
3451
  SEM_BRANCH_INIT
3452
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3453
 
3454
if (CPU (h_zbit)) {
3455
  {
3456
    USI opval = FLD (i_label9);
3457
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3458
    written |= (1 << 2);
3459
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3460
  }
3461
}
3462
 
3463
  abuf->written = written;
3464
  SEM_BRANCH_FINI (vpc);
3465
#undef FLD
3466
}
3467
  NEXT (vpc);
3468
 
3469
  CASE (sem, INSN_BNED) : /* bne:d $label9 */
3470
{
3471
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3472
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3473
#define FLD(f) abuf->fields.sfmt_brad.f
3474
  int UNUSED written = 0;
3475
  IADDR UNUSED pc = abuf->addr;
3476
  SEM_BRANCH_INIT
3477
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3478
 
3479
{
3480
if (NOTBI (CPU (h_zbit))) {
3481
  {
3482
    USI opval = FLD (i_label9);
3483
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3484
    written |= (1 << 2);
3485
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3486
  }
3487
}
3488
}
3489
 
3490
  abuf->written = written;
3491
  SEM_BRANCH_FINI (vpc);
3492
#undef FLD
3493
}
3494
  NEXT (vpc);
3495
 
3496
  CASE (sem, INSN_BNE) : /* bne $label9 */
3497
{
3498
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3499
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3500
#define FLD(f) abuf->fields.sfmt_brad.f
3501
  int UNUSED written = 0;
3502
  IADDR UNUSED pc = abuf->addr;
3503
  SEM_BRANCH_INIT
3504
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3505
 
3506
if (NOTBI (CPU (h_zbit))) {
3507
  {
3508
    USI opval = FLD (i_label9);
3509
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3510
    written |= (1 << 2);
3511
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3512
  }
3513
}
3514
 
3515
  abuf->written = written;
3516
  SEM_BRANCH_FINI (vpc);
3517
#undef FLD
3518
}
3519
  NEXT (vpc);
3520
 
3521
  CASE (sem, INSN_BCD) : /* bc:d $label9 */
3522
{
3523
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3524
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3525
#define FLD(f) abuf->fields.sfmt_brad.f
3526
  int UNUSED written = 0;
3527
  IADDR UNUSED pc = abuf->addr;
3528
  SEM_BRANCH_INIT
3529
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3530
 
3531
{
3532
if (CPU (h_cbit)) {
3533
  {
3534
    USI opval = FLD (i_label9);
3535
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3536
    written |= (1 << 2);
3537
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3538
  }
3539
}
3540
}
3541
 
3542
  abuf->written = written;
3543
  SEM_BRANCH_FINI (vpc);
3544
#undef FLD
3545
}
3546
  NEXT (vpc);
3547
 
3548
  CASE (sem, INSN_BC) : /* bc $label9 */
3549
{
3550
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3551
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3552
#define FLD(f) abuf->fields.sfmt_brad.f
3553
  int UNUSED written = 0;
3554
  IADDR UNUSED pc = abuf->addr;
3555
  SEM_BRANCH_INIT
3556
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3557
 
3558
if (CPU (h_cbit)) {
3559
  {
3560
    USI opval = FLD (i_label9);
3561
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3562
    written |= (1 << 2);
3563
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3564
  }
3565
}
3566
 
3567
  abuf->written = written;
3568
  SEM_BRANCH_FINI (vpc);
3569
#undef FLD
3570
}
3571
  NEXT (vpc);
3572
 
3573
  CASE (sem, INSN_BNCD) : /* bnc:d $label9 */
3574
{
3575
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3576
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3577
#define FLD(f) abuf->fields.sfmt_brad.f
3578
  int UNUSED written = 0;
3579
  IADDR UNUSED pc = abuf->addr;
3580
  SEM_BRANCH_INIT
3581
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3582
 
3583
{
3584
if (NOTBI (CPU (h_cbit))) {
3585
  {
3586
    USI opval = FLD (i_label9);
3587
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3588
    written |= (1 << 2);
3589
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3590
  }
3591
}
3592
}
3593
 
3594
  abuf->written = written;
3595
  SEM_BRANCH_FINI (vpc);
3596
#undef FLD
3597
}
3598
  NEXT (vpc);
3599
 
3600
  CASE (sem, INSN_BNC) : /* bnc $label9 */
3601
{
3602
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3603
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3604
#define FLD(f) abuf->fields.sfmt_brad.f
3605
  int UNUSED written = 0;
3606
  IADDR UNUSED pc = abuf->addr;
3607
  SEM_BRANCH_INIT
3608
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3609
 
3610
if (NOTBI (CPU (h_cbit))) {
3611
  {
3612
    USI opval = FLD (i_label9);
3613
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3614
    written |= (1 << 2);
3615
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3616
  }
3617
}
3618
 
3619
  abuf->written = written;
3620
  SEM_BRANCH_FINI (vpc);
3621
#undef FLD
3622
}
3623
  NEXT (vpc);
3624
 
3625
  CASE (sem, INSN_BND) : /* bn:d $label9 */
3626
{
3627
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3628
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3629
#define FLD(f) abuf->fields.sfmt_brad.f
3630
  int UNUSED written = 0;
3631
  IADDR UNUSED pc = abuf->addr;
3632
  SEM_BRANCH_INIT
3633
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3634
 
3635
{
3636
if (CPU (h_nbit)) {
3637
  {
3638
    USI opval = FLD (i_label9);
3639
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3640
    written |= (1 << 2);
3641
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3642
  }
3643
}
3644
}
3645
 
3646
  abuf->written = written;
3647
  SEM_BRANCH_FINI (vpc);
3648
#undef FLD
3649
}
3650
  NEXT (vpc);
3651
 
3652
  CASE (sem, INSN_BN) : /* bn $label9 */
3653
{
3654
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3655
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3656
#define FLD(f) abuf->fields.sfmt_brad.f
3657
  int UNUSED written = 0;
3658
  IADDR UNUSED pc = abuf->addr;
3659
  SEM_BRANCH_INIT
3660
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3661
 
3662
if (CPU (h_nbit)) {
3663
  {
3664
    USI opval = FLD (i_label9);
3665
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3666
    written |= (1 << 2);
3667
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3668
  }
3669
}
3670
 
3671
  abuf->written = written;
3672
  SEM_BRANCH_FINI (vpc);
3673
#undef FLD
3674
}
3675
  NEXT (vpc);
3676
 
3677
  CASE (sem, INSN_BPD) : /* bp:d $label9 */
3678
{
3679
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3680
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3681
#define FLD(f) abuf->fields.sfmt_brad.f
3682
  int UNUSED written = 0;
3683
  IADDR UNUSED pc = abuf->addr;
3684
  SEM_BRANCH_INIT
3685
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3686
 
3687
{
3688
if (NOTBI (CPU (h_nbit))) {
3689
  {
3690
    USI opval = FLD (i_label9);
3691
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3692
    written |= (1 << 2);
3693
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3694
  }
3695
}
3696
}
3697
 
3698
  abuf->written = written;
3699
  SEM_BRANCH_FINI (vpc);
3700
#undef FLD
3701
}
3702
  NEXT (vpc);
3703
 
3704
  CASE (sem, INSN_BP) : /* bp $label9 */
3705
{
3706
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3707
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3708
#define FLD(f) abuf->fields.sfmt_brad.f
3709
  int UNUSED written = 0;
3710
  IADDR UNUSED pc = abuf->addr;
3711
  SEM_BRANCH_INIT
3712
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3713
 
3714
if (NOTBI (CPU (h_nbit))) {
3715
  {
3716
    USI opval = FLD (i_label9);
3717
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3718
    written |= (1 << 2);
3719
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3720
  }
3721
}
3722
 
3723
  abuf->written = written;
3724
  SEM_BRANCH_FINI (vpc);
3725
#undef FLD
3726
}
3727
  NEXT (vpc);
3728
 
3729
  CASE (sem, INSN_BVD) : /* bv:d $label9 */
3730
{
3731
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3732
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3733
#define FLD(f) abuf->fields.sfmt_brad.f
3734
  int UNUSED written = 0;
3735
  IADDR UNUSED pc = abuf->addr;
3736
  SEM_BRANCH_INIT
3737
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3738
 
3739
{
3740
if (CPU (h_vbit)) {
3741
  {
3742
    USI opval = FLD (i_label9);
3743
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3744
    written |= (1 << 2);
3745
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3746
  }
3747
}
3748
}
3749
 
3750
  abuf->written = written;
3751
  SEM_BRANCH_FINI (vpc);
3752
#undef FLD
3753
}
3754
  NEXT (vpc);
3755
 
3756
  CASE (sem, INSN_BV) : /* bv $label9 */
3757
{
3758
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3759
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3760
#define FLD(f) abuf->fields.sfmt_brad.f
3761
  int UNUSED written = 0;
3762
  IADDR UNUSED pc = abuf->addr;
3763
  SEM_BRANCH_INIT
3764
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3765
 
3766
if (CPU (h_vbit)) {
3767
  {
3768
    USI opval = FLD (i_label9);
3769
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3770
    written |= (1 << 2);
3771
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3772
  }
3773
}
3774
 
3775
  abuf->written = written;
3776
  SEM_BRANCH_FINI (vpc);
3777
#undef FLD
3778
}
3779
  NEXT (vpc);
3780
 
3781
  CASE (sem, INSN_BNVD) : /* bnv:d $label9 */
3782
{
3783
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3784
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3785
#define FLD(f) abuf->fields.sfmt_brad.f
3786
  int UNUSED written = 0;
3787
  IADDR UNUSED pc = abuf->addr;
3788
  SEM_BRANCH_INIT
3789
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3790
 
3791
{
3792
if (NOTBI (CPU (h_vbit))) {
3793
  {
3794
    USI opval = FLD (i_label9);
3795
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3796
    written |= (1 << 2);
3797
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3798
  }
3799
}
3800
}
3801
 
3802
  abuf->written = written;
3803
  SEM_BRANCH_FINI (vpc);
3804
#undef FLD
3805
}
3806
  NEXT (vpc);
3807
 
3808
  CASE (sem, INSN_BNV) : /* bnv $label9 */
3809
{
3810
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3811
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3812
#define FLD(f) abuf->fields.sfmt_brad.f
3813
  int UNUSED written = 0;
3814
  IADDR UNUSED pc = abuf->addr;
3815
  SEM_BRANCH_INIT
3816
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3817
 
3818
if (NOTBI (CPU (h_vbit))) {
3819
  {
3820
    USI opval = FLD (i_label9);
3821
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3822
    written |= (1 << 2);
3823
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3824
  }
3825
}
3826
 
3827
  abuf->written = written;
3828
  SEM_BRANCH_FINI (vpc);
3829
#undef FLD
3830
}
3831
  NEXT (vpc);
3832
 
3833
  CASE (sem, INSN_BLTD) : /* blt:d $label9 */
3834
{
3835
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3836
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3837
#define FLD(f) abuf->fields.sfmt_brad.f
3838
  int UNUSED written = 0;
3839
  IADDR UNUSED pc = abuf->addr;
3840
  SEM_BRANCH_INIT
3841
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3842
 
3843
{
3844
if (XORBI (CPU (h_vbit), CPU (h_nbit))) {
3845
  {
3846
    USI opval = FLD (i_label9);
3847
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3848
    written |= (1 << 3);
3849
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3850
  }
3851
}
3852
}
3853
 
3854
  abuf->written = written;
3855
  SEM_BRANCH_FINI (vpc);
3856
#undef FLD
3857
}
3858
  NEXT (vpc);
3859
 
3860
  CASE (sem, INSN_BLT) : /* blt $label9 */
3861
{
3862
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3863
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3864
#define FLD(f) abuf->fields.sfmt_brad.f
3865
  int UNUSED written = 0;
3866
  IADDR UNUSED pc = abuf->addr;
3867
  SEM_BRANCH_INIT
3868
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3869
 
3870
if (XORBI (CPU (h_vbit), CPU (h_nbit))) {
3871
  {
3872
    USI opval = FLD (i_label9);
3873
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3874
    written |= (1 << 3);
3875
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3876
  }
3877
}
3878
 
3879
  abuf->written = written;
3880
  SEM_BRANCH_FINI (vpc);
3881
#undef FLD
3882
}
3883
  NEXT (vpc);
3884
 
3885
  CASE (sem, INSN_BGED) : /* bge:d $label9 */
3886
{
3887
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3888
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3889
#define FLD(f) abuf->fields.sfmt_brad.f
3890
  int UNUSED written = 0;
3891
  IADDR UNUSED pc = abuf->addr;
3892
  SEM_BRANCH_INIT
3893
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3894
 
3895
{
3896
if (NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)))) {
3897
  {
3898
    USI opval = FLD (i_label9);
3899
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3900
    written |= (1 << 3);
3901
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3902
  }
3903
}
3904
}
3905
 
3906
  abuf->written = written;
3907
  SEM_BRANCH_FINI (vpc);
3908
#undef FLD
3909
}
3910
  NEXT (vpc);
3911
 
3912
  CASE (sem, INSN_BGE) : /* bge $label9 */
3913
{
3914
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3915
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3916
#define FLD(f) abuf->fields.sfmt_brad.f
3917
  int UNUSED written = 0;
3918
  IADDR UNUSED pc = abuf->addr;
3919
  SEM_BRANCH_INIT
3920
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3921
 
3922
if (NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)))) {
3923
  {
3924
    USI opval = FLD (i_label9);
3925
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3926
    written |= (1 << 3);
3927
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3928
  }
3929
}
3930
 
3931
  abuf->written = written;
3932
  SEM_BRANCH_FINI (vpc);
3933
#undef FLD
3934
}
3935
  NEXT (vpc);
3936
 
3937
  CASE (sem, INSN_BLED) : /* ble:d $label9 */
3938
{
3939
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3940
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3941
#define FLD(f) abuf->fields.sfmt_brad.f
3942
  int UNUSED written = 0;
3943
  IADDR UNUSED pc = abuf->addr;
3944
  SEM_BRANCH_INIT
3945
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3946
 
3947
{
3948
if (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit))) {
3949
  {
3950
    USI opval = FLD (i_label9);
3951
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3952
    written |= (1 << 4);
3953
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3954
  }
3955
}
3956
}
3957
 
3958
  abuf->written = written;
3959
  SEM_BRANCH_FINI (vpc);
3960
#undef FLD
3961
}
3962
  NEXT (vpc);
3963
 
3964
  CASE (sem, INSN_BLE) : /* ble $label9 */
3965
{
3966
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3967
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3968
#define FLD(f) abuf->fields.sfmt_brad.f
3969
  int UNUSED written = 0;
3970
  IADDR UNUSED pc = abuf->addr;
3971
  SEM_BRANCH_INIT
3972
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3973
 
3974
if (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit))) {
3975
  {
3976
    USI opval = FLD (i_label9);
3977
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3978
    written |= (1 << 4);
3979
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3980
  }
3981
}
3982
 
3983
  abuf->written = written;
3984
  SEM_BRANCH_FINI (vpc);
3985
#undef FLD
3986
}
3987
  NEXT (vpc);
3988
 
3989
  CASE (sem, INSN_BGTD) : /* bgt:d $label9 */
3990
{
3991
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3992
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3993
#define FLD(f) abuf->fields.sfmt_brad.f
3994
  int UNUSED written = 0;
3995
  IADDR UNUSED pc = abuf->addr;
3996
  SEM_BRANCH_INIT
3997
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3998
 
3999
{
4000
if (NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)))) {
4001
  {
4002
    USI opval = FLD (i_label9);
4003
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
4004
    written |= (1 << 4);
4005
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
4006
  }
4007
}
4008
}
4009
 
4010
  abuf->written = written;
4011
  SEM_BRANCH_FINI (vpc);
4012
#undef FLD
4013
}
4014
  NEXT (vpc);
4015
 
4016
  CASE (sem, INSN_BGT) : /* bgt $label9 */
4017
{
4018
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4019
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4020
#define FLD(f) abuf->fields.sfmt_brad.f
4021
  int UNUSED written = 0;
4022
  IADDR UNUSED pc = abuf->addr;
4023
  SEM_BRANCH_INIT
4024
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4025
 
4026
if (NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)))) {
4027
  {
4028
    USI opval = FLD (i_label9);
4029
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
4030
    written |= (1 << 4);
4031
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
4032
  }
4033
}
4034
 
4035
  abuf->written = written;
4036
  SEM_BRANCH_FINI (vpc);
4037
#undef FLD
4038
}
4039
  NEXT (vpc);
4040
 
4041
  CASE (sem, INSN_BLSD) : /* bls:d $label9 */
4042
{
4043
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4044
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4045
#define FLD(f) abuf->fields.sfmt_brad.f
4046
  int UNUSED written = 0;
4047
  IADDR UNUSED pc = abuf->addr;
4048
  SEM_BRANCH_INIT
4049
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4050
 
4051
{
4052
if (ORBI (CPU (h_cbit), CPU (h_zbit))) {
4053
  {
4054
    USI opval = FLD (i_label9);
4055
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
4056
    written |= (1 << 3);
4057
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
4058
  }
4059
}
4060
}
4061
 
4062
  abuf->written = written;
4063
  SEM_BRANCH_FINI (vpc);
4064
#undef FLD
4065
}
4066
  NEXT (vpc);
4067
 
4068
  CASE (sem, INSN_BLS) : /* bls $label9 */
4069
{
4070
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4071
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4072
#define FLD(f) abuf->fields.sfmt_brad.f
4073
  int UNUSED written = 0;
4074
  IADDR UNUSED pc = abuf->addr;
4075
  SEM_BRANCH_INIT
4076
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4077
 
4078
if (ORBI (CPU (h_cbit), CPU (h_zbit))) {
4079
  {
4080
    USI opval = FLD (i_label9);
4081
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
4082
    written |= (1 << 3);
4083
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
4084
  }
4085
}
4086
 
4087
  abuf->written = written;
4088
  SEM_BRANCH_FINI (vpc);
4089
#undef FLD
4090
}
4091
  NEXT (vpc);
4092
 
4093
  CASE (sem, INSN_BHID) : /* bhi:d $label9 */
4094
{
4095
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4096
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4097
#define FLD(f) abuf->fields.sfmt_brad.f
4098
  int UNUSED written = 0;
4099
  IADDR UNUSED pc = abuf->addr;
4100
  SEM_BRANCH_INIT
4101
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4102
 
4103
{
4104
if (NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)))) {
4105
  {
4106
    USI opval = FLD (i_label9);
4107
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
4108
    written |= (1 << 3);
4109
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
4110
  }
4111
}
4112
}
4113
 
4114
  abuf->written = written;
4115
  SEM_BRANCH_FINI (vpc);
4116
#undef FLD
4117
}
4118
  NEXT (vpc);
4119
 
4120
  CASE (sem, INSN_BHI) : /* bhi $label9 */
4121
{
4122
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4123
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4124
#define FLD(f) abuf->fields.sfmt_brad.f
4125
  int UNUSED written = 0;
4126
  IADDR UNUSED pc = abuf->addr;
4127
  SEM_BRANCH_INIT
4128
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4129
 
4130
if (NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)))) {
4131
  {
4132
    USI opval = FLD (i_label9);
4133
    SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
4134
    written |= (1 << 3);
4135
    TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
4136
  }
4137
}
4138
 
4139
  abuf->written = written;
4140
  SEM_BRANCH_FINI (vpc);
4141
#undef FLD
4142
}
4143
  NEXT (vpc);
4144
 
4145
  CASE (sem, INSN_DMOVR13) : /* dmov $R13,@$dir10 */
4146
{
4147
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4148
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4149
#define FLD(f) abuf->fields.sfmt_dmovr13pi.f
4150
  int UNUSED written = 0;
4151
  IADDR UNUSED pc = abuf->addr;
4152
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4153
 
4154
  {
4155
    SI opval = CPU (h_gr[((UINT) 13)]);
4156
    SETMEMSI (current_cpu, pc, FLD (f_dir10), opval);
4157
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4158
  }
4159
 
4160
#undef FLD
4161
}
4162
  NEXT (vpc);
4163
 
4164
  CASE (sem, INSN_DMOVR13H) : /* dmovh $R13,@$dir9 */
4165
{
4166
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4167
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4168
#define FLD(f) abuf->fields.sfmt_dmovr13pih.f
4169
  int UNUSED written = 0;
4170
  IADDR UNUSED pc = abuf->addr;
4171
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4172
 
4173
  {
4174
    HI opval = CPU (h_gr[((UINT) 13)]);
4175
    SETMEMHI (current_cpu, pc, FLD (f_dir9), opval);
4176
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4177
  }
4178
 
4179
#undef FLD
4180
}
4181
  NEXT (vpc);
4182
 
4183
  CASE (sem, INSN_DMOVR13B) : /* dmovb $R13,@$dir8 */
4184
{
4185
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4186
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4187
#define FLD(f) abuf->fields.sfmt_dmovr13pib.f
4188
  int UNUSED written = 0;
4189
  IADDR UNUSED pc = abuf->addr;
4190
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4191
 
4192
  {
4193
    QI opval = CPU (h_gr[((UINT) 13)]);
4194
    SETMEMQI (current_cpu, pc, FLD (f_dir8), opval);
4195
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4196
  }
4197
 
4198
#undef FLD
4199
}
4200
  NEXT (vpc);
4201
 
4202
  CASE (sem, INSN_DMOVR13PI) : /* dmov @$R13+,@$dir10 */
4203
{
4204
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4205
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4206
#define FLD(f) abuf->fields.sfmt_dmovr13pi.f
4207
  int UNUSED written = 0;
4208
  IADDR UNUSED pc = abuf->addr;
4209
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4210
 
4211
{
4212
  {
4213
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 13)]));
4214
    SETMEMSI (current_cpu, pc, FLD (f_dir10), opval);
4215
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4216
  }
4217
  {
4218
    SI opval = ADDSI (CPU (h_gr[((UINT) 13)]), 4);
4219
    CPU (h_gr[((UINT) 13)]) = opval;
4220
    TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4221
  }
4222
}
4223
 
4224
#undef FLD
4225
}
4226
  NEXT (vpc);
4227
 
4228
  CASE (sem, INSN_DMOVR13PIH) : /* dmovh @$R13+,@$dir9 */
4229
{
4230
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4231
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4232
#define FLD(f) abuf->fields.sfmt_dmovr13pih.f
4233
  int UNUSED written = 0;
4234
  IADDR UNUSED pc = abuf->addr;
4235
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4236
 
4237
{
4238
  {
4239
    HI opval = GETMEMHI (current_cpu, pc, CPU (h_gr[((UINT) 13)]));
4240
    SETMEMHI (current_cpu, pc, FLD (f_dir9), opval);
4241
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4242
  }
4243
  {
4244
    SI opval = ADDSI (CPU (h_gr[((UINT) 13)]), 2);
4245
    CPU (h_gr[((UINT) 13)]) = opval;
4246
    TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4247
  }
4248
}
4249
 
4250
#undef FLD
4251
}
4252
  NEXT (vpc);
4253
 
4254
  CASE (sem, INSN_DMOVR13PIB) : /* dmovb @$R13+,@$dir8 */
4255
{
4256
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4257
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4258
#define FLD(f) abuf->fields.sfmt_dmovr13pib.f
4259
  int UNUSED written = 0;
4260
  IADDR UNUSED pc = abuf->addr;
4261
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4262
 
4263
{
4264
  {
4265
    QI opval = GETMEMQI (current_cpu, pc, CPU (h_gr[((UINT) 13)]));
4266
    SETMEMQI (current_cpu, pc, FLD (f_dir8), opval);
4267
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4268
  }
4269
  {
4270
    SI opval = ADDSI (CPU (h_gr[((UINT) 13)]), 1);
4271
    CPU (h_gr[((UINT) 13)]) = opval;
4272
    TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4273
  }
4274
}
4275
 
4276
#undef FLD
4277
}
4278
  NEXT (vpc);
4279
 
4280
  CASE (sem, INSN_DMOVR15PI) : /* dmov @$R15+,@$dir10 */
4281
{
4282
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4283
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4284
#define FLD(f) abuf->fields.sfmt_dmovr15pi.f
4285
  int UNUSED written = 0;
4286
  IADDR UNUSED pc = abuf->addr;
4287
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4288
 
4289
{
4290
  {
4291
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4292
    SETMEMSI (current_cpu, pc, FLD (f_dir10), opval);
4293
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4294
  }
4295
  {
4296
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4297
    CPU (h_gr[((UINT) 15)]) = opval;
4298
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4299
  }
4300
}
4301
 
4302
#undef FLD
4303
}
4304
  NEXT (vpc);
4305
 
4306
  CASE (sem, INSN_DMOV2R13) : /* dmov @$dir10,$R13 */
4307
{
4308
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4309
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4310
#define FLD(f) abuf->fields.sfmt_dmovr13pi.f
4311
  int UNUSED written = 0;
4312
  IADDR UNUSED pc = abuf->addr;
4313
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4314
 
4315
  {
4316
    SI opval = GETMEMSI (current_cpu, pc, FLD (f_dir10));
4317
    CPU (h_gr[((UINT) 13)]) = opval;
4318
    TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4319
  }
4320
 
4321
#undef FLD
4322
}
4323
  NEXT (vpc);
4324
 
4325
  CASE (sem, INSN_DMOV2R13H) : /* dmovh @$dir9,$R13 */
4326
{
4327
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4328
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4329
#define FLD(f) abuf->fields.sfmt_dmovr13pih.f
4330
  int UNUSED written = 0;
4331
  IADDR UNUSED pc = abuf->addr;
4332
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4333
 
4334
  {
4335
    SI opval = GETMEMHI (current_cpu, pc, FLD (f_dir9));
4336
    CPU (h_gr[((UINT) 13)]) = opval;
4337
    TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4338
  }
4339
 
4340
#undef FLD
4341
}
4342
  NEXT (vpc);
4343
 
4344
  CASE (sem, INSN_DMOV2R13B) : /* dmovb @$dir8,$R13 */
4345
{
4346
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4347
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4348
#define FLD(f) abuf->fields.sfmt_dmovr13pib.f
4349
  int UNUSED written = 0;
4350
  IADDR UNUSED pc = abuf->addr;
4351
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4352
 
4353
  {
4354
    SI opval = GETMEMQI (current_cpu, pc, FLD (f_dir8));
4355
    CPU (h_gr[((UINT) 13)]) = opval;
4356
    TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4357
  }
4358
 
4359
#undef FLD
4360
}
4361
  NEXT (vpc);
4362
 
4363
  CASE (sem, INSN_DMOV2R13PI) : /* dmov @$dir10,@$R13+ */
4364
{
4365
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4366
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4367
#define FLD(f) abuf->fields.sfmt_dmovr13pi.f
4368
  int UNUSED written = 0;
4369
  IADDR UNUSED pc = abuf->addr;
4370
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4371
 
4372
{
4373
  {
4374
    SI opval = GETMEMSI (current_cpu, pc, FLD (f_dir10));
4375
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 13)]), opval);
4376
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4377
  }
4378
  {
4379
    SI opval = ADDSI (CPU (h_gr[((UINT) 13)]), 4);
4380
    CPU (h_gr[((UINT) 13)]) = opval;
4381
    TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4382
  }
4383
}
4384
 
4385
#undef FLD
4386
}
4387
  NEXT (vpc);
4388
 
4389
  CASE (sem, INSN_DMOV2R13PIH) : /* dmovh @$dir9,@$R13+ */
4390
{
4391
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4392
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4393
#define FLD(f) abuf->fields.sfmt_dmovr13pih.f
4394
  int UNUSED written = 0;
4395
  IADDR UNUSED pc = abuf->addr;
4396
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4397
 
4398
{
4399
  {
4400
    HI opval = GETMEMHI (current_cpu, pc, FLD (f_dir9));
4401
    SETMEMHI (current_cpu, pc, CPU (h_gr[((UINT) 13)]), opval);
4402
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4403
  }
4404
  {
4405
    SI opval = ADDSI (CPU (h_gr[((UINT) 13)]), 2);
4406
    CPU (h_gr[((UINT) 13)]) = opval;
4407
    TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4408
  }
4409
}
4410
 
4411
#undef FLD
4412
}
4413
  NEXT (vpc);
4414
 
4415
  CASE (sem, INSN_DMOV2R13PIB) : /* dmovb @$dir8,@$R13+ */
4416
{
4417
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4418
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4419
#define FLD(f) abuf->fields.sfmt_dmovr13pib.f
4420
  int UNUSED written = 0;
4421
  IADDR UNUSED pc = abuf->addr;
4422
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4423
 
4424
{
4425
  {
4426
    QI opval = GETMEMQI (current_cpu, pc, FLD (f_dir8));
4427
    SETMEMQI (current_cpu, pc, CPU (h_gr[((UINT) 13)]), opval);
4428
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4429
  }
4430
  {
4431
    SI opval = ADDSI (CPU (h_gr[((UINT) 13)]), 1);
4432
    CPU (h_gr[((UINT) 13)]) = opval;
4433
    TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4434
  }
4435
}
4436
 
4437
#undef FLD
4438
}
4439
  NEXT (vpc);
4440
 
4441
  CASE (sem, INSN_DMOV2R15PD) : /* dmov @$dir10,@-$R15 */
4442
{
4443
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4444
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4445
#define FLD(f) abuf->fields.sfmt_dmovr15pi.f
4446
  int UNUSED written = 0;
4447
  IADDR UNUSED pc = abuf->addr;
4448
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4449
 
4450
{
4451
  {
4452
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
4453
    CPU (h_gr[((UINT) 15)]) = opval;
4454
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4455
  }
4456
  {
4457
    SI opval = GETMEMSI (current_cpu, pc, FLD (f_dir10));
4458
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
4459
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4460
  }
4461
}
4462
 
4463
#undef FLD
4464
}
4465
  NEXT (vpc);
4466
 
4467
  CASE (sem, INSN_LDRES) : /* ldres @$Ri+,$u4 */
4468
{
4469
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4470
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4471
#define FLD(f) abuf->fields.sfmt_add2.f
4472
  int UNUSED written = 0;
4473
  IADDR UNUSED pc = abuf->addr;
4474
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4475
 
4476
  {
4477
    SI opval = ADDSI (* FLD (i_Ri), 4);
4478
    * FLD (i_Ri) = opval;
4479
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
4480
  }
4481
 
4482
#undef FLD
4483
}
4484
  NEXT (vpc);
4485
 
4486
  CASE (sem, INSN_STRES) : /* stres $u4,@$Ri+ */
4487
{
4488
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4489
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4490
#define FLD(f) abuf->fields.sfmt_add2.f
4491
  int UNUSED written = 0;
4492
  IADDR UNUSED pc = abuf->addr;
4493
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4494
 
4495
  {
4496
    SI opval = ADDSI (* FLD (i_Ri), 4);
4497
    * FLD (i_Ri) = opval;
4498
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
4499
  }
4500
 
4501
#undef FLD
4502
}
4503
  NEXT (vpc);
4504
 
4505
  CASE (sem, INSN_COPOP) : /* copop $u4c,$ccc,$CRj,$CRi */
4506
{
4507
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4508
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4509
#define FLD(f) abuf->fields.fmt_empty.f
4510
  int UNUSED written = 0;
4511
  IADDR UNUSED pc = abuf->addr;
4512
  vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4513
 
4514
((void) 0); /*nop*/
4515
 
4516
#undef FLD
4517
}
4518
  NEXT (vpc);
4519
 
4520
  CASE (sem, INSN_COPLD) : /* copld $u4c,$ccc,$Rjc,$CRi */
4521
{
4522
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4523
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4524
#define FLD(f) abuf->fields.fmt_empty.f
4525
  int UNUSED written = 0;
4526
  IADDR UNUSED pc = abuf->addr;
4527
  vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4528
 
4529
((void) 0); /*nop*/
4530
 
4531
#undef FLD
4532
}
4533
  NEXT (vpc);
4534
 
4535
  CASE (sem, INSN_COPST) : /* copst $u4c,$ccc,$CRj,$Ric */
4536
{
4537
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4538
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4539
#define FLD(f) abuf->fields.fmt_empty.f
4540
  int UNUSED written = 0;
4541
  IADDR UNUSED pc = abuf->addr;
4542
  vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4543
 
4544
((void) 0); /*nop*/
4545
 
4546
#undef FLD
4547
}
4548
  NEXT (vpc);
4549
 
4550
  CASE (sem, INSN_COPSV) : /* copsv $u4c,$ccc,$CRj,$Ric */
4551
{
4552
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4553
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4554
#define FLD(f) abuf->fields.fmt_empty.f
4555
  int UNUSED written = 0;
4556
  IADDR UNUSED pc = abuf->addr;
4557
  vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4558
 
4559
((void) 0); /*nop*/
4560
 
4561
#undef FLD
4562
}
4563
  NEXT (vpc);
4564
 
4565
  CASE (sem, INSN_NOP) : /* nop */
4566
{
4567
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4568
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4569
#define FLD(f) abuf->fields.fmt_empty.f
4570
  int UNUSED written = 0;
4571
  IADDR UNUSED pc = abuf->addr;
4572
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4573
 
4574
((void) 0); /*nop*/
4575
 
4576
#undef FLD
4577
}
4578
  NEXT (vpc);
4579
 
4580
  CASE (sem, INSN_ANDCCR) : /* andccr $u8 */
4581
{
4582
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4583
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4584
#define FLD(f) abuf->fields.sfmt_int.f
4585
  int UNUSED written = 0;
4586
  IADDR UNUSED pc = abuf->addr;
4587
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4588
 
4589
  {
4590
    UQI opval = ANDQI (GET_H_CCR (), FLD (f_u8));
4591
    SET_H_CCR (opval);
4592
    TRACE_RESULT (current_cpu, abuf, "ccr", 'x', opval);
4593
  }
4594
 
4595
#undef FLD
4596
}
4597
  NEXT (vpc);
4598
 
4599
  CASE (sem, INSN_ORCCR) : /* orccr $u8 */
4600
{
4601
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4602
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4603
#define FLD(f) abuf->fields.sfmt_int.f
4604
  int UNUSED written = 0;
4605
  IADDR UNUSED pc = abuf->addr;
4606
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4607
 
4608
  {
4609
    UQI opval = ORQI (GET_H_CCR (), FLD (f_u8));
4610
    SET_H_CCR (opval);
4611
    TRACE_RESULT (current_cpu, abuf, "ccr", 'x', opval);
4612
  }
4613
 
4614
#undef FLD
4615
}
4616
  NEXT (vpc);
4617
 
4618
  CASE (sem, INSN_STILM) : /* stilm $u8 */
4619
{
4620
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4621
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4622
#define FLD(f) abuf->fields.sfmt_int.f
4623
  int UNUSED written = 0;
4624
  IADDR UNUSED pc = abuf->addr;
4625
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4626
 
4627
  {
4628
    UQI opval = ANDSI (FLD (f_u8), 31);
4629
    SET_H_ILM (opval);
4630
    TRACE_RESULT (current_cpu, abuf, "ilm", 'x', opval);
4631
  }
4632
 
4633
#undef FLD
4634
}
4635
  NEXT (vpc);
4636
 
4637
  CASE (sem, INSN_ADDSP) : /* addsp $s10 */
4638
{
4639
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4640
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4641
#define FLD(f) abuf->fields.sfmt_addsp.f
4642
  int UNUSED written = 0;
4643
  IADDR UNUSED pc = abuf->addr;
4644
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4645
 
4646
  {
4647
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), FLD (f_s10));
4648
    CPU (h_gr[((UINT) 15)]) = opval;
4649
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4650
  }
4651
 
4652
#undef FLD
4653
}
4654
  NEXT (vpc);
4655
 
4656
  CASE (sem, INSN_EXTSB) : /* extsb $Ri */
4657
{
4658
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4659
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4660
#define FLD(f) abuf->fields.sfmt_add2.f
4661
  int UNUSED written = 0;
4662
  IADDR UNUSED pc = abuf->addr;
4663
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4664
 
4665
  {
4666
    SI opval = EXTQISI (ANDQI (* FLD (i_Ri), 255));
4667
    * FLD (i_Ri) = opval;
4668
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
4669
  }
4670
 
4671
#undef FLD
4672
}
4673
  NEXT (vpc);
4674
 
4675
  CASE (sem, INSN_EXTUB) : /* extub $Ri */
4676
{
4677
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4678
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4679
#define FLD(f) abuf->fields.sfmt_add2.f
4680
  int UNUSED written = 0;
4681
  IADDR UNUSED pc = abuf->addr;
4682
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4683
 
4684
  {
4685
    SI opval = ZEXTQISI (ANDQI (* FLD (i_Ri), 255));
4686
    * FLD (i_Ri) = opval;
4687
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
4688
  }
4689
 
4690
#undef FLD
4691
}
4692
  NEXT (vpc);
4693
 
4694
  CASE (sem, INSN_EXTSH) : /* extsh $Ri */
4695
{
4696
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4697
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4698
#define FLD(f) abuf->fields.sfmt_add2.f
4699
  int UNUSED written = 0;
4700
  IADDR UNUSED pc = abuf->addr;
4701
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4702
 
4703
  {
4704
    SI opval = EXTHISI (ANDHI (* FLD (i_Ri), 65535));
4705
    * FLD (i_Ri) = opval;
4706
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
4707
  }
4708
 
4709
#undef FLD
4710
}
4711
  NEXT (vpc);
4712
 
4713
  CASE (sem, INSN_EXTUH) : /* extuh $Ri */
4714
{
4715
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4716
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4717
#define FLD(f) abuf->fields.sfmt_add2.f
4718
  int UNUSED written = 0;
4719
  IADDR UNUSED pc = abuf->addr;
4720
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4721
 
4722
  {
4723
    SI opval = ZEXTHISI (ANDHI (* FLD (i_Ri), 65535));
4724
    * FLD (i_Ri) = opval;
4725
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
4726
  }
4727
 
4728
#undef FLD
4729
}
4730
  NEXT (vpc);
4731
 
4732
  CASE (sem, INSN_LDM0) : /* ldm0 ($reglist_low_ld) */
4733
{
4734
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4735
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4736
#define FLD(f) abuf->fields.sfmt_ldm0.f
4737
  int UNUSED written = 0;
4738
  IADDR UNUSED pc = abuf->addr;
4739
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4740
 
4741
{
4742
if (ANDSI (FLD (f_reglist_low_ld), 1)) {
4743
{
4744
  {
4745
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4746
    CPU (h_gr[((UINT) 0)]) = opval;
4747
    written |= (1 << 3);
4748
    TRACE_RESULT (current_cpu, abuf, "gr-0", 'x', opval);
4749
  }
4750
  {
4751
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4752
    CPU (h_gr[((UINT) 15)]) = opval;
4753
    written |= (1 << 5);
4754
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4755
  }
4756
}
4757
}
4758
if (ANDSI (FLD (f_reglist_low_ld), 2)) {
4759
{
4760
  {
4761
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4762
    CPU (h_gr[((UINT) 1)]) = opval;
4763
    written |= (1 << 4);
4764
    TRACE_RESULT (current_cpu, abuf, "gr-1", 'x', opval);
4765
  }
4766
  {
4767
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4768
    CPU (h_gr[((UINT) 15)]) = opval;
4769
    written |= (1 << 5);
4770
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4771
  }
4772
}
4773
}
4774
if (ANDSI (FLD (f_reglist_low_ld), 4)) {
4775
{
4776
  {
4777
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4778
    CPU (h_gr[((UINT) 2)]) = opval;
4779
    written |= (1 << 6);
4780
    TRACE_RESULT (current_cpu, abuf, "gr-2", 'x', opval);
4781
  }
4782
  {
4783
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4784
    CPU (h_gr[((UINT) 15)]) = opval;
4785
    written |= (1 << 5);
4786
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4787
  }
4788
}
4789
}
4790
if (ANDSI (FLD (f_reglist_low_ld), 8)) {
4791
{
4792
  {
4793
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4794
    CPU (h_gr[((UINT) 3)]) = opval;
4795
    written |= (1 << 7);
4796
    TRACE_RESULT (current_cpu, abuf, "gr-3", 'x', opval);
4797
  }
4798
  {
4799
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4800
    CPU (h_gr[((UINT) 15)]) = opval;
4801
    written |= (1 << 5);
4802
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4803
  }
4804
}
4805
}
4806
if (ANDSI (FLD (f_reglist_low_ld), 16)) {
4807
{
4808
  {
4809
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4810
    CPU (h_gr[((UINT) 4)]) = opval;
4811
    written |= (1 << 8);
4812
    TRACE_RESULT (current_cpu, abuf, "gr-4", 'x', opval);
4813
  }
4814
  {
4815
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4816
    CPU (h_gr[((UINT) 15)]) = opval;
4817
    written |= (1 << 5);
4818
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4819
  }
4820
}
4821
}
4822
if (ANDSI (FLD (f_reglist_low_ld), 32)) {
4823
{
4824
  {
4825
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4826
    CPU (h_gr[((UINT) 5)]) = opval;
4827
    written |= (1 << 9);
4828
    TRACE_RESULT (current_cpu, abuf, "gr-5", 'x', opval);
4829
  }
4830
  {
4831
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4832
    CPU (h_gr[((UINT) 15)]) = opval;
4833
    written |= (1 << 5);
4834
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4835
  }
4836
}
4837
}
4838
if (ANDSI (FLD (f_reglist_low_ld), 64)) {
4839
{
4840
  {
4841
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4842
    CPU (h_gr[((UINT) 6)]) = opval;
4843
    written |= (1 << 10);
4844
    TRACE_RESULT (current_cpu, abuf, "gr-6", 'x', opval);
4845
  }
4846
  {
4847
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4848
    CPU (h_gr[((UINT) 15)]) = opval;
4849
    written |= (1 << 5);
4850
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4851
  }
4852
}
4853
}
4854
if (ANDSI (FLD (f_reglist_low_ld), 128)) {
4855
{
4856
  {
4857
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4858
    CPU (h_gr[((UINT) 7)]) = opval;
4859
    written |= (1 << 11);
4860
    TRACE_RESULT (current_cpu, abuf, "gr-7", 'x', opval);
4861
  }
4862
  {
4863
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4864
    CPU (h_gr[((UINT) 15)]) = opval;
4865
    written |= (1 << 5);
4866
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4867
  }
4868
}
4869
}
4870
}
4871
 
4872
  abuf->written = written;
4873
#undef FLD
4874
}
4875
  NEXT (vpc);
4876
 
4877
  CASE (sem, INSN_LDM1) : /* ldm1 ($reglist_hi_ld) */
4878
{
4879
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4880
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4881
#define FLD(f) abuf->fields.sfmt_ldm1.f
4882
  int UNUSED written = 0;
4883
  IADDR UNUSED pc = abuf->addr;
4884
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4885
 
4886
{
4887
if (ANDSI (FLD (f_reglist_hi_ld), 1)) {
4888
{
4889
  {
4890
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4891
    CPU (h_gr[((UINT) 8)]) = opval;
4892
    written |= (1 << 9);
4893
    TRACE_RESULT (current_cpu, abuf, "gr-8", 'x', opval);
4894
  }
4895
  {
4896
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4897
    CPU (h_gr[((UINT) 15)]) = opval;
4898
    written |= (1 << 8);
4899
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4900
  }
4901
}
4902
}
4903
if (ANDSI (FLD (f_reglist_hi_ld), 2)) {
4904
{
4905
  {
4906
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4907
    CPU (h_gr[((UINT) 9)]) = opval;
4908
    written |= (1 << 10);
4909
    TRACE_RESULT (current_cpu, abuf, "gr-9", 'x', opval);
4910
  }
4911
  {
4912
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4913
    CPU (h_gr[((UINT) 15)]) = opval;
4914
    written |= (1 << 8);
4915
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4916
  }
4917
}
4918
}
4919
if (ANDSI (FLD (f_reglist_hi_ld), 4)) {
4920
{
4921
  {
4922
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4923
    CPU (h_gr[((UINT) 10)]) = opval;
4924
    written |= (1 << 3);
4925
    TRACE_RESULT (current_cpu, abuf, "gr-10", 'x', opval);
4926
  }
4927
  {
4928
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4929
    CPU (h_gr[((UINT) 15)]) = opval;
4930
    written |= (1 << 8);
4931
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4932
  }
4933
}
4934
}
4935
if (ANDSI (FLD (f_reglist_hi_ld), 8)) {
4936
{
4937
  {
4938
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4939
    CPU (h_gr[((UINT) 11)]) = opval;
4940
    written |= (1 << 4);
4941
    TRACE_RESULT (current_cpu, abuf, "gr-11", 'x', opval);
4942
  }
4943
  {
4944
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4945
    CPU (h_gr[((UINT) 15)]) = opval;
4946
    written |= (1 << 8);
4947
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4948
  }
4949
}
4950
}
4951
if (ANDSI (FLD (f_reglist_hi_ld), 16)) {
4952
{
4953
  {
4954
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4955
    CPU (h_gr[((UINT) 12)]) = opval;
4956
    written |= (1 << 5);
4957
    TRACE_RESULT (current_cpu, abuf, "gr-12", 'x', opval);
4958
  }
4959
  {
4960
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4961
    CPU (h_gr[((UINT) 15)]) = opval;
4962
    written |= (1 << 8);
4963
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4964
  }
4965
}
4966
}
4967
if (ANDSI (FLD (f_reglist_hi_ld), 32)) {
4968
{
4969
  {
4970
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4971
    CPU (h_gr[((UINT) 13)]) = opval;
4972
    written |= (1 << 6);
4973
    TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4974
  }
4975
  {
4976
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4977
    CPU (h_gr[((UINT) 15)]) = opval;
4978
    written |= (1 << 8);
4979
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4980
  }
4981
}
4982
}
4983
if (ANDSI (FLD (f_reglist_hi_ld), 64)) {
4984
{
4985
  {
4986
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4987
    CPU (h_gr[((UINT) 14)]) = opval;
4988
    written |= (1 << 7);
4989
    TRACE_RESULT (current_cpu, abuf, "gr-14", 'x', opval);
4990
  }
4991
  {
4992
    SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4993
    CPU (h_gr[((UINT) 15)]) = opval;
4994
    written |= (1 << 8);
4995
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4996
  }
4997
}
4998
}
4999
if (ANDSI (FLD (f_reglist_hi_ld), 128)) {
5000
  {
5001
    SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
5002
    CPU (h_gr[((UINT) 15)]) = opval;
5003
    written |= (1 << 8);
5004
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5005
  }
5006
}
5007
}
5008
 
5009
  abuf->written = written;
5010
#undef FLD
5011
}
5012
  NEXT (vpc);
5013
 
5014
  CASE (sem, INSN_STM0) : /* stm0 ($reglist_low_st) */
5015
{
5016
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5017
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5018
#define FLD(f) abuf->fields.sfmt_stm0.f
5019
  int UNUSED written = 0;
5020
  IADDR UNUSED pc = abuf->addr;
5021
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5022
 
5023
{
5024
if (ANDSI (FLD (f_reglist_low_st), 1)) {
5025
{
5026
  {
5027
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5028
    CPU (h_gr[((UINT) 15)]) = opval;
5029
    written |= (1 << 10);
5030
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5031
  }
5032
  {
5033
    SI opval = CPU (h_gr[((UINT) 7)]);
5034
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5035
    written |= (1 << 11);
5036
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5037
  }
5038
}
5039
}
5040
if (ANDSI (FLD (f_reglist_low_st), 2)) {
5041
{
5042
  {
5043
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5044
    CPU (h_gr[((UINT) 15)]) = opval;
5045
    written |= (1 << 10);
5046
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5047
  }
5048
  {
5049
    SI opval = CPU (h_gr[((UINT) 6)]);
5050
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5051
    written |= (1 << 11);
5052
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5053
  }
5054
}
5055
}
5056
if (ANDSI (FLD (f_reglist_low_st), 4)) {
5057
{
5058
  {
5059
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5060
    CPU (h_gr[((UINT) 15)]) = opval;
5061
    written |= (1 << 10);
5062
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5063
  }
5064
  {
5065
    SI opval = CPU (h_gr[((UINT) 5)]);
5066
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5067
    written |= (1 << 11);
5068
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5069
  }
5070
}
5071
}
5072
if (ANDSI (FLD (f_reglist_low_st), 8)) {
5073
{
5074
  {
5075
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5076
    CPU (h_gr[((UINT) 15)]) = opval;
5077
    written |= (1 << 10);
5078
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5079
  }
5080
  {
5081
    SI opval = CPU (h_gr[((UINT) 4)]);
5082
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5083
    written |= (1 << 11);
5084
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5085
  }
5086
}
5087
}
5088
if (ANDSI (FLD (f_reglist_low_st), 16)) {
5089
{
5090
  {
5091
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5092
    CPU (h_gr[((UINT) 15)]) = opval;
5093
    written |= (1 << 10);
5094
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5095
  }
5096
  {
5097
    SI opval = CPU (h_gr[((UINT) 3)]);
5098
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5099
    written |= (1 << 11);
5100
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5101
  }
5102
}
5103
}
5104
if (ANDSI (FLD (f_reglist_low_st), 32)) {
5105
{
5106
  {
5107
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5108
    CPU (h_gr[((UINT) 15)]) = opval;
5109
    written |= (1 << 10);
5110
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5111
  }
5112
  {
5113
    SI opval = CPU (h_gr[((UINT) 2)]);
5114
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5115
    written |= (1 << 11);
5116
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5117
  }
5118
}
5119
}
5120
if (ANDSI (FLD (f_reglist_low_st), 64)) {
5121
{
5122
  {
5123
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5124
    CPU (h_gr[((UINT) 15)]) = opval;
5125
    written |= (1 << 10);
5126
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5127
  }
5128
  {
5129
    SI opval = CPU (h_gr[((UINT) 1)]);
5130
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5131
    written |= (1 << 11);
5132
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5133
  }
5134
}
5135
}
5136
if (ANDSI (FLD (f_reglist_low_st), 128)) {
5137
{
5138
  {
5139
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5140
    CPU (h_gr[((UINT) 15)]) = opval;
5141
    written |= (1 << 10);
5142
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5143
  }
5144
  {
5145
    SI opval = CPU (h_gr[((UINT) 0)]);
5146
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5147
    written |= (1 << 11);
5148
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5149
  }
5150
}
5151
}
5152
}
5153
 
5154
  abuf->written = written;
5155
#undef FLD
5156
}
5157
  NEXT (vpc);
5158
 
5159
  CASE (sem, INSN_STM1) : /* stm1 ($reglist_hi_st) */
5160
{
5161
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5162
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5163
#define FLD(f) abuf->fields.sfmt_stm1.f
5164
  int UNUSED written = 0;
5165
  IADDR UNUSED pc = abuf->addr;
5166
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5167
 
5168
{
5169
if (ANDSI (FLD (f_reglist_hi_st), 1)) {
5170
{
5171
  SI tmp_save_r15;
5172
  tmp_save_r15 = CPU (h_gr[((UINT) 15)]);
5173
  {
5174
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5175
    CPU (h_gr[((UINT) 15)]) = opval;
5176
    written |= (1 << 9);
5177
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5178
  }
5179
  {
5180
    SI opval = tmp_save_r15;
5181
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5182
    written |= (1 << 10);
5183
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5184
  }
5185
}
5186
}
5187
if (ANDSI (FLD (f_reglist_hi_st), 2)) {
5188
{
5189
  {
5190
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5191
    CPU (h_gr[((UINT) 15)]) = opval;
5192
    written |= (1 << 9);
5193
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5194
  }
5195
  {
5196
    SI opval = CPU (h_gr[((UINT) 14)]);
5197
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5198
    written |= (1 << 10);
5199
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5200
  }
5201
}
5202
}
5203
if (ANDSI (FLD (f_reglist_hi_st), 4)) {
5204
{
5205
  {
5206
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5207
    CPU (h_gr[((UINT) 15)]) = opval;
5208
    written |= (1 << 9);
5209
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5210
  }
5211
  {
5212
    SI opval = CPU (h_gr[((UINT) 13)]);
5213
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5214
    written |= (1 << 10);
5215
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5216
  }
5217
}
5218
}
5219
if (ANDSI (FLD (f_reglist_hi_st), 8)) {
5220
{
5221
  {
5222
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5223
    CPU (h_gr[((UINT) 15)]) = opval;
5224
    written |= (1 << 9);
5225
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5226
  }
5227
  {
5228
    SI opval = CPU (h_gr[((UINT) 12)]);
5229
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5230
    written |= (1 << 10);
5231
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5232
  }
5233
}
5234
}
5235
if (ANDSI (FLD (f_reglist_hi_st), 16)) {
5236
{
5237
  {
5238
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5239
    CPU (h_gr[((UINT) 15)]) = opval;
5240
    written |= (1 << 9);
5241
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5242
  }
5243
  {
5244
    SI opval = CPU (h_gr[((UINT) 11)]);
5245
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5246
    written |= (1 << 10);
5247
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5248
  }
5249
}
5250
}
5251
if (ANDSI (FLD (f_reglist_hi_st), 32)) {
5252
{
5253
  {
5254
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5255
    CPU (h_gr[((UINT) 15)]) = opval;
5256
    written |= (1 << 9);
5257
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5258
  }
5259
  {
5260
    SI opval = CPU (h_gr[((UINT) 10)]);
5261
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5262
    written |= (1 << 10);
5263
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5264
  }
5265
}
5266
}
5267
if (ANDSI (FLD (f_reglist_hi_st), 64)) {
5268
{
5269
  {
5270
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5271
    CPU (h_gr[((UINT) 15)]) = opval;
5272
    written |= (1 << 9);
5273
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5274
  }
5275
  {
5276
    SI opval = CPU (h_gr[((UINT) 9)]);
5277
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5278
    written |= (1 << 10);
5279
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5280
  }
5281
}
5282
}
5283
if (ANDSI (FLD (f_reglist_hi_st), 128)) {
5284
{
5285
  {
5286
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5287
    CPU (h_gr[((UINT) 15)]) = opval;
5288
    written |= (1 << 9);
5289
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5290
  }
5291
  {
5292
    SI opval = CPU (h_gr[((UINT) 8)]);
5293
    SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5294
    written |= (1 << 10);
5295
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5296
  }
5297
}
5298
}
5299
}
5300
 
5301
  abuf->written = written;
5302
#undef FLD
5303
}
5304
  NEXT (vpc);
5305
 
5306
  CASE (sem, INSN_ENTER) : /* enter $u10 */
5307
{
5308
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5309
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5310
#define FLD(f) abuf->fields.sfmt_enter.f
5311
  int UNUSED written = 0;
5312
  IADDR UNUSED pc = abuf->addr;
5313
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5314
 
5315
{
5316
  SI tmp_tmp;
5317
  tmp_tmp = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5318
  {
5319
    SI opval = CPU (h_gr[((UINT) 14)]);
5320
    SETMEMSI (current_cpu, pc, tmp_tmp, opval);
5321
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5322
  }
5323
  {
5324
    SI opval = tmp_tmp;
5325
    CPU (h_gr[((UINT) 14)]) = opval;
5326
    TRACE_RESULT (current_cpu, abuf, "gr-14", 'x', opval);
5327
  }
5328
  {
5329
    SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), FLD (f_u10));
5330
    CPU (h_gr[((UINT) 15)]) = opval;
5331
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5332
  }
5333
}
5334
 
5335
#undef FLD
5336
}
5337
  NEXT (vpc);
5338
 
5339
  CASE (sem, INSN_LEAVE) : /* leave */
5340
{
5341
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5342
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5343
#define FLD(f) abuf->fields.sfmt_enter.f
5344
  int UNUSED written = 0;
5345
  IADDR UNUSED pc = abuf->addr;
5346
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5347
 
5348
{
5349
  {
5350
    SI opval = ADDSI (CPU (h_gr[((UINT) 14)]), 4);
5351
    CPU (h_gr[((UINT) 15)]) = opval;
5352
    TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5353
  }
5354
  {
5355
    SI opval = GETMEMSI (current_cpu, pc, SUBSI (CPU (h_gr[((UINT) 15)]), 4));
5356
    CPU (h_gr[((UINT) 14)]) = opval;
5357
    TRACE_RESULT (current_cpu, abuf, "gr-14", 'x', opval);
5358
  }
5359
}
5360
 
5361
#undef FLD
5362
}
5363
  NEXT (vpc);
5364
 
5365
  CASE (sem, INSN_XCHB) : /* xchb @$Rj,$Ri */
5366
{
5367
  SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5368
  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5369
#define FLD(f) abuf->fields.sfmt_add.f
5370
  int UNUSED written = 0;
5371
  IADDR UNUSED pc = abuf->addr;
5372
  vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5373
 
5374
{
5375
  SI tmp_tmp;
5376
  tmp_tmp = * FLD (i_Ri);
5377
  {
5378
    SI opval = GETMEMUQI (current_cpu, pc, * FLD (i_Rj));
5379
    * FLD (i_Ri) = opval;
5380
    TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
5381
  }
5382
  {
5383
    UQI opval = tmp_tmp;
5384
    SETMEMUQI (current_cpu, pc, * FLD (i_Rj), opval);
5385
    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5386
  }
5387
}
5388
 
5389
#undef FLD
5390
}
5391
  NEXT (vpc);
5392
 
5393
 
5394
    }
5395
  ENDSWITCH (sem) /* End of semantic switch.  */
5396
 
5397
  /* At this point `vpc' contains the next insn to execute.  */
5398
}
5399
 
5400
#undef DEFINE_SWITCH
5401
#endif /* DEFINE_SWITCH */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.