1 /* Simulator instruction semantics for fr30bf.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
7 This file is part of the GNU Simulators.
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)
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.
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.
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. */
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
},
210 for (i
= 0; labels
[i
].label
!= 0; ++i
)
213 CPU_IDESC (current_cpu
) [labels
[i
].index
].sem_fast_lab
= labels
[i
].label
;
215 CPU_IDESC (current_cpu
) [labels
[i
].index
].sem_full_lab
= labels
[i
].label
;
220 #endif /* DEFINE_LABELS */
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". */
232 #define TRACE_RESULT(cpu, abuf, name, type, val)
236 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
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
)
246 #else /* ! WITH_SCACHE_PBB */
248 #define NEXT(vpc) BREAK (sem)
251 SWITCH (sem
, SEM_ARGBUF (sc
) -> idesc
->sem_fast_lab
)
253 SWITCH (sem
, SEM_ARGBUF (sc
) -> idesc
->sem_full_lab
)
256 SWITCH (sem
, SEM_ARGBUF (sc
) -> idesc
->num
)
259 #endif /* ! WITH_SCACHE_PBB */
263 CASE (sem
, INSN_X_INVALID
) : /* --invalid-- */
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);
273 /* Update the recorded pc in the cpu state struct.
274 Only necessary for WITH_SCACHE case, but to avoid the
275 conditional compilation .... */
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
);
288 CASE (sem
, INSN_X_AFTER
) : /* --after-- */
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);
298 #if WITH_SCACHE_PBB_FR30BF
299 fr30bf_pbb_after (current_cpu
, sem_arg
);
307 CASE (sem
, INSN_X_BEFORE
) : /* --before-- */
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);
317 #if WITH_SCACHE_PBB_FR30BF
318 fr30bf_pbb_before (current_cpu
, sem_arg
);
326 CASE (sem
, INSN_X_CTI_CHAIN
) : /* --cti-chain-- */
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);
336 #if WITH_SCACHE_PBB_FR30BF
338 vpc
= fr30bf_pbb_cti_chain (current_cpu
, sem_arg
,
339 pbb_br_type
, pbb_br_npc
);
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
));
354 CASE (sem
, INSN_X_CHAIN
) : /* --chain-- */
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);
364 #if WITH_SCACHE_PBB_FR30BF
365 vpc
= fr30bf_pbb_chain (current_cpu
, sem_arg
);
376 CASE (sem
, INSN_X_BEGIN
) : /* --begin-- */
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);
386 #if WITH_SCACHE_PBB_FR30BF
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
);
392 vpc
= fr30bf_pbb_begin (current_cpu
, STATE_RUN_FAST_P (CPU_STATE (current_cpu
)));
401 CASE (sem
, INSN_ADD
) : /* add $Rj,$Ri */
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);
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
);
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
);
422 SI opval
= ADDSI (* FLD (i_Ri
), * FLD (i_Rj
));
423 * FLD (i_Ri
) = opval
;
424 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
428 BI opval
= EQSI (* FLD (i_Ri
), 0);
429 CPU (h_zbit
) = opval
;
430 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
433 BI opval
= LTSI (* FLD (i_Ri
), 0);
434 CPU (h_nbit
) = opval
;
435 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
444 CASE (sem
, INSN_ADDI
) : /* add $u4,$Ri */
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);
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
);
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
);
465 SI opval
= ADDSI (* FLD (i_Ri
), FLD (f_u4
));
466 * FLD (i_Ri
) = opval
;
467 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
471 BI opval
= EQSI (* FLD (i_Ri
), 0);
472 CPU (h_zbit
) = opval
;
473 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
476 BI opval
= LTSI (* FLD (i_Ri
), 0);
477 CPU (h_nbit
) = opval
;
478 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
487 CASE (sem
, INSN_ADD2
) : /* add2 $m4,$Ri */
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);
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
);
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
);
508 SI opval
= ADDSI (* FLD (i_Ri
), FLD (f_m4
));
509 * FLD (i_Ri
) = opval
;
510 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
514 BI opval
= EQSI (* FLD (i_Ri
), 0);
515 CPU (h_zbit
) = opval
;
516 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
519 BI opval
= LTSI (* FLD (i_Ri
), 0);
520 CPU (h_nbit
) = opval
;
521 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
530 CASE (sem
, INSN_ADDC
) : /* addc $Rj,$Ri */
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);
541 tmp_tmp
= ADDCSI (* FLD (i_Ri
), * FLD (i_Rj
), CPU (h_cbit
));
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
);
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
);
554 * FLD (i_Ri
) = opval
;
555 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
559 BI opval
= EQSI (* FLD (i_Ri
), 0);
560 CPU (h_zbit
) = opval
;
561 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
564 BI opval
= LTSI (* FLD (i_Ri
), 0);
565 CPU (h_nbit
) = opval
;
566 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
575 CASE (sem
, INSN_ADDN
) : /* addn $Rj,$Ri */
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);
585 SI opval
= ADDSI (* FLD (i_Ri
), * FLD (i_Rj
));
586 * FLD (i_Ri
) = opval
;
587 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
594 CASE (sem
, INSN_ADDNI
) : /* addn $u4,$Ri */
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);
604 SI opval
= ADDSI (* FLD (i_Ri
), FLD (f_u4
));
605 * FLD (i_Ri
) = opval
;
606 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
613 CASE (sem
, INSN_ADDN2
) : /* addn2 $m4,$Ri */
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);
623 SI opval
= ADDSI (* FLD (i_Ri
), FLD (f_m4
));
624 * FLD (i_Ri
) = opval
;
625 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
632 CASE (sem
, INSN_SUB
) : /* sub $Rj,$Ri */
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);
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
);
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
);
653 SI opval
= SUBSI (* FLD (i_Ri
), * FLD (i_Rj
));
654 * FLD (i_Ri
) = opval
;
655 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
659 BI opval
= EQSI (* FLD (i_Ri
), 0);
660 CPU (h_zbit
) = opval
;
661 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
664 BI opval
= LTSI (* FLD (i_Ri
), 0);
665 CPU (h_nbit
) = opval
;
666 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
675 CASE (sem
, INSN_SUBC
) : /* subc $Rj,$Ri */
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);
686 tmp_tmp
= SUBCSI (* FLD (i_Ri
), * FLD (i_Rj
), CPU (h_cbit
));
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
);
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
);
699 * FLD (i_Ri
) = opval
;
700 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
704 BI opval
= EQSI (* FLD (i_Ri
), 0);
705 CPU (h_zbit
) = opval
;
706 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
709 BI opval
= LTSI (* FLD (i_Ri
), 0);
710 CPU (h_nbit
) = opval
;
711 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
720 CASE (sem
, INSN_SUBN
) : /* subn $Rj,$Ri */
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);
730 SI opval
= SUBSI (* FLD (i_Ri
), * FLD (i_Rj
));
731 * FLD (i_Ri
) = opval
;
732 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
739 CASE (sem
, INSN_CMP
) : /* cmp $Rj,$Ri */
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);
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
);
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
);
760 tmp_tmp1
= SUBSI (* FLD (i_Ri
), * FLD (i_Rj
));
763 BI opval
= EQSI (tmp_tmp1
, 0);
764 CPU (h_zbit
) = opval
;
765 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
768 BI opval
= LTSI (tmp_tmp1
, 0);
769 CPU (h_nbit
) = opval
;
770 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
779 CASE (sem
, INSN_CMPI
) : /* cmp $u4,$Ri */
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);
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
);
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
);
800 tmp_tmp1
= SUBSI (* FLD (i_Ri
), FLD (f_u4
));
803 BI opval
= EQSI (tmp_tmp1
, 0);
804 CPU (h_zbit
) = opval
;
805 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
808 BI opval
= LTSI (tmp_tmp1
, 0);
809 CPU (h_nbit
) = opval
;
810 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
819 CASE (sem
, INSN_CMP2
) : /* cmp2 $m4,$Ri */
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);
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
);
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
);
840 tmp_tmp1
= SUBSI (* FLD (i_Ri
), FLD (f_m4
));
843 BI opval
= EQSI (tmp_tmp1
, 0);
844 CPU (h_zbit
) = opval
;
845 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
848 BI opval
= LTSI (tmp_tmp1
, 0);
849 CPU (h_nbit
) = opval
;
850 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
859 CASE (sem
, INSN_AND
) : /* and $Rj,$Ri */
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);
870 SI opval
= ANDSI (* FLD (i_Ri
), * FLD (i_Rj
));
871 * FLD (i_Ri
) = opval
;
872 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
876 BI opval
= EQSI (* FLD (i_Ri
), 0);
877 CPU (h_zbit
) = opval
;
878 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
881 BI opval
= LTSI (* FLD (i_Ri
), 0);
882 CPU (h_nbit
) = opval
;
883 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
892 CASE (sem
, INSN_OR
) : /* or $Rj,$Ri */
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);
903 SI opval
= ORSI (* FLD (i_Ri
), * FLD (i_Rj
));
904 * FLD (i_Ri
) = opval
;
905 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
909 BI opval
= EQSI (* FLD (i_Ri
), 0);
910 CPU (h_zbit
) = opval
;
911 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
914 BI opval
= LTSI (* FLD (i_Ri
), 0);
915 CPU (h_nbit
) = opval
;
916 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
925 CASE (sem
, INSN_EOR
) : /* eor $Rj,$Ri */
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);
936 SI opval
= XORSI (* FLD (i_Ri
), * FLD (i_Rj
));
937 * FLD (i_Ri
) = opval
;
938 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
942 BI opval
= EQSI (* FLD (i_Ri
), 0);
943 CPU (h_zbit
) = opval
;
944 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
947 BI opval
= LTSI (* FLD (i_Ri
), 0);
948 CPU (h_nbit
) = opval
;
949 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
958 CASE (sem
, INSN_ANDM
) : /* and $Rj,@$Ri */
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);
969 tmp_tmp
= ANDSI (GETMEMSI (current_cpu
, pc
, * FLD (i_Ri
)), * FLD (i_Rj
));
972 BI opval
= EQSI (tmp_tmp
, 0);
973 CPU (h_zbit
) = opval
;
974 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
977 BI opval
= LTSI (tmp_tmp
, 0);
978 CPU (h_nbit
) = opval
;
979 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
984 SETMEMSI (current_cpu
, pc
, * FLD (i_Ri
), opval
);
985 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
993 CASE (sem
, INSN_ANDH
) : /* andh $Rj,@$Ri */
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);
1004 tmp_tmp
= ANDHI (GETMEMHI (current_cpu
, pc
, * FLD (i_Ri
)), * FLD (i_Rj
));
1007 BI opval
= EQHI (tmp_tmp
, 0);
1008 CPU (h_zbit
) = opval
;
1009 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1012 BI opval
= LTHI (tmp_tmp
, 0);
1013 CPU (h_nbit
) = opval
;
1014 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1019 SETMEMHI (current_cpu
, pc
, * FLD (i_Ri
), opval
);
1020 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
1028 CASE (sem
, INSN_ANDB
) : /* andb $Rj,@$Ri */
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);
1039 tmp_tmp
= ANDQI (GETMEMQI (current_cpu
, pc
, * FLD (i_Ri
)), * FLD (i_Rj
));
1042 BI opval
= EQQI (tmp_tmp
, 0);
1043 CPU (h_zbit
) = opval
;
1044 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1047 BI opval
= LTQI (tmp_tmp
, 0);
1048 CPU (h_nbit
) = opval
;
1049 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1054 SETMEMQI (current_cpu
, pc
, * FLD (i_Ri
), opval
);
1055 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
1063 CASE (sem
, INSN_ORM
) : /* or $Rj,@$Ri */
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);
1074 tmp_tmp
= ORSI (GETMEMSI (current_cpu
, pc
, * FLD (i_Ri
)), * FLD (i_Rj
));
1077 BI opval
= EQSI (tmp_tmp
, 0);
1078 CPU (h_zbit
) = opval
;
1079 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1082 BI opval
= LTSI (tmp_tmp
, 0);
1083 CPU (h_nbit
) = opval
;
1084 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1089 SETMEMSI (current_cpu
, pc
, * FLD (i_Ri
), opval
);
1090 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
1098 CASE (sem
, INSN_ORH
) : /* orh $Rj,@$Ri */
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);
1109 tmp_tmp
= ORHI (GETMEMHI (current_cpu
, pc
, * FLD (i_Ri
)), * FLD (i_Rj
));
1112 BI opval
= EQHI (tmp_tmp
, 0);
1113 CPU (h_zbit
) = opval
;
1114 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1117 BI opval
= LTHI (tmp_tmp
, 0);
1118 CPU (h_nbit
) = opval
;
1119 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1124 SETMEMHI (current_cpu
, pc
, * FLD (i_Ri
), opval
);
1125 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
1133 CASE (sem
, INSN_ORB
) : /* orb $Rj,@$Ri */
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);
1144 tmp_tmp
= ORQI (GETMEMQI (current_cpu
, pc
, * FLD (i_Ri
)), * FLD (i_Rj
));
1147 BI opval
= EQQI (tmp_tmp
, 0);
1148 CPU (h_zbit
) = opval
;
1149 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1152 BI opval
= LTQI (tmp_tmp
, 0);
1153 CPU (h_nbit
) = opval
;
1154 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1159 SETMEMQI (current_cpu
, pc
, * FLD (i_Ri
), opval
);
1160 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
1168 CASE (sem
, INSN_EORM
) : /* eor $Rj,@$Ri */
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);
1179 tmp_tmp
= XORSI (GETMEMSI (current_cpu
, pc
, * FLD (i_Ri
)), * FLD (i_Rj
));
1182 BI opval
= EQSI (tmp_tmp
, 0);
1183 CPU (h_zbit
) = opval
;
1184 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1187 BI opval
= LTSI (tmp_tmp
, 0);
1188 CPU (h_nbit
) = opval
;
1189 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1194 SETMEMSI (current_cpu
, pc
, * FLD (i_Ri
), opval
);
1195 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
1203 CASE (sem
, INSN_EORH
) : /* eorh $Rj,@$Ri */
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);
1214 tmp_tmp
= XORHI (GETMEMHI (current_cpu
, pc
, * FLD (i_Ri
)), * FLD (i_Rj
));
1217 BI opval
= EQHI (tmp_tmp
, 0);
1218 CPU (h_zbit
) = opval
;
1219 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1222 BI opval
= LTHI (tmp_tmp
, 0);
1223 CPU (h_nbit
) = opval
;
1224 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1229 SETMEMHI (current_cpu
, pc
, * FLD (i_Ri
), opval
);
1230 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
1238 CASE (sem
, INSN_EORB
) : /* eorb $Rj,@$Ri */
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);
1249 tmp_tmp
= XORQI (GETMEMQI (current_cpu
, pc
, * FLD (i_Ri
)), * FLD (i_Rj
));
1252 BI opval
= EQQI (tmp_tmp
, 0);
1253 CPU (h_zbit
) = opval
;
1254 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1257 BI opval
= LTQI (tmp_tmp
, 0);
1258 CPU (h_nbit
) = opval
;
1259 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1264 SETMEMQI (current_cpu
, pc
, * FLD (i_Ri
), opval
);
1265 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
1273 CASE (sem
, INSN_BANDL
) : /* bandl $u4,@$Ri */
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);
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
);
1292 CASE (sem
, INSN_BORL
) : /* borl $u4,@$Ri */
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);
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
);
1311 CASE (sem
, INSN_BEORL
) : /* beorl $u4,@$Ri */
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);
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
);
1330 CASE (sem
, INSN_BANDH
) : /* bandh $u4,@$Ri */
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);
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
);
1349 CASE (sem
, INSN_BORH
) : /* borh $u4,@$Ri */
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);
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
);
1368 CASE (sem
, INSN_BEORH
) : /* beorh $u4,@$Ri */
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);
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
);
1387 CASE (sem
, INSN_BTSTL
) : /* btstl $u4,@$Ri */
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);
1398 tmp_tmp
= ANDQI (FLD (f_u4
), GETMEMQI (current_cpu
, pc
, * FLD (i_Ri
)));
1400 BI opval
= EQQI (tmp_tmp
, 0);
1401 CPU (h_zbit
) = opval
;
1402 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1406 CPU (h_nbit
) = opval
;
1407 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1415 CASE (sem
, INSN_BTSTH
) : /* btsth $u4,@$Ri */
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);
1426 tmp_tmp
= ANDQI (SLLQI (FLD (f_u4
), 4), GETMEMQI (current_cpu
, pc
, * FLD (i_Ri
)));
1428 BI opval
= EQQI (tmp_tmp
, 0);
1429 CPU (h_zbit
) = opval
;
1430 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1433 BI opval
= LTQI (tmp_tmp
, 0);
1434 CPU (h_nbit
) = opval
;
1435 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1443 CASE (sem
, INSN_MUL
) : /* mul $Rj,$Ri */
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);
1454 tmp_tmp
= MULDI (EXTSIDI (* FLD (i_Rj
)), EXTSIDI (* FLD (i_Ri
)));
1456 SI opval
= TRUNCDISI (tmp_tmp
);
1457 SET_H_DR (((UINT
) 5), opval
);
1458 TRACE_RESULT (current_cpu
, abuf
, "dr-5", 'x', opval
);
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
);
1466 BI opval
= LTSI (GET_H_DR (((UINT
) 5)), 0);
1467 CPU (h_nbit
) = opval
;
1468 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1471 BI opval
= EQDI (tmp_tmp
, MAKEDI (0, 0));
1472 CPU (h_zbit
) = opval
;
1473 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
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
);
1486 CASE (sem
, INSN_MULU
) : /* mulu $Rj,$Ri */
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);
1497 tmp_tmp
= MULDI (ZEXTSIDI (* FLD (i_Rj
)), ZEXTSIDI (* FLD (i_Ri
)));
1499 SI opval
= TRUNCDISI (tmp_tmp
);
1500 SET_H_DR (((UINT
) 5), opval
);
1501 TRACE_RESULT (current_cpu
, abuf
, "dr-5", 'x', opval
);
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
);
1509 BI opval
= LTSI (GET_H_DR (((UINT
) 4)), 0);
1510 CPU (h_nbit
) = opval
;
1511 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1514 BI opval
= EQSI (GET_H_DR (((UINT
) 5)), 0);
1515 CPU (h_zbit
) = opval
;
1516 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1519 BI opval
= NESI (GET_H_DR (((UINT
) 4)), 0);
1520 CPU (h_vbit
) = opval
;
1521 TRACE_RESULT (current_cpu
, abuf
, "vbit", 'x', opval
);
1529 CASE (sem
, INSN_MULH
) : /* mulh $Rj,$Ri */
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);
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
);
1545 BI opval
= LTSI (GET_H_DR (((UINT
) 5)), 0);
1546 CPU (h_nbit
) = opval
;
1547 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1550 BI opval
= GESI (GET_H_DR (((UINT
) 5)), 0);
1551 CPU (h_zbit
) = opval
;
1552 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1560 CASE (sem
, INSN_MULUH
) : /* muluh $Rj,$Ri */
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);
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
);
1576 BI opval
= LTSI (GET_H_DR (((UINT
) 5)), 0);
1577 CPU (h_nbit
) = opval
;
1578 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1581 BI opval
= GESI (GET_H_DR (((UINT
) 5)), 0);
1582 CPU (h_zbit
) = opval
;
1583 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1591 CASE (sem
, INSN_DIV0S
) : /* div0s $Ri */
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);
1602 BI opval
= LTSI (GET_H_DR (((UINT
) 5)), 0);
1603 CPU (h_d0bit
) = opval
;
1604 TRACE_RESULT (current_cpu
, abuf
, "d0bit", 'x', opval
);
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
);
1611 if (NEBI (CPU (h_d0bit
), 0)) {
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
);
1621 SET_H_DR (((UINT
) 4), opval
);
1622 written
|= (1 << 5);
1623 TRACE_RESULT (current_cpu
, abuf
, "dr-4", 'x', opval
);
1628 abuf
->written
= written
;
1633 CASE (sem
, INSN_DIV0U
) : /* div0u $Ri */
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);
1645 CPU (h_d0bit
) = opval
;
1646 TRACE_RESULT (current_cpu
, abuf
, "d0bit", 'x', opval
);
1650 CPU (h_d1bit
) = opval
;
1651 TRACE_RESULT (current_cpu
, abuf
, "d1bit", 'x', opval
);
1655 SET_H_DR (((UINT
) 4), opval
);
1656 TRACE_RESULT (current_cpu
, abuf
, "dr-4", 'x', opval
);
1664 CASE (sem
, INSN_DIV1
) : /* div1 $Ri */
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);
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
);
1680 if (LTSI (GET_H_DR (((UINT
) 5)), 0)) {
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
);
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
);
1692 if (EQBI (CPU (h_d1bit
), 1)) {
1694 tmp_tmp
= ADDSI (GET_H_DR (((UINT
) 4)), * FLD (i_Ri
));
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
);
1704 tmp_tmp
= SUBSI (GET_H_DR (((UINT
) 4)), * FLD (i_Ri
));
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
);
1713 if (NOTBI (XORBI (XORBI (CPU (h_d0bit
), CPU (h_d1bit
)), CPU (h_cbit
)))) {
1717 SET_H_DR (((UINT
) 4), opval
);
1718 TRACE_RESULT (current_cpu
, abuf
, "dr-4", 'x', opval
);
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
);
1728 BI opval
= EQSI (GET_H_DR (((UINT
) 4)), 0);
1729 CPU (h_zbit
) = opval
;
1730 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1734 abuf
->written
= written
;
1739 CASE (sem
, INSN_DIV2
) : /* div2 $Ri */
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);
1750 if (EQBI (CPU (h_d1bit
), 1)) {
1752 tmp_tmp
= ADDSI (GET_H_DR (((UINT
) 4)), * FLD (i_Ri
));
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
);
1762 tmp_tmp
= SUBSI (GET_H_DR (((UINT
) 4)), * FLD (i_Ri
));
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
);
1771 if (EQSI (tmp_tmp
, 0)) {
1775 CPU (h_zbit
) = opval
;
1776 written
|= (1 << 5);
1777 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1781 SET_H_DR (((UINT
) 4), opval
);
1782 written
|= (1 << 4);
1783 TRACE_RESULT (current_cpu
, abuf
, "dr-4", 'x', opval
);
1789 CPU (h_zbit
) = opval
;
1790 written
|= (1 << 5);
1791 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1796 abuf
->written
= written
;
1801 CASE (sem
, INSN_DIV3
) : /* div3 */
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);
1810 if (EQBI (CPU (h_zbit
), 1)) {
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
);
1819 abuf
->written
= written
;
1824 CASE (sem
, INSN_DIV4S
) : /* div4s */
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);
1833 if (EQBI (CPU (h_d1bit
), 1)) {
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
);
1842 abuf
->written
= written
;
1847 CASE (sem
, INSN_LSL
) : /* lsl $Rj,$Ri */
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);
1858 tmp_shift
= ANDSI (* FLD (i_Rj
), 31);
1859 if (NESI (tmp_shift
, 0)) {
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
);
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
);
1877 CPU (h_cbit
) = opval
;
1878 written
|= (1 << 3);
1879 TRACE_RESULT (current_cpu
, abuf
, "cbit", 'x', opval
);
1883 BI opval
= LTSI (* FLD (i_Ri
), 0);
1884 CPU (h_nbit
) = opval
;
1885 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1888 BI opval
= EQSI (* FLD (i_Ri
), 0);
1889 CPU (h_zbit
) = opval
;
1890 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1894 abuf
->written
= written
;
1899 CASE (sem
, INSN_LSLI
) : /* lsl $u4,$Ri */
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);
1910 tmp_shift
= FLD (f_u4
);
1911 if (NESI (tmp_shift
, 0)) {
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
);
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
);
1929 CPU (h_cbit
) = opval
;
1930 written
|= (1 << 3);
1931 TRACE_RESULT (current_cpu
, abuf
, "cbit", 'x', opval
);
1935 BI opval
= LTSI (* FLD (i_Ri
), 0);
1936 CPU (h_nbit
) = opval
;
1937 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1940 BI opval
= EQSI (* FLD (i_Ri
), 0);
1941 CPU (h_zbit
) = opval
;
1942 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1946 abuf
->written
= written
;
1951 CASE (sem
, INSN_LSL2
) : /* lsl2 $u4,$Ri */
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);
1962 tmp_shift
= ADDSI (FLD (f_u4
), 16);
1963 if (NESI (tmp_shift
, 0)) {
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
);
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
);
1981 CPU (h_cbit
) = opval
;
1982 written
|= (1 << 3);
1983 TRACE_RESULT (current_cpu
, abuf
, "cbit", 'x', opval
);
1987 BI opval
= LTSI (* FLD (i_Ri
), 0);
1988 CPU (h_nbit
) = opval
;
1989 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
1992 BI opval
= EQSI (* FLD (i_Ri
), 0);
1993 CPU (h_zbit
) = opval
;
1994 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
1998 abuf
->written
= written
;
2003 CASE (sem
, INSN_LSR
) : /* lsr $Rj,$Ri */
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);
2014 tmp_shift
= ANDSI (* FLD (i_Rj
), 31);
2015 if (NESI (tmp_shift
, 0)) {
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
);
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
);
2033 CPU (h_cbit
) = opval
;
2034 written
|= (1 << 3);
2035 TRACE_RESULT (current_cpu
, abuf
, "cbit", 'x', opval
);
2039 BI opval
= LTSI (* FLD (i_Ri
), 0);
2040 CPU (h_nbit
) = opval
;
2041 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
2044 BI opval
= EQSI (* FLD (i_Ri
), 0);
2045 CPU (h_zbit
) = opval
;
2046 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
2050 abuf
->written
= written
;
2055 CASE (sem
, INSN_LSRI
) : /* lsr $u4,$Ri */
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);
2066 tmp_shift
= FLD (f_u4
);
2067 if (NESI (tmp_shift
, 0)) {
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
);
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
);
2085 CPU (h_cbit
) = opval
;
2086 written
|= (1 << 3);
2087 TRACE_RESULT (current_cpu
, abuf
, "cbit", 'x', opval
);
2091 BI opval
= LTSI (* FLD (i_Ri
), 0);
2092 CPU (h_nbit
) = opval
;
2093 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
2096 BI opval
= EQSI (* FLD (i_Ri
), 0);
2097 CPU (h_zbit
) = opval
;
2098 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
2102 abuf
->written
= written
;
2107 CASE (sem
, INSN_LSR2
) : /* lsr2 $u4,$Ri */
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);
2118 tmp_shift
= ADDSI (FLD (f_u4
), 16);
2119 if (NESI (tmp_shift
, 0)) {
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
);
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
);
2137 CPU (h_cbit
) = opval
;
2138 written
|= (1 << 3);
2139 TRACE_RESULT (current_cpu
, abuf
, "cbit", 'x', opval
);
2143 BI opval
= LTSI (* FLD (i_Ri
), 0);
2144 CPU (h_nbit
) = opval
;
2145 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
2148 BI opval
= EQSI (* FLD (i_Ri
), 0);
2149 CPU (h_zbit
) = opval
;
2150 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
2154 abuf
->written
= written
;
2159 CASE (sem
, INSN_ASR
) : /* asr $Rj,$Ri */
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);
2170 tmp_shift
= ANDSI (* FLD (i_Rj
), 31);
2171 if (NESI (tmp_shift
, 0)) {
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
);
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
);
2189 CPU (h_cbit
) = opval
;
2190 written
|= (1 << 3);
2191 TRACE_RESULT (current_cpu
, abuf
, "cbit", 'x', opval
);
2195 BI opval
= LTSI (* FLD (i_Ri
), 0);
2196 CPU (h_nbit
) = opval
;
2197 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
2200 BI opval
= EQSI (* FLD (i_Ri
), 0);
2201 CPU (h_zbit
) = opval
;
2202 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
2206 abuf
->written
= written
;
2211 CASE (sem
, INSN_ASRI
) : /* asr $u4,$Ri */
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);
2222 tmp_shift
= FLD (f_u4
);
2223 if (NESI (tmp_shift
, 0)) {
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
);
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
);
2241 CPU (h_cbit
) = opval
;
2242 written
|= (1 << 3);
2243 TRACE_RESULT (current_cpu
, abuf
, "cbit", 'x', opval
);
2247 BI opval
= LTSI (* FLD (i_Ri
), 0);
2248 CPU (h_nbit
) = opval
;
2249 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
2252 BI opval
= EQSI (* FLD (i_Ri
), 0);
2253 CPU (h_zbit
) = opval
;
2254 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
2258 abuf
->written
= written
;
2263 CASE (sem
, INSN_ASR2
) : /* asr2 $u4,$Ri */
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);
2274 tmp_shift
= ADDSI (FLD (f_u4
), 16);
2275 if (NESI (tmp_shift
, 0)) {
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
);
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
);
2293 CPU (h_cbit
) = opval
;
2294 written
|= (1 << 3);
2295 TRACE_RESULT (current_cpu
, abuf
, "cbit", 'x', opval
);
2299 BI opval
= LTSI (* FLD (i_Ri
), 0);
2300 CPU (h_nbit
) = opval
;
2301 TRACE_RESULT (current_cpu
, abuf
, "nbit", 'x', opval
);
2304 BI opval
= EQSI (* FLD (i_Ri
), 0);
2305 CPU (h_zbit
) = opval
;
2306 TRACE_RESULT (current_cpu
, abuf
, "zbit", 'x', opval
);
2310 abuf
->written
= written
;
2315 CASE (sem
, INSN_LDI8
) : /* ldi:8 $i8,$Ri */
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);
2325 SI opval
= FLD (f_i8
);
2326 * FLD (i_Ri
) = opval
;
2327 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
2334 CASE (sem
, INSN_LDI20
) : /* ldi:20 $i20,$Ri */
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);
2344 SI opval
= FLD (f_i20
);
2345 * FLD (i_Ri
) = opval
;
2346 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
2353 CASE (sem
, INSN_LDI32
) : /* ldi:32 $i32,$Ri */
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);
2363 SI opval
= FLD (f_i32
);
2364 * FLD (i_Ri
) = opval
;
2365 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
2372 CASE (sem
, INSN_LD
) : /* ld @$Rj,$Ri */
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);
2382 SI opval
= GETMEMSI (current_cpu
, pc
, * FLD (i_Rj
));
2383 * FLD (i_Ri
) = opval
;
2384 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
2391 CASE (sem
, INSN_LDUH
) : /* lduh @$Rj,$Ri */
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);
2401 SI opval
= GETMEMUHI (current_cpu
, pc
, * FLD (i_Rj
));
2402 * FLD (i_Ri
) = opval
;
2403 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
2410 CASE (sem
, INSN_LDUB
) : /* ldub @$Rj,$Ri */
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);
2420 SI opval
= GETMEMUQI (current_cpu
, pc
, * FLD (i_Rj
));
2421 * FLD (i_Ri
) = opval
;
2422 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
2429 CASE (sem
, INSN_LDR13
) : /* ld @($R13,$Rj),$Ri */
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);
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
);
2448 CASE (sem
, INSN_LDR13UH
) : /* lduh @($R13,$Rj),$Ri */
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);
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
);
2467 CASE (sem
, INSN_LDR13UB
) : /* ldub @($R13,$Rj),$Ri */
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);
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
);
2486 CASE (sem
, INSN_LDR14
) : /* ld @($R14,$disp10),$Ri */
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);
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
);
2505 CASE (sem
, INSN_LDR14UH
) : /* lduh @($R14,$disp9),$Ri */
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);
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
);
2524 CASE (sem
, INSN_LDR14UB
) : /* ldub @($R14,$disp8),$Ri */
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);
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
);
2543 CASE (sem
, INSN_LDR15
) : /* ld @($R15,$udisp6),$Ri */
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);
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
);
2562 CASE (sem
, INSN_LDR15GR
) : /* ld @$R15+,$Ri */
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);
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
);
2577 if (NESI (FLD (f_Ri
), 15)) {
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
);
2587 abuf
->written
= written
;
2592 CASE (sem
, INSN_LDR15DR
) : /* ld @$R15+,$Rs2 */
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);
2603 tmp_tmp
= GETMEMSI (current_cpu
, pc
, CPU (h_gr
[((UINT
) 15)]));
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
);
2611 SET_H_DR (FLD (f_Rs2
), opval
);
2612 TRACE_RESULT (current_cpu
, abuf
, "Rs2", 'x', opval
);
2620 CASE (sem
, INSN_LDR15PS
) : /* ld @$R15+,$ps */
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);
2631 USI opval
= GETMEMSI (current_cpu
, pc
, CPU (h_gr
[((UINT
) 15)]));
2633 TRACE_RESULT (current_cpu
, abuf
, "ps", 'x', opval
);
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
);
2646 CASE (sem
, INSN_ST
) : /* st $Ri,@$Rj */
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);
2656 SI opval
= * FLD (i_Ri
);
2657 SETMEMSI (current_cpu
, pc
, * FLD (i_Rj
), opval
);
2658 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
2665 CASE (sem
, INSN_STH
) : /* sth $Ri,@$Rj */
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);
2675 HI opval
= * FLD (i_Ri
);
2676 SETMEMHI (current_cpu
, pc
, * FLD (i_Rj
), opval
);
2677 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
2684 CASE (sem
, INSN_STB
) : /* stb $Ri,@$Rj */
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);
2694 QI opval
= * FLD (i_Ri
);
2695 SETMEMQI (current_cpu
, pc
, * FLD (i_Rj
), opval
);
2696 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
2703 CASE (sem
, INSN_STR13
) : /* st $Ri,@($R13,$Rj) */
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);
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
);
2722 CASE (sem
, INSN_STR13H
) : /* sth $Ri,@($R13,$Rj) */
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);
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
);
2741 CASE (sem
, INSN_STR13B
) : /* stb $Ri,@($R13,$Rj) */
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);
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
);
2760 CASE (sem
, INSN_STR14
) : /* st $Ri,@($R14,$disp10) */
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);
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
);
2779 CASE (sem
, INSN_STR14H
) : /* sth $Ri,@($R14,$disp9) */
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);
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
);
2798 CASE (sem
, INSN_STR14B
) : /* stb $Ri,@($R14,$disp8) */
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);
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
);
2817 CASE (sem
, INSN_STR15
) : /* st $Ri,@($R15,$udisp6) */
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);
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
);
2836 CASE (sem
, INSN_STR15GR
) : /* st $Ri,@-$R15 */
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);
2847 tmp_tmp
= * FLD (i_Ri
);
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
);
2855 SETMEMSI (current_cpu
, pc
, CPU (h_gr
[((UINT
) 15)]), opval
);
2856 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
2864 CASE (sem
, INSN_STR15DR
) : /* st $Rs2,@-$R15 */
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);
2875 tmp_tmp
= GET_H_DR (FLD (f_Rs2
));
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
);
2883 SETMEMSI (current_cpu
, pc
, CPU (h_gr
[((UINT
) 15)]), opval
);
2884 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
2892 CASE (sem
, INSN_STR15PS
) : /* st $ps,@-$R15 */
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);
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
);
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
);
2918 CASE (sem
, INSN_MOV
) : /* mov $Rj,$Ri */
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);
2928 SI opval
= * FLD (i_Rj
);
2929 * FLD (i_Ri
) = opval
;
2930 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
2937 CASE (sem
, INSN_MOVDR
) : /* mov $Rs1,$Ri */
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);
2947 SI opval
= GET_H_DR (FLD (f_Rs1
));
2948 * FLD (i_Ri
) = opval
;
2949 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
2956 CASE (sem
, INSN_MOVPS
) : /* mov $ps,$Ri */
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);
2966 SI opval
= GET_H_PS ();
2967 * FLD (i_Ri
) = opval
;
2968 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
2975 CASE (sem
, INSN_MOV2DR
) : /* mov $Ri,$Rs1 */
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);
2985 SI opval
= * FLD (i_Ri
);
2986 SET_H_DR (FLD (f_Rs1
), opval
);
2987 TRACE_RESULT (current_cpu
, abuf
, "Rs1", 'x', opval
);
2994 CASE (sem
, INSN_MOV2PS
) : /* mov $Ri,$ps */
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);
3004 USI opval
= * FLD (i_Ri
);
3006 TRACE_RESULT (current_cpu
, abuf
, "ps", 'x', opval
);
3013 CASE (sem
, INSN_JMP
) : /* jmp @$Ri */
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
;
3021 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3029 SEM_BRANCH_FINI (vpc
);
3034 CASE (sem
, INSN_JMPD
) : /* jmp:d @$Ri */
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
;
3042 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3052 SEM_BRANCH_FINI (vpc
);
3057 CASE (sem
, INSN_CALLR
) : /* call @$Ri */
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
;
3065 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3069 SI opval
= ADDSI (pc
, 2);
3070 SET_H_DR (((UINT
) 1), opval
);
3071 TRACE_RESULT (current_cpu
, abuf
, "dr-1", 'x', opval
);
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
);
3080 SEM_BRANCH_FINI (vpc
);
3085 CASE (sem
, INSN_CALLRD
) : /* call:d @$Ri */
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
;
3093 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3098 SI opval
= ADDSI (pc
, 4);
3099 SET_H_DR (((UINT
) 1), opval
);
3100 TRACE_RESULT (current_cpu
, abuf
, "dr-1", 'x', opval
);
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
);
3110 SEM_BRANCH_FINI (vpc
);
3115 CASE (sem
, INSN_CALL
) : /* call $label12 */
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
;
3123 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3127 SI opval
= ADDSI (pc
, 2);
3128 SET_H_DR (((UINT
) 1), opval
);
3129 TRACE_RESULT (current_cpu
, abuf
, "dr-1", 'x', opval
);
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
);
3138 SEM_BRANCH_FINI (vpc
);
3143 CASE (sem
, INSN_CALLD
) : /* call:d $label12 */
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
;
3151 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3156 SI opval
= ADDSI (pc
, 4);
3157 SET_H_DR (((UINT
) 1), opval
);
3158 TRACE_RESULT (current_cpu
, abuf
, "dr-1", 'x', opval
);
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
);
3168 SEM_BRANCH_FINI (vpc
);
3173 CASE (sem
, INSN_RET
) : /* ret */
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
;
3181 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3189 SEM_BRANCH_FINI (vpc
);
3194 CASE (sem
, INSN_RET_D
) : /* ret:d */
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
;
3202 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3212 SEM_BRANCH_FINI (vpc
);
3217 CASE (sem
, INSN_INT
) : /* int $u8 */
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
;
3225 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3238 SEM_BRANCH_FINI (vpc
);
3243 CASE (sem
, INSN_INTE
) : /* inte */
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
;
3251 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3264 SEM_BRANCH_FINI (vpc
);
3269 CASE (sem
, INSN_RETI
) : /* reti */
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
;
3277 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3279 if (EQBI (GET_H_SBIT (), 0)) {
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
);
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
);
3294 SI opval
= GETMEMSI (current_cpu
, pc
, GET_H_DR (((UINT
) 2)));
3296 written
|= (1 << 8);
3297 TRACE_RESULT (current_cpu
, abuf
, "ps", 'x', opval
);
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
);
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
);
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
);
3321 SI opval
= GETMEMSI (current_cpu
, pc
, GET_H_DR (((UINT
) 3)));
3323 written
|= (1 << 8);
3324 TRACE_RESULT (current_cpu
, abuf
, "ps", 'x', opval
);
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
);
3335 abuf
->written
= written
;
3336 SEM_BRANCH_FINI (vpc
);
3341 CASE (sem
, INSN_BRAD
) : /* bra:d $label9 */
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
;
3349 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3359 SEM_BRANCH_FINI (vpc
);
3364 CASE (sem
, INSN_BRA
) : /* bra $label9 */
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
;
3372 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3380 SEM_BRANCH_FINI (vpc
);
3385 CASE (sem
, INSN_BNOD
) : /* bno:d $label9 */
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);
3402 CASE (sem
, INSN_BNO
) : /* bno $label9 */
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);
3417 CASE (sem
, INSN_BEQD
) : /* beq:d $label9 */
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
;
3425 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3438 abuf
->written
= written
;
3439 SEM_BRANCH_FINI (vpc
);
3444 CASE (sem
, INSN_BEQ
) : /* beq $label9 */
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
;
3452 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3463 abuf
->written
= written
;
3464 SEM_BRANCH_FINI (vpc
);
3469 CASE (sem
, INSN_BNED
) : /* bne:d $label9 */
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
;
3477 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3480 if (NOTBI (CPU (h_zbit
))) {
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
);
3490 abuf
->written
= written
;
3491 SEM_BRANCH_FINI (vpc
);
3496 CASE (sem
, INSN_BNE
) : /* bne $label9 */
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
;
3504 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3506 if (NOTBI (CPU (h_zbit
))) {
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
);
3515 abuf
->written
= written
;
3516 SEM_BRANCH_FINI (vpc
);
3521 CASE (sem
, INSN_BCD
) : /* bc:d $label9 */
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
;
3529 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3542 abuf
->written
= written
;
3543 SEM_BRANCH_FINI (vpc
);
3548 CASE (sem
, INSN_BC
) : /* bc $label9 */
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
;
3556 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3567 abuf
->written
= written
;
3568 SEM_BRANCH_FINI (vpc
);
3573 CASE (sem
, INSN_BNCD
) : /* bnc:d $label9 */
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
;
3581 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3584 if (NOTBI (CPU (h_cbit
))) {
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
);
3594 abuf
->written
= written
;
3595 SEM_BRANCH_FINI (vpc
);
3600 CASE (sem
, INSN_BNC
) : /* bnc $label9 */
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
;
3608 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3610 if (NOTBI (CPU (h_cbit
))) {
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
);
3619 abuf
->written
= written
;
3620 SEM_BRANCH_FINI (vpc
);
3625 CASE (sem
, INSN_BND
) : /* bn:d $label9 */
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
;
3633 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3646 abuf
->written
= written
;
3647 SEM_BRANCH_FINI (vpc
);
3652 CASE (sem
, INSN_BN
) : /* bn $label9 */
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
;
3660 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3671 abuf
->written
= written
;
3672 SEM_BRANCH_FINI (vpc
);
3677 CASE (sem
, INSN_BPD
) : /* bp:d $label9 */
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
;
3685 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3688 if (NOTBI (CPU (h_nbit
))) {
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
);
3698 abuf
->written
= written
;
3699 SEM_BRANCH_FINI (vpc
);
3704 CASE (sem
, INSN_BP
) : /* bp $label9 */
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
;
3712 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3714 if (NOTBI (CPU (h_nbit
))) {
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
);
3723 abuf
->written
= written
;
3724 SEM_BRANCH_FINI (vpc
);
3729 CASE (sem
, INSN_BVD
) : /* bv:d $label9 */
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
;
3737 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3750 abuf
->written
= written
;
3751 SEM_BRANCH_FINI (vpc
);
3756 CASE (sem
, INSN_BV
) : /* bv $label9 */
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
;
3764 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
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
);
3775 abuf
->written
= written
;
3776 SEM_BRANCH_FINI (vpc
);
3781 CASE (sem
, INSN_BNVD
) : /* bnv:d $label9 */
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
;
3789 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3792 if (NOTBI (CPU (h_vbit
))) {
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
);
3802 abuf
->written
= written
;
3803 SEM_BRANCH_FINI (vpc
);
3808 CASE (sem
, INSN_BNV
) : /* bnv $label9 */
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
;
3816 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3818 if (NOTBI (CPU (h_vbit
))) {
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
);
3827 abuf
->written
= written
;
3828 SEM_BRANCH_FINI (vpc
);
3833 CASE (sem
, INSN_BLTD
) : /* blt:d $label9 */
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
;
3841 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3844 if (XORBI (CPU (h_vbit
), CPU (h_nbit
))) {
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
);
3854 abuf
->written
= written
;
3855 SEM_BRANCH_FINI (vpc
);
3860 CASE (sem
, INSN_BLT
) : /* blt $label9 */
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
;
3868 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3870 if (XORBI (CPU (h_vbit
), CPU (h_nbit
))) {
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
);
3879 abuf
->written
= written
;
3880 SEM_BRANCH_FINI (vpc
);
3885 CASE (sem
, INSN_BGED
) : /* bge:d $label9 */
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
;
3893 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3896 if (NOTBI (XORBI (CPU (h_vbit
), CPU (h_nbit
)))) {
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
);
3906 abuf
->written
= written
;
3907 SEM_BRANCH_FINI (vpc
);
3912 CASE (sem
, INSN_BGE
) : /* bge $label9 */
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
;
3920 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3922 if (NOTBI (XORBI (CPU (h_vbit
), CPU (h_nbit
)))) {
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
);
3931 abuf
->written
= written
;
3932 SEM_BRANCH_FINI (vpc
);
3937 CASE (sem
, INSN_BLED
) : /* ble:d $label9 */
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
;
3945 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3948 if (ORBI (XORBI (CPU (h_vbit
), CPU (h_nbit
)), CPU (h_zbit
))) {
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
);
3958 abuf
->written
= written
;
3959 SEM_BRANCH_FINI (vpc
);
3964 CASE (sem
, INSN_BLE
) : /* ble $label9 */
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
;
3972 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
3974 if (ORBI (XORBI (CPU (h_vbit
), CPU (h_nbit
)), CPU (h_zbit
))) {
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
);
3983 abuf
->written
= written
;
3984 SEM_BRANCH_FINI (vpc
);
3989 CASE (sem
, INSN_BGTD
) : /* bgt:d $label9 */
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
;
3997 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
4000 if (NOTBI (ORBI (XORBI (CPU (h_vbit
), CPU (h_nbit
)), CPU (h_zbit
)))) {
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
);
4010 abuf
->written
= written
;
4011 SEM_BRANCH_FINI (vpc
);
4016 CASE (sem
, INSN_BGT
) : /* bgt $label9 */
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
;
4024 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
4026 if (NOTBI (ORBI (XORBI (CPU (h_vbit
), CPU (h_nbit
)), CPU (h_zbit
)))) {
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
);
4035 abuf
->written
= written
;
4036 SEM_BRANCH_FINI (vpc
);
4041 CASE (sem
, INSN_BLSD
) : /* bls:d $label9 */
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
;
4049 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
4052 if (ORBI (CPU (h_cbit
), CPU (h_zbit
))) {
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
);
4062 abuf
->written
= written
;
4063 SEM_BRANCH_FINI (vpc
);
4068 CASE (sem
, INSN_BLS
) : /* bls $label9 */
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
;
4076 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
4078 if (ORBI (CPU (h_cbit
), CPU (h_zbit
))) {
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
);
4087 abuf
->written
= written
;
4088 SEM_BRANCH_FINI (vpc
);
4093 CASE (sem
, INSN_BHID
) : /* bhi:d $label9 */
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
;
4101 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
4104 if (NOTBI (ORBI (CPU (h_cbit
), CPU (h_zbit
)))) {
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
);
4114 abuf
->written
= written
;
4115 SEM_BRANCH_FINI (vpc
);
4120 CASE (sem
, INSN_BHI
) : /* bhi $label9 */
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
;
4128 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 2);
4130 if (NOTBI (ORBI (CPU (h_cbit
), CPU (h_zbit
)))) {
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
);
4139 abuf
->written
= written
;
4140 SEM_BRANCH_FINI (vpc
);
4145 CASE (sem
, INSN_DMOVR13
) : /* dmov $R13,@$dir10 */
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);
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
);
4164 CASE (sem
, INSN_DMOVR13H
) : /* dmovh $R13,@$dir9 */
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);
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
);
4183 CASE (sem
, INSN_DMOVR13B
) : /* dmovb $R13,@$dir8 */
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);
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
);
4202 CASE (sem
, INSN_DMOVR13PI
) : /* dmov @$R13+,@$dir10 */
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);
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
);
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
);
4228 CASE (sem
, INSN_DMOVR13PIH
) : /* dmovh @$R13+,@$dir9 */
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);
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
);
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
);
4254 CASE (sem
, INSN_DMOVR13PIB
) : /* dmovb @$R13+,@$dir8 */
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);
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
);
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
);
4280 CASE (sem
, INSN_DMOVR15PI
) : /* dmov @$R15+,@$dir10 */
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);
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
);
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
);
4306 CASE (sem
, INSN_DMOV2R13
) : /* dmov @$dir10,$R13 */
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);
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
);
4325 CASE (sem
, INSN_DMOV2R13H
) : /* dmovh @$dir9,$R13 */
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);
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
);
4344 CASE (sem
, INSN_DMOV2R13B
) : /* dmovb @$dir8,$R13 */
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);
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
);
4363 CASE (sem
, INSN_DMOV2R13PI
) : /* dmov @$dir10,@$R13+ */
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);
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
);
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
);
4389 CASE (sem
, INSN_DMOV2R13PIH
) : /* dmovh @$dir9,@$R13+ */
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);
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
);
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
);
4415 CASE (sem
, INSN_DMOV2R13PIB
) : /* dmovb @$dir8,@$R13+ */
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);
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
);
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
);
4441 CASE (sem
, INSN_DMOV2R15PD
) : /* dmov @$dir10,@-$R15 */
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);
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
);
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
);
4467 CASE (sem
, INSN_LDRES
) : /* ldres @$Ri+,$u4 */
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);
4477 SI opval
= ADDSI (* FLD (i_Ri
), 4);
4478 * FLD (i_Ri
) = opval
;
4479 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
4486 CASE (sem
, INSN_STRES
) : /* stres $u4,@$Ri+ */
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);
4496 SI opval
= ADDSI (* FLD (i_Ri
), 4);
4497 * FLD (i_Ri
) = opval
;
4498 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
4505 CASE (sem
, INSN_COPOP
) : /* copop $u4c,$ccc,$CRj,$CRi */
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);
4520 CASE (sem
, INSN_COPLD
) : /* copld $u4c,$ccc,$Rjc,$CRi */
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);
4535 CASE (sem
, INSN_COPST
) : /* copst $u4c,$ccc,$CRj,$Ric */
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);
4550 CASE (sem
, INSN_COPSV
) : /* copsv $u4c,$ccc,$CRj,$Ric */
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);
4565 CASE (sem
, INSN_NOP
) : /* nop */
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);
4580 CASE (sem
, INSN_ANDCCR
) : /* andccr $u8 */
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);
4590 UQI opval
= ANDQI (GET_H_CCR (), FLD (f_u8
));
4592 TRACE_RESULT (current_cpu
, abuf
, "ccr", 'x', opval
);
4599 CASE (sem
, INSN_ORCCR
) : /* orccr $u8 */
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);
4609 UQI opval
= ORQI (GET_H_CCR (), FLD (f_u8
));
4611 TRACE_RESULT (current_cpu
, abuf
, "ccr", 'x', opval
);
4618 CASE (sem
, INSN_STILM
) : /* stilm $u8 */
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);
4628 UQI opval
= ANDSI (FLD (f_u8
), 31);
4630 TRACE_RESULT (current_cpu
, abuf
, "ilm", 'x', opval
);
4637 CASE (sem
, INSN_ADDSP
) : /* addsp $s10 */
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);
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
);
4656 CASE (sem
, INSN_EXTSB
) : /* extsb $Ri */
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);
4666 SI opval
= EXTQISI (ANDQI (* FLD (i_Ri
), 255));
4667 * FLD (i_Ri
) = opval
;
4668 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
4675 CASE (sem
, INSN_EXTUB
) : /* extub $Ri */
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);
4685 SI opval
= ZEXTQISI (ANDQI (* FLD (i_Ri
), 255));
4686 * FLD (i_Ri
) = opval
;
4687 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
4694 CASE (sem
, INSN_EXTSH
) : /* extsh $Ri */
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);
4704 SI opval
= EXTHISI (ANDHI (* FLD (i_Ri
), 65535));
4705 * FLD (i_Ri
) = opval
;
4706 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
4713 CASE (sem
, INSN_EXTUH
) : /* extuh $Ri */
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);
4723 SI opval
= ZEXTHISI (ANDHI (* FLD (i_Ri
), 65535));
4724 * FLD (i_Ri
) = opval
;
4725 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
4732 CASE (sem
, INSN_LDM0
) : /* ldm0 ($reglist_low_ld) */
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);
4742 if (ANDSI (FLD (f_reglist_low_ld
), 1)) {
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
);
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
);
4758 if (ANDSI (FLD (f_reglist_low_ld
), 2)) {
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
);
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
);
4774 if (ANDSI (FLD (f_reglist_low_ld
), 4)) {
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
);
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
);
4790 if (ANDSI (FLD (f_reglist_low_ld
), 8)) {
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
);
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
);
4806 if (ANDSI (FLD (f_reglist_low_ld
), 16)) {
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
);
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
);
4822 if (ANDSI (FLD (f_reglist_low_ld
), 32)) {
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
);
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
);
4838 if (ANDSI (FLD (f_reglist_low_ld
), 64)) {
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
);
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
);
4854 if (ANDSI (FLD (f_reglist_low_ld
), 128)) {
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
);
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
);
4872 abuf
->written
= written
;
4877 CASE (sem
, INSN_LDM1
) : /* ldm1 ($reglist_hi_ld) */
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);
4887 if (ANDSI (FLD (f_reglist_hi_ld
), 1)) {
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
);
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
);
4903 if (ANDSI (FLD (f_reglist_hi_ld
), 2)) {
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
);
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
);
4919 if (ANDSI (FLD (f_reglist_hi_ld
), 4)) {
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
);
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
);
4935 if (ANDSI (FLD (f_reglist_hi_ld
), 8)) {
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
);
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
);
4951 if (ANDSI (FLD (f_reglist_hi_ld
), 16)) {
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
);
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
);
4967 if (ANDSI (FLD (f_reglist_hi_ld
), 32)) {
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
);
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
);
4983 if (ANDSI (FLD (f_reglist_hi_ld
), 64)) {
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
);
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
);
4999 if (ANDSI (FLD (f_reglist_hi_ld
), 128)) {
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
);
5009 abuf
->written
= written
;
5014 CASE (sem
, INSN_STM0
) : /* stm0 ($reglist_low_st) */
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);
5024 if (ANDSI (FLD (f_reglist_low_st
), 1)) {
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
);
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
);
5040 if (ANDSI (FLD (f_reglist_low_st
), 2)) {
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
);
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
);
5056 if (ANDSI (FLD (f_reglist_low_st
), 4)) {
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
);
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
);
5072 if (ANDSI (FLD (f_reglist_low_st
), 8)) {
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
);
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
);
5088 if (ANDSI (FLD (f_reglist_low_st
), 16)) {
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
);
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
);
5104 if (ANDSI (FLD (f_reglist_low_st
), 32)) {
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
);
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
);
5120 if (ANDSI (FLD (f_reglist_low_st
), 64)) {
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
);
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
);
5136 if (ANDSI (FLD (f_reglist_low_st
), 128)) {
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
);
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
);
5154 abuf
->written
= written
;
5159 CASE (sem
, INSN_STM1
) : /* stm1 ($reglist_hi_st) */
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);
5169 if (ANDSI (FLD (f_reglist_hi_st
), 1)) {
5172 tmp_save_r15
= CPU (h_gr
[((UINT
) 15)]);
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
);
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
);
5187 if (ANDSI (FLD (f_reglist_hi_st
), 2)) {
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
);
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
);
5203 if (ANDSI (FLD (f_reglist_hi_st
), 4)) {
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
);
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
);
5219 if (ANDSI (FLD (f_reglist_hi_st
), 8)) {
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
);
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
);
5235 if (ANDSI (FLD (f_reglist_hi_st
), 16)) {
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
);
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
);
5251 if (ANDSI (FLD (f_reglist_hi_st
), 32)) {
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
);
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
);
5267 if (ANDSI (FLD (f_reglist_hi_st
), 64)) {
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
);
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
);
5283 if (ANDSI (FLD (f_reglist_hi_st
), 128)) {
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
);
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
);
5301 abuf
->written
= written
;
5306 CASE (sem
, INSN_ENTER
) : /* enter $u10 */
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);
5317 tmp_tmp
= SUBSI (CPU (h_gr
[((UINT
) 15)]), 4);
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
);
5325 CPU (h_gr
[((UINT
) 14)]) = opval
;
5326 TRACE_RESULT (current_cpu
, abuf
, "gr-14", 'x', opval
);
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
);
5339 CASE (sem
, INSN_LEAVE
) : /* leave */
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);
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
);
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
);
5365 CASE (sem
, INSN_XCHB
) : /* xchb @$Rj,$Ri */
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);
5376 tmp_tmp
= * FLD (i_Ri
);
5378 SI opval
= GETMEMUQI (current_cpu
, pc
, * FLD (i_Rj
));
5379 * FLD (i_Ri
) = opval
;
5380 TRACE_RESULT (current_cpu
, abuf
, "Ri", 'x', opval
);
5383 UQI opval
= tmp_tmp
;
5384 SETMEMUQI (current_cpu
, pc
, * FLD (i_Rj
), opval
);
5385 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5395 ENDSWITCH (sem
) /* End of semantic switch. */
5397 /* At this point `vpc' contains the next insn to execute. */
5400 #undef DEFINE_SWITCH
5401 #endif /* DEFINE_SWITCH */