daily update
[deliverable/binutils-gdb.git] / sim / cris / semcrisv10f-switch.c
1 /* Simulator instruction semantics for crisv10f.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright 1996-2010, 2012 Free Software Foundation, Inc.
6
7 This file is part of the GNU simulators.
8
9 This file is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3, or (at your option)
12 any later version.
13
14 It is distributed in the hope that it will be useful, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 License for more details.
18
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
22
23 */
24
25 #ifdef DEFINE_LABELS
26
27 /* The labels have the case they have because the enum of insn types
28 is all uppercase and in the non-stdc case the insn symbol is built
29 into the enum name. */
30
31 static struct {
32 int index;
33 void *label;
34 } labels[] = {
35 { CRISV10F_INSN_X_INVALID, && case_sem_INSN_X_INVALID },
36 { CRISV10F_INSN_X_AFTER, && case_sem_INSN_X_AFTER },
37 { CRISV10F_INSN_X_BEFORE, && case_sem_INSN_X_BEFORE },
38 { CRISV10F_INSN_X_CTI_CHAIN, && case_sem_INSN_X_CTI_CHAIN },
39 { CRISV10F_INSN_X_CHAIN, && case_sem_INSN_X_CHAIN },
40 { CRISV10F_INSN_X_BEGIN, && case_sem_INSN_X_BEGIN },
41 { CRISV10F_INSN_NOP, && case_sem_INSN_NOP },
42 { CRISV10F_INSN_MOVE_B_R, && case_sem_INSN_MOVE_B_R },
43 { CRISV10F_INSN_MOVE_W_R, && case_sem_INSN_MOVE_W_R },
44 { CRISV10F_INSN_MOVE_D_R, && case_sem_INSN_MOVE_D_R },
45 { CRISV10F_INSN_MOVEPCR, && case_sem_INSN_MOVEPCR },
46 { CRISV10F_INSN_MOVEQ, && case_sem_INSN_MOVEQ },
47 { CRISV10F_INSN_MOVS_B_R, && case_sem_INSN_MOVS_B_R },
48 { CRISV10F_INSN_MOVS_W_R, && case_sem_INSN_MOVS_W_R },
49 { CRISV10F_INSN_MOVU_B_R, && case_sem_INSN_MOVU_B_R },
50 { CRISV10F_INSN_MOVU_W_R, && case_sem_INSN_MOVU_W_R },
51 { CRISV10F_INSN_MOVECBR, && case_sem_INSN_MOVECBR },
52 { CRISV10F_INSN_MOVECWR, && case_sem_INSN_MOVECWR },
53 { CRISV10F_INSN_MOVECDR, && case_sem_INSN_MOVECDR },
54 { CRISV10F_INSN_MOVSCBR, && case_sem_INSN_MOVSCBR },
55 { CRISV10F_INSN_MOVSCWR, && case_sem_INSN_MOVSCWR },
56 { CRISV10F_INSN_MOVUCBR, && case_sem_INSN_MOVUCBR },
57 { CRISV10F_INSN_MOVUCWR, && case_sem_INSN_MOVUCWR },
58 { CRISV10F_INSN_ADDQ, && case_sem_INSN_ADDQ },
59 { CRISV10F_INSN_SUBQ, && case_sem_INSN_SUBQ },
60 { CRISV10F_INSN_CMP_R_B_R, && case_sem_INSN_CMP_R_B_R },
61 { CRISV10F_INSN_CMP_R_W_R, && case_sem_INSN_CMP_R_W_R },
62 { CRISV10F_INSN_CMP_R_D_R, && case_sem_INSN_CMP_R_D_R },
63 { CRISV10F_INSN_CMP_M_B_M, && case_sem_INSN_CMP_M_B_M },
64 { CRISV10F_INSN_CMP_M_W_M, && case_sem_INSN_CMP_M_W_M },
65 { CRISV10F_INSN_CMP_M_D_M, && case_sem_INSN_CMP_M_D_M },
66 { CRISV10F_INSN_CMPCBR, && case_sem_INSN_CMPCBR },
67 { CRISV10F_INSN_CMPCWR, && case_sem_INSN_CMPCWR },
68 { CRISV10F_INSN_CMPCDR, && case_sem_INSN_CMPCDR },
69 { CRISV10F_INSN_CMPQ, && case_sem_INSN_CMPQ },
70 { CRISV10F_INSN_CMPS_M_B_M, && case_sem_INSN_CMPS_M_B_M },
71 { CRISV10F_INSN_CMPS_M_W_M, && case_sem_INSN_CMPS_M_W_M },
72 { CRISV10F_INSN_CMPSCBR, && case_sem_INSN_CMPSCBR },
73 { CRISV10F_INSN_CMPSCWR, && case_sem_INSN_CMPSCWR },
74 { CRISV10F_INSN_CMPU_M_B_M, && case_sem_INSN_CMPU_M_B_M },
75 { CRISV10F_INSN_CMPU_M_W_M, && case_sem_INSN_CMPU_M_W_M },
76 { CRISV10F_INSN_CMPUCBR, && case_sem_INSN_CMPUCBR },
77 { CRISV10F_INSN_CMPUCWR, && case_sem_INSN_CMPUCWR },
78 { CRISV10F_INSN_MOVE_M_B_M, && case_sem_INSN_MOVE_M_B_M },
79 { CRISV10F_INSN_MOVE_M_W_M, && case_sem_INSN_MOVE_M_W_M },
80 { CRISV10F_INSN_MOVE_M_D_M, && case_sem_INSN_MOVE_M_D_M },
81 { CRISV10F_INSN_MOVS_M_B_M, && case_sem_INSN_MOVS_M_B_M },
82 { CRISV10F_INSN_MOVS_M_W_M, && case_sem_INSN_MOVS_M_W_M },
83 { CRISV10F_INSN_MOVU_M_B_M, && case_sem_INSN_MOVU_M_B_M },
84 { CRISV10F_INSN_MOVU_M_W_M, && case_sem_INSN_MOVU_M_W_M },
85 { CRISV10F_INSN_MOVE_R_SPRV10, && case_sem_INSN_MOVE_R_SPRV10 },
86 { CRISV10F_INSN_MOVE_SPR_RV10, && case_sem_INSN_MOVE_SPR_RV10 },
87 { CRISV10F_INSN_RET_TYPE, && case_sem_INSN_RET_TYPE },
88 { CRISV10F_INSN_MOVE_M_SPRV10, && case_sem_INSN_MOVE_M_SPRV10 },
89 { CRISV10F_INSN_MOVE_C_SPRV10_P5, && case_sem_INSN_MOVE_C_SPRV10_P5 },
90 { CRISV10F_INSN_MOVE_C_SPRV10_P9, && case_sem_INSN_MOVE_C_SPRV10_P9 },
91 { CRISV10F_INSN_MOVE_C_SPRV10_P10, && case_sem_INSN_MOVE_C_SPRV10_P10 },
92 { CRISV10F_INSN_MOVE_C_SPRV10_P11, && case_sem_INSN_MOVE_C_SPRV10_P11 },
93 { CRISV10F_INSN_MOVE_C_SPRV10_P12, && case_sem_INSN_MOVE_C_SPRV10_P12 },
94 { CRISV10F_INSN_MOVE_C_SPRV10_P13, && case_sem_INSN_MOVE_C_SPRV10_P13 },
95 { CRISV10F_INSN_MOVE_C_SPRV10_P7, && case_sem_INSN_MOVE_C_SPRV10_P7 },
96 { CRISV10F_INSN_MOVE_C_SPRV10_P14, && case_sem_INSN_MOVE_C_SPRV10_P14 },
97 { CRISV10F_INSN_MOVE_C_SPRV10_P15, && case_sem_INSN_MOVE_C_SPRV10_P15 },
98 { CRISV10F_INSN_MOVE_SPR_MV10, && case_sem_INSN_MOVE_SPR_MV10 },
99 { CRISV10F_INSN_SBFS, && case_sem_INSN_SBFS },
100 { CRISV10F_INSN_MOVEM_R_M, && case_sem_INSN_MOVEM_R_M },
101 { CRISV10F_INSN_MOVEM_M_R, && case_sem_INSN_MOVEM_M_R },
102 { CRISV10F_INSN_MOVEM_M_PC, && case_sem_INSN_MOVEM_M_PC },
103 { CRISV10F_INSN_ADD_B_R, && case_sem_INSN_ADD_B_R },
104 { CRISV10F_INSN_ADD_W_R, && case_sem_INSN_ADD_W_R },
105 { CRISV10F_INSN_ADD_D_R, && case_sem_INSN_ADD_D_R },
106 { CRISV10F_INSN_ADD_M_B_M, && case_sem_INSN_ADD_M_B_M },
107 { CRISV10F_INSN_ADD_M_W_M, && case_sem_INSN_ADD_M_W_M },
108 { CRISV10F_INSN_ADD_M_D_M, && case_sem_INSN_ADD_M_D_M },
109 { CRISV10F_INSN_ADDCBR, && case_sem_INSN_ADDCBR },
110 { CRISV10F_INSN_ADDCWR, && case_sem_INSN_ADDCWR },
111 { CRISV10F_INSN_ADDCDR, && case_sem_INSN_ADDCDR },
112 { CRISV10F_INSN_ADDCPC, && case_sem_INSN_ADDCPC },
113 { CRISV10F_INSN_ADDS_B_R, && case_sem_INSN_ADDS_B_R },
114 { CRISV10F_INSN_ADDS_W_R, && case_sem_INSN_ADDS_W_R },
115 { CRISV10F_INSN_ADDS_M_B_M, && case_sem_INSN_ADDS_M_B_M },
116 { CRISV10F_INSN_ADDS_M_W_M, && case_sem_INSN_ADDS_M_W_M },
117 { CRISV10F_INSN_ADDSCBR, && case_sem_INSN_ADDSCBR },
118 { CRISV10F_INSN_ADDSCWR, && case_sem_INSN_ADDSCWR },
119 { CRISV10F_INSN_ADDSPCPC, && case_sem_INSN_ADDSPCPC },
120 { CRISV10F_INSN_ADDU_B_R, && case_sem_INSN_ADDU_B_R },
121 { CRISV10F_INSN_ADDU_W_R, && case_sem_INSN_ADDU_W_R },
122 { CRISV10F_INSN_ADDU_M_B_M, && case_sem_INSN_ADDU_M_B_M },
123 { CRISV10F_INSN_ADDU_M_W_M, && case_sem_INSN_ADDU_M_W_M },
124 { CRISV10F_INSN_ADDUCBR, && case_sem_INSN_ADDUCBR },
125 { CRISV10F_INSN_ADDUCWR, && case_sem_INSN_ADDUCWR },
126 { CRISV10F_INSN_SUB_B_R, && case_sem_INSN_SUB_B_R },
127 { CRISV10F_INSN_SUB_W_R, && case_sem_INSN_SUB_W_R },
128 { CRISV10F_INSN_SUB_D_R, && case_sem_INSN_SUB_D_R },
129 { CRISV10F_INSN_SUB_M_B_M, && case_sem_INSN_SUB_M_B_M },
130 { CRISV10F_INSN_SUB_M_W_M, && case_sem_INSN_SUB_M_W_M },
131 { CRISV10F_INSN_SUB_M_D_M, && case_sem_INSN_SUB_M_D_M },
132 { CRISV10F_INSN_SUBCBR, && case_sem_INSN_SUBCBR },
133 { CRISV10F_INSN_SUBCWR, && case_sem_INSN_SUBCWR },
134 { CRISV10F_INSN_SUBCDR, && case_sem_INSN_SUBCDR },
135 { CRISV10F_INSN_SUBS_B_R, && case_sem_INSN_SUBS_B_R },
136 { CRISV10F_INSN_SUBS_W_R, && case_sem_INSN_SUBS_W_R },
137 { CRISV10F_INSN_SUBS_M_B_M, && case_sem_INSN_SUBS_M_B_M },
138 { CRISV10F_INSN_SUBS_M_W_M, && case_sem_INSN_SUBS_M_W_M },
139 { CRISV10F_INSN_SUBSCBR, && case_sem_INSN_SUBSCBR },
140 { CRISV10F_INSN_SUBSCWR, && case_sem_INSN_SUBSCWR },
141 { CRISV10F_INSN_SUBU_B_R, && case_sem_INSN_SUBU_B_R },
142 { CRISV10F_INSN_SUBU_W_R, && case_sem_INSN_SUBU_W_R },
143 { CRISV10F_INSN_SUBU_M_B_M, && case_sem_INSN_SUBU_M_B_M },
144 { CRISV10F_INSN_SUBU_M_W_M, && case_sem_INSN_SUBU_M_W_M },
145 { CRISV10F_INSN_SUBUCBR, && case_sem_INSN_SUBUCBR },
146 { CRISV10F_INSN_SUBUCWR, && case_sem_INSN_SUBUCWR },
147 { CRISV10F_INSN_ADDI_B_R, && case_sem_INSN_ADDI_B_R },
148 { CRISV10F_INSN_ADDI_W_R, && case_sem_INSN_ADDI_W_R },
149 { CRISV10F_INSN_ADDI_D_R, && case_sem_INSN_ADDI_D_R },
150 { CRISV10F_INSN_NEG_B_R, && case_sem_INSN_NEG_B_R },
151 { CRISV10F_INSN_NEG_W_R, && case_sem_INSN_NEG_W_R },
152 { CRISV10F_INSN_NEG_D_R, && case_sem_INSN_NEG_D_R },
153 { CRISV10F_INSN_TEST_M_B_M, && case_sem_INSN_TEST_M_B_M },
154 { CRISV10F_INSN_TEST_M_W_M, && case_sem_INSN_TEST_M_W_M },
155 { CRISV10F_INSN_TEST_M_D_M, && case_sem_INSN_TEST_M_D_M },
156 { CRISV10F_INSN_MOVE_R_M_B_M, && case_sem_INSN_MOVE_R_M_B_M },
157 { CRISV10F_INSN_MOVE_R_M_W_M, && case_sem_INSN_MOVE_R_M_W_M },
158 { CRISV10F_INSN_MOVE_R_M_D_M, && case_sem_INSN_MOVE_R_M_D_M },
159 { CRISV10F_INSN_MULS_B, && case_sem_INSN_MULS_B },
160 { CRISV10F_INSN_MULS_W, && case_sem_INSN_MULS_W },
161 { CRISV10F_INSN_MULS_D, && case_sem_INSN_MULS_D },
162 { CRISV10F_INSN_MULU_B, && case_sem_INSN_MULU_B },
163 { CRISV10F_INSN_MULU_W, && case_sem_INSN_MULU_W },
164 { CRISV10F_INSN_MULU_D, && case_sem_INSN_MULU_D },
165 { CRISV10F_INSN_MSTEP, && case_sem_INSN_MSTEP },
166 { CRISV10F_INSN_DSTEP, && case_sem_INSN_DSTEP },
167 { CRISV10F_INSN_ABS, && case_sem_INSN_ABS },
168 { CRISV10F_INSN_AND_B_R, && case_sem_INSN_AND_B_R },
169 { CRISV10F_INSN_AND_W_R, && case_sem_INSN_AND_W_R },
170 { CRISV10F_INSN_AND_D_R, && case_sem_INSN_AND_D_R },
171 { CRISV10F_INSN_AND_M_B_M, && case_sem_INSN_AND_M_B_M },
172 { CRISV10F_INSN_AND_M_W_M, && case_sem_INSN_AND_M_W_M },
173 { CRISV10F_INSN_AND_M_D_M, && case_sem_INSN_AND_M_D_M },
174 { CRISV10F_INSN_ANDCBR, && case_sem_INSN_ANDCBR },
175 { CRISV10F_INSN_ANDCWR, && case_sem_INSN_ANDCWR },
176 { CRISV10F_INSN_ANDCDR, && case_sem_INSN_ANDCDR },
177 { CRISV10F_INSN_ANDQ, && case_sem_INSN_ANDQ },
178 { CRISV10F_INSN_ORR_B_R, && case_sem_INSN_ORR_B_R },
179 { CRISV10F_INSN_ORR_W_R, && case_sem_INSN_ORR_W_R },
180 { CRISV10F_INSN_ORR_D_R, && case_sem_INSN_ORR_D_R },
181 { CRISV10F_INSN_OR_M_B_M, && case_sem_INSN_OR_M_B_M },
182 { CRISV10F_INSN_OR_M_W_M, && case_sem_INSN_OR_M_W_M },
183 { CRISV10F_INSN_OR_M_D_M, && case_sem_INSN_OR_M_D_M },
184 { CRISV10F_INSN_ORCBR, && case_sem_INSN_ORCBR },
185 { CRISV10F_INSN_ORCWR, && case_sem_INSN_ORCWR },
186 { CRISV10F_INSN_ORCDR, && case_sem_INSN_ORCDR },
187 { CRISV10F_INSN_ORQ, && case_sem_INSN_ORQ },
188 { CRISV10F_INSN_XOR, && case_sem_INSN_XOR },
189 { CRISV10F_INSN_SWAP, && case_sem_INSN_SWAP },
190 { CRISV10F_INSN_ASRR_B_R, && case_sem_INSN_ASRR_B_R },
191 { CRISV10F_INSN_ASRR_W_R, && case_sem_INSN_ASRR_W_R },
192 { CRISV10F_INSN_ASRR_D_R, && case_sem_INSN_ASRR_D_R },
193 { CRISV10F_INSN_ASRQ, && case_sem_INSN_ASRQ },
194 { CRISV10F_INSN_LSRR_B_R, && case_sem_INSN_LSRR_B_R },
195 { CRISV10F_INSN_LSRR_W_R, && case_sem_INSN_LSRR_W_R },
196 { CRISV10F_INSN_LSRR_D_R, && case_sem_INSN_LSRR_D_R },
197 { CRISV10F_INSN_LSRQ, && case_sem_INSN_LSRQ },
198 { CRISV10F_INSN_LSLR_B_R, && case_sem_INSN_LSLR_B_R },
199 { CRISV10F_INSN_LSLR_W_R, && case_sem_INSN_LSLR_W_R },
200 { CRISV10F_INSN_LSLR_D_R, && case_sem_INSN_LSLR_D_R },
201 { CRISV10F_INSN_LSLQ, && case_sem_INSN_LSLQ },
202 { CRISV10F_INSN_BTST, && case_sem_INSN_BTST },
203 { CRISV10F_INSN_BTSTQ, && case_sem_INSN_BTSTQ },
204 { CRISV10F_INSN_SETF, && case_sem_INSN_SETF },
205 { CRISV10F_INSN_CLEARF, && case_sem_INSN_CLEARF },
206 { CRISV10F_INSN_BCC_B, && case_sem_INSN_BCC_B },
207 { CRISV10F_INSN_BA_B, && case_sem_INSN_BA_B },
208 { CRISV10F_INSN_BCC_W, && case_sem_INSN_BCC_W },
209 { CRISV10F_INSN_BA_W, && case_sem_INSN_BA_W },
210 { CRISV10F_INSN_JUMP_R, && case_sem_INSN_JUMP_R },
211 { CRISV10F_INSN_JUMP_M, && case_sem_INSN_JUMP_M },
212 { CRISV10F_INSN_JUMP_C, && case_sem_INSN_JUMP_C },
213 { CRISV10F_INSN_BREAK, && case_sem_INSN_BREAK },
214 { CRISV10F_INSN_BOUND_R_B_R, && case_sem_INSN_BOUND_R_B_R },
215 { CRISV10F_INSN_BOUND_R_W_R, && case_sem_INSN_BOUND_R_W_R },
216 { CRISV10F_INSN_BOUND_R_D_R, && case_sem_INSN_BOUND_R_D_R },
217 { CRISV10F_INSN_BOUND_M_B_M, && case_sem_INSN_BOUND_M_B_M },
218 { CRISV10F_INSN_BOUND_M_W_M, && case_sem_INSN_BOUND_M_W_M },
219 { CRISV10F_INSN_BOUND_M_D_M, && case_sem_INSN_BOUND_M_D_M },
220 { CRISV10F_INSN_BOUND_CB, && case_sem_INSN_BOUND_CB },
221 { CRISV10F_INSN_BOUND_CW, && case_sem_INSN_BOUND_CW },
222 { CRISV10F_INSN_BOUND_CD, && case_sem_INSN_BOUND_CD },
223 { CRISV10F_INSN_SCC, && case_sem_INSN_SCC },
224 { CRISV10F_INSN_LZ, && case_sem_INSN_LZ },
225 { CRISV10F_INSN_ADDOQ, && case_sem_INSN_ADDOQ },
226 { CRISV10F_INSN_BDAPQPC, && case_sem_INSN_BDAPQPC },
227 { CRISV10F_INSN_BDAP_32_PC, && case_sem_INSN_BDAP_32_PC },
228 { CRISV10F_INSN_MOVE_M_PCPLUS_P0, && case_sem_INSN_MOVE_M_PCPLUS_P0 },
229 { CRISV10F_INSN_MOVE_M_SPPLUS_P8, && case_sem_INSN_MOVE_M_SPPLUS_P8 },
230 { CRISV10F_INSN_ADDO_M_B_M, && case_sem_INSN_ADDO_M_B_M },
231 { CRISV10F_INSN_ADDO_M_W_M, && case_sem_INSN_ADDO_M_W_M },
232 { CRISV10F_INSN_ADDO_M_D_M, && case_sem_INSN_ADDO_M_D_M },
233 { CRISV10F_INSN_ADDO_CB, && case_sem_INSN_ADDO_CB },
234 { CRISV10F_INSN_ADDO_CW, && case_sem_INSN_ADDO_CW },
235 { CRISV10F_INSN_ADDO_CD, && case_sem_INSN_ADDO_CD },
236 { CRISV10F_INSN_DIP_M, && case_sem_INSN_DIP_M },
237 { CRISV10F_INSN_DIP_C, && case_sem_INSN_DIP_C },
238 { CRISV10F_INSN_ADDI_ACR_B_R, && case_sem_INSN_ADDI_ACR_B_R },
239 { CRISV10F_INSN_ADDI_ACR_W_R, && case_sem_INSN_ADDI_ACR_W_R },
240 { CRISV10F_INSN_ADDI_ACR_D_R, && case_sem_INSN_ADDI_ACR_D_R },
241 { CRISV10F_INSN_BIAP_PC_B_R, && case_sem_INSN_BIAP_PC_B_R },
242 { CRISV10F_INSN_BIAP_PC_W_R, && case_sem_INSN_BIAP_PC_W_R },
243 { CRISV10F_INSN_BIAP_PC_D_R, && case_sem_INSN_BIAP_PC_D_R },
244 { 0, 0 }
245 };
246 int i;
247
248 for (i = 0; labels[i].label != 0; ++i)
249 {
250 #if FAST_P
251 CPU_IDESC (current_cpu) [labels[i].index].sem_fast_lab = labels[i].label;
252 #else
253 CPU_IDESC (current_cpu) [labels[i].index].sem_full_lab = labels[i].label;
254 #endif
255 }
256
257 #undef DEFINE_LABELS
258 #endif /* DEFINE_LABELS */
259
260 #ifdef DEFINE_SWITCH
261
262 /* If hyper-fast [well not unnecessarily slow] execution is selected, turn
263 off frills like tracing and profiling. */
264 /* FIXME: A better way would be to have TRACE_RESULT check for something
265 that can cause it to be optimized out. Another way would be to emit
266 special handlers into the instruction "stream". */
267
268 #if FAST_P
269 #undef TRACE_RESULT
270 #define TRACE_RESULT(cpu, abuf, name, type, val)
271 #endif
272
273 #undef GET_ATTR
274 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
275
276 {
277
278 #if WITH_SCACHE_PBB
279
280 /* Branch to next handler without going around main loop. */
281 #define NEXT(vpc) goto * SEM_ARGBUF (vpc) -> semantic.sem_case
282 SWITCH (sem, SEM_ARGBUF (vpc) -> semantic.sem_case)
283
284 #else /* ! WITH_SCACHE_PBB */
285
286 #define NEXT(vpc) BREAK (sem)
287 #ifdef __GNUC__
288 #if FAST_P
289 SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_fast_lab)
290 #else
291 SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_full_lab)
292 #endif
293 #else
294 SWITCH (sem, SEM_ARGBUF (sc) -> idesc->num)
295 #endif
296
297 #endif /* ! WITH_SCACHE_PBB */
298
299 {
300
301 CASE (sem, INSN_X_INVALID) : /* --invalid-- */
302 {
303 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
305 #define FLD(f) abuf->fields.sfmt_empty.f
306 int UNUSED written = 0;
307 IADDR UNUSED pc = abuf->addr;
308 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
309
310 {
311 /* Update the recorded pc in the cpu state struct.
312 Only necessary for WITH_SCACHE case, but to avoid the
313 conditional compilation .... */
314 SET_H_PC (pc);
315 /* Virtual insns have zero size. Overwrite vpc with address of next insn
316 using the default-insn-bitsize spec. When executing insns in parallel
317 we may want to queue the fault and continue execution. */
318 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
319 vpc = sim_engine_invalid_insn (current_cpu, pc, vpc);
320 }
321
322 #undef FLD
323 }
324 NEXT (vpc);
325
326 CASE (sem, INSN_X_AFTER) : /* --after-- */
327 {
328 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
329 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
330 #define FLD(f) abuf->fields.sfmt_empty.f
331 int UNUSED written = 0;
332 IADDR UNUSED pc = abuf->addr;
333 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
334
335 {
336 #if WITH_SCACHE_PBB_CRISV10F
337 crisv10f_pbb_after (current_cpu, sem_arg);
338 #endif
339 }
340
341 #undef FLD
342 }
343 NEXT (vpc);
344
345 CASE (sem, INSN_X_BEFORE) : /* --before-- */
346 {
347 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
348 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
349 #define FLD(f) abuf->fields.sfmt_empty.f
350 int UNUSED written = 0;
351 IADDR UNUSED pc = abuf->addr;
352 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
353
354 {
355 #if WITH_SCACHE_PBB_CRISV10F
356 crisv10f_pbb_before (current_cpu, sem_arg);
357 #endif
358 }
359
360 #undef FLD
361 }
362 NEXT (vpc);
363
364 CASE (sem, INSN_X_CTI_CHAIN) : /* --cti-chain-- */
365 {
366 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
367 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
368 #define FLD(f) abuf->fields.sfmt_empty.f
369 int UNUSED written = 0;
370 IADDR UNUSED pc = abuf->addr;
371 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
372
373 {
374 #if WITH_SCACHE_PBB_CRISV10F
375 #ifdef DEFINE_SWITCH
376 vpc = crisv10f_pbb_cti_chain (current_cpu, sem_arg,
377 pbb_br_type, pbb_br_npc);
378 BREAK (sem);
379 #else
380 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
381 vpc = crisv10f_pbb_cti_chain (current_cpu, sem_arg,
382 CPU_PBB_BR_TYPE (current_cpu),
383 CPU_PBB_BR_NPC (current_cpu));
384 #endif
385 #endif
386 }
387
388 #undef FLD
389 }
390 NEXT (vpc);
391
392 CASE (sem, INSN_X_CHAIN) : /* --chain-- */
393 {
394 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
395 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
396 #define FLD(f) abuf->fields.sfmt_empty.f
397 int UNUSED written = 0;
398 IADDR UNUSED pc = abuf->addr;
399 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
400
401 {
402 #if WITH_SCACHE_PBB_CRISV10F
403 vpc = crisv10f_pbb_chain (current_cpu, sem_arg);
404 #ifdef DEFINE_SWITCH
405 BREAK (sem);
406 #endif
407 #endif
408 }
409
410 #undef FLD
411 }
412 NEXT (vpc);
413
414 CASE (sem, INSN_X_BEGIN) : /* --begin-- */
415 {
416 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
417 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
418 #define FLD(f) abuf->fields.sfmt_empty.f
419 int UNUSED written = 0;
420 IADDR UNUSED pc = abuf->addr;
421 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
422
423 {
424 #if WITH_SCACHE_PBB_CRISV10F
425 #if defined DEFINE_SWITCH || defined FAST_P
426 /* In the switch case FAST_P is a constant, allowing several optimizations
427 in any called inline functions. */
428 vpc = crisv10f_pbb_begin (current_cpu, FAST_P);
429 #else
430 #if 0 /* cgen engine can't handle dynamic fast/full switching yet. */
431 vpc = crisv10f_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
432 #else
433 vpc = crisv10f_pbb_begin (current_cpu, 0);
434 #endif
435 #endif
436 #endif
437 }
438
439 #undef FLD
440 }
441 NEXT (vpc);
442
443 CASE (sem, INSN_NOP) : /* nop */
444 {
445 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
446 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
447 #define FLD(f) abuf->fields.sfmt_empty.f
448 int UNUSED written = 0;
449 IADDR UNUSED pc = abuf->addr;
450 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
451
452 {
453 {
454 BI opval = 0;
455 CPU (h_xbit) = opval;
456 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
457 }
458 {
459 BI opval = 0;
460 SET_H_INSN_PREFIXED_P (opval);
461 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
462 }
463 }
464
465 #undef FLD
466 }
467 NEXT (vpc);
468
469 CASE (sem, INSN_MOVE_B_R) : /* move.b move.m ${Rs},${Rd} */
470 {
471 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
472 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
473 #define FLD(f) abuf->fields.sfmt_add_b_r.f
474 int UNUSED written = 0;
475 IADDR UNUSED pc = abuf->addr;
476 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
477
478 {
479 QI tmp_newval;
480 tmp_newval = GET_H_GR (FLD (f_operand1));
481 {
482 SI tmp_oldregval;
483 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
484 {
485 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
486 SET_H_GR (FLD (f_operand2), opval);
487 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
488 }
489 }
490 {
491 {
492 BI opval = LTQI (tmp_newval, 0);
493 CPU (h_nbit) = opval;
494 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
495 }
496 {
497 BI opval = ANDIF (EQQI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
498 CPU (h_zbit) = opval;
499 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
500 }
501 SET_H_CBIT_MOVE (0);
502 SET_H_VBIT_MOVE (0);
503 {
504 {
505 BI opval = 0;
506 CPU (h_xbit) = opval;
507 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
508 }
509 {
510 BI opval = 0;
511 SET_H_INSN_PREFIXED_P (opval);
512 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
513 }
514 }
515 }
516 }
517
518 #undef FLD
519 }
520 NEXT (vpc);
521
522 CASE (sem, INSN_MOVE_W_R) : /* move.w move.m ${Rs},${Rd} */
523 {
524 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
525 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
526 #define FLD(f) abuf->fields.sfmt_add_b_r.f
527 int UNUSED written = 0;
528 IADDR UNUSED pc = abuf->addr;
529 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
530
531 {
532 HI tmp_newval;
533 tmp_newval = GET_H_GR (FLD (f_operand1));
534 {
535 SI tmp_oldregval;
536 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
537 {
538 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
539 SET_H_GR (FLD (f_operand2), opval);
540 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
541 }
542 }
543 {
544 {
545 BI opval = LTHI (tmp_newval, 0);
546 CPU (h_nbit) = opval;
547 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
548 }
549 {
550 BI opval = ANDIF (EQHI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
551 CPU (h_zbit) = opval;
552 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
553 }
554 SET_H_CBIT_MOVE (0);
555 SET_H_VBIT_MOVE (0);
556 {
557 {
558 BI opval = 0;
559 CPU (h_xbit) = opval;
560 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
561 }
562 {
563 BI opval = 0;
564 SET_H_INSN_PREFIXED_P (opval);
565 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
566 }
567 }
568 }
569 }
570
571 #undef FLD
572 }
573 NEXT (vpc);
574
575 CASE (sem, INSN_MOVE_D_R) : /* move.d move.m ${Rs},${Rd} */
576 {
577 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
578 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
579 #define FLD(f) abuf->fields.sfmt_add_b_r.f
580 int UNUSED written = 0;
581 IADDR UNUSED pc = abuf->addr;
582 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
583
584 {
585 SI tmp_newval;
586 tmp_newval = GET_H_GR (FLD (f_operand1));
587 {
588 SI opval = tmp_newval;
589 SET_H_GR (FLD (f_operand2), opval);
590 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
591 }
592 {
593 {
594 BI opval = LTSI (tmp_newval, 0);
595 CPU (h_nbit) = opval;
596 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
597 }
598 {
599 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
600 CPU (h_zbit) = opval;
601 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
602 }
603 SET_H_CBIT_MOVE (0);
604 SET_H_VBIT_MOVE (0);
605 {
606 {
607 BI opval = 0;
608 CPU (h_xbit) = opval;
609 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
610 }
611 {
612 BI opval = 0;
613 SET_H_INSN_PREFIXED_P (opval);
614 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
615 }
616 }
617 }
618 }
619
620 #undef FLD
621 }
622 NEXT (vpc);
623
624 CASE (sem, INSN_MOVEPCR) : /* move.d PC,${Rd} */
625 {
626 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
627 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
628 #define FLD(f) abuf->fields.sfmt_moveq.f
629 int UNUSED written = 0;
630 IADDR UNUSED pc = abuf->addr;
631 SEM_BRANCH_INIT
632 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
633
634 {
635 SI tmp_pcval;
636 tmp_pcval = ADDSI (pc, 2);
637 {
638 SI opval = tmp_pcval;
639 SET_H_GR (FLD (f_operand2), opval);
640 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
641 }
642 {
643 {
644 BI opval = LTSI (tmp_pcval, 0);
645 CPU (h_nbit) = opval;
646 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
647 }
648 {
649 BI opval = ANDIF (EQSI (tmp_pcval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
650 CPU (h_zbit) = opval;
651 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
652 }
653 SET_H_CBIT_MOVE (0);
654 SET_H_VBIT_MOVE (0);
655 {
656 {
657 BI opval = 0;
658 CPU (h_xbit) = opval;
659 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
660 }
661 {
662 BI opval = 0;
663 SET_H_INSN_PREFIXED_P (opval);
664 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
665 }
666 }
667 }
668 }
669
670 SEM_BRANCH_FINI (vpc);
671 #undef FLD
672 }
673 NEXT (vpc);
674
675 CASE (sem, INSN_MOVEQ) : /* moveq $i,$Rd */
676 {
677 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
678 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
679 #define FLD(f) abuf->fields.sfmt_moveq.f
680 int UNUSED written = 0;
681 IADDR UNUSED pc = abuf->addr;
682 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
683
684 {
685 SI tmp_newval;
686 tmp_newval = FLD (f_s6);
687 {
688 SI opval = tmp_newval;
689 SET_H_GR (FLD (f_operand2), opval);
690 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
691 }
692 {
693 SET_H_NBIT_MOVE (LTSI (tmp_newval, 0));
694 SET_H_ZBIT_MOVE (ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))));
695 SET_H_CBIT_MOVE (0);
696 SET_H_VBIT_MOVE (0);
697 {
698 {
699 BI opval = 0;
700 CPU (h_xbit) = opval;
701 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
702 }
703 {
704 BI opval = 0;
705 SET_H_INSN_PREFIXED_P (opval);
706 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
707 }
708 }
709 }
710 }
711
712 #undef FLD
713 }
714 NEXT (vpc);
715
716 CASE (sem, INSN_MOVS_B_R) : /* movs.b movs.m ${Rs},${Rd} */
717 {
718 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
719 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
720 #define FLD(f) abuf->fields.sfmt_muls_b.f
721 int UNUSED written = 0;
722 IADDR UNUSED pc = abuf->addr;
723 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
724
725 {
726 QI tmp_tmpops;
727 SI tmp_newval;
728 tmp_tmpops = GET_H_GR (FLD (f_operand1));
729 tmp_newval = EXTQISI (tmp_tmpops);
730 {
731 SI opval = tmp_newval;
732 SET_H_GR (FLD (f_operand2), opval);
733 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
734 }
735 {
736 {
737 BI opval = LTSI (tmp_newval, 0);
738 CPU (h_nbit) = opval;
739 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
740 }
741 {
742 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
743 CPU (h_zbit) = opval;
744 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
745 }
746 SET_H_CBIT_MOVE (0);
747 SET_H_VBIT_MOVE (0);
748 {
749 {
750 BI opval = 0;
751 CPU (h_xbit) = opval;
752 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
753 }
754 {
755 BI opval = 0;
756 SET_H_INSN_PREFIXED_P (opval);
757 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
758 }
759 }
760 }
761 }
762
763 #undef FLD
764 }
765 NEXT (vpc);
766
767 CASE (sem, INSN_MOVS_W_R) : /* movs.w movs.m ${Rs},${Rd} */
768 {
769 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
770 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
771 #define FLD(f) abuf->fields.sfmt_muls_b.f
772 int UNUSED written = 0;
773 IADDR UNUSED pc = abuf->addr;
774 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
775
776 {
777 HI tmp_tmpops;
778 SI tmp_newval;
779 tmp_tmpops = GET_H_GR (FLD (f_operand1));
780 tmp_newval = EXTHISI (tmp_tmpops);
781 {
782 SI opval = tmp_newval;
783 SET_H_GR (FLD (f_operand2), opval);
784 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
785 }
786 {
787 {
788 BI opval = LTSI (tmp_newval, 0);
789 CPU (h_nbit) = opval;
790 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
791 }
792 {
793 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
794 CPU (h_zbit) = opval;
795 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
796 }
797 SET_H_CBIT_MOVE (0);
798 SET_H_VBIT_MOVE (0);
799 {
800 {
801 BI opval = 0;
802 CPU (h_xbit) = opval;
803 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
804 }
805 {
806 BI opval = 0;
807 SET_H_INSN_PREFIXED_P (opval);
808 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
809 }
810 }
811 }
812 }
813
814 #undef FLD
815 }
816 NEXT (vpc);
817
818 CASE (sem, INSN_MOVU_B_R) : /* movu.b movu.m ${Rs},${Rd} */
819 {
820 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
822 #define FLD(f) abuf->fields.sfmt_muls_b.f
823 int UNUSED written = 0;
824 IADDR UNUSED pc = abuf->addr;
825 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
826
827 {
828 QI tmp_tmpops;
829 SI tmp_newval;
830 tmp_tmpops = GET_H_GR (FLD (f_operand1));
831 tmp_newval = ZEXTQISI (tmp_tmpops);
832 {
833 SI opval = tmp_newval;
834 SET_H_GR (FLD (f_operand2), opval);
835 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
836 }
837 {
838 {
839 BI opval = LTSI (tmp_newval, 0);
840 CPU (h_nbit) = opval;
841 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
842 }
843 {
844 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
845 CPU (h_zbit) = opval;
846 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
847 }
848 SET_H_CBIT_MOVE (0);
849 SET_H_VBIT_MOVE (0);
850 {
851 {
852 BI opval = 0;
853 CPU (h_xbit) = opval;
854 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
855 }
856 {
857 BI opval = 0;
858 SET_H_INSN_PREFIXED_P (opval);
859 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
860 }
861 }
862 }
863 }
864
865 #undef FLD
866 }
867 NEXT (vpc);
868
869 CASE (sem, INSN_MOVU_W_R) : /* movu.w movu.m ${Rs},${Rd} */
870 {
871 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
872 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
873 #define FLD(f) abuf->fields.sfmt_muls_b.f
874 int UNUSED written = 0;
875 IADDR UNUSED pc = abuf->addr;
876 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
877
878 {
879 HI tmp_tmpops;
880 SI tmp_newval;
881 tmp_tmpops = GET_H_GR (FLD (f_operand1));
882 tmp_newval = ZEXTHISI (tmp_tmpops);
883 {
884 SI opval = tmp_newval;
885 SET_H_GR (FLD (f_operand2), opval);
886 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
887 }
888 {
889 {
890 BI opval = LTSI (tmp_newval, 0);
891 CPU (h_nbit) = opval;
892 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
893 }
894 {
895 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
896 CPU (h_zbit) = opval;
897 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
898 }
899 SET_H_CBIT_MOVE (0);
900 SET_H_VBIT_MOVE (0);
901 {
902 {
903 BI opval = 0;
904 CPU (h_xbit) = opval;
905 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
906 }
907 {
908 BI opval = 0;
909 SET_H_INSN_PREFIXED_P (opval);
910 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
911 }
912 }
913 }
914 }
915
916 #undef FLD
917 }
918 NEXT (vpc);
919
920 CASE (sem, INSN_MOVECBR) : /* move.b ${sconst8},${Rd} */
921 {
922 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
923 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
924 #define FLD(f) abuf->fields.sfmt_addcbr.f
925 int UNUSED written = 0;
926 IADDR UNUSED pc = abuf->addr;
927 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
928
929 {
930 QI tmp_newval;
931 tmp_newval = FLD (f_indir_pc__byte);
932 {
933 SI tmp_oldregval;
934 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
935 {
936 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
937 SET_H_GR (FLD (f_operand2), opval);
938 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
939 }
940 }
941 {
942 {
943 BI opval = LTQI (tmp_newval, 0);
944 CPU (h_nbit) = opval;
945 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
946 }
947 {
948 BI opval = ANDIF (EQQI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
949 CPU (h_zbit) = opval;
950 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
951 }
952 SET_H_CBIT_MOVE (0);
953 SET_H_VBIT_MOVE (0);
954 {
955 {
956 BI opval = 0;
957 CPU (h_xbit) = opval;
958 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
959 }
960 {
961 BI opval = 0;
962 SET_H_INSN_PREFIXED_P (opval);
963 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
964 }
965 }
966 }
967 }
968
969 #undef FLD
970 }
971 NEXT (vpc);
972
973 CASE (sem, INSN_MOVECWR) : /* move.w ${sconst16},${Rd} */
974 {
975 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
976 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
977 #define FLD(f) abuf->fields.sfmt_addcwr.f
978 int UNUSED written = 0;
979 IADDR UNUSED pc = abuf->addr;
980 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
981
982 {
983 HI tmp_newval;
984 tmp_newval = FLD (f_indir_pc__word);
985 {
986 SI tmp_oldregval;
987 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
988 {
989 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
990 SET_H_GR (FLD (f_operand2), opval);
991 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
992 }
993 }
994 {
995 {
996 BI opval = LTHI (tmp_newval, 0);
997 CPU (h_nbit) = opval;
998 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
999 }
1000 {
1001 BI opval = ANDIF (EQHI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1002 CPU (h_zbit) = opval;
1003 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1004 }
1005 SET_H_CBIT_MOVE (0);
1006 SET_H_VBIT_MOVE (0);
1007 {
1008 {
1009 BI opval = 0;
1010 CPU (h_xbit) = opval;
1011 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1012 }
1013 {
1014 BI opval = 0;
1015 SET_H_INSN_PREFIXED_P (opval);
1016 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1017 }
1018 }
1019 }
1020 }
1021
1022 #undef FLD
1023 }
1024 NEXT (vpc);
1025
1026 CASE (sem, INSN_MOVECDR) : /* move.d ${const32},${Rd} */
1027 {
1028 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1029 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1030 #define FLD(f) abuf->fields.sfmt_bound_cd.f
1031 int UNUSED written = 0;
1032 IADDR UNUSED pc = abuf->addr;
1033 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
1034
1035 {
1036 SI tmp_newval;
1037 tmp_newval = FLD (f_indir_pc__dword);
1038 {
1039 SI opval = tmp_newval;
1040 SET_H_GR (FLD (f_operand2), opval);
1041 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1042 }
1043 {
1044 {
1045 BI opval = LTSI (tmp_newval, 0);
1046 CPU (h_nbit) = opval;
1047 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1048 }
1049 {
1050 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1051 CPU (h_zbit) = opval;
1052 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1053 }
1054 SET_H_CBIT_MOVE (0);
1055 SET_H_VBIT_MOVE (0);
1056 {
1057 {
1058 BI opval = 0;
1059 CPU (h_xbit) = opval;
1060 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1061 }
1062 {
1063 BI opval = 0;
1064 SET_H_INSN_PREFIXED_P (opval);
1065 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1066 }
1067 }
1068 }
1069 }
1070
1071 #undef FLD
1072 }
1073 NEXT (vpc);
1074
1075 CASE (sem, INSN_MOVSCBR) : /* movs.b ${sconst8},${Rd} */
1076 {
1077 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1078 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1079 #define FLD(f) abuf->fields.sfmt_bound_cb.f
1080 int UNUSED written = 0;
1081 IADDR UNUSED pc = abuf->addr;
1082 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1083
1084 {
1085 SI tmp_newval;
1086 tmp_newval = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
1087 {
1088 SI opval = tmp_newval;
1089 SET_H_GR (FLD (f_operand2), opval);
1090 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1091 }
1092 {
1093 {
1094 BI opval = LTSI (tmp_newval, 0);
1095 CPU (h_nbit) = opval;
1096 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1097 }
1098 {
1099 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1100 CPU (h_zbit) = opval;
1101 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1102 }
1103 SET_H_CBIT_MOVE (0);
1104 SET_H_VBIT_MOVE (0);
1105 {
1106 {
1107 BI opval = 0;
1108 CPU (h_xbit) = opval;
1109 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1110 }
1111 {
1112 BI opval = 0;
1113 SET_H_INSN_PREFIXED_P (opval);
1114 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1115 }
1116 }
1117 }
1118 }
1119
1120 #undef FLD
1121 }
1122 NEXT (vpc);
1123
1124 CASE (sem, INSN_MOVSCWR) : /* movs.w ${sconst16},${Rd} */
1125 {
1126 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1127 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1128 #define FLD(f) abuf->fields.sfmt_bound_cw.f
1129 int UNUSED written = 0;
1130 IADDR UNUSED pc = abuf->addr;
1131 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1132
1133 {
1134 SI tmp_newval;
1135 tmp_newval = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
1136 {
1137 SI opval = tmp_newval;
1138 SET_H_GR (FLD (f_operand2), opval);
1139 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1140 }
1141 {
1142 {
1143 BI opval = LTSI (tmp_newval, 0);
1144 CPU (h_nbit) = opval;
1145 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1146 }
1147 {
1148 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1149 CPU (h_zbit) = opval;
1150 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1151 }
1152 SET_H_CBIT_MOVE (0);
1153 SET_H_VBIT_MOVE (0);
1154 {
1155 {
1156 BI opval = 0;
1157 CPU (h_xbit) = opval;
1158 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1159 }
1160 {
1161 BI opval = 0;
1162 SET_H_INSN_PREFIXED_P (opval);
1163 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1164 }
1165 }
1166 }
1167 }
1168
1169 #undef FLD
1170 }
1171 NEXT (vpc);
1172
1173 CASE (sem, INSN_MOVUCBR) : /* movu.b ${uconst8},${Rd} */
1174 {
1175 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1176 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1177 #define FLD(f) abuf->fields.sfmt_bound_cb.f
1178 int UNUSED written = 0;
1179 IADDR UNUSED pc = abuf->addr;
1180 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1181
1182 {
1183 SI tmp_newval;
1184 tmp_newval = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
1185 {
1186 SI opval = tmp_newval;
1187 SET_H_GR (FLD (f_operand2), opval);
1188 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1189 }
1190 {
1191 {
1192 BI opval = LTSI (tmp_newval, 0);
1193 CPU (h_nbit) = opval;
1194 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1195 }
1196 {
1197 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1198 CPU (h_zbit) = opval;
1199 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1200 }
1201 SET_H_CBIT_MOVE (0);
1202 SET_H_VBIT_MOVE (0);
1203 {
1204 {
1205 BI opval = 0;
1206 CPU (h_xbit) = opval;
1207 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1208 }
1209 {
1210 BI opval = 0;
1211 SET_H_INSN_PREFIXED_P (opval);
1212 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1213 }
1214 }
1215 }
1216 }
1217
1218 #undef FLD
1219 }
1220 NEXT (vpc);
1221
1222 CASE (sem, INSN_MOVUCWR) : /* movu.w ${uconst16},${Rd} */
1223 {
1224 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1225 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1226 #define FLD(f) abuf->fields.sfmt_bound_cw.f
1227 int UNUSED written = 0;
1228 IADDR UNUSED pc = abuf->addr;
1229 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1230
1231 {
1232 SI tmp_newval;
1233 tmp_newval = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
1234 {
1235 SI opval = tmp_newval;
1236 SET_H_GR (FLD (f_operand2), opval);
1237 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1238 }
1239 {
1240 {
1241 BI opval = LTSI (tmp_newval, 0);
1242 CPU (h_nbit) = opval;
1243 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1244 }
1245 {
1246 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1247 CPU (h_zbit) = opval;
1248 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1249 }
1250 SET_H_CBIT_MOVE (0);
1251 SET_H_VBIT_MOVE (0);
1252 {
1253 {
1254 BI opval = 0;
1255 CPU (h_xbit) = opval;
1256 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1257 }
1258 {
1259 BI opval = 0;
1260 SET_H_INSN_PREFIXED_P (opval);
1261 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1262 }
1263 }
1264 }
1265 }
1266
1267 #undef FLD
1268 }
1269 NEXT (vpc);
1270
1271 CASE (sem, INSN_ADDQ) : /* addq $j,$Rd */
1272 {
1273 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1274 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1275 #define FLD(f) abuf->fields.sfmt_addq.f
1276 int UNUSED written = 0;
1277 IADDR UNUSED pc = abuf->addr;
1278 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1279
1280 {
1281 SI tmp_tmpopd;
1282 SI tmp_tmpops;
1283 BI tmp_carry;
1284 SI tmp_newval;
1285 tmp_tmpops = FLD (f_u6);
1286 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1287 tmp_carry = CPU (h_cbit);
1288 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1289 {
1290 SI opval = tmp_newval;
1291 SET_H_GR (FLD (f_operand2), opval);
1292 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1293 }
1294 {
1295 {
1296 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
1297 CPU (h_cbit) = opval;
1298 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1299 }
1300 {
1301 BI opval = LTSI (tmp_newval, 0);
1302 CPU (h_nbit) = opval;
1303 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1304 }
1305 {
1306 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1307 CPU (h_zbit) = opval;
1308 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1309 }
1310 {
1311 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
1312 CPU (h_vbit) = opval;
1313 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1314 }
1315 {
1316 {
1317 BI opval = 0;
1318 CPU (h_xbit) = opval;
1319 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1320 }
1321 {
1322 BI opval = 0;
1323 SET_H_INSN_PREFIXED_P (opval);
1324 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1325 }
1326 }
1327 }
1328 }
1329
1330 #undef FLD
1331 }
1332 NEXT (vpc);
1333
1334 CASE (sem, INSN_SUBQ) : /* subq $j,$Rd */
1335 {
1336 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1337 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1338 #define FLD(f) abuf->fields.sfmt_addq.f
1339 int UNUSED written = 0;
1340 IADDR UNUSED pc = abuf->addr;
1341 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1342
1343 {
1344 SI tmp_tmpopd;
1345 SI tmp_tmpops;
1346 BI tmp_carry;
1347 SI tmp_newval;
1348 tmp_tmpops = FLD (f_u6);
1349 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1350 tmp_carry = CPU (h_cbit);
1351 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1352 {
1353 SI opval = tmp_newval;
1354 SET_H_GR (FLD (f_operand2), opval);
1355 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1356 }
1357 {
1358 {
1359 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
1360 CPU (h_cbit) = opval;
1361 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1362 }
1363 {
1364 BI opval = LTSI (tmp_newval, 0);
1365 CPU (h_nbit) = opval;
1366 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1367 }
1368 {
1369 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1370 CPU (h_zbit) = opval;
1371 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1372 }
1373 {
1374 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
1375 CPU (h_vbit) = opval;
1376 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1377 }
1378 {
1379 {
1380 BI opval = 0;
1381 CPU (h_xbit) = opval;
1382 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1383 }
1384 {
1385 BI opval = 0;
1386 SET_H_INSN_PREFIXED_P (opval);
1387 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1388 }
1389 }
1390 }
1391 }
1392
1393 #undef FLD
1394 }
1395 NEXT (vpc);
1396
1397 CASE (sem, INSN_CMP_R_B_R) : /* cmp-r.b $Rs,$Rd */
1398 {
1399 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1400 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1401 #define FLD(f) abuf->fields.sfmt_add_b_r.f
1402 int UNUSED written = 0;
1403 IADDR UNUSED pc = abuf->addr;
1404 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1405
1406 {
1407 QI tmp_tmpopd;
1408 QI tmp_tmpops;
1409 BI tmp_carry;
1410 QI tmp_newval;
1411 tmp_tmpops = GET_H_GR (FLD (f_operand1));
1412 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1413 tmp_carry = CPU (h_cbit);
1414 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1415 ((void) 0); /*nop*/
1416 {
1417 {
1418 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
1419 CPU (h_cbit) = opval;
1420 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1421 }
1422 {
1423 BI opval = LTQI (tmp_newval, 0);
1424 CPU (h_nbit) = opval;
1425 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1426 }
1427 {
1428 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1429 CPU (h_zbit) = opval;
1430 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1431 }
1432 {
1433 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
1434 CPU (h_vbit) = opval;
1435 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1436 }
1437 {
1438 {
1439 BI opval = 0;
1440 CPU (h_xbit) = opval;
1441 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1442 }
1443 {
1444 BI opval = 0;
1445 SET_H_INSN_PREFIXED_P (opval);
1446 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1447 }
1448 }
1449 }
1450 }
1451
1452 #undef FLD
1453 }
1454 NEXT (vpc);
1455
1456 CASE (sem, INSN_CMP_R_W_R) : /* cmp-r.w $Rs,$Rd */
1457 {
1458 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1459 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1460 #define FLD(f) abuf->fields.sfmt_add_b_r.f
1461 int UNUSED written = 0;
1462 IADDR UNUSED pc = abuf->addr;
1463 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1464
1465 {
1466 HI tmp_tmpopd;
1467 HI tmp_tmpops;
1468 BI tmp_carry;
1469 HI tmp_newval;
1470 tmp_tmpops = GET_H_GR (FLD (f_operand1));
1471 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1472 tmp_carry = CPU (h_cbit);
1473 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1474 ((void) 0); /*nop*/
1475 {
1476 {
1477 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
1478 CPU (h_cbit) = opval;
1479 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1480 }
1481 {
1482 BI opval = LTHI (tmp_newval, 0);
1483 CPU (h_nbit) = opval;
1484 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1485 }
1486 {
1487 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1488 CPU (h_zbit) = opval;
1489 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1490 }
1491 {
1492 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
1493 CPU (h_vbit) = opval;
1494 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1495 }
1496 {
1497 {
1498 BI opval = 0;
1499 CPU (h_xbit) = opval;
1500 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1501 }
1502 {
1503 BI opval = 0;
1504 SET_H_INSN_PREFIXED_P (opval);
1505 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1506 }
1507 }
1508 }
1509 }
1510
1511 #undef FLD
1512 }
1513 NEXT (vpc);
1514
1515 CASE (sem, INSN_CMP_R_D_R) : /* cmp-r.d $Rs,$Rd */
1516 {
1517 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1518 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1519 #define FLD(f) abuf->fields.sfmt_add_b_r.f
1520 int UNUSED written = 0;
1521 IADDR UNUSED pc = abuf->addr;
1522 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1523
1524 {
1525 SI tmp_tmpopd;
1526 SI tmp_tmpops;
1527 BI tmp_carry;
1528 SI tmp_newval;
1529 tmp_tmpops = GET_H_GR (FLD (f_operand1));
1530 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1531 tmp_carry = CPU (h_cbit);
1532 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1533 ((void) 0); /*nop*/
1534 {
1535 {
1536 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
1537 CPU (h_cbit) = opval;
1538 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1539 }
1540 {
1541 BI opval = LTSI (tmp_newval, 0);
1542 CPU (h_nbit) = opval;
1543 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1544 }
1545 {
1546 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1547 CPU (h_zbit) = opval;
1548 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1549 }
1550 {
1551 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
1552 CPU (h_vbit) = opval;
1553 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1554 }
1555 {
1556 {
1557 BI opval = 0;
1558 CPU (h_xbit) = opval;
1559 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1560 }
1561 {
1562 BI opval = 0;
1563 SET_H_INSN_PREFIXED_P (opval);
1564 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1565 }
1566 }
1567 }
1568 }
1569
1570 #undef FLD
1571 }
1572 NEXT (vpc);
1573
1574 CASE (sem, INSN_CMP_M_B_M) : /* cmp-m.b [${Rs}${inc}],${Rd} */
1575 {
1576 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1577 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1578 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
1579 int UNUSED written = 0;
1580 IADDR UNUSED pc = abuf->addr;
1581 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1582
1583 {
1584 QI tmp_tmpopd;
1585 QI tmp_tmpops;
1586 BI tmp_carry;
1587 QI tmp_newval;
1588 tmp_tmpops = ({ SI tmp_addr;
1589 QI tmp_tmp_mem;
1590 BI tmp_postinc;
1591 tmp_postinc = FLD (f_memmode);
1592 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
1593 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
1594 ; if (NEBI (tmp_postinc, 0)) {
1595 {
1596 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
1597 tmp_addr = ADDSI (tmp_addr, 1);
1598 }
1599 {
1600 SI opval = tmp_addr;
1601 SET_H_GR (FLD (f_operand1), opval);
1602 written |= (1 << 9);
1603 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1604 }
1605 }
1606 }
1607 ; tmp_tmp_mem; });
1608 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1609 tmp_carry = CPU (h_cbit);
1610 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1611 ((void) 0); /*nop*/
1612 {
1613 {
1614 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
1615 CPU (h_cbit) = opval;
1616 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1617 }
1618 {
1619 BI opval = LTQI (tmp_newval, 0);
1620 CPU (h_nbit) = opval;
1621 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1622 }
1623 {
1624 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1625 CPU (h_zbit) = opval;
1626 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1627 }
1628 {
1629 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
1630 CPU (h_vbit) = opval;
1631 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1632 }
1633 {
1634 {
1635 BI opval = 0;
1636 CPU (h_xbit) = opval;
1637 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1638 }
1639 {
1640 BI opval = 0;
1641 SET_H_INSN_PREFIXED_P (opval);
1642 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1643 }
1644 }
1645 }
1646 }
1647
1648 abuf->written = written;
1649 #undef FLD
1650 }
1651 NEXT (vpc);
1652
1653 CASE (sem, INSN_CMP_M_W_M) : /* cmp-m.w [${Rs}${inc}],${Rd} */
1654 {
1655 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1656 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1657 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
1658 int UNUSED written = 0;
1659 IADDR UNUSED pc = abuf->addr;
1660 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1661
1662 {
1663 HI tmp_tmpopd;
1664 HI tmp_tmpops;
1665 BI tmp_carry;
1666 HI tmp_newval;
1667 tmp_tmpops = ({ SI tmp_addr;
1668 HI tmp_tmp_mem;
1669 BI tmp_postinc;
1670 tmp_postinc = FLD (f_memmode);
1671 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
1672 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
1673 ; if (NEBI (tmp_postinc, 0)) {
1674 {
1675 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
1676 tmp_addr = ADDSI (tmp_addr, 2);
1677 }
1678 {
1679 SI opval = tmp_addr;
1680 SET_H_GR (FLD (f_operand1), opval);
1681 written |= (1 << 9);
1682 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1683 }
1684 }
1685 }
1686 ; tmp_tmp_mem; });
1687 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1688 tmp_carry = CPU (h_cbit);
1689 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1690 ((void) 0); /*nop*/
1691 {
1692 {
1693 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
1694 CPU (h_cbit) = opval;
1695 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1696 }
1697 {
1698 BI opval = LTHI (tmp_newval, 0);
1699 CPU (h_nbit) = opval;
1700 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1701 }
1702 {
1703 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1704 CPU (h_zbit) = opval;
1705 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1706 }
1707 {
1708 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
1709 CPU (h_vbit) = opval;
1710 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1711 }
1712 {
1713 {
1714 BI opval = 0;
1715 CPU (h_xbit) = opval;
1716 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1717 }
1718 {
1719 BI opval = 0;
1720 SET_H_INSN_PREFIXED_P (opval);
1721 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1722 }
1723 }
1724 }
1725 }
1726
1727 abuf->written = written;
1728 #undef FLD
1729 }
1730 NEXT (vpc);
1731
1732 CASE (sem, INSN_CMP_M_D_M) : /* cmp-m.d [${Rs}${inc}],${Rd} */
1733 {
1734 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1736 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
1737 int UNUSED written = 0;
1738 IADDR UNUSED pc = abuf->addr;
1739 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1740
1741 {
1742 SI tmp_tmpopd;
1743 SI tmp_tmpops;
1744 BI tmp_carry;
1745 SI tmp_newval;
1746 tmp_tmpops = ({ SI tmp_addr;
1747 SI tmp_tmp_mem;
1748 BI tmp_postinc;
1749 tmp_postinc = FLD (f_memmode);
1750 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
1751 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
1752 ; if (NEBI (tmp_postinc, 0)) {
1753 {
1754 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
1755 tmp_addr = ADDSI (tmp_addr, 4);
1756 }
1757 {
1758 SI opval = tmp_addr;
1759 SET_H_GR (FLD (f_operand1), opval);
1760 written |= (1 << 9);
1761 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1762 }
1763 }
1764 }
1765 ; tmp_tmp_mem; });
1766 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1767 tmp_carry = CPU (h_cbit);
1768 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1769 ((void) 0); /*nop*/
1770 {
1771 {
1772 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
1773 CPU (h_cbit) = opval;
1774 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1775 }
1776 {
1777 BI opval = LTSI (tmp_newval, 0);
1778 CPU (h_nbit) = opval;
1779 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1780 }
1781 {
1782 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1783 CPU (h_zbit) = opval;
1784 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1785 }
1786 {
1787 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
1788 CPU (h_vbit) = opval;
1789 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1790 }
1791 {
1792 {
1793 BI opval = 0;
1794 CPU (h_xbit) = opval;
1795 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1796 }
1797 {
1798 BI opval = 0;
1799 SET_H_INSN_PREFIXED_P (opval);
1800 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1801 }
1802 }
1803 }
1804 }
1805
1806 abuf->written = written;
1807 #undef FLD
1808 }
1809 NEXT (vpc);
1810
1811 CASE (sem, INSN_CMPCBR) : /* cmp.b $sconst8,$Rd */
1812 {
1813 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1814 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1815 #define FLD(f) abuf->fields.sfmt_bound_cb.f
1816 int UNUSED written = 0;
1817 IADDR UNUSED pc = abuf->addr;
1818 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1819
1820 {
1821 QI tmp_tmpopd;
1822 QI tmp_tmpops;
1823 BI tmp_carry;
1824 QI tmp_newval;
1825 tmp_tmpops = TRUNCSIQI (FLD (f_indir_pc__byte));
1826 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1827 tmp_carry = CPU (h_cbit);
1828 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1829 ((void) 0); /*nop*/
1830 {
1831 {
1832 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
1833 CPU (h_cbit) = opval;
1834 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1835 }
1836 {
1837 BI opval = LTQI (tmp_newval, 0);
1838 CPU (h_nbit) = opval;
1839 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1840 }
1841 {
1842 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1843 CPU (h_zbit) = opval;
1844 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1845 }
1846 {
1847 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
1848 CPU (h_vbit) = opval;
1849 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1850 }
1851 {
1852 {
1853 BI opval = 0;
1854 CPU (h_xbit) = opval;
1855 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1856 }
1857 {
1858 BI opval = 0;
1859 SET_H_INSN_PREFIXED_P (opval);
1860 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1861 }
1862 }
1863 }
1864 }
1865
1866 #undef FLD
1867 }
1868 NEXT (vpc);
1869
1870 CASE (sem, INSN_CMPCWR) : /* cmp.w $sconst16,$Rd */
1871 {
1872 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1873 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1874 #define FLD(f) abuf->fields.sfmt_bound_cw.f
1875 int UNUSED written = 0;
1876 IADDR UNUSED pc = abuf->addr;
1877 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1878
1879 {
1880 HI tmp_tmpopd;
1881 HI tmp_tmpops;
1882 BI tmp_carry;
1883 HI tmp_newval;
1884 tmp_tmpops = TRUNCSIHI (FLD (f_indir_pc__word));
1885 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1886 tmp_carry = CPU (h_cbit);
1887 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1888 ((void) 0); /*nop*/
1889 {
1890 {
1891 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
1892 CPU (h_cbit) = opval;
1893 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1894 }
1895 {
1896 BI opval = LTHI (tmp_newval, 0);
1897 CPU (h_nbit) = opval;
1898 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1899 }
1900 {
1901 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1902 CPU (h_zbit) = opval;
1903 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1904 }
1905 {
1906 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
1907 CPU (h_vbit) = opval;
1908 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1909 }
1910 {
1911 {
1912 BI opval = 0;
1913 CPU (h_xbit) = opval;
1914 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1915 }
1916 {
1917 BI opval = 0;
1918 SET_H_INSN_PREFIXED_P (opval);
1919 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1920 }
1921 }
1922 }
1923 }
1924
1925 #undef FLD
1926 }
1927 NEXT (vpc);
1928
1929 CASE (sem, INSN_CMPCDR) : /* cmp.d $const32,$Rd */
1930 {
1931 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1933 #define FLD(f) abuf->fields.sfmt_bound_cd.f
1934 int UNUSED written = 0;
1935 IADDR UNUSED pc = abuf->addr;
1936 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
1937
1938 {
1939 SI tmp_tmpopd;
1940 SI tmp_tmpops;
1941 BI tmp_carry;
1942 SI tmp_newval;
1943 tmp_tmpops = FLD (f_indir_pc__dword);
1944 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1945 tmp_carry = CPU (h_cbit);
1946 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1947 ((void) 0); /*nop*/
1948 {
1949 {
1950 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
1951 CPU (h_cbit) = opval;
1952 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1953 }
1954 {
1955 BI opval = LTSI (tmp_newval, 0);
1956 CPU (h_nbit) = opval;
1957 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1958 }
1959 {
1960 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1961 CPU (h_zbit) = opval;
1962 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1963 }
1964 {
1965 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
1966 CPU (h_vbit) = opval;
1967 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1968 }
1969 {
1970 {
1971 BI opval = 0;
1972 CPU (h_xbit) = opval;
1973 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1974 }
1975 {
1976 BI opval = 0;
1977 SET_H_INSN_PREFIXED_P (opval);
1978 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1979 }
1980 }
1981 }
1982 }
1983
1984 #undef FLD
1985 }
1986 NEXT (vpc);
1987
1988 CASE (sem, INSN_CMPQ) : /* cmpq $i,$Rd */
1989 {
1990 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1991 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1992 #define FLD(f) abuf->fields.sfmt_andq.f
1993 int UNUSED written = 0;
1994 IADDR UNUSED pc = abuf->addr;
1995 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1996
1997 {
1998 SI tmp_tmpopd;
1999 SI tmp_tmpops;
2000 BI tmp_carry;
2001 SI tmp_newval;
2002 tmp_tmpops = FLD (f_s6);
2003 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2004 tmp_carry = CPU (h_cbit);
2005 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2006 ((void) 0); /*nop*/
2007 {
2008 {
2009 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2010 CPU (h_cbit) = opval;
2011 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2012 }
2013 {
2014 BI opval = LTSI (tmp_newval, 0);
2015 CPU (h_nbit) = opval;
2016 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2017 }
2018 {
2019 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2020 CPU (h_zbit) = opval;
2021 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2022 }
2023 {
2024 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2025 CPU (h_vbit) = opval;
2026 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2027 }
2028 {
2029 {
2030 BI opval = 0;
2031 CPU (h_xbit) = opval;
2032 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2033 }
2034 {
2035 BI opval = 0;
2036 SET_H_INSN_PREFIXED_P (opval);
2037 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2038 }
2039 }
2040 }
2041 }
2042
2043 #undef FLD
2044 }
2045 NEXT (vpc);
2046
2047 CASE (sem, INSN_CMPS_M_B_M) : /* cmps-m.b [${Rs}${inc}],$Rd */
2048 {
2049 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2050 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2051 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2052 int UNUSED written = 0;
2053 IADDR UNUSED pc = abuf->addr;
2054 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2055
2056 {
2057 SI tmp_tmpopd;
2058 SI tmp_tmpops;
2059 BI tmp_carry;
2060 SI tmp_newval;
2061 tmp_tmpops = EXTQISI (({ SI tmp_addr;
2062 QI tmp_tmp_mem;
2063 BI tmp_postinc;
2064 tmp_postinc = FLD (f_memmode);
2065 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2066 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
2067 ; if (NEBI (tmp_postinc, 0)) {
2068 {
2069 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2070 tmp_addr = ADDSI (tmp_addr, 1);
2071 }
2072 {
2073 SI opval = tmp_addr;
2074 SET_H_GR (FLD (f_operand1), opval);
2075 written |= (1 << 9);
2076 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2077 }
2078 }
2079 }
2080 ; tmp_tmp_mem; }));
2081 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2082 tmp_carry = CPU (h_cbit);
2083 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2084 ((void) 0); /*nop*/
2085 {
2086 {
2087 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2088 CPU (h_cbit) = opval;
2089 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2090 }
2091 {
2092 BI opval = LTSI (tmp_newval, 0);
2093 CPU (h_nbit) = opval;
2094 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2095 }
2096 {
2097 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2098 CPU (h_zbit) = opval;
2099 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2100 }
2101 {
2102 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2103 CPU (h_vbit) = opval;
2104 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2105 }
2106 {
2107 {
2108 BI opval = 0;
2109 CPU (h_xbit) = opval;
2110 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2111 }
2112 {
2113 BI opval = 0;
2114 SET_H_INSN_PREFIXED_P (opval);
2115 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2116 }
2117 }
2118 }
2119 }
2120
2121 abuf->written = written;
2122 #undef FLD
2123 }
2124 NEXT (vpc);
2125
2126 CASE (sem, INSN_CMPS_M_W_M) : /* cmps-m.w [${Rs}${inc}],$Rd */
2127 {
2128 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2129 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2130 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2131 int UNUSED written = 0;
2132 IADDR UNUSED pc = abuf->addr;
2133 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2134
2135 {
2136 SI tmp_tmpopd;
2137 SI tmp_tmpops;
2138 BI tmp_carry;
2139 SI tmp_newval;
2140 tmp_tmpops = EXTHISI (({ SI tmp_addr;
2141 HI tmp_tmp_mem;
2142 BI tmp_postinc;
2143 tmp_postinc = FLD (f_memmode);
2144 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2145 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
2146 ; if (NEBI (tmp_postinc, 0)) {
2147 {
2148 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2149 tmp_addr = ADDSI (tmp_addr, 2);
2150 }
2151 {
2152 SI opval = tmp_addr;
2153 SET_H_GR (FLD (f_operand1), opval);
2154 written |= (1 << 9);
2155 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2156 }
2157 }
2158 }
2159 ; tmp_tmp_mem; }));
2160 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2161 tmp_carry = CPU (h_cbit);
2162 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2163 ((void) 0); /*nop*/
2164 {
2165 {
2166 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2167 CPU (h_cbit) = opval;
2168 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2169 }
2170 {
2171 BI opval = LTSI (tmp_newval, 0);
2172 CPU (h_nbit) = opval;
2173 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2174 }
2175 {
2176 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2177 CPU (h_zbit) = opval;
2178 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2179 }
2180 {
2181 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2182 CPU (h_vbit) = opval;
2183 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2184 }
2185 {
2186 {
2187 BI opval = 0;
2188 CPU (h_xbit) = opval;
2189 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2190 }
2191 {
2192 BI opval = 0;
2193 SET_H_INSN_PREFIXED_P (opval);
2194 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2195 }
2196 }
2197 }
2198 }
2199
2200 abuf->written = written;
2201 #undef FLD
2202 }
2203 NEXT (vpc);
2204
2205 CASE (sem, INSN_CMPSCBR) : /* [${Rs}${inc}],$Rd */
2206 {
2207 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2208 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2209 #define FLD(f) abuf->fields.sfmt_bound_cb.f
2210 int UNUSED written = 0;
2211 IADDR UNUSED pc = abuf->addr;
2212 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2213
2214 {
2215 SI tmp_tmpopd;
2216 SI tmp_tmpops;
2217 BI tmp_carry;
2218 SI tmp_newval;
2219 tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
2220 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2221 tmp_carry = CPU (h_cbit);
2222 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2223 ((void) 0); /*nop*/
2224 {
2225 {
2226 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2227 CPU (h_cbit) = opval;
2228 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2229 }
2230 {
2231 BI opval = LTSI (tmp_newval, 0);
2232 CPU (h_nbit) = opval;
2233 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2234 }
2235 {
2236 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2237 CPU (h_zbit) = opval;
2238 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2239 }
2240 {
2241 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2242 CPU (h_vbit) = opval;
2243 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2244 }
2245 {
2246 {
2247 BI opval = 0;
2248 CPU (h_xbit) = opval;
2249 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2250 }
2251 {
2252 BI opval = 0;
2253 SET_H_INSN_PREFIXED_P (opval);
2254 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2255 }
2256 }
2257 }
2258 }
2259
2260 #undef FLD
2261 }
2262 NEXT (vpc);
2263
2264 CASE (sem, INSN_CMPSCWR) : /* [${Rs}${inc}],$Rd */
2265 {
2266 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2268 #define FLD(f) abuf->fields.sfmt_bound_cw.f
2269 int UNUSED written = 0;
2270 IADDR UNUSED pc = abuf->addr;
2271 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2272
2273 {
2274 SI tmp_tmpopd;
2275 SI tmp_tmpops;
2276 BI tmp_carry;
2277 SI tmp_newval;
2278 tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
2279 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2280 tmp_carry = CPU (h_cbit);
2281 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2282 ((void) 0); /*nop*/
2283 {
2284 {
2285 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2286 CPU (h_cbit) = opval;
2287 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2288 }
2289 {
2290 BI opval = LTSI (tmp_newval, 0);
2291 CPU (h_nbit) = opval;
2292 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2293 }
2294 {
2295 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2296 CPU (h_zbit) = opval;
2297 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2298 }
2299 {
2300 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2301 CPU (h_vbit) = opval;
2302 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2303 }
2304 {
2305 {
2306 BI opval = 0;
2307 CPU (h_xbit) = opval;
2308 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2309 }
2310 {
2311 BI opval = 0;
2312 SET_H_INSN_PREFIXED_P (opval);
2313 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2314 }
2315 }
2316 }
2317 }
2318
2319 #undef FLD
2320 }
2321 NEXT (vpc);
2322
2323 CASE (sem, INSN_CMPU_M_B_M) : /* cmpu-m.b [${Rs}${inc}],$Rd */
2324 {
2325 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2326 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2327 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2328 int UNUSED written = 0;
2329 IADDR UNUSED pc = abuf->addr;
2330 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2331
2332 {
2333 SI tmp_tmpopd;
2334 SI tmp_tmpops;
2335 BI tmp_carry;
2336 SI tmp_newval;
2337 tmp_tmpops = ZEXTQISI (({ SI tmp_addr;
2338 QI tmp_tmp_mem;
2339 BI tmp_postinc;
2340 tmp_postinc = FLD (f_memmode);
2341 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2342 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
2343 ; if (NEBI (tmp_postinc, 0)) {
2344 {
2345 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2346 tmp_addr = ADDSI (tmp_addr, 1);
2347 }
2348 {
2349 SI opval = tmp_addr;
2350 SET_H_GR (FLD (f_operand1), opval);
2351 written |= (1 << 9);
2352 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2353 }
2354 }
2355 }
2356 ; tmp_tmp_mem; }));
2357 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2358 tmp_carry = CPU (h_cbit);
2359 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2360 ((void) 0); /*nop*/
2361 {
2362 {
2363 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2364 CPU (h_cbit) = opval;
2365 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2366 }
2367 {
2368 BI opval = LTSI (tmp_newval, 0);
2369 CPU (h_nbit) = opval;
2370 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2371 }
2372 {
2373 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2374 CPU (h_zbit) = opval;
2375 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2376 }
2377 {
2378 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2379 CPU (h_vbit) = opval;
2380 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2381 }
2382 {
2383 {
2384 BI opval = 0;
2385 CPU (h_xbit) = opval;
2386 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2387 }
2388 {
2389 BI opval = 0;
2390 SET_H_INSN_PREFIXED_P (opval);
2391 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2392 }
2393 }
2394 }
2395 }
2396
2397 abuf->written = written;
2398 #undef FLD
2399 }
2400 NEXT (vpc);
2401
2402 CASE (sem, INSN_CMPU_M_W_M) : /* cmpu-m.w [${Rs}${inc}],$Rd */
2403 {
2404 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2405 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2406 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2407 int UNUSED written = 0;
2408 IADDR UNUSED pc = abuf->addr;
2409 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2410
2411 {
2412 SI tmp_tmpopd;
2413 SI tmp_tmpops;
2414 BI tmp_carry;
2415 SI tmp_newval;
2416 tmp_tmpops = ZEXTHISI (({ SI tmp_addr;
2417 HI tmp_tmp_mem;
2418 BI tmp_postinc;
2419 tmp_postinc = FLD (f_memmode);
2420 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2421 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
2422 ; if (NEBI (tmp_postinc, 0)) {
2423 {
2424 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2425 tmp_addr = ADDSI (tmp_addr, 2);
2426 }
2427 {
2428 SI opval = tmp_addr;
2429 SET_H_GR (FLD (f_operand1), opval);
2430 written |= (1 << 9);
2431 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2432 }
2433 }
2434 }
2435 ; tmp_tmp_mem; }));
2436 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2437 tmp_carry = CPU (h_cbit);
2438 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2439 ((void) 0); /*nop*/
2440 {
2441 {
2442 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2443 CPU (h_cbit) = opval;
2444 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2445 }
2446 {
2447 BI opval = LTSI (tmp_newval, 0);
2448 CPU (h_nbit) = opval;
2449 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2450 }
2451 {
2452 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2453 CPU (h_zbit) = opval;
2454 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2455 }
2456 {
2457 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2458 CPU (h_vbit) = opval;
2459 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2460 }
2461 {
2462 {
2463 BI opval = 0;
2464 CPU (h_xbit) = opval;
2465 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2466 }
2467 {
2468 BI opval = 0;
2469 SET_H_INSN_PREFIXED_P (opval);
2470 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2471 }
2472 }
2473 }
2474 }
2475
2476 abuf->written = written;
2477 #undef FLD
2478 }
2479 NEXT (vpc);
2480
2481 CASE (sem, INSN_CMPUCBR) : /* [${Rs}${inc}],$Rd */
2482 {
2483 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2484 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2485 #define FLD(f) abuf->fields.sfmt_bound_cb.f
2486 int UNUSED written = 0;
2487 IADDR UNUSED pc = abuf->addr;
2488 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2489
2490 {
2491 SI tmp_tmpopd;
2492 SI tmp_tmpops;
2493 BI tmp_carry;
2494 SI tmp_newval;
2495 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
2496 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2497 tmp_carry = CPU (h_cbit);
2498 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2499 ((void) 0); /*nop*/
2500 {
2501 {
2502 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2503 CPU (h_cbit) = opval;
2504 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2505 }
2506 {
2507 BI opval = LTSI (tmp_newval, 0);
2508 CPU (h_nbit) = opval;
2509 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2510 }
2511 {
2512 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2513 CPU (h_zbit) = opval;
2514 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2515 }
2516 {
2517 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2518 CPU (h_vbit) = opval;
2519 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2520 }
2521 {
2522 {
2523 BI opval = 0;
2524 CPU (h_xbit) = opval;
2525 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2526 }
2527 {
2528 BI opval = 0;
2529 SET_H_INSN_PREFIXED_P (opval);
2530 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2531 }
2532 }
2533 }
2534 }
2535
2536 #undef FLD
2537 }
2538 NEXT (vpc);
2539
2540 CASE (sem, INSN_CMPUCWR) : /* [${Rs}${inc}],$Rd */
2541 {
2542 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2543 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2544 #define FLD(f) abuf->fields.sfmt_bound_cw.f
2545 int UNUSED written = 0;
2546 IADDR UNUSED pc = abuf->addr;
2547 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2548
2549 {
2550 SI tmp_tmpopd;
2551 SI tmp_tmpops;
2552 BI tmp_carry;
2553 SI tmp_newval;
2554 tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
2555 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2556 tmp_carry = CPU (h_cbit);
2557 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2558 ((void) 0); /*nop*/
2559 {
2560 {
2561 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2562 CPU (h_cbit) = opval;
2563 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2564 }
2565 {
2566 BI opval = LTSI (tmp_newval, 0);
2567 CPU (h_nbit) = opval;
2568 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2569 }
2570 {
2571 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2572 CPU (h_zbit) = opval;
2573 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2574 }
2575 {
2576 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2577 CPU (h_vbit) = opval;
2578 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2579 }
2580 {
2581 {
2582 BI opval = 0;
2583 CPU (h_xbit) = opval;
2584 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2585 }
2586 {
2587 BI opval = 0;
2588 SET_H_INSN_PREFIXED_P (opval);
2589 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2590 }
2591 }
2592 }
2593 }
2594
2595 #undef FLD
2596 }
2597 NEXT (vpc);
2598
2599 CASE (sem, INSN_MOVE_M_B_M) : /* move-m.b [${Rs}${inc}],${Rd} */
2600 {
2601 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2602 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2603 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2604 int UNUSED written = 0;
2605 IADDR UNUSED pc = abuf->addr;
2606 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2607
2608 {
2609 SI tmp_tmp;
2610 tmp_tmp = ({ SI tmp_addr;
2611 QI tmp_tmp_mem;
2612 BI tmp_postinc;
2613 tmp_postinc = FLD (f_memmode);
2614 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2615 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
2616 ; if (NEBI (tmp_postinc, 0)) {
2617 {
2618 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2619 tmp_addr = ADDSI (tmp_addr, 1);
2620 }
2621 {
2622 SI opval = tmp_addr;
2623 SET_H_GR (FLD (f_operand1), opval);
2624 written |= (1 << 10);
2625 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2626 }
2627 }
2628 }
2629 ; tmp_tmp_mem; });
2630 {
2631 SI tmp_oldregval;
2632 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
2633 {
2634 SI opval = ORSI (ANDSI (tmp_tmp, 255), ANDSI (tmp_oldregval, 0xffffff00));
2635 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
2636 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2637 }
2638 }
2639 {
2640 {
2641 BI opval = LTQI (tmp_tmp, 0);
2642 CPU (h_nbit) = opval;
2643 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2644 }
2645 {
2646 BI opval = ANDIF (EQQI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
2647 CPU (h_zbit) = opval;
2648 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2649 }
2650 SET_H_CBIT_MOVE (0);
2651 SET_H_VBIT_MOVE (0);
2652 {
2653 {
2654 BI opval = 0;
2655 CPU (h_xbit) = opval;
2656 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2657 }
2658 {
2659 BI opval = 0;
2660 SET_H_INSN_PREFIXED_P (opval);
2661 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2662 }
2663 }
2664 }
2665 }
2666
2667 abuf->written = written;
2668 #undef FLD
2669 }
2670 NEXT (vpc);
2671
2672 CASE (sem, INSN_MOVE_M_W_M) : /* move-m.w [${Rs}${inc}],${Rd} */
2673 {
2674 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2675 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2676 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2677 int UNUSED written = 0;
2678 IADDR UNUSED pc = abuf->addr;
2679 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2680
2681 {
2682 SI tmp_tmp;
2683 tmp_tmp = ({ SI tmp_addr;
2684 HI tmp_tmp_mem;
2685 BI tmp_postinc;
2686 tmp_postinc = FLD (f_memmode);
2687 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2688 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
2689 ; if (NEBI (tmp_postinc, 0)) {
2690 {
2691 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2692 tmp_addr = ADDSI (tmp_addr, 2);
2693 }
2694 {
2695 SI opval = tmp_addr;
2696 SET_H_GR (FLD (f_operand1), opval);
2697 written |= (1 << 10);
2698 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2699 }
2700 }
2701 }
2702 ; tmp_tmp_mem; });
2703 {
2704 SI tmp_oldregval;
2705 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
2706 {
2707 SI opval = ORSI (ANDSI (tmp_tmp, 65535), ANDSI (tmp_oldregval, 0xffff0000));
2708 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
2709 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2710 }
2711 }
2712 {
2713 {
2714 BI opval = LTHI (tmp_tmp, 0);
2715 CPU (h_nbit) = opval;
2716 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2717 }
2718 {
2719 BI opval = ANDIF (EQHI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
2720 CPU (h_zbit) = opval;
2721 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2722 }
2723 SET_H_CBIT_MOVE (0);
2724 SET_H_VBIT_MOVE (0);
2725 {
2726 {
2727 BI opval = 0;
2728 CPU (h_xbit) = opval;
2729 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2730 }
2731 {
2732 BI opval = 0;
2733 SET_H_INSN_PREFIXED_P (opval);
2734 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2735 }
2736 }
2737 }
2738 }
2739
2740 abuf->written = written;
2741 #undef FLD
2742 }
2743 NEXT (vpc);
2744
2745 CASE (sem, INSN_MOVE_M_D_M) : /* move-m.d [${Rs}${inc}],${Rd} */
2746 {
2747 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2748 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2749 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2750 int UNUSED written = 0;
2751 IADDR UNUSED pc = abuf->addr;
2752 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2753
2754 {
2755 SI tmp_tmp;
2756 tmp_tmp = ({ SI tmp_addr;
2757 SI tmp_tmp_mem;
2758 BI tmp_postinc;
2759 tmp_postinc = FLD (f_memmode);
2760 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2761 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
2762 ; if (NEBI (tmp_postinc, 0)) {
2763 {
2764 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2765 tmp_addr = ADDSI (tmp_addr, 4);
2766 }
2767 {
2768 SI opval = tmp_addr;
2769 SET_H_GR (FLD (f_operand1), opval);
2770 written |= (1 << 9);
2771 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2772 }
2773 }
2774 }
2775 ; tmp_tmp_mem; });
2776 {
2777 SI opval = tmp_tmp;
2778 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
2779 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2780 }
2781 {
2782 {
2783 BI opval = LTSI (tmp_tmp, 0);
2784 CPU (h_nbit) = opval;
2785 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2786 }
2787 {
2788 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
2789 CPU (h_zbit) = opval;
2790 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2791 }
2792 SET_H_CBIT_MOVE (0);
2793 SET_H_VBIT_MOVE (0);
2794 {
2795 {
2796 BI opval = 0;
2797 CPU (h_xbit) = opval;
2798 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2799 }
2800 {
2801 BI opval = 0;
2802 SET_H_INSN_PREFIXED_P (opval);
2803 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2804 }
2805 }
2806 }
2807 }
2808
2809 abuf->written = written;
2810 #undef FLD
2811 }
2812 NEXT (vpc);
2813
2814 CASE (sem, INSN_MOVS_M_B_M) : /* movs-m.b [${Rs}${inc}],${Rd} */
2815 {
2816 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2818 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2819 int UNUSED written = 0;
2820 IADDR UNUSED pc = abuf->addr;
2821 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2822
2823 {
2824 SI tmp_tmp;
2825 tmp_tmp = EXTQISI (({ SI tmp_addr;
2826 QI tmp_tmp_mem;
2827 BI tmp_postinc;
2828 tmp_postinc = FLD (f_memmode);
2829 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2830 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
2831 ; if (NEBI (tmp_postinc, 0)) {
2832 {
2833 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2834 tmp_addr = ADDSI (tmp_addr, 1);
2835 }
2836 {
2837 SI opval = tmp_addr;
2838 SET_H_GR (FLD (f_operand1), opval);
2839 written |= (1 << 8);
2840 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2841 }
2842 }
2843 }
2844 ; tmp_tmp_mem; }));
2845 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
2846 {
2847 SI opval = tmp_tmp;
2848 SET_H_GR (FLD (f_operand1), opval);
2849 written |= (1 << 8);
2850 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2851 }
2852 } else {
2853 {
2854 SI opval = tmp_tmp;
2855 SET_H_GR (FLD (f_operand2), opval);
2856 written |= (1 << 7);
2857 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2858 }
2859 }
2860 {
2861 {
2862 BI opval = LTSI (tmp_tmp, 0);
2863 CPU (h_nbit) = opval;
2864 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2865 }
2866 {
2867 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
2868 CPU (h_zbit) = opval;
2869 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2870 }
2871 SET_H_CBIT_MOVE (0);
2872 SET_H_VBIT_MOVE (0);
2873 {
2874 {
2875 BI opval = 0;
2876 CPU (h_xbit) = opval;
2877 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2878 }
2879 {
2880 BI opval = 0;
2881 SET_H_INSN_PREFIXED_P (opval);
2882 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2883 }
2884 }
2885 }
2886 }
2887
2888 abuf->written = written;
2889 #undef FLD
2890 }
2891 NEXT (vpc);
2892
2893 CASE (sem, INSN_MOVS_M_W_M) : /* movs-m.w [${Rs}${inc}],${Rd} */
2894 {
2895 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2896 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2897 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2898 int UNUSED written = 0;
2899 IADDR UNUSED pc = abuf->addr;
2900 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2901
2902 {
2903 SI tmp_tmp;
2904 tmp_tmp = EXTHISI (({ SI tmp_addr;
2905 HI tmp_tmp_mem;
2906 BI tmp_postinc;
2907 tmp_postinc = FLD (f_memmode);
2908 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2909 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
2910 ; if (NEBI (tmp_postinc, 0)) {
2911 {
2912 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2913 tmp_addr = ADDSI (tmp_addr, 2);
2914 }
2915 {
2916 SI opval = tmp_addr;
2917 SET_H_GR (FLD (f_operand1), opval);
2918 written |= (1 << 8);
2919 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2920 }
2921 }
2922 }
2923 ; tmp_tmp_mem; }));
2924 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
2925 {
2926 SI opval = tmp_tmp;
2927 SET_H_GR (FLD (f_operand1), opval);
2928 written |= (1 << 8);
2929 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2930 }
2931 } else {
2932 {
2933 SI opval = tmp_tmp;
2934 SET_H_GR (FLD (f_operand2), opval);
2935 written |= (1 << 7);
2936 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2937 }
2938 }
2939 {
2940 {
2941 BI opval = LTSI (tmp_tmp, 0);
2942 CPU (h_nbit) = opval;
2943 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2944 }
2945 {
2946 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
2947 CPU (h_zbit) = opval;
2948 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2949 }
2950 SET_H_CBIT_MOVE (0);
2951 SET_H_VBIT_MOVE (0);
2952 {
2953 {
2954 BI opval = 0;
2955 CPU (h_xbit) = opval;
2956 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2957 }
2958 {
2959 BI opval = 0;
2960 SET_H_INSN_PREFIXED_P (opval);
2961 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2962 }
2963 }
2964 }
2965 }
2966
2967 abuf->written = written;
2968 #undef FLD
2969 }
2970 NEXT (vpc);
2971
2972 CASE (sem, INSN_MOVU_M_B_M) : /* movu-m.b [${Rs}${inc}],${Rd} */
2973 {
2974 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2975 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2976 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2977 int UNUSED written = 0;
2978 IADDR UNUSED pc = abuf->addr;
2979 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2980
2981 {
2982 SI tmp_tmp;
2983 tmp_tmp = ZEXTQISI (({ SI tmp_addr;
2984 QI tmp_tmp_mem;
2985 BI tmp_postinc;
2986 tmp_postinc = FLD (f_memmode);
2987 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2988 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
2989 ; if (NEBI (tmp_postinc, 0)) {
2990 {
2991 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2992 tmp_addr = ADDSI (tmp_addr, 1);
2993 }
2994 {
2995 SI opval = tmp_addr;
2996 SET_H_GR (FLD (f_operand1), opval);
2997 written |= (1 << 8);
2998 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2999 }
3000 }
3001 }
3002 ; tmp_tmp_mem; }));
3003 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
3004 {
3005 SI opval = tmp_tmp;
3006 SET_H_GR (FLD (f_operand1), opval);
3007 written |= (1 << 8);
3008 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3009 }
3010 } else {
3011 {
3012 SI opval = tmp_tmp;
3013 SET_H_GR (FLD (f_operand2), opval);
3014 written |= (1 << 7);
3015 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3016 }
3017 }
3018 {
3019 {
3020 BI opval = LTSI (tmp_tmp, 0);
3021 CPU (h_nbit) = opval;
3022 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
3023 }
3024 {
3025 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
3026 CPU (h_zbit) = opval;
3027 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
3028 }
3029 SET_H_CBIT_MOVE (0);
3030 SET_H_VBIT_MOVE (0);
3031 {
3032 {
3033 BI opval = 0;
3034 CPU (h_xbit) = opval;
3035 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3036 }
3037 {
3038 BI opval = 0;
3039 SET_H_INSN_PREFIXED_P (opval);
3040 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3041 }
3042 }
3043 }
3044 }
3045
3046 abuf->written = written;
3047 #undef FLD
3048 }
3049 NEXT (vpc);
3050
3051 CASE (sem, INSN_MOVU_M_W_M) : /* movu-m.w [${Rs}${inc}],${Rd} */
3052 {
3053 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3054 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3055 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
3056 int UNUSED written = 0;
3057 IADDR UNUSED pc = abuf->addr;
3058 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3059
3060 {
3061 SI tmp_tmp;
3062 tmp_tmp = ZEXTHISI (({ SI tmp_addr;
3063 HI tmp_tmp_mem;
3064 BI tmp_postinc;
3065 tmp_postinc = FLD (f_memmode);
3066 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3067 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
3068 ; if (NEBI (tmp_postinc, 0)) {
3069 {
3070 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3071 tmp_addr = ADDSI (tmp_addr, 2);
3072 }
3073 {
3074 SI opval = tmp_addr;
3075 SET_H_GR (FLD (f_operand1), opval);
3076 written |= (1 << 8);
3077 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3078 }
3079 }
3080 }
3081 ; tmp_tmp_mem; }));
3082 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
3083 {
3084 SI opval = tmp_tmp;
3085 SET_H_GR (FLD (f_operand1), opval);
3086 written |= (1 << 8);
3087 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3088 }
3089 } else {
3090 {
3091 SI opval = tmp_tmp;
3092 SET_H_GR (FLD (f_operand2), opval);
3093 written |= (1 << 7);
3094 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3095 }
3096 }
3097 {
3098 {
3099 BI opval = LTSI (tmp_tmp, 0);
3100 CPU (h_nbit) = opval;
3101 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
3102 }
3103 {
3104 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
3105 CPU (h_zbit) = opval;
3106 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
3107 }
3108 SET_H_CBIT_MOVE (0);
3109 SET_H_VBIT_MOVE (0);
3110 {
3111 {
3112 BI opval = 0;
3113 CPU (h_xbit) = opval;
3114 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3115 }
3116 {
3117 BI opval = 0;
3118 SET_H_INSN_PREFIXED_P (opval);
3119 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3120 }
3121 }
3122 }
3123 }
3124
3125 abuf->written = written;
3126 #undef FLD
3127 }
3128 NEXT (vpc);
3129
3130 CASE (sem, INSN_MOVE_R_SPRV10) : /* move ${Rs},${Pd} */
3131 {
3132 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3133 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3134 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
3135 int UNUSED written = 0;
3136 IADDR UNUSED pc = abuf->addr;
3137 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3138
3139 {
3140 SI tmp_tmp;
3141 SI tmp_rno;
3142 tmp_tmp = GET_H_GR (FLD (f_operand1));
3143 tmp_rno = FLD (f_operand2);
3144 if (ORIF (ORIF (EQSI (tmp_rno, 0), EQSI (tmp_rno, 1)), ORIF (EQSI (tmp_rno, 4), EQSI (tmp_rno, 8)))) {
3145 cgen_rtx_error (current_cpu, "move-r-spr: trying to set a read-only special register");
3146 }
3147 else {
3148 {
3149 SI opval = tmp_tmp;
3150 SET_H_SR (FLD (f_operand2), opval);
3151 written |= (1 << 2);
3152 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3153 }
3154 }
3155 {
3156 {
3157 BI opval = 0;
3158 CPU (h_xbit) = opval;
3159 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3160 }
3161 {
3162 BI opval = 0;
3163 SET_H_INSN_PREFIXED_P (opval);
3164 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3165 }
3166 }
3167 }
3168
3169 abuf->written = written;
3170 #undef FLD
3171 }
3172 NEXT (vpc);
3173
3174 CASE (sem, INSN_MOVE_SPR_RV10) : /* move ${Ps},${Rd-sfield} */
3175 {
3176 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3177 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3178 #define FLD(f) abuf->fields.sfmt_move_spr_rv10.f
3179 int UNUSED written = 0;
3180 IADDR UNUSED pc = abuf->addr;
3181 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3182
3183 {
3184 SI tmp_grno;
3185 SI tmp_prno;
3186 SI tmp_newval;
3187 tmp_prno = FLD (f_operand2);
3188 tmp_newval = GET_H_SR (FLD (f_operand2));
3189 if (EQSI (tmp_prno, 5)) {
3190 {
3191 SI tmp_oldregval;
3192 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1));
3193 {
3194 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
3195 SET_H_GR (FLD (f_operand1), opval);
3196 written |= (1 << 4);
3197 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3198 }
3199 }
3200 }
3201 else if (EQSI (tmp_prno, 9)) {
3202 {
3203 SI opval = tmp_newval;
3204 SET_H_GR (FLD (f_operand1), opval);
3205 written |= (1 << 4);
3206 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3207 }
3208 }
3209 else if (EQSI (tmp_prno, 10)) {
3210 {
3211 SI opval = tmp_newval;
3212 SET_H_GR (FLD (f_operand1), opval);
3213 written |= (1 << 4);
3214 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3215 }
3216 }
3217 else if (EQSI (tmp_prno, 11)) {
3218 {
3219 SI opval = tmp_newval;
3220 SET_H_GR (FLD (f_operand1), opval);
3221 written |= (1 << 4);
3222 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3223 }
3224 }
3225 else if (EQSI (tmp_prno, 12)) {
3226 {
3227 SI opval = tmp_newval;
3228 SET_H_GR (FLD (f_operand1), opval);
3229 written |= (1 << 4);
3230 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3231 }
3232 }
3233 else if (EQSI (tmp_prno, 13)) {
3234 {
3235 SI opval = tmp_newval;
3236 SET_H_GR (FLD (f_operand1), opval);
3237 written |= (1 << 4);
3238 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3239 }
3240 }
3241 else if (EQSI (tmp_prno, 0)) {
3242 {
3243 SI tmp_oldregval;
3244 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1));
3245 {
3246 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
3247 SET_H_GR (FLD (f_operand1), opval);
3248 written |= (1 << 4);
3249 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3250 }
3251 }
3252 }
3253 else if (EQSI (tmp_prno, 1)) {
3254 {
3255 SI tmp_oldregval;
3256 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1));
3257 {
3258 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
3259 SET_H_GR (FLD (f_operand1), opval);
3260 written |= (1 << 4);
3261 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3262 }
3263 }
3264 }
3265 else if (EQSI (tmp_prno, 4)) {
3266 {
3267 SI tmp_oldregval;
3268 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1));
3269 {
3270 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
3271 SET_H_GR (FLD (f_operand1), opval);
3272 written |= (1 << 4);
3273 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3274 }
3275 }
3276 }
3277 else if (EQSI (tmp_prno, 8)) {
3278 {
3279 SI opval = tmp_newval;
3280 SET_H_GR (FLD (f_operand1), opval);
3281 written |= (1 << 4);
3282 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3283 }
3284 }
3285 else if (EQSI (tmp_prno, 7)) {
3286 {
3287 SI opval = tmp_newval;
3288 SET_H_GR (FLD (f_operand1), opval);
3289 written |= (1 << 4);
3290 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3291 }
3292 }
3293 else if (EQSI (tmp_prno, 14)) {
3294 {
3295 SI opval = tmp_newval;
3296 SET_H_GR (FLD (f_operand1), opval);
3297 written |= (1 << 4);
3298 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3299 }
3300 }
3301 else if (EQSI (tmp_prno, 15)) {
3302 {
3303 SI opval = tmp_newval;
3304 SET_H_GR (FLD (f_operand1), opval);
3305 written |= (1 << 4);
3306 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3307 }
3308 }
3309 else {
3310 cgen_rtx_error (current_cpu, "move-spr-r from unimplemented register");
3311 }
3312 {
3313 {
3314 BI opval = 0;
3315 CPU (h_xbit) = opval;
3316 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3317 }
3318 {
3319 BI opval = 0;
3320 SET_H_INSN_PREFIXED_P (opval);
3321 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3322 }
3323 }
3324 }
3325
3326 abuf->written = written;
3327 #undef FLD
3328 }
3329 NEXT (vpc);
3330
3331 CASE (sem, INSN_RET_TYPE) : /* ret/reti/retb */
3332 {
3333 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3334 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3335 #define FLD(f) abuf->fields.sfmt_move_spr_rv10.f
3336 int UNUSED written = 0;
3337 IADDR UNUSED pc = abuf->addr;
3338 SEM_BRANCH_INIT
3339 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3340
3341 {
3342 SI tmp_retaddr;
3343 tmp_retaddr = GET_H_SR (FLD (f_operand2));
3344 {
3345 {
3346 BI opval = 0;
3347 CPU (h_xbit) = opval;
3348 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3349 }
3350 {
3351 BI opval = 0;
3352 SET_H_INSN_PREFIXED_P (opval);
3353 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3354 }
3355 }
3356 {
3357 {
3358 USI opval = tmp_retaddr;
3359 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3360 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3361 }
3362 }
3363 }
3364
3365 SEM_BRANCH_FINI (vpc);
3366 #undef FLD
3367 }
3368 NEXT (vpc);
3369
3370 CASE (sem, INSN_MOVE_M_SPRV10) : /* move [${Rs}${inc}],${Pd} */
3371 {
3372 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3373 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3374 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
3375 int UNUSED written = 0;
3376 IADDR UNUSED pc = abuf->addr;
3377 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3378
3379 {
3380 SI tmp_rno;
3381 SI tmp_newval;
3382 tmp_rno = FLD (f_operand2);
3383 if (EQSI (tmp_rno, 5)) {
3384 tmp_newval = EXTHISI (({ SI tmp_addr;
3385 HI tmp_tmp_mem;
3386 BI tmp_postinc;
3387 tmp_postinc = FLD (f_memmode);
3388 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3389 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
3390 ; if (NEBI (tmp_postinc, 0)) {
3391 {
3392 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3393 tmp_addr = ADDSI (tmp_addr, 2);
3394 }
3395 {
3396 SI opval = tmp_addr;
3397 SET_H_GR (FLD (f_operand1), opval);
3398 written |= (1 << 8);
3399 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3400 }
3401 }
3402 }
3403 ; tmp_tmp_mem; }));
3404 }
3405 else if (EQSI (tmp_rno, 9)) {
3406 tmp_newval = ({ SI tmp_addr;
3407 SI tmp_tmp_mem;
3408 BI tmp_postinc;
3409 tmp_postinc = FLD (f_memmode);
3410 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3411 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3412 ; if (NEBI (tmp_postinc, 0)) {
3413 {
3414 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3415 tmp_addr = ADDSI (tmp_addr, 4);
3416 }
3417 {
3418 SI opval = tmp_addr;
3419 SET_H_GR (FLD (f_operand1), opval);
3420 written |= (1 << 8);
3421 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3422 }
3423 }
3424 }
3425 ; tmp_tmp_mem; });
3426 }
3427 else if (EQSI (tmp_rno, 10)) {
3428 tmp_newval = ({ SI tmp_addr;
3429 SI tmp_tmp_mem;
3430 BI tmp_postinc;
3431 tmp_postinc = FLD (f_memmode);
3432 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3433 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3434 ; if (NEBI (tmp_postinc, 0)) {
3435 {
3436 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3437 tmp_addr = ADDSI (tmp_addr, 4);
3438 }
3439 {
3440 SI opval = tmp_addr;
3441 SET_H_GR (FLD (f_operand1), opval);
3442 written |= (1 << 8);
3443 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3444 }
3445 }
3446 }
3447 ; tmp_tmp_mem; });
3448 }
3449 else if (EQSI (tmp_rno, 11)) {
3450 tmp_newval = ({ SI tmp_addr;
3451 SI tmp_tmp_mem;
3452 BI tmp_postinc;
3453 tmp_postinc = FLD (f_memmode);
3454 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3455 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3456 ; if (NEBI (tmp_postinc, 0)) {
3457 {
3458 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3459 tmp_addr = ADDSI (tmp_addr, 4);
3460 }
3461 {
3462 SI opval = tmp_addr;
3463 SET_H_GR (FLD (f_operand1), opval);
3464 written |= (1 << 8);
3465 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3466 }
3467 }
3468 }
3469 ; tmp_tmp_mem; });
3470 }
3471 else if (EQSI (tmp_rno, 12)) {
3472 tmp_newval = ({ SI tmp_addr;
3473 SI tmp_tmp_mem;
3474 BI tmp_postinc;
3475 tmp_postinc = FLD (f_memmode);
3476 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3477 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3478 ; if (NEBI (tmp_postinc, 0)) {
3479 {
3480 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3481 tmp_addr = ADDSI (tmp_addr, 4);
3482 }
3483 {
3484 SI opval = tmp_addr;
3485 SET_H_GR (FLD (f_operand1), opval);
3486 written |= (1 << 8);
3487 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3488 }
3489 }
3490 }
3491 ; tmp_tmp_mem; });
3492 }
3493 else if (EQSI (tmp_rno, 13)) {
3494 tmp_newval = ({ SI tmp_addr;
3495 SI tmp_tmp_mem;
3496 BI tmp_postinc;
3497 tmp_postinc = FLD (f_memmode);
3498 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3499 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3500 ; if (NEBI (tmp_postinc, 0)) {
3501 {
3502 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3503 tmp_addr = ADDSI (tmp_addr, 4);
3504 }
3505 {
3506 SI opval = tmp_addr;
3507 SET_H_GR (FLD (f_operand1), opval);
3508 written |= (1 << 8);
3509 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3510 }
3511 }
3512 }
3513 ; tmp_tmp_mem; });
3514 }
3515 else if (EQSI (tmp_rno, 7)) {
3516 tmp_newval = ({ SI tmp_addr;
3517 SI tmp_tmp_mem;
3518 BI tmp_postinc;
3519 tmp_postinc = FLD (f_memmode);
3520 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3521 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3522 ; if (NEBI (tmp_postinc, 0)) {
3523 {
3524 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3525 tmp_addr = ADDSI (tmp_addr, 4);
3526 }
3527 {
3528 SI opval = tmp_addr;
3529 SET_H_GR (FLD (f_operand1), opval);
3530 written |= (1 << 8);
3531 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3532 }
3533 }
3534 }
3535 ; tmp_tmp_mem; });
3536 }
3537 else if (EQSI (tmp_rno, 14)) {
3538 tmp_newval = ({ SI tmp_addr;
3539 SI tmp_tmp_mem;
3540 BI tmp_postinc;
3541 tmp_postinc = FLD (f_memmode);
3542 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3543 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3544 ; if (NEBI (tmp_postinc, 0)) {
3545 {
3546 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3547 tmp_addr = ADDSI (tmp_addr, 4);
3548 }
3549 {
3550 SI opval = tmp_addr;
3551 SET_H_GR (FLD (f_operand1), opval);
3552 written |= (1 << 8);
3553 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3554 }
3555 }
3556 }
3557 ; tmp_tmp_mem; });
3558 }
3559 else if (EQSI (tmp_rno, 15)) {
3560 tmp_newval = ({ SI tmp_addr;
3561 SI tmp_tmp_mem;
3562 BI tmp_postinc;
3563 tmp_postinc = FLD (f_memmode);
3564 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3565 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3566 ; if (NEBI (tmp_postinc, 0)) {
3567 {
3568 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3569 tmp_addr = ADDSI (tmp_addr, 4);
3570 }
3571 {
3572 SI opval = tmp_addr;
3573 SET_H_GR (FLD (f_operand1), opval);
3574 written |= (1 << 8);
3575 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3576 }
3577 }
3578 }
3579 ; tmp_tmp_mem; });
3580 }
3581 else {
3582 cgen_rtx_error (current_cpu, "Trying to set unimplemented special register");
3583 }
3584 {
3585 SI opval = tmp_newval;
3586 SET_H_SR (FLD (f_operand2), opval);
3587 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3588 }
3589 {
3590 {
3591 BI opval = 0;
3592 CPU (h_xbit) = opval;
3593 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3594 }
3595 {
3596 BI opval = 0;
3597 SET_H_INSN_PREFIXED_P (opval);
3598 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3599 }
3600 }
3601 }
3602
3603 abuf->written = written;
3604 #undef FLD
3605 }
3606 NEXT (vpc);
3607
3608 CASE (sem, INSN_MOVE_C_SPRV10_P5) : /* move ${sconst16},${Pd} */
3609 {
3610 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3611 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3612 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p5.f
3613 int UNUSED written = 0;
3614 IADDR UNUSED pc = abuf->addr;
3615 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3616
3617 {
3618 {
3619 SI opval = FLD (f_indir_pc__word);
3620 SET_H_SR (FLD (f_operand2), opval);
3621 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3622 }
3623 {
3624 {
3625 BI opval = 0;
3626 CPU (h_xbit) = opval;
3627 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3628 }
3629 {
3630 BI opval = 0;
3631 SET_H_INSN_PREFIXED_P (opval);
3632 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3633 }
3634 }
3635 }
3636
3637 #undef FLD
3638 }
3639 NEXT (vpc);
3640
3641 CASE (sem, INSN_MOVE_C_SPRV10_P9) : /* move ${const32},${Pd} */
3642 {
3643 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3644 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3645 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3646 int UNUSED written = 0;
3647 IADDR UNUSED pc = abuf->addr;
3648 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3649
3650 {
3651 {
3652 SI opval = FLD (f_indir_pc__dword);
3653 SET_H_SR (FLD (f_operand2), opval);
3654 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3655 }
3656 {
3657 {
3658 BI opval = 0;
3659 CPU (h_xbit) = opval;
3660 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3661 }
3662 {
3663 BI opval = 0;
3664 SET_H_INSN_PREFIXED_P (opval);
3665 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3666 }
3667 }
3668 }
3669
3670 #undef FLD
3671 }
3672 NEXT (vpc);
3673
3674 CASE (sem, INSN_MOVE_C_SPRV10_P10) : /* move ${const32},${Pd} */
3675 {
3676 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3677 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3678 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3679 int UNUSED written = 0;
3680 IADDR UNUSED pc = abuf->addr;
3681 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3682
3683 {
3684 {
3685 SI opval = FLD (f_indir_pc__dword);
3686 SET_H_SR (FLD (f_operand2), opval);
3687 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3688 }
3689 {
3690 {
3691 BI opval = 0;
3692 CPU (h_xbit) = opval;
3693 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3694 }
3695 {
3696 BI opval = 0;
3697 SET_H_INSN_PREFIXED_P (opval);
3698 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3699 }
3700 }
3701 }
3702
3703 #undef FLD
3704 }
3705 NEXT (vpc);
3706
3707 CASE (sem, INSN_MOVE_C_SPRV10_P11) : /* move ${const32},${Pd} */
3708 {
3709 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3710 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3711 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3712 int UNUSED written = 0;
3713 IADDR UNUSED pc = abuf->addr;
3714 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3715
3716 {
3717 {
3718 SI opval = FLD (f_indir_pc__dword);
3719 SET_H_SR (FLD (f_operand2), opval);
3720 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3721 }
3722 {
3723 {
3724 BI opval = 0;
3725 CPU (h_xbit) = opval;
3726 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3727 }
3728 {
3729 BI opval = 0;
3730 SET_H_INSN_PREFIXED_P (opval);
3731 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3732 }
3733 }
3734 }
3735
3736 #undef FLD
3737 }
3738 NEXT (vpc);
3739
3740 CASE (sem, INSN_MOVE_C_SPRV10_P12) : /* move ${const32},${Pd} */
3741 {
3742 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3743 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3744 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3745 int UNUSED written = 0;
3746 IADDR UNUSED pc = abuf->addr;
3747 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3748
3749 {
3750 {
3751 SI opval = FLD (f_indir_pc__dword);
3752 SET_H_SR (FLD (f_operand2), opval);
3753 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3754 }
3755 {
3756 {
3757 BI opval = 0;
3758 CPU (h_xbit) = opval;
3759 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3760 }
3761 {
3762 BI opval = 0;
3763 SET_H_INSN_PREFIXED_P (opval);
3764 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3765 }
3766 }
3767 }
3768
3769 #undef FLD
3770 }
3771 NEXT (vpc);
3772
3773 CASE (sem, INSN_MOVE_C_SPRV10_P13) : /* move ${const32},${Pd} */
3774 {
3775 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3777 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3778 int UNUSED written = 0;
3779 IADDR UNUSED pc = abuf->addr;
3780 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3781
3782 {
3783 {
3784 SI opval = FLD (f_indir_pc__dword);
3785 SET_H_SR (FLD (f_operand2), opval);
3786 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3787 }
3788 {
3789 {
3790 BI opval = 0;
3791 CPU (h_xbit) = opval;
3792 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3793 }
3794 {
3795 BI opval = 0;
3796 SET_H_INSN_PREFIXED_P (opval);
3797 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3798 }
3799 }
3800 }
3801
3802 #undef FLD
3803 }
3804 NEXT (vpc);
3805
3806 CASE (sem, INSN_MOVE_C_SPRV10_P7) : /* move ${const32},${Pd} */
3807 {
3808 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3809 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3810 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3811 int UNUSED written = 0;
3812 IADDR UNUSED pc = abuf->addr;
3813 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3814
3815 {
3816 {
3817 SI opval = FLD (f_indir_pc__dword);
3818 SET_H_SR (FLD (f_operand2), opval);
3819 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3820 }
3821 {
3822 {
3823 BI opval = 0;
3824 CPU (h_xbit) = opval;
3825 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3826 }
3827 {
3828 BI opval = 0;
3829 SET_H_INSN_PREFIXED_P (opval);
3830 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3831 }
3832 }
3833 }
3834
3835 #undef FLD
3836 }
3837 NEXT (vpc);
3838
3839 CASE (sem, INSN_MOVE_C_SPRV10_P14) : /* move ${const32},${Pd} */
3840 {
3841 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3842 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3843 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3844 int UNUSED written = 0;
3845 IADDR UNUSED pc = abuf->addr;
3846 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3847
3848 {
3849 {
3850 SI opval = FLD (f_indir_pc__dword);
3851 SET_H_SR (FLD (f_operand2), opval);
3852 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3853 }
3854 {
3855 {
3856 BI opval = 0;
3857 CPU (h_xbit) = opval;
3858 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3859 }
3860 {
3861 BI opval = 0;
3862 SET_H_INSN_PREFIXED_P (opval);
3863 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3864 }
3865 }
3866 }
3867
3868 #undef FLD
3869 }
3870 NEXT (vpc);
3871
3872 CASE (sem, INSN_MOVE_C_SPRV10_P15) : /* move ${const32},${Pd} */
3873 {
3874 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3875 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3876 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3877 int UNUSED written = 0;
3878 IADDR UNUSED pc = abuf->addr;
3879 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3880
3881 {
3882 {
3883 SI opval = FLD (f_indir_pc__dword);
3884 SET_H_SR (FLD (f_operand2), opval);
3885 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3886 }
3887 {
3888 {
3889 BI opval = 0;
3890 CPU (h_xbit) = opval;
3891 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3892 }
3893 {
3894 BI opval = 0;
3895 SET_H_INSN_PREFIXED_P (opval);
3896 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3897 }
3898 }
3899 }
3900
3901 #undef FLD
3902 }
3903 NEXT (vpc);
3904
3905 CASE (sem, INSN_MOVE_SPR_MV10) : /* move ${Ps},[${Rd-sfield}${inc}] */
3906 {
3907 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3908 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3909 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
3910 int UNUSED written = 0;
3911 IADDR UNUSED pc = abuf->addr;
3912 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3913
3914 {
3915 SI tmp_rno;
3916 tmp_rno = FLD (f_operand2);
3917 if (EQSI (tmp_rno, 5)) {
3918 {
3919 SI tmp_addr;
3920 BI tmp_postinc;
3921 tmp_postinc = FLD (f_memmode);
3922 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3923 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
3924 if (EQBI (CPU (h_pbit), 0)) {
3925 {
3926 {
3927 HI opval = GET_H_SR (FLD (f_operand2));
3928 SETMEMHI (current_cpu, pc, tmp_addr, opval);
3929 written |= (1 << 11);
3930 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3931 }
3932 {
3933 BI opval = CPU (h_pbit);
3934 CPU (h_cbit) = opval;
3935 written |= (1 << 10);
3936 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
3937 }
3938 }
3939 } else {
3940 {
3941 BI opval = 1;
3942 CPU (h_cbit) = opval;
3943 written |= (1 << 10);
3944 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
3945 }
3946 }
3947 } else {
3948 {
3949 HI opval = GET_H_SR (FLD (f_operand2));
3950 SETMEMHI (current_cpu, pc, tmp_addr, opval);
3951 written |= (1 << 11);
3952 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3953 }
3954 }
3955 if (NEBI (tmp_postinc, 0)) {
3956 {
3957 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3958 tmp_addr = ADDSI (tmp_addr, 2);
3959 }
3960 {
3961 SI opval = tmp_addr;
3962 SET_H_GR (FLD (f_operand1), opval);
3963 written |= (1 << 9);
3964 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3965 }
3966 }
3967 }
3968 }
3969 }
3970 else if (EQSI (tmp_rno, 9)) {
3971 {
3972 SI tmp_addr;
3973 BI tmp_postinc;
3974 tmp_postinc = FLD (f_memmode);
3975 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3976 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
3977 if (EQBI (CPU (h_pbit), 0)) {
3978 {
3979 {
3980 SI opval = GET_H_SR (FLD (f_operand2));
3981 SETMEMSI (current_cpu, pc, tmp_addr, opval);
3982 written |= (1 << 13);
3983 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3984 }
3985 {
3986 BI opval = CPU (h_pbit);
3987 CPU (h_cbit) = opval;
3988 written |= (1 << 10);
3989 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
3990 }
3991 }
3992 } else {
3993 {
3994 BI opval = 1;
3995 CPU (h_cbit) = opval;
3996 written |= (1 << 10);
3997 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
3998 }
3999 }
4000 } else {
4001 {
4002 SI opval = GET_H_SR (FLD (f_operand2));
4003 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4004 written |= (1 << 13);
4005 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4006 }
4007 }
4008 if (NEBI (tmp_postinc, 0)) {
4009 {
4010 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4011 tmp_addr = ADDSI (tmp_addr, 4);
4012 }
4013 {
4014 SI opval = tmp_addr;
4015 SET_H_GR (FLD (f_operand1), opval);
4016 written |= (1 << 9);
4017 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4018 }
4019 }
4020 }
4021 }
4022 }
4023 else if (EQSI (tmp_rno, 10)) {
4024 {
4025 SI tmp_addr;
4026 BI tmp_postinc;
4027 tmp_postinc = FLD (f_memmode);
4028 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4029 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4030 if (EQBI (CPU (h_pbit), 0)) {
4031 {
4032 {
4033 SI opval = GET_H_SR (FLD (f_operand2));
4034 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4035 written |= (1 << 13);
4036 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4037 }
4038 {
4039 BI opval = CPU (h_pbit);
4040 CPU (h_cbit) = opval;
4041 written |= (1 << 10);
4042 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4043 }
4044 }
4045 } else {
4046 {
4047 BI opval = 1;
4048 CPU (h_cbit) = opval;
4049 written |= (1 << 10);
4050 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4051 }
4052 }
4053 } else {
4054 {
4055 SI opval = GET_H_SR (FLD (f_operand2));
4056 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4057 written |= (1 << 13);
4058 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4059 }
4060 }
4061 if (NEBI (tmp_postinc, 0)) {
4062 {
4063 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4064 tmp_addr = ADDSI (tmp_addr, 4);
4065 }
4066 {
4067 SI opval = tmp_addr;
4068 SET_H_GR (FLD (f_operand1), opval);
4069 written |= (1 << 9);
4070 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4071 }
4072 }
4073 }
4074 }
4075 }
4076 else if (EQSI (tmp_rno, 11)) {
4077 {
4078 SI tmp_addr;
4079 BI tmp_postinc;
4080 tmp_postinc = FLD (f_memmode);
4081 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4082 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4083 if (EQBI (CPU (h_pbit), 0)) {
4084 {
4085 {
4086 SI opval = GET_H_SR (FLD (f_operand2));
4087 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4088 written |= (1 << 13);
4089 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4090 }
4091 {
4092 BI opval = CPU (h_pbit);
4093 CPU (h_cbit) = opval;
4094 written |= (1 << 10);
4095 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4096 }
4097 }
4098 } else {
4099 {
4100 BI opval = 1;
4101 CPU (h_cbit) = opval;
4102 written |= (1 << 10);
4103 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4104 }
4105 }
4106 } else {
4107 {
4108 SI opval = GET_H_SR (FLD (f_operand2));
4109 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4110 written |= (1 << 13);
4111 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4112 }
4113 }
4114 if (NEBI (tmp_postinc, 0)) {
4115 {
4116 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4117 tmp_addr = ADDSI (tmp_addr, 4);
4118 }
4119 {
4120 SI opval = tmp_addr;
4121 SET_H_GR (FLD (f_operand1), opval);
4122 written |= (1 << 9);
4123 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4124 }
4125 }
4126 }
4127 }
4128 }
4129 else if (EQSI (tmp_rno, 12)) {
4130 {
4131 SI tmp_addr;
4132 BI tmp_postinc;
4133 tmp_postinc = FLD (f_memmode);
4134 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4135 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4136 if (EQBI (CPU (h_pbit), 0)) {
4137 {
4138 {
4139 SI opval = GET_H_SR (FLD (f_operand2));
4140 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4141 written |= (1 << 13);
4142 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4143 }
4144 {
4145 BI opval = CPU (h_pbit);
4146 CPU (h_cbit) = opval;
4147 written |= (1 << 10);
4148 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4149 }
4150 }
4151 } else {
4152 {
4153 BI opval = 1;
4154 CPU (h_cbit) = opval;
4155 written |= (1 << 10);
4156 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4157 }
4158 }
4159 } else {
4160 {
4161 SI opval = GET_H_SR (FLD (f_operand2));
4162 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4163 written |= (1 << 13);
4164 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4165 }
4166 }
4167 if (NEBI (tmp_postinc, 0)) {
4168 {
4169 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4170 tmp_addr = ADDSI (tmp_addr, 4);
4171 }
4172 {
4173 SI opval = tmp_addr;
4174 SET_H_GR (FLD (f_operand1), opval);
4175 written |= (1 << 9);
4176 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4177 }
4178 }
4179 }
4180 }
4181 }
4182 else if (EQSI (tmp_rno, 13)) {
4183 {
4184 SI tmp_addr;
4185 BI tmp_postinc;
4186 tmp_postinc = FLD (f_memmode);
4187 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4188 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4189 if (EQBI (CPU (h_pbit), 0)) {
4190 {
4191 {
4192 SI opval = GET_H_SR (FLD (f_operand2));
4193 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4194 written |= (1 << 13);
4195 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4196 }
4197 {
4198 BI opval = CPU (h_pbit);
4199 CPU (h_cbit) = opval;
4200 written |= (1 << 10);
4201 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4202 }
4203 }
4204 } else {
4205 {
4206 BI opval = 1;
4207 CPU (h_cbit) = opval;
4208 written |= (1 << 10);
4209 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4210 }
4211 }
4212 } else {
4213 {
4214 SI opval = GET_H_SR (FLD (f_operand2));
4215 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4216 written |= (1 << 13);
4217 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4218 }
4219 }
4220 if (NEBI (tmp_postinc, 0)) {
4221 {
4222 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4223 tmp_addr = ADDSI (tmp_addr, 4);
4224 }
4225 {
4226 SI opval = tmp_addr;
4227 SET_H_GR (FLD (f_operand1), opval);
4228 written |= (1 << 9);
4229 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4230 }
4231 }
4232 }
4233 }
4234 }
4235 else if (EQSI (tmp_rno, 0)) {
4236 {
4237 SI tmp_addr;
4238 BI tmp_postinc;
4239 tmp_postinc = FLD (f_memmode);
4240 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4241 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4242 if (EQBI (CPU (h_pbit), 0)) {
4243 {
4244 {
4245 QI opval = GET_H_SR (FLD (f_operand2));
4246 SETMEMQI (current_cpu, pc, tmp_addr, opval);
4247 written |= (1 << 12);
4248 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4249 }
4250 {
4251 BI opval = CPU (h_pbit);
4252 CPU (h_cbit) = opval;
4253 written |= (1 << 10);
4254 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4255 }
4256 }
4257 } else {
4258 {
4259 BI opval = 1;
4260 CPU (h_cbit) = opval;
4261 written |= (1 << 10);
4262 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4263 }
4264 }
4265 } else {
4266 {
4267 QI opval = GET_H_SR (FLD (f_operand2));
4268 SETMEMQI (current_cpu, pc, tmp_addr, opval);
4269 written |= (1 << 12);
4270 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4271 }
4272 }
4273 if (NEBI (tmp_postinc, 0)) {
4274 {
4275 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4276 tmp_addr = ADDSI (tmp_addr, 1);
4277 }
4278 {
4279 SI opval = tmp_addr;
4280 SET_H_GR (FLD (f_operand1), opval);
4281 written |= (1 << 9);
4282 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4283 }
4284 }
4285 }
4286 }
4287 }
4288 else if (EQSI (tmp_rno, 1)) {
4289 {
4290 SI tmp_addr;
4291 BI tmp_postinc;
4292 tmp_postinc = FLD (f_memmode);
4293 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4294 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4295 if (EQBI (CPU (h_pbit), 0)) {
4296 {
4297 {
4298 QI opval = GET_H_SR (FLD (f_operand2));
4299 SETMEMQI (current_cpu, pc, tmp_addr, opval);
4300 written |= (1 << 12);
4301 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4302 }
4303 {
4304 BI opval = CPU (h_pbit);
4305 CPU (h_cbit) = opval;
4306 written |= (1 << 10);
4307 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4308 }
4309 }
4310 } else {
4311 {
4312 BI opval = 1;
4313 CPU (h_cbit) = opval;
4314 written |= (1 << 10);
4315 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4316 }
4317 }
4318 } else {
4319 {
4320 QI opval = GET_H_SR (FLD (f_operand2));
4321 SETMEMQI (current_cpu, pc, tmp_addr, opval);
4322 written |= (1 << 12);
4323 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4324 }
4325 }
4326 if (NEBI (tmp_postinc, 0)) {
4327 {
4328 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4329 tmp_addr = ADDSI (tmp_addr, 1);
4330 }
4331 {
4332 SI opval = tmp_addr;
4333 SET_H_GR (FLD (f_operand1), opval);
4334 written |= (1 << 9);
4335 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4336 }
4337 }
4338 }
4339 }
4340 }
4341 else if (EQSI (tmp_rno, 4)) {
4342 {
4343 SI tmp_addr;
4344 BI tmp_postinc;
4345 tmp_postinc = FLD (f_memmode);
4346 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4347 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4348 if (EQBI (CPU (h_pbit), 0)) {
4349 {
4350 {
4351 HI opval = GET_H_SR (FLD (f_operand2));
4352 SETMEMHI (current_cpu, pc, tmp_addr, opval);
4353 written |= (1 << 11);
4354 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4355 }
4356 {
4357 BI opval = CPU (h_pbit);
4358 CPU (h_cbit) = opval;
4359 written |= (1 << 10);
4360 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4361 }
4362 }
4363 } else {
4364 {
4365 BI opval = 1;
4366 CPU (h_cbit) = opval;
4367 written |= (1 << 10);
4368 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4369 }
4370 }
4371 } else {
4372 {
4373 HI opval = GET_H_SR (FLD (f_operand2));
4374 SETMEMHI (current_cpu, pc, tmp_addr, opval);
4375 written |= (1 << 11);
4376 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4377 }
4378 }
4379 if (NEBI (tmp_postinc, 0)) {
4380 {
4381 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4382 tmp_addr = ADDSI (tmp_addr, 2);
4383 }
4384 {
4385 SI opval = tmp_addr;
4386 SET_H_GR (FLD (f_operand1), opval);
4387 written |= (1 << 9);
4388 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4389 }
4390 }
4391 }
4392 }
4393 }
4394 else if (EQSI (tmp_rno, 8)) {
4395 {
4396 SI tmp_addr;
4397 BI tmp_postinc;
4398 tmp_postinc = FLD (f_memmode);
4399 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4400 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4401 if (EQBI (CPU (h_pbit), 0)) {
4402 {
4403 {
4404 SI opval = GET_H_SR (FLD (f_operand2));
4405 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4406 written |= (1 << 13);
4407 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4408 }
4409 {
4410 BI opval = CPU (h_pbit);
4411 CPU (h_cbit) = opval;
4412 written |= (1 << 10);
4413 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4414 }
4415 }
4416 } else {
4417 {
4418 BI opval = 1;
4419 CPU (h_cbit) = opval;
4420 written |= (1 << 10);
4421 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4422 }
4423 }
4424 } else {
4425 {
4426 SI opval = GET_H_SR (FLD (f_operand2));
4427 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4428 written |= (1 << 13);
4429 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4430 }
4431 }
4432 if (NEBI (tmp_postinc, 0)) {
4433 {
4434 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4435 tmp_addr = ADDSI (tmp_addr, 4);
4436 }
4437 {
4438 SI opval = tmp_addr;
4439 SET_H_GR (FLD (f_operand1), opval);
4440 written |= (1 << 9);
4441 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4442 }
4443 }
4444 }
4445 }
4446 }
4447 else if (EQSI (tmp_rno, 7)) {
4448 {
4449 SI tmp_addr;
4450 BI tmp_postinc;
4451 tmp_postinc = FLD (f_memmode);
4452 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4453 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4454 if (EQBI (CPU (h_pbit), 0)) {
4455 {
4456 {
4457 SI opval = GET_H_SR (FLD (f_operand2));
4458 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4459 written |= (1 << 13);
4460 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4461 }
4462 {
4463 BI opval = CPU (h_pbit);
4464 CPU (h_cbit) = opval;
4465 written |= (1 << 10);
4466 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4467 }
4468 }
4469 } else {
4470 {
4471 BI opval = 1;
4472 CPU (h_cbit) = opval;
4473 written |= (1 << 10);
4474 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4475 }
4476 }
4477 } else {
4478 {
4479 SI opval = GET_H_SR (FLD (f_operand2));
4480 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4481 written |= (1 << 13);
4482 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4483 }
4484 }
4485 if (NEBI (tmp_postinc, 0)) {
4486 {
4487 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4488 tmp_addr = ADDSI (tmp_addr, 4);
4489 }
4490 {
4491 SI opval = tmp_addr;
4492 SET_H_GR (FLD (f_operand1), opval);
4493 written |= (1 << 9);
4494 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4495 }
4496 }
4497 }
4498 }
4499 }
4500 else if (EQSI (tmp_rno, 14)) {
4501 {
4502 SI tmp_addr;
4503 BI tmp_postinc;
4504 tmp_postinc = FLD (f_memmode);
4505 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4506 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4507 if (EQBI (CPU (h_pbit), 0)) {
4508 {
4509 {
4510 SI opval = GET_H_SR (FLD (f_operand2));
4511 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4512 written |= (1 << 13);
4513 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4514 }
4515 {
4516 BI opval = CPU (h_pbit);
4517 CPU (h_cbit) = opval;
4518 written |= (1 << 10);
4519 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4520 }
4521 }
4522 } else {
4523 {
4524 BI opval = 1;
4525 CPU (h_cbit) = opval;
4526 written |= (1 << 10);
4527 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4528 }
4529 }
4530 } else {
4531 {
4532 SI opval = GET_H_SR (FLD (f_operand2));
4533 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4534 written |= (1 << 13);
4535 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4536 }
4537 }
4538 if (NEBI (tmp_postinc, 0)) {
4539 {
4540 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4541 tmp_addr = ADDSI (tmp_addr, 4);
4542 }
4543 {
4544 SI opval = tmp_addr;
4545 SET_H_GR (FLD (f_operand1), opval);
4546 written |= (1 << 9);
4547 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4548 }
4549 }
4550 }
4551 }
4552 }
4553 else if (EQSI (tmp_rno, 15)) {
4554 {
4555 SI tmp_addr;
4556 BI tmp_postinc;
4557 tmp_postinc = FLD (f_memmode);
4558 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4559 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4560 if (EQBI (CPU (h_pbit), 0)) {
4561 {
4562 {
4563 SI opval = GET_H_SR (FLD (f_operand2));
4564 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4565 written |= (1 << 13);
4566 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4567 }
4568 {
4569 BI opval = CPU (h_pbit);
4570 CPU (h_cbit) = opval;
4571 written |= (1 << 10);
4572 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4573 }
4574 }
4575 } else {
4576 {
4577 BI opval = 1;
4578 CPU (h_cbit) = opval;
4579 written |= (1 << 10);
4580 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4581 }
4582 }
4583 } else {
4584 {
4585 SI opval = GET_H_SR (FLD (f_operand2));
4586 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4587 written |= (1 << 13);
4588 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4589 }
4590 }
4591 if (NEBI (tmp_postinc, 0)) {
4592 {
4593 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4594 tmp_addr = ADDSI (tmp_addr, 4);
4595 }
4596 {
4597 SI opval = tmp_addr;
4598 SET_H_GR (FLD (f_operand1), opval);
4599 written |= (1 << 9);
4600 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4601 }
4602 }
4603 }
4604 }
4605 }
4606 else {
4607 cgen_rtx_error (current_cpu, "write from unimplemented special register");
4608 }
4609 {
4610 {
4611 BI opval = 0;
4612 CPU (h_xbit) = opval;
4613 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
4614 }
4615 {
4616 BI opval = 0;
4617 SET_H_INSN_PREFIXED_P (opval);
4618 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
4619 }
4620 }
4621 }
4622
4623 abuf->written = written;
4624 #undef FLD
4625 }
4626 NEXT (vpc);
4627
4628 CASE (sem, INSN_SBFS) : /* sbfs [${Rd-sfield}${inc}] */
4629 {
4630 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4631 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4632 #define FLD(f) abuf->fields.sfmt_empty.f
4633 int UNUSED written = 0;
4634 IADDR UNUSED pc = abuf->addr;
4635 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4636
4637 cgen_rtx_error (current_cpu, "SBFS isn't implemented");
4638
4639 #undef FLD
4640 }
4641 NEXT (vpc);
4642
4643 CASE (sem, INSN_MOVEM_R_M) : /* movem ${Rs-dfield},[${Rd-sfield}${inc}] */
4644 {
4645 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4646 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4647 #define FLD(f) abuf->fields.sfmt_movem_r_m.f
4648 int UNUSED written = 0;
4649 IADDR UNUSED pc = abuf->addr;
4650 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4651
4652 {
4653 SI tmp_addr;
4654 BI tmp_postinc;
4655 tmp_postinc = FLD (f_memmode);
4656 {
4657 SI tmp_dummy;
4658 tmp_dummy = GET_H_GR (FLD (f_operand2));
4659 }
4660 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4661 {
4662 if (GESI (FLD (f_operand2), 15)) {
4663 {
4664 SI tmp_tmp;
4665 tmp_tmp = GET_H_GR (((UINT) 15));
4666 {
4667 SI opval = tmp_tmp;
4668 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4669 written |= (1 << 23);
4670 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4671 }
4672 tmp_addr = ADDSI (tmp_addr, 4);
4673 }
4674 }
4675 if (GESI (FLD (f_operand2), 14)) {
4676 {
4677 SI tmp_tmp;
4678 tmp_tmp = GET_H_GR (((UINT) 14));
4679 {
4680 SI opval = tmp_tmp;
4681 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4682 written |= (1 << 23);
4683 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4684 }
4685 tmp_addr = ADDSI (tmp_addr, 4);
4686 }
4687 }
4688 if (GESI (FLD (f_operand2), 13)) {
4689 {
4690 SI tmp_tmp;
4691 tmp_tmp = GET_H_GR (((UINT) 13));
4692 {
4693 SI opval = tmp_tmp;
4694 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4695 written |= (1 << 23);
4696 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4697 }
4698 tmp_addr = ADDSI (tmp_addr, 4);
4699 }
4700 }
4701 if (GESI (FLD (f_operand2), 12)) {
4702 {
4703 SI tmp_tmp;
4704 tmp_tmp = GET_H_GR (((UINT) 12));
4705 {
4706 SI opval = tmp_tmp;
4707 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4708 written |= (1 << 23);
4709 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4710 }
4711 tmp_addr = ADDSI (tmp_addr, 4);
4712 }
4713 }
4714 if (GESI (FLD (f_operand2), 11)) {
4715 {
4716 SI tmp_tmp;
4717 tmp_tmp = GET_H_GR (((UINT) 11));
4718 {
4719 SI opval = tmp_tmp;
4720 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4721 written |= (1 << 23);
4722 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4723 }
4724 tmp_addr = ADDSI (tmp_addr, 4);
4725 }
4726 }
4727 if (GESI (FLD (f_operand2), 10)) {
4728 {
4729 SI tmp_tmp;
4730 tmp_tmp = GET_H_GR (((UINT) 10));
4731 {
4732 SI opval = tmp_tmp;
4733 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4734 written |= (1 << 23);
4735 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4736 }
4737 tmp_addr = ADDSI (tmp_addr, 4);
4738 }
4739 }
4740 if (GESI (FLD (f_operand2), 9)) {
4741 {
4742 SI tmp_tmp;
4743 tmp_tmp = GET_H_GR (((UINT) 9));
4744 {
4745 SI opval = tmp_tmp;
4746 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4747 written |= (1 << 23);
4748 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4749 }
4750 tmp_addr = ADDSI (tmp_addr, 4);
4751 }
4752 }
4753 if (GESI (FLD (f_operand2), 8)) {
4754 {
4755 SI tmp_tmp;
4756 tmp_tmp = GET_H_GR (((UINT) 8));
4757 {
4758 SI opval = tmp_tmp;
4759 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4760 written |= (1 << 23);
4761 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4762 }
4763 tmp_addr = ADDSI (tmp_addr, 4);
4764 }
4765 }
4766 if (GESI (FLD (f_operand2), 7)) {
4767 {
4768 SI tmp_tmp;
4769 tmp_tmp = GET_H_GR (((UINT) 7));
4770 {
4771 SI opval = tmp_tmp;
4772 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4773 written |= (1 << 23);
4774 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4775 }
4776 tmp_addr = ADDSI (tmp_addr, 4);
4777 }
4778 }
4779 if (GESI (FLD (f_operand2), 6)) {
4780 {
4781 SI tmp_tmp;
4782 tmp_tmp = GET_H_GR (((UINT) 6));
4783 {
4784 SI opval = tmp_tmp;
4785 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4786 written |= (1 << 23);
4787 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4788 }
4789 tmp_addr = ADDSI (tmp_addr, 4);
4790 }
4791 }
4792 if (GESI (FLD (f_operand2), 5)) {
4793 {
4794 SI tmp_tmp;
4795 tmp_tmp = GET_H_GR (((UINT) 5));
4796 {
4797 SI opval = tmp_tmp;
4798 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4799 written |= (1 << 23);
4800 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4801 }
4802 tmp_addr = ADDSI (tmp_addr, 4);
4803 }
4804 }
4805 if (GESI (FLD (f_operand2), 4)) {
4806 {
4807 SI tmp_tmp;
4808 tmp_tmp = GET_H_GR (((UINT) 4));
4809 {
4810 SI opval = tmp_tmp;
4811 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4812 written |= (1 << 23);
4813 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4814 }
4815 tmp_addr = ADDSI (tmp_addr, 4);
4816 }
4817 }
4818 if (GESI (FLD (f_operand2), 3)) {
4819 {
4820 SI tmp_tmp;
4821 tmp_tmp = GET_H_GR (((UINT) 3));
4822 {
4823 SI opval = tmp_tmp;
4824 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4825 written |= (1 << 23);
4826 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4827 }
4828 tmp_addr = ADDSI (tmp_addr, 4);
4829 }
4830 }
4831 if (GESI (FLD (f_operand2), 2)) {
4832 {
4833 SI tmp_tmp;
4834 tmp_tmp = GET_H_GR (((UINT) 2));
4835 {
4836 SI opval = tmp_tmp;
4837 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4838 written |= (1 << 23);
4839 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4840 }
4841 tmp_addr = ADDSI (tmp_addr, 4);
4842 }
4843 }
4844 if (GESI (FLD (f_operand2), 1)) {
4845 {
4846 SI tmp_tmp;
4847 tmp_tmp = GET_H_GR (((UINT) 1));
4848 {
4849 SI opval = tmp_tmp;
4850 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4851 written |= (1 << 23);
4852 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4853 }
4854 tmp_addr = ADDSI (tmp_addr, 4);
4855 }
4856 }
4857 if (GESI (FLD (f_operand2), 0)) {
4858 {
4859 SI tmp_tmp;
4860 tmp_tmp = GET_H_GR (((UINT) 0));
4861 {
4862 SI opval = tmp_tmp;
4863 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4864 written |= (1 << 23);
4865 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4866 }
4867 tmp_addr = ADDSI (tmp_addr, 4);
4868 }
4869 }
4870 }
4871 if (NEBI (tmp_postinc, 0)) {
4872 {
4873 SI opval = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (tmp_addr) : (CPU (h_prefixreg_pre_v32)));
4874 SET_H_GR (FLD (f_operand1), opval);
4875 written |= (1 << 22);
4876 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4877 }
4878 }
4879 {
4880 {
4881 BI opval = 0;
4882 CPU (h_xbit) = opval;
4883 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
4884 }
4885 {
4886 BI opval = 0;
4887 SET_H_INSN_PREFIXED_P (opval);
4888 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
4889 }
4890 }
4891 }
4892
4893 abuf->written = written;
4894 #undef FLD
4895 }
4896 NEXT (vpc);
4897
4898 CASE (sem, INSN_MOVEM_M_R) : /* movem [${Rs}${inc}],${Rd} */
4899 {
4900 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4901 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4902 #define FLD(f) abuf->fields.sfmt_movem_m_r.f
4903 int UNUSED written = 0;
4904 IADDR UNUSED pc = abuf->addr;
4905 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4906
4907 {
4908 SI tmp_addr;
4909 BI tmp_postinc;
4910 tmp_postinc = FLD (f_memmode);
4911 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4912 {
4913 SI tmp_dummy;
4914 tmp_dummy = GET_H_GR (FLD (f_operand2));
4915 }
4916 {
4917 if (GESI (FLD (f_operand2), 14)) {
4918 {
4919 SI tmp_tmp;
4920 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4921 {
4922 SI opval = tmp_tmp;
4923 SET_H_GR (((UINT) 14), opval);
4924 written |= (1 << 14);
4925 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4926 }
4927 tmp_addr = ADDSI (tmp_addr, 4);
4928 }
4929 }
4930 if (GESI (FLD (f_operand2), 13)) {
4931 {
4932 SI tmp_tmp;
4933 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4934 {
4935 SI opval = tmp_tmp;
4936 SET_H_GR (((UINT) 13), opval);
4937 written |= (1 << 13);
4938 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4939 }
4940 tmp_addr = ADDSI (tmp_addr, 4);
4941 }
4942 }
4943 if (GESI (FLD (f_operand2), 12)) {
4944 {
4945 SI tmp_tmp;
4946 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4947 {
4948 SI opval = tmp_tmp;
4949 SET_H_GR (((UINT) 12), opval);
4950 written |= (1 << 12);
4951 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4952 }
4953 tmp_addr = ADDSI (tmp_addr, 4);
4954 }
4955 }
4956 if (GESI (FLD (f_operand2), 11)) {
4957 {
4958 SI tmp_tmp;
4959 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4960 {
4961 SI opval = tmp_tmp;
4962 SET_H_GR (((UINT) 11), opval);
4963 written |= (1 << 11);
4964 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4965 }
4966 tmp_addr = ADDSI (tmp_addr, 4);
4967 }
4968 }
4969 if (GESI (FLD (f_operand2), 10)) {
4970 {
4971 SI tmp_tmp;
4972 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4973 {
4974 SI opval = tmp_tmp;
4975 SET_H_GR (((UINT) 10), opval);
4976 written |= (1 << 10);
4977 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4978 }
4979 tmp_addr = ADDSI (tmp_addr, 4);
4980 }
4981 }
4982 if (GESI (FLD (f_operand2), 9)) {
4983 {
4984 SI tmp_tmp;
4985 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4986 {
4987 SI opval = tmp_tmp;
4988 SET_H_GR (((UINT) 9), opval);
4989 written |= (1 << 22);
4990 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4991 }
4992 tmp_addr = ADDSI (tmp_addr, 4);
4993 }
4994 }
4995 if (GESI (FLD (f_operand2), 8)) {
4996 {
4997 SI tmp_tmp;
4998 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4999 {
5000 SI opval = tmp_tmp;
5001 SET_H_GR (((UINT) 8), opval);
5002 written |= (1 << 21);
5003 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5004 }
5005 tmp_addr = ADDSI (tmp_addr, 4);
5006 }
5007 }
5008 if (GESI (FLD (f_operand2), 7)) {
5009 {
5010 SI tmp_tmp;
5011 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5012 {
5013 SI opval = tmp_tmp;
5014 SET_H_GR (((UINT) 7), opval);
5015 written |= (1 << 20);
5016 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5017 }
5018 tmp_addr = ADDSI (tmp_addr, 4);
5019 }
5020 }
5021 if (GESI (FLD (f_operand2), 6)) {
5022 {
5023 SI tmp_tmp;
5024 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5025 {
5026 SI opval = tmp_tmp;
5027 SET_H_GR (((UINT) 6), opval);
5028 written |= (1 << 19);
5029 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5030 }
5031 tmp_addr = ADDSI (tmp_addr, 4);
5032 }
5033 }
5034 if (GESI (FLD (f_operand2), 5)) {
5035 {
5036 SI tmp_tmp;
5037 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5038 {
5039 SI opval = tmp_tmp;
5040 SET_H_GR (((UINT) 5), opval);
5041 written |= (1 << 18);
5042 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5043 }
5044 tmp_addr = ADDSI (tmp_addr, 4);
5045 }
5046 }
5047 if (GESI (FLD (f_operand2), 4)) {
5048 {
5049 SI tmp_tmp;
5050 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5051 {
5052 SI opval = tmp_tmp;
5053 SET_H_GR (((UINT) 4), opval);
5054 written |= (1 << 17);
5055 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5056 }
5057 tmp_addr = ADDSI (tmp_addr, 4);
5058 }
5059 }
5060 if (GESI (FLD (f_operand2), 3)) {
5061 {
5062 SI tmp_tmp;
5063 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5064 {
5065 SI opval = tmp_tmp;
5066 SET_H_GR (((UINT) 3), opval);
5067 written |= (1 << 16);
5068 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5069 }
5070 tmp_addr = ADDSI (tmp_addr, 4);
5071 }
5072 }
5073 if (GESI (FLD (f_operand2), 2)) {
5074 {
5075 SI tmp_tmp;
5076 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5077 {
5078 SI opval = tmp_tmp;
5079 SET_H_GR (((UINT) 2), opval);
5080 written |= (1 << 15);
5081 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5082 }
5083 tmp_addr = ADDSI (tmp_addr, 4);
5084 }
5085 }
5086 if (GESI (FLD (f_operand2), 1)) {
5087 {
5088 SI tmp_tmp;
5089 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5090 {
5091 SI opval = tmp_tmp;
5092 SET_H_GR (((UINT) 1), opval);
5093 written |= (1 << 9);
5094 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5095 }
5096 tmp_addr = ADDSI (tmp_addr, 4);
5097 }
5098 }
5099 if (GESI (FLD (f_operand2), 0)) {
5100 {
5101 SI tmp_tmp;
5102 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5103 {
5104 SI opval = tmp_tmp;
5105 SET_H_GR (((UINT) 0), opval);
5106 written |= (1 << 8);
5107 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5108 }
5109 tmp_addr = ADDSI (tmp_addr, 4);
5110 }
5111 }
5112 }
5113 if (NEBI (tmp_postinc, 0)) {
5114 {
5115 SI opval = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (tmp_addr) : (CPU (h_prefixreg_pre_v32)));
5116 SET_H_GR (FLD (f_operand1), opval);
5117 written |= (1 << 7);
5118 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5119 }
5120 }
5121 {
5122 {
5123 BI opval = 0;
5124 CPU (h_xbit) = opval;
5125 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5126 }
5127 {
5128 BI opval = 0;
5129 SET_H_INSN_PREFIXED_P (opval);
5130 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5131 }
5132 }
5133 }
5134
5135 abuf->written = written;
5136 #undef FLD
5137 }
5138 NEXT (vpc);
5139
5140 CASE (sem, INSN_MOVEM_M_PC) : /* movem [${Rs}${inc}],${Rd} */
5141 {
5142 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5143 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5144 #define FLD(f) abuf->fields.sfmt_movem_m_r.f
5145 int UNUSED written = 0;
5146 IADDR UNUSED pc = abuf->addr;
5147 SEM_BRANCH_INIT
5148 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5149
5150 {
5151 SI tmp_addr;
5152 BI tmp_postinc;
5153 tmp_postinc = FLD (f_memmode);
5154 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
5155 {
5156 {
5157 USI opval = GETMEMSI (current_cpu, pc, tmp_addr);
5158 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
5159 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5160 }
5161 tmp_addr = ADDSI (tmp_addr, 4);
5162 {
5163 SI tmp_tmp;
5164 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5165 {
5166 SI opval = tmp_tmp;
5167 SET_H_GR (((UINT) 14), opval);
5168 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5169 }
5170 tmp_addr = ADDSI (tmp_addr, 4);
5171 }
5172 {
5173 SI tmp_tmp;
5174 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5175 {
5176 SI opval = tmp_tmp;
5177 SET_H_GR (((UINT) 13), opval);
5178 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5179 }
5180 tmp_addr = ADDSI (tmp_addr, 4);
5181 }
5182 {
5183 SI tmp_tmp;
5184 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5185 {
5186 SI opval = tmp_tmp;
5187 SET_H_GR (((UINT) 12), opval);
5188 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5189 }
5190 tmp_addr = ADDSI (tmp_addr, 4);
5191 }
5192 {
5193 SI tmp_tmp;
5194 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5195 {
5196 SI opval = tmp_tmp;
5197 SET_H_GR (((UINT) 11), opval);
5198 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5199 }
5200 tmp_addr = ADDSI (tmp_addr, 4);
5201 }
5202 {
5203 SI tmp_tmp;
5204 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5205 {
5206 SI opval = tmp_tmp;
5207 SET_H_GR (((UINT) 10), opval);
5208 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5209 }
5210 tmp_addr = ADDSI (tmp_addr, 4);
5211 }
5212 {
5213 SI tmp_tmp;
5214 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5215 {
5216 SI opval = tmp_tmp;
5217 SET_H_GR (((UINT) 9), opval);
5218 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5219 }
5220 tmp_addr = ADDSI (tmp_addr, 4);
5221 }
5222 {
5223 SI tmp_tmp;
5224 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5225 {
5226 SI opval = tmp_tmp;
5227 SET_H_GR (((UINT) 8), opval);
5228 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5229 }
5230 tmp_addr = ADDSI (tmp_addr, 4);
5231 }
5232 {
5233 SI tmp_tmp;
5234 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5235 {
5236 SI opval = tmp_tmp;
5237 SET_H_GR (((UINT) 7), opval);
5238 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5239 }
5240 tmp_addr = ADDSI (tmp_addr, 4);
5241 }
5242 {
5243 SI tmp_tmp;
5244 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5245 {
5246 SI opval = tmp_tmp;
5247 SET_H_GR (((UINT) 6), opval);
5248 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5249 }
5250 tmp_addr = ADDSI (tmp_addr, 4);
5251 }
5252 {
5253 SI tmp_tmp;
5254 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5255 {
5256 SI opval = tmp_tmp;
5257 SET_H_GR (((UINT) 5), opval);
5258 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5259 }
5260 tmp_addr = ADDSI (tmp_addr, 4);
5261 }
5262 {
5263 SI tmp_tmp;
5264 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5265 {
5266 SI opval = tmp_tmp;
5267 SET_H_GR (((UINT) 4), opval);
5268 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5269 }
5270 tmp_addr = ADDSI (tmp_addr, 4);
5271 }
5272 {
5273 SI tmp_tmp;
5274 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5275 {
5276 SI opval = tmp_tmp;
5277 SET_H_GR (((UINT) 3), opval);
5278 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5279 }
5280 tmp_addr = ADDSI (tmp_addr, 4);
5281 }
5282 {
5283 SI tmp_tmp;
5284 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5285 {
5286 SI opval = tmp_tmp;
5287 SET_H_GR (((UINT) 2), opval);
5288 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5289 }
5290 tmp_addr = ADDSI (tmp_addr, 4);
5291 }
5292 {
5293 SI tmp_tmp;
5294 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5295 {
5296 SI opval = tmp_tmp;
5297 SET_H_GR (((UINT) 1), opval);
5298 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5299 }
5300 tmp_addr = ADDSI (tmp_addr, 4);
5301 }
5302 {
5303 SI tmp_tmp;
5304 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5305 {
5306 SI opval = tmp_tmp;
5307 SET_H_GR (((UINT) 0), opval);
5308 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5309 }
5310 tmp_addr = ADDSI (tmp_addr, 4);
5311 }
5312 }
5313 if (NEBI (tmp_postinc, 0)) {
5314 {
5315 SI opval = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (tmp_addr) : (CPU (h_prefixreg_pre_v32)));
5316 SET_H_GR (FLD (f_operand1), opval);
5317 written |= (1 << 5);
5318 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5319 }
5320 }
5321 {
5322 {
5323 BI opval = 0;
5324 CPU (h_xbit) = opval;
5325 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5326 }
5327 {
5328 BI opval = 0;
5329 SET_H_INSN_PREFIXED_P (opval);
5330 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5331 }
5332 }
5333 }
5334
5335 abuf->written = written;
5336 SEM_BRANCH_FINI (vpc);
5337 #undef FLD
5338 }
5339 NEXT (vpc);
5340
5341 CASE (sem, INSN_ADD_B_R) : /* add.b $Rs,$Rd */
5342 {
5343 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5344 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5345 #define FLD(f) abuf->fields.sfmt_add_b_r.f
5346 int UNUSED written = 0;
5347 IADDR UNUSED pc = abuf->addr;
5348 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5349
5350 {
5351 QI tmp_tmpopd;
5352 QI tmp_tmpops;
5353 BI tmp_carry;
5354 QI tmp_newval;
5355 tmp_tmpops = GET_H_GR (FLD (f_operand1));
5356 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5357 tmp_carry = CPU (h_cbit);
5358 tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5359 {
5360 SI tmp_oldregval;
5361 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
5362 {
5363 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
5364 SET_H_GR (FLD (f_operand2), opval);
5365 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5366 }
5367 }
5368 {
5369 {
5370 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), ORIF (ANDIF (LTQI (tmp_tmpopd, 0), GEQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_newval, 0))));
5371 CPU (h_cbit) = opval;
5372 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5373 }
5374 {
5375 BI opval = LTQI (tmp_newval, 0);
5376 CPU (h_nbit) = opval;
5377 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5378 }
5379 {
5380 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5381 CPU (h_zbit) = opval;
5382 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5383 }
5384 {
5385 BI opval = ORIF (ANDIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (GEQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
5386 CPU (h_vbit) = opval;
5387 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5388 }
5389 {
5390 {
5391 BI opval = 0;
5392 CPU (h_xbit) = opval;
5393 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5394 }
5395 {
5396 BI opval = 0;
5397 SET_H_INSN_PREFIXED_P (opval);
5398 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5399 }
5400 }
5401 }
5402 }
5403
5404 #undef FLD
5405 }
5406 NEXT (vpc);
5407
5408 CASE (sem, INSN_ADD_W_R) : /* add.w $Rs,$Rd */
5409 {
5410 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5411 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5412 #define FLD(f) abuf->fields.sfmt_add_b_r.f
5413 int UNUSED written = 0;
5414 IADDR UNUSED pc = abuf->addr;
5415 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5416
5417 {
5418 HI tmp_tmpopd;
5419 HI tmp_tmpops;
5420 BI tmp_carry;
5421 HI tmp_newval;
5422 tmp_tmpops = GET_H_GR (FLD (f_operand1));
5423 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5424 tmp_carry = CPU (h_cbit);
5425 tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5426 {
5427 SI tmp_oldregval;
5428 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
5429 {
5430 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
5431 SET_H_GR (FLD (f_operand2), opval);
5432 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5433 }
5434 }
5435 {
5436 {
5437 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), ORIF (ANDIF (LTHI (tmp_tmpopd, 0), GEHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_newval, 0))));
5438 CPU (h_cbit) = opval;
5439 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5440 }
5441 {
5442 BI opval = LTHI (tmp_newval, 0);
5443 CPU (h_nbit) = opval;
5444 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5445 }
5446 {
5447 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5448 CPU (h_zbit) = opval;
5449 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5450 }
5451 {
5452 BI opval = ORIF (ANDIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (GEHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
5453 CPU (h_vbit) = opval;
5454 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5455 }
5456 {
5457 {
5458 BI opval = 0;
5459 CPU (h_xbit) = opval;
5460 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5461 }
5462 {
5463 BI opval = 0;
5464 SET_H_INSN_PREFIXED_P (opval);
5465 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5466 }
5467 }
5468 }
5469 }
5470
5471 #undef FLD
5472 }
5473 NEXT (vpc);
5474
5475 CASE (sem, INSN_ADD_D_R) : /* add.d $Rs,$Rd */
5476 {
5477 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5478 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5479 #define FLD(f) abuf->fields.sfmt_add_b_r.f
5480 int UNUSED written = 0;
5481 IADDR UNUSED pc = abuf->addr;
5482 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5483
5484 {
5485 SI tmp_tmpopd;
5486 SI tmp_tmpops;
5487 BI tmp_carry;
5488 SI tmp_newval;
5489 tmp_tmpops = GET_H_GR (FLD (f_operand1));
5490 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5491 tmp_carry = CPU (h_cbit);
5492 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5493 {
5494 SI opval = tmp_newval;
5495 SET_H_GR (FLD (f_operand2), opval);
5496 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5497 }
5498 {
5499 {
5500 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
5501 CPU (h_cbit) = opval;
5502 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5503 }
5504 {
5505 BI opval = LTSI (tmp_newval, 0);
5506 CPU (h_nbit) = opval;
5507 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5508 }
5509 {
5510 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5511 CPU (h_zbit) = opval;
5512 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5513 }
5514 {
5515 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
5516 CPU (h_vbit) = opval;
5517 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5518 }
5519 {
5520 {
5521 BI opval = 0;
5522 CPU (h_xbit) = opval;
5523 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5524 }
5525 {
5526 BI opval = 0;
5527 SET_H_INSN_PREFIXED_P (opval);
5528 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5529 }
5530 }
5531 }
5532 }
5533
5534 #undef FLD
5535 }
5536 NEXT (vpc);
5537
5538 CASE (sem, INSN_ADD_M_B_M) : /* add-m.b [${Rs}${inc}],${Rd} */
5539 {
5540 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5541 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5542 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
5543 int UNUSED written = 0;
5544 IADDR UNUSED pc = abuf->addr;
5545 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5546
5547 {
5548 QI tmp_tmpopd;
5549 QI tmp_tmpops;
5550 BI tmp_carry;
5551 QI tmp_newval;
5552 tmp_tmpops = ({ SI tmp_addr;
5553 QI tmp_tmp_mem;
5554 BI tmp_postinc;
5555 tmp_postinc = FLD (f_memmode);
5556 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
5557 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
5558 ; if (NEBI (tmp_postinc, 0)) {
5559 {
5560 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
5561 tmp_addr = ADDSI (tmp_addr, 1);
5562 }
5563 {
5564 SI opval = tmp_addr;
5565 SET_H_GR (FLD (f_operand1), opval);
5566 written |= (1 << 12);
5567 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5568 }
5569 }
5570 }
5571 ; tmp_tmp_mem; });
5572 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5573 tmp_carry = CPU (h_cbit);
5574 tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5575 {
5576 SI tmp_oldregval;
5577 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
5578 {
5579 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
5580 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
5581 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5582 }
5583 }
5584 {
5585 {
5586 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), ORIF (ANDIF (LTQI (tmp_tmpopd, 0), GEQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_newval, 0))));
5587 CPU (h_cbit) = opval;
5588 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5589 }
5590 {
5591 BI opval = LTQI (tmp_newval, 0);
5592 CPU (h_nbit) = opval;
5593 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5594 }
5595 {
5596 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5597 CPU (h_zbit) = opval;
5598 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5599 }
5600 {
5601 BI opval = ORIF (ANDIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (GEQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
5602 CPU (h_vbit) = opval;
5603 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5604 }
5605 {
5606 {
5607 BI opval = 0;
5608 CPU (h_xbit) = opval;
5609 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5610 }
5611 {
5612 BI opval = 0;
5613 SET_H_INSN_PREFIXED_P (opval);
5614 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5615 }
5616 }
5617 }
5618 }
5619
5620 abuf->written = written;
5621 #undef FLD
5622 }
5623 NEXT (vpc);
5624
5625 CASE (sem, INSN_ADD_M_W_M) : /* add-m.w [${Rs}${inc}],${Rd} */
5626 {
5627 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5628 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5629 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
5630 int UNUSED written = 0;
5631 IADDR UNUSED pc = abuf->addr;
5632 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5633
5634 {
5635 HI tmp_tmpopd;
5636 HI tmp_tmpops;
5637 BI tmp_carry;
5638 HI tmp_newval;
5639 tmp_tmpops = ({ SI tmp_addr;
5640 HI tmp_tmp_mem;
5641 BI tmp_postinc;
5642 tmp_postinc = FLD (f_memmode);
5643 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
5644 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
5645 ; if (NEBI (tmp_postinc, 0)) {
5646 {
5647 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
5648 tmp_addr = ADDSI (tmp_addr, 2);
5649 }
5650 {
5651 SI opval = tmp_addr;
5652 SET_H_GR (FLD (f_operand1), opval);
5653 written |= (1 << 12);
5654 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5655 }
5656 }
5657 }
5658 ; tmp_tmp_mem; });
5659 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5660 tmp_carry = CPU (h_cbit);
5661 tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5662 {
5663 SI tmp_oldregval;
5664 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
5665 {
5666 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
5667 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
5668 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5669 }
5670 }
5671 {
5672 {
5673 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), ORIF (ANDIF (LTHI (tmp_tmpopd, 0), GEHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_newval, 0))));
5674 CPU (h_cbit) = opval;
5675 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5676 }
5677 {
5678 BI opval = LTHI (tmp_newval, 0);
5679 CPU (h_nbit) = opval;
5680 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5681 }
5682 {
5683 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5684 CPU (h_zbit) = opval;
5685 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5686 }
5687 {
5688 BI opval = ORIF (ANDIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (GEHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
5689 CPU (h_vbit) = opval;
5690 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5691 }
5692 {
5693 {
5694 BI opval = 0;
5695 CPU (h_xbit) = opval;
5696 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5697 }
5698 {
5699 BI opval = 0;
5700 SET_H_INSN_PREFIXED_P (opval);
5701 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5702 }
5703 }
5704 }
5705 }
5706
5707 abuf->written = written;
5708 #undef FLD
5709 }
5710 NEXT (vpc);
5711
5712 CASE (sem, INSN_ADD_M_D_M) : /* add-m.d [${Rs}${inc}],${Rd} */
5713 {
5714 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5715 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5716 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
5717 int UNUSED written = 0;
5718 IADDR UNUSED pc = abuf->addr;
5719 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5720
5721 {
5722 SI tmp_tmpopd;
5723 SI tmp_tmpops;
5724 BI tmp_carry;
5725 SI tmp_newval;
5726 tmp_tmpops = ({ SI tmp_addr;
5727 SI tmp_tmp_mem;
5728 BI tmp_postinc;
5729 tmp_postinc = FLD (f_memmode);
5730 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
5731 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
5732 ; if (NEBI (tmp_postinc, 0)) {
5733 {
5734 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
5735 tmp_addr = ADDSI (tmp_addr, 4);
5736 }
5737 {
5738 SI opval = tmp_addr;
5739 SET_H_GR (FLD (f_operand1), opval);
5740 written |= (1 << 11);
5741 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5742 }
5743 }
5744 }
5745 ; tmp_tmp_mem; });
5746 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5747 tmp_carry = CPU (h_cbit);
5748 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5749 {
5750 SI opval = tmp_newval;
5751 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
5752 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5753 }
5754 {
5755 {
5756 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
5757 CPU (h_cbit) = opval;
5758 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5759 }
5760 {
5761 BI opval = LTSI (tmp_newval, 0);
5762 CPU (h_nbit) = opval;
5763 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5764 }
5765 {
5766 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5767 CPU (h_zbit) = opval;
5768 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5769 }
5770 {
5771 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
5772 CPU (h_vbit) = opval;
5773 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5774 }
5775 {
5776 {
5777 BI opval = 0;
5778 CPU (h_xbit) = opval;
5779 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5780 }
5781 {
5782 BI opval = 0;
5783 SET_H_INSN_PREFIXED_P (opval);
5784 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5785 }
5786 }
5787 }
5788 }
5789
5790 abuf->written = written;
5791 #undef FLD
5792 }
5793 NEXT (vpc);
5794
5795 CASE (sem, INSN_ADDCBR) : /* add.b ${sconst8}],${Rd} */
5796 {
5797 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5798 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5799 #define FLD(f) abuf->fields.sfmt_addcbr.f
5800 int UNUSED written = 0;
5801 IADDR UNUSED pc = abuf->addr;
5802 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5803
5804 {
5805 QI tmp_tmpopd;
5806 QI tmp_tmpops;
5807 BI tmp_carry;
5808 QI tmp_newval;
5809 tmp_tmpops = FLD (f_indir_pc__byte);
5810 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5811 tmp_carry = CPU (h_cbit);
5812 tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5813 {
5814 SI tmp_oldregval;
5815 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
5816 {
5817 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
5818 SET_H_GR (FLD (f_operand2), opval);
5819 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5820 }
5821 }
5822 {
5823 {
5824 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), ORIF (ANDIF (LTQI (tmp_tmpopd, 0), GEQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_newval, 0))));
5825 CPU (h_cbit) = opval;
5826 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5827 }
5828 {
5829 BI opval = LTQI (tmp_newval, 0);
5830 CPU (h_nbit) = opval;
5831 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5832 }
5833 {
5834 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5835 CPU (h_zbit) = opval;
5836 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5837 }
5838 {
5839 BI opval = ORIF (ANDIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (GEQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
5840 CPU (h_vbit) = opval;
5841 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5842 }
5843 {
5844 {
5845 BI opval = 0;
5846 CPU (h_xbit) = opval;
5847 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5848 }
5849 {
5850 BI opval = 0;
5851 SET_H_INSN_PREFIXED_P (opval);
5852 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5853 }
5854 }
5855 }
5856 }
5857
5858 #undef FLD
5859 }
5860 NEXT (vpc);
5861
5862 CASE (sem, INSN_ADDCWR) : /* add.w ${sconst16}],${Rd} */
5863 {
5864 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5865 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5866 #define FLD(f) abuf->fields.sfmt_addcwr.f
5867 int UNUSED written = 0;
5868 IADDR UNUSED pc = abuf->addr;
5869 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5870
5871 {
5872 HI tmp_tmpopd;
5873 HI tmp_tmpops;
5874 BI tmp_carry;
5875 HI tmp_newval;
5876 tmp_tmpops = FLD (f_indir_pc__word);
5877 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5878 tmp_carry = CPU (h_cbit);
5879 tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5880 {
5881 SI tmp_oldregval;
5882 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
5883 {
5884 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
5885 SET_H_GR (FLD (f_operand2), opval);
5886 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5887 }
5888 }
5889 {
5890 {
5891 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), ORIF (ANDIF (LTHI (tmp_tmpopd, 0), GEHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_newval, 0))));
5892 CPU (h_cbit) = opval;
5893 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5894 }
5895 {
5896 BI opval = LTHI (tmp_newval, 0);
5897 CPU (h_nbit) = opval;
5898 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5899 }
5900 {
5901 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5902 CPU (h_zbit) = opval;
5903 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5904 }
5905 {
5906 BI opval = ORIF (ANDIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (GEHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
5907 CPU (h_vbit) = opval;
5908 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5909 }
5910 {
5911 {
5912 BI opval = 0;
5913 CPU (h_xbit) = opval;
5914 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5915 }
5916 {
5917 BI opval = 0;
5918 SET_H_INSN_PREFIXED_P (opval);
5919 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5920 }
5921 }
5922 }
5923 }
5924
5925 #undef FLD
5926 }
5927 NEXT (vpc);
5928
5929 CASE (sem, INSN_ADDCDR) : /* add.d ${const32}],${Rd} */
5930 {
5931 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5933 #define FLD(f) abuf->fields.sfmt_addcdr.f
5934 int UNUSED written = 0;
5935 IADDR UNUSED pc = abuf->addr;
5936 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
5937
5938 {
5939 SI tmp_tmpopd;
5940 SI tmp_tmpops;
5941 BI tmp_carry;
5942 SI tmp_newval;
5943 tmp_tmpops = FLD (f_indir_pc__dword);
5944 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5945 tmp_carry = CPU (h_cbit);
5946 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5947 {
5948 SI opval = tmp_newval;
5949 SET_H_GR (FLD (f_operand2), opval);
5950 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5951 }
5952 {
5953 {
5954 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
5955 CPU (h_cbit) = opval;
5956 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5957 }
5958 {
5959 BI opval = LTSI (tmp_newval, 0);
5960 CPU (h_nbit) = opval;
5961 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5962 }
5963 {
5964 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5965 CPU (h_zbit) = opval;
5966 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5967 }
5968 {
5969 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
5970 CPU (h_vbit) = opval;
5971 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5972 }
5973 {
5974 {
5975 BI opval = 0;
5976 CPU (h_xbit) = opval;
5977 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5978 }
5979 {
5980 BI opval = 0;
5981 SET_H_INSN_PREFIXED_P (opval);
5982 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5983 }
5984 }
5985 }
5986 }
5987
5988 #undef FLD
5989 }
5990 NEXT (vpc);
5991
5992 CASE (sem, INSN_ADDCPC) : /* add.d ${sconst32},PC */
5993 {
5994 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5995 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5996 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
5997 int UNUSED written = 0;
5998 IADDR UNUSED pc = abuf->addr;
5999 SEM_BRANCH_INIT
6000 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
6001
6002 {
6003 SI tmp_newpc;
6004 SI tmp_oldpc;
6005 SI tmp_offs;
6006 tmp_offs = FLD (f_indir_pc__dword);
6007 tmp_oldpc = ADDSI (pc, 6);
6008 tmp_newpc = ADDSI (tmp_oldpc, tmp_offs);
6009 {
6010 USI opval = tmp_newpc;
6011 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6012 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6013 }
6014 {
6015 {
6016 BI opval = ORIF (ANDIF (LTSI (tmp_offs, 0), LTSI (tmp_oldpc, 0)), ORIF (ANDIF (LTSI (tmp_oldpc, 0), GESI (tmp_newpc, 0)), ANDIF (LTSI (tmp_offs, 0), GESI (tmp_newpc, 0))));
6017 CPU (h_cbit) = opval;
6018 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6019 }
6020 {
6021 BI opval = LTSI (tmp_newpc, 0);
6022 CPU (h_nbit) = opval;
6023 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6024 }
6025 {
6026 BI opval = ANDIF (EQSI (tmp_newpc, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6027 CPU (h_zbit) = opval;
6028 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6029 }
6030 {
6031 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_offs, 0), LTSI (tmp_oldpc, 0)), GESI (tmp_newpc, 0)), ANDIF (ANDIF (GESI (tmp_offs, 0), GESI (tmp_oldpc, 0)), LTSI (tmp_newpc, 0)));
6032 CPU (h_vbit) = opval;
6033 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6034 }
6035 {
6036 {
6037 BI opval = 0;
6038 CPU (h_xbit) = opval;
6039 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6040 }
6041 {
6042 BI opval = 0;
6043 SET_H_INSN_PREFIXED_P (opval);
6044 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6045 }
6046 }
6047 }
6048 }
6049
6050 SEM_BRANCH_FINI (vpc);
6051 #undef FLD
6052 }
6053 NEXT (vpc);
6054
6055 CASE (sem, INSN_ADDS_B_R) : /* adds.b $Rs,$Rd */
6056 {
6057 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6058 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6059 #define FLD(f) abuf->fields.sfmt_add_b_r.f
6060 int UNUSED written = 0;
6061 IADDR UNUSED pc = abuf->addr;
6062 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6063
6064 {
6065 SI tmp_tmpopd;
6066 SI tmp_tmpops;
6067 BI tmp_carry;
6068 SI tmp_newval;
6069 tmp_tmpops = EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
6070 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6071 tmp_carry = CPU (h_cbit);
6072 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6073 {
6074 SI opval = tmp_newval;
6075 SET_H_GR (FLD (f_operand2), opval);
6076 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6077 }
6078 {
6079 {
6080 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6081 CPU (h_cbit) = opval;
6082 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6083 }
6084 {
6085 BI opval = LTSI (tmp_newval, 0);
6086 CPU (h_nbit) = opval;
6087 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6088 }
6089 {
6090 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6091 CPU (h_zbit) = opval;
6092 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6093 }
6094 {
6095 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6096 CPU (h_vbit) = opval;
6097 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6098 }
6099 {
6100 {
6101 BI opval = 0;
6102 CPU (h_xbit) = opval;
6103 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6104 }
6105 {
6106 BI opval = 0;
6107 SET_H_INSN_PREFIXED_P (opval);
6108 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6109 }
6110 }
6111 }
6112 }
6113
6114 #undef FLD
6115 }
6116 NEXT (vpc);
6117
6118 CASE (sem, INSN_ADDS_W_R) : /* adds.w $Rs,$Rd */
6119 {
6120 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6121 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6122 #define FLD(f) abuf->fields.sfmt_add_b_r.f
6123 int UNUSED written = 0;
6124 IADDR UNUSED pc = abuf->addr;
6125 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6126
6127 {
6128 SI tmp_tmpopd;
6129 SI tmp_tmpops;
6130 BI tmp_carry;
6131 SI tmp_newval;
6132 tmp_tmpops = EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
6133 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6134 tmp_carry = CPU (h_cbit);
6135 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6136 {
6137 SI opval = tmp_newval;
6138 SET_H_GR (FLD (f_operand2), opval);
6139 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6140 }
6141 {
6142 {
6143 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6144 CPU (h_cbit) = opval;
6145 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6146 }
6147 {
6148 BI opval = LTSI (tmp_newval, 0);
6149 CPU (h_nbit) = opval;
6150 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6151 }
6152 {
6153 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6154 CPU (h_zbit) = opval;
6155 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6156 }
6157 {
6158 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6159 CPU (h_vbit) = opval;
6160 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6161 }
6162 {
6163 {
6164 BI opval = 0;
6165 CPU (h_xbit) = opval;
6166 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6167 }
6168 {
6169 BI opval = 0;
6170 SET_H_INSN_PREFIXED_P (opval);
6171 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6172 }
6173 }
6174 }
6175 }
6176
6177 #undef FLD
6178 }
6179 NEXT (vpc);
6180
6181 CASE (sem, INSN_ADDS_M_B_M) : /* adds-m.b [${Rs}${inc}],$Rd */
6182 {
6183 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6185 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
6186 int UNUSED written = 0;
6187 IADDR UNUSED pc = abuf->addr;
6188 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6189
6190 {
6191 SI tmp_tmpopd;
6192 SI tmp_tmpops;
6193 BI tmp_carry;
6194 SI tmp_newval;
6195 tmp_tmpops = EXTQISI (({ SI tmp_addr;
6196 QI tmp_tmp_mem;
6197 BI tmp_postinc;
6198 tmp_postinc = FLD (f_memmode);
6199 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
6200 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
6201 ; if (NEBI (tmp_postinc, 0)) {
6202 {
6203 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
6204 tmp_addr = ADDSI (tmp_addr, 1);
6205 }
6206 {
6207 SI opval = tmp_addr;
6208 SET_H_GR (FLD (f_operand1), opval);
6209 written |= (1 << 11);
6210 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6211 }
6212 }
6213 }
6214 ; tmp_tmp_mem; }));
6215 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6216 tmp_carry = CPU (h_cbit);
6217 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6218 {
6219 SI opval = tmp_newval;
6220 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
6221 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6222 }
6223 {
6224 {
6225 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6226 CPU (h_cbit) = opval;
6227 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6228 }
6229 {
6230 BI opval = LTSI (tmp_newval, 0);
6231 CPU (h_nbit) = opval;
6232 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6233 }
6234 {
6235 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6236 CPU (h_zbit) = opval;
6237 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6238 }
6239 {
6240 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6241 CPU (h_vbit) = opval;
6242 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6243 }
6244 {
6245 {
6246 BI opval = 0;
6247 CPU (h_xbit) = opval;
6248 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6249 }
6250 {
6251 BI opval = 0;
6252 SET_H_INSN_PREFIXED_P (opval);
6253 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6254 }
6255 }
6256 }
6257 }
6258
6259 abuf->written = written;
6260 #undef FLD
6261 }
6262 NEXT (vpc);
6263
6264 CASE (sem, INSN_ADDS_M_W_M) : /* adds-m.w [${Rs}${inc}],$Rd */
6265 {
6266 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6268 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
6269 int UNUSED written = 0;
6270 IADDR UNUSED pc = abuf->addr;
6271 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6272
6273 {
6274 SI tmp_tmpopd;
6275 SI tmp_tmpops;
6276 BI tmp_carry;
6277 SI tmp_newval;
6278 tmp_tmpops = EXTHISI (({ SI tmp_addr;
6279 HI tmp_tmp_mem;
6280 BI tmp_postinc;
6281 tmp_postinc = FLD (f_memmode);
6282 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
6283 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
6284 ; if (NEBI (tmp_postinc, 0)) {
6285 {
6286 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
6287 tmp_addr = ADDSI (tmp_addr, 2);
6288 }
6289 {
6290 SI opval = tmp_addr;
6291 SET_H_GR (FLD (f_operand1), opval);
6292 written |= (1 << 11);
6293 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6294 }
6295 }
6296 }
6297 ; tmp_tmp_mem; }));
6298 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6299 tmp_carry = CPU (h_cbit);
6300 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6301 {
6302 SI opval = tmp_newval;
6303 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
6304 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6305 }
6306 {
6307 {
6308 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6309 CPU (h_cbit) = opval;
6310 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6311 }
6312 {
6313 BI opval = LTSI (tmp_newval, 0);
6314 CPU (h_nbit) = opval;
6315 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6316 }
6317 {
6318 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6319 CPU (h_zbit) = opval;
6320 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6321 }
6322 {
6323 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6324 CPU (h_vbit) = opval;
6325 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6326 }
6327 {
6328 {
6329 BI opval = 0;
6330 CPU (h_xbit) = opval;
6331 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6332 }
6333 {
6334 BI opval = 0;
6335 SET_H_INSN_PREFIXED_P (opval);
6336 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6337 }
6338 }
6339 }
6340 }
6341
6342 abuf->written = written;
6343 #undef FLD
6344 }
6345 NEXT (vpc);
6346
6347 CASE (sem, INSN_ADDSCBR) : /* [${Rs}${inc}],$Rd */
6348 {
6349 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6350 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6351 #define FLD(f) abuf->fields.sfmt_addcbr.f
6352 int UNUSED written = 0;
6353 IADDR UNUSED pc = abuf->addr;
6354 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6355
6356 {
6357 SI tmp_tmpopd;
6358 SI tmp_tmpops;
6359 BI tmp_carry;
6360 SI tmp_newval;
6361 tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
6362 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6363 tmp_carry = CPU (h_cbit);
6364 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6365 {
6366 SI opval = tmp_newval;
6367 SET_H_GR (FLD (f_operand2), opval);
6368 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6369 }
6370 {
6371 {
6372 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6373 CPU (h_cbit) = opval;
6374 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6375 }
6376 {
6377 BI opval = LTSI (tmp_newval, 0);
6378 CPU (h_nbit) = opval;
6379 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6380 }
6381 {
6382 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6383 CPU (h_zbit) = opval;
6384 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6385 }
6386 {
6387 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6388 CPU (h_vbit) = opval;
6389 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6390 }
6391 {
6392 {
6393 BI opval = 0;
6394 CPU (h_xbit) = opval;
6395 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6396 }
6397 {
6398 BI opval = 0;
6399 SET_H_INSN_PREFIXED_P (opval);
6400 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6401 }
6402 }
6403 }
6404 }
6405
6406 #undef FLD
6407 }
6408 NEXT (vpc);
6409
6410 CASE (sem, INSN_ADDSCWR) : /* [${Rs}${inc}],$Rd */
6411 {
6412 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6413 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6414 #define FLD(f) abuf->fields.sfmt_addcwr.f
6415 int UNUSED written = 0;
6416 IADDR UNUSED pc = abuf->addr;
6417 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6418
6419 {
6420 SI tmp_tmpopd;
6421 SI tmp_tmpops;
6422 BI tmp_carry;
6423 SI tmp_newval;
6424 tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
6425 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6426 tmp_carry = CPU (h_cbit);
6427 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6428 {
6429 SI opval = tmp_newval;
6430 SET_H_GR (FLD (f_operand2), opval);
6431 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6432 }
6433 {
6434 {
6435 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6436 CPU (h_cbit) = opval;
6437 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6438 }
6439 {
6440 BI opval = LTSI (tmp_newval, 0);
6441 CPU (h_nbit) = opval;
6442 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6443 }
6444 {
6445 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6446 CPU (h_zbit) = opval;
6447 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6448 }
6449 {
6450 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6451 CPU (h_vbit) = opval;
6452 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6453 }
6454 {
6455 {
6456 BI opval = 0;
6457 CPU (h_xbit) = opval;
6458 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6459 }
6460 {
6461 BI opval = 0;
6462 SET_H_INSN_PREFIXED_P (opval);
6463 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6464 }
6465 }
6466 }
6467 }
6468
6469 #undef FLD
6470 }
6471 NEXT (vpc);
6472
6473 CASE (sem, INSN_ADDSPCPC) : /* adds.w [PC],PC */
6474 {
6475 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6476 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6477 #define FLD(f) abuf->fields.sfmt_empty.f
6478 int UNUSED written = 0;
6479 IADDR UNUSED pc = abuf->addr;
6480 SEM_BRANCH_INIT
6481 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6482
6483 {
6484 SI tmp_newpc;
6485 SI tmp_oldpc;
6486 HI tmp_offs;
6487 if (NOTBI (GET_H_INSN_PREFIXED_P ())) {
6488 cgen_rtx_error (current_cpu, "Unexpected adds.w [PC],PC without prefix");
6489 }
6490 tmp_offs = GETMEMHI (current_cpu, pc, CPU (h_prefixreg_pre_v32));
6491 tmp_oldpc = ADDSI (pc, 2);
6492 tmp_newpc = ADDSI (tmp_oldpc, tmp_offs);
6493 {
6494 USI opval = tmp_newpc;
6495 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6496 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6497 }
6498 {
6499 {
6500 BI opval = ORIF (ANDIF (LTSI (EXTHISI (tmp_offs), 0), LTSI (tmp_oldpc, 0)), ORIF (ANDIF (LTSI (tmp_oldpc, 0), GESI (tmp_newpc, 0)), ANDIF (LTSI (EXTHISI (tmp_offs), 0), GESI (tmp_newpc, 0))));
6501 CPU (h_cbit) = opval;
6502 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6503 }
6504 {
6505 BI opval = LTSI (tmp_newpc, 0);
6506 CPU (h_nbit) = opval;
6507 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6508 }
6509 {
6510 BI opval = ANDIF (EQSI (tmp_newpc, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6511 CPU (h_zbit) = opval;
6512 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6513 }
6514 {
6515 BI opval = ORIF (ANDIF (ANDIF (LTSI (EXTHISI (tmp_offs), 0), LTSI (tmp_oldpc, 0)), GESI (tmp_newpc, 0)), ANDIF (ANDIF (GESI (EXTHISI (tmp_offs), 0), GESI (tmp_oldpc, 0)), LTSI (tmp_newpc, 0)));
6516 CPU (h_vbit) = opval;
6517 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6518 }
6519 {
6520 {
6521 BI opval = 0;
6522 CPU (h_xbit) = opval;
6523 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6524 }
6525 {
6526 BI opval = 0;
6527 SET_H_INSN_PREFIXED_P (opval);
6528 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6529 }
6530 }
6531 }
6532 }
6533
6534 SEM_BRANCH_FINI (vpc);
6535 #undef FLD
6536 }
6537 NEXT (vpc);
6538
6539 CASE (sem, INSN_ADDU_B_R) : /* addu.b $Rs,$Rd */
6540 {
6541 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6542 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6543 #define FLD(f) abuf->fields.sfmt_add_b_r.f
6544 int UNUSED written = 0;
6545 IADDR UNUSED pc = abuf->addr;
6546 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6547
6548 {
6549 SI tmp_tmpopd;
6550 SI tmp_tmpops;
6551 BI tmp_carry;
6552 SI tmp_newval;
6553 tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
6554 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6555 tmp_carry = CPU (h_cbit);
6556 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6557 {
6558 SI opval = tmp_newval;
6559 SET_H_GR (FLD (f_operand2), opval);
6560 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6561 }
6562 {
6563 {
6564 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6565 CPU (h_cbit) = opval;
6566 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6567 }
6568 {
6569 BI opval = LTSI (tmp_newval, 0);
6570 CPU (h_nbit) = opval;
6571 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6572 }
6573 {
6574 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6575 CPU (h_zbit) = opval;
6576 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6577 }
6578 {
6579 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6580 CPU (h_vbit) = opval;
6581 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6582 }
6583 {
6584 {
6585 BI opval = 0;
6586 CPU (h_xbit) = opval;
6587 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6588 }
6589 {
6590 BI opval = 0;
6591 SET_H_INSN_PREFIXED_P (opval);
6592 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6593 }
6594 }
6595 }
6596 }
6597
6598 #undef FLD
6599 }
6600 NEXT (vpc);
6601
6602 CASE (sem, INSN_ADDU_W_R) : /* addu.w $Rs,$Rd */
6603 {
6604 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6605 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6606 #define FLD(f) abuf->fields.sfmt_add_b_r.f
6607 int UNUSED written = 0;
6608 IADDR UNUSED pc = abuf->addr;
6609 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6610
6611 {
6612 SI tmp_tmpopd;
6613 SI tmp_tmpops;
6614 BI tmp_carry;
6615 SI tmp_newval;
6616 tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
6617 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6618 tmp_carry = CPU (h_cbit);
6619 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6620 {
6621 SI opval = tmp_newval;
6622 SET_H_GR (FLD (f_operand2), opval);
6623 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6624 }
6625 {
6626 {
6627 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6628 CPU (h_cbit) = opval;
6629 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6630 }
6631 {
6632 BI opval = LTSI (tmp_newval, 0);
6633 CPU (h_nbit) = opval;
6634 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6635 }
6636 {
6637 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6638 CPU (h_zbit) = opval;
6639 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6640 }
6641 {
6642 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6643 CPU (h_vbit) = opval;
6644 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6645 }
6646 {
6647 {
6648 BI opval = 0;
6649 CPU (h_xbit) = opval;
6650 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6651 }
6652 {
6653 BI opval = 0;
6654 SET_H_INSN_PREFIXED_P (opval);
6655 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6656 }
6657 }
6658 }
6659 }
6660
6661 #undef FLD
6662 }
6663 NEXT (vpc);
6664
6665 CASE (sem, INSN_ADDU_M_B_M) : /* addu-m.b [${Rs}${inc}],$Rd */
6666 {
6667 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6668 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6669 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
6670 int UNUSED written = 0;
6671 IADDR UNUSED pc = abuf->addr;
6672 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6673
6674 {
6675 SI tmp_tmpopd;
6676 SI tmp_tmpops;
6677 BI tmp_carry;
6678 SI tmp_newval;
6679 tmp_tmpops = ZEXTQISI (({ SI tmp_addr;
6680 QI tmp_tmp_mem;
6681 BI tmp_postinc;
6682 tmp_postinc = FLD (f_memmode);
6683 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
6684 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
6685 ; if (NEBI (tmp_postinc, 0)) {
6686 {
6687 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
6688 tmp_addr = ADDSI (tmp_addr, 1);
6689 }
6690 {
6691 SI opval = tmp_addr;
6692 SET_H_GR (FLD (f_operand1), opval);
6693 written |= (1 << 11);
6694 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6695 }
6696 }
6697 }
6698 ; tmp_tmp_mem; }));
6699 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6700 tmp_carry = CPU (h_cbit);
6701 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6702 {
6703 SI opval = tmp_newval;
6704 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
6705 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6706 }
6707 {
6708 {
6709 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6710 CPU (h_cbit) = opval;
6711 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6712 }
6713 {
6714 BI opval = LTSI (tmp_newval, 0);
6715 CPU (h_nbit) = opval;
6716 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6717 }
6718 {
6719 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6720 CPU (h_zbit) = opval;
6721 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6722 }
6723 {
6724 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6725 CPU (h_vbit) = opval;
6726 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6727 }
6728 {
6729 {
6730 BI opval = 0;
6731 CPU (h_xbit) = opval;
6732 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6733 }
6734 {
6735 BI opval = 0;
6736 SET_H_INSN_PREFIXED_P (opval);
6737 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6738 }
6739 }
6740 }
6741 }
6742
6743 abuf->written = written;
6744 #undef FLD
6745 }
6746 NEXT (vpc);
6747
6748 CASE (sem, INSN_ADDU_M_W_M) : /* addu-m.w [${Rs}${inc}],$Rd */
6749 {
6750 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6751 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6752 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
6753 int UNUSED written = 0;
6754 IADDR UNUSED pc = abuf->addr;
6755 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6756
6757 {
6758 SI tmp_tmpopd;
6759 SI tmp_tmpops;
6760 BI tmp_carry;
6761 SI tmp_newval;
6762 tmp_tmpops = ZEXTHISI (({ SI tmp_addr;
6763 HI tmp_tmp_mem;
6764 BI tmp_postinc;
6765 tmp_postinc = FLD (f_memmode);
6766 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
6767 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
6768 ; if (NEBI (tmp_postinc, 0)) {
6769 {
6770 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
6771 tmp_addr = ADDSI (tmp_addr, 2);
6772 }
6773 {
6774 SI opval = tmp_addr;
6775 SET_H_GR (FLD (f_operand1), opval);
6776 written |= (1 << 11);
6777 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6778 }
6779 }
6780 }
6781 ; tmp_tmp_mem; }));
6782 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6783 tmp_carry = CPU (h_cbit);
6784 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6785 {
6786 SI opval = tmp_newval;
6787 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
6788 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6789 }
6790 {
6791 {
6792 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6793 CPU (h_cbit) = opval;
6794 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6795 }
6796 {
6797 BI opval = LTSI (tmp_newval, 0);
6798 CPU (h_nbit) = opval;
6799 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6800 }
6801 {
6802 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6803 CPU (h_zbit) = opval;
6804 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6805 }
6806 {
6807 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6808 CPU (h_vbit) = opval;
6809 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6810 }
6811 {
6812 {
6813 BI opval = 0;
6814 CPU (h_xbit) = opval;
6815 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6816 }
6817 {
6818 BI opval = 0;
6819 SET_H_INSN_PREFIXED_P (opval);
6820 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6821 }
6822 }
6823 }
6824 }
6825
6826 abuf->written = written;
6827 #undef FLD
6828 }
6829 NEXT (vpc);
6830
6831 CASE (sem, INSN_ADDUCBR) : /* [${Rs}${inc}],$Rd */
6832 {
6833 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6834 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6835 #define FLD(f) abuf->fields.sfmt_addcbr.f
6836 int UNUSED written = 0;
6837 IADDR UNUSED pc = abuf->addr;
6838 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6839
6840 {
6841 SI tmp_tmpopd;
6842 SI tmp_tmpops;
6843 BI tmp_carry;
6844 SI tmp_newval;
6845 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
6846 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6847 tmp_carry = CPU (h_cbit);
6848 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6849 {
6850 SI opval = tmp_newval;
6851 SET_H_GR (FLD (f_operand2), opval);
6852 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6853 }
6854 {
6855 {
6856 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6857 CPU (h_cbit) = opval;
6858 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6859 }
6860 {
6861 BI opval = LTSI (tmp_newval, 0);
6862 CPU (h_nbit) = opval;
6863 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6864 }
6865 {
6866 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6867 CPU (h_zbit) = opval;
6868 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6869 }
6870 {
6871 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6872 CPU (h_vbit) = opval;
6873 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6874 }
6875 {
6876 {
6877 BI opval = 0;
6878 CPU (h_xbit) = opval;
6879 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6880 }
6881 {
6882 BI opval = 0;
6883 SET_H_INSN_PREFIXED_P (opval);
6884 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6885 }
6886 }
6887 }
6888 }
6889
6890 #undef FLD
6891 }
6892 NEXT (vpc);
6893
6894 CASE (sem, INSN_ADDUCWR) : /* [${Rs}${inc}],$Rd */
6895 {
6896 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6897 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6898 #define FLD(f) abuf->fields.sfmt_addcwr.f
6899 int UNUSED written = 0;
6900 IADDR UNUSED pc = abuf->addr;
6901 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6902
6903 {
6904 SI tmp_tmpopd;
6905 SI tmp_tmpops;
6906 BI tmp_carry;
6907 SI tmp_newval;
6908 tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
6909 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6910 tmp_carry = CPU (h_cbit);
6911 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6912 {
6913 SI opval = tmp_newval;
6914 SET_H_GR (FLD (f_operand2), opval);
6915 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6916 }
6917 {
6918 {
6919 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6920 CPU (h_cbit) = opval;
6921 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6922 }
6923 {
6924 BI opval = LTSI (tmp_newval, 0);
6925 CPU (h_nbit) = opval;
6926 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6927 }
6928 {
6929 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6930 CPU (h_zbit) = opval;
6931 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6932 }
6933 {
6934 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6935 CPU (h_vbit) = opval;
6936 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6937 }
6938 {
6939 {
6940 BI opval = 0;
6941 CPU (h_xbit) = opval;
6942 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6943 }
6944 {
6945 BI opval = 0;
6946 SET_H_INSN_PREFIXED_P (opval);
6947 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6948 }
6949 }
6950 }
6951 }
6952
6953 #undef FLD
6954 }
6955 NEXT (vpc);
6956
6957 CASE (sem, INSN_SUB_B_R) : /* sub.b $Rs,$Rd */
6958 {
6959 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6960 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6961 #define FLD(f) abuf->fields.sfmt_add_b_r.f
6962 int UNUSED written = 0;
6963 IADDR UNUSED pc = abuf->addr;
6964 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6965
6966 {
6967 QI tmp_tmpopd;
6968 QI tmp_tmpops;
6969 BI tmp_carry;
6970 QI tmp_newval;
6971 tmp_tmpops = GET_H_GR (FLD (f_operand1));
6972 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6973 tmp_carry = CPU (h_cbit);
6974 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6975 {
6976 SI tmp_oldregval;
6977 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
6978 {
6979 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
6980 SET_H_GR (FLD (f_operand2), opval);
6981 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6982 }
6983 }
6984 {
6985 {
6986 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
6987 CPU (h_cbit) = opval;
6988 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6989 }
6990 {
6991 BI opval = LTQI (tmp_newval, 0);
6992 CPU (h_nbit) = opval;
6993 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6994 }
6995 {
6996 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6997 CPU (h_zbit) = opval;
6998 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6999 }
7000 {
7001 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
7002 CPU (h_vbit) = opval;
7003 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7004 }
7005 {
7006 {
7007 BI opval = 0;
7008 CPU (h_xbit) = opval;
7009 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7010 }
7011 {
7012 BI opval = 0;
7013 SET_H_INSN_PREFIXED_P (opval);
7014 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7015 }
7016 }
7017 }
7018 }
7019
7020 #undef FLD
7021 }
7022 NEXT (vpc);
7023
7024 CASE (sem, INSN_SUB_W_R) : /* sub.w $Rs,$Rd */
7025 {
7026 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7027 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7028 #define FLD(f) abuf->fields.sfmt_add_b_r.f
7029 int UNUSED written = 0;
7030 IADDR UNUSED pc = abuf->addr;
7031 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7032
7033 {
7034 HI tmp_tmpopd;
7035 HI tmp_tmpops;
7036 BI tmp_carry;
7037 HI tmp_newval;
7038 tmp_tmpops = GET_H_GR (FLD (f_operand1));
7039 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7040 tmp_carry = CPU (h_cbit);
7041 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7042 {
7043 SI tmp_oldregval;
7044 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
7045 {
7046 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
7047 SET_H_GR (FLD (f_operand2), opval);
7048 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7049 }
7050 }
7051 {
7052 {
7053 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
7054 CPU (h_cbit) = opval;
7055 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7056 }
7057 {
7058 BI opval = LTHI (tmp_newval, 0);
7059 CPU (h_nbit) = opval;
7060 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7061 }
7062 {
7063 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7064 CPU (h_zbit) = opval;
7065 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7066 }
7067 {
7068 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
7069 CPU (h_vbit) = opval;
7070 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7071 }
7072 {
7073 {
7074 BI opval = 0;
7075 CPU (h_xbit) = opval;
7076 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7077 }
7078 {
7079 BI opval = 0;
7080 SET_H_INSN_PREFIXED_P (opval);
7081 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7082 }
7083 }
7084 }
7085 }
7086
7087 #undef FLD
7088 }
7089 NEXT (vpc);
7090
7091 CASE (sem, INSN_SUB_D_R) : /* sub.d $Rs,$Rd */
7092 {
7093 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7094 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7095 #define FLD(f) abuf->fields.sfmt_add_b_r.f
7096 int UNUSED written = 0;
7097 IADDR UNUSED pc = abuf->addr;
7098 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7099
7100 {
7101 SI tmp_tmpopd;
7102 SI tmp_tmpops;
7103 BI tmp_carry;
7104 SI tmp_newval;
7105 tmp_tmpops = GET_H_GR (FLD (f_operand1));
7106 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7107 tmp_carry = CPU (h_cbit);
7108 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7109 {
7110 SI opval = tmp_newval;
7111 SET_H_GR (FLD (f_operand2), opval);
7112 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7113 }
7114 {
7115 {
7116 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7117 CPU (h_cbit) = opval;
7118 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7119 }
7120 {
7121 BI opval = LTSI (tmp_newval, 0);
7122 CPU (h_nbit) = opval;
7123 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7124 }
7125 {
7126 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7127 CPU (h_zbit) = opval;
7128 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7129 }
7130 {
7131 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7132 CPU (h_vbit) = opval;
7133 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7134 }
7135 {
7136 {
7137 BI opval = 0;
7138 CPU (h_xbit) = opval;
7139 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7140 }
7141 {
7142 BI opval = 0;
7143 SET_H_INSN_PREFIXED_P (opval);
7144 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7145 }
7146 }
7147 }
7148 }
7149
7150 #undef FLD
7151 }
7152 NEXT (vpc);
7153
7154 CASE (sem, INSN_SUB_M_B_M) : /* sub-m.b [${Rs}${inc}],${Rd} */
7155 {
7156 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7157 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7158 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
7159 int UNUSED written = 0;
7160 IADDR UNUSED pc = abuf->addr;
7161 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7162
7163 {
7164 QI tmp_tmpopd;
7165 QI tmp_tmpops;
7166 BI tmp_carry;
7167 QI tmp_newval;
7168 tmp_tmpops = ({ SI tmp_addr;
7169 QI tmp_tmp_mem;
7170 BI tmp_postinc;
7171 tmp_postinc = FLD (f_memmode);
7172 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
7173 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
7174 ; if (NEBI (tmp_postinc, 0)) {
7175 {
7176 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
7177 tmp_addr = ADDSI (tmp_addr, 1);
7178 }
7179 {
7180 SI opval = tmp_addr;
7181 SET_H_GR (FLD (f_operand1), opval);
7182 written |= (1 << 12);
7183 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7184 }
7185 }
7186 }
7187 ; tmp_tmp_mem; });
7188 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7189 tmp_carry = CPU (h_cbit);
7190 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7191 {
7192 SI tmp_oldregval;
7193 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
7194 {
7195 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
7196 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
7197 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7198 }
7199 }
7200 {
7201 {
7202 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
7203 CPU (h_cbit) = opval;
7204 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7205 }
7206 {
7207 BI opval = LTQI (tmp_newval, 0);
7208 CPU (h_nbit) = opval;
7209 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7210 }
7211 {
7212 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7213 CPU (h_zbit) = opval;
7214 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7215 }
7216 {
7217 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
7218 CPU (h_vbit) = opval;
7219 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7220 }
7221 {
7222 {
7223 BI opval = 0;
7224 CPU (h_xbit) = opval;
7225 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7226 }
7227 {
7228 BI opval = 0;
7229 SET_H_INSN_PREFIXED_P (opval);
7230 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7231 }
7232 }
7233 }
7234 }
7235
7236 abuf->written = written;
7237 #undef FLD
7238 }
7239 NEXT (vpc);
7240
7241 CASE (sem, INSN_SUB_M_W_M) : /* sub-m.w [${Rs}${inc}],${Rd} */
7242 {
7243 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7244 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7245 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
7246 int UNUSED written = 0;
7247 IADDR UNUSED pc = abuf->addr;
7248 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7249
7250 {
7251 HI tmp_tmpopd;
7252 HI tmp_tmpops;
7253 BI tmp_carry;
7254 HI tmp_newval;
7255 tmp_tmpops = ({ SI tmp_addr;
7256 HI tmp_tmp_mem;
7257 BI tmp_postinc;
7258 tmp_postinc = FLD (f_memmode);
7259 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
7260 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
7261 ; if (NEBI (tmp_postinc, 0)) {
7262 {
7263 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
7264 tmp_addr = ADDSI (tmp_addr, 2);
7265 }
7266 {
7267 SI opval = tmp_addr;
7268 SET_H_GR (FLD (f_operand1), opval);
7269 written |= (1 << 12);
7270 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7271 }
7272 }
7273 }
7274 ; tmp_tmp_mem; });
7275 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7276 tmp_carry = CPU (h_cbit);
7277 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7278 {
7279 SI tmp_oldregval;
7280 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
7281 {
7282 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
7283 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
7284 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7285 }
7286 }
7287 {
7288 {
7289 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
7290 CPU (h_cbit) = opval;
7291 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7292 }
7293 {
7294 BI opval = LTHI (tmp_newval, 0);
7295 CPU (h_nbit) = opval;
7296 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7297 }
7298 {
7299 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7300 CPU (h_zbit) = opval;
7301 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7302 }
7303 {
7304 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
7305 CPU (h_vbit) = opval;
7306 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7307 }
7308 {
7309 {
7310 BI opval = 0;
7311 CPU (h_xbit) = opval;
7312 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7313 }
7314 {
7315 BI opval = 0;
7316 SET_H_INSN_PREFIXED_P (opval);
7317 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7318 }
7319 }
7320 }
7321 }
7322
7323 abuf->written = written;
7324 #undef FLD
7325 }
7326 NEXT (vpc);
7327
7328 CASE (sem, INSN_SUB_M_D_M) : /* sub-m.d [${Rs}${inc}],${Rd} */
7329 {
7330 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7331 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7332 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
7333 int UNUSED written = 0;
7334 IADDR UNUSED pc = abuf->addr;
7335 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7336
7337 {
7338 SI tmp_tmpopd;
7339 SI tmp_tmpops;
7340 BI tmp_carry;
7341 SI tmp_newval;
7342 tmp_tmpops = ({ SI tmp_addr;
7343 SI tmp_tmp_mem;
7344 BI tmp_postinc;
7345 tmp_postinc = FLD (f_memmode);
7346 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
7347 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
7348 ; if (NEBI (tmp_postinc, 0)) {
7349 {
7350 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
7351 tmp_addr = ADDSI (tmp_addr, 4);
7352 }
7353 {
7354 SI opval = tmp_addr;
7355 SET_H_GR (FLD (f_operand1), opval);
7356 written |= (1 << 11);
7357 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7358 }
7359 }
7360 }
7361 ; tmp_tmp_mem; });
7362 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7363 tmp_carry = CPU (h_cbit);
7364 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7365 {
7366 SI opval = tmp_newval;
7367 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
7368 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7369 }
7370 {
7371 {
7372 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7373 CPU (h_cbit) = opval;
7374 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7375 }
7376 {
7377 BI opval = LTSI (tmp_newval, 0);
7378 CPU (h_nbit) = opval;
7379 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7380 }
7381 {
7382 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7383 CPU (h_zbit) = opval;
7384 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7385 }
7386 {
7387 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7388 CPU (h_vbit) = opval;
7389 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7390 }
7391 {
7392 {
7393 BI opval = 0;
7394 CPU (h_xbit) = opval;
7395 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7396 }
7397 {
7398 BI opval = 0;
7399 SET_H_INSN_PREFIXED_P (opval);
7400 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7401 }
7402 }
7403 }
7404 }
7405
7406 abuf->written = written;
7407 #undef FLD
7408 }
7409 NEXT (vpc);
7410
7411 CASE (sem, INSN_SUBCBR) : /* sub.b ${sconst8}],${Rd} */
7412 {
7413 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7414 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7415 #define FLD(f) abuf->fields.sfmt_addcbr.f
7416 int UNUSED written = 0;
7417 IADDR UNUSED pc = abuf->addr;
7418 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7419
7420 {
7421 QI tmp_tmpopd;
7422 QI tmp_tmpops;
7423 BI tmp_carry;
7424 QI tmp_newval;
7425 tmp_tmpops = FLD (f_indir_pc__byte);
7426 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7427 tmp_carry = CPU (h_cbit);
7428 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7429 {
7430 SI tmp_oldregval;
7431 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
7432 {
7433 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
7434 SET_H_GR (FLD (f_operand2), opval);
7435 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7436 }
7437 }
7438 {
7439 {
7440 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
7441 CPU (h_cbit) = opval;
7442 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7443 }
7444 {
7445 BI opval = LTQI (tmp_newval, 0);
7446 CPU (h_nbit) = opval;
7447 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7448 }
7449 {
7450 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7451 CPU (h_zbit) = opval;
7452 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7453 }
7454 {
7455 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
7456 CPU (h_vbit) = opval;
7457 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7458 }
7459 {
7460 {
7461 BI opval = 0;
7462 CPU (h_xbit) = opval;
7463 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7464 }
7465 {
7466 BI opval = 0;
7467 SET_H_INSN_PREFIXED_P (opval);
7468 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7469 }
7470 }
7471 }
7472 }
7473
7474 #undef FLD
7475 }
7476 NEXT (vpc);
7477
7478 CASE (sem, INSN_SUBCWR) : /* sub.w ${sconst16}],${Rd} */
7479 {
7480 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7481 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7482 #define FLD(f) abuf->fields.sfmt_addcwr.f
7483 int UNUSED written = 0;
7484 IADDR UNUSED pc = abuf->addr;
7485 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7486
7487 {
7488 HI tmp_tmpopd;
7489 HI tmp_tmpops;
7490 BI tmp_carry;
7491 HI tmp_newval;
7492 tmp_tmpops = FLD (f_indir_pc__word);
7493 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7494 tmp_carry = CPU (h_cbit);
7495 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7496 {
7497 SI tmp_oldregval;
7498 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
7499 {
7500 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
7501 SET_H_GR (FLD (f_operand2), opval);
7502 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7503 }
7504 }
7505 {
7506 {
7507 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
7508 CPU (h_cbit) = opval;
7509 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7510 }
7511 {
7512 BI opval = LTHI (tmp_newval, 0);
7513 CPU (h_nbit) = opval;
7514 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7515 }
7516 {
7517 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7518 CPU (h_zbit) = opval;
7519 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7520 }
7521 {
7522 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
7523 CPU (h_vbit) = opval;
7524 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7525 }
7526 {
7527 {
7528 BI opval = 0;
7529 CPU (h_xbit) = opval;
7530 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7531 }
7532 {
7533 BI opval = 0;
7534 SET_H_INSN_PREFIXED_P (opval);
7535 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7536 }
7537 }
7538 }
7539 }
7540
7541 #undef FLD
7542 }
7543 NEXT (vpc);
7544
7545 CASE (sem, INSN_SUBCDR) : /* sub.d ${const32}],${Rd} */
7546 {
7547 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7548 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7549 #define FLD(f) abuf->fields.sfmt_addcdr.f
7550 int UNUSED written = 0;
7551 IADDR UNUSED pc = abuf->addr;
7552 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
7553
7554 {
7555 SI tmp_tmpopd;
7556 SI tmp_tmpops;
7557 BI tmp_carry;
7558 SI tmp_newval;
7559 tmp_tmpops = FLD (f_indir_pc__dword);
7560 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7561 tmp_carry = CPU (h_cbit);
7562 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7563 {
7564 SI opval = tmp_newval;
7565 SET_H_GR (FLD (f_operand2), opval);
7566 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7567 }
7568 {
7569 {
7570 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7571 CPU (h_cbit) = opval;
7572 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7573 }
7574 {
7575 BI opval = LTSI (tmp_newval, 0);
7576 CPU (h_nbit) = opval;
7577 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7578 }
7579 {
7580 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7581 CPU (h_zbit) = opval;
7582 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7583 }
7584 {
7585 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7586 CPU (h_vbit) = opval;
7587 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7588 }
7589 {
7590 {
7591 BI opval = 0;
7592 CPU (h_xbit) = opval;
7593 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7594 }
7595 {
7596 BI opval = 0;
7597 SET_H_INSN_PREFIXED_P (opval);
7598 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7599 }
7600 }
7601 }
7602 }
7603
7604 #undef FLD
7605 }
7606 NEXT (vpc);
7607
7608 CASE (sem, INSN_SUBS_B_R) : /* subs.b $Rs,$Rd */
7609 {
7610 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7611 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7612 #define FLD(f) abuf->fields.sfmt_add_b_r.f
7613 int UNUSED written = 0;
7614 IADDR UNUSED pc = abuf->addr;
7615 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7616
7617 {
7618 SI tmp_tmpopd;
7619 SI tmp_tmpops;
7620 BI tmp_carry;
7621 SI tmp_newval;
7622 tmp_tmpops = EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
7623 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7624 tmp_carry = CPU (h_cbit);
7625 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7626 {
7627 SI opval = tmp_newval;
7628 SET_H_GR (FLD (f_operand2), opval);
7629 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7630 }
7631 {
7632 {
7633 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7634 CPU (h_cbit) = opval;
7635 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7636 }
7637 {
7638 BI opval = LTSI (tmp_newval, 0);
7639 CPU (h_nbit) = opval;
7640 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7641 }
7642 {
7643 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7644 CPU (h_zbit) = opval;
7645 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7646 }
7647 {
7648 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7649 CPU (h_vbit) = opval;
7650 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7651 }
7652 {
7653 {
7654 BI opval = 0;
7655 CPU (h_xbit) = opval;
7656 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7657 }
7658 {
7659 BI opval = 0;
7660 SET_H_INSN_PREFIXED_P (opval);
7661 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7662 }
7663 }
7664 }
7665 }
7666
7667 #undef FLD
7668 }
7669 NEXT (vpc);
7670
7671 CASE (sem, INSN_SUBS_W_R) : /* subs.w $Rs,$Rd */
7672 {
7673 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7674 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7675 #define FLD(f) abuf->fields.sfmt_add_b_r.f
7676 int UNUSED written = 0;
7677 IADDR UNUSED pc = abuf->addr;
7678 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7679
7680 {
7681 SI tmp_tmpopd;
7682 SI tmp_tmpops;
7683 BI tmp_carry;
7684 SI tmp_newval;
7685 tmp_tmpops = EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
7686 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7687 tmp_carry = CPU (h_cbit);
7688 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7689 {
7690 SI opval = tmp_newval;
7691 SET_H_GR (FLD (f_operand2), opval);
7692 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7693 }
7694 {
7695 {
7696 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7697 CPU (h_cbit) = opval;
7698 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7699 }
7700 {
7701 BI opval = LTSI (tmp_newval, 0);
7702 CPU (h_nbit) = opval;
7703 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7704 }
7705 {
7706 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7707 CPU (h_zbit) = opval;
7708 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7709 }
7710 {
7711 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7712 CPU (h_vbit) = opval;
7713 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7714 }
7715 {
7716 {
7717 BI opval = 0;
7718 CPU (h_xbit) = opval;
7719 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7720 }
7721 {
7722 BI opval = 0;
7723 SET_H_INSN_PREFIXED_P (opval);
7724 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7725 }
7726 }
7727 }
7728 }
7729
7730 #undef FLD
7731 }
7732 NEXT (vpc);
7733
7734 CASE (sem, INSN_SUBS_M_B_M) : /* subs-m.b [${Rs}${inc}],$Rd */
7735 {
7736 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7737 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7738 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
7739 int UNUSED written = 0;
7740 IADDR UNUSED pc = abuf->addr;
7741 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7742
7743 {
7744 SI tmp_tmpopd;
7745 SI tmp_tmpops;
7746 BI tmp_carry;
7747 SI tmp_newval;
7748 tmp_tmpops = EXTQISI (({ SI tmp_addr;
7749 QI tmp_tmp_mem;
7750 BI tmp_postinc;
7751 tmp_postinc = FLD (f_memmode);
7752 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
7753 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
7754 ; if (NEBI (tmp_postinc, 0)) {
7755 {
7756 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
7757 tmp_addr = ADDSI (tmp_addr, 1);
7758 }
7759 {
7760 SI opval = tmp_addr;
7761 SET_H_GR (FLD (f_operand1), opval);
7762 written |= (1 << 11);
7763 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7764 }
7765 }
7766 }
7767 ; tmp_tmp_mem; }));
7768 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7769 tmp_carry = CPU (h_cbit);
7770 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7771 {
7772 SI opval = tmp_newval;
7773 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
7774 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7775 }
7776 {
7777 {
7778 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7779 CPU (h_cbit) = opval;
7780 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7781 }
7782 {
7783 BI opval = LTSI (tmp_newval, 0);
7784 CPU (h_nbit) = opval;
7785 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7786 }
7787 {
7788 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7789 CPU (h_zbit) = opval;
7790 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7791 }
7792 {
7793 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7794 CPU (h_vbit) = opval;
7795 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7796 }
7797 {
7798 {
7799 BI opval = 0;
7800 CPU (h_xbit) = opval;
7801 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7802 }
7803 {
7804 BI opval = 0;
7805 SET_H_INSN_PREFIXED_P (opval);
7806 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7807 }
7808 }
7809 }
7810 }
7811
7812 abuf->written = written;
7813 #undef FLD
7814 }
7815 NEXT (vpc);
7816
7817 CASE (sem, INSN_SUBS_M_W_M) : /* subs-m.w [${Rs}${inc}],$Rd */
7818 {
7819 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7820 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7821 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
7822 int UNUSED written = 0;
7823 IADDR UNUSED pc = abuf->addr;
7824 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7825
7826 {
7827 SI tmp_tmpopd;
7828 SI tmp_tmpops;
7829 BI tmp_carry;
7830 SI tmp_newval;
7831 tmp_tmpops = EXTHISI (({ SI tmp_addr;
7832 HI tmp_tmp_mem;
7833 BI tmp_postinc;
7834 tmp_postinc = FLD (f_memmode);
7835 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
7836 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
7837 ; if (NEBI (tmp_postinc, 0)) {
7838 {
7839 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
7840 tmp_addr = ADDSI (tmp_addr, 2);
7841 }
7842 {
7843 SI opval = tmp_addr;
7844 SET_H_GR (FLD (f_operand1), opval);
7845 written |= (1 << 11);
7846 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7847 }
7848 }
7849 }
7850 ; tmp_tmp_mem; }));
7851 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7852 tmp_carry = CPU (h_cbit);
7853 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7854 {
7855 SI opval = tmp_newval;
7856 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
7857 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7858 }
7859 {
7860 {
7861 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7862 CPU (h_cbit) = opval;
7863 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7864 }
7865 {
7866 BI opval = LTSI (tmp_newval, 0);
7867 CPU (h_nbit) = opval;
7868 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7869 }
7870 {
7871 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7872 CPU (h_zbit) = opval;
7873 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7874 }
7875 {
7876 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7877 CPU (h_vbit) = opval;
7878 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7879 }
7880 {
7881 {
7882 BI opval = 0;
7883 CPU (h_xbit) = opval;
7884 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7885 }
7886 {
7887 BI opval = 0;
7888 SET_H_INSN_PREFIXED_P (opval);
7889 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7890 }
7891 }
7892 }
7893 }
7894
7895 abuf->written = written;
7896 #undef FLD
7897 }
7898 NEXT (vpc);
7899
7900 CASE (sem, INSN_SUBSCBR) : /* [${Rs}${inc}],$Rd */
7901 {
7902 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7903 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7904 #define FLD(f) abuf->fields.sfmt_addcbr.f
7905 int UNUSED written = 0;
7906 IADDR UNUSED pc = abuf->addr;
7907 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7908
7909 {
7910 SI tmp_tmpopd;
7911 SI tmp_tmpops;
7912 BI tmp_carry;
7913 SI tmp_newval;
7914 tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
7915 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7916 tmp_carry = CPU (h_cbit);
7917 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7918 {
7919 SI opval = tmp_newval;
7920 SET_H_GR (FLD (f_operand2), opval);
7921 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7922 }
7923 {
7924 {
7925 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7926 CPU (h_cbit) = opval;
7927 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7928 }
7929 {
7930 BI opval = LTSI (tmp_newval, 0);
7931 CPU (h_nbit) = opval;
7932 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7933 }
7934 {
7935 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7936 CPU (h_zbit) = opval;
7937 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7938 }
7939 {
7940 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7941 CPU (h_vbit) = opval;
7942 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7943 }
7944 {
7945 {
7946 BI opval = 0;
7947 CPU (h_xbit) = opval;
7948 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7949 }
7950 {
7951 BI opval = 0;
7952 SET_H_INSN_PREFIXED_P (opval);
7953 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7954 }
7955 }
7956 }
7957 }
7958
7959 #undef FLD
7960 }
7961 NEXT (vpc);
7962
7963 CASE (sem, INSN_SUBSCWR) : /* [${Rs}${inc}],$Rd */
7964 {
7965 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7966 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7967 #define FLD(f) abuf->fields.sfmt_addcwr.f
7968 int UNUSED written = 0;
7969 IADDR UNUSED pc = abuf->addr;
7970 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7971
7972 {
7973 SI tmp_tmpopd;
7974 SI tmp_tmpops;
7975 BI tmp_carry;
7976 SI tmp_newval;
7977 tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
7978 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7979 tmp_carry = CPU (h_cbit);
7980 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7981 {
7982 SI opval = tmp_newval;
7983 SET_H_GR (FLD (f_operand2), opval);
7984 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7985 }
7986 {
7987 {
7988 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7989 CPU (h_cbit) = opval;
7990 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7991 }
7992 {
7993 BI opval = LTSI (tmp_newval, 0);
7994 CPU (h_nbit) = opval;
7995 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7996 }
7997 {
7998 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7999 CPU (h_zbit) = opval;
8000 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8001 }
8002 {
8003 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8004 CPU (h_vbit) = opval;
8005 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8006 }
8007 {
8008 {
8009 BI opval = 0;
8010 CPU (h_xbit) = opval;
8011 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8012 }
8013 {
8014 BI opval = 0;
8015 SET_H_INSN_PREFIXED_P (opval);
8016 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8017 }
8018 }
8019 }
8020 }
8021
8022 #undef FLD
8023 }
8024 NEXT (vpc);
8025
8026 CASE (sem, INSN_SUBU_B_R) : /* subu.b $Rs,$Rd */
8027 {
8028 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8029 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8030 #define FLD(f) abuf->fields.sfmt_add_b_r.f
8031 int UNUSED written = 0;
8032 IADDR UNUSED pc = abuf->addr;
8033 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8034
8035 {
8036 SI tmp_tmpopd;
8037 SI tmp_tmpops;
8038 BI tmp_carry;
8039 SI tmp_newval;
8040 tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
8041 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8042 tmp_carry = CPU (h_cbit);
8043 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8044 {
8045 SI opval = tmp_newval;
8046 SET_H_GR (FLD (f_operand2), opval);
8047 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8048 }
8049 {
8050 {
8051 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8052 CPU (h_cbit) = opval;
8053 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8054 }
8055 {
8056 BI opval = LTSI (tmp_newval, 0);
8057 CPU (h_nbit) = opval;
8058 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8059 }
8060 {
8061 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8062 CPU (h_zbit) = opval;
8063 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8064 }
8065 {
8066 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8067 CPU (h_vbit) = opval;
8068 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8069 }
8070 {
8071 {
8072 BI opval = 0;
8073 CPU (h_xbit) = opval;
8074 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8075 }
8076 {
8077 BI opval = 0;
8078 SET_H_INSN_PREFIXED_P (opval);
8079 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8080 }
8081 }
8082 }
8083 }
8084
8085 #undef FLD
8086 }
8087 NEXT (vpc);
8088
8089 CASE (sem, INSN_SUBU_W_R) : /* subu.w $Rs,$Rd */
8090 {
8091 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8092 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8093 #define FLD(f) abuf->fields.sfmt_add_b_r.f
8094 int UNUSED written = 0;
8095 IADDR UNUSED pc = abuf->addr;
8096 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8097
8098 {
8099 SI tmp_tmpopd;
8100 SI tmp_tmpops;
8101 BI tmp_carry;
8102 SI tmp_newval;
8103 tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
8104 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8105 tmp_carry = CPU (h_cbit);
8106 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8107 {
8108 SI opval = tmp_newval;
8109 SET_H_GR (FLD (f_operand2), opval);
8110 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8111 }
8112 {
8113 {
8114 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8115 CPU (h_cbit) = opval;
8116 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8117 }
8118 {
8119 BI opval = LTSI (tmp_newval, 0);
8120 CPU (h_nbit) = opval;
8121 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8122 }
8123 {
8124 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8125 CPU (h_zbit) = opval;
8126 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8127 }
8128 {
8129 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8130 CPU (h_vbit) = opval;
8131 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8132 }
8133 {
8134 {
8135 BI opval = 0;
8136 CPU (h_xbit) = opval;
8137 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8138 }
8139 {
8140 BI opval = 0;
8141 SET_H_INSN_PREFIXED_P (opval);
8142 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8143 }
8144 }
8145 }
8146 }
8147
8148 #undef FLD
8149 }
8150 NEXT (vpc);
8151
8152 CASE (sem, INSN_SUBU_M_B_M) : /* subu-m.b [${Rs}${inc}],$Rd */
8153 {
8154 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8155 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8156 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
8157 int UNUSED written = 0;
8158 IADDR UNUSED pc = abuf->addr;
8159 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8160
8161 {
8162 SI tmp_tmpopd;
8163 SI tmp_tmpops;
8164 BI tmp_carry;
8165 SI tmp_newval;
8166 tmp_tmpops = ZEXTQISI (({ SI tmp_addr;
8167 QI tmp_tmp_mem;
8168 BI tmp_postinc;
8169 tmp_postinc = FLD (f_memmode);
8170 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
8171 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
8172 ; if (NEBI (tmp_postinc, 0)) {
8173 {
8174 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
8175 tmp_addr = ADDSI (tmp_addr, 1);
8176 }
8177 {
8178 SI opval = tmp_addr;
8179 SET_H_GR (FLD (f_operand1), opval);
8180 written |= (1 << 11);
8181 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8182 }
8183 }
8184 }
8185 ; tmp_tmp_mem; }));
8186 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8187 tmp_carry = CPU (h_cbit);
8188 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8189 {
8190 SI opval = tmp_newval;
8191 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
8192 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8193 }
8194 {
8195 {
8196 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8197 CPU (h_cbit) = opval;
8198 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8199 }
8200 {
8201 BI opval = LTSI (tmp_newval, 0);
8202 CPU (h_nbit) = opval;
8203 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8204 }
8205 {
8206 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8207 CPU (h_zbit) = opval;
8208 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8209 }
8210 {
8211 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8212 CPU (h_vbit) = opval;
8213 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8214 }
8215 {
8216 {
8217 BI opval = 0;
8218 CPU (h_xbit) = opval;
8219 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8220 }
8221 {
8222 BI opval = 0;
8223 SET_H_INSN_PREFIXED_P (opval);
8224 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8225 }
8226 }
8227 }
8228 }
8229
8230 abuf->written = written;
8231 #undef FLD
8232 }
8233 NEXT (vpc);
8234
8235 CASE (sem, INSN_SUBU_M_W_M) : /* subu-m.w [${Rs}${inc}],$Rd */
8236 {
8237 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8238 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8239 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
8240 int UNUSED written = 0;
8241 IADDR UNUSED pc = abuf->addr;
8242 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8243
8244 {
8245 SI tmp_tmpopd;
8246 SI tmp_tmpops;
8247 BI tmp_carry;
8248 SI tmp_newval;
8249 tmp_tmpops = ZEXTHISI (({ SI tmp_addr;
8250 HI tmp_tmp_mem;
8251 BI tmp_postinc;
8252 tmp_postinc = FLD (f_memmode);
8253 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
8254 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
8255 ; if (NEBI (tmp_postinc, 0)) {
8256 {
8257 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
8258 tmp_addr = ADDSI (tmp_addr, 2);
8259 }
8260 {
8261 SI opval = tmp_addr;
8262 SET_H_GR (FLD (f_operand1), opval);
8263 written |= (1 << 11);
8264 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8265 }
8266 }
8267 }
8268 ; tmp_tmp_mem; }));
8269 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8270 tmp_carry = CPU (h_cbit);
8271 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8272 {
8273 SI opval = tmp_newval;
8274 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
8275 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8276 }
8277 {
8278 {
8279 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8280 CPU (h_cbit) = opval;
8281 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8282 }
8283 {
8284 BI opval = LTSI (tmp_newval, 0);
8285 CPU (h_nbit) = opval;
8286 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8287 }
8288 {
8289 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8290 CPU (h_zbit) = opval;
8291 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8292 }
8293 {
8294 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8295 CPU (h_vbit) = opval;
8296 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8297 }
8298 {
8299 {
8300 BI opval = 0;
8301 CPU (h_xbit) = opval;
8302 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8303 }
8304 {
8305 BI opval = 0;
8306 SET_H_INSN_PREFIXED_P (opval);
8307 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8308 }
8309 }
8310 }
8311 }
8312
8313 abuf->written = written;
8314 #undef FLD
8315 }
8316 NEXT (vpc);
8317
8318 CASE (sem, INSN_SUBUCBR) : /* [${Rs}${inc}],$Rd */
8319 {
8320 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8321 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8322 #define FLD(f) abuf->fields.sfmt_addcbr.f
8323 int UNUSED written = 0;
8324 IADDR UNUSED pc = abuf->addr;
8325 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8326
8327 {
8328 SI tmp_tmpopd;
8329 SI tmp_tmpops;
8330 BI tmp_carry;
8331 SI tmp_newval;
8332 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
8333 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8334 tmp_carry = CPU (h_cbit);
8335 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8336 {
8337 SI opval = tmp_newval;
8338 SET_H_GR (FLD (f_operand2), opval);
8339 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8340 }
8341 {
8342 {
8343 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8344 CPU (h_cbit) = opval;
8345 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8346 }
8347 {
8348 BI opval = LTSI (tmp_newval, 0);
8349 CPU (h_nbit) = opval;
8350 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8351 }
8352 {
8353 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8354 CPU (h_zbit) = opval;
8355 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8356 }
8357 {
8358 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8359 CPU (h_vbit) = opval;
8360 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8361 }
8362 {
8363 {
8364 BI opval = 0;
8365 CPU (h_xbit) = opval;
8366 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8367 }
8368 {
8369 BI opval = 0;
8370 SET_H_INSN_PREFIXED_P (opval);
8371 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8372 }
8373 }
8374 }
8375 }
8376
8377 #undef FLD
8378 }
8379 NEXT (vpc);
8380
8381 CASE (sem, INSN_SUBUCWR) : /* [${Rs}${inc}],$Rd */
8382 {
8383 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8384 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8385 #define FLD(f) abuf->fields.sfmt_addcwr.f
8386 int UNUSED written = 0;
8387 IADDR UNUSED pc = abuf->addr;
8388 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8389
8390 {
8391 SI tmp_tmpopd;
8392 SI tmp_tmpops;
8393 BI tmp_carry;
8394 SI tmp_newval;
8395 tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
8396 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8397 tmp_carry = CPU (h_cbit);
8398 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8399 {
8400 SI opval = tmp_newval;
8401 SET_H_GR (FLD (f_operand2), opval);
8402 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8403 }
8404 {
8405 {
8406 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8407 CPU (h_cbit) = opval;
8408 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8409 }
8410 {
8411 BI opval = LTSI (tmp_newval, 0);
8412 CPU (h_nbit) = opval;
8413 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8414 }
8415 {
8416 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8417 CPU (h_zbit) = opval;
8418 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8419 }
8420 {
8421 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8422 CPU (h_vbit) = opval;
8423 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8424 }
8425 {
8426 {
8427 BI opval = 0;
8428 CPU (h_xbit) = opval;
8429 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8430 }
8431 {
8432 BI opval = 0;
8433 SET_H_INSN_PREFIXED_P (opval);
8434 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8435 }
8436 }
8437 }
8438 }
8439
8440 #undef FLD
8441 }
8442 NEXT (vpc);
8443
8444 CASE (sem, INSN_ADDI_B_R) : /* addi.b ${Rs-dfield}.m,${Rd-sfield} */
8445 {
8446 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8447 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8448 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
8449 int UNUSED written = 0;
8450 IADDR UNUSED pc = abuf->addr;
8451 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8452
8453 {
8454 {
8455 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 1));
8456 SET_H_GR (FLD (f_operand1), opval);
8457 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8458 }
8459 {
8460 {
8461 BI opval = 0;
8462 CPU (h_xbit) = opval;
8463 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8464 }
8465 {
8466 BI opval = 0;
8467 SET_H_INSN_PREFIXED_P (opval);
8468 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8469 }
8470 }
8471 }
8472
8473 #undef FLD
8474 }
8475 NEXT (vpc);
8476
8477 CASE (sem, INSN_ADDI_W_R) : /* addi.w ${Rs-dfield}.m,${Rd-sfield} */
8478 {
8479 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8480 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8481 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
8482 int UNUSED written = 0;
8483 IADDR UNUSED pc = abuf->addr;
8484 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8485
8486 {
8487 {
8488 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 2));
8489 SET_H_GR (FLD (f_operand1), opval);
8490 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8491 }
8492 {
8493 {
8494 BI opval = 0;
8495 CPU (h_xbit) = opval;
8496 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8497 }
8498 {
8499 BI opval = 0;
8500 SET_H_INSN_PREFIXED_P (opval);
8501 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8502 }
8503 }
8504 }
8505
8506 #undef FLD
8507 }
8508 NEXT (vpc);
8509
8510 CASE (sem, INSN_ADDI_D_R) : /* addi.d ${Rs-dfield}.m,${Rd-sfield} */
8511 {
8512 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8513 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8514 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
8515 int UNUSED written = 0;
8516 IADDR UNUSED pc = abuf->addr;
8517 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8518
8519 {
8520 {
8521 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 4));
8522 SET_H_GR (FLD (f_operand1), opval);
8523 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8524 }
8525 {
8526 {
8527 BI opval = 0;
8528 CPU (h_xbit) = opval;
8529 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8530 }
8531 {
8532 BI opval = 0;
8533 SET_H_INSN_PREFIXED_P (opval);
8534 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8535 }
8536 }
8537 }
8538
8539 #undef FLD
8540 }
8541 NEXT (vpc);
8542
8543 CASE (sem, INSN_NEG_B_R) : /* neg.b $Rs,$Rd */
8544 {
8545 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8546 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8547 #define FLD(f) abuf->fields.sfmt_add_b_r.f
8548 int UNUSED written = 0;
8549 IADDR UNUSED pc = abuf->addr;
8550 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8551
8552 {
8553 QI tmp_tmpopd;
8554 QI tmp_tmpops;
8555 BI tmp_carry;
8556 QI tmp_newval;
8557 tmp_tmpops = GET_H_GR (FLD (f_operand1));
8558 tmp_tmpopd = 0;
8559 tmp_carry = CPU (h_cbit);
8560 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8561 {
8562 SI tmp_oldregval;
8563 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
8564 {
8565 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
8566 SET_H_GR (FLD (f_operand2), opval);
8567 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8568 }
8569 }
8570 {
8571 {
8572 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
8573 CPU (h_cbit) = opval;
8574 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8575 }
8576 {
8577 BI opval = LTQI (tmp_newval, 0);
8578 CPU (h_nbit) = opval;
8579 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8580 }
8581 {
8582 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8583 CPU (h_zbit) = opval;
8584 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8585 }
8586 {
8587 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
8588 CPU (h_vbit) = opval;
8589 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8590 }
8591 {
8592 {
8593 BI opval = 0;
8594 CPU (h_xbit) = opval;
8595 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8596 }
8597 {
8598 BI opval = 0;
8599 SET_H_INSN_PREFIXED_P (opval);
8600 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8601 }
8602 }
8603 }
8604 }
8605
8606 #undef FLD
8607 }
8608 NEXT (vpc);
8609
8610 CASE (sem, INSN_NEG_W_R) : /* neg.w $Rs,$Rd */
8611 {
8612 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8613 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8614 #define FLD(f) abuf->fields.sfmt_add_b_r.f
8615 int UNUSED written = 0;
8616 IADDR UNUSED pc = abuf->addr;
8617 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8618
8619 {
8620 HI tmp_tmpopd;
8621 HI tmp_tmpops;
8622 BI tmp_carry;
8623 HI tmp_newval;
8624 tmp_tmpops = GET_H_GR (FLD (f_operand1));
8625 tmp_tmpopd = 0;
8626 tmp_carry = CPU (h_cbit);
8627 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8628 {
8629 SI tmp_oldregval;
8630 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
8631 {
8632 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
8633 SET_H_GR (FLD (f_operand2), opval);
8634 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8635 }
8636 }
8637 {
8638 {
8639 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
8640 CPU (h_cbit) = opval;
8641 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8642 }
8643 {
8644 BI opval = LTHI (tmp_newval, 0);
8645 CPU (h_nbit) = opval;
8646 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8647 }
8648 {
8649 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8650 CPU (h_zbit) = opval;
8651 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8652 }
8653 {
8654 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
8655 CPU (h_vbit) = opval;
8656 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8657 }
8658 {
8659 {
8660 BI opval = 0;
8661 CPU (h_xbit) = opval;
8662 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8663 }
8664 {
8665 BI opval = 0;
8666 SET_H_INSN_PREFIXED_P (opval);
8667 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8668 }
8669 }
8670 }
8671 }
8672
8673 #undef FLD
8674 }
8675 NEXT (vpc);
8676
8677 CASE (sem, INSN_NEG_D_R) : /* neg.d $Rs,$Rd */
8678 {
8679 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8680 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8681 #define FLD(f) abuf->fields.sfmt_add_b_r.f
8682 int UNUSED written = 0;
8683 IADDR UNUSED pc = abuf->addr;
8684 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8685
8686 {
8687 SI tmp_tmpopd;
8688 SI tmp_tmpops;
8689 BI tmp_carry;
8690 SI tmp_newval;
8691 tmp_tmpops = GET_H_GR (FLD (f_operand1));
8692 tmp_tmpopd = 0;
8693 tmp_carry = CPU (h_cbit);
8694 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8695 {
8696 SI opval = tmp_newval;
8697 SET_H_GR (FLD (f_operand2), opval);
8698 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8699 }
8700 {
8701 {
8702 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8703 CPU (h_cbit) = opval;
8704 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8705 }
8706 {
8707 BI opval = LTSI (tmp_newval, 0);
8708 CPU (h_nbit) = opval;
8709 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8710 }
8711 {
8712 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8713 CPU (h_zbit) = opval;
8714 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8715 }
8716 {
8717 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8718 CPU (h_vbit) = opval;
8719 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8720 }
8721 {
8722 {
8723 BI opval = 0;
8724 CPU (h_xbit) = opval;
8725 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8726 }
8727 {
8728 BI opval = 0;
8729 SET_H_INSN_PREFIXED_P (opval);
8730 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8731 }
8732 }
8733 }
8734 }
8735
8736 #undef FLD
8737 }
8738 NEXT (vpc);
8739
8740 CASE (sem, INSN_TEST_M_B_M) : /* test-m.b [${Rs}${inc}] */
8741 {
8742 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8743 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8744 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
8745 int UNUSED written = 0;
8746 IADDR UNUSED pc = abuf->addr;
8747 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8748
8749 {
8750 QI tmp_tmpd;
8751 tmp_tmpd = ({ SI tmp_addr;
8752 QI tmp_tmp_mem;
8753 BI tmp_postinc;
8754 tmp_postinc = FLD (f_memmode);
8755 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
8756 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
8757 ; if (NEBI (tmp_postinc, 0)) {
8758 {
8759 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
8760 tmp_addr = ADDSI (tmp_addr, 1);
8761 }
8762 {
8763 SI opval = tmp_addr;
8764 SET_H_GR (FLD (f_operand1), opval);
8765 written |= (1 << 8);
8766 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8767 }
8768 }
8769 }
8770 ; tmp_tmp_mem; });
8771 {
8772 QI tmp_tmpopd;
8773 QI tmp_tmpops;
8774 BI tmp_carry;
8775 QI tmp_newval;
8776 tmp_tmpops = 0;
8777 tmp_tmpopd = tmp_tmpd;
8778 tmp_carry = CPU (h_cbit);
8779 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8780 ((void) 0); /*nop*/
8781 {
8782 {
8783 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
8784 CPU (h_cbit) = opval;
8785 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8786 }
8787 {
8788 BI opval = LTQI (tmp_newval, 0);
8789 CPU (h_nbit) = opval;
8790 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8791 }
8792 {
8793 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8794 CPU (h_zbit) = opval;
8795 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8796 }
8797 {
8798 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
8799 CPU (h_vbit) = opval;
8800 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8801 }
8802 {
8803 {
8804 BI opval = 0;
8805 CPU (h_xbit) = opval;
8806 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8807 }
8808 {
8809 BI opval = 0;
8810 SET_H_INSN_PREFIXED_P (opval);
8811 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8812 }
8813 }
8814 }
8815 }
8816 }
8817
8818 abuf->written = written;
8819 #undef FLD
8820 }
8821 NEXT (vpc);
8822
8823 CASE (sem, INSN_TEST_M_W_M) : /* test-m.w [${Rs}${inc}] */
8824 {
8825 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8826 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8827 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
8828 int UNUSED written = 0;
8829 IADDR UNUSED pc = abuf->addr;
8830 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8831
8832 {
8833 HI tmp_tmpd;
8834 tmp_tmpd = ({ SI tmp_addr;
8835 HI tmp_tmp_mem;
8836 BI tmp_postinc;
8837 tmp_postinc = FLD (f_memmode);
8838 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
8839 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
8840 ; if (NEBI (tmp_postinc, 0)) {
8841 {
8842 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
8843 tmp_addr = ADDSI (tmp_addr, 2);
8844 }
8845 {
8846 SI opval = tmp_addr;
8847 SET_H_GR (FLD (f_operand1), opval);
8848 written |= (1 << 8);
8849 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8850 }
8851 }
8852 }
8853 ; tmp_tmp_mem; });
8854 {
8855 HI tmp_tmpopd;
8856 HI tmp_tmpops;
8857 BI tmp_carry;
8858 HI tmp_newval;
8859 tmp_tmpops = 0;
8860 tmp_tmpopd = tmp_tmpd;
8861 tmp_carry = CPU (h_cbit);
8862 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8863 ((void) 0); /*nop*/
8864 {
8865 {
8866 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
8867 CPU (h_cbit) = opval;
8868 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8869 }
8870 {
8871 BI opval = LTHI (tmp_newval, 0);
8872 CPU (h_nbit) = opval;
8873 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8874 }
8875 {
8876 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8877 CPU (h_zbit) = opval;
8878 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8879 }
8880 {
8881 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
8882 CPU (h_vbit) = opval;
8883 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8884 }
8885 {
8886 {
8887 BI opval = 0;
8888 CPU (h_xbit) = opval;
8889 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8890 }
8891 {
8892 BI opval = 0;
8893 SET_H_INSN_PREFIXED_P (opval);
8894 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8895 }
8896 }
8897 }
8898 }
8899 }
8900
8901 abuf->written = written;
8902 #undef FLD
8903 }
8904 NEXT (vpc);
8905
8906 CASE (sem, INSN_TEST_M_D_M) : /* test-m.d [${Rs}${inc}] */
8907 {
8908 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8909 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8910 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
8911 int UNUSED written = 0;
8912 IADDR UNUSED pc = abuf->addr;
8913 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8914
8915 {
8916 SI tmp_tmpd;
8917 tmp_tmpd = ({ SI tmp_addr;
8918 SI tmp_tmp_mem;
8919 BI tmp_postinc;
8920 tmp_postinc = FLD (f_memmode);
8921 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
8922 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
8923 ; if (NEBI (tmp_postinc, 0)) {
8924 {
8925 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
8926 tmp_addr = ADDSI (tmp_addr, 4);
8927 }
8928 {
8929 SI opval = tmp_addr;
8930 SET_H_GR (FLD (f_operand1), opval);
8931 written |= (1 << 8);
8932 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8933 }
8934 }
8935 }
8936 ; tmp_tmp_mem; });
8937 {
8938 SI tmp_tmpopd;
8939 SI tmp_tmpops;
8940 BI tmp_carry;
8941 SI tmp_newval;
8942 tmp_tmpops = 0;
8943 tmp_tmpopd = tmp_tmpd;
8944 tmp_carry = CPU (h_cbit);
8945 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8946 ((void) 0); /*nop*/
8947 {
8948 {
8949 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8950 CPU (h_cbit) = opval;
8951 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8952 }
8953 {
8954 BI opval = LTSI (tmp_newval, 0);
8955 CPU (h_nbit) = opval;
8956 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8957 }
8958 {
8959 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8960 CPU (h_zbit) = opval;
8961 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8962 }
8963 {
8964 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8965 CPU (h_vbit) = opval;
8966 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8967 }
8968 {
8969 {
8970 BI opval = 0;
8971 CPU (h_xbit) = opval;
8972 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8973 }
8974 {
8975 BI opval = 0;
8976 SET_H_INSN_PREFIXED_P (opval);
8977 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8978 }
8979 }
8980 }
8981 }
8982 }
8983
8984 abuf->written = written;
8985 #undef FLD
8986 }
8987 NEXT (vpc);
8988
8989 CASE (sem, INSN_MOVE_R_M_B_M) : /* move-r-m.b ${Rs-dfield},[${Rd-sfield}${inc}] */
8990 {
8991 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8992 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8993 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
8994 int UNUSED written = 0;
8995 IADDR UNUSED pc = abuf->addr;
8996 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8997
8998 {
8999 QI tmp_tmpd;
9000 tmp_tmpd = GET_H_GR (FLD (f_operand2));
9001 {
9002 SI tmp_addr;
9003 BI tmp_postinc;
9004 tmp_postinc = FLD (f_memmode);
9005 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
9006 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
9007 if (EQBI (CPU (h_pbit), 0)) {
9008 {
9009 {
9010 QI opval = tmp_tmpd;
9011 SETMEMQI (current_cpu, pc, tmp_addr, opval);
9012 written |= (1 << 10);
9013 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9014 }
9015 {
9016 BI opval = CPU (h_pbit);
9017 CPU (h_cbit) = opval;
9018 written |= (1 << 9);
9019 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9020 }
9021 }
9022 } else {
9023 {
9024 BI opval = 1;
9025 CPU (h_cbit) = opval;
9026 written |= (1 << 9);
9027 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9028 }
9029 }
9030 } else {
9031 {
9032 QI opval = tmp_tmpd;
9033 SETMEMQI (current_cpu, pc, tmp_addr, opval);
9034 written |= (1 << 10);
9035 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9036 }
9037 }
9038 if (NEBI (tmp_postinc, 0)) {
9039 {
9040 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
9041 tmp_addr = ADDSI (tmp_addr, 1);
9042 }
9043 {
9044 SI opval = tmp_addr;
9045 SET_H_GR (FLD (f_operand1), opval);
9046 written |= (1 << 8);
9047 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9048 }
9049 }
9050 }
9051 }
9052 {
9053 {
9054 BI opval = 0;
9055 CPU (h_xbit) = opval;
9056 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9057 }
9058 {
9059 BI opval = 0;
9060 SET_H_INSN_PREFIXED_P (opval);
9061 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9062 }
9063 }
9064 }
9065
9066 abuf->written = written;
9067 #undef FLD
9068 }
9069 NEXT (vpc);
9070
9071 CASE (sem, INSN_MOVE_R_M_W_M) : /* move-r-m.w ${Rs-dfield},[${Rd-sfield}${inc}] */
9072 {
9073 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9074 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9075 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
9076 int UNUSED written = 0;
9077 IADDR UNUSED pc = abuf->addr;
9078 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9079
9080 {
9081 HI tmp_tmpd;
9082 tmp_tmpd = GET_H_GR (FLD (f_operand2));
9083 {
9084 SI tmp_addr;
9085 BI tmp_postinc;
9086 tmp_postinc = FLD (f_memmode);
9087 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
9088 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
9089 if (EQBI (CPU (h_pbit), 0)) {
9090 {
9091 {
9092 HI opval = tmp_tmpd;
9093 SETMEMHI (current_cpu, pc, tmp_addr, opval);
9094 written |= (1 << 10);
9095 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9096 }
9097 {
9098 BI opval = CPU (h_pbit);
9099 CPU (h_cbit) = opval;
9100 written |= (1 << 9);
9101 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9102 }
9103 }
9104 } else {
9105 {
9106 BI opval = 1;
9107 CPU (h_cbit) = opval;
9108 written |= (1 << 9);
9109 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9110 }
9111 }
9112 } else {
9113 {
9114 HI opval = tmp_tmpd;
9115 SETMEMHI (current_cpu, pc, tmp_addr, opval);
9116 written |= (1 << 10);
9117 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9118 }
9119 }
9120 if (NEBI (tmp_postinc, 0)) {
9121 {
9122 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
9123 tmp_addr = ADDSI (tmp_addr, 2);
9124 }
9125 {
9126 SI opval = tmp_addr;
9127 SET_H_GR (FLD (f_operand1), opval);
9128 written |= (1 << 8);
9129 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9130 }
9131 }
9132 }
9133 }
9134 {
9135 {
9136 BI opval = 0;
9137 CPU (h_xbit) = opval;
9138 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9139 }
9140 {
9141 BI opval = 0;
9142 SET_H_INSN_PREFIXED_P (opval);
9143 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9144 }
9145 }
9146 }
9147
9148 abuf->written = written;
9149 #undef FLD
9150 }
9151 NEXT (vpc);
9152
9153 CASE (sem, INSN_MOVE_R_M_D_M) : /* move-r-m.d ${Rs-dfield},[${Rd-sfield}${inc}] */
9154 {
9155 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9156 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9157 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
9158 int UNUSED written = 0;
9159 IADDR UNUSED pc = abuf->addr;
9160 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9161
9162 {
9163 SI tmp_tmpd;
9164 tmp_tmpd = GET_H_GR (FLD (f_operand2));
9165 {
9166 SI tmp_addr;
9167 BI tmp_postinc;
9168 tmp_postinc = FLD (f_memmode);
9169 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
9170 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
9171 if (EQBI (CPU (h_pbit), 0)) {
9172 {
9173 {
9174 SI opval = tmp_tmpd;
9175 SETMEMSI (current_cpu, pc, tmp_addr, opval);
9176 written |= (1 << 10);
9177 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9178 }
9179 {
9180 BI opval = CPU (h_pbit);
9181 CPU (h_cbit) = opval;
9182 written |= (1 << 9);
9183 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9184 }
9185 }
9186 } else {
9187 {
9188 BI opval = 1;
9189 CPU (h_cbit) = opval;
9190 written |= (1 << 9);
9191 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9192 }
9193 }
9194 } else {
9195 {
9196 SI opval = tmp_tmpd;
9197 SETMEMSI (current_cpu, pc, tmp_addr, opval);
9198 written |= (1 << 10);
9199 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9200 }
9201 }
9202 if (NEBI (tmp_postinc, 0)) {
9203 {
9204 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
9205 tmp_addr = ADDSI (tmp_addr, 4);
9206 }
9207 {
9208 SI opval = tmp_addr;
9209 SET_H_GR (FLD (f_operand1), opval);
9210 written |= (1 << 8);
9211 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9212 }
9213 }
9214 }
9215 }
9216 {
9217 {
9218 BI opval = 0;
9219 CPU (h_xbit) = opval;
9220 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9221 }
9222 {
9223 BI opval = 0;
9224 SET_H_INSN_PREFIXED_P (opval);
9225 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9226 }
9227 }
9228 }
9229
9230 abuf->written = written;
9231 #undef FLD
9232 }
9233 NEXT (vpc);
9234
9235 CASE (sem, INSN_MULS_B) : /* muls.b $Rs,$Rd */
9236 {
9237 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9238 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9239 #define FLD(f) abuf->fields.sfmt_muls_b.f
9240 int UNUSED written = 0;
9241 IADDR UNUSED pc = abuf->addr;
9242 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9243
9244 {
9245 DI tmp_src1;
9246 DI tmp_src2;
9247 DI tmp_tmpr;
9248 tmp_src1 = EXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
9249 tmp_src2 = EXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand2))));
9250 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9251 {
9252 SI opval = TRUNCDISI (tmp_tmpr);
9253 SET_H_GR (FLD (f_operand2), opval);
9254 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9255 }
9256 {
9257 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9258 SET_H_SR (((UINT) 7), opval);
9259 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9260 }
9261 {
9262 {
9263 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9264 CPU (h_cbit) = opval;
9265 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9266 }
9267 {
9268 BI opval = LTDI (tmp_tmpr, 0);
9269 CPU (h_nbit) = opval;
9270 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9271 }
9272 {
9273 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9274 CPU (h_zbit) = opval;
9275 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9276 }
9277 {
9278 BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
9279 CPU (h_vbit) = opval;
9280 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9281 }
9282 {
9283 {
9284 BI opval = 0;
9285 CPU (h_xbit) = opval;
9286 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9287 }
9288 {
9289 BI opval = 0;
9290 SET_H_INSN_PREFIXED_P (opval);
9291 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9292 }
9293 }
9294 }
9295 }
9296
9297 #undef FLD
9298 }
9299 NEXT (vpc);
9300
9301 CASE (sem, INSN_MULS_W) : /* muls.w $Rs,$Rd */
9302 {
9303 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9305 #define FLD(f) abuf->fields.sfmt_muls_b.f
9306 int UNUSED written = 0;
9307 IADDR UNUSED pc = abuf->addr;
9308 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9309
9310 {
9311 DI tmp_src1;
9312 DI tmp_src2;
9313 DI tmp_tmpr;
9314 tmp_src1 = EXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
9315 tmp_src2 = EXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand2))));
9316 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9317 {
9318 SI opval = TRUNCDISI (tmp_tmpr);
9319 SET_H_GR (FLD (f_operand2), opval);
9320 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9321 }
9322 {
9323 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9324 SET_H_SR (((UINT) 7), opval);
9325 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9326 }
9327 {
9328 {
9329 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9330 CPU (h_cbit) = opval;
9331 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9332 }
9333 {
9334 BI opval = LTDI (tmp_tmpr, 0);
9335 CPU (h_nbit) = opval;
9336 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9337 }
9338 {
9339 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9340 CPU (h_zbit) = opval;
9341 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9342 }
9343 {
9344 BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
9345 CPU (h_vbit) = opval;
9346 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9347 }
9348 {
9349 {
9350 BI opval = 0;
9351 CPU (h_xbit) = opval;
9352 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9353 }
9354 {
9355 BI opval = 0;
9356 SET_H_INSN_PREFIXED_P (opval);
9357 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9358 }
9359 }
9360 }
9361 }
9362
9363 #undef FLD
9364 }
9365 NEXT (vpc);
9366
9367 CASE (sem, INSN_MULS_D) : /* muls.d $Rs,$Rd */
9368 {
9369 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9370 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9371 #define FLD(f) abuf->fields.sfmt_muls_b.f
9372 int UNUSED written = 0;
9373 IADDR UNUSED pc = abuf->addr;
9374 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9375
9376 {
9377 DI tmp_src1;
9378 DI tmp_src2;
9379 DI tmp_tmpr;
9380 tmp_src1 = EXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand1))));
9381 tmp_src2 = EXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand2))));
9382 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9383 {
9384 SI opval = TRUNCDISI (tmp_tmpr);
9385 SET_H_GR (FLD (f_operand2), opval);
9386 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9387 }
9388 {
9389 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9390 SET_H_SR (((UINT) 7), opval);
9391 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9392 }
9393 {
9394 {
9395 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9396 CPU (h_cbit) = opval;
9397 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9398 }
9399 {
9400 BI opval = LTDI (tmp_tmpr, 0);
9401 CPU (h_nbit) = opval;
9402 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9403 }
9404 {
9405 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9406 CPU (h_zbit) = opval;
9407 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9408 }
9409 {
9410 BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
9411 CPU (h_vbit) = opval;
9412 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9413 }
9414 {
9415 {
9416 BI opval = 0;
9417 CPU (h_xbit) = opval;
9418 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9419 }
9420 {
9421 BI opval = 0;
9422 SET_H_INSN_PREFIXED_P (opval);
9423 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9424 }
9425 }
9426 }
9427 }
9428
9429 #undef FLD
9430 }
9431 NEXT (vpc);
9432
9433 CASE (sem, INSN_MULU_B) : /* mulu.b $Rs,$Rd */
9434 {
9435 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9436 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9437 #define FLD(f) abuf->fields.sfmt_muls_b.f
9438 int UNUSED written = 0;
9439 IADDR UNUSED pc = abuf->addr;
9440 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9441
9442 {
9443 DI tmp_src1;
9444 DI tmp_src2;
9445 DI tmp_tmpr;
9446 tmp_src1 = ZEXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
9447 tmp_src2 = ZEXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand2))));
9448 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9449 {
9450 SI opval = TRUNCDISI (tmp_tmpr);
9451 SET_H_GR (FLD (f_operand2), opval);
9452 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9453 }
9454 {
9455 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9456 SET_H_SR (((UINT) 7), opval);
9457 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9458 }
9459 {
9460 {
9461 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9462 CPU (h_cbit) = opval;
9463 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9464 }
9465 {
9466 BI opval = LTDI (tmp_tmpr, 0);
9467 CPU (h_nbit) = opval;
9468 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9469 }
9470 {
9471 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9472 CPU (h_zbit) = opval;
9473 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9474 }
9475 {
9476 BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
9477 CPU (h_vbit) = opval;
9478 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9479 }
9480 {
9481 {
9482 BI opval = 0;
9483 CPU (h_xbit) = opval;
9484 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9485 }
9486 {
9487 BI opval = 0;
9488 SET_H_INSN_PREFIXED_P (opval);
9489 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9490 }
9491 }
9492 }
9493 }
9494
9495 #undef FLD
9496 }
9497 NEXT (vpc);
9498
9499 CASE (sem, INSN_MULU_W) : /* mulu.w $Rs,$Rd */
9500 {
9501 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9502 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9503 #define FLD(f) abuf->fields.sfmt_muls_b.f
9504 int UNUSED written = 0;
9505 IADDR UNUSED pc = abuf->addr;
9506 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9507
9508 {
9509 DI tmp_src1;
9510 DI tmp_src2;
9511 DI tmp_tmpr;
9512 tmp_src1 = ZEXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
9513 tmp_src2 = ZEXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand2))));
9514 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9515 {
9516 SI opval = TRUNCDISI (tmp_tmpr);
9517 SET_H_GR (FLD (f_operand2), opval);
9518 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9519 }
9520 {
9521 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9522 SET_H_SR (((UINT) 7), opval);
9523 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9524 }
9525 {
9526 {
9527 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9528 CPU (h_cbit) = opval;
9529 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9530 }
9531 {
9532 BI opval = LTDI (tmp_tmpr, 0);
9533 CPU (h_nbit) = opval;
9534 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9535 }
9536 {
9537 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9538 CPU (h_zbit) = opval;
9539 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9540 }
9541 {
9542 BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
9543 CPU (h_vbit) = opval;
9544 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9545 }
9546 {
9547 {
9548 BI opval = 0;
9549 CPU (h_xbit) = opval;
9550 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9551 }
9552 {
9553 BI opval = 0;
9554 SET_H_INSN_PREFIXED_P (opval);
9555 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9556 }
9557 }
9558 }
9559 }
9560
9561 #undef FLD
9562 }
9563 NEXT (vpc);
9564
9565 CASE (sem, INSN_MULU_D) : /* mulu.d $Rs,$Rd */
9566 {
9567 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9568 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9569 #define FLD(f) abuf->fields.sfmt_muls_b.f
9570 int UNUSED written = 0;
9571 IADDR UNUSED pc = abuf->addr;
9572 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9573
9574 {
9575 DI tmp_src1;
9576 DI tmp_src2;
9577 DI tmp_tmpr;
9578 tmp_src1 = ZEXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand1))));
9579 tmp_src2 = ZEXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand2))));
9580 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9581 {
9582 SI opval = TRUNCDISI (tmp_tmpr);
9583 SET_H_GR (FLD (f_operand2), opval);
9584 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9585 }
9586 {
9587 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9588 SET_H_SR (((UINT) 7), opval);
9589 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9590 }
9591 {
9592 {
9593 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9594 CPU (h_cbit) = opval;
9595 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9596 }
9597 {
9598 BI opval = LTDI (tmp_tmpr, 0);
9599 CPU (h_nbit) = opval;
9600 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9601 }
9602 {
9603 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9604 CPU (h_zbit) = opval;
9605 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9606 }
9607 {
9608 BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
9609 CPU (h_vbit) = opval;
9610 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9611 }
9612 {
9613 {
9614 BI opval = 0;
9615 CPU (h_xbit) = opval;
9616 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9617 }
9618 {
9619 BI opval = 0;
9620 SET_H_INSN_PREFIXED_P (opval);
9621 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9622 }
9623 }
9624 }
9625 }
9626
9627 #undef FLD
9628 }
9629 NEXT (vpc);
9630
9631 CASE (sem, INSN_MSTEP) : /* mstep $Rs,$Rd */
9632 {
9633 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9634 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9635 #define FLD(f) abuf->fields.sfmt_muls_b.f
9636 int UNUSED written = 0;
9637 IADDR UNUSED pc = abuf->addr;
9638 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9639
9640 {
9641 SI tmp_tmpd;
9642 SI tmp_tmps;
9643 tmp_tmps = GET_H_GR (FLD (f_operand1));
9644 tmp_tmpd = ADDSI (SLLSI (GET_H_GR (FLD (f_operand2)), 1), ((CPU (h_nbit)) ? (tmp_tmps) : (0)));
9645 {
9646 SI opval = tmp_tmpd;
9647 SET_H_GR (FLD (f_operand2), opval);
9648 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9649 }
9650 {
9651 {
9652 BI opval = LTSI (tmp_tmpd, 0);
9653 CPU (h_nbit) = opval;
9654 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9655 }
9656 {
9657 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9658 CPU (h_zbit) = opval;
9659 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9660 }
9661 SET_H_CBIT_MOVE (0);
9662 SET_H_VBIT_MOVE (0);
9663 {
9664 {
9665 BI opval = 0;
9666 CPU (h_xbit) = opval;
9667 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9668 }
9669 {
9670 BI opval = 0;
9671 SET_H_INSN_PREFIXED_P (opval);
9672 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9673 }
9674 }
9675 }
9676 }
9677
9678 #undef FLD
9679 }
9680 NEXT (vpc);
9681
9682 CASE (sem, INSN_DSTEP) : /* dstep $Rs,$Rd */
9683 {
9684 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9685 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9686 #define FLD(f) abuf->fields.sfmt_muls_b.f
9687 int UNUSED written = 0;
9688 IADDR UNUSED pc = abuf->addr;
9689 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9690
9691 {
9692 SI tmp_tmp;
9693 SI tmp_tmps;
9694 SI tmp_tmpd;
9695 tmp_tmps = GET_H_GR (FLD (f_operand1));
9696 tmp_tmp = SLLSI (GET_H_GR (FLD (f_operand2)), 1);
9697 tmp_tmpd = ((GEUSI (tmp_tmp, tmp_tmps)) ? (SUBSI (tmp_tmp, tmp_tmps)) : (tmp_tmp));
9698 {
9699 SI opval = tmp_tmpd;
9700 SET_H_GR (FLD (f_operand2), opval);
9701 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9702 }
9703 {
9704 {
9705 BI opval = LTSI (tmp_tmpd, 0);
9706 CPU (h_nbit) = opval;
9707 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9708 }
9709 {
9710 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9711 CPU (h_zbit) = opval;
9712 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9713 }
9714 SET_H_CBIT_MOVE (0);
9715 SET_H_VBIT_MOVE (0);
9716 {
9717 {
9718 BI opval = 0;
9719 CPU (h_xbit) = opval;
9720 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9721 }
9722 {
9723 BI opval = 0;
9724 SET_H_INSN_PREFIXED_P (opval);
9725 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9726 }
9727 }
9728 }
9729 }
9730
9731 #undef FLD
9732 }
9733 NEXT (vpc);
9734
9735 CASE (sem, INSN_ABS) : /* abs $Rs,$Rd */
9736 {
9737 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9738 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9739 #define FLD(f) abuf->fields.sfmt_muls_b.f
9740 int UNUSED written = 0;
9741 IADDR UNUSED pc = abuf->addr;
9742 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9743
9744 {
9745 SI tmp_tmpd;
9746 tmp_tmpd = ABSSI (GET_H_GR (FLD (f_operand1)));
9747 {
9748 SI opval = tmp_tmpd;
9749 SET_H_GR (FLD (f_operand2), opval);
9750 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9751 }
9752 {
9753 {
9754 BI opval = LTSI (tmp_tmpd, 0);
9755 CPU (h_nbit) = opval;
9756 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9757 }
9758 {
9759 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9760 CPU (h_zbit) = opval;
9761 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9762 }
9763 SET_H_CBIT_MOVE (0);
9764 SET_H_VBIT_MOVE (0);
9765 {
9766 {
9767 BI opval = 0;
9768 CPU (h_xbit) = opval;
9769 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9770 }
9771 {
9772 BI opval = 0;
9773 SET_H_INSN_PREFIXED_P (opval);
9774 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9775 }
9776 }
9777 }
9778 }
9779
9780 #undef FLD
9781 }
9782 NEXT (vpc);
9783
9784 CASE (sem, INSN_AND_B_R) : /* and.b $Rs,$Rd */
9785 {
9786 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9787 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9788 #define FLD(f) abuf->fields.sfmt_add_b_r.f
9789 int UNUSED written = 0;
9790 IADDR UNUSED pc = abuf->addr;
9791 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9792
9793 {
9794 QI tmp_tmpd;
9795 tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
9796 {
9797 SI tmp_oldregval;
9798 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
9799 {
9800 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
9801 SET_H_GR (FLD (f_operand2), opval);
9802 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9803 }
9804 }
9805 {
9806 {
9807 BI opval = LTQI (tmp_tmpd, 0);
9808 CPU (h_nbit) = opval;
9809 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9810 }
9811 {
9812 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9813 CPU (h_zbit) = opval;
9814 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9815 }
9816 SET_H_CBIT_MOVE (0);
9817 SET_H_VBIT_MOVE (0);
9818 {
9819 {
9820 BI opval = 0;
9821 CPU (h_xbit) = opval;
9822 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9823 }
9824 {
9825 BI opval = 0;
9826 SET_H_INSN_PREFIXED_P (opval);
9827 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9828 }
9829 }
9830 }
9831 }
9832
9833 #undef FLD
9834 }
9835 NEXT (vpc);
9836
9837 CASE (sem, INSN_AND_W_R) : /* and.w $Rs,$Rd */
9838 {
9839 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9840 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9841 #define FLD(f) abuf->fields.sfmt_add_b_r.f
9842 int UNUSED written = 0;
9843 IADDR UNUSED pc = abuf->addr;
9844 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9845
9846 {
9847 HI tmp_tmpd;
9848 tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
9849 {
9850 SI tmp_oldregval;
9851 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
9852 {
9853 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
9854 SET_H_GR (FLD (f_operand2), opval);
9855 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9856 }
9857 }
9858 {
9859 {
9860 BI opval = LTHI (tmp_tmpd, 0);
9861 CPU (h_nbit) = opval;
9862 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9863 }
9864 {
9865 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9866 CPU (h_zbit) = opval;
9867 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9868 }
9869 SET_H_CBIT_MOVE (0);
9870 SET_H_VBIT_MOVE (0);
9871 {
9872 {
9873 BI opval = 0;
9874 CPU (h_xbit) = opval;
9875 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9876 }
9877 {
9878 BI opval = 0;
9879 SET_H_INSN_PREFIXED_P (opval);
9880 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9881 }
9882 }
9883 }
9884 }
9885
9886 #undef FLD
9887 }
9888 NEXT (vpc);
9889
9890 CASE (sem, INSN_AND_D_R) : /* and.d $Rs,$Rd */
9891 {
9892 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9893 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9894 #define FLD(f) abuf->fields.sfmt_add_b_r.f
9895 int UNUSED written = 0;
9896 IADDR UNUSED pc = abuf->addr;
9897 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9898
9899 {
9900 SI tmp_tmpd;
9901 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
9902 {
9903 SI opval = tmp_tmpd;
9904 SET_H_GR (FLD (f_operand2), opval);
9905 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9906 }
9907 {
9908 {
9909 BI opval = LTSI (tmp_tmpd, 0);
9910 CPU (h_nbit) = opval;
9911 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9912 }
9913 {
9914 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9915 CPU (h_zbit) = opval;
9916 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9917 }
9918 SET_H_CBIT_MOVE (0);
9919 SET_H_VBIT_MOVE (0);
9920 {
9921 {
9922 BI opval = 0;
9923 CPU (h_xbit) = opval;
9924 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9925 }
9926 {
9927 BI opval = 0;
9928 SET_H_INSN_PREFIXED_P (opval);
9929 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9930 }
9931 }
9932 }
9933 }
9934
9935 #undef FLD
9936 }
9937 NEXT (vpc);
9938
9939 CASE (sem, INSN_AND_M_B_M) : /* and-m.b [${Rs}${inc}],${Rd} */
9940 {
9941 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9942 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9943 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
9944 int UNUSED written = 0;
9945 IADDR UNUSED pc = abuf->addr;
9946 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9947
9948 {
9949 QI tmp_tmpd;
9950 tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
9951 QI tmp_tmp_mem;
9952 BI tmp_postinc;
9953 tmp_postinc = FLD (f_memmode);
9954 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
9955 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
9956 ; if (NEBI (tmp_postinc, 0)) {
9957 {
9958 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
9959 tmp_addr = ADDSI (tmp_addr, 1);
9960 }
9961 {
9962 SI opval = tmp_addr;
9963 SET_H_GR (FLD (f_operand1), opval);
9964 written |= (1 << 11);
9965 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9966 }
9967 }
9968 }
9969 ; tmp_tmp_mem; }));
9970 {
9971 SI tmp_oldregval;
9972 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
9973 {
9974 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
9975 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
9976 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9977 }
9978 }
9979 {
9980 {
9981 BI opval = LTQI (tmp_tmpd, 0);
9982 CPU (h_nbit) = opval;
9983 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9984 }
9985 {
9986 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9987 CPU (h_zbit) = opval;
9988 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9989 }
9990 SET_H_CBIT_MOVE (0);
9991 SET_H_VBIT_MOVE (0);
9992 {
9993 {
9994 BI opval = 0;
9995 CPU (h_xbit) = opval;
9996 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9997 }
9998 {
9999 BI opval = 0;
10000 SET_H_INSN_PREFIXED_P (opval);
10001 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10002 }
10003 }
10004 }
10005 }
10006
10007 abuf->written = written;
10008 #undef FLD
10009 }
10010 NEXT (vpc);
10011
10012 CASE (sem, INSN_AND_M_W_M) : /* and-m.w [${Rs}${inc}],${Rd} */
10013 {
10014 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10016 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
10017 int UNUSED written = 0;
10018 IADDR UNUSED pc = abuf->addr;
10019 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10020
10021 {
10022 HI tmp_tmpd;
10023 tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
10024 HI tmp_tmp_mem;
10025 BI tmp_postinc;
10026 tmp_postinc = FLD (f_memmode);
10027 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
10028 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
10029 ; if (NEBI (tmp_postinc, 0)) {
10030 {
10031 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
10032 tmp_addr = ADDSI (tmp_addr, 2);
10033 }
10034 {
10035 SI opval = tmp_addr;
10036 SET_H_GR (FLD (f_operand1), opval);
10037 written |= (1 << 11);
10038 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10039 }
10040 }
10041 }
10042 ; tmp_tmp_mem; }));
10043 {
10044 SI tmp_oldregval;
10045 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
10046 {
10047 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
10048 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
10049 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10050 }
10051 }
10052 {
10053 {
10054 BI opval = LTHI (tmp_tmpd, 0);
10055 CPU (h_nbit) = opval;
10056 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10057 }
10058 {
10059 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10060 CPU (h_zbit) = opval;
10061 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10062 }
10063 SET_H_CBIT_MOVE (0);
10064 SET_H_VBIT_MOVE (0);
10065 {
10066 {
10067 BI opval = 0;
10068 CPU (h_xbit) = opval;
10069 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10070 }
10071 {
10072 BI opval = 0;
10073 SET_H_INSN_PREFIXED_P (opval);
10074 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10075 }
10076 }
10077 }
10078 }
10079
10080 abuf->written = written;
10081 #undef FLD
10082 }
10083 NEXT (vpc);
10084
10085 CASE (sem, INSN_AND_M_D_M) : /* and-m.d [${Rs}${inc}],${Rd} */
10086 {
10087 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10088 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10089 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
10090 int UNUSED written = 0;
10091 IADDR UNUSED pc = abuf->addr;
10092 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10093
10094 {
10095 SI tmp_tmpd;
10096 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
10097 SI tmp_tmp_mem;
10098 BI tmp_postinc;
10099 tmp_postinc = FLD (f_memmode);
10100 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
10101 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
10102 ; if (NEBI (tmp_postinc, 0)) {
10103 {
10104 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
10105 tmp_addr = ADDSI (tmp_addr, 4);
10106 }
10107 {
10108 SI opval = tmp_addr;
10109 SET_H_GR (FLD (f_operand1), opval);
10110 written |= (1 << 10);
10111 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10112 }
10113 }
10114 }
10115 ; tmp_tmp_mem; }));
10116 {
10117 SI opval = tmp_tmpd;
10118 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
10119 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10120 }
10121 {
10122 {
10123 BI opval = LTSI (tmp_tmpd, 0);
10124 CPU (h_nbit) = opval;
10125 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10126 }
10127 {
10128 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10129 CPU (h_zbit) = opval;
10130 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10131 }
10132 SET_H_CBIT_MOVE (0);
10133 SET_H_VBIT_MOVE (0);
10134 {
10135 {
10136 BI opval = 0;
10137 CPU (h_xbit) = opval;
10138 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10139 }
10140 {
10141 BI opval = 0;
10142 SET_H_INSN_PREFIXED_P (opval);
10143 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10144 }
10145 }
10146 }
10147 }
10148
10149 abuf->written = written;
10150 #undef FLD
10151 }
10152 NEXT (vpc);
10153
10154 CASE (sem, INSN_ANDCBR) : /* and.b ${sconst8}],${Rd} */
10155 {
10156 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10157 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10158 #define FLD(f) abuf->fields.sfmt_addcbr.f
10159 int UNUSED written = 0;
10160 IADDR UNUSED pc = abuf->addr;
10161 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10162
10163 {
10164 QI tmp_tmpd;
10165 tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__byte));
10166 {
10167 SI tmp_oldregval;
10168 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10169 {
10170 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
10171 SET_H_GR (FLD (f_operand2), opval);
10172 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10173 }
10174 }
10175 {
10176 {
10177 BI opval = LTQI (tmp_tmpd, 0);
10178 CPU (h_nbit) = opval;
10179 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10180 }
10181 {
10182 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10183 CPU (h_zbit) = opval;
10184 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10185 }
10186 SET_H_CBIT_MOVE (0);
10187 SET_H_VBIT_MOVE (0);
10188 {
10189 {
10190 BI opval = 0;
10191 CPU (h_xbit) = opval;
10192 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10193 }
10194 {
10195 BI opval = 0;
10196 SET_H_INSN_PREFIXED_P (opval);
10197 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10198 }
10199 }
10200 }
10201 }
10202
10203 #undef FLD
10204 }
10205 NEXT (vpc);
10206
10207 CASE (sem, INSN_ANDCWR) : /* and.w ${sconst16}],${Rd} */
10208 {
10209 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10210 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10211 #define FLD(f) abuf->fields.sfmt_addcwr.f
10212 int UNUSED written = 0;
10213 IADDR UNUSED pc = abuf->addr;
10214 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10215
10216 {
10217 HI tmp_tmpd;
10218 tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__word));
10219 {
10220 SI tmp_oldregval;
10221 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10222 {
10223 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
10224 SET_H_GR (FLD (f_operand2), opval);
10225 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10226 }
10227 }
10228 {
10229 {
10230 BI opval = LTHI (tmp_tmpd, 0);
10231 CPU (h_nbit) = opval;
10232 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10233 }
10234 {
10235 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10236 CPU (h_zbit) = opval;
10237 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10238 }
10239 SET_H_CBIT_MOVE (0);
10240 SET_H_VBIT_MOVE (0);
10241 {
10242 {
10243 BI opval = 0;
10244 CPU (h_xbit) = opval;
10245 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10246 }
10247 {
10248 BI opval = 0;
10249 SET_H_INSN_PREFIXED_P (opval);
10250 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10251 }
10252 }
10253 }
10254 }
10255
10256 #undef FLD
10257 }
10258 NEXT (vpc);
10259
10260 CASE (sem, INSN_ANDCDR) : /* and.d ${const32}],${Rd} */
10261 {
10262 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10263 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10264 #define FLD(f) abuf->fields.sfmt_addcdr.f
10265 int UNUSED written = 0;
10266 IADDR UNUSED pc = abuf->addr;
10267 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
10268
10269 {
10270 SI tmp_tmpd;
10271 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
10272 {
10273 SI opval = tmp_tmpd;
10274 SET_H_GR (FLD (f_operand2), opval);
10275 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10276 }
10277 {
10278 {
10279 BI opval = LTSI (tmp_tmpd, 0);
10280 CPU (h_nbit) = opval;
10281 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10282 }
10283 {
10284 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10285 CPU (h_zbit) = opval;
10286 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10287 }
10288 SET_H_CBIT_MOVE (0);
10289 SET_H_VBIT_MOVE (0);
10290 {
10291 {
10292 BI opval = 0;
10293 CPU (h_xbit) = opval;
10294 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10295 }
10296 {
10297 BI opval = 0;
10298 SET_H_INSN_PREFIXED_P (opval);
10299 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10300 }
10301 }
10302 }
10303 }
10304
10305 #undef FLD
10306 }
10307 NEXT (vpc);
10308
10309 CASE (sem, INSN_ANDQ) : /* andq $i,$Rd */
10310 {
10311 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10312 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10313 #define FLD(f) abuf->fields.sfmt_andq.f
10314 int UNUSED written = 0;
10315 IADDR UNUSED pc = abuf->addr;
10316 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10317
10318 {
10319 SI tmp_tmpd;
10320 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), FLD (f_s6));
10321 {
10322 SI opval = tmp_tmpd;
10323 SET_H_GR (FLD (f_operand2), opval);
10324 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10325 }
10326 {
10327 {
10328 BI opval = LTSI (tmp_tmpd, 0);
10329 CPU (h_nbit) = opval;
10330 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10331 }
10332 {
10333 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10334 CPU (h_zbit) = opval;
10335 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10336 }
10337 SET_H_CBIT_MOVE (0);
10338 SET_H_VBIT_MOVE (0);
10339 {
10340 {
10341 BI opval = 0;
10342 CPU (h_xbit) = opval;
10343 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10344 }
10345 {
10346 BI opval = 0;
10347 SET_H_INSN_PREFIXED_P (opval);
10348 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10349 }
10350 }
10351 }
10352 }
10353
10354 #undef FLD
10355 }
10356 NEXT (vpc);
10357
10358 CASE (sem, INSN_ORR_B_R) : /* orr.b $Rs,$Rd */
10359 {
10360 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10361 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10362 #define FLD(f) abuf->fields.sfmt_add_b_r.f
10363 int UNUSED written = 0;
10364 IADDR UNUSED pc = abuf->addr;
10365 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10366
10367 {
10368 QI tmp_tmpd;
10369 tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
10370 {
10371 SI tmp_oldregval;
10372 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10373 {
10374 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
10375 SET_H_GR (FLD (f_operand2), opval);
10376 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10377 }
10378 }
10379 {
10380 {
10381 BI opval = LTQI (tmp_tmpd, 0);
10382 CPU (h_nbit) = opval;
10383 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10384 }
10385 {
10386 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10387 CPU (h_zbit) = opval;
10388 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10389 }
10390 SET_H_CBIT_MOVE (0);
10391 SET_H_VBIT_MOVE (0);
10392 {
10393 {
10394 BI opval = 0;
10395 CPU (h_xbit) = opval;
10396 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10397 }
10398 {
10399 BI opval = 0;
10400 SET_H_INSN_PREFIXED_P (opval);
10401 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10402 }
10403 }
10404 }
10405 }
10406
10407 #undef FLD
10408 }
10409 NEXT (vpc);
10410
10411 CASE (sem, INSN_ORR_W_R) : /* orr.w $Rs,$Rd */
10412 {
10413 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10414 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10415 #define FLD(f) abuf->fields.sfmt_add_b_r.f
10416 int UNUSED written = 0;
10417 IADDR UNUSED pc = abuf->addr;
10418 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10419
10420 {
10421 HI tmp_tmpd;
10422 tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
10423 {
10424 SI tmp_oldregval;
10425 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10426 {
10427 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
10428 SET_H_GR (FLD (f_operand2), opval);
10429 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10430 }
10431 }
10432 {
10433 {
10434 BI opval = LTHI (tmp_tmpd, 0);
10435 CPU (h_nbit) = opval;
10436 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10437 }
10438 {
10439 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10440 CPU (h_zbit) = opval;
10441 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10442 }
10443 SET_H_CBIT_MOVE (0);
10444 SET_H_VBIT_MOVE (0);
10445 {
10446 {
10447 BI opval = 0;
10448 CPU (h_xbit) = opval;
10449 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10450 }
10451 {
10452 BI opval = 0;
10453 SET_H_INSN_PREFIXED_P (opval);
10454 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10455 }
10456 }
10457 }
10458 }
10459
10460 #undef FLD
10461 }
10462 NEXT (vpc);
10463
10464 CASE (sem, INSN_ORR_D_R) : /* orr.d $Rs,$Rd */
10465 {
10466 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10467 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10468 #define FLD(f) abuf->fields.sfmt_add_b_r.f
10469 int UNUSED written = 0;
10470 IADDR UNUSED pc = abuf->addr;
10471 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10472
10473 {
10474 SI tmp_tmpd;
10475 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
10476 {
10477 SI opval = tmp_tmpd;
10478 SET_H_GR (FLD (f_operand2), opval);
10479 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10480 }
10481 {
10482 {
10483 BI opval = LTSI (tmp_tmpd, 0);
10484 CPU (h_nbit) = opval;
10485 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10486 }
10487 {
10488 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10489 CPU (h_zbit) = opval;
10490 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10491 }
10492 SET_H_CBIT_MOVE (0);
10493 SET_H_VBIT_MOVE (0);
10494 {
10495 {
10496 BI opval = 0;
10497 CPU (h_xbit) = opval;
10498 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10499 }
10500 {
10501 BI opval = 0;
10502 SET_H_INSN_PREFIXED_P (opval);
10503 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10504 }
10505 }
10506 }
10507 }
10508
10509 #undef FLD
10510 }
10511 NEXT (vpc);
10512
10513 CASE (sem, INSN_OR_M_B_M) : /* or-m.b [${Rs}${inc}],${Rd} */
10514 {
10515 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10516 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10517 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
10518 int UNUSED written = 0;
10519 IADDR UNUSED pc = abuf->addr;
10520 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10521
10522 {
10523 QI tmp_tmpd;
10524 tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
10525 QI tmp_tmp_mem;
10526 BI tmp_postinc;
10527 tmp_postinc = FLD (f_memmode);
10528 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
10529 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
10530 ; if (NEBI (tmp_postinc, 0)) {
10531 {
10532 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
10533 tmp_addr = ADDSI (tmp_addr, 1);
10534 }
10535 {
10536 SI opval = tmp_addr;
10537 SET_H_GR (FLD (f_operand1), opval);
10538 written |= (1 << 11);
10539 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10540 }
10541 }
10542 }
10543 ; tmp_tmp_mem; }));
10544 {
10545 SI tmp_oldregval;
10546 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
10547 {
10548 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
10549 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
10550 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10551 }
10552 }
10553 {
10554 {
10555 BI opval = LTQI (tmp_tmpd, 0);
10556 CPU (h_nbit) = opval;
10557 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10558 }
10559 {
10560 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10561 CPU (h_zbit) = opval;
10562 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10563 }
10564 SET_H_CBIT_MOVE (0);
10565 SET_H_VBIT_MOVE (0);
10566 {
10567 {
10568 BI opval = 0;
10569 CPU (h_xbit) = opval;
10570 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10571 }
10572 {
10573 BI opval = 0;
10574 SET_H_INSN_PREFIXED_P (opval);
10575 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10576 }
10577 }
10578 }
10579 }
10580
10581 abuf->written = written;
10582 #undef FLD
10583 }
10584 NEXT (vpc);
10585
10586 CASE (sem, INSN_OR_M_W_M) : /* or-m.w [${Rs}${inc}],${Rd} */
10587 {
10588 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10589 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10590 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
10591 int UNUSED written = 0;
10592 IADDR UNUSED pc = abuf->addr;
10593 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10594
10595 {
10596 HI tmp_tmpd;
10597 tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
10598 HI tmp_tmp_mem;
10599 BI tmp_postinc;
10600 tmp_postinc = FLD (f_memmode);
10601 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
10602 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
10603 ; if (NEBI (tmp_postinc, 0)) {
10604 {
10605 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
10606 tmp_addr = ADDSI (tmp_addr, 2);
10607 }
10608 {
10609 SI opval = tmp_addr;
10610 SET_H_GR (FLD (f_operand1), opval);
10611 written |= (1 << 11);
10612 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10613 }
10614 }
10615 }
10616 ; tmp_tmp_mem; }));
10617 {
10618 SI tmp_oldregval;
10619 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
10620 {
10621 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
10622 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
10623 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10624 }
10625 }
10626 {
10627 {
10628 BI opval = LTHI (tmp_tmpd, 0);
10629 CPU (h_nbit) = opval;
10630 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10631 }
10632 {
10633 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10634 CPU (h_zbit) = opval;
10635 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10636 }
10637 SET_H_CBIT_MOVE (0);
10638 SET_H_VBIT_MOVE (0);
10639 {
10640 {
10641 BI opval = 0;
10642 CPU (h_xbit) = opval;
10643 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10644 }
10645 {
10646 BI opval = 0;
10647 SET_H_INSN_PREFIXED_P (opval);
10648 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10649 }
10650 }
10651 }
10652 }
10653
10654 abuf->written = written;
10655 #undef FLD
10656 }
10657 NEXT (vpc);
10658
10659 CASE (sem, INSN_OR_M_D_M) : /* or-m.d [${Rs}${inc}],${Rd} */
10660 {
10661 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10662 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10663 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
10664 int UNUSED written = 0;
10665 IADDR UNUSED pc = abuf->addr;
10666 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10667
10668 {
10669 SI tmp_tmpd;
10670 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
10671 SI tmp_tmp_mem;
10672 BI tmp_postinc;
10673 tmp_postinc = FLD (f_memmode);
10674 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
10675 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
10676 ; if (NEBI (tmp_postinc, 0)) {
10677 {
10678 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
10679 tmp_addr = ADDSI (tmp_addr, 4);
10680 }
10681 {
10682 SI opval = tmp_addr;
10683 SET_H_GR (FLD (f_operand1), opval);
10684 written |= (1 << 10);
10685 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10686 }
10687 }
10688 }
10689 ; tmp_tmp_mem; }));
10690 {
10691 SI opval = tmp_tmpd;
10692 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
10693 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10694 }
10695 {
10696 {
10697 BI opval = LTSI (tmp_tmpd, 0);
10698 CPU (h_nbit) = opval;
10699 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10700 }
10701 {
10702 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10703 CPU (h_zbit) = opval;
10704 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10705 }
10706 SET_H_CBIT_MOVE (0);
10707 SET_H_VBIT_MOVE (0);
10708 {
10709 {
10710 BI opval = 0;
10711 CPU (h_xbit) = opval;
10712 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10713 }
10714 {
10715 BI opval = 0;
10716 SET_H_INSN_PREFIXED_P (opval);
10717 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10718 }
10719 }
10720 }
10721 }
10722
10723 abuf->written = written;
10724 #undef FLD
10725 }
10726 NEXT (vpc);
10727
10728 CASE (sem, INSN_ORCBR) : /* or.b ${sconst8}],${Rd} */
10729 {
10730 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10731 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10732 #define FLD(f) abuf->fields.sfmt_addcbr.f
10733 int UNUSED written = 0;
10734 IADDR UNUSED pc = abuf->addr;
10735 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10736
10737 {
10738 QI tmp_tmpd;
10739 tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__byte));
10740 {
10741 SI tmp_oldregval;
10742 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10743 {
10744 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
10745 SET_H_GR (FLD (f_operand2), opval);
10746 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10747 }
10748 }
10749 {
10750 {
10751 BI opval = LTQI (tmp_tmpd, 0);
10752 CPU (h_nbit) = opval;
10753 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10754 }
10755 {
10756 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10757 CPU (h_zbit) = opval;
10758 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10759 }
10760 SET_H_CBIT_MOVE (0);
10761 SET_H_VBIT_MOVE (0);
10762 {
10763 {
10764 BI opval = 0;
10765 CPU (h_xbit) = opval;
10766 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10767 }
10768 {
10769 BI opval = 0;
10770 SET_H_INSN_PREFIXED_P (opval);
10771 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10772 }
10773 }
10774 }
10775 }
10776
10777 #undef FLD
10778 }
10779 NEXT (vpc);
10780
10781 CASE (sem, INSN_ORCWR) : /* or.w ${sconst16}],${Rd} */
10782 {
10783 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10784 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10785 #define FLD(f) abuf->fields.sfmt_addcwr.f
10786 int UNUSED written = 0;
10787 IADDR UNUSED pc = abuf->addr;
10788 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10789
10790 {
10791 HI tmp_tmpd;
10792 tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__word));
10793 {
10794 SI tmp_oldregval;
10795 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10796 {
10797 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
10798 SET_H_GR (FLD (f_operand2), opval);
10799 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10800 }
10801 }
10802 {
10803 {
10804 BI opval = LTHI (tmp_tmpd, 0);
10805 CPU (h_nbit) = opval;
10806 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10807 }
10808 {
10809 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10810 CPU (h_zbit) = opval;
10811 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10812 }
10813 SET_H_CBIT_MOVE (0);
10814 SET_H_VBIT_MOVE (0);
10815 {
10816 {
10817 BI opval = 0;
10818 CPU (h_xbit) = opval;
10819 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10820 }
10821 {
10822 BI opval = 0;
10823 SET_H_INSN_PREFIXED_P (opval);
10824 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10825 }
10826 }
10827 }
10828 }
10829
10830 #undef FLD
10831 }
10832 NEXT (vpc);
10833
10834 CASE (sem, INSN_ORCDR) : /* or.d ${const32}],${Rd} */
10835 {
10836 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10837 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10838 #define FLD(f) abuf->fields.sfmt_addcdr.f
10839 int UNUSED written = 0;
10840 IADDR UNUSED pc = abuf->addr;
10841 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
10842
10843 {
10844 SI tmp_tmpd;
10845 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
10846 {
10847 SI opval = tmp_tmpd;
10848 SET_H_GR (FLD (f_operand2), opval);
10849 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10850 }
10851 {
10852 {
10853 BI opval = LTSI (tmp_tmpd, 0);
10854 CPU (h_nbit) = opval;
10855 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10856 }
10857 {
10858 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10859 CPU (h_zbit) = opval;
10860 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10861 }
10862 SET_H_CBIT_MOVE (0);
10863 SET_H_VBIT_MOVE (0);
10864 {
10865 {
10866 BI opval = 0;
10867 CPU (h_xbit) = opval;
10868 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10869 }
10870 {
10871 BI opval = 0;
10872 SET_H_INSN_PREFIXED_P (opval);
10873 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10874 }
10875 }
10876 }
10877 }
10878
10879 #undef FLD
10880 }
10881 NEXT (vpc);
10882
10883 CASE (sem, INSN_ORQ) : /* orq $i,$Rd */
10884 {
10885 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10886 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10887 #define FLD(f) abuf->fields.sfmt_andq.f
10888 int UNUSED written = 0;
10889 IADDR UNUSED pc = abuf->addr;
10890 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10891
10892 {
10893 SI tmp_tmpd;
10894 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), FLD (f_s6));
10895 {
10896 SI opval = tmp_tmpd;
10897 SET_H_GR (FLD (f_operand2), opval);
10898 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10899 }
10900 {
10901 {
10902 BI opval = LTSI (tmp_tmpd, 0);
10903 CPU (h_nbit) = opval;
10904 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10905 }
10906 {
10907 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10908 CPU (h_zbit) = opval;
10909 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10910 }
10911 SET_H_CBIT_MOVE (0);
10912 SET_H_VBIT_MOVE (0);
10913 {
10914 {
10915 BI opval = 0;
10916 CPU (h_xbit) = opval;
10917 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10918 }
10919 {
10920 BI opval = 0;
10921 SET_H_INSN_PREFIXED_P (opval);
10922 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10923 }
10924 }
10925 }
10926 }
10927
10928 #undef FLD
10929 }
10930 NEXT (vpc);
10931
10932 CASE (sem, INSN_XOR) : /* xor $Rs,$Rd */
10933 {
10934 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10935 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10936 #define FLD(f) abuf->fields.sfmt_muls_b.f
10937 int UNUSED written = 0;
10938 IADDR UNUSED pc = abuf->addr;
10939 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10940
10941 {
10942 SI tmp_tmpd;
10943 tmp_tmpd = XORSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
10944 {
10945 SI opval = tmp_tmpd;
10946 SET_H_GR (FLD (f_operand2), opval);
10947 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10948 }
10949 {
10950 {
10951 BI opval = LTSI (tmp_tmpd, 0);
10952 CPU (h_nbit) = opval;
10953 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10954 }
10955 {
10956 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10957 CPU (h_zbit) = opval;
10958 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10959 }
10960 SET_H_CBIT_MOVE (0);
10961 SET_H_VBIT_MOVE (0);
10962 {
10963 {
10964 BI opval = 0;
10965 CPU (h_xbit) = opval;
10966 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10967 }
10968 {
10969 BI opval = 0;
10970 SET_H_INSN_PREFIXED_P (opval);
10971 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10972 }
10973 }
10974 }
10975 }
10976
10977 #undef FLD
10978 }
10979 NEXT (vpc);
10980
10981 CASE (sem, INSN_SWAP) : /* swap${swapoption} ${Rs} */
10982 {
10983 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10984 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10985 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
10986 int UNUSED written = 0;
10987 IADDR UNUSED pc = abuf->addr;
10988 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10989
10990 {
10991 SI tmp_tmps;
10992 SI tmp_tmpd;
10993 tmp_tmps = GET_H_GR (FLD (f_operand1));
10994 tmp_tmpd = ({ SI tmp_tmpcode;
10995 SI tmp_tmpval;
10996 SI tmp_tmpres;
10997 tmp_tmpcode = FLD (f_operand2);
10998 ; tmp_tmpval = tmp_tmps;
10999 ; if (EQSI (tmp_tmpcode, 0)) {
11000 tmp_tmpres = (cgen_rtx_error (current_cpu, "SWAP without swap modifier isn't implemented"), 0);
11001 }
11002 else if (EQSI (tmp_tmpcode, 1)) {
11003 tmp_tmpres = ({ SI tmp_tmpr;
11004 tmp_tmpr = tmp_tmpval;
11005 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11006 }
11007 else if (EQSI (tmp_tmpcode, 2)) {
11008 tmp_tmpres = ({ SI tmp_tmpb;
11009 tmp_tmpb = tmp_tmpval;
11010 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11011 }
11012 else if (EQSI (tmp_tmpcode, 3)) {
11013 tmp_tmpres = ({ SI tmp_tmpr;
11014 tmp_tmpr = ({ SI tmp_tmpb;
11015 tmp_tmpb = tmp_tmpval;
11016 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11017 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11018 }
11019 else if (EQSI (tmp_tmpcode, 4)) {
11020 tmp_tmpres = ({ SI tmp_tmpb;
11021 tmp_tmpb = tmp_tmpval;
11022 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11023 }
11024 else if (EQSI (tmp_tmpcode, 5)) {
11025 tmp_tmpres = ({ SI tmp_tmpr;
11026 tmp_tmpr = ({ SI tmp_tmpb;
11027 tmp_tmpb = tmp_tmpval;
11028 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11029 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11030 }
11031 else if (EQSI (tmp_tmpcode, 6)) {
11032 tmp_tmpres = ({ SI tmp_tmpb;
11033 tmp_tmpb = ({ SI tmp_tmpb;
11034 tmp_tmpb = tmp_tmpval;
11035 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11036 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11037 }
11038 else if (EQSI (tmp_tmpcode, 7)) {
11039 tmp_tmpres = ({ SI tmp_tmpr;
11040 tmp_tmpr = ({ SI tmp_tmpb;
11041 tmp_tmpb = ({ SI tmp_tmpb;
11042 tmp_tmpb = tmp_tmpval;
11043 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11044 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11045 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11046 }
11047 else if (EQSI (tmp_tmpcode, 8)) {
11048 tmp_tmpres = INVSI (tmp_tmpval);
11049 }
11050 else if (EQSI (tmp_tmpcode, 9)) {
11051 tmp_tmpres = ({ SI tmp_tmpr;
11052 tmp_tmpr = INVSI (tmp_tmpval);
11053 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11054 }
11055 else if (EQSI (tmp_tmpcode, 10)) {
11056 tmp_tmpres = ({ SI tmp_tmpb;
11057 tmp_tmpb = INVSI (tmp_tmpval);
11058 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11059 }
11060 else if (EQSI (tmp_tmpcode, 11)) {
11061 tmp_tmpres = ({ SI tmp_tmpr;
11062 tmp_tmpr = ({ SI tmp_tmpb;
11063 tmp_tmpb = INVSI (tmp_tmpval);
11064 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11065 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11066 }
11067 else if (EQSI (tmp_tmpcode, 12)) {
11068 tmp_tmpres = ({ SI tmp_tmpb;
11069 tmp_tmpb = INVSI (tmp_tmpval);
11070 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11071 }
11072 else if (EQSI (tmp_tmpcode, 13)) {
11073 tmp_tmpres = ({ SI tmp_tmpr;
11074 tmp_tmpr = ({ SI tmp_tmpb;
11075 tmp_tmpb = INVSI (tmp_tmpval);
11076 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11077 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11078 }
11079 else if (EQSI (tmp_tmpcode, 14)) {
11080 tmp_tmpres = ({ SI tmp_tmpb;
11081 tmp_tmpb = ({ SI tmp_tmpb;
11082 tmp_tmpb = INVSI (tmp_tmpval);
11083 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11084 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11085 }
11086 else if (EQSI (tmp_tmpcode, 15)) {
11087 tmp_tmpres = ({ SI tmp_tmpr;
11088 tmp_tmpr = ({ SI tmp_tmpb;
11089 tmp_tmpb = ({ SI tmp_tmpb;
11090 tmp_tmpb = INVSI (tmp_tmpval);
11091 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11092 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11093 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11094 }
11095 ; tmp_tmpres; });
11096 {
11097 SI opval = tmp_tmpd;
11098 SET_H_GR (FLD (f_operand1), opval);
11099 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11100 }
11101 {
11102 {
11103 BI opval = LTSI (tmp_tmpd, 0);
11104 CPU (h_nbit) = opval;
11105 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11106 }
11107 {
11108 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11109 CPU (h_zbit) = opval;
11110 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11111 }
11112 SET_H_CBIT_MOVE (0);
11113 SET_H_VBIT_MOVE (0);
11114 {
11115 {
11116 BI opval = 0;
11117 CPU (h_xbit) = opval;
11118 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11119 }
11120 {
11121 BI opval = 0;
11122 SET_H_INSN_PREFIXED_P (opval);
11123 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11124 }
11125 }
11126 }
11127 }
11128
11129 #undef FLD
11130 }
11131 NEXT (vpc);
11132
11133 CASE (sem, INSN_ASRR_B_R) : /* asrr.b $Rs,$Rd */
11134 {
11135 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11137 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11138 int UNUSED written = 0;
11139 IADDR UNUSED pc = abuf->addr;
11140 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11141
11142 {
11143 QI tmp_tmpd;
11144 SI tmp_cnt1;
11145 SI tmp_cnt2;
11146 tmp_cnt1 = GET_H_GR (FLD (f_operand1));
11147 tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
11148 tmp_tmpd = SRASI (EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
11149 {
11150 SI tmp_oldregval;
11151 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11152 {
11153 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
11154 SET_H_GR (FLD (f_operand2), opval);
11155 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11156 }
11157 }
11158 {
11159 {
11160 BI opval = LTQI (tmp_tmpd, 0);
11161 CPU (h_nbit) = opval;
11162 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11163 }
11164 {
11165 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11166 CPU (h_zbit) = opval;
11167 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11168 }
11169 SET_H_CBIT_MOVE (0);
11170 SET_H_VBIT_MOVE (0);
11171 {
11172 {
11173 BI opval = 0;
11174 CPU (h_xbit) = opval;
11175 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11176 }
11177 {
11178 BI opval = 0;
11179 SET_H_INSN_PREFIXED_P (opval);
11180 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11181 }
11182 }
11183 }
11184 }
11185
11186 #undef FLD
11187 }
11188 NEXT (vpc);
11189
11190 CASE (sem, INSN_ASRR_W_R) : /* asrr.w $Rs,$Rd */
11191 {
11192 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11193 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11194 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11195 int UNUSED written = 0;
11196 IADDR UNUSED pc = abuf->addr;
11197 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11198
11199 {
11200 HI tmp_tmpd;
11201 SI tmp_cnt1;
11202 SI tmp_cnt2;
11203 tmp_cnt1 = GET_H_GR (FLD (f_operand1));
11204 tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
11205 tmp_tmpd = SRASI (EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
11206 {
11207 SI tmp_oldregval;
11208 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11209 {
11210 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
11211 SET_H_GR (FLD (f_operand2), opval);
11212 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11213 }
11214 }
11215 {
11216 {
11217 BI opval = LTHI (tmp_tmpd, 0);
11218 CPU (h_nbit) = opval;
11219 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11220 }
11221 {
11222 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11223 CPU (h_zbit) = opval;
11224 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11225 }
11226 SET_H_CBIT_MOVE (0);
11227 SET_H_VBIT_MOVE (0);
11228 {
11229 {
11230 BI opval = 0;
11231 CPU (h_xbit) = opval;
11232 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11233 }
11234 {
11235 BI opval = 0;
11236 SET_H_INSN_PREFIXED_P (opval);
11237 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11238 }
11239 }
11240 }
11241 }
11242
11243 #undef FLD
11244 }
11245 NEXT (vpc);
11246
11247 CASE (sem, INSN_ASRR_D_R) : /* asrr.d $Rs,$Rd */
11248 {
11249 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11250 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11251 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11252 int UNUSED written = 0;
11253 IADDR UNUSED pc = abuf->addr;
11254 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11255
11256 {
11257 SI tmp_tmpd;
11258 SI tmp_cnt1;
11259 SI tmp_cnt2;
11260 tmp_cnt1 = GET_H_GR (FLD (f_operand1));
11261 tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
11262 tmp_tmpd = SRASI (EXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
11263 {
11264 SI opval = tmp_tmpd;
11265 SET_H_GR (FLD (f_operand2), opval);
11266 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11267 }
11268 {
11269 {
11270 BI opval = LTSI (tmp_tmpd, 0);
11271 CPU (h_nbit) = opval;
11272 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11273 }
11274 {
11275 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11276 CPU (h_zbit) = opval;
11277 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11278 }
11279 SET_H_CBIT_MOVE (0);
11280 SET_H_VBIT_MOVE (0);
11281 {
11282 {
11283 BI opval = 0;
11284 CPU (h_xbit) = opval;
11285 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11286 }
11287 {
11288 BI opval = 0;
11289 SET_H_INSN_PREFIXED_P (opval);
11290 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11291 }
11292 }
11293 }
11294 }
11295
11296 #undef FLD
11297 }
11298 NEXT (vpc);
11299
11300 CASE (sem, INSN_ASRQ) : /* asrq $c,${Rd} */
11301 {
11302 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11304 #define FLD(f) abuf->fields.sfmt_asrq.f
11305 int UNUSED written = 0;
11306 IADDR UNUSED pc = abuf->addr;
11307 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11308
11309 {
11310 SI tmp_tmpd;
11311 tmp_tmpd = SRASI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
11312 {
11313 SI opval = tmp_tmpd;
11314 SET_H_GR (FLD (f_operand2), opval);
11315 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11316 }
11317 {
11318 {
11319 BI opval = LTSI (tmp_tmpd, 0);
11320 CPU (h_nbit) = opval;
11321 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11322 }
11323 {
11324 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11325 CPU (h_zbit) = opval;
11326 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11327 }
11328 SET_H_CBIT_MOVE (0);
11329 SET_H_VBIT_MOVE (0);
11330 {
11331 {
11332 BI opval = 0;
11333 CPU (h_xbit) = opval;
11334 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11335 }
11336 {
11337 BI opval = 0;
11338 SET_H_INSN_PREFIXED_P (opval);
11339 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11340 }
11341 }
11342 }
11343 }
11344
11345 #undef FLD
11346 }
11347 NEXT (vpc);
11348
11349 CASE (sem, INSN_LSRR_B_R) : /* lsrr.b $Rs,$Rd */
11350 {
11351 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11352 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11353 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11354 int UNUSED written = 0;
11355 IADDR UNUSED pc = abuf->addr;
11356 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11357
11358 {
11359 SI tmp_tmpd;
11360 SI tmp_cnt;
11361 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11362 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SRLSI (ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11363 {
11364 SI tmp_oldregval;
11365 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11366 {
11367 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
11368 SET_H_GR (FLD (f_operand2), opval);
11369 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11370 }
11371 }
11372 {
11373 {
11374 BI opval = LTQI (tmp_tmpd, 0);
11375 CPU (h_nbit) = opval;
11376 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11377 }
11378 {
11379 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11380 CPU (h_zbit) = opval;
11381 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11382 }
11383 SET_H_CBIT_MOVE (0);
11384 SET_H_VBIT_MOVE (0);
11385 {
11386 {
11387 BI opval = 0;
11388 CPU (h_xbit) = opval;
11389 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11390 }
11391 {
11392 BI opval = 0;
11393 SET_H_INSN_PREFIXED_P (opval);
11394 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11395 }
11396 }
11397 }
11398 }
11399
11400 #undef FLD
11401 }
11402 NEXT (vpc);
11403
11404 CASE (sem, INSN_LSRR_W_R) : /* lsrr.w $Rs,$Rd */
11405 {
11406 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11407 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11408 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11409 int UNUSED written = 0;
11410 IADDR UNUSED pc = abuf->addr;
11411 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11412
11413 {
11414 SI tmp_tmpd;
11415 SI tmp_cnt;
11416 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11417 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SRLSI (ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11418 {
11419 SI tmp_oldregval;
11420 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11421 {
11422 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
11423 SET_H_GR (FLD (f_operand2), opval);
11424 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11425 }
11426 }
11427 {
11428 {
11429 BI opval = LTHI (tmp_tmpd, 0);
11430 CPU (h_nbit) = opval;
11431 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11432 }
11433 {
11434 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11435 CPU (h_zbit) = opval;
11436 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11437 }
11438 SET_H_CBIT_MOVE (0);
11439 SET_H_VBIT_MOVE (0);
11440 {
11441 {
11442 BI opval = 0;
11443 CPU (h_xbit) = opval;
11444 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11445 }
11446 {
11447 BI opval = 0;
11448 SET_H_INSN_PREFIXED_P (opval);
11449 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11450 }
11451 }
11452 }
11453 }
11454
11455 #undef FLD
11456 }
11457 NEXT (vpc);
11458
11459 CASE (sem, INSN_LSRR_D_R) : /* lsrr.d $Rs,$Rd */
11460 {
11461 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11462 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11463 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11464 int UNUSED written = 0;
11465 IADDR UNUSED pc = abuf->addr;
11466 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11467
11468 {
11469 SI tmp_tmpd;
11470 SI tmp_cnt;
11471 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11472 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SRLSI (ZEXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11473 {
11474 SI opval = tmp_tmpd;
11475 SET_H_GR (FLD (f_operand2), opval);
11476 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11477 }
11478 {
11479 {
11480 BI opval = LTSI (tmp_tmpd, 0);
11481 CPU (h_nbit) = opval;
11482 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11483 }
11484 {
11485 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11486 CPU (h_zbit) = opval;
11487 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11488 }
11489 SET_H_CBIT_MOVE (0);
11490 SET_H_VBIT_MOVE (0);
11491 {
11492 {
11493 BI opval = 0;
11494 CPU (h_xbit) = opval;
11495 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11496 }
11497 {
11498 BI opval = 0;
11499 SET_H_INSN_PREFIXED_P (opval);
11500 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11501 }
11502 }
11503 }
11504 }
11505
11506 #undef FLD
11507 }
11508 NEXT (vpc);
11509
11510 CASE (sem, INSN_LSRQ) : /* lsrq $c,${Rd} */
11511 {
11512 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11513 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11514 #define FLD(f) abuf->fields.sfmt_asrq.f
11515 int UNUSED written = 0;
11516 IADDR UNUSED pc = abuf->addr;
11517 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11518
11519 {
11520 SI tmp_tmpd;
11521 tmp_tmpd = SRLSI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
11522 {
11523 SI opval = tmp_tmpd;
11524 SET_H_GR (FLD (f_operand2), opval);
11525 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11526 }
11527 {
11528 {
11529 BI opval = LTSI (tmp_tmpd, 0);
11530 CPU (h_nbit) = opval;
11531 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11532 }
11533 {
11534 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11535 CPU (h_zbit) = opval;
11536 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11537 }
11538 SET_H_CBIT_MOVE (0);
11539 SET_H_VBIT_MOVE (0);
11540 {
11541 {
11542 BI opval = 0;
11543 CPU (h_xbit) = opval;
11544 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11545 }
11546 {
11547 BI opval = 0;
11548 SET_H_INSN_PREFIXED_P (opval);
11549 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11550 }
11551 }
11552 }
11553 }
11554
11555 #undef FLD
11556 }
11557 NEXT (vpc);
11558
11559 CASE (sem, INSN_LSLR_B_R) : /* lslr.b $Rs,$Rd */
11560 {
11561 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11562 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11563 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11564 int UNUSED written = 0;
11565 IADDR UNUSED pc = abuf->addr;
11566 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11567
11568 {
11569 SI tmp_tmpd;
11570 SI tmp_cnt;
11571 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11572 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SLLSI (ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11573 {
11574 SI tmp_oldregval;
11575 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11576 {
11577 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
11578 SET_H_GR (FLD (f_operand2), opval);
11579 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11580 }
11581 }
11582 {
11583 {
11584 BI opval = LTQI (tmp_tmpd, 0);
11585 CPU (h_nbit) = opval;
11586 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11587 }
11588 {
11589 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11590 CPU (h_zbit) = opval;
11591 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11592 }
11593 SET_H_CBIT_MOVE (0);
11594 SET_H_VBIT_MOVE (0);
11595 {
11596 {
11597 BI opval = 0;
11598 CPU (h_xbit) = opval;
11599 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11600 }
11601 {
11602 BI opval = 0;
11603 SET_H_INSN_PREFIXED_P (opval);
11604 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11605 }
11606 }
11607 }
11608 }
11609
11610 #undef FLD
11611 }
11612 NEXT (vpc);
11613
11614 CASE (sem, INSN_LSLR_W_R) : /* lslr.w $Rs,$Rd */
11615 {
11616 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11618 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11619 int UNUSED written = 0;
11620 IADDR UNUSED pc = abuf->addr;
11621 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11622
11623 {
11624 SI tmp_tmpd;
11625 SI tmp_cnt;
11626 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11627 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SLLSI (ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11628 {
11629 SI tmp_oldregval;
11630 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11631 {
11632 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
11633 SET_H_GR (FLD (f_operand2), opval);
11634 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11635 }
11636 }
11637 {
11638 {
11639 BI opval = LTHI (tmp_tmpd, 0);
11640 CPU (h_nbit) = opval;
11641 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11642 }
11643 {
11644 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11645 CPU (h_zbit) = opval;
11646 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11647 }
11648 SET_H_CBIT_MOVE (0);
11649 SET_H_VBIT_MOVE (0);
11650 {
11651 {
11652 BI opval = 0;
11653 CPU (h_xbit) = opval;
11654 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11655 }
11656 {
11657 BI opval = 0;
11658 SET_H_INSN_PREFIXED_P (opval);
11659 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11660 }
11661 }
11662 }
11663 }
11664
11665 #undef FLD
11666 }
11667 NEXT (vpc);
11668
11669 CASE (sem, INSN_LSLR_D_R) : /* lslr.d $Rs,$Rd */
11670 {
11671 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11672 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11673 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11674 int UNUSED written = 0;
11675 IADDR UNUSED pc = abuf->addr;
11676 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11677
11678 {
11679 SI tmp_tmpd;
11680 SI tmp_cnt;
11681 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11682 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SLLSI (ZEXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11683 {
11684 SI opval = tmp_tmpd;
11685 SET_H_GR (FLD (f_operand2), opval);
11686 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11687 }
11688 {
11689 {
11690 BI opval = LTSI (tmp_tmpd, 0);
11691 CPU (h_nbit) = opval;
11692 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11693 }
11694 {
11695 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11696 CPU (h_zbit) = opval;
11697 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11698 }
11699 SET_H_CBIT_MOVE (0);
11700 SET_H_VBIT_MOVE (0);
11701 {
11702 {
11703 BI opval = 0;
11704 CPU (h_xbit) = opval;
11705 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11706 }
11707 {
11708 BI opval = 0;
11709 SET_H_INSN_PREFIXED_P (opval);
11710 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11711 }
11712 }
11713 }
11714 }
11715
11716 #undef FLD
11717 }
11718 NEXT (vpc);
11719
11720 CASE (sem, INSN_LSLQ) : /* lslq $c,${Rd} */
11721 {
11722 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11723 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11724 #define FLD(f) abuf->fields.sfmt_asrq.f
11725 int UNUSED written = 0;
11726 IADDR UNUSED pc = abuf->addr;
11727 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11728
11729 {
11730 SI tmp_tmpd;
11731 tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
11732 {
11733 SI opval = tmp_tmpd;
11734 SET_H_GR (FLD (f_operand2), opval);
11735 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11736 }
11737 {
11738 {
11739 BI opval = LTSI (tmp_tmpd, 0);
11740 CPU (h_nbit) = opval;
11741 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11742 }
11743 {
11744 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11745 CPU (h_zbit) = opval;
11746 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11747 }
11748 SET_H_CBIT_MOVE (0);
11749 SET_H_VBIT_MOVE (0);
11750 {
11751 {
11752 BI opval = 0;
11753 CPU (h_xbit) = opval;
11754 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11755 }
11756 {
11757 BI opval = 0;
11758 SET_H_INSN_PREFIXED_P (opval);
11759 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11760 }
11761 }
11762 }
11763 }
11764
11765 #undef FLD
11766 }
11767 NEXT (vpc);
11768
11769 CASE (sem, INSN_BTST) : /* $Rs,$Rd */
11770 {
11771 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11772 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11773 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11774 int UNUSED written = 0;
11775 IADDR UNUSED pc = abuf->addr;
11776 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11777
11778 {
11779 SI tmp_tmpd;
11780 SI tmp_cnt;
11781 tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), SUBSI (31, ANDSI (GET_H_GR (FLD (f_operand1)), 31)));
11782 {
11783 {
11784 BI opval = LTSI (tmp_tmpd, 0);
11785 CPU (h_nbit) = opval;
11786 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11787 }
11788 {
11789 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11790 CPU (h_zbit) = opval;
11791 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11792 }
11793 SET_H_CBIT_MOVE (0);
11794 SET_H_VBIT_MOVE (0);
11795 {
11796 {
11797 BI opval = 0;
11798 CPU (h_xbit) = opval;
11799 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11800 }
11801 {
11802 BI opval = 0;
11803 SET_H_INSN_PREFIXED_P (opval);
11804 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11805 }
11806 }
11807 }
11808 }
11809
11810 #undef FLD
11811 }
11812 NEXT (vpc);
11813
11814 CASE (sem, INSN_BTSTQ) : /* btstq $c,${Rd} */
11815 {
11816 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11818 #define FLD(f) abuf->fields.sfmt_asrq.f
11819 int UNUSED written = 0;
11820 IADDR UNUSED pc = abuf->addr;
11821 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11822
11823 {
11824 SI tmp_tmpd;
11825 tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), SUBSI (31, FLD (f_u5)));
11826 {
11827 {
11828 BI opval = LTSI (tmp_tmpd, 0);
11829 CPU (h_nbit) = opval;
11830 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11831 }
11832 {
11833 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11834 CPU (h_zbit) = opval;
11835 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11836 }
11837 SET_H_CBIT_MOVE (0);
11838 SET_H_VBIT_MOVE (0);
11839 {
11840 {
11841 BI opval = 0;
11842 CPU (h_xbit) = opval;
11843 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11844 }
11845 {
11846 BI opval = 0;
11847 SET_H_INSN_PREFIXED_P (opval);
11848 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11849 }
11850 }
11851 }
11852 }
11853
11854 #undef FLD
11855 }
11856 NEXT (vpc);
11857
11858 CASE (sem, INSN_SETF) : /* setf ${list-of-flags} */
11859 {
11860 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11861 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11862 #define FLD(f) abuf->fields.sfmt_setf.f
11863 int UNUSED written = 0;
11864 IADDR UNUSED pc = abuf->addr;
11865 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11866
11867 {
11868 SI tmp_tmp;
11869 tmp_tmp = FLD (f_dstsrc);
11870 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 0)), 0)) {
11871 {
11872 BI opval = 1;
11873 CPU (h_cbit) = opval;
11874 written |= (1 << 1);
11875 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
11876 }
11877 }
11878 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 1)), 0)) {
11879 {
11880 BI opval = 1;
11881 CPU (h_vbit) = opval;
11882 written |= (1 << 7);
11883 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
11884 }
11885 }
11886 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 2)), 0)) {
11887 {
11888 BI opval = 1;
11889 CPU (h_zbit) = opval;
11890 written |= (1 << 9);
11891 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11892 }
11893 }
11894 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 3)), 0)) {
11895 {
11896 BI opval = 1;
11897 CPU (h_nbit) = opval;
11898 written |= (1 << 3);
11899 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11900 }
11901 }
11902 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
11903 {
11904 BI opval = 1;
11905 CPU (h_xbit) = opval;
11906 written |= (1 << 8);
11907 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11908 }
11909 }
11910 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 5)), 0)) {
11911 {
11912 BI opval = 1;
11913 SET_H_IBIT (opval);
11914 written |= (1 << 2);
11915 TRACE_RESULT (current_cpu, abuf, "ibit", 'x', opval);
11916 }
11917 }
11918 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 6)), 0)) {
11919 {
11920 BI opval = 1;
11921 SET_H_UBIT (opval);
11922 written |= (1 << 6);
11923 TRACE_RESULT (current_cpu, abuf, "ubit", 'x', opval);
11924 }
11925 }
11926 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 7)), 0)) {
11927 {
11928 BI opval = 1;
11929 CPU (h_pbit) = opval;
11930 written |= (1 << 4);
11931 TRACE_RESULT (current_cpu, abuf, "pbit", 'x', opval);
11932 }
11933 }
11934 {
11935 BI opval = 0;
11936 SET_H_INSN_PREFIXED_P (opval);
11937 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11938 }
11939 if (EQSI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
11940 {
11941 BI opval = 0;
11942 CPU (h_xbit) = opval;
11943 written |= (1 << 8);
11944 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11945 }
11946 }
11947 }
11948
11949 abuf->written = written;
11950 #undef FLD
11951 }
11952 NEXT (vpc);
11953
11954 CASE (sem, INSN_CLEARF) : /* clearf ${list-of-flags} */
11955 {
11956 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11957 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11958 #define FLD(f) abuf->fields.sfmt_setf.f
11959 int UNUSED written = 0;
11960 IADDR UNUSED pc = abuf->addr;
11961 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11962
11963 {
11964 SI tmp_tmp;
11965 tmp_tmp = FLD (f_dstsrc);
11966 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 0)), 0)) {
11967 {
11968 BI opval = 0;
11969 CPU (h_cbit) = opval;
11970 written |= (1 << 1);
11971 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
11972 }
11973 }
11974 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 1)), 0)) {
11975 {
11976 BI opval = 0;
11977 CPU (h_vbit) = opval;
11978 written |= (1 << 7);
11979 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
11980 }
11981 }
11982 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 2)), 0)) {
11983 {
11984 BI opval = 0;
11985 CPU (h_zbit) = opval;
11986 written |= (1 << 9);
11987 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11988 }
11989 }
11990 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 3)), 0)) {
11991 {
11992 BI opval = 0;
11993 CPU (h_nbit) = opval;
11994 written |= (1 << 3);
11995 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11996 }
11997 }
11998 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
11999 {
12000 BI opval = 0;
12001 CPU (h_xbit) = opval;
12002 written |= (1 << 8);
12003 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12004 }
12005 }
12006 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 5)), 0)) {
12007 {
12008 BI opval = 0;
12009 SET_H_IBIT (opval);
12010 written |= (1 << 2);
12011 TRACE_RESULT (current_cpu, abuf, "ibit", 'x', opval);
12012 }
12013 }
12014 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 6)), 0)) {
12015 {
12016 BI opval = 0;
12017 SET_H_UBIT (opval);
12018 written |= (1 << 6);
12019 TRACE_RESULT (current_cpu, abuf, "ubit", 'x', opval);
12020 }
12021 }
12022 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 7)), 0)) {
12023 {
12024 BI opval = 0;
12025 CPU (h_pbit) = opval;
12026 written |= (1 << 4);
12027 TRACE_RESULT (current_cpu, abuf, "pbit", 'x', opval);
12028 }
12029 }
12030 {
12031 {
12032 BI opval = 0;
12033 CPU (h_xbit) = opval;
12034 written |= (1 << 8);
12035 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12036 }
12037 {
12038 BI opval = 0;
12039 SET_H_INSN_PREFIXED_P (opval);
12040 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12041 }
12042 }
12043 }
12044
12045 abuf->written = written;
12046 #undef FLD
12047 }
12048 NEXT (vpc);
12049
12050 CASE (sem, INSN_BCC_B) : /* b${cc} ${o-pcrel} */
12051 {
12052 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12053 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12054 #define FLD(f) abuf->fields.sfmt_bcc_b.f
12055 int UNUSED written = 0;
12056 IADDR UNUSED pc = abuf->addr;
12057 SEM_BRANCH_INIT
12058 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12059
12060 {
12061 BI tmp_truthval;
12062 tmp_truthval = ({ SI tmp_tmpcond;
12063 BI tmp_condres;
12064 tmp_tmpcond = FLD (f_operand2);
12065 ; if (EQSI (tmp_tmpcond, 0)) {
12066 tmp_condres = NOTBI (CPU (h_cbit));
12067 }
12068 else if (EQSI (tmp_tmpcond, 1)) {
12069 tmp_condres = CPU (h_cbit);
12070 }
12071 else if (EQSI (tmp_tmpcond, 2)) {
12072 tmp_condres = NOTBI (CPU (h_zbit));
12073 }
12074 else if (EQSI (tmp_tmpcond, 3)) {
12075 tmp_condres = CPU (h_zbit);
12076 }
12077 else if (EQSI (tmp_tmpcond, 4)) {
12078 tmp_condres = NOTBI (CPU (h_vbit));
12079 }
12080 else if (EQSI (tmp_tmpcond, 5)) {
12081 tmp_condres = CPU (h_vbit);
12082 }
12083 else if (EQSI (tmp_tmpcond, 6)) {
12084 tmp_condres = NOTBI (CPU (h_nbit));
12085 }
12086 else if (EQSI (tmp_tmpcond, 7)) {
12087 tmp_condres = CPU (h_nbit);
12088 }
12089 else if (EQSI (tmp_tmpcond, 8)) {
12090 tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
12091 }
12092 else if (EQSI (tmp_tmpcond, 9)) {
12093 tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
12094 }
12095 else if (EQSI (tmp_tmpcond, 10)) {
12096 tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
12097 }
12098 else if (EQSI (tmp_tmpcond, 11)) {
12099 tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
12100 }
12101 else if (EQSI (tmp_tmpcond, 12)) {
12102 tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
12103 }
12104 else if (EQSI (tmp_tmpcond, 13)) {
12105 tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
12106 }
12107 else if (EQSI (tmp_tmpcond, 14)) {
12108 tmp_condres = 1;
12109 }
12110 else if (EQSI (tmp_tmpcond, 15)) {
12111 tmp_condres = CPU (h_pbit);
12112 }
12113 ; tmp_condres; });
12114 crisv10f_branch_taken (current_cpu, pc, FLD (i_o_pcrel), tmp_truthval);
12115 {
12116 {
12117 BI opval = 0;
12118 CPU (h_xbit) = opval;
12119 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12120 }
12121 {
12122 BI opval = 0;
12123 SET_H_INSN_PREFIXED_P (opval);
12124 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12125 }
12126 }
12127 if (tmp_truthval) {
12128 {
12129 {
12130 USI opval = FLD (i_o_pcrel);
12131 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
12132 written |= (1 << 8);
12133 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12134 }
12135 }
12136 }
12137 }
12138
12139 abuf->written = written;
12140 SEM_BRANCH_FINI (vpc);
12141 #undef FLD
12142 }
12143 NEXT (vpc);
12144
12145 CASE (sem, INSN_BA_B) : /* ba ${o-pcrel} */
12146 {
12147 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12148 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12149 #define FLD(f) abuf->fields.sfmt_bcc_b.f
12150 int UNUSED written = 0;
12151 IADDR UNUSED pc = abuf->addr;
12152 SEM_BRANCH_INIT
12153 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12154
12155 {
12156 {
12157 {
12158 BI opval = 0;
12159 CPU (h_xbit) = opval;
12160 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12161 }
12162 {
12163 BI opval = 0;
12164 SET_H_INSN_PREFIXED_P (opval);
12165 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12166 }
12167 }
12168 {
12169 {
12170 USI opval = FLD (i_o_pcrel);
12171 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
12172 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12173 }
12174 }
12175 }
12176
12177 SEM_BRANCH_FINI (vpc);
12178 #undef FLD
12179 }
12180 NEXT (vpc);
12181
12182 CASE (sem, INSN_BCC_W) : /* b${cc} ${o-word-pcrel} */
12183 {
12184 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12186 #define FLD(f) abuf->fields.sfmt_bcc_w.f
12187 int UNUSED written = 0;
12188 IADDR UNUSED pc = abuf->addr;
12189 SEM_BRANCH_INIT
12190 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12191
12192 {
12193 BI tmp_truthval;
12194 tmp_truthval = ({ SI tmp_tmpcond;
12195 BI tmp_condres;
12196 tmp_tmpcond = FLD (f_operand2);
12197 ; if (EQSI (tmp_tmpcond, 0)) {
12198 tmp_condres = NOTBI (CPU (h_cbit));
12199 }
12200 else if (EQSI (tmp_tmpcond, 1)) {
12201 tmp_condres = CPU (h_cbit);
12202 }
12203 else if (EQSI (tmp_tmpcond, 2)) {
12204 tmp_condres = NOTBI (CPU (h_zbit));
12205 }
12206 else if (EQSI (tmp_tmpcond, 3)) {
12207 tmp_condres = CPU (h_zbit);
12208 }
12209 else if (EQSI (tmp_tmpcond, 4)) {
12210 tmp_condres = NOTBI (CPU (h_vbit));
12211 }
12212 else if (EQSI (tmp_tmpcond, 5)) {
12213 tmp_condres = CPU (h_vbit);
12214 }
12215 else if (EQSI (tmp_tmpcond, 6)) {
12216 tmp_condres = NOTBI (CPU (h_nbit));
12217 }
12218 else if (EQSI (tmp_tmpcond, 7)) {
12219 tmp_condres = CPU (h_nbit);
12220 }
12221 else if (EQSI (tmp_tmpcond, 8)) {
12222 tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
12223 }
12224 else if (EQSI (tmp_tmpcond, 9)) {
12225 tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
12226 }
12227 else if (EQSI (tmp_tmpcond, 10)) {
12228 tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
12229 }
12230 else if (EQSI (tmp_tmpcond, 11)) {
12231 tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
12232 }
12233 else if (EQSI (tmp_tmpcond, 12)) {
12234 tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
12235 }
12236 else if (EQSI (tmp_tmpcond, 13)) {
12237 tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
12238 }
12239 else if (EQSI (tmp_tmpcond, 14)) {
12240 tmp_condres = 1;
12241 }
12242 else if (EQSI (tmp_tmpcond, 15)) {
12243 tmp_condres = CPU (h_pbit);
12244 }
12245 ; tmp_condres; });
12246 crisv10f_branch_taken (current_cpu, pc, FLD (i_o_word_pcrel), tmp_truthval);
12247 {
12248 {
12249 BI opval = 0;
12250 CPU (h_xbit) = opval;
12251 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12252 }
12253 {
12254 BI opval = 0;
12255 SET_H_INSN_PREFIXED_P (opval);
12256 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12257 }
12258 }
12259 if (tmp_truthval) {
12260 {
12261 {
12262 USI opval = FLD (i_o_word_pcrel);
12263 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
12264 written |= (1 << 8);
12265 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12266 }
12267 }
12268 }
12269 }
12270
12271 abuf->written = written;
12272 SEM_BRANCH_FINI (vpc);
12273 #undef FLD
12274 }
12275 NEXT (vpc);
12276
12277 CASE (sem, INSN_BA_W) : /* ba ${o-word-pcrel} */
12278 {
12279 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12280 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12281 #define FLD(f) abuf->fields.sfmt_bcc_w.f
12282 int UNUSED written = 0;
12283 IADDR UNUSED pc = abuf->addr;
12284 SEM_BRANCH_INIT
12285 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12286
12287 {
12288 {
12289 {
12290 BI opval = 0;
12291 CPU (h_xbit) = opval;
12292 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12293 }
12294 {
12295 BI opval = 0;
12296 SET_H_INSN_PREFIXED_P (opval);
12297 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12298 }
12299 }
12300 {
12301 {
12302 USI opval = FLD (i_o_word_pcrel);
12303 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
12304 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12305 }
12306 }
12307 }
12308
12309 SEM_BRANCH_FINI (vpc);
12310 #undef FLD
12311 }
12312 NEXT (vpc);
12313
12314 CASE (sem, INSN_JUMP_R) : /* jump/jsr/jir ${Rs} */
12315 {
12316 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12317 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12318 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
12319 int UNUSED written = 0;
12320 IADDR UNUSED pc = abuf->addr;
12321 SEM_BRANCH_INIT
12322 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12323
12324 {
12325 {
12326 SI opval = ADDSI (pc, 2);
12327 SET_H_SR (FLD (f_operand2), opval);
12328 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
12329 }
12330 {
12331 USI opval = GET_H_GR (FLD (f_operand1));
12332 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
12333 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12334 }
12335 {
12336 {
12337 BI opval = 0;
12338 CPU (h_xbit) = opval;
12339 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12340 }
12341 {
12342 BI opval = 0;
12343 SET_H_INSN_PREFIXED_P (opval);
12344 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12345 }
12346 }
12347 }
12348
12349 SEM_BRANCH_FINI (vpc);
12350 #undef FLD
12351 }
12352 NEXT (vpc);
12353
12354 CASE (sem, INSN_JUMP_M) : /* jump/jsr/jir [${Rs}${inc}] */
12355 {
12356 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12357 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12358 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
12359 int UNUSED written = 0;
12360 IADDR UNUSED pc = abuf->addr;
12361 SEM_BRANCH_INIT
12362 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12363
12364 {
12365 {
12366 SI opval = ADDSI (pc, 2);
12367 SET_H_SR (FLD (f_operand2), opval);
12368 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
12369 }
12370 {
12371 USI opval = ({ SI tmp_addr;
12372 SI tmp_tmp_mem;
12373 BI tmp_postinc;
12374 tmp_postinc = FLD (f_memmode);
12375 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
12376 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
12377 ; if (NEBI (tmp_postinc, 0)) {
12378 {
12379 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
12380 tmp_addr = ADDSI (tmp_addr, 4);
12381 }
12382 {
12383 SI opval = tmp_addr;
12384 SET_H_GR (FLD (f_operand1), opval);
12385 written |= (1 << 7);
12386 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12387 }
12388 }
12389 }
12390 ; tmp_tmp_mem; });
12391 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
12392 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12393 }
12394 {
12395 {
12396 BI opval = 0;
12397 CPU (h_xbit) = opval;
12398 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12399 }
12400 {
12401 BI opval = 0;
12402 SET_H_INSN_PREFIXED_P (opval);
12403 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12404 }
12405 }
12406 }
12407
12408 abuf->written = written;
12409 SEM_BRANCH_FINI (vpc);
12410 #undef FLD
12411 }
12412 NEXT (vpc);
12413
12414 CASE (sem, INSN_JUMP_C) : /* jump/jsr/jir ${const32} */
12415 {
12416 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12417 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12418 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
12419 int UNUSED written = 0;
12420 IADDR UNUSED pc = abuf->addr;
12421 SEM_BRANCH_INIT
12422 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
12423
12424 {
12425 {
12426 SI opval = ADDSI (pc, 6);
12427 SET_H_SR (FLD (f_operand2), opval);
12428 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
12429 }
12430 {
12431 USI opval = FLD (f_indir_pc__dword);
12432 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
12433 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12434 }
12435 {
12436 {
12437 BI opval = 0;
12438 CPU (h_xbit) = opval;
12439 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12440 }
12441 {
12442 BI opval = 0;
12443 SET_H_INSN_PREFIXED_P (opval);
12444 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12445 }
12446 }
12447 }
12448
12449 SEM_BRANCH_FINI (vpc);
12450 #undef FLD
12451 }
12452 NEXT (vpc);
12453
12454 CASE (sem, INSN_BREAK) : /* break $n */
12455 {
12456 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12457 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12458 #define FLD(f) abuf->fields.sfmt_break.f
12459 int UNUSED written = 0;
12460 IADDR UNUSED pc = abuf->addr;
12461 SEM_BRANCH_INIT
12462 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12463
12464 {
12465 {
12466 {
12467 BI opval = 0;
12468 CPU (h_xbit) = opval;
12469 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12470 }
12471 {
12472 BI opval = 0;
12473 SET_H_INSN_PREFIXED_P (opval);
12474 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12475 }
12476 }
12477 {
12478 USI opval = crisv10f_break_handler (current_cpu, FLD (f_u4), pc);
12479 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
12480 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12481 }
12482 }
12483
12484 SEM_BRANCH_FINI (vpc);
12485 #undef FLD
12486 }
12487 NEXT (vpc);
12488
12489 CASE (sem, INSN_BOUND_R_B_R) : /* bound-r.b ${Rs},${Rd} */
12490 {
12491 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12492 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12493 #define FLD(f) abuf->fields.sfmt_muls_b.f
12494 int UNUSED written = 0;
12495 IADDR UNUSED pc = abuf->addr;
12496 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12497
12498 {
12499 SI tmp_tmpopd;
12500 SI tmp_tmpops;
12501 SI tmp_newval;
12502 tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
12503 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12504 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12505 {
12506 SI opval = tmp_newval;
12507 SET_H_GR (FLD (f_operand2), opval);
12508 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12509 }
12510 {
12511 {
12512 BI opval = LTSI (tmp_newval, 0);
12513 CPU (h_nbit) = opval;
12514 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12515 }
12516 {
12517 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12518 CPU (h_zbit) = opval;
12519 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12520 }
12521 SET_H_CBIT_MOVE (0);
12522 SET_H_VBIT_MOVE (0);
12523 {
12524 {
12525 BI opval = 0;
12526 CPU (h_xbit) = opval;
12527 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12528 }
12529 {
12530 BI opval = 0;
12531 SET_H_INSN_PREFIXED_P (opval);
12532 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12533 }
12534 }
12535 }
12536 }
12537
12538 #undef FLD
12539 }
12540 NEXT (vpc);
12541
12542 CASE (sem, INSN_BOUND_R_W_R) : /* bound-r.w ${Rs},${Rd} */
12543 {
12544 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12545 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12546 #define FLD(f) abuf->fields.sfmt_muls_b.f
12547 int UNUSED written = 0;
12548 IADDR UNUSED pc = abuf->addr;
12549 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12550
12551 {
12552 SI tmp_tmpopd;
12553 SI tmp_tmpops;
12554 SI tmp_newval;
12555 tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
12556 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12557 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12558 {
12559 SI opval = tmp_newval;
12560 SET_H_GR (FLD (f_operand2), opval);
12561 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12562 }
12563 {
12564 {
12565 BI opval = LTSI (tmp_newval, 0);
12566 CPU (h_nbit) = opval;
12567 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12568 }
12569 {
12570 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12571 CPU (h_zbit) = opval;
12572 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12573 }
12574 SET_H_CBIT_MOVE (0);
12575 SET_H_VBIT_MOVE (0);
12576 {
12577 {
12578 BI opval = 0;
12579 CPU (h_xbit) = opval;
12580 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12581 }
12582 {
12583 BI opval = 0;
12584 SET_H_INSN_PREFIXED_P (opval);
12585 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12586 }
12587 }
12588 }
12589 }
12590
12591 #undef FLD
12592 }
12593 NEXT (vpc);
12594
12595 CASE (sem, INSN_BOUND_R_D_R) : /* bound-r.d ${Rs},${Rd} */
12596 {
12597 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12598 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12599 #define FLD(f) abuf->fields.sfmt_muls_b.f
12600 int UNUSED written = 0;
12601 IADDR UNUSED pc = abuf->addr;
12602 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12603
12604 {
12605 SI tmp_tmpopd;
12606 SI tmp_tmpops;
12607 SI tmp_newval;
12608 tmp_tmpops = TRUNCSISI (GET_H_GR (FLD (f_operand1)));
12609 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12610 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12611 {
12612 SI opval = tmp_newval;
12613 SET_H_GR (FLD (f_operand2), opval);
12614 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12615 }
12616 {
12617 {
12618 BI opval = LTSI (tmp_newval, 0);
12619 CPU (h_nbit) = opval;
12620 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12621 }
12622 {
12623 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12624 CPU (h_zbit) = opval;
12625 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12626 }
12627 SET_H_CBIT_MOVE (0);
12628 SET_H_VBIT_MOVE (0);
12629 {
12630 {
12631 BI opval = 0;
12632 CPU (h_xbit) = opval;
12633 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12634 }
12635 {
12636 BI opval = 0;
12637 SET_H_INSN_PREFIXED_P (opval);
12638 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12639 }
12640 }
12641 }
12642 }
12643
12644 #undef FLD
12645 }
12646 NEXT (vpc);
12647
12648 CASE (sem, INSN_BOUND_M_B_M) : /* bound-m.b [${Rs}${inc}],${Rd} */
12649 {
12650 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12651 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12652 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
12653 int UNUSED written = 0;
12654 IADDR UNUSED pc = abuf->addr;
12655 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12656
12657 {
12658 SI tmp_tmpopd;
12659 SI tmp_tmpops;
12660 SI tmp_newval;
12661 tmp_tmpops = ZEXTQISI (({ SI tmp_addr;
12662 QI tmp_tmp_mem;
12663 BI tmp_postinc;
12664 tmp_postinc = FLD (f_memmode);
12665 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
12666 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
12667 ; if (NEBI (tmp_postinc, 0)) {
12668 {
12669 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
12670 tmp_addr = ADDSI (tmp_addr, 1);
12671 }
12672 {
12673 SI opval = tmp_addr;
12674 SET_H_GR (FLD (f_operand1), opval);
12675 written |= (1 << 9);
12676 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12677 }
12678 }
12679 }
12680 ; tmp_tmp_mem; }));
12681 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12682 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12683 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
12684 {
12685 SI opval = tmp_newval;
12686 SET_H_GR (FLD (f_operand1), opval);
12687 written |= (1 << 9);
12688 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12689 }
12690 } else {
12691 {
12692 SI opval = tmp_newval;
12693 SET_H_GR (FLD (f_operand2), opval);
12694 written |= (1 << 8);
12695 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12696 }
12697 }
12698 {
12699 {
12700 BI opval = LTSI (tmp_newval, 0);
12701 CPU (h_nbit) = opval;
12702 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12703 }
12704 {
12705 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12706 CPU (h_zbit) = opval;
12707 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12708 }
12709 SET_H_CBIT_MOVE (0);
12710 SET_H_VBIT_MOVE (0);
12711 {
12712 {
12713 BI opval = 0;
12714 CPU (h_xbit) = opval;
12715 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12716 }
12717 {
12718 BI opval = 0;
12719 SET_H_INSN_PREFIXED_P (opval);
12720 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12721 }
12722 }
12723 }
12724 }
12725
12726 abuf->written = written;
12727 #undef FLD
12728 }
12729 NEXT (vpc);
12730
12731 CASE (sem, INSN_BOUND_M_W_M) : /* bound-m.w [${Rs}${inc}],${Rd} */
12732 {
12733 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12734 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12735 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
12736 int UNUSED written = 0;
12737 IADDR UNUSED pc = abuf->addr;
12738 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12739
12740 {
12741 SI tmp_tmpopd;
12742 SI tmp_tmpops;
12743 SI tmp_newval;
12744 tmp_tmpops = ZEXTHISI (({ SI tmp_addr;
12745 HI tmp_tmp_mem;
12746 BI tmp_postinc;
12747 tmp_postinc = FLD (f_memmode);
12748 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
12749 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
12750 ; if (NEBI (tmp_postinc, 0)) {
12751 {
12752 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
12753 tmp_addr = ADDSI (tmp_addr, 2);
12754 }
12755 {
12756 SI opval = tmp_addr;
12757 SET_H_GR (FLD (f_operand1), opval);
12758 written |= (1 << 9);
12759 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12760 }
12761 }
12762 }
12763 ; tmp_tmp_mem; }));
12764 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12765 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12766 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
12767 {
12768 SI opval = tmp_newval;
12769 SET_H_GR (FLD (f_operand1), opval);
12770 written |= (1 << 9);
12771 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12772 }
12773 } else {
12774 {
12775 SI opval = tmp_newval;
12776 SET_H_GR (FLD (f_operand2), opval);
12777 written |= (1 << 8);
12778 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12779 }
12780 }
12781 {
12782 {
12783 BI opval = LTSI (tmp_newval, 0);
12784 CPU (h_nbit) = opval;
12785 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12786 }
12787 {
12788 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12789 CPU (h_zbit) = opval;
12790 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12791 }
12792 SET_H_CBIT_MOVE (0);
12793 SET_H_VBIT_MOVE (0);
12794 {
12795 {
12796 BI opval = 0;
12797 CPU (h_xbit) = opval;
12798 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12799 }
12800 {
12801 BI opval = 0;
12802 SET_H_INSN_PREFIXED_P (opval);
12803 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12804 }
12805 }
12806 }
12807 }
12808
12809 abuf->written = written;
12810 #undef FLD
12811 }
12812 NEXT (vpc);
12813
12814 CASE (sem, INSN_BOUND_M_D_M) : /* bound-m.d [${Rs}${inc}],${Rd} */
12815 {
12816 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12818 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
12819 int UNUSED written = 0;
12820 IADDR UNUSED pc = abuf->addr;
12821 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12822
12823 {
12824 SI tmp_tmpopd;
12825 SI tmp_tmpops;
12826 SI tmp_newval;
12827 tmp_tmpops = ({ SI tmp_addr;
12828 SI tmp_tmp_mem;
12829 BI tmp_postinc;
12830 tmp_postinc = FLD (f_memmode);
12831 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
12832 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
12833 ; if (NEBI (tmp_postinc, 0)) {
12834 {
12835 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
12836 tmp_addr = ADDSI (tmp_addr, 4);
12837 }
12838 {
12839 SI opval = tmp_addr;
12840 SET_H_GR (FLD (f_operand1), opval);
12841 written |= (1 << 9);
12842 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12843 }
12844 }
12845 }
12846 ; tmp_tmp_mem; });
12847 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12848 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12849 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
12850 {
12851 SI opval = tmp_newval;
12852 SET_H_GR (FLD (f_operand1), opval);
12853 written |= (1 << 9);
12854 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12855 }
12856 } else {
12857 {
12858 SI opval = tmp_newval;
12859 SET_H_GR (FLD (f_operand2), opval);
12860 written |= (1 << 8);
12861 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12862 }
12863 }
12864 {
12865 {
12866 BI opval = LTSI (tmp_newval, 0);
12867 CPU (h_nbit) = opval;
12868 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12869 }
12870 {
12871 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12872 CPU (h_zbit) = opval;
12873 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12874 }
12875 SET_H_CBIT_MOVE (0);
12876 SET_H_VBIT_MOVE (0);
12877 {
12878 {
12879 BI opval = 0;
12880 CPU (h_xbit) = opval;
12881 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12882 }
12883 {
12884 BI opval = 0;
12885 SET_H_INSN_PREFIXED_P (opval);
12886 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12887 }
12888 }
12889 }
12890 }
12891
12892 abuf->written = written;
12893 #undef FLD
12894 }
12895 NEXT (vpc);
12896
12897 CASE (sem, INSN_BOUND_CB) : /* bound.b [PC+],${Rd} */
12898 {
12899 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12900 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12901 #define FLD(f) abuf->fields.sfmt_bound_cb.f
12902 int UNUSED written = 0;
12903 IADDR UNUSED pc = abuf->addr;
12904 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12905
12906 {
12907 SI tmp_tmpopd;
12908 SI tmp_tmpops;
12909 SI tmp_newval;
12910 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
12911 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12912 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12913 {
12914 SI opval = tmp_newval;
12915 SET_H_GR (FLD (f_operand2), opval);
12916 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12917 }
12918 {
12919 {
12920 BI opval = LTSI (tmp_newval, 0);
12921 CPU (h_nbit) = opval;
12922 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12923 }
12924 {
12925 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12926 CPU (h_zbit) = opval;
12927 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12928 }
12929 SET_H_CBIT_MOVE (0);
12930 SET_H_VBIT_MOVE (0);
12931 {
12932 {
12933 BI opval = 0;
12934 CPU (h_xbit) = opval;
12935 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12936 }
12937 {
12938 BI opval = 0;
12939 SET_H_INSN_PREFIXED_P (opval);
12940 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12941 }
12942 }
12943 }
12944 }
12945
12946 #undef FLD
12947 }
12948 NEXT (vpc);
12949
12950 CASE (sem, INSN_BOUND_CW) : /* bound.w [PC+],${Rd} */
12951 {
12952 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12953 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12954 #define FLD(f) abuf->fields.sfmt_bound_cw.f
12955 int UNUSED written = 0;
12956 IADDR UNUSED pc = abuf->addr;
12957 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12958
12959 {
12960 SI tmp_tmpopd;
12961 SI tmp_tmpops;
12962 SI tmp_newval;
12963 tmp_tmpops = ZEXTSISI (FLD (f_indir_pc__word));
12964 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12965 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12966 {
12967 SI opval = tmp_newval;
12968 SET_H_GR (FLD (f_operand2), opval);
12969 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12970 }
12971 {
12972 {
12973 BI opval = LTSI (tmp_newval, 0);
12974 CPU (h_nbit) = opval;
12975 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12976 }
12977 {
12978 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12979 CPU (h_zbit) = opval;
12980 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12981 }
12982 SET_H_CBIT_MOVE (0);
12983 SET_H_VBIT_MOVE (0);
12984 {
12985 {
12986 BI opval = 0;
12987 CPU (h_xbit) = opval;
12988 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12989 }
12990 {
12991 BI opval = 0;
12992 SET_H_INSN_PREFIXED_P (opval);
12993 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12994 }
12995 }
12996 }
12997 }
12998
12999 #undef FLD
13000 }
13001 NEXT (vpc);
13002
13003 CASE (sem, INSN_BOUND_CD) : /* bound.d [PC+],${Rd} */
13004 {
13005 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13006 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13007 #define FLD(f) abuf->fields.sfmt_bound_cd.f
13008 int UNUSED written = 0;
13009 IADDR UNUSED pc = abuf->addr;
13010 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
13011
13012 {
13013 SI tmp_tmpopd;
13014 SI tmp_tmpops;
13015 SI tmp_newval;
13016 tmp_tmpops = FLD (f_indir_pc__dword);
13017 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
13018 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
13019 {
13020 SI opval = tmp_newval;
13021 SET_H_GR (FLD (f_operand2), opval);
13022 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13023 }
13024 {
13025 {
13026 BI opval = LTSI (tmp_newval, 0);
13027 CPU (h_nbit) = opval;
13028 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
13029 }
13030 {
13031 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
13032 CPU (h_zbit) = opval;
13033 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
13034 }
13035 SET_H_CBIT_MOVE (0);
13036 SET_H_VBIT_MOVE (0);
13037 {
13038 {
13039 BI opval = 0;
13040 CPU (h_xbit) = opval;
13041 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
13042 }
13043 {
13044 BI opval = 0;
13045 SET_H_INSN_PREFIXED_P (opval);
13046 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13047 }
13048 }
13049 }
13050 }
13051
13052 #undef FLD
13053 }
13054 NEXT (vpc);
13055
13056 CASE (sem, INSN_SCC) : /* s${cc} ${Rd-sfield} */
13057 {
13058 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13059 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13060 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
13061 int UNUSED written = 0;
13062 IADDR UNUSED pc = abuf->addr;
13063 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13064
13065 {
13066 BI tmp_truthval;
13067 tmp_truthval = ({ SI tmp_tmpcond;
13068 BI tmp_condres;
13069 tmp_tmpcond = FLD (f_operand2);
13070 ; if (EQSI (tmp_tmpcond, 0)) {
13071 tmp_condres = NOTBI (CPU (h_cbit));
13072 }
13073 else if (EQSI (tmp_tmpcond, 1)) {
13074 tmp_condres = CPU (h_cbit);
13075 }
13076 else if (EQSI (tmp_tmpcond, 2)) {
13077 tmp_condres = NOTBI (CPU (h_zbit));
13078 }
13079 else if (EQSI (tmp_tmpcond, 3)) {
13080 tmp_condres = CPU (h_zbit);
13081 }
13082 else if (EQSI (tmp_tmpcond, 4)) {
13083 tmp_condres = NOTBI (CPU (h_vbit));
13084 }
13085 else if (EQSI (tmp_tmpcond, 5)) {
13086 tmp_condres = CPU (h_vbit);
13087 }
13088 else if (EQSI (tmp_tmpcond, 6)) {
13089 tmp_condres = NOTBI (CPU (h_nbit));
13090 }
13091 else if (EQSI (tmp_tmpcond, 7)) {
13092 tmp_condres = CPU (h_nbit);
13093 }
13094 else if (EQSI (tmp_tmpcond, 8)) {
13095 tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
13096 }
13097 else if (EQSI (tmp_tmpcond, 9)) {
13098 tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
13099 }
13100 else if (EQSI (tmp_tmpcond, 10)) {
13101 tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
13102 }
13103 else if (EQSI (tmp_tmpcond, 11)) {
13104 tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
13105 }
13106 else if (EQSI (tmp_tmpcond, 12)) {
13107 tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
13108 }
13109 else if (EQSI (tmp_tmpcond, 13)) {
13110 tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
13111 }
13112 else if (EQSI (tmp_tmpcond, 14)) {
13113 tmp_condres = 1;
13114 }
13115 else if (EQSI (tmp_tmpcond, 15)) {
13116 tmp_condres = CPU (h_pbit);
13117 }
13118 ; tmp_condres; });
13119 {
13120 SI opval = ZEXTBISI (tmp_truthval);
13121 SET_H_GR (FLD (f_operand1), opval);
13122 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13123 }
13124 {
13125 {
13126 BI opval = 0;
13127 CPU (h_xbit) = opval;
13128 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
13129 }
13130 {
13131 BI opval = 0;
13132 SET_H_INSN_PREFIXED_P (opval);
13133 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13134 }
13135 }
13136 }
13137
13138 #undef FLD
13139 }
13140 NEXT (vpc);
13141
13142 CASE (sem, INSN_LZ) : /* lz ${Rs},${Rd} */
13143 {
13144 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13145 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13146 #define FLD(f) abuf->fields.sfmt_muls_b.f
13147 int UNUSED written = 0;
13148 IADDR UNUSED pc = abuf->addr;
13149 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13150
13151 {
13152 SI tmp_tmpd;
13153 SI tmp_tmp;
13154 tmp_tmp = GET_H_GR (FLD (f_operand1));
13155 tmp_tmpd = 0;
13156 {
13157 if (GESI (tmp_tmp, 0)) {
13158 {
13159 tmp_tmp = SLLSI (tmp_tmp, 1);
13160 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13161 }
13162 }
13163 if (GESI (tmp_tmp, 0)) {
13164 {
13165 tmp_tmp = SLLSI (tmp_tmp, 1);
13166 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13167 }
13168 }
13169 if (GESI (tmp_tmp, 0)) {
13170 {
13171 tmp_tmp = SLLSI (tmp_tmp, 1);
13172 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13173 }
13174 }
13175 if (GESI (tmp_tmp, 0)) {
13176 {
13177 tmp_tmp = SLLSI (tmp_tmp, 1);
13178 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13179 }
13180 }
13181 if (GESI (tmp_tmp, 0)) {
13182 {
13183 tmp_tmp = SLLSI (tmp_tmp, 1);
13184 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13185 }
13186 }
13187 if (GESI (tmp_tmp, 0)) {
13188 {
13189 tmp_tmp = SLLSI (tmp_tmp, 1);
13190 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13191 }
13192 }
13193 if (GESI (tmp_tmp, 0)) {
13194 {
13195 tmp_tmp = SLLSI (tmp_tmp, 1);
13196 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13197 }
13198 }
13199 if (GESI (tmp_tmp, 0)) {
13200 {
13201 tmp_tmp = SLLSI (tmp_tmp, 1);
13202 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13203 }
13204 }
13205 if (GESI (tmp_tmp, 0)) {
13206 {
13207 tmp_tmp = SLLSI (tmp_tmp, 1);
13208 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13209 }
13210 }
13211 if (GESI (tmp_tmp, 0)) {
13212 {
13213 tmp_tmp = SLLSI (tmp_tmp, 1);
13214 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13215 }
13216 }
13217 if (GESI (tmp_tmp, 0)) {
13218 {
13219 tmp_tmp = SLLSI (tmp_tmp, 1);
13220 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13221 }
13222 }
13223 if (GESI (tmp_tmp, 0)) {
13224 {
13225 tmp_tmp = SLLSI (tmp_tmp, 1);
13226 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13227 }
13228 }
13229 if (GESI (tmp_tmp, 0)) {
13230 {
13231 tmp_tmp = SLLSI (tmp_tmp, 1);
13232 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13233 }
13234 }
13235 if (GESI (tmp_tmp, 0)) {
13236 {
13237 tmp_tmp = SLLSI (tmp_tmp, 1);
13238 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13239 }
13240 }
13241 if (GESI (tmp_tmp, 0)) {
13242 {
13243 tmp_tmp = SLLSI (tmp_tmp, 1);
13244 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13245 }
13246 }
13247 if (GESI (tmp_tmp, 0)) {
13248 {
13249 tmp_tmp = SLLSI (tmp_tmp, 1);
13250 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13251 }
13252 }
13253 if (GESI (tmp_tmp, 0)) {
13254 {
13255 tmp_tmp = SLLSI (tmp_tmp, 1);
13256 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13257 }
13258 }
13259 if (GESI (tmp_tmp, 0)) {
13260 {
13261 tmp_tmp = SLLSI (tmp_tmp, 1);
13262 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13263 }
13264 }
13265 if (GESI (tmp_tmp, 0)) {
13266 {
13267 tmp_tmp = SLLSI (tmp_tmp, 1);
13268 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13269 }
13270 }
13271 if (GESI (tmp_tmp, 0)) {
13272 {
13273 tmp_tmp = SLLSI (tmp_tmp, 1);
13274 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13275 }
13276 }
13277 if (GESI (tmp_tmp, 0)) {
13278 {
13279 tmp_tmp = SLLSI (tmp_tmp, 1);
13280 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13281 }
13282 }
13283 if (GESI (tmp_tmp, 0)) {
13284 {
13285 tmp_tmp = SLLSI (tmp_tmp, 1);
13286 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13287 }
13288 }
13289 if (GESI (tmp_tmp, 0)) {
13290 {
13291 tmp_tmp = SLLSI (tmp_tmp, 1);
13292 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13293 }
13294 }
13295 if (GESI (tmp_tmp, 0)) {
13296 {
13297 tmp_tmp = SLLSI (tmp_tmp, 1);
13298 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13299 }
13300 }
13301 if (GESI (tmp_tmp, 0)) {
13302 {
13303 tmp_tmp = SLLSI (tmp_tmp, 1);
13304 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13305 }
13306 }
13307 if (GESI (tmp_tmp, 0)) {
13308 {
13309 tmp_tmp = SLLSI (tmp_tmp, 1);
13310 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13311 }
13312 }
13313 if (GESI (tmp_tmp, 0)) {
13314 {
13315 tmp_tmp = SLLSI (tmp_tmp, 1);
13316 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13317 }
13318 }
13319 if (GESI (tmp_tmp, 0)) {
13320 {
13321 tmp_tmp = SLLSI (tmp_tmp, 1);
13322 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13323 }
13324 }
13325 if (GESI (tmp_tmp, 0)) {
13326 {
13327 tmp_tmp = SLLSI (tmp_tmp, 1);
13328 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13329 }
13330 }
13331 if (GESI (tmp_tmp, 0)) {
13332 {
13333 tmp_tmp = SLLSI (tmp_tmp, 1);
13334 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13335 }
13336 }
13337 if (GESI (tmp_tmp, 0)) {
13338 {
13339 tmp_tmp = SLLSI (tmp_tmp, 1);
13340 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13341 }
13342 }
13343 if (GESI (tmp_tmp, 0)) {
13344 {
13345 tmp_tmp = SLLSI (tmp_tmp, 1);
13346 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13347 }
13348 }
13349 }
13350 {
13351 SI opval = tmp_tmpd;
13352 SET_H_GR (FLD (f_operand2), opval);
13353 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13354 }
13355 {
13356 {
13357 BI opval = LTSI (tmp_tmpd, 0);
13358 CPU (h_nbit) = opval;
13359 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
13360 }
13361 {
13362 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
13363 CPU (h_zbit) = opval;
13364 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
13365 }
13366 SET_H_CBIT_MOVE (0);
13367 SET_H_VBIT_MOVE (0);
13368 {
13369 {
13370 BI opval = 0;
13371 CPU (h_xbit) = opval;
13372 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
13373 }
13374 {
13375 BI opval = 0;
13376 SET_H_INSN_PREFIXED_P (opval);
13377 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13378 }
13379 }
13380 }
13381 }
13382
13383 #undef FLD
13384 }
13385 NEXT (vpc);
13386
13387 CASE (sem, INSN_ADDOQ) : /* addoq $o,$Rs,ACR */
13388 {
13389 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13391 #define FLD(f) abuf->fields.sfmt_addoq.f
13392 int UNUSED written = 0;
13393 IADDR UNUSED pc = abuf->addr;
13394 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13395
13396 {
13397 {
13398 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), FLD (f_s8));
13399 CPU (h_prefixreg_pre_v32) = opval;
13400 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13401 }
13402 {
13403 BI opval = 1;
13404 SET_H_INSN_PREFIXED_P (opval);
13405 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13406 }
13407 }
13408
13409 #undef FLD
13410 }
13411 NEXT (vpc);
13412
13413 CASE (sem, INSN_BDAPQPC) : /* bdapq $o,PC */
13414 {
13415 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13416 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13417 #define FLD(f) abuf->fields.sfmt_addoq.f
13418 int UNUSED written = 0;
13419 IADDR UNUSED pc = abuf->addr;
13420 SEM_BRANCH_INIT
13421 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13422
13423 {
13424 {
13425 SI opval = ADDSI (ADDSI (pc, 2), FLD (f_s8));
13426 CPU (h_prefixreg_pre_v32) = opval;
13427 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13428 }
13429 {
13430 BI opval = 1;
13431 SET_H_INSN_PREFIXED_P (opval);
13432 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13433 }
13434 cris_flush_simulator_decode_cache (current_cpu, pc);
13435 }
13436
13437 SEM_BRANCH_FINI (vpc);
13438 #undef FLD
13439 }
13440 NEXT (vpc);
13441
13442 CASE (sem, INSN_BDAP_32_PC) : /* bdap ${sconst32},PC */
13443 {
13444 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13445 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13446 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
13447 int UNUSED written = 0;
13448 IADDR UNUSED pc = abuf->addr;
13449 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
13450
13451 {
13452 SI tmp_newpc;
13453 SI tmp_oldpc;
13454 SI tmp_offs;
13455 tmp_offs = FLD (f_indir_pc__dword);
13456 tmp_oldpc = ADDSI (pc, 6);
13457 tmp_newpc = ADDSI (tmp_oldpc, tmp_offs);
13458 {
13459 SI opval = tmp_newpc;
13460 CPU (h_prefixreg_pre_v32) = opval;
13461 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13462 }
13463 {
13464 BI opval = 1;
13465 SET_H_INSN_PREFIXED_P (opval);
13466 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13467 }
13468 }
13469
13470 #undef FLD
13471 }
13472 NEXT (vpc);
13473
13474 CASE (sem, INSN_MOVE_M_PCPLUS_P0) : /* move [PC+],P0 */
13475 {
13476 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13477 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13478 #define FLD(f) abuf->fields.sfmt_move_m_spplus_p8.f
13479 int UNUSED written = 0;
13480 IADDR UNUSED pc = abuf->addr;
13481 SEM_BRANCH_INIT
13482 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13483
13484 if (GET_H_INSN_PREFIXED_P ()) {
13485 {
13486 QI tmp_dummy;
13487 tmp_dummy = ({ SI tmp_addr;
13488 QI tmp_tmp_mem;
13489 BI tmp_postinc;
13490 tmp_postinc = FLD (f_memmode);
13491 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (pc) : (CPU (h_prefixreg_pre_v32)));
13492 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
13493 ; if (NEBI (tmp_postinc, 0)) {
13494 {
13495 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13496 tmp_addr = ADDSI (tmp_addr, 1);
13497 }
13498 {
13499 USI opval = tmp_addr;
13500 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
13501 written |= (1 << 5);
13502 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
13503 }
13504 }
13505 }
13506 ; tmp_tmp_mem; });
13507 {
13508 {
13509 BI opval = 0;
13510 CPU (h_xbit) = opval;
13511 written |= (1 << 7);
13512 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
13513 }
13514 {
13515 BI opval = 0;
13516 SET_H_INSN_PREFIXED_P (opval);
13517 written |= (1 << 6);
13518 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13519 }
13520 }
13521 }
13522 } else {
13523 cgen_rtx_error (current_cpu, "move [PC+],P0 without prefix is not implemented");
13524 }
13525
13526 abuf->written = written;
13527 SEM_BRANCH_FINI (vpc);
13528 #undef FLD
13529 }
13530 NEXT (vpc);
13531
13532 CASE (sem, INSN_MOVE_M_SPPLUS_P8) : /* move [SP+],P8 */
13533 {
13534 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13535 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13536 #define FLD(f) abuf->fields.sfmt_move_m_spplus_p8.f
13537 int UNUSED written = 0;
13538 IADDR UNUSED pc = abuf->addr;
13539 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13540
13541 if (GET_H_INSN_PREFIXED_P ()) {
13542 {
13543 SI tmp_dummy;
13544 tmp_dummy = ({ SI tmp_addr;
13545 SI tmp_tmp_mem;
13546 BI tmp_postinc;
13547 tmp_postinc = FLD (f_memmode);
13548 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (((UINT) 14))) : (CPU (h_prefixreg_pre_v32)));
13549 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
13550 ; if (NEBI (tmp_postinc, 0)) {
13551 {
13552 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13553 tmp_addr = ADDSI (tmp_addr, 4);
13554 }
13555 {
13556 SI opval = tmp_addr;
13557 SET_H_GR (((UINT) 14), opval);
13558 written |= (1 << 5);
13559 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13560 }
13561 }
13562 }
13563 ; tmp_tmp_mem; });
13564 {
13565 {
13566 BI opval = 0;
13567 CPU (h_xbit) = opval;
13568 written |= (1 << 7);
13569 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
13570 }
13571 {
13572 BI opval = 0;
13573 SET_H_INSN_PREFIXED_P (opval);
13574 written |= (1 << 6);
13575 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13576 }
13577 }
13578 }
13579 } else {
13580 cgen_rtx_error (current_cpu, "move [SP+],P8 without prefix is not implemented");
13581 }
13582
13583 abuf->written = written;
13584 #undef FLD
13585 }
13586 NEXT (vpc);
13587
13588 CASE (sem, INSN_ADDO_M_B_M) : /* addo-m.b [${Rs}${inc}],$Rd,ACR */
13589 {
13590 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13591 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13592 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
13593 int UNUSED written = 0;
13594 IADDR UNUSED pc = abuf->addr;
13595 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13596
13597 {
13598 QI tmp_tmps;
13599 tmp_tmps = ({ SI tmp_addr;
13600 QI tmp_tmp_mem;
13601 BI tmp_postinc;
13602 tmp_postinc = FLD (f_memmode);
13603 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
13604 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
13605 ; if (NEBI (tmp_postinc, 0)) {
13606 {
13607 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13608 tmp_addr = ADDSI (tmp_addr, 1);
13609 }
13610 {
13611 SI opval = tmp_addr;
13612 SET_H_GR (FLD (f_operand1), opval);
13613 written |= (1 << 6);
13614 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13615 }
13616 }
13617 }
13618 ; tmp_tmp_mem; });
13619 {
13620 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTQISI (tmp_tmps));
13621 CPU (h_prefixreg_pre_v32) = opval;
13622 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13623 }
13624 {
13625 BI opval = 1;
13626 SET_H_INSN_PREFIXED_P (opval);
13627 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13628 }
13629 }
13630
13631 abuf->written = written;
13632 #undef FLD
13633 }
13634 NEXT (vpc);
13635
13636 CASE (sem, INSN_ADDO_M_W_M) : /* addo-m.w [${Rs}${inc}],$Rd,ACR */
13637 {
13638 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13640 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
13641 int UNUSED written = 0;
13642 IADDR UNUSED pc = abuf->addr;
13643 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13644
13645 {
13646 HI tmp_tmps;
13647 tmp_tmps = ({ SI tmp_addr;
13648 HI tmp_tmp_mem;
13649 BI tmp_postinc;
13650 tmp_postinc = FLD (f_memmode);
13651 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
13652 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
13653 ; if (NEBI (tmp_postinc, 0)) {
13654 {
13655 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13656 tmp_addr = ADDSI (tmp_addr, 2);
13657 }
13658 {
13659 SI opval = tmp_addr;
13660 SET_H_GR (FLD (f_operand1), opval);
13661 written |= (1 << 6);
13662 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13663 }
13664 }
13665 }
13666 ; tmp_tmp_mem; });
13667 {
13668 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTHISI (tmp_tmps));
13669 CPU (h_prefixreg_pre_v32) = opval;
13670 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13671 }
13672 {
13673 BI opval = 1;
13674 SET_H_INSN_PREFIXED_P (opval);
13675 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13676 }
13677 }
13678
13679 abuf->written = written;
13680 #undef FLD
13681 }
13682 NEXT (vpc);
13683
13684 CASE (sem, INSN_ADDO_M_D_M) : /* addo-m.d [${Rs}${inc}],$Rd,ACR */
13685 {
13686 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13687 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13688 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
13689 int UNUSED written = 0;
13690 IADDR UNUSED pc = abuf->addr;
13691 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13692
13693 {
13694 SI tmp_tmps;
13695 tmp_tmps = ({ SI tmp_addr;
13696 SI tmp_tmp_mem;
13697 BI tmp_postinc;
13698 tmp_postinc = FLD (f_memmode);
13699 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
13700 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
13701 ; if (NEBI (tmp_postinc, 0)) {
13702 {
13703 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13704 tmp_addr = ADDSI (tmp_addr, 4);
13705 }
13706 {
13707 SI opval = tmp_addr;
13708 SET_H_GR (FLD (f_operand1), opval);
13709 written |= (1 << 6);
13710 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13711 }
13712 }
13713 }
13714 ; tmp_tmp_mem; });
13715 {
13716 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), tmp_tmps);
13717 CPU (h_prefixreg_pre_v32) = opval;
13718 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13719 }
13720 {
13721 BI opval = 1;
13722 SET_H_INSN_PREFIXED_P (opval);
13723 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13724 }
13725 }
13726
13727 abuf->written = written;
13728 #undef FLD
13729 }
13730 NEXT (vpc);
13731
13732 CASE (sem, INSN_ADDO_CB) : /* addo.b [PC+],$Rd,ACR */
13733 {
13734 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13736 #define FLD(f) abuf->fields.sfmt_bound_cb.f
13737 int UNUSED written = 0;
13738 IADDR UNUSED pc = abuf->addr;
13739 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13740
13741 {
13742 {
13743 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte))));
13744 CPU (h_prefixreg_pre_v32) = opval;
13745 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13746 }
13747 {
13748 BI opval = 1;
13749 SET_H_INSN_PREFIXED_P (opval);
13750 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13751 }
13752 }
13753
13754 #undef FLD
13755 }
13756 NEXT (vpc);
13757
13758 CASE (sem, INSN_ADDO_CW) : /* addo.w [PC+],$Rd,ACR */
13759 {
13760 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13761 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13762 #define FLD(f) abuf->fields.sfmt_bound_cw.f
13763 int UNUSED written = 0;
13764 IADDR UNUSED pc = abuf->addr;
13765 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13766
13767 {
13768 {
13769 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word))));
13770 CPU (h_prefixreg_pre_v32) = opval;
13771 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13772 }
13773 {
13774 BI opval = 1;
13775 SET_H_INSN_PREFIXED_P (opval);
13776 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13777 }
13778 }
13779
13780 #undef FLD
13781 }
13782 NEXT (vpc);
13783
13784 CASE (sem, INSN_ADDO_CD) : /* addo.d [PC+],$Rd,ACR */
13785 {
13786 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13787 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13788 #define FLD(f) abuf->fields.sfmt_bound_cd.f
13789 int UNUSED written = 0;
13790 IADDR UNUSED pc = abuf->addr;
13791 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
13792
13793 {
13794 {
13795 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
13796 CPU (h_prefixreg_pre_v32) = opval;
13797 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13798 }
13799 {
13800 BI opval = 1;
13801 SET_H_INSN_PREFIXED_P (opval);
13802 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13803 }
13804 }
13805
13806 #undef FLD
13807 }
13808 NEXT (vpc);
13809
13810 CASE (sem, INSN_DIP_M) : /* dip [${Rs}${inc}] */
13811 {
13812 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13814 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
13815 int UNUSED written = 0;
13816 IADDR UNUSED pc = abuf->addr;
13817 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13818
13819 {
13820 SI tmp_tmps;
13821 tmp_tmps = ({ SI tmp_addr;
13822 SI tmp_tmp_mem;
13823 BI tmp_postinc;
13824 tmp_postinc = FLD (f_memmode);
13825 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
13826 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
13827 ; if (NEBI (tmp_postinc, 0)) {
13828 {
13829 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13830 tmp_addr = ADDSI (tmp_addr, 4);
13831 }
13832 {
13833 SI opval = tmp_addr;
13834 SET_H_GR (FLD (f_operand1), opval);
13835 written |= (1 << 5);
13836 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13837 }
13838 }
13839 }
13840 ; tmp_tmp_mem; });
13841 {
13842 SI opval = tmp_tmps;
13843 CPU (h_prefixreg_pre_v32) = opval;
13844 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13845 }
13846 {
13847 BI opval = 1;
13848 SET_H_INSN_PREFIXED_P (opval);
13849 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13850 }
13851 }
13852
13853 abuf->written = written;
13854 #undef FLD
13855 }
13856 NEXT (vpc);
13857
13858 CASE (sem, INSN_DIP_C) : /* dip [PC+] */
13859 {
13860 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13861 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13862 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
13863 int UNUSED written = 0;
13864 IADDR UNUSED pc = abuf->addr;
13865 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
13866
13867 {
13868 {
13869 SI opval = FLD (f_indir_pc__dword);
13870 CPU (h_prefixreg_pre_v32) = opval;
13871 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13872 }
13873 {
13874 BI opval = 1;
13875 SET_H_INSN_PREFIXED_P (opval);
13876 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13877 }
13878 }
13879
13880 #undef FLD
13881 }
13882 NEXT (vpc);
13883
13884 CASE (sem, INSN_ADDI_ACR_B_R) : /* addi-acr.b ${Rs-dfield}.m,${Rd-sfield},ACR */
13885 {
13886 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13887 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13888 #define FLD(f) abuf->fields.sfmt_add_b_r.f
13889 int UNUSED written = 0;
13890 IADDR UNUSED pc = abuf->addr;
13891 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13892
13893 {
13894 {
13895 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 1));
13896 CPU (h_prefixreg_pre_v32) = opval;
13897 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13898 }
13899 {
13900 BI opval = 1;
13901 SET_H_INSN_PREFIXED_P (opval);
13902 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13903 }
13904 }
13905
13906 #undef FLD
13907 }
13908 NEXT (vpc);
13909
13910 CASE (sem, INSN_ADDI_ACR_W_R) : /* addi-acr.w ${Rs-dfield}.m,${Rd-sfield},ACR */
13911 {
13912 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13913 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13914 #define FLD(f) abuf->fields.sfmt_add_b_r.f
13915 int UNUSED written = 0;
13916 IADDR UNUSED pc = abuf->addr;
13917 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13918
13919 {
13920 {
13921 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 2));
13922 CPU (h_prefixreg_pre_v32) = opval;
13923 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13924 }
13925 {
13926 BI opval = 1;
13927 SET_H_INSN_PREFIXED_P (opval);
13928 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13929 }
13930 }
13931
13932 #undef FLD
13933 }
13934 NEXT (vpc);
13935
13936 CASE (sem, INSN_ADDI_ACR_D_R) : /* addi-acr.d ${Rs-dfield}.m,${Rd-sfield},ACR */
13937 {
13938 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13939 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13940 #define FLD(f) abuf->fields.sfmt_add_b_r.f
13941 int UNUSED written = 0;
13942 IADDR UNUSED pc = abuf->addr;
13943 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13944
13945 {
13946 {
13947 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 4));
13948 CPU (h_prefixreg_pre_v32) = opval;
13949 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13950 }
13951 {
13952 BI opval = 1;
13953 SET_H_INSN_PREFIXED_P (opval);
13954 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13955 }
13956 }
13957
13958 #undef FLD
13959 }
13960 NEXT (vpc);
13961
13962 CASE (sem, INSN_BIAP_PC_B_R) : /* biap-pc.b ${Rs-dfield}.m,PC */
13963 {
13964 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13965 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13966 #define FLD(f) abuf->fields.sfmt_addoq.f
13967 int UNUSED written = 0;
13968 IADDR UNUSED pc = abuf->addr;
13969 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13970
13971 {
13972 {
13973 SI opval = ADDSI (ADDSI (pc, 4), MULSI (GET_H_GR (FLD (f_operand2)), 1));
13974 CPU (h_prefixreg_pre_v32) = opval;
13975 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13976 }
13977 {
13978 BI opval = 1;
13979 SET_H_INSN_PREFIXED_P (opval);
13980 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13981 }
13982 }
13983
13984 #undef FLD
13985 }
13986 NEXT (vpc);
13987
13988 CASE (sem, INSN_BIAP_PC_W_R) : /* biap-pc.w ${Rs-dfield}.m,PC */
13989 {
13990 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13991 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13992 #define FLD(f) abuf->fields.sfmt_addoq.f
13993 int UNUSED written = 0;
13994 IADDR UNUSED pc = abuf->addr;
13995 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13996
13997 {
13998 {
13999 SI opval = ADDSI (ADDSI (pc, 4), MULSI (GET_H_GR (FLD (f_operand2)), 2));
14000 CPU (h_prefixreg_pre_v32) = opval;
14001 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
14002 }
14003 {
14004 BI opval = 1;
14005 SET_H_INSN_PREFIXED_P (opval);
14006 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
14007 }
14008 }
14009
14010 #undef FLD
14011 }
14012 NEXT (vpc);
14013
14014 CASE (sem, INSN_BIAP_PC_D_R) : /* biap-pc.d ${Rs-dfield}.m,PC */
14015 {
14016 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
14017 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14018 #define FLD(f) abuf->fields.sfmt_addoq.f
14019 int UNUSED written = 0;
14020 IADDR UNUSED pc = abuf->addr;
14021 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
14022
14023 {
14024 {
14025 SI opval = ADDSI (ADDSI (pc, 4), MULSI (GET_H_GR (FLD (f_operand2)), 4));
14026 CPU (h_prefixreg_pre_v32) = opval;
14027 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
14028 }
14029 {
14030 BI opval = 1;
14031 SET_H_INSN_PREFIXED_P (opval);
14032 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
14033 }
14034 }
14035
14036 #undef FLD
14037 }
14038 NEXT (vpc);
14039
14040
14041 }
14042 ENDSWITCH (sem) /* End of semantic switch. */
14043
14044 /* At this point `vpc' contains the next insn to execute. */
14045 }
14046
14047 #undef DEFINE_SWITCH
14048 #endif /* DEFINE_SWITCH */
This page took 0.397956 seconds and 4 git commands to generate.