Regenerate cgen files, update copyright year.
[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 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 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
275 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
276 #else
277 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_/**/attr)
278 #endif
279
280 {
281
282 #if WITH_SCACHE_PBB
283
284 /* Branch to next handler without going around main loop. */
285 #define NEXT(vpc) goto * SEM_ARGBUF (vpc) -> semantic.sem_case
286 SWITCH (sem, SEM_ARGBUF (vpc) -> semantic.sem_case)
287
288 #else /* ! WITH_SCACHE_PBB */
289
290 #define NEXT(vpc) BREAK (sem)
291 #ifdef __GNUC__
292 #if FAST_P
293 SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_fast_lab)
294 #else
295 SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_full_lab)
296 #endif
297 #else
298 SWITCH (sem, SEM_ARGBUF (sc) -> idesc->num)
299 #endif
300
301 #endif /* ! WITH_SCACHE_PBB */
302
303 {
304
305 CASE (sem, INSN_X_INVALID) : /* --invalid-- */
306 {
307 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
308 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
309 #define FLD(f) abuf->fields.fmt_empty.f
310 int UNUSED written = 0;
311 IADDR UNUSED pc = abuf->addr;
312 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
313
314 {
315 /* Update the recorded pc in the cpu state struct.
316 Only necessary for WITH_SCACHE case, but to avoid the
317 conditional compilation .... */
318 SET_H_PC (pc);
319 /* Virtual insns have zero size. Overwrite vpc with address of next insn
320 using the default-insn-bitsize spec. When executing insns in parallel
321 we may want to queue the fault and continue execution. */
322 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
323 vpc = sim_engine_invalid_insn (current_cpu, pc, vpc);
324 }
325
326 #undef FLD
327 }
328 NEXT (vpc);
329
330 CASE (sem, INSN_X_AFTER) : /* --after-- */
331 {
332 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
333 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
334 #define FLD(f) abuf->fields.fmt_empty.f
335 int UNUSED written = 0;
336 IADDR UNUSED pc = abuf->addr;
337 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
338
339 {
340 #if WITH_SCACHE_PBB_CRISV10F
341 crisv10f_pbb_after (current_cpu, sem_arg);
342 #endif
343 }
344
345 #undef FLD
346 }
347 NEXT (vpc);
348
349 CASE (sem, INSN_X_BEFORE) : /* --before-- */
350 {
351 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
352 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
353 #define FLD(f) abuf->fields.fmt_empty.f
354 int UNUSED written = 0;
355 IADDR UNUSED pc = abuf->addr;
356 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
357
358 {
359 #if WITH_SCACHE_PBB_CRISV10F
360 crisv10f_pbb_before (current_cpu, sem_arg);
361 #endif
362 }
363
364 #undef FLD
365 }
366 NEXT (vpc);
367
368 CASE (sem, INSN_X_CTI_CHAIN) : /* --cti-chain-- */
369 {
370 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
371 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
372 #define FLD(f) abuf->fields.fmt_empty.f
373 int UNUSED written = 0;
374 IADDR UNUSED pc = abuf->addr;
375 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
376
377 {
378 #if WITH_SCACHE_PBB_CRISV10F
379 #ifdef DEFINE_SWITCH
380 vpc = crisv10f_pbb_cti_chain (current_cpu, sem_arg,
381 pbb_br_type, pbb_br_npc);
382 BREAK (sem);
383 #else
384 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
385 vpc = crisv10f_pbb_cti_chain (current_cpu, sem_arg,
386 CPU_PBB_BR_TYPE (current_cpu),
387 CPU_PBB_BR_NPC (current_cpu));
388 #endif
389 #endif
390 }
391
392 #undef FLD
393 }
394 NEXT (vpc);
395
396 CASE (sem, INSN_X_CHAIN) : /* --chain-- */
397 {
398 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
399 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
400 #define FLD(f) abuf->fields.fmt_empty.f
401 int UNUSED written = 0;
402 IADDR UNUSED pc = abuf->addr;
403 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
404
405 {
406 #if WITH_SCACHE_PBB_CRISV10F
407 vpc = crisv10f_pbb_chain (current_cpu, sem_arg);
408 #ifdef DEFINE_SWITCH
409 BREAK (sem);
410 #endif
411 #endif
412 }
413
414 #undef FLD
415 }
416 NEXT (vpc);
417
418 CASE (sem, INSN_X_BEGIN) : /* --begin-- */
419 {
420 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
421 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
422 #define FLD(f) abuf->fields.fmt_empty.f
423 int UNUSED written = 0;
424 IADDR UNUSED pc = abuf->addr;
425 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
426
427 {
428 #if WITH_SCACHE_PBB_CRISV10F
429 #if defined DEFINE_SWITCH || defined FAST_P
430 /* In the switch case FAST_P is a constant, allowing several optimizations
431 in any called inline functions. */
432 vpc = crisv10f_pbb_begin (current_cpu, FAST_P);
433 #else
434 #if 0 /* cgen engine can't handle dynamic fast/full switching yet. */
435 vpc = crisv10f_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
436 #else
437 vpc = crisv10f_pbb_begin (current_cpu, 0);
438 #endif
439 #endif
440 #endif
441 }
442
443 #undef FLD
444 }
445 NEXT (vpc);
446
447 CASE (sem, INSN_NOP) : /* nop */
448 {
449 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
450 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
451 #define FLD(f) abuf->fields.fmt_empty.f
452 int UNUSED written = 0;
453 IADDR UNUSED pc = abuf->addr;
454 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
455
456 {
457 {
458 BI opval = 0;
459 CPU (h_xbit) = opval;
460 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
461 }
462 {
463 BI opval = 0;
464 SET_H_INSN_PREFIXED_P (opval);
465 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
466 }
467 }
468
469 #undef FLD
470 }
471 NEXT (vpc);
472
473 CASE (sem, INSN_MOVE_B_R) : /* move.b move.m ${Rs},${Rd} */
474 {
475 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
476 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
477 #define FLD(f) abuf->fields.sfmt_add_b_r.f
478 int UNUSED written = 0;
479 IADDR UNUSED pc = abuf->addr;
480 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
481
482 {
483 QI tmp_newval;
484 tmp_newval = GET_H_GR (FLD (f_operand1));
485 {
486 SI tmp_oldregval;
487 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
488 {
489 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
490 SET_H_GR (FLD (f_operand2), opval);
491 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
492 }
493 }
494 {
495 {
496 BI opval = LTQI (tmp_newval, 0);
497 CPU (h_nbit) = opval;
498 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
499 }
500 {
501 BI opval = ANDIF (EQQI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
502 CPU (h_zbit) = opval;
503 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
504 }
505 SET_H_CBIT_MOVE (0);
506 SET_H_VBIT_MOVE (0);
507 {
508 {
509 BI opval = 0;
510 CPU (h_xbit) = opval;
511 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
512 }
513 {
514 BI opval = 0;
515 SET_H_INSN_PREFIXED_P (opval);
516 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
517 }
518 }
519 }
520 }
521
522 #undef FLD
523 }
524 NEXT (vpc);
525
526 CASE (sem, INSN_MOVE_W_R) : /* move.w move.m ${Rs},${Rd} */
527 {
528 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
529 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
530 #define FLD(f) abuf->fields.sfmt_add_b_r.f
531 int UNUSED written = 0;
532 IADDR UNUSED pc = abuf->addr;
533 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
534
535 {
536 HI tmp_newval;
537 tmp_newval = GET_H_GR (FLD (f_operand1));
538 {
539 SI tmp_oldregval;
540 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
541 {
542 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
543 SET_H_GR (FLD (f_operand2), opval);
544 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
545 }
546 }
547 {
548 {
549 BI opval = LTHI (tmp_newval, 0);
550 CPU (h_nbit) = opval;
551 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
552 }
553 {
554 BI opval = ANDIF (EQHI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
555 CPU (h_zbit) = opval;
556 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
557 }
558 SET_H_CBIT_MOVE (0);
559 SET_H_VBIT_MOVE (0);
560 {
561 {
562 BI opval = 0;
563 CPU (h_xbit) = opval;
564 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
565 }
566 {
567 BI opval = 0;
568 SET_H_INSN_PREFIXED_P (opval);
569 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
570 }
571 }
572 }
573 }
574
575 #undef FLD
576 }
577 NEXT (vpc);
578
579 CASE (sem, INSN_MOVE_D_R) : /* move.d move.m ${Rs},${Rd} */
580 {
581 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
582 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
583 #define FLD(f) abuf->fields.sfmt_add_b_r.f
584 int UNUSED written = 0;
585 IADDR UNUSED pc = abuf->addr;
586 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
587
588 {
589 SI tmp_newval;
590 tmp_newval = GET_H_GR (FLD (f_operand1));
591 {
592 SI opval = tmp_newval;
593 SET_H_GR (FLD (f_operand2), opval);
594 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
595 }
596 {
597 {
598 BI opval = LTSI (tmp_newval, 0);
599 CPU (h_nbit) = opval;
600 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
601 }
602 {
603 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
604 CPU (h_zbit) = opval;
605 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
606 }
607 SET_H_CBIT_MOVE (0);
608 SET_H_VBIT_MOVE (0);
609 {
610 {
611 BI opval = 0;
612 CPU (h_xbit) = opval;
613 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
614 }
615 {
616 BI opval = 0;
617 SET_H_INSN_PREFIXED_P (opval);
618 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
619 }
620 }
621 }
622 }
623
624 #undef FLD
625 }
626 NEXT (vpc);
627
628 CASE (sem, INSN_MOVEPCR) : /* move.d PC,${Rd} */
629 {
630 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
631 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
632 #define FLD(f) abuf->fields.sfmt_moveq.f
633 int UNUSED written = 0;
634 IADDR UNUSED pc = abuf->addr;
635 SEM_BRANCH_INIT
636 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
637
638 {
639 SI tmp_pcval;
640 tmp_pcval = ADDSI (pc, 2);
641 {
642 SI opval = tmp_pcval;
643 SET_H_GR (FLD (f_operand2), opval);
644 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
645 }
646 {
647 {
648 BI opval = LTSI (tmp_pcval, 0);
649 CPU (h_nbit) = opval;
650 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
651 }
652 {
653 BI opval = ANDIF (EQSI (tmp_pcval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
654 CPU (h_zbit) = opval;
655 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
656 }
657 SET_H_CBIT_MOVE (0);
658 SET_H_VBIT_MOVE (0);
659 {
660 {
661 BI opval = 0;
662 CPU (h_xbit) = opval;
663 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
664 }
665 {
666 BI opval = 0;
667 SET_H_INSN_PREFIXED_P (opval);
668 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
669 }
670 }
671 }
672 }
673
674 SEM_BRANCH_FINI (vpc);
675 #undef FLD
676 }
677 NEXT (vpc);
678
679 CASE (sem, INSN_MOVEQ) : /* moveq $i,$Rd */
680 {
681 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
682 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
683 #define FLD(f) abuf->fields.sfmt_moveq.f
684 int UNUSED written = 0;
685 IADDR UNUSED pc = abuf->addr;
686 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
687
688 {
689 SI tmp_newval;
690 tmp_newval = FLD (f_s6);
691 {
692 SI opval = tmp_newval;
693 SET_H_GR (FLD (f_operand2), opval);
694 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
695 }
696 {
697 SET_H_NBIT_MOVE (LTSI (tmp_newval, 0));
698 SET_H_ZBIT_MOVE (ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))));
699 SET_H_CBIT_MOVE (0);
700 SET_H_VBIT_MOVE (0);
701 {
702 {
703 BI opval = 0;
704 CPU (h_xbit) = opval;
705 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
706 }
707 {
708 BI opval = 0;
709 SET_H_INSN_PREFIXED_P (opval);
710 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
711 }
712 }
713 }
714 }
715
716 #undef FLD
717 }
718 NEXT (vpc);
719
720 CASE (sem, INSN_MOVS_B_R) : /* movs.b movs.m ${Rs},${Rd} */
721 {
722 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
723 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
724 #define FLD(f) abuf->fields.sfmt_muls_b.f
725 int UNUSED written = 0;
726 IADDR UNUSED pc = abuf->addr;
727 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
728
729 {
730 QI tmp_tmpops;
731 SI tmp_newval;
732 tmp_tmpops = GET_H_GR (FLD (f_operand1));
733 tmp_newval = EXTQISI (tmp_tmpops);
734 {
735 SI opval = tmp_newval;
736 SET_H_GR (FLD (f_operand2), opval);
737 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
738 }
739 {
740 {
741 BI opval = LTSI (tmp_newval, 0);
742 CPU (h_nbit) = opval;
743 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
744 }
745 {
746 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
747 CPU (h_zbit) = opval;
748 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
749 }
750 SET_H_CBIT_MOVE (0);
751 SET_H_VBIT_MOVE (0);
752 {
753 {
754 BI opval = 0;
755 CPU (h_xbit) = opval;
756 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
757 }
758 {
759 BI opval = 0;
760 SET_H_INSN_PREFIXED_P (opval);
761 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
762 }
763 }
764 }
765 }
766
767 #undef FLD
768 }
769 NEXT (vpc);
770
771 CASE (sem, INSN_MOVS_W_R) : /* movs.w movs.m ${Rs},${Rd} */
772 {
773 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
774 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
775 #define FLD(f) abuf->fields.sfmt_muls_b.f
776 int UNUSED written = 0;
777 IADDR UNUSED pc = abuf->addr;
778 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
779
780 {
781 HI tmp_tmpops;
782 SI tmp_newval;
783 tmp_tmpops = GET_H_GR (FLD (f_operand1));
784 tmp_newval = EXTHISI (tmp_tmpops);
785 {
786 SI opval = tmp_newval;
787 SET_H_GR (FLD (f_operand2), opval);
788 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
789 }
790 {
791 {
792 BI opval = LTSI (tmp_newval, 0);
793 CPU (h_nbit) = opval;
794 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
795 }
796 {
797 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
798 CPU (h_zbit) = opval;
799 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
800 }
801 SET_H_CBIT_MOVE (0);
802 SET_H_VBIT_MOVE (0);
803 {
804 {
805 BI opval = 0;
806 CPU (h_xbit) = opval;
807 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
808 }
809 {
810 BI opval = 0;
811 SET_H_INSN_PREFIXED_P (opval);
812 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
813 }
814 }
815 }
816 }
817
818 #undef FLD
819 }
820 NEXT (vpc);
821
822 CASE (sem, INSN_MOVU_B_R) : /* movu.b movu.m ${Rs},${Rd} */
823 {
824 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
825 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
826 #define FLD(f) abuf->fields.sfmt_muls_b.f
827 int UNUSED written = 0;
828 IADDR UNUSED pc = abuf->addr;
829 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
830
831 {
832 QI tmp_tmpops;
833 SI tmp_newval;
834 tmp_tmpops = GET_H_GR (FLD (f_operand1));
835 tmp_newval = ZEXTQISI (tmp_tmpops);
836 {
837 SI opval = tmp_newval;
838 SET_H_GR (FLD (f_operand2), opval);
839 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
840 }
841 {
842 {
843 BI opval = LTSI (tmp_newval, 0);
844 CPU (h_nbit) = opval;
845 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
846 }
847 {
848 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
849 CPU (h_zbit) = opval;
850 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
851 }
852 SET_H_CBIT_MOVE (0);
853 SET_H_VBIT_MOVE (0);
854 {
855 {
856 BI opval = 0;
857 CPU (h_xbit) = opval;
858 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
859 }
860 {
861 BI opval = 0;
862 SET_H_INSN_PREFIXED_P (opval);
863 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
864 }
865 }
866 }
867 }
868
869 #undef FLD
870 }
871 NEXT (vpc);
872
873 CASE (sem, INSN_MOVU_W_R) : /* movu.w movu.m ${Rs},${Rd} */
874 {
875 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
876 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
877 #define FLD(f) abuf->fields.sfmt_muls_b.f
878 int UNUSED written = 0;
879 IADDR UNUSED pc = abuf->addr;
880 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
881
882 {
883 HI tmp_tmpops;
884 SI tmp_newval;
885 tmp_tmpops = GET_H_GR (FLD (f_operand1));
886 tmp_newval = ZEXTHISI (tmp_tmpops);
887 {
888 SI opval = tmp_newval;
889 SET_H_GR (FLD (f_operand2), opval);
890 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
891 }
892 {
893 {
894 BI opval = LTSI (tmp_newval, 0);
895 CPU (h_nbit) = opval;
896 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
897 }
898 {
899 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
900 CPU (h_zbit) = opval;
901 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
902 }
903 SET_H_CBIT_MOVE (0);
904 SET_H_VBIT_MOVE (0);
905 {
906 {
907 BI opval = 0;
908 CPU (h_xbit) = opval;
909 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
910 }
911 {
912 BI opval = 0;
913 SET_H_INSN_PREFIXED_P (opval);
914 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
915 }
916 }
917 }
918 }
919
920 #undef FLD
921 }
922 NEXT (vpc);
923
924 CASE (sem, INSN_MOVECBR) : /* move.b ${sconst8},${Rd} */
925 {
926 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
927 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
928 #define FLD(f) abuf->fields.sfmt_addcbr.f
929 int UNUSED written = 0;
930 IADDR UNUSED pc = abuf->addr;
931 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
932
933 {
934 QI tmp_newval;
935 tmp_newval = FLD (f_indir_pc__byte);
936 {
937 SI tmp_oldregval;
938 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
939 {
940 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
941 SET_H_GR (FLD (f_operand2), opval);
942 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
943 }
944 }
945 {
946 {
947 BI opval = LTQI (tmp_newval, 0);
948 CPU (h_nbit) = opval;
949 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
950 }
951 {
952 BI opval = ANDIF (EQQI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
953 CPU (h_zbit) = opval;
954 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
955 }
956 SET_H_CBIT_MOVE (0);
957 SET_H_VBIT_MOVE (0);
958 {
959 {
960 BI opval = 0;
961 CPU (h_xbit) = opval;
962 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
963 }
964 {
965 BI opval = 0;
966 SET_H_INSN_PREFIXED_P (opval);
967 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
968 }
969 }
970 }
971 }
972
973 #undef FLD
974 }
975 NEXT (vpc);
976
977 CASE (sem, INSN_MOVECWR) : /* move.w ${sconst16},${Rd} */
978 {
979 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
980 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
981 #define FLD(f) abuf->fields.sfmt_addcwr.f
982 int UNUSED written = 0;
983 IADDR UNUSED pc = abuf->addr;
984 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
985
986 {
987 HI tmp_newval;
988 tmp_newval = FLD (f_indir_pc__word);
989 {
990 SI tmp_oldregval;
991 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
992 {
993 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
994 SET_H_GR (FLD (f_operand2), opval);
995 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
996 }
997 }
998 {
999 {
1000 BI opval = LTHI (tmp_newval, 0);
1001 CPU (h_nbit) = opval;
1002 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1003 }
1004 {
1005 BI opval = ANDIF (EQHI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1006 CPU (h_zbit) = opval;
1007 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1008 }
1009 SET_H_CBIT_MOVE (0);
1010 SET_H_VBIT_MOVE (0);
1011 {
1012 {
1013 BI opval = 0;
1014 CPU (h_xbit) = opval;
1015 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1016 }
1017 {
1018 BI opval = 0;
1019 SET_H_INSN_PREFIXED_P (opval);
1020 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1021 }
1022 }
1023 }
1024 }
1025
1026 #undef FLD
1027 }
1028 NEXT (vpc);
1029
1030 CASE (sem, INSN_MOVECDR) : /* move.d ${const32},${Rd} */
1031 {
1032 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1033 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1034 #define FLD(f) abuf->fields.sfmt_bound_cd.f
1035 int UNUSED written = 0;
1036 IADDR UNUSED pc = abuf->addr;
1037 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
1038
1039 {
1040 SI tmp_newval;
1041 tmp_newval = FLD (f_indir_pc__dword);
1042 {
1043 SI opval = tmp_newval;
1044 SET_H_GR (FLD (f_operand2), opval);
1045 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1046 }
1047 {
1048 {
1049 BI opval = LTSI (tmp_newval, 0);
1050 CPU (h_nbit) = opval;
1051 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1052 }
1053 {
1054 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1055 CPU (h_zbit) = opval;
1056 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1057 }
1058 SET_H_CBIT_MOVE (0);
1059 SET_H_VBIT_MOVE (0);
1060 {
1061 {
1062 BI opval = 0;
1063 CPU (h_xbit) = opval;
1064 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1065 }
1066 {
1067 BI opval = 0;
1068 SET_H_INSN_PREFIXED_P (opval);
1069 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1070 }
1071 }
1072 }
1073 }
1074
1075 #undef FLD
1076 }
1077 NEXT (vpc);
1078
1079 CASE (sem, INSN_MOVSCBR) : /* movs.b ${sconst8},${Rd} */
1080 {
1081 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1082 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1083 #define FLD(f) abuf->fields.sfmt_bound_cb.f
1084 int UNUSED written = 0;
1085 IADDR UNUSED pc = abuf->addr;
1086 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1087
1088 {
1089 SI tmp_newval;
1090 tmp_newval = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
1091 {
1092 SI opval = tmp_newval;
1093 SET_H_GR (FLD (f_operand2), opval);
1094 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1095 }
1096 {
1097 {
1098 BI opval = LTSI (tmp_newval, 0);
1099 CPU (h_nbit) = opval;
1100 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1101 }
1102 {
1103 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1104 CPU (h_zbit) = opval;
1105 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1106 }
1107 SET_H_CBIT_MOVE (0);
1108 SET_H_VBIT_MOVE (0);
1109 {
1110 {
1111 BI opval = 0;
1112 CPU (h_xbit) = opval;
1113 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1114 }
1115 {
1116 BI opval = 0;
1117 SET_H_INSN_PREFIXED_P (opval);
1118 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1119 }
1120 }
1121 }
1122 }
1123
1124 #undef FLD
1125 }
1126 NEXT (vpc);
1127
1128 CASE (sem, INSN_MOVSCWR) : /* movs.w ${sconst16},${Rd} */
1129 {
1130 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1131 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1132 #define FLD(f) abuf->fields.sfmt_bound_cw.f
1133 int UNUSED written = 0;
1134 IADDR UNUSED pc = abuf->addr;
1135 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1136
1137 {
1138 SI tmp_newval;
1139 tmp_newval = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
1140 {
1141 SI opval = tmp_newval;
1142 SET_H_GR (FLD (f_operand2), opval);
1143 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1144 }
1145 {
1146 {
1147 BI opval = LTSI (tmp_newval, 0);
1148 CPU (h_nbit) = opval;
1149 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1150 }
1151 {
1152 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1153 CPU (h_zbit) = opval;
1154 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1155 }
1156 SET_H_CBIT_MOVE (0);
1157 SET_H_VBIT_MOVE (0);
1158 {
1159 {
1160 BI opval = 0;
1161 CPU (h_xbit) = opval;
1162 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1163 }
1164 {
1165 BI opval = 0;
1166 SET_H_INSN_PREFIXED_P (opval);
1167 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1168 }
1169 }
1170 }
1171 }
1172
1173 #undef FLD
1174 }
1175 NEXT (vpc);
1176
1177 CASE (sem, INSN_MOVUCBR) : /* movu.b ${uconst8},${Rd} */
1178 {
1179 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1180 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1181 #define FLD(f) abuf->fields.sfmt_bound_cb.f
1182 int UNUSED written = 0;
1183 IADDR UNUSED pc = abuf->addr;
1184 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1185
1186 {
1187 SI tmp_newval;
1188 tmp_newval = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
1189 {
1190 SI opval = tmp_newval;
1191 SET_H_GR (FLD (f_operand2), opval);
1192 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1193 }
1194 {
1195 {
1196 BI opval = LTSI (tmp_newval, 0);
1197 CPU (h_nbit) = opval;
1198 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1199 }
1200 {
1201 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1202 CPU (h_zbit) = opval;
1203 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1204 }
1205 SET_H_CBIT_MOVE (0);
1206 SET_H_VBIT_MOVE (0);
1207 {
1208 {
1209 BI opval = 0;
1210 CPU (h_xbit) = opval;
1211 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1212 }
1213 {
1214 BI opval = 0;
1215 SET_H_INSN_PREFIXED_P (opval);
1216 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1217 }
1218 }
1219 }
1220 }
1221
1222 #undef FLD
1223 }
1224 NEXT (vpc);
1225
1226 CASE (sem, INSN_MOVUCWR) : /* movu.w ${uconst16},${Rd} */
1227 {
1228 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1229 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1230 #define FLD(f) abuf->fields.sfmt_bound_cw.f
1231 int UNUSED written = 0;
1232 IADDR UNUSED pc = abuf->addr;
1233 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1234
1235 {
1236 SI tmp_newval;
1237 tmp_newval = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
1238 {
1239 SI opval = tmp_newval;
1240 SET_H_GR (FLD (f_operand2), opval);
1241 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1242 }
1243 {
1244 {
1245 BI opval = LTSI (tmp_newval, 0);
1246 CPU (h_nbit) = opval;
1247 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1248 }
1249 {
1250 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1251 CPU (h_zbit) = opval;
1252 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1253 }
1254 SET_H_CBIT_MOVE (0);
1255 SET_H_VBIT_MOVE (0);
1256 {
1257 {
1258 BI opval = 0;
1259 CPU (h_xbit) = opval;
1260 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1261 }
1262 {
1263 BI opval = 0;
1264 SET_H_INSN_PREFIXED_P (opval);
1265 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1266 }
1267 }
1268 }
1269 }
1270
1271 #undef FLD
1272 }
1273 NEXT (vpc);
1274
1275 CASE (sem, INSN_ADDQ) : /* addq $j,$Rd */
1276 {
1277 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1278 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1279 #define FLD(f) abuf->fields.sfmt_addq.f
1280 int UNUSED written = 0;
1281 IADDR UNUSED pc = abuf->addr;
1282 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1283
1284 {
1285 SI tmp_tmpopd;
1286 SI tmp_tmpops;
1287 BI tmp_carry;
1288 SI tmp_newval;
1289 tmp_tmpops = FLD (f_u6);
1290 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1291 tmp_carry = CPU (h_cbit);
1292 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1293 {
1294 SI opval = tmp_newval;
1295 SET_H_GR (FLD (f_operand2), opval);
1296 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1297 }
1298 {
1299 {
1300 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))));
1301 CPU (h_cbit) = opval;
1302 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1303 }
1304 {
1305 BI opval = LTSI (tmp_newval, 0);
1306 CPU (h_nbit) = opval;
1307 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1308 }
1309 {
1310 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1311 CPU (h_zbit) = opval;
1312 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1313 }
1314 {
1315 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)));
1316 CPU (h_vbit) = opval;
1317 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1318 }
1319 {
1320 {
1321 BI opval = 0;
1322 CPU (h_xbit) = opval;
1323 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1324 }
1325 {
1326 BI opval = 0;
1327 SET_H_INSN_PREFIXED_P (opval);
1328 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1329 }
1330 }
1331 }
1332 }
1333
1334 #undef FLD
1335 }
1336 NEXT (vpc);
1337
1338 CASE (sem, INSN_SUBQ) : /* subq $j,$Rd */
1339 {
1340 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1341 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1342 #define FLD(f) abuf->fields.sfmt_addq.f
1343 int UNUSED written = 0;
1344 IADDR UNUSED pc = abuf->addr;
1345 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1346
1347 {
1348 SI tmp_tmpopd;
1349 SI tmp_tmpops;
1350 BI tmp_carry;
1351 SI tmp_newval;
1352 tmp_tmpops = FLD (f_u6);
1353 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1354 tmp_carry = CPU (h_cbit);
1355 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1356 {
1357 SI opval = tmp_newval;
1358 SET_H_GR (FLD (f_operand2), opval);
1359 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1360 }
1361 {
1362 {
1363 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))));
1364 CPU (h_cbit) = opval;
1365 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1366 }
1367 {
1368 BI opval = LTSI (tmp_newval, 0);
1369 CPU (h_nbit) = opval;
1370 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1371 }
1372 {
1373 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1374 CPU (h_zbit) = opval;
1375 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1376 }
1377 {
1378 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)));
1379 CPU (h_vbit) = opval;
1380 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1381 }
1382 {
1383 {
1384 BI opval = 0;
1385 CPU (h_xbit) = opval;
1386 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1387 }
1388 {
1389 BI opval = 0;
1390 SET_H_INSN_PREFIXED_P (opval);
1391 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1392 }
1393 }
1394 }
1395 }
1396
1397 #undef FLD
1398 }
1399 NEXT (vpc);
1400
1401 CASE (sem, INSN_CMP_R_B_R) : /* cmp-r.b $Rs,$Rd */
1402 {
1403 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1404 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1405 #define FLD(f) abuf->fields.sfmt_add_b_r.f
1406 int UNUSED written = 0;
1407 IADDR UNUSED pc = abuf->addr;
1408 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1409
1410 {
1411 QI tmp_tmpopd;
1412 QI tmp_tmpops;
1413 BI tmp_carry;
1414 QI tmp_newval;
1415 tmp_tmpops = GET_H_GR (FLD (f_operand1));
1416 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1417 tmp_carry = CPU (h_cbit);
1418 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1419 ((void) 0); /*nop*/
1420 {
1421 {
1422 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))));
1423 CPU (h_cbit) = opval;
1424 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1425 }
1426 {
1427 BI opval = LTQI (tmp_newval, 0);
1428 CPU (h_nbit) = opval;
1429 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1430 }
1431 {
1432 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1433 CPU (h_zbit) = opval;
1434 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1435 }
1436 {
1437 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)));
1438 CPU (h_vbit) = opval;
1439 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1440 }
1441 {
1442 {
1443 BI opval = 0;
1444 CPU (h_xbit) = opval;
1445 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1446 }
1447 {
1448 BI opval = 0;
1449 SET_H_INSN_PREFIXED_P (opval);
1450 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1451 }
1452 }
1453 }
1454 }
1455
1456 #undef FLD
1457 }
1458 NEXT (vpc);
1459
1460 CASE (sem, INSN_CMP_R_W_R) : /* cmp-r.w $Rs,$Rd */
1461 {
1462 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1463 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1464 #define FLD(f) abuf->fields.sfmt_add_b_r.f
1465 int UNUSED written = 0;
1466 IADDR UNUSED pc = abuf->addr;
1467 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1468
1469 {
1470 HI tmp_tmpopd;
1471 HI tmp_tmpops;
1472 BI tmp_carry;
1473 HI tmp_newval;
1474 tmp_tmpops = GET_H_GR (FLD (f_operand1));
1475 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1476 tmp_carry = CPU (h_cbit);
1477 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1478 ((void) 0); /*nop*/
1479 {
1480 {
1481 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))));
1482 CPU (h_cbit) = opval;
1483 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1484 }
1485 {
1486 BI opval = LTHI (tmp_newval, 0);
1487 CPU (h_nbit) = opval;
1488 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1489 }
1490 {
1491 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1492 CPU (h_zbit) = opval;
1493 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1494 }
1495 {
1496 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)));
1497 CPU (h_vbit) = opval;
1498 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1499 }
1500 {
1501 {
1502 BI opval = 0;
1503 CPU (h_xbit) = opval;
1504 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1505 }
1506 {
1507 BI opval = 0;
1508 SET_H_INSN_PREFIXED_P (opval);
1509 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1510 }
1511 }
1512 }
1513 }
1514
1515 #undef FLD
1516 }
1517 NEXT (vpc);
1518
1519 CASE (sem, INSN_CMP_R_D_R) : /* cmp-r.d $Rs,$Rd */
1520 {
1521 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1522 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1523 #define FLD(f) abuf->fields.sfmt_add_b_r.f
1524 int UNUSED written = 0;
1525 IADDR UNUSED pc = abuf->addr;
1526 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1527
1528 {
1529 SI tmp_tmpopd;
1530 SI tmp_tmpops;
1531 BI tmp_carry;
1532 SI tmp_newval;
1533 tmp_tmpops = GET_H_GR (FLD (f_operand1));
1534 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1535 tmp_carry = CPU (h_cbit);
1536 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1537 ((void) 0); /*nop*/
1538 {
1539 {
1540 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))));
1541 CPU (h_cbit) = opval;
1542 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1543 }
1544 {
1545 BI opval = LTSI (tmp_newval, 0);
1546 CPU (h_nbit) = opval;
1547 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1548 }
1549 {
1550 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1551 CPU (h_zbit) = opval;
1552 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1553 }
1554 {
1555 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)));
1556 CPU (h_vbit) = opval;
1557 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1558 }
1559 {
1560 {
1561 BI opval = 0;
1562 CPU (h_xbit) = opval;
1563 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1564 }
1565 {
1566 BI opval = 0;
1567 SET_H_INSN_PREFIXED_P (opval);
1568 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1569 }
1570 }
1571 }
1572 }
1573
1574 #undef FLD
1575 }
1576 NEXT (vpc);
1577
1578 CASE (sem, INSN_CMP_M_B_M) : /* cmp-m.b [${Rs}${inc}],${Rd} */
1579 {
1580 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1581 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1582 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
1583 int UNUSED written = 0;
1584 IADDR UNUSED pc = abuf->addr;
1585 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1586
1587 {
1588 QI tmp_tmpopd;
1589 QI tmp_tmpops;
1590 BI tmp_carry;
1591 QI tmp_newval;
1592 tmp_tmpops = ({ SI tmp_addr;
1593 QI tmp_tmp_mem;
1594 BI tmp_postinc;
1595 tmp_postinc = FLD (f_memmode);
1596 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
1597 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
1598 ; if (NEBI (tmp_postinc, 0)) {
1599 {
1600 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
1601 tmp_addr = ADDSI (tmp_addr, 1);
1602 }
1603 {
1604 SI opval = tmp_addr;
1605 SET_H_GR (FLD (f_operand1), opval);
1606 written |= (1 << 9);
1607 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1608 }
1609 }
1610 }
1611 ; tmp_tmp_mem; });
1612 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1613 tmp_carry = CPU (h_cbit);
1614 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1615 ((void) 0); /*nop*/
1616 {
1617 {
1618 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))));
1619 CPU (h_cbit) = opval;
1620 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1621 }
1622 {
1623 BI opval = LTQI (tmp_newval, 0);
1624 CPU (h_nbit) = opval;
1625 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1626 }
1627 {
1628 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1629 CPU (h_zbit) = opval;
1630 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1631 }
1632 {
1633 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)));
1634 CPU (h_vbit) = opval;
1635 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1636 }
1637 {
1638 {
1639 BI opval = 0;
1640 CPU (h_xbit) = opval;
1641 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1642 }
1643 {
1644 BI opval = 0;
1645 SET_H_INSN_PREFIXED_P (opval);
1646 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1647 }
1648 }
1649 }
1650 }
1651
1652 abuf->written = written;
1653 #undef FLD
1654 }
1655 NEXT (vpc);
1656
1657 CASE (sem, INSN_CMP_M_W_M) : /* cmp-m.w [${Rs}${inc}],${Rd} */
1658 {
1659 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1660 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1661 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
1662 int UNUSED written = 0;
1663 IADDR UNUSED pc = abuf->addr;
1664 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1665
1666 {
1667 HI tmp_tmpopd;
1668 HI tmp_tmpops;
1669 BI tmp_carry;
1670 HI tmp_newval;
1671 tmp_tmpops = ({ SI tmp_addr;
1672 HI tmp_tmp_mem;
1673 BI tmp_postinc;
1674 tmp_postinc = FLD (f_memmode);
1675 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
1676 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
1677 ; if (NEBI (tmp_postinc, 0)) {
1678 {
1679 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
1680 tmp_addr = ADDSI (tmp_addr, 2);
1681 }
1682 {
1683 SI opval = tmp_addr;
1684 SET_H_GR (FLD (f_operand1), opval);
1685 written |= (1 << 9);
1686 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1687 }
1688 }
1689 }
1690 ; tmp_tmp_mem; });
1691 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1692 tmp_carry = CPU (h_cbit);
1693 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1694 ((void) 0); /*nop*/
1695 {
1696 {
1697 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))));
1698 CPU (h_cbit) = opval;
1699 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1700 }
1701 {
1702 BI opval = LTHI (tmp_newval, 0);
1703 CPU (h_nbit) = opval;
1704 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1705 }
1706 {
1707 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1708 CPU (h_zbit) = opval;
1709 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1710 }
1711 {
1712 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)));
1713 CPU (h_vbit) = opval;
1714 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1715 }
1716 {
1717 {
1718 BI opval = 0;
1719 CPU (h_xbit) = opval;
1720 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1721 }
1722 {
1723 BI opval = 0;
1724 SET_H_INSN_PREFIXED_P (opval);
1725 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1726 }
1727 }
1728 }
1729 }
1730
1731 abuf->written = written;
1732 #undef FLD
1733 }
1734 NEXT (vpc);
1735
1736 CASE (sem, INSN_CMP_M_D_M) : /* cmp-m.d [${Rs}${inc}],${Rd} */
1737 {
1738 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1739 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1740 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
1741 int UNUSED written = 0;
1742 IADDR UNUSED pc = abuf->addr;
1743 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1744
1745 {
1746 SI tmp_tmpopd;
1747 SI tmp_tmpops;
1748 BI tmp_carry;
1749 SI tmp_newval;
1750 tmp_tmpops = ({ SI tmp_addr;
1751 SI tmp_tmp_mem;
1752 BI tmp_postinc;
1753 tmp_postinc = FLD (f_memmode);
1754 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
1755 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
1756 ; if (NEBI (tmp_postinc, 0)) {
1757 {
1758 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
1759 tmp_addr = ADDSI (tmp_addr, 4);
1760 }
1761 {
1762 SI opval = tmp_addr;
1763 SET_H_GR (FLD (f_operand1), opval);
1764 written |= (1 << 9);
1765 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1766 }
1767 }
1768 }
1769 ; tmp_tmp_mem; });
1770 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1771 tmp_carry = CPU (h_cbit);
1772 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1773 ((void) 0); /*nop*/
1774 {
1775 {
1776 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))));
1777 CPU (h_cbit) = opval;
1778 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1779 }
1780 {
1781 BI opval = LTSI (tmp_newval, 0);
1782 CPU (h_nbit) = opval;
1783 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1784 }
1785 {
1786 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1787 CPU (h_zbit) = opval;
1788 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1789 }
1790 {
1791 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)));
1792 CPU (h_vbit) = opval;
1793 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1794 }
1795 {
1796 {
1797 BI opval = 0;
1798 CPU (h_xbit) = opval;
1799 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1800 }
1801 {
1802 BI opval = 0;
1803 SET_H_INSN_PREFIXED_P (opval);
1804 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1805 }
1806 }
1807 }
1808 }
1809
1810 abuf->written = written;
1811 #undef FLD
1812 }
1813 NEXT (vpc);
1814
1815 CASE (sem, INSN_CMPCBR) : /* cmp.b $sconst8,$Rd */
1816 {
1817 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1818 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1819 #define FLD(f) abuf->fields.sfmt_bound_cb.f
1820 int UNUSED written = 0;
1821 IADDR UNUSED pc = abuf->addr;
1822 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1823
1824 {
1825 QI tmp_tmpopd;
1826 QI tmp_tmpops;
1827 BI tmp_carry;
1828 QI tmp_newval;
1829 tmp_tmpops = TRUNCSIQI (FLD (f_indir_pc__byte));
1830 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1831 tmp_carry = CPU (h_cbit);
1832 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1833 ((void) 0); /*nop*/
1834 {
1835 {
1836 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))));
1837 CPU (h_cbit) = opval;
1838 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1839 }
1840 {
1841 BI opval = LTQI (tmp_newval, 0);
1842 CPU (h_nbit) = opval;
1843 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1844 }
1845 {
1846 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1847 CPU (h_zbit) = opval;
1848 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1849 }
1850 {
1851 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)));
1852 CPU (h_vbit) = opval;
1853 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1854 }
1855 {
1856 {
1857 BI opval = 0;
1858 CPU (h_xbit) = opval;
1859 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1860 }
1861 {
1862 BI opval = 0;
1863 SET_H_INSN_PREFIXED_P (opval);
1864 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1865 }
1866 }
1867 }
1868 }
1869
1870 #undef FLD
1871 }
1872 NEXT (vpc);
1873
1874 CASE (sem, INSN_CMPCWR) : /* cmp.w $sconst16,$Rd */
1875 {
1876 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1877 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1878 #define FLD(f) abuf->fields.sfmt_bound_cw.f
1879 int UNUSED written = 0;
1880 IADDR UNUSED pc = abuf->addr;
1881 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1882
1883 {
1884 HI tmp_tmpopd;
1885 HI tmp_tmpops;
1886 BI tmp_carry;
1887 HI tmp_newval;
1888 tmp_tmpops = TRUNCSIHI (FLD (f_indir_pc__word));
1889 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1890 tmp_carry = CPU (h_cbit);
1891 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1892 ((void) 0); /*nop*/
1893 {
1894 {
1895 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))));
1896 CPU (h_cbit) = opval;
1897 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1898 }
1899 {
1900 BI opval = LTHI (tmp_newval, 0);
1901 CPU (h_nbit) = opval;
1902 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1903 }
1904 {
1905 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1906 CPU (h_zbit) = opval;
1907 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1908 }
1909 {
1910 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)));
1911 CPU (h_vbit) = opval;
1912 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1913 }
1914 {
1915 {
1916 BI opval = 0;
1917 CPU (h_xbit) = opval;
1918 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1919 }
1920 {
1921 BI opval = 0;
1922 SET_H_INSN_PREFIXED_P (opval);
1923 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1924 }
1925 }
1926 }
1927 }
1928
1929 #undef FLD
1930 }
1931 NEXT (vpc);
1932
1933 CASE (sem, INSN_CMPCDR) : /* cmp.d $const32,$Rd */
1934 {
1935 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1936 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1937 #define FLD(f) abuf->fields.sfmt_bound_cd.f
1938 int UNUSED written = 0;
1939 IADDR UNUSED pc = abuf->addr;
1940 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
1941
1942 {
1943 SI tmp_tmpopd;
1944 SI tmp_tmpops;
1945 BI tmp_carry;
1946 SI tmp_newval;
1947 tmp_tmpops = FLD (f_indir_pc__dword);
1948 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1949 tmp_carry = CPU (h_cbit);
1950 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1951 ((void) 0); /*nop*/
1952 {
1953 {
1954 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))));
1955 CPU (h_cbit) = opval;
1956 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1957 }
1958 {
1959 BI opval = LTSI (tmp_newval, 0);
1960 CPU (h_nbit) = opval;
1961 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1962 }
1963 {
1964 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1965 CPU (h_zbit) = opval;
1966 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1967 }
1968 {
1969 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)));
1970 CPU (h_vbit) = opval;
1971 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1972 }
1973 {
1974 {
1975 BI opval = 0;
1976 CPU (h_xbit) = opval;
1977 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1978 }
1979 {
1980 BI opval = 0;
1981 SET_H_INSN_PREFIXED_P (opval);
1982 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1983 }
1984 }
1985 }
1986 }
1987
1988 #undef FLD
1989 }
1990 NEXT (vpc);
1991
1992 CASE (sem, INSN_CMPQ) : /* cmpq $i,$Rd */
1993 {
1994 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1995 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1996 #define FLD(f) abuf->fields.sfmt_andq.f
1997 int UNUSED written = 0;
1998 IADDR UNUSED pc = abuf->addr;
1999 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2000
2001 {
2002 SI tmp_tmpopd;
2003 SI tmp_tmpops;
2004 BI tmp_carry;
2005 SI tmp_newval;
2006 tmp_tmpops = FLD (f_s6);
2007 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2008 tmp_carry = CPU (h_cbit);
2009 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2010 ((void) 0); /*nop*/
2011 {
2012 {
2013 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))));
2014 CPU (h_cbit) = opval;
2015 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2016 }
2017 {
2018 BI opval = LTSI (tmp_newval, 0);
2019 CPU (h_nbit) = opval;
2020 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2021 }
2022 {
2023 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2024 CPU (h_zbit) = opval;
2025 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2026 }
2027 {
2028 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)));
2029 CPU (h_vbit) = opval;
2030 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2031 }
2032 {
2033 {
2034 BI opval = 0;
2035 CPU (h_xbit) = opval;
2036 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2037 }
2038 {
2039 BI opval = 0;
2040 SET_H_INSN_PREFIXED_P (opval);
2041 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2042 }
2043 }
2044 }
2045 }
2046
2047 #undef FLD
2048 }
2049 NEXT (vpc);
2050
2051 CASE (sem, INSN_CMPS_M_B_M) : /* cmps-m.b [${Rs}${inc}],$Rd */
2052 {
2053 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2054 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2055 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2056 int UNUSED written = 0;
2057 IADDR UNUSED pc = abuf->addr;
2058 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2059
2060 {
2061 SI tmp_tmpopd;
2062 SI tmp_tmpops;
2063 BI tmp_carry;
2064 SI tmp_newval;
2065 tmp_tmpops = EXTQISI (({ SI tmp_addr;
2066 QI tmp_tmp_mem;
2067 BI tmp_postinc;
2068 tmp_postinc = FLD (f_memmode);
2069 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2070 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
2071 ; if (NEBI (tmp_postinc, 0)) {
2072 {
2073 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2074 tmp_addr = ADDSI (tmp_addr, 1);
2075 }
2076 {
2077 SI opval = tmp_addr;
2078 SET_H_GR (FLD (f_operand1), opval);
2079 written |= (1 << 9);
2080 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2081 }
2082 }
2083 }
2084 ; tmp_tmp_mem; }));
2085 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2086 tmp_carry = CPU (h_cbit);
2087 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2088 ((void) 0); /*nop*/
2089 {
2090 {
2091 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))));
2092 CPU (h_cbit) = opval;
2093 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2094 }
2095 {
2096 BI opval = LTSI (tmp_newval, 0);
2097 CPU (h_nbit) = opval;
2098 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2099 }
2100 {
2101 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2102 CPU (h_zbit) = opval;
2103 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2104 }
2105 {
2106 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)));
2107 CPU (h_vbit) = opval;
2108 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2109 }
2110 {
2111 {
2112 BI opval = 0;
2113 CPU (h_xbit) = opval;
2114 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2115 }
2116 {
2117 BI opval = 0;
2118 SET_H_INSN_PREFIXED_P (opval);
2119 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2120 }
2121 }
2122 }
2123 }
2124
2125 abuf->written = written;
2126 #undef FLD
2127 }
2128 NEXT (vpc);
2129
2130 CASE (sem, INSN_CMPS_M_W_M) : /* cmps-m.w [${Rs}${inc}],$Rd */
2131 {
2132 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2133 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2134 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2135 int UNUSED written = 0;
2136 IADDR UNUSED pc = abuf->addr;
2137 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2138
2139 {
2140 SI tmp_tmpopd;
2141 SI tmp_tmpops;
2142 BI tmp_carry;
2143 SI tmp_newval;
2144 tmp_tmpops = EXTHISI (({ SI tmp_addr;
2145 HI tmp_tmp_mem;
2146 BI tmp_postinc;
2147 tmp_postinc = FLD (f_memmode);
2148 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2149 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
2150 ; if (NEBI (tmp_postinc, 0)) {
2151 {
2152 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2153 tmp_addr = ADDSI (tmp_addr, 2);
2154 }
2155 {
2156 SI opval = tmp_addr;
2157 SET_H_GR (FLD (f_operand1), opval);
2158 written |= (1 << 9);
2159 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2160 }
2161 }
2162 }
2163 ; tmp_tmp_mem; }));
2164 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2165 tmp_carry = CPU (h_cbit);
2166 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2167 ((void) 0); /*nop*/
2168 {
2169 {
2170 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))));
2171 CPU (h_cbit) = opval;
2172 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2173 }
2174 {
2175 BI opval = LTSI (tmp_newval, 0);
2176 CPU (h_nbit) = opval;
2177 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2178 }
2179 {
2180 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2181 CPU (h_zbit) = opval;
2182 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2183 }
2184 {
2185 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)));
2186 CPU (h_vbit) = opval;
2187 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2188 }
2189 {
2190 {
2191 BI opval = 0;
2192 CPU (h_xbit) = opval;
2193 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2194 }
2195 {
2196 BI opval = 0;
2197 SET_H_INSN_PREFIXED_P (opval);
2198 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2199 }
2200 }
2201 }
2202 }
2203
2204 abuf->written = written;
2205 #undef FLD
2206 }
2207 NEXT (vpc);
2208
2209 CASE (sem, INSN_CMPSCBR) : /* [${Rs}${inc}],$Rd */
2210 {
2211 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2212 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2213 #define FLD(f) abuf->fields.sfmt_bound_cb.f
2214 int UNUSED written = 0;
2215 IADDR UNUSED pc = abuf->addr;
2216 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2217
2218 {
2219 SI tmp_tmpopd;
2220 SI tmp_tmpops;
2221 BI tmp_carry;
2222 SI tmp_newval;
2223 tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
2224 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2225 tmp_carry = CPU (h_cbit);
2226 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2227 ((void) 0); /*nop*/
2228 {
2229 {
2230 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))));
2231 CPU (h_cbit) = opval;
2232 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2233 }
2234 {
2235 BI opval = LTSI (tmp_newval, 0);
2236 CPU (h_nbit) = opval;
2237 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2238 }
2239 {
2240 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2241 CPU (h_zbit) = opval;
2242 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2243 }
2244 {
2245 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)));
2246 CPU (h_vbit) = opval;
2247 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2248 }
2249 {
2250 {
2251 BI opval = 0;
2252 CPU (h_xbit) = opval;
2253 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2254 }
2255 {
2256 BI opval = 0;
2257 SET_H_INSN_PREFIXED_P (opval);
2258 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2259 }
2260 }
2261 }
2262 }
2263
2264 #undef FLD
2265 }
2266 NEXT (vpc);
2267
2268 CASE (sem, INSN_CMPSCWR) : /* [${Rs}${inc}],$Rd */
2269 {
2270 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2271 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2272 #define FLD(f) abuf->fields.sfmt_bound_cw.f
2273 int UNUSED written = 0;
2274 IADDR UNUSED pc = abuf->addr;
2275 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2276
2277 {
2278 SI tmp_tmpopd;
2279 SI tmp_tmpops;
2280 BI tmp_carry;
2281 SI tmp_newval;
2282 tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
2283 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2284 tmp_carry = CPU (h_cbit);
2285 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2286 ((void) 0); /*nop*/
2287 {
2288 {
2289 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))));
2290 CPU (h_cbit) = opval;
2291 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2292 }
2293 {
2294 BI opval = LTSI (tmp_newval, 0);
2295 CPU (h_nbit) = opval;
2296 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2297 }
2298 {
2299 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2300 CPU (h_zbit) = opval;
2301 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2302 }
2303 {
2304 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)));
2305 CPU (h_vbit) = opval;
2306 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2307 }
2308 {
2309 {
2310 BI opval = 0;
2311 CPU (h_xbit) = opval;
2312 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2313 }
2314 {
2315 BI opval = 0;
2316 SET_H_INSN_PREFIXED_P (opval);
2317 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2318 }
2319 }
2320 }
2321 }
2322
2323 #undef FLD
2324 }
2325 NEXT (vpc);
2326
2327 CASE (sem, INSN_CMPU_M_B_M) : /* cmpu-m.b [${Rs}${inc}],$Rd */
2328 {
2329 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2330 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2331 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2332 int UNUSED written = 0;
2333 IADDR UNUSED pc = abuf->addr;
2334 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2335
2336 {
2337 SI tmp_tmpopd;
2338 SI tmp_tmpops;
2339 BI tmp_carry;
2340 SI tmp_newval;
2341 tmp_tmpops = ZEXTQISI (({ SI tmp_addr;
2342 QI tmp_tmp_mem;
2343 BI tmp_postinc;
2344 tmp_postinc = FLD (f_memmode);
2345 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2346 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
2347 ; if (NEBI (tmp_postinc, 0)) {
2348 {
2349 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2350 tmp_addr = ADDSI (tmp_addr, 1);
2351 }
2352 {
2353 SI opval = tmp_addr;
2354 SET_H_GR (FLD (f_operand1), opval);
2355 written |= (1 << 9);
2356 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2357 }
2358 }
2359 }
2360 ; tmp_tmp_mem; }));
2361 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2362 tmp_carry = CPU (h_cbit);
2363 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2364 ((void) 0); /*nop*/
2365 {
2366 {
2367 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))));
2368 CPU (h_cbit) = opval;
2369 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2370 }
2371 {
2372 BI opval = LTSI (tmp_newval, 0);
2373 CPU (h_nbit) = opval;
2374 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2375 }
2376 {
2377 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2378 CPU (h_zbit) = opval;
2379 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2380 }
2381 {
2382 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)));
2383 CPU (h_vbit) = opval;
2384 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2385 }
2386 {
2387 {
2388 BI opval = 0;
2389 CPU (h_xbit) = opval;
2390 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2391 }
2392 {
2393 BI opval = 0;
2394 SET_H_INSN_PREFIXED_P (opval);
2395 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2396 }
2397 }
2398 }
2399 }
2400
2401 abuf->written = written;
2402 #undef FLD
2403 }
2404 NEXT (vpc);
2405
2406 CASE (sem, INSN_CMPU_M_W_M) : /* cmpu-m.w [${Rs}${inc}],$Rd */
2407 {
2408 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2409 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2410 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2411 int UNUSED written = 0;
2412 IADDR UNUSED pc = abuf->addr;
2413 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2414
2415 {
2416 SI tmp_tmpopd;
2417 SI tmp_tmpops;
2418 BI tmp_carry;
2419 SI tmp_newval;
2420 tmp_tmpops = ZEXTHISI (({ SI tmp_addr;
2421 HI tmp_tmp_mem;
2422 BI tmp_postinc;
2423 tmp_postinc = FLD (f_memmode);
2424 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2425 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
2426 ; if (NEBI (tmp_postinc, 0)) {
2427 {
2428 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2429 tmp_addr = ADDSI (tmp_addr, 2);
2430 }
2431 {
2432 SI opval = tmp_addr;
2433 SET_H_GR (FLD (f_operand1), opval);
2434 written |= (1 << 9);
2435 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2436 }
2437 }
2438 }
2439 ; tmp_tmp_mem; }));
2440 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2441 tmp_carry = CPU (h_cbit);
2442 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2443 ((void) 0); /*nop*/
2444 {
2445 {
2446 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))));
2447 CPU (h_cbit) = opval;
2448 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2449 }
2450 {
2451 BI opval = LTSI (tmp_newval, 0);
2452 CPU (h_nbit) = opval;
2453 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2454 }
2455 {
2456 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2457 CPU (h_zbit) = opval;
2458 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2459 }
2460 {
2461 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)));
2462 CPU (h_vbit) = opval;
2463 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2464 }
2465 {
2466 {
2467 BI opval = 0;
2468 CPU (h_xbit) = opval;
2469 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2470 }
2471 {
2472 BI opval = 0;
2473 SET_H_INSN_PREFIXED_P (opval);
2474 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2475 }
2476 }
2477 }
2478 }
2479
2480 abuf->written = written;
2481 #undef FLD
2482 }
2483 NEXT (vpc);
2484
2485 CASE (sem, INSN_CMPUCBR) : /* [${Rs}${inc}],$Rd */
2486 {
2487 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2488 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2489 #define FLD(f) abuf->fields.sfmt_bound_cb.f
2490 int UNUSED written = 0;
2491 IADDR UNUSED pc = abuf->addr;
2492 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2493
2494 {
2495 SI tmp_tmpopd;
2496 SI tmp_tmpops;
2497 BI tmp_carry;
2498 SI tmp_newval;
2499 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
2500 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2501 tmp_carry = CPU (h_cbit);
2502 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2503 ((void) 0); /*nop*/
2504 {
2505 {
2506 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))));
2507 CPU (h_cbit) = opval;
2508 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2509 }
2510 {
2511 BI opval = LTSI (tmp_newval, 0);
2512 CPU (h_nbit) = opval;
2513 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2514 }
2515 {
2516 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2517 CPU (h_zbit) = opval;
2518 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2519 }
2520 {
2521 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)));
2522 CPU (h_vbit) = opval;
2523 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2524 }
2525 {
2526 {
2527 BI opval = 0;
2528 CPU (h_xbit) = opval;
2529 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2530 }
2531 {
2532 BI opval = 0;
2533 SET_H_INSN_PREFIXED_P (opval);
2534 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2535 }
2536 }
2537 }
2538 }
2539
2540 #undef FLD
2541 }
2542 NEXT (vpc);
2543
2544 CASE (sem, INSN_CMPUCWR) : /* [${Rs}${inc}],$Rd */
2545 {
2546 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2547 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2548 #define FLD(f) abuf->fields.sfmt_bound_cw.f
2549 int UNUSED written = 0;
2550 IADDR UNUSED pc = abuf->addr;
2551 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2552
2553 {
2554 SI tmp_tmpopd;
2555 SI tmp_tmpops;
2556 BI tmp_carry;
2557 SI tmp_newval;
2558 tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
2559 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2560 tmp_carry = CPU (h_cbit);
2561 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2562 ((void) 0); /*nop*/
2563 {
2564 {
2565 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))));
2566 CPU (h_cbit) = opval;
2567 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2568 }
2569 {
2570 BI opval = LTSI (tmp_newval, 0);
2571 CPU (h_nbit) = opval;
2572 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2573 }
2574 {
2575 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2576 CPU (h_zbit) = opval;
2577 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2578 }
2579 {
2580 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)));
2581 CPU (h_vbit) = opval;
2582 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2583 }
2584 {
2585 {
2586 BI opval = 0;
2587 CPU (h_xbit) = opval;
2588 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2589 }
2590 {
2591 BI opval = 0;
2592 SET_H_INSN_PREFIXED_P (opval);
2593 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2594 }
2595 }
2596 }
2597 }
2598
2599 #undef FLD
2600 }
2601 NEXT (vpc);
2602
2603 CASE (sem, INSN_MOVE_M_B_M) : /* move-m.b [${Rs}${inc}],${Rd} */
2604 {
2605 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2606 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2607 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2608 int UNUSED written = 0;
2609 IADDR UNUSED pc = abuf->addr;
2610 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2611
2612 {
2613 SI tmp_tmp;
2614 tmp_tmp = ({ SI tmp_addr;
2615 QI tmp_tmp_mem;
2616 BI tmp_postinc;
2617 tmp_postinc = FLD (f_memmode);
2618 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2619 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
2620 ; if (NEBI (tmp_postinc, 0)) {
2621 {
2622 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2623 tmp_addr = ADDSI (tmp_addr, 1);
2624 }
2625 {
2626 SI opval = tmp_addr;
2627 SET_H_GR (FLD (f_operand1), opval);
2628 written |= (1 << 10);
2629 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2630 }
2631 }
2632 }
2633 ; tmp_tmp_mem; });
2634 {
2635 SI tmp_oldregval;
2636 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
2637 {
2638 SI opval = ORSI (ANDSI (tmp_tmp, 255), ANDSI (tmp_oldregval, 0xffffff00));
2639 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
2640 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2641 }
2642 }
2643 {
2644 {
2645 BI opval = LTQI (tmp_tmp, 0);
2646 CPU (h_nbit) = opval;
2647 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2648 }
2649 {
2650 BI opval = ANDIF (EQQI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
2651 CPU (h_zbit) = opval;
2652 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2653 }
2654 SET_H_CBIT_MOVE (0);
2655 SET_H_VBIT_MOVE (0);
2656 {
2657 {
2658 BI opval = 0;
2659 CPU (h_xbit) = opval;
2660 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2661 }
2662 {
2663 BI opval = 0;
2664 SET_H_INSN_PREFIXED_P (opval);
2665 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2666 }
2667 }
2668 }
2669 }
2670
2671 abuf->written = written;
2672 #undef FLD
2673 }
2674 NEXT (vpc);
2675
2676 CASE (sem, INSN_MOVE_M_W_M) : /* move-m.w [${Rs}${inc}],${Rd} */
2677 {
2678 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2679 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2680 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2681 int UNUSED written = 0;
2682 IADDR UNUSED pc = abuf->addr;
2683 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2684
2685 {
2686 SI tmp_tmp;
2687 tmp_tmp = ({ SI tmp_addr;
2688 HI tmp_tmp_mem;
2689 BI tmp_postinc;
2690 tmp_postinc = FLD (f_memmode);
2691 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2692 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
2693 ; if (NEBI (tmp_postinc, 0)) {
2694 {
2695 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2696 tmp_addr = ADDSI (tmp_addr, 2);
2697 }
2698 {
2699 SI opval = tmp_addr;
2700 SET_H_GR (FLD (f_operand1), opval);
2701 written |= (1 << 10);
2702 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2703 }
2704 }
2705 }
2706 ; tmp_tmp_mem; });
2707 {
2708 SI tmp_oldregval;
2709 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
2710 {
2711 SI opval = ORSI (ANDSI (tmp_tmp, 65535), ANDSI (tmp_oldregval, 0xffff0000));
2712 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
2713 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2714 }
2715 }
2716 {
2717 {
2718 BI opval = LTHI (tmp_tmp, 0);
2719 CPU (h_nbit) = opval;
2720 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2721 }
2722 {
2723 BI opval = ANDIF (EQHI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
2724 CPU (h_zbit) = opval;
2725 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2726 }
2727 SET_H_CBIT_MOVE (0);
2728 SET_H_VBIT_MOVE (0);
2729 {
2730 {
2731 BI opval = 0;
2732 CPU (h_xbit) = opval;
2733 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2734 }
2735 {
2736 BI opval = 0;
2737 SET_H_INSN_PREFIXED_P (opval);
2738 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2739 }
2740 }
2741 }
2742 }
2743
2744 abuf->written = written;
2745 #undef FLD
2746 }
2747 NEXT (vpc);
2748
2749 CASE (sem, INSN_MOVE_M_D_M) : /* move-m.d [${Rs}${inc}],${Rd} */
2750 {
2751 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2752 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2753 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2754 int UNUSED written = 0;
2755 IADDR UNUSED pc = abuf->addr;
2756 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2757
2758 {
2759 SI tmp_tmp;
2760 tmp_tmp = ({ SI tmp_addr;
2761 SI tmp_tmp_mem;
2762 BI tmp_postinc;
2763 tmp_postinc = FLD (f_memmode);
2764 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2765 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
2766 ; if (NEBI (tmp_postinc, 0)) {
2767 {
2768 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2769 tmp_addr = ADDSI (tmp_addr, 4);
2770 }
2771 {
2772 SI opval = tmp_addr;
2773 SET_H_GR (FLD (f_operand1), opval);
2774 written |= (1 << 9);
2775 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2776 }
2777 }
2778 }
2779 ; tmp_tmp_mem; });
2780 {
2781 SI opval = tmp_tmp;
2782 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
2783 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2784 }
2785 {
2786 {
2787 BI opval = LTSI (tmp_tmp, 0);
2788 CPU (h_nbit) = opval;
2789 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2790 }
2791 {
2792 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
2793 CPU (h_zbit) = opval;
2794 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2795 }
2796 SET_H_CBIT_MOVE (0);
2797 SET_H_VBIT_MOVE (0);
2798 {
2799 {
2800 BI opval = 0;
2801 CPU (h_xbit) = opval;
2802 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2803 }
2804 {
2805 BI opval = 0;
2806 SET_H_INSN_PREFIXED_P (opval);
2807 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2808 }
2809 }
2810 }
2811 }
2812
2813 abuf->written = written;
2814 #undef FLD
2815 }
2816 NEXT (vpc);
2817
2818 CASE (sem, INSN_MOVS_M_B_M) : /* movs-m.b [${Rs}${inc}],${Rd} */
2819 {
2820 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2822 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2823 int UNUSED written = 0;
2824 IADDR UNUSED pc = abuf->addr;
2825 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2826
2827 {
2828 SI tmp_tmp;
2829 tmp_tmp = EXTQISI (({ SI tmp_addr;
2830 QI tmp_tmp_mem;
2831 BI tmp_postinc;
2832 tmp_postinc = FLD (f_memmode);
2833 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2834 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
2835 ; if (NEBI (tmp_postinc, 0)) {
2836 {
2837 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2838 tmp_addr = ADDSI (tmp_addr, 1);
2839 }
2840 {
2841 SI opval = tmp_addr;
2842 SET_H_GR (FLD (f_operand1), opval);
2843 written |= (1 << 8);
2844 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2845 }
2846 }
2847 }
2848 ; tmp_tmp_mem; }));
2849 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
2850 {
2851 SI opval = tmp_tmp;
2852 SET_H_GR (FLD (f_operand1), opval);
2853 written |= (1 << 8);
2854 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2855 }
2856 } else {
2857 {
2858 SI opval = tmp_tmp;
2859 SET_H_GR (FLD (f_operand2), opval);
2860 written |= (1 << 7);
2861 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2862 }
2863 }
2864 {
2865 {
2866 BI opval = LTSI (tmp_tmp, 0);
2867 CPU (h_nbit) = opval;
2868 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2869 }
2870 {
2871 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
2872 CPU (h_zbit) = opval;
2873 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2874 }
2875 SET_H_CBIT_MOVE (0);
2876 SET_H_VBIT_MOVE (0);
2877 {
2878 {
2879 BI opval = 0;
2880 CPU (h_xbit) = opval;
2881 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2882 }
2883 {
2884 BI opval = 0;
2885 SET_H_INSN_PREFIXED_P (opval);
2886 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2887 }
2888 }
2889 }
2890 }
2891
2892 abuf->written = written;
2893 #undef FLD
2894 }
2895 NEXT (vpc);
2896
2897 CASE (sem, INSN_MOVS_M_W_M) : /* movs-m.w [${Rs}${inc}],${Rd} */
2898 {
2899 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2900 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2901 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2902 int UNUSED written = 0;
2903 IADDR UNUSED pc = abuf->addr;
2904 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2905
2906 {
2907 SI tmp_tmp;
2908 tmp_tmp = EXTHISI (({ SI tmp_addr;
2909 HI tmp_tmp_mem;
2910 BI tmp_postinc;
2911 tmp_postinc = FLD (f_memmode);
2912 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2913 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
2914 ; if (NEBI (tmp_postinc, 0)) {
2915 {
2916 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2917 tmp_addr = ADDSI (tmp_addr, 2);
2918 }
2919 {
2920 SI opval = tmp_addr;
2921 SET_H_GR (FLD (f_operand1), opval);
2922 written |= (1 << 8);
2923 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2924 }
2925 }
2926 }
2927 ; tmp_tmp_mem; }));
2928 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
2929 {
2930 SI opval = tmp_tmp;
2931 SET_H_GR (FLD (f_operand1), opval);
2932 written |= (1 << 8);
2933 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2934 }
2935 } else {
2936 {
2937 SI opval = tmp_tmp;
2938 SET_H_GR (FLD (f_operand2), opval);
2939 written |= (1 << 7);
2940 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2941 }
2942 }
2943 {
2944 {
2945 BI opval = LTSI (tmp_tmp, 0);
2946 CPU (h_nbit) = opval;
2947 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2948 }
2949 {
2950 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
2951 CPU (h_zbit) = opval;
2952 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2953 }
2954 SET_H_CBIT_MOVE (0);
2955 SET_H_VBIT_MOVE (0);
2956 {
2957 {
2958 BI opval = 0;
2959 CPU (h_xbit) = opval;
2960 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2961 }
2962 {
2963 BI opval = 0;
2964 SET_H_INSN_PREFIXED_P (opval);
2965 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2966 }
2967 }
2968 }
2969 }
2970
2971 abuf->written = written;
2972 #undef FLD
2973 }
2974 NEXT (vpc);
2975
2976 CASE (sem, INSN_MOVU_M_B_M) : /* movu-m.b [${Rs}${inc}],${Rd} */
2977 {
2978 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2979 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2980 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2981 int UNUSED written = 0;
2982 IADDR UNUSED pc = abuf->addr;
2983 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2984
2985 {
2986 SI tmp_tmp;
2987 tmp_tmp = ZEXTQISI (({ SI tmp_addr;
2988 QI tmp_tmp_mem;
2989 BI tmp_postinc;
2990 tmp_postinc = FLD (f_memmode);
2991 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2992 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
2993 ; if (NEBI (tmp_postinc, 0)) {
2994 {
2995 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2996 tmp_addr = ADDSI (tmp_addr, 1);
2997 }
2998 {
2999 SI opval = tmp_addr;
3000 SET_H_GR (FLD (f_operand1), opval);
3001 written |= (1 << 8);
3002 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3003 }
3004 }
3005 }
3006 ; tmp_tmp_mem; }));
3007 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
3008 {
3009 SI opval = tmp_tmp;
3010 SET_H_GR (FLD (f_operand1), opval);
3011 written |= (1 << 8);
3012 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3013 }
3014 } else {
3015 {
3016 SI opval = tmp_tmp;
3017 SET_H_GR (FLD (f_operand2), opval);
3018 written |= (1 << 7);
3019 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3020 }
3021 }
3022 {
3023 {
3024 BI opval = LTSI (tmp_tmp, 0);
3025 CPU (h_nbit) = opval;
3026 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
3027 }
3028 {
3029 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
3030 CPU (h_zbit) = opval;
3031 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
3032 }
3033 SET_H_CBIT_MOVE (0);
3034 SET_H_VBIT_MOVE (0);
3035 {
3036 {
3037 BI opval = 0;
3038 CPU (h_xbit) = opval;
3039 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3040 }
3041 {
3042 BI opval = 0;
3043 SET_H_INSN_PREFIXED_P (opval);
3044 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3045 }
3046 }
3047 }
3048 }
3049
3050 abuf->written = written;
3051 #undef FLD
3052 }
3053 NEXT (vpc);
3054
3055 CASE (sem, INSN_MOVU_M_W_M) : /* movu-m.w [${Rs}${inc}],${Rd} */
3056 {
3057 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3058 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3059 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
3060 int UNUSED written = 0;
3061 IADDR UNUSED pc = abuf->addr;
3062 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3063
3064 {
3065 SI tmp_tmp;
3066 tmp_tmp = ZEXTHISI (({ SI tmp_addr;
3067 HI tmp_tmp_mem;
3068 BI tmp_postinc;
3069 tmp_postinc = FLD (f_memmode);
3070 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3071 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
3072 ; if (NEBI (tmp_postinc, 0)) {
3073 {
3074 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3075 tmp_addr = ADDSI (tmp_addr, 2);
3076 }
3077 {
3078 SI opval = tmp_addr;
3079 SET_H_GR (FLD (f_operand1), opval);
3080 written |= (1 << 8);
3081 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3082 }
3083 }
3084 }
3085 ; tmp_tmp_mem; }));
3086 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
3087 {
3088 SI opval = tmp_tmp;
3089 SET_H_GR (FLD (f_operand1), opval);
3090 written |= (1 << 8);
3091 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3092 }
3093 } else {
3094 {
3095 SI opval = tmp_tmp;
3096 SET_H_GR (FLD (f_operand2), opval);
3097 written |= (1 << 7);
3098 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3099 }
3100 }
3101 {
3102 {
3103 BI opval = LTSI (tmp_tmp, 0);
3104 CPU (h_nbit) = opval;
3105 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
3106 }
3107 {
3108 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
3109 CPU (h_zbit) = opval;
3110 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
3111 }
3112 SET_H_CBIT_MOVE (0);
3113 SET_H_VBIT_MOVE (0);
3114 {
3115 {
3116 BI opval = 0;
3117 CPU (h_xbit) = opval;
3118 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3119 }
3120 {
3121 BI opval = 0;
3122 SET_H_INSN_PREFIXED_P (opval);
3123 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3124 }
3125 }
3126 }
3127 }
3128
3129 abuf->written = written;
3130 #undef FLD
3131 }
3132 NEXT (vpc);
3133
3134 CASE (sem, INSN_MOVE_R_SPRV10) : /* move ${Rs},${Pd} */
3135 {
3136 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3138 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
3139 int UNUSED written = 0;
3140 IADDR UNUSED pc = abuf->addr;
3141 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3142
3143 {
3144 SI tmp_tmp;
3145 SI tmp_rno;
3146 tmp_tmp = GET_H_GR (FLD (f_operand1));
3147 tmp_rno = FLD (f_operand2);
3148 if (ORIF (ORIF (EQSI (tmp_rno, 0), EQSI (tmp_rno, 1)), ORIF (EQSI (tmp_rno, 4), EQSI (tmp_rno, 8)))) {
3149 cgen_rtx_error (current_cpu, "move-r-spr: trying to set a read-only special register");
3150 }
3151 else {
3152 {
3153 SI opval = tmp_tmp;
3154 SET_H_SR (FLD (f_operand2), opval);
3155 written |= (1 << 2);
3156 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3157 }
3158 }
3159 {
3160 {
3161 BI opval = 0;
3162 CPU (h_xbit) = opval;
3163 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3164 }
3165 {
3166 BI opval = 0;
3167 SET_H_INSN_PREFIXED_P (opval);
3168 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3169 }
3170 }
3171 }
3172
3173 abuf->written = written;
3174 #undef FLD
3175 }
3176 NEXT (vpc);
3177
3178 CASE (sem, INSN_MOVE_SPR_RV10) : /* move ${Ps},${Rd-sfield} */
3179 {
3180 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3181 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3182 #define FLD(f) abuf->fields.sfmt_move_spr_rv10.f
3183 int UNUSED written = 0;
3184 IADDR UNUSED pc = abuf->addr;
3185 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3186
3187 {
3188 SI tmp_grno;
3189 SI tmp_prno;
3190 SI tmp_newval;
3191 tmp_prno = FLD (f_operand2);
3192 tmp_newval = GET_H_SR (FLD (f_operand2));
3193 if (EQSI (tmp_prno, 5)) {
3194 {
3195 SI tmp_oldregval;
3196 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1));
3197 {
3198 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
3199 SET_H_GR (FLD (f_operand1), opval);
3200 written |= (1 << 4);
3201 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3202 }
3203 }
3204 }
3205 else if (EQSI (tmp_prno, 9)) {
3206 {
3207 SI opval = tmp_newval;
3208 SET_H_GR (FLD (f_operand1), opval);
3209 written |= (1 << 4);
3210 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3211 }
3212 }
3213 else if (EQSI (tmp_prno, 10)) {
3214 {
3215 SI opval = tmp_newval;
3216 SET_H_GR (FLD (f_operand1), opval);
3217 written |= (1 << 4);
3218 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3219 }
3220 }
3221 else if (EQSI (tmp_prno, 11)) {
3222 {
3223 SI opval = tmp_newval;
3224 SET_H_GR (FLD (f_operand1), opval);
3225 written |= (1 << 4);
3226 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3227 }
3228 }
3229 else if (EQSI (tmp_prno, 12)) {
3230 {
3231 SI opval = tmp_newval;
3232 SET_H_GR (FLD (f_operand1), opval);
3233 written |= (1 << 4);
3234 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3235 }
3236 }
3237 else if (EQSI (tmp_prno, 13)) {
3238 {
3239 SI opval = tmp_newval;
3240 SET_H_GR (FLD (f_operand1), opval);
3241 written |= (1 << 4);
3242 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3243 }
3244 }
3245 else if (EQSI (tmp_prno, 0)) {
3246 {
3247 SI tmp_oldregval;
3248 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1));
3249 {
3250 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
3251 SET_H_GR (FLD (f_operand1), opval);
3252 written |= (1 << 4);
3253 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3254 }
3255 }
3256 }
3257 else if (EQSI (tmp_prno, 1)) {
3258 {
3259 SI tmp_oldregval;
3260 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1));
3261 {
3262 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
3263 SET_H_GR (FLD (f_operand1), opval);
3264 written |= (1 << 4);
3265 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3266 }
3267 }
3268 }
3269 else if (EQSI (tmp_prno, 4)) {
3270 {
3271 SI tmp_oldregval;
3272 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1));
3273 {
3274 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
3275 SET_H_GR (FLD (f_operand1), opval);
3276 written |= (1 << 4);
3277 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3278 }
3279 }
3280 }
3281 else if (EQSI (tmp_prno, 8)) {
3282 {
3283 SI opval = tmp_newval;
3284 SET_H_GR (FLD (f_operand1), opval);
3285 written |= (1 << 4);
3286 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3287 }
3288 }
3289 else if (EQSI (tmp_prno, 7)) {
3290 {
3291 SI opval = tmp_newval;
3292 SET_H_GR (FLD (f_operand1), opval);
3293 written |= (1 << 4);
3294 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3295 }
3296 }
3297 else if (EQSI (tmp_prno, 14)) {
3298 {
3299 SI opval = tmp_newval;
3300 SET_H_GR (FLD (f_operand1), opval);
3301 written |= (1 << 4);
3302 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3303 }
3304 }
3305 else if (EQSI (tmp_prno, 15)) {
3306 {
3307 SI opval = tmp_newval;
3308 SET_H_GR (FLD (f_operand1), opval);
3309 written |= (1 << 4);
3310 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3311 }
3312 }
3313 else {
3314 cgen_rtx_error (current_cpu, "move-spr-r from unimplemented register");
3315 }
3316 {
3317 {
3318 BI opval = 0;
3319 CPU (h_xbit) = opval;
3320 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3321 }
3322 {
3323 BI opval = 0;
3324 SET_H_INSN_PREFIXED_P (opval);
3325 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3326 }
3327 }
3328 }
3329
3330 abuf->written = written;
3331 #undef FLD
3332 }
3333 NEXT (vpc);
3334
3335 CASE (sem, INSN_RET_TYPE) : /* ret/reti/retb */
3336 {
3337 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3338 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3339 #define FLD(f) abuf->fields.sfmt_move_spr_rv10.f
3340 int UNUSED written = 0;
3341 IADDR UNUSED pc = abuf->addr;
3342 SEM_BRANCH_INIT
3343 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3344
3345 {
3346 SI tmp_retaddr;
3347 tmp_retaddr = GET_H_SR (FLD (f_operand2));
3348 {
3349 {
3350 BI opval = 0;
3351 CPU (h_xbit) = opval;
3352 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3353 }
3354 {
3355 BI opval = 0;
3356 SET_H_INSN_PREFIXED_P (opval);
3357 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3358 }
3359 }
3360 {
3361 {
3362 USI opval = tmp_retaddr;
3363 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3364 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3365 }
3366 }
3367 }
3368
3369 SEM_BRANCH_FINI (vpc);
3370 #undef FLD
3371 }
3372 NEXT (vpc);
3373
3374 CASE (sem, INSN_MOVE_M_SPRV10) : /* move [${Rs}${inc}],${Pd} */
3375 {
3376 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3377 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3378 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
3379 int UNUSED written = 0;
3380 IADDR UNUSED pc = abuf->addr;
3381 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3382
3383 {
3384 SI tmp_rno;
3385 SI tmp_newval;
3386 tmp_rno = FLD (f_operand2);
3387 if (EQSI (tmp_rno, 5)) {
3388 tmp_newval = EXTHISI (({ SI tmp_addr;
3389 HI tmp_tmp_mem;
3390 BI tmp_postinc;
3391 tmp_postinc = FLD (f_memmode);
3392 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3393 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
3394 ; if (NEBI (tmp_postinc, 0)) {
3395 {
3396 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3397 tmp_addr = ADDSI (tmp_addr, 2);
3398 }
3399 {
3400 SI opval = tmp_addr;
3401 SET_H_GR (FLD (f_operand1), opval);
3402 written |= (1 << 8);
3403 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3404 }
3405 }
3406 }
3407 ; tmp_tmp_mem; }));
3408 }
3409 else if (EQSI (tmp_rno, 9)) {
3410 tmp_newval = ({ SI tmp_addr;
3411 SI tmp_tmp_mem;
3412 BI tmp_postinc;
3413 tmp_postinc = FLD (f_memmode);
3414 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3415 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3416 ; if (NEBI (tmp_postinc, 0)) {
3417 {
3418 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3419 tmp_addr = ADDSI (tmp_addr, 4);
3420 }
3421 {
3422 SI opval = tmp_addr;
3423 SET_H_GR (FLD (f_operand1), opval);
3424 written |= (1 << 8);
3425 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3426 }
3427 }
3428 }
3429 ; tmp_tmp_mem; });
3430 }
3431 else if (EQSI (tmp_rno, 10)) {
3432 tmp_newval = ({ SI tmp_addr;
3433 SI tmp_tmp_mem;
3434 BI tmp_postinc;
3435 tmp_postinc = FLD (f_memmode);
3436 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3437 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3438 ; if (NEBI (tmp_postinc, 0)) {
3439 {
3440 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3441 tmp_addr = ADDSI (tmp_addr, 4);
3442 }
3443 {
3444 SI opval = tmp_addr;
3445 SET_H_GR (FLD (f_operand1), opval);
3446 written |= (1 << 8);
3447 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3448 }
3449 }
3450 }
3451 ; tmp_tmp_mem; });
3452 }
3453 else if (EQSI (tmp_rno, 11)) {
3454 tmp_newval = ({ SI tmp_addr;
3455 SI tmp_tmp_mem;
3456 BI tmp_postinc;
3457 tmp_postinc = FLD (f_memmode);
3458 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3459 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3460 ; if (NEBI (tmp_postinc, 0)) {
3461 {
3462 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3463 tmp_addr = ADDSI (tmp_addr, 4);
3464 }
3465 {
3466 SI opval = tmp_addr;
3467 SET_H_GR (FLD (f_operand1), opval);
3468 written |= (1 << 8);
3469 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3470 }
3471 }
3472 }
3473 ; tmp_tmp_mem; });
3474 }
3475 else if (EQSI (tmp_rno, 12)) {
3476 tmp_newval = ({ SI tmp_addr;
3477 SI tmp_tmp_mem;
3478 BI tmp_postinc;
3479 tmp_postinc = FLD (f_memmode);
3480 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3481 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3482 ; if (NEBI (tmp_postinc, 0)) {
3483 {
3484 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3485 tmp_addr = ADDSI (tmp_addr, 4);
3486 }
3487 {
3488 SI opval = tmp_addr;
3489 SET_H_GR (FLD (f_operand1), opval);
3490 written |= (1 << 8);
3491 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3492 }
3493 }
3494 }
3495 ; tmp_tmp_mem; });
3496 }
3497 else if (EQSI (tmp_rno, 13)) {
3498 tmp_newval = ({ SI tmp_addr;
3499 SI tmp_tmp_mem;
3500 BI tmp_postinc;
3501 tmp_postinc = FLD (f_memmode);
3502 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3503 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3504 ; if (NEBI (tmp_postinc, 0)) {
3505 {
3506 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3507 tmp_addr = ADDSI (tmp_addr, 4);
3508 }
3509 {
3510 SI opval = tmp_addr;
3511 SET_H_GR (FLD (f_operand1), opval);
3512 written |= (1 << 8);
3513 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3514 }
3515 }
3516 }
3517 ; tmp_tmp_mem; });
3518 }
3519 else if (EQSI (tmp_rno, 7)) {
3520 tmp_newval = ({ SI tmp_addr;
3521 SI tmp_tmp_mem;
3522 BI tmp_postinc;
3523 tmp_postinc = FLD (f_memmode);
3524 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3525 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3526 ; if (NEBI (tmp_postinc, 0)) {
3527 {
3528 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3529 tmp_addr = ADDSI (tmp_addr, 4);
3530 }
3531 {
3532 SI opval = tmp_addr;
3533 SET_H_GR (FLD (f_operand1), opval);
3534 written |= (1 << 8);
3535 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3536 }
3537 }
3538 }
3539 ; tmp_tmp_mem; });
3540 }
3541 else if (EQSI (tmp_rno, 14)) {
3542 tmp_newval = ({ SI tmp_addr;
3543 SI tmp_tmp_mem;
3544 BI tmp_postinc;
3545 tmp_postinc = FLD (f_memmode);
3546 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3547 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3548 ; if (NEBI (tmp_postinc, 0)) {
3549 {
3550 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3551 tmp_addr = ADDSI (tmp_addr, 4);
3552 }
3553 {
3554 SI opval = tmp_addr;
3555 SET_H_GR (FLD (f_operand1), opval);
3556 written |= (1 << 8);
3557 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3558 }
3559 }
3560 }
3561 ; tmp_tmp_mem; });
3562 }
3563 else if (EQSI (tmp_rno, 15)) {
3564 tmp_newval = ({ SI tmp_addr;
3565 SI tmp_tmp_mem;
3566 BI tmp_postinc;
3567 tmp_postinc = FLD (f_memmode);
3568 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3569 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3570 ; if (NEBI (tmp_postinc, 0)) {
3571 {
3572 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3573 tmp_addr = ADDSI (tmp_addr, 4);
3574 }
3575 {
3576 SI opval = tmp_addr;
3577 SET_H_GR (FLD (f_operand1), opval);
3578 written |= (1 << 8);
3579 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3580 }
3581 }
3582 }
3583 ; tmp_tmp_mem; });
3584 }
3585 else {
3586 cgen_rtx_error (current_cpu, "Trying to set unimplemented special register");
3587 }
3588 {
3589 SI opval = tmp_newval;
3590 SET_H_SR (FLD (f_operand2), opval);
3591 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3592 }
3593 {
3594 {
3595 BI opval = 0;
3596 CPU (h_xbit) = opval;
3597 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3598 }
3599 {
3600 BI opval = 0;
3601 SET_H_INSN_PREFIXED_P (opval);
3602 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3603 }
3604 }
3605 }
3606
3607 abuf->written = written;
3608 #undef FLD
3609 }
3610 NEXT (vpc);
3611
3612 CASE (sem, INSN_MOVE_C_SPRV10_P5) : /* move ${sconst16},${Pd} */
3613 {
3614 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3615 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3616 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p5.f
3617 int UNUSED written = 0;
3618 IADDR UNUSED pc = abuf->addr;
3619 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3620
3621 {
3622 {
3623 SI opval = FLD (f_indir_pc__word);
3624 SET_H_SR (FLD (f_operand2), opval);
3625 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3626 }
3627 {
3628 {
3629 BI opval = 0;
3630 CPU (h_xbit) = opval;
3631 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3632 }
3633 {
3634 BI opval = 0;
3635 SET_H_INSN_PREFIXED_P (opval);
3636 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3637 }
3638 }
3639 }
3640
3641 #undef FLD
3642 }
3643 NEXT (vpc);
3644
3645 CASE (sem, INSN_MOVE_C_SPRV10_P9) : /* move ${const32},${Pd} */
3646 {
3647 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3648 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3649 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3650 int UNUSED written = 0;
3651 IADDR UNUSED pc = abuf->addr;
3652 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3653
3654 {
3655 {
3656 SI opval = FLD (f_indir_pc__dword);
3657 SET_H_SR (FLD (f_operand2), opval);
3658 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3659 }
3660 {
3661 {
3662 BI opval = 0;
3663 CPU (h_xbit) = opval;
3664 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3665 }
3666 {
3667 BI opval = 0;
3668 SET_H_INSN_PREFIXED_P (opval);
3669 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3670 }
3671 }
3672 }
3673
3674 #undef FLD
3675 }
3676 NEXT (vpc);
3677
3678 CASE (sem, INSN_MOVE_C_SPRV10_P10) : /* move ${const32},${Pd} */
3679 {
3680 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3681 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3682 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3683 int UNUSED written = 0;
3684 IADDR UNUSED pc = abuf->addr;
3685 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3686
3687 {
3688 {
3689 SI opval = FLD (f_indir_pc__dword);
3690 SET_H_SR (FLD (f_operand2), opval);
3691 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3692 }
3693 {
3694 {
3695 BI opval = 0;
3696 CPU (h_xbit) = opval;
3697 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3698 }
3699 {
3700 BI opval = 0;
3701 SET_H_INSN_PREFIXED_P (opval);
3702 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3703 }
3704 }
3705 }
3706
3707 #undef FLD
3708 }
3709 NEXT (vpc);
3710
3711 CASE (sem, INSN_MOVE_C_SPRV10_P11) : /* move ${const32},${Pd} */
3712 {
3713 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3714 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3715 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3716 int UNUSED written = 0;
3717 IADDR UNUSED pc = abuf->addr;
3718 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3719
3720 {
3721 {
3722 SI opval = FLD (f_indir_pc__dword);
3723 SET_H_SR (FLD (f_operand2), opval);
3724 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3725 }
3726 {
3727 {
3728 BI opval = 0;
3729 CPU (h_xbit) = opval;
3730 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3731 }
3732 {
3733 BI opval = 0;
3734 SET_H_INSN_PREFIXED_P (opval);
3735 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3736 }
3737 }
3738 }
3739
3740 #undef FLD
3741 }
3742 NEXT (vpc);
3743
3744 CASE (sem, INSN_MOVE_C_SPRV10_P12) : /* move ${const32},${Pd} */
3745 {
3746 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3747 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3748 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3749 int UNUSED written = 0;
3750 IADDR UNUSED pc = abuf->addr;
3751 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3752
3753 {
3754 {
3755 SI opval = FLD (f_indir_pc__dword);
3756 SET_H_SR (FLD (f_operand2), opval);
3757 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3758 }
3759 {
3760 {
3761 BI opval = 0;
3762 CPU (h_xbit) = opval;
3763 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3764 }
3765 {
3766 BI opval = 0;
3767 SET_H_INSN_PREFIXED_P (opval);
3768 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3769 }
3770 }
3771 }
3772
3773 #undef FLD
3774 }
3775 NEXT (vpc);
3776
3777 CASE (sem, INSN_MOVE_C_SPRV10_P13) : /* move ${const32},${Pd} */
3778 {
3779 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3780 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3781 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3782 int UNUSED written = 0;
3783 IADDR UNUSED pc = abuf->addr;
3784 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3785
3786 {
3787 {
3788 SI opval = FLD (f_indir_pc__dword);
3789 SET_H_SR (FLD (f_operand2), opval);
3790 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3791 }
3792 {
3793 {
3794 BI opval = 0;
3795 CPU (h_xbit) = opval;
3796 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3797 }
3798 {
3799 BI opval = 0;
3800 SET_H_INSN_PREFIXED_P (opval);
3801 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3802 }
3803 }
3804 }
3805
3806 #undef FLD
3807 }
3808 NEXT (vpc);
3809
3810 CASE (sem, INSN_MOVE_C_SPRV10_P7) : /* move ${const32},${Pd} */
3811 {
3812 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3814 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3815 int UNUSED written = 0;
3816 IADDR UNUSED pc = abuf->addr;
3817 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3818
3819 {
3820 {
3821 SI opval = FLD (f_indir_pc__dword);
3822 SET_H_SR (FLD (f_operand2), opval);
3823 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3824 }
3825 {
3826 {
3827 BI opval = 0;
3828 CPU (h_xbit) = opval;
3829 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3830 }
3831 {
3832 BI opval = 0;
3833 SET_H_INSN_PREFIXED_P (opval);
3834 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3835 }
3836 }
3837 }
3838
3839 #undef FLD
3840 }
3841 NEXT (vpc);
3842
3843 CASE (sem, INSN_MOVE_C_SPRV10_P14) : /* move ${const32},${Pd} */
3844 {
3845 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3846 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3847 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3848 int UNUSED written = 0;
3849 IADDR UNUSED pc = abuf->addr;
3850 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3851
3852 {
3853 {
3854 SI opval = FLD (f_indir_pc__dword);
3855 SET_H_SR (FLD (f_operand2), opval);
3856 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3857 }
3858 {
3859 {
3860 BI opval = 0;
3861 CPU (h_xbit) = opval;
3862 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3863 }
3864 {
3865 BI opval = 0;
3866 SET_H_INSN_PREFIXED_P (opval);
3867 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3868 }
3869 }
3870 }
3871
3872 #undef FLD
3873 }
3874 NEXT (vpc);
3875
3876 CASE (sem, INSN_MOVE_C_SPRV10_P15) : /* move ${const32},${Pd} */
3877 {
3878 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3879 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3880 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3881 int UNUSED written = 0;
3882 IADDR UNUSED pc = abuf->addr;
3883 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3884
3885 {
3886 {
3887 SI opval = FLD (f_indir_pc__dword);
3888 SET_H_SR (FLD (f_operand2), opval);
3889 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3890 }
3891 {
3892 {
3893 BI opval = 0;
3894 CPU (h_xbit) = opval;
3895 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3896 }
3897 {
3898 BI opval = 0;
3899 SET_H_INSN_PREFIXED_P (opval);
3900 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3901 }
3902 }
3903 }
3904
3905 #undef FLD
3906 }
3907 NEXT (vpc);
3908
3909 CASE (sem, INSN_MOVE_SPR_MV10) : /* move ${Ps},[${Rd-sfield}${inc}] */
3910 {
3911 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3912 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3913 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
3914 int UNUSED written = 0;
3915 IADDR UNUSED pc = abuf->addr;
3916 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3917
3918 {
3919 SI tmp_rno;
3920 tmp_rno = FLD (f_operand2);
3921 if (EQSI (tmp_rno, 5)) {
3922 {
3923 SI tmp_addr;
3924 BI tmp_postinc;
3925 tmp_postinc = FLD (f_memmode);
3926 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3927 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
3928 if (EQBI (CPU (h_pbit), 0)) {
3929 {
3930 {
3931 HI opval = GET_H_SR (FLD (f_operand2));
3932 SETMEMHI (current_cpu, pc, tmp_addr, opval);
3933 written |= (1 << 11);
3934 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3935 }
3936 {
3937 BI opval = CPU (h_pbit);
3938 CPU (h_cbit) = opval;
3939 written |= (1 << 10);
3940 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
3941 }
3942 }
3943 } else {
3944 {
3945 BI opval = 1;
3946 CPU (h_cbit) = opval;
3947 written |= (1 << 10);
3948 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
3949 }
3950 }
3951 } else {
3952 {
3953 HI opval = GET_H_SR (FLD (f_operand2));
3954 SETMEMHI (current_cpu, pc, tmp_addr, opval);
3955 written |= (1 << 11);
3956 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3957 }
3958 }
3959 if (NEBI (tmp_postinc, 0)) {
3960 {
3961 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3962 tmp_addr = ADDSI (tmp_addr, 2);
3963 }
3964 {
3965 SI opval = tmp_addr;
3966 SET_H_GR (FLD (f_operand1), opval);
3967 written |= (1 << 9);
3968 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3969 }
3970 }
3971 }
3972 }
3973 }
3974 else if (EQSI (tmp_rno, 9)) {
3975 {
3976 SI tmp_addr;
3977 BI tmp_postinc;
3978 tmp_postinc = FLD (f_memmode);
3979 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3980 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
3981 if (EQBI (CPU (h_pbit), 0)) {
3982 {
3983 {
3984 SI opval = GET_H_SR (FLD (f_operand2));
3985 SETMEMSI (current_cpu, pc, tmp_addr, opval);
3986 written |= (1 << 13);
3987 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3988 }
3989 {
3990 BI opval = CPU (h_pbit);
3991 CPU (h_cbit) = opval;
3992 written |= (1 << 10);
3993 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
3994 }
3995 }
3996 } else {
3997 {
3998 BI opval = 1;
3999 CPU (h_cbit) = opval;
4000 written |= (1 << 10);
4001 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4002 }
4003 }
4004 } else {
4005 {
4006 SI opval = GET_H_SR (FLD (f_operand2));
4007 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4008 written |= (1 << 13);
4009 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4010 }
4011 }
4012 if (NEBI (tmp_postinc, 0)) {
4013 {
4014 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4015 tmp_addr = ADDSI (tmp_addr, 4);
4016 }
4017 {
4018 SI opval = tmp_addr;
4019 SET_H_GR (FLD (f_operand1), opval);
4020 written |= (1 << 9);
4021 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4022 }
4023 }
4024 }
4025 }
4026 }
4027 else if (EQSI (tmp_rno, 10)) {
4028 {
4029 SI tmp_addr;
4030 BI tmp_postinc;
4031 tmp_postinc = FLD (f_memmode);
4032 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4033 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4034 if (EQBI (CPU (h_pbit), 0)) {
4035 {
4036 {
4037 SI opval = GET_H_SR (FLD (f_operand2));
4038 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4039 written |= (1 << 13);
4040 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4041 }
4042 {
4043 BI opval = CPU (h_pbit);
4044 CPU (h_cbit) = opval;
4045 written |= (1 << 10);
4046 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4047 }
4048 }
4049 } else {
4050 {
4051 BI opval = 1;
4052 CPU (h_cbit) = opval;
4053 written |= (1 << 10);
4054 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4055 }
4056 }
4057 } else {
4058 {
4059 SI opval = GET_H_SR (FLD (f_operand2));
4060 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4061 written |= (1 << 13);
4062 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4063 }
4064 }
4065 if (NEBI (tmp_postinc, 0)) {
4066 {
4067 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4068 tmp_addr = ADDSI (tmp_addr, 4);
4069 }
4070 {
4071 SI opval = tmp_addr;
4072 SET_H_GR (FLD (f_operand1), opval);
4073 written |= (1 << 9);
4074 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4075 }
4076 }
4077 }
4078 }
4079 }
4080 else if (EQSI (tmp_rno, 11)) {
4081 {
4082 SI tmp_addr;
4083 BI tmp_postinc;
4084 tmp_postinc = FLD (f_memmode);
4085 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4086 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4087 if (EQBI (CPU (h_pbit), 0)) {
4088 {
4089 {
4090 SI opval = GET_H_SR (FLD (f_operand2));
4091 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4092 written |= (1 << 13);
4093 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4094 }
4095 {
4096 BI opval = CPU (h_pbit);
4097 CPU (h_cbit) = opval;
4098 written |= (1 << 10);
4099 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4100 }
4101 }
4102 } else {
4103 {
4104 BI opval = 1;
4105 CPU (h_cbit) = opval;
4106 written |= (1 << 10);
4107 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4108 }
4109 }
4110 } else {
4111 {
4112 SI opval = GET_H_SR (FLD (f_operand2));
4113 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4114 written |= (1 << 13);
4115 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4116 }
4117 }
4118 if (NEBI (tmp_postinc, 0)) {
4119 {
4120 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4121 tmp_addr = ADDSI (tmp_addr, 4);
4122 }
4123 {
4124 SI opval = tmp_addr;
4125 SET_H_GR (FLD (f_operand1), opval);
4126 written |= (1 << 9);
4127 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4128 }
4129 }
4130 }
4131 }
4132 }
4133 else if (EQSI (tmp_rno, 12)) {
4134 {
4135 SI tmp_addr;
4136 BI tmp_postinc;
4137 tmp_postinc = FLD (f_memmode);
4138 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4139 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4140 if (EQBI (CPU (h_pbit), 0)) {
4141 {
4142 {
4143 SI opval = GET_H_SR (FLD (f_operand2));
4144 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4145 written |= (1 << 13);
4146 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4147 }
4148 {
4149 BI opval = CPU (h_pbit);
4150 CPU (h_cbit) = opval;
4151 written |= (1 << 10);
4152 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4153 }
4154 }
4155 } else {
4156 {
4157 BI opval = 1;
4158 CPU (h_cbit) = opval;
4159 written |= (1 << 10);
4160 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4161 }
4162 }
4163 } else {
4164 {
4165 SI opval = GET_H_SR (FLD (f_operand2));
4166 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4167 written |= (1 << 13);
4168 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4169 }
4170 }
4171 if (NEBI (tmp_postinc, 0)) {
4172 {
4173 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4174 tmp_addr = ADDSI (tmp_addr, 4);
4175 }
4176 {
4177 SI opval = tmp_addr;
4178 SET_H_GR (FLD (f_operand1), opval);
4179 written |= (1 << 9);
4180 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4181 }
4182 }
4183 }
4184 }
4185 }
4186 else if (EQSI (tmp_rno, 13)) {
4187 {
4188 SI tmp_addr;
4189 BI tmp_postinc;
4190 tmp_postinc = FLD (f_memmode);
4191 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4192 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4193 if (EQBI (CPU (h_pbit), 0)) {
4194 {
4195 {
4196 SI opval = GET_H_SR (FLD (f_operand2));
4197 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4198 written |= (1 << 13);
4199 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4200 }
4201 {
4202 BI opval = CPU (h_pbit);
4203 CPU (h_cbit) = opval;
4204 written |= (1 << 10);
4205 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4206 }
4207 }
4208 } else {
4209 {
4210 BI opval = 1;
4211 CPU (h_cbit) = opval;
4212 written |= (1 << 10);
4213 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4214 }
4215 }
4216 } else {
4217 {
4218 SI opval = GET_H_SR (FLD (f_operand2));
4219 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4220 written |= (1 << 13);
4221 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4222 }
4223 }
4224 if (NEBI (tmp_postinc, 0)) {
4225 {
4226 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4227 tmp_addr = ADDSI (tmp_addr, 4);
4228 }
4229 {
4230 SI opval = tmp_addr;
4231 SET_H_GR (FLD (f_operand1), opval);
4232 written |= (1 << 9);
4233 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4234 }
4235 }
4236 }
4237 }
4238 }
4239 else if (EQSI (tmp_rno, 0)) {
4240 {
4241 SI tmp_addr;
4242 BI tmp_postinc;
4243 tmp_postinc = FLD (f_memmode);
4244 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4245 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4246 if (EQBI (CPU (h_pbit), 0)) {
4247 {
4248 {
4249 QI opval = GET_H_SR (FLD (f_operand2));
4250 SETMEMQI (current_cpu, pc, tmp_addr, opval);
4251 written |= (1 << 12);
4252 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4253 }
4254 {
4255 BI opval = CPU (h_pbit);
4256 CPU (h_cbit) = opval;
4257 written |= (1 << 10);
4258 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4259 }
4260 }
4261 } else {
4262 {
4263 BI opval = 1;
4264 CPU (h_cbit) = opval;
4265 written |= (1 << 10);
4266 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4267 }
4268 }
4269 } else {
4270 {
4271 QI opval = GET_H_SR (FLD (f_operand2));
4272 SETMEMQI (current_cpu, pc, tmp_addr, opval);
4273 written |= (1 << 12);
4274 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4275 }
4276 }
4277 if (NEBI (tmp_postinc, 0)) {
4278 {
4279 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4280 tmp_addr = ADDSI (tmp_addr, 1);
4281 }
4282 {
4283 SI opval = tmp_addr;
4284 SET_H_GR (FLD (f_operand1), opval);
4285 written |= (1 << 9);
4286 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4287 }
4288 }
4289 }
4290 }
4291 }
4292 else if (EQSI (tmp_rno, 1)) {
4293 {
4294 SI tmp_addr;
4295 BI tmp_postinc;
4296 tmp_postinc = FLD (f_memmode);
4297 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4298 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4299 if (EQBI (CPU (h_pbit), 0)) {
4300 {
4301 {
4302 QI opval = GET_H_SR (FLD (f_operand2));
4303 SETMEMQI (current_cpu, pc, tmp_addr, opval);
4304 written |= (1 << 12);
4305 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4306 }
4307 {
4308 BI opval = CPU (h_pbit);
4309 CPU (h_cbit) = opval;
4310 written |= (1 << 10);
4311 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4312 }
4313 }
4314 } else {
4315 {
4316 BI opval = 1;
4317 CPU (h_cbit) = opval;
4318 written |= (1 << 10);
4319 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4320 }
4321 }
4322 } else {
4323 {
4324 QI opval = GET_H_SR (FLD (f_operand2));
4325 SETMEMQI (current_cpu, pc, tmp_addr, opval);
4326 written |= (1 << 12);
4327 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4328 }
4329 }
4330 if (NEBI (tmp_postinc, 0)) {
4331 {
4332 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4333 tmp_addr = ADDSI (tmp_addr, 1);
4334 }
4335 {
4336 SI opval = tmp_addr;
4337 SET_H_GR (FLD (f_operand1), opval);
4338 written |= (1 << 9);
4339 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4340 }
4341 }
4342 }
4343 }
4344 }
4345 else if (EQSI (tmp_rno, 4)) {
4346 {
4347 SI tmp_addr;
4348 BI tmp_postinc;
4349 tmp_postinc = FLD (f_memmode);
4350 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4351 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4352 if (EQBI (CPU (h_pbit), 0)) {
4353 {
4354 {
4355 HI opval = GET_H_SR (FLD (f_operand2));
4356 SETMEMHI (current_cpu, pc, tmp_addr, opval);
4357 written |= (1 << 11);
4358 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4359 }
4360 {
4361 BI opval = CPU (h_pbit);
4362 CPU (h_cbit) = opval;
4363 written |= (1 << 10);
4364 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4365 }
4366 }
4367 } else {
4368 {
4369 BI opval = 1;
4370 CPU (h_cbit) = opval;
4371 written |= (1 << 10);
4372 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4373 }
4374 }
4375 } else {
4376 {
4377 HI opval = GET_H_SR (FLD (f_operand2));
4378 SETMEMHI (current_cpu, pc, tmp_addr, opval);
4379 written |= (1 << 11);
4380 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4381 }
4382 }
4383 if (NEBI (tmp_postinc, 0)) {
4384 {
4385 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4386 tmp_addr = ADDSI (tmp_addr, 2);
4387 }
4388 {
4389 SI opval = tmp_addr;
4390 SET_H_GR (FLD (f_operand1), opval);
4391 written |= (1 << 9);
4392 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4393 }
4394 }
4395 }
4396 }
4397 }
4398 else if (EQSI (tmp_rno, 8)) {
4399 {
4400 SI tmp_addr;
4401 BI tmp_postinc;
4402 tmp_postinc = FLD (f_memmode);
4403 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4404 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4405 if (EQBI (CPU (h_pbit), 0)) {
4406 {
4407 {
4408 SI opval = GET_H_SR (FLD (f_operand2));
4409 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4410 written |= (1 << 13);
4411 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4412 }
4413 {
4414 BI opval = CPU (h_pbit);
4415 CPU (h_cbit) = opval;
4416 written |= (1 << 10);
4417 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4418 }
4419 }
4420 } else {
4421 {
4422 BI opval = 1;
4423 CPU (h_cbit) = opval;
4424 written |= (1 << 10);
4425 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4426 }
4427 }
4428 } else {
4429 {
4430 SI opval = GET_H_SR (FLD (f_operand2));
4431 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4432 written |= (1 << 13);
4433 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4434 }
4435 }
4436 if (NEBI (tmp_postinc, 0)) {
4437 {
4438 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4439 tmp_addr = ADDSI (tmp_addr, 4);
4440 }
4441 {
4442 SI opval = tmp_addr;
4443 SET_H_GR (FLD (f_operand1), opval);
4444 written |= (1 << 9);
4445 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4446 }
4447 }
4448 }
4449 }
4450 }
4451 else if (EQSI (tmp_rno, 7)) {
4452 {
4453 SI tmp_addr;
4454 BI tmp_postinc;
4455 tmp_postinc = FLD (f_memmode);
4456 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4457 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4458 if (EQBI (CPU (h_pbit), 0)) {
4459 {
4460 {
4461 SI opval = GET_H_SR (FLD (f_operand2));
4462 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4463 written |= (1 << 13);
4464 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4465 }
4466 {
4467 BI opval = CPU (h_pbit);
4468 CPU (h_cbit) = opval;
4469 written |= (1 << 10);
4470 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4471 }
4472 }
4473 } else {
4474 {
4475 BI opval = 1;
4476 CPU (h_cbit) = opval;
4477 written |= (1 << 10);
4478 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4479 }
4480 }
4481 } else {
4482 {
4483 SI opval = GET_H_SR (FLD (f_operand2));
4484 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4485 written |= (1 << 13);
4486 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4487 }
4488 }
4489 if (NEBI (tmp_postinc, 0)) {
4490 {
4491 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4492 tmp_addr = ADDSI (tmp_addr, 4);
4493 }
4494 {
4495 SI opval = tmp_addr;
4496 SET_H_GR (FLD (f_operand1), opval);
4497 written |= (1 << 9);
4498 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4499 }
4500 }
4501 }
4502 }
4503 }
4504 else if (EQSI (tmp_rno, 14)) {
4505 {
4506 SI tmp_addr;
4507 BI tmp_postinc;
4508 tmp_postinc = FLD (f_memmode);
4509 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4510 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4511 if (EQBI (CPU (h_pbit), 0)) {
4512 {
4513 {
4514 SI opval = GET_H_SR (FLD (f_operand2));
4515 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4516 written |= (1 << 13);
4517 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4518 }
4519 {
4520 BI opval = CPU (h_pbit);
4521 CPU (h_cbit) = opval;
4522 written |= (1 << 10);
4523 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4524 }
4525 }
4526 } else {
4527 {
4528 BI opval = 1;
4529 CPU (h_cbit) = opval;
4530 written |= (1 << 10);
4531 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4532 }
4533 }
4534 } else {
4535 {
4536 SI opval = GET_H_SR (FLD (f_operand2));
4537 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4538 written |= (1 << 13);
4539 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4540 }
4541 }
4542 if (NEBI (tmp_postinc, 0)) {
4543 {
4544 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4545 tmp_addr = ADDSI (tmp_addr, 4);
4546 }
4547 {
4548 SI opval = tmp_addr;
4549 SET_H_GR (FLD (f_operand1), opval);
4550 written |= (1 << 9);
4551 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4552 }
4553 }
4554 }
4555 }
4556 }
4557 else if (EQSI (tmp_rno, 15)) {
4558 {
4559 SI tmp_addr;
4560 BI tmp_postinc;
4561 tmp_postinc = FLD (f_memmode);
4562 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4563 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4564 if (EQBI (CPU (h_pbit), 0)) {
4565 {
4566 {
4567 SI opval = GET_H_SR (FLD (f_operand2));
4568 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4569 written |= (1 << 13);
4570 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4571 }
4572 {
4573 BI opval = CPU (h_pbit);
4574 CPU (h_cbit) = opval;
4575 written |= (1 << 10);
4576 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4577 }
4578 }
4579 } else {
4580 {
4581 BI opval = 1;
4582 CPU (h_cbit) = opval;
4583 written |= (1 << 10);
4584 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4585 }
4586 }
4587 } else {
4588 {
4589 SI opval = GET_H_SR (FLD (f_operand2));
4590 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4591 written |= (1 << 13);
4592 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4593 }
4594 }
4595 if (NEBI (tmp_postinc, 0)) {
4596 {
4597 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4598 tmp_addr = ADDSI (tmp_addr, 4);
4599 }
4600 {
4601 SI opval = tmp_addr;
4602 SET_H_GR (FLD (f_operand1), opval);
4603 written |= (1 << 9);
4604 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4605 }
4606 }
4607 }
4608 }
4609 }
4610 else {
4611 cgen_rtx_error (current_cpu, "write from unimplemented special register");
4612 }
4613 {
4614 {
4615 BI opval = 0;
4616 CPU (h_xbit) = opval;
4617 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
4618 }
4619 {
4620 BI opval = 0;
4621 SET_H_INSN_PREFIXED_P (opval);
4622 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
4623 }
4624 }
4625 }
4626
4627 abuf->written = written;
4628 #undef FLD
4629 }
4630 NEXT (vpc);
4631
4632 CASE (sem, INSN_SBFS) : /* sbfs [${Rd-sfield}${inc}] */
4633 {
4634 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4636 #define FLD(f) abuf->fields.fmt_empty.f
4637 int UNUSED written = 0;
4638 IADDR UNUSED pc = abuf->addr;
4639 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4640
4641 cgen_rtx_error (current_cpu, "SBFS isn't implemented");
4642
4643 #undef FLD
4644 }
4645 NEXT (vpc);
4646
4647 CASE (sem, INSN_MOVEM_R_M) : /* movem ${Rs-dfield},[${Rd-sfield}${inc}] */
4648 {
4649 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4650 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4651 #define FLD(f) abuf->fields.sfmt_movem_r_m.f
4652 int UNUSED written = 0;
4653 IADDR UNUSED pc = abuf->addr;
4654 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4655
4656 {
4657 SI tmp_addr;
4658 BI tmp_postinc;
4659 tmp_postinc = FLD (f_memmode);
4660 {
4661 SI tmp_dummy;
4662 tmp_dummy = GET_H_GR (FLD (f_operand2));
4663 }
4664 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4665 {
4666 if (GESI (FLD (f_operand2), 15)) {
4667 {
4668 SI tmp_tmp;
4669 tmp_tmp = GET_H_GR (((UINT) 15));
4670 {
4671 SI opval = tmp_tmp;
4672 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4673 written |= (1 << 23);
4674 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4675 }
4676 tmp_addr = ADDSI (tmp_addr, 4);
4677 }
4678 }
4679 if (GESI (FLD (f_operand2), 14)) {
4680 {
4681 SI tmp_tmp;
4682 tmp_tmp = GET_H_GR (((UINT) 14));
4683 {
4684 SI opval = tmp_tmp;
4685 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4686 written |= (1 << 23);
4687 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4688 }
4689 tmp_addr = ADDSI (tmp_addr, 4);
4690 }
4691 }
4692 if (GESI (FLD (f_operand2), 13)) {
4693 {
4694 SI tmp_tmp;
4695 tmp_tmp = GET_H_GR (((UINT) 13));
4696 {
4697 SI opval = tmp_tmp;
4698 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4699 written |= (1 << 23);
4700 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4701 }
4702 tmp_addr = ADDSI (tmp_addr, 4);
4703 }
4704 }
4705 if (GESI (FLD (f_operand2), 12)) {
4706 {
4707 SI tmp_tmp;
4708 tmp_tmp = GET_H_GR (((UINT) 12));
4709 {
4710 SI opval = tmp_tmp;
4711 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4712 written |= (1 << 23);
4713 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4714 }
4715 tmp_addr = ADDSI (tmp_addr, 4);
4716 }
4717 }
4718 if (GESI (FLD (f_operand2), 11)) {
4719 {
4720 SI tmp_tmp;
4721 tmp_tmp = GET_H_GR (((UINT) 11));
4722 {
4723 SI opval = tmp_tmp;
4724 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4725 written |= (1 << 23);
4726 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4727 }
4728 tmp_addr = ADDSI (tmp_addr, 4);
4729 }
4730 }
4731 if (GESI (FLD (f_operand2), 10)) {
4732 {
4733 SI tmp_tmp;
4734 tmp_tmp = GET_H_GR (((UINT) 10));
4735 {
4736 SI opval = tmp_tmp;
4737 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4738 written |= (1 << 23);
4739 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4740 }
4741 tmp_addr = ADDSI (tmp_addr, 4);
4742 }
4743 }
4744 if (GESI (FLD (f_operand2), 9)) {
4745 {
4746 SI tmp_tmp;
4747 tmp_tmp = GET_H_GR (((UINT) 9));
4748 {
4749 SI opval = tmp_tmp;
4750 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4751 written |= (1 << 23);
4752 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4753 }
4754 tmp_addr = ADDSI (tmp_addr, 4);
4755 }
4756 }
4757 if (GESI (FLD (f_operand2), 8)) {
4758 {
4759 SI tmp_tmp;
4760 tmp_tmp = GET_H_GR (((UINT) 8));
4761 {
4762 SI opval = tmp_tmp;
4763 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4764 written |= (1 << 23);
4765 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4766 }
4767 tmp_addr = ADDSI (tmp_addr, 4);
4768 }
4769 }
4770 if (GESI (FLD (f_operand2), 7)) {
4771 {
4772 SI tmp_tmp;
4773 tmp_tmp = GET_H_GR (((UINT) 7));
4774 {
4775 SI opval = tmp_tmp;
4776 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4777 written |= (1 << 23);
4778 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4779 }
4780 tmp_addr = ADDSI (tmp_addr, 4);
4781 }
4782 }
4783 if (GESI (FLD (f_operand2), 6)) {
4784 {
4785 SI tmp_tmp;
4786 tmp_tmp = GET_H_GR (((UINT) 6));
4787 {
4788 SI opval = tmp_tmp;
4789 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4790 written |= (1 << 23);
4791 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4792 }
4793 tmp_addr = ADDSI (tmp_addr, 4);
4794 }
4795 }
4796 if (GESI (FLD (f_operand2), 5)) {
4797 {
4798 SI tmp_tmp;
4799 tmp_tmp = GET_H_GR (((UINT) 5));
4800 {
4801 SI opval = tmp_tmp;
4802 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4803 written |= (1 << 23);
4804 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4805 }
4806 tmp_addr = ADDSI (tmp_addr, 4);
4807 }
4808 }
4809 if (GESI (FLD (f_operand2), 4)) {
4810 {
4811 SI tmp_tmp;
4812 tmp_tmp = GET_H_GR (((UINT) 4));
4813 {
4814 SI opval = tmp_tmp;
4815 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4816 written |= (1 << 23);
4817 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4818 }
4819 tmp_addr = ADDSI (tmp_addr, 4);
4820 }
4821 }
4822 if (GESI (FLD (f_operand2), 3)) {
4823 {
4824 SI tmp_tmp;
4825 tmp_tmp = GET_H_GR (((UINT) 3));
4826 {
4827 SI opval = tmp_tmp;
4828 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4829 written |= (1 << 23);
4830 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4831 }
4832 tmp_addr = ADDSI (tmp_addr, 4);
4833 }
4834 }
4835 if (GESI (FLD (f_operand2), 2)) {
4836 {
4837 SI tmp_tmp;
4838 tmp_tmp = GET_H_GR (((UINT) 2));
4839 {
4840 SI opval = tmp_tmp;
4841 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4842 written |= (1 << 23);
4843 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4844 }
4845 tmp_addr = ADDSI (tmp_addr, 4);
4846 }
4847 }
4848 if (GESI (FLD (f_operand2), 1)) {
4849 {
4850 SI tmp_tmp;
4851 tmp_tmp = GET_H_GR (((UINT) 1));
4852 {
4853 SI opval = tmp_tmp;
4854 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4855 written |= (1 << 23);
4856 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4857 }
4858 tmp_addr = ADDSI (tmp_addr, 4);
4859 }
4860 }
4861 if (GESI (FLD (f_operand2), 0)) {
4862 {
4863 SI tmp_tmp;
4864 tmp_tmp = GET_H_GR (((UINT) 0));
4865 {
4866 SI opval = tmp_tmp;
4867 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4868 written |= (1 << 23);
4869 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4870 }
4871 tmp_addr = ADDSI (tmp_addr, 4);
4872 }
4873 }
4874 }
4875 if (NEBI (tmp_postinc, 0)) {
4876 {
4877 SI opval = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (tmp_addr) : (CPU (h_prefixreg_pre_v32)));
4878 SET_H_GR (FLD (f_operand1), opval);
4879 written |= (1 << 22);
4880 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4881 }
4882 }
4883 {
4884 {
4885 BI opval = 0;
4886 CPU (h_xbit) = opval;
4887 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
4888 }
4889 {
4890 BI opval = 0;
4891 SET_H_INSN_PREFIXED_P (opval);
4892 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
4893 }
4894 }
4895 }
4896
4897 abuf->written = written;
4898 #undef FLD
4899 }
4900 NEXT (vpc);
4901
4902 CASE (sem, INSN_MOVEM_M_R) : /* movem [${Rs}${inc}],${Rd} */
4903 {
4904 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4905 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4906 #define FLD(f) abuf->fields.sfmt_movem_m_r.f
4907 int UNUSED written = 0;
4908 IADDR UNUSED pc = abuf->addr;
4909 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4910
4911 {
4912 SI tmp_addr;
4913 BI tmp_postinc;
4914 tmp_postinc = FLD (f_memmode);
4915 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4916 {
4917 SI tmp_dummy;
4918 tmp_dummy = GET_H_GR (FLD (f_operand2));
4919 }
4920 {
4921 if (GESI (FLD (f_operand2), 14)) {
4922 {
4923 SI tmp_tmp;
4924 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4925 {
4926 SI opval = tmp_tmp;
4927 SET_H_GR (((UINT) 14), opval);
4928 written |= (1 << 14);
4929 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4930 }
4931 tmp_addr = ADDSI (tmp_addr, 4);
4932 }
4933 }
4934 if (GESI (FLD (f_operand2), 13)) {
4935 {
4936 SI tmp_tmp;
4937 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4938 {
4939 SI opval = tmp_tmp;
4940 SET_H_GR (((UINT) 13), opval);
4941 written |= (1 << 13);
4942 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4943 }
4944 tmp_addr = ADDSI (tmp_addr, 4);
4945 }
4946 }
4947 if (GESI (FLD (f_operand2), 12)) {
4948 {
4949 SI tmp_tmp;
4950 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4951 {
4952 SI opval = tmp_tmp;
4953 SET_H_GR (((UINT) 12), opval);
4954 written |= (1 << 12);
4955 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4956 }
4957 tmp_addr = ADDSI (tmp_addr, 4);
4958 }
4959 }
4960 if (GESI (FLD (f_operand2), 11)) {
4961 {
4962 SI tmp_tmp;
4963 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4964 {
4965 SI opval = tmp_tmp;
4966 SET_H_GR (((UINT) 11), opval);
4967 written |= (1 << 11);
4968 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4969 }
4970 tmp_addr = ADDSI (tmp_addr, 4);
4971 }
4972 }
4973 if (GESI (FLD (f_operand2), 10)) {
4974 {
4975 SI tmp_tmp;
4976 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4977 {
4978 SI opval = tmp_tmp;
4979 SET_H_GR (((UINT) 10), opval);
4980 written |= (1 << 10);
4981 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4982 }
4983 tmp_addr = ADDSI (tmp_addr, 4);
4984 }
4985 }
4986 if (GESI (FLD (f_operand2), 9)) {
4987 {
4988 SI tmp_tmp;
4989 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4990 {
4991 SI opval = tmp_tmp;
4992 SET_H_GR (((UINT) 9), opval);
4993 written |= (1 << 22);
4994 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4995 }
4996 tmp_addr = ADDSI (tmp_addr, 4);
4997 }
4998 }
4999 if (GESI (FLD (f_operand2), 8)) {
5000 {
5001 SI tmp_tmp;
5002 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5003 {
5004 SI opval = tmp_tmp;
5005 SET_H_GR (((UINT) 8), opval);
5006 written |= (1 << 21);
5007 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5008 }
5009 tmp_addr = ADDSI (tmp_addr, 4);
5010 }
5011 }
5012 if (GESI (FLD (f_operand2), 7)) {
5013 {
5014 SI tmp_tmp;
5015 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5016 {
5017 SI opval = tmp_tmp;
5018 SET_H_GR (((UINT) 7), opval);
5019 written |= (1 << 20);
5020 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5021 }
5022 tmp_addr = ADDSI (tmp_addr, 4);
5023 }
5024 }
5025 if (GESI (FLD (f_operand2), 6)) {
5026 {
5027 SI tmp_tmp;
5028 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5029 {
5030 SI opval = tmp_tmp;
5031 SET_H_GR (((UINT) 6), opval);
5032 written |= (1 << 19);
5033 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5034 }
5035 tmp_addr = ADDSI (tmp_addr, 4);
5036 }
5037 }
5038 if (GESI (FLD (f_operand2), 5)) {
5039 {
5040 SI tmp_tmp;
5041 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5042 {
5043 SI opval = tmp_tmp;
5044 SET_H_GR (((UINT) 5), opval);
5045 written |= (1 << 18);
5046 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5047 }
5048 tmp_addr = ADDSI (tmp_addr, 4);
5049 }
5050 }
5051 if (GESI (FLD (f_operand2), 4)) {
5052 {
5053 SI tmp_tmp;
5054 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5055 {
5056 SI opval = tmp_tmp;
5057 SET_H_GR (((UINT) 4), opval);
5058 written |= (1 << 17);
5059 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5060 }
5061 tmp_addr = ADDSI (tmp_addr, 4);
5062 }
5063 }
5064 if (GESI (FLD (f_operand2), 3)) {
5065 {
5066 SI tmp_tmp;
5067 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5068 {
5069 SI opval = tmp_tmp;
5070 SET_H_GR (((UINT) 3), opval);
5071 written |= (1 << 16);
5072 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5073 }
5074 tmp_addr = ADDSI (tmp_addr, 4);
5075 }
5076 }
5077 if (GESI (FLD (f_operand2), 2)) {
5078 {
5079 SI tmp_tmp;
5080 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5081 {
5082 SI opval = tmp_tmp;
5083 SET_H_GR (((UINT) 2), opval);
5084 written |= (1 << 15);
5085 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5086 }
5087 tmp_addr = ADDSI (tmp_addr, 4);
5088 }
5089 }
5090 if (GESI (FLD (f_operand2), 1)) {
5091 {
5092 SI tmp_tmp;
5093 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5094 {
5095 SI opval = tmp_tmp;
5096 SET_H_GR (((UINT) 1), opval);
5097 written |= (1 << 9);
5098 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5099 }
5100 tmp_addr = ADDSI (tmp_addr, 4);
5101 }
5102 }
5103 if (GESI (FLD (f_operand2), 0)) {
5104 {
5105 SI tmp_tmp;
5106 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5107 {
5108 SI opval = tmp_tmp;
5109 SET_H_GR (((UINT) 0), opval);
5110 written |= (1 << 8);
5111 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5112 }
5113 tmp_addr = ADDSI (tmp_addr, 4);
5114 }
5115 }
5116 }
5117 if (NEBI (tmp_postinc, 0)) {
5118 {
5119 SI opval = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (tmp_addr) : (CPU (h_prefixreg_pre_v32)));
5120 SET_H_GR (FLD (f_operand1), opval);
5121 written |= (1 << 7);
5122 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5123 }
5124 }
5125 {
5126 {
5127 BI opval = 0;
5128 CPU (h_xbit) = opval;
5129 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5130 }
5131 {
5132 BI opval = 0;
5133 SET_H_INSN_PREFIXED_P (opval);
5134 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5135 }
5136 }
5137 }
5138
5139 abuf->written = written;
5140 #undef FLD
5141 }
5142 NEXT (vpc);
5143
5144 CASE (sem, INSN_MOVEM_M_PC) : /* movem [${Rs}${inc}],${Rd} */
5145 {
5146 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5147 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5148 #define FLD(f) abuf->fields.sfmt_movem_m_r.f
5149 int UNUSED written = 0;
5150 IADDR UNUSED pc = abuf->addr;
5151 SEM_BRANCH_INIT
5152 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5153
5154 {
5155 SI tmp_addr;
5156 BI tmp_postinc;
5157 tmp_postinc = FLD (f_memmode);
5158 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
5159 {
5160 {
5161 USI opval = GETMEMSI (current_cpu, pc, tmp_addr);
5162 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
5163 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5164 }
5165 tmp_addr = ADDSI (tmp_addr, 4);
5166 {
5167 SI tmp_tmp;
5168 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5169 {
5170 SI opval = tmp_tmp;
5171 SET_H_GR (((UINT) 14), opval);
5172 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5173 }
5174 tmp_addr = ADDSI (tmp_addr, 4);
5175 }
5176 {
5177 SI tmp_tmp;
5178 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5179 {
5180 SI opval = tmp_tmp;
5181 SET_H_GR (((UINT) 13), opval);
5182 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5183 }
5184 tmp_addr = ADDSI (tmp_addr, 4);
5185 }
5186 {
5187 SI tmp_tmp;
5188 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5189 {
5190 SI opval = tmp_tmp;
5191 SET_H_GR (((UINT) 12), opval);
5192 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5193 }
5194 tmp_addr = ADDSI (tmp_addr, 4);
5195 }
5196 {
5197 SI tmp_tmp;
5198 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5199 {
5200 SI opval = tmp_tmp;
5201 SET_H_GR (((UINT) 11), opval);
5202 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5203 }
5204 tmp_addr = ADDSI (tmp_addr, 4);
5205 }
5206 {
5207 SI tmp_tmp;
5208 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5209 {
5210 SI opval = tmp_tmp;
5211 SET_H_GR (((UINT) 10), opval);
5212 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5213 }
5214 tmp_addr = ADDSI (tmp_addr, 4);
5215 }
5216 {
5217 SI tmp_tmp;
5218 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5219 {
5220 SI opval = tmp_tmp;
5221 SET_H_GR (((UINT) 9), opval);
5222 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5223 }
5224 tmp_addr = ADDSI (tmp_addr, 4);
5225 }
5226 {
5227 SI tmp_tmp;
5228 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5229 {
5230 SI opval = tmp_tmp;
5231 SET_H_GR (((UINT) 8), opval);
5232 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5233 }
5234 tmp_addr = ADDSI (tmp_addr, 4);
5235 }
5236 {
5237 SI tmp_tmp;
5238 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5239 {
5240 SI opval = tmp_tmp;
5241 SET_H_GR (((UINT) 7), opval);
5242 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5243 }
5244 tmp_addr = ADDSI (tmp_addr, 4);
5245 }
5246 {
5247 SI tmp_tmp;
5248 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5249 {
5250 SI opval = tmp_tmp;
5251 SET_H_GR (((UINT) 6), opval);
5252 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5253 }
5254 tmp_addr = ADDSI (tmp_addr, 4);
5255 }
5256 {
5257 SI tmp_tmp;
5258 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5259 {
5260 SI opval = tmp_tmp;
5261 SET_H_GR (((UINT) 5), opval);
5262 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5263 }
5264 tmp_addr = ADDSI (tmp_addr, 4);
5265 }
5266 {
5267 SI tmp_tmp;
5268 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5269 {
5270 SI opval = tmp_tmp;
5271 SET_H_GR (((UINT) 4), opval);
5272 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5273 }
5274 tmp_addr = ADDSI (tmp_addr, 4);
5275 }
5276 {
5277 SI tmp_tmp;
5278 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5279 {
5280 SI opval = tmp_tmp;
5281 SET_H_GR (((UINT) 3), opval);
5282 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5283 }
5284 tmp_addr = ADDSI (tmp_addr, 4);
5285 }
5286 {
5287 SI tmp_tmp;
5288 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5289 {
5290 SI opval = tmp_tmp;
5291 SET_H_GR (((UINT) 2), opval);
5292 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5293 }
5294 tmp_addr = ADDSI (tmp_addr, 4);
5295 }
5296 {
5297 SI tmp_tmp;
5298 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5299 {
5300 SI opval = tmp_tmp;
5301 SET_H_GR (((UINT) 1), opval);
5302 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5303 }
5304 tmp_addr = ADDSI (tmp_addr, 4);
5305 }
5306 {
5307 SI tmp_tmp;
5308 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5309 {
5310 SI opval = tmp_tmp;
5311 SET_H_GR (((UINT) 0), opval);
5312 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5313 }
5314 tmp_addr = ADDSI (tmp_addr, 4);
5315 }
5316 }
5317 if (NEBI (tmp_postinc, 0)) {
5318 {
5319 SI opval = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (tmp_addr) : (CPU (h_prefixreg_pre_v32)));
5320 SET_H_GR (FLD (f_operand1), opval);
5321 written |= (1 << 5);
5322 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5323 }
5324 }
5325 {
5326 {
5327 BI opval = 0;
5328 CPU (h_xbit) = opval;
5329 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5330 }
5331 {
5332 BI opval = 0;
5333 SET_H_INSN_PREFIXED_P (opval);
5334 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5335 }
5336 }
5337 }
5338
5339 abuf->written = written;
5340 SEM_BRANCH_FINI (vpc);
5341 #undef FLD
5342 }
5343 NEXT (vpc);
5344
5345 CASE (sem, INSN_ADD_B_R) : /* add.b $Rs,$Rd */
5346 {
5347 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5348 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5349 #define FLD(f) abuf->fields.sfmt_add_b_r.f
5350 int UNUSED written = 0;
5351 IADDR UNUSED pc = abuf->addr;
5352 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5353
5354 {
5355 QI tmp_tmpopd;
5356 QI tmp_tmpops;
5357 BI tmp_carry;
5358 QI tmp_newval;
5359 tmp_tmpops = GET_H_GR (FLD (f_operand1));
5360 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5361 tmp_carry = CPU (h_cbit);
5362 tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5363 {
5364 SI tmp_oldregval;
5365 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
5366 {
5367 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
5368 SET_H_GR (FLD (f_operand2), opval);
5369 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5370 }
5371 }
5372 {
5373 {
5374 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))));
5375 CPU (h_cbit) = opval;
5376 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5377 }
5378 {
5379 BI opval = LTQI (tmp_newval, 0);
5380 CPU (h_nbit) = opval;
5381 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5382 }
5383 {
5384 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5385 CPU (h_zbit) = opval;
5386 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5387 }
5388 {
5389 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)));
5390 CPU (h_vbit) = opval;
5391 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5392 }
5393 {
5394 {
5395 BI opval = 0;
5396 CPU (h_xbit) = opval;
5397 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5398 }
5399 {
5400 BI opval = 0;
5401 SET_H_INSN_PREFIXED_P (opval);
5402 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5403 }
5404 }
5405 }
5406 }
5407
5408 #undef FLD
5409 }
5410 NEXT (vpc);
5411
5412 CASE (sem, INSN_ADD_W_R) : /* add.w $Rs,$Rd */
5413 {
5414 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5415 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5416 #define FLD(f) abuf->fields.sfmt_add_b_r.f
5417 int UNUSED written = 0;
5418 IADDR UNUSED pc = abuf->addr;
5419 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5420
5421 {
5422 HI tmp_tmpopd;
5423 HI tmp_tmpops;
5424 BI tmp_carry;
5425 HI tmp_newval;
5426 tmp_tmpops = GET_H_GR (FLD (f_operand1));
5427 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5428 tmp_carry = CPU (h_cbit);
5429 tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5430 {
5431 SI tmp_oldregval;
5432 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
5433 {
5434 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
5435 SET_H_GR (FLD (f_operand2), opval);
5436 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5437 }
5438 }
5439 {
5440 {
5441 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))));
5442 CPU (h_cbit) = opval;
5443 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5444 }
5445 {
5446 BI opval = LTHI (tmp_newval, 0);
5447 CPU (h_nbit) = opval;
5448 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5449 }
5450 {
5451 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5452 CPU (h_zbit) = opval;
5453 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5454 }
5455 {
5456 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)));
5457 CPU (h_vbit) = opval;
5458 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5459 }
5460 {
5461 {
5462 BI opval = 0;
5463 CPU (h_xbit) = opval;
5464 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5465 }
5466 {
5467 BI opval = 0;
5468 SET_H_INSN_PREFIXED_P (opval);
5469 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5470 }
5471 }
5472 }
5473 }
5474
5475 #undef FLD
5476 }
5477 NEXT (vpc);
5478
5479 CASE (sem, INSN_ADD_D_R) : /* add.d $Rs,$Rd */
5480 {
5481 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5482 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5483 #define FLD(f) abuf->fields.sfmt_add_b_r.f
5484 int UNUSED written = 0;
5485 IADDR UNUSED pc = abuf->addr;
5486 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5487
5488 {
5489 SI tmp_tmpopd;
5490 SI tmp_tmpops;
5491 BI tmp_carry;
5492 SI tmp_newval;
5493 tmp_tmpops = GET_H_GR (FLD (f_operand1));
5494 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5495 tmp_carry = CPU (h_cbit);
5496 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5497 {
5498 SI opval = tmp_newval;
5499 SET_H_GR (FLD (f_operand2), opval);
5500 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5501 }
5502 {
5503 {
5504 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))));
5505 CPU (h_cbit) = opval;
5506 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5507 }
5508 {
5509 BI opval = LTSI (tmp_newval, 0);
5510 CPU (h_nbit) = opval;
5511 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5512 }
5513 {
5514 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5515 CPU (h_zbit) = opval;
5516 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5517 }
5518 {
5519 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)));
5520 CPU (h_vbit) = opval;
5521 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5522 }
5523 {
5524 {
5525 BI opval = 0;
5526 CPU (h_xbit) = opval;
5527 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5528 }
5529 {
5530 BI opval = 0;
5531 SET_H_INSN_PREFIXED_P (opval);
5532 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5533 }
5534 }
5535 }
5536 }
5537
5538 #undef FLD
5539 }
5540 NEXT (vpc);
5541
5542 CASE (sem, INSN_ADD_M_B_M) : /* add-m.b [${Rs}${inc}],${Rd} */
5543 {
5544 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5545 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5546 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
5547 int UNUSED written = 0;
5548 IADDR UNUSED pc = abuf->addr;
5549 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5550
5551 {
5552 QI tmp_tmpopd;
5553 QI tmp_tmpops;
5554 BI tmp_carry;
5555 QI tmp_newval;
5556 tmp_tmpops = ({ SI tmp_addr;
5557 QI tmp_tmp_mem;
5558 BI tmp_postinc;
5559 tmp_postinc = FLD (f_memmode);
5560 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
5561 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
5562 ; if (NEBI (tmp_postinc, 0)) {
5563 {
5564 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
5565 tmp_addr = ADDSI (tmp_addr, 1);
5566 }
5567 {
5568 SI opval = tmp_addr;
5569 SET_H_GR (FLD (f_operand1), opval);
5570 written |= (1 << 12);
5571 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5572 }
5573 }
5574 }
5575 ; tmp_tmp_mem; });
5576 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5577 tmp_carry = CPU (h_cbit);
5578 tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5579 {
5580 SI tmp_oldregval;
5581 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
5582 {
5583 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
5584 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
5585 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5586 }
5587 }
5588 {
5589 {
5590 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))));
5591 CPU (h_cbit) = opval;
5592 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5593 }
5594 {
5595 BI opval = LTQI (tmp_newval, 0);
5596 CPU (h_nbit) = opval;
5597 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5598 }
5599 {
5600 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5601 CPU (h_zbit) = opval;
5602 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5603 }
5604 {
5605 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)));
5606 CPU (h_vbit) = opval;
5607 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5608 }
5609 {
5610 {
5611 BI opval = 0;
5612 CPU (h_xbit) = opval;
5613 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5614 }
5615 {
5616 BI opval = 0;
5617 SET_H_INSN_PREFIXED_P (opval);
5618 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5619 }
5620 }
5621 }
5622 }
5623
5624 abuf->written = written;
5625 #undef FLD
5626 }
5627 NEXT (vpc);
5628
5629 CASE (sem, INSN_ADD_M_W_M) : /* add-m.w [${Rs}${inc}],${Rd} */
5630 {
5631 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5632 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5633 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
5634 int UNUSED written = 0;
5635 IADDR UNUSED pc = abuf->addr;
5636 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5637
5638 {
5639 HI tmp_tmpopd;
5640 HI tmp_tmpops;
5641 BI tmp_carry;
5642 HI tmp_newval;
5643 tmp_tmpops = ({ SI tmp_addr;
5644 HI tmp_tmp_mem;
5645 BI tmp_postinc;
5646 tmp_postinc = FLD (f_memmode);
5647 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
5648 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
5649 ; if (NEBI (tmp_postinc, 0)) {
5650 {
5651 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
5652 tmp_addr = ADDSI (tmp_addr, 2);
5653 }
5654 {
5655 SI opval = tmp_addr;
5656 SET_H_GR (FLD (f_operand1), opval);
5657 written |= (1 << 12);
5658 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5659 }
5660 }
5661 }
5662 ; tmp_tmp_mem; });
5663 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5664 tmp_carry = CPU (h_cbit);
5665 tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5666 {
5667 SI tmp_oldregval;
5668 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
5669 {
5670 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
5671 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
5672 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5673 }
5674 }
5675 {
5676 {
5677 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))));
5678 CPU (h_cbit) = opval;
5679 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5680 }
5681 {
5682 BI opval = LTHI (tmp_newval, 0);
5683 CPU (h_nbit) = opval;
5684 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5685 }
5686 {
5687 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5688 CPU (h_zbit) = opval;
5689 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5690 }
5691 {
5692 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)));
5693 CPU (h_vbit) = opval;
5694 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5695 }
5696 {
5697 {
5698 BI opval = 0;
5699 CPU (h_xbit) = opval;
5700 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5701 }
5702 {
5703 BI opval = 0;
5704 SET_H_INSN_PREFIXED_P (opval);
5705 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5706 }
5707 }
5708 }
5709 }
5710
5711 abuf->written = written;
5712 #undef FLD
5713 }
5714 NEXT (vpc);
5715
5716 CASE (sem, INSN_ADD_M_D_M) : /* add-m.d [${Rs}${inc}],${Rd} */
5717 {
5718 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5719 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5720 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
5721 int UNUSED written = 0;
5722 IADDR UNUSED pc = abuf->addr;
5723 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5724
5725 {
5726 SI tmp_tmpopd;
5727 SI tmp_tmpops;
5728 BI tmp_carry;
5729 SI tmp_newval;
5730 tmp_tmpops = ({ SI tmp_addr;
5731 SI tmp_tmp_mem;
5732 BI tmp_postinc;
5733 tmp_postinc = FLD (f_memmode);
5734 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
5735 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
5736 ; if (NEBI (tmp_postinc, 0)) {
5737 {
5738 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
5739 tmp_addr = ADDSI (tmp_addr, 4);
5740 }
5741 {
5742 SI opval = tmp_addr;
5743 SET_H_GR (FLD (f_operand1), opval);
5744 written |= (1 << 11);
5745 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5746 }
5747 }
5748 }
5749 ; tmp_tmp_mem; });
5750 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5751 tmp_carry = CPU (h_cbit);
5752 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5753 {
5754 SI opval = tmp_newval;
5755 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
5756 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5757 }
5758 {
5759 {
5760 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))));
5761 CPU (h_cbit) = opval;
5762 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5763 }
5764 {
5765 BI opval = LTSI (tmp_newval, 0);
5766 CPU (h_nbit) = opval;
5767 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5768 }
5769 {
5770 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5771 CPU (h_zbit) = opval;
5772 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5773 }
5774 {
5775 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)));
5776 CPU (h_vbit) = opval;
5777 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5778 }
5779 {
5780 {
5781 BI opval = 0;
5782 CPU (h_xbit) = opval;
5783 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5784 }
5785 {
5786 BI opval = 0;
5787 SET_H_INSN_PREFIXED_P (opval);
5788 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5789 }
5790 }
5791 }
5792 }
5793
5794 abuf->written = written;
5795 #undef FLD
5796 }
5797 NEXT (vpc);
5798
5799 CASE (sem, INSN_ADDCBR) : /* add.b ${sconst8}],${Rd} */
5800 {
5801 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5802 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5803 #define FLD(f) abuf->fields.sfmt_addcbr.f
5804 int UNUSED written = 0;
5805 IADDR UNUSED pc = abuf->addr;
5806 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5807
5808 {
5809 QI tmp_tmpopd;
5810 QI tmp_tmpops;
5811 BI tmp_carry;
5812 QI tmp_newval;
5813 tmp_tmpops = FLD (f_indir_pc__byte);
5814 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5815 tmp_carry = CPU (h_cbit);
5816 tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5817 {
5818 SI tmp_oldregval;
5819 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
5820 {
5821 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
5822 SET_H_GR (FLD (f_operand2), opval);
5823 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5824 }
5825 }
5826 {
5827 {
5828 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))));
5829 CPU (h_cbit) = opval;
5830 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5831 }
5832 {
5833 BI opval = LTQI (tmp_newval, 0);
5834 CPU (h_nbit) = opval;
5835 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5836 }
5837 {
5838 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5839 CPU (h_zbit) = opval;
5840 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5841 }
5842 {
5843 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)));
5844 CPU (h_vbit) = opval;
5845 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5846 }
5847 {
5848 {
5849 BI opval = 0;
5850 CPU (h_xbit) = opval;
5851 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5852 }
5853 {
5854 BI opval = 0;
5855 SET_H_INSN_PREFIXED_P (opval);
5856 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5857 }
5858 }
5859 }
5860 }
5861
5862 #undef FLD
5863 }
5864 NEXT (vpc);
5865
5866 CASE (sem, INSN_ADDCWR) : /* add.w ${sconst16}],${Rd} */
5867 {
5868 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5869 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5870 #define FLD(f) abuf->fields.sfmt_addcwr.f
5871 int UNUSED written = 0;
5872 IADDR UNUSED pc = abuf->addr;
5873 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5874
5875 {
5876 HI tmp_tmpopd;
5877 HI tmp_tmpops;
5878 BI tmp_carry;
5879 HI tmp_newval;
5880 tmp_tmpops = FLD (f_indir_pc__word);
5881 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5882 tmp_carry = CPU (h_cbit);
5883 tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5884 {
5885 SI tmp_oldregval;
5886 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
5887 {
5888 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
5889 SET_H_GR (FLD (f_operand2), opval);
5890 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5891 }
5892 }
5893 {
5894 {
5895 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))));
5896 CPU (h_cbit) = opval;
5897 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5898 }
5899 {
5900 BI opval = LTHI (tmp_newval, 0);
5901 CPU (h_nbit) = opval;
5902 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5903 }
5904 {
5905 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5906 CPU (h_zbit) = opval;
5907 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5908 }
5909 {
5910 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)));
5911 CPU (h_vbit) = opval;
5912 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5913 }
5914 {
5915 {
5916 BI opval = 0;
5917 CPU (h_xbit) = opval;
5918 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5919 }
5920 {
5921 BI opval = 0;
5922 SET_H_INSN_PREFIXED_P (opval);
5923 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5924 }
5925 }
5926 }
5927 }
5928
5929 #undef FLD
5930 }
5931 NEXT (vpc);
5932
5933 CASE (sem, INSN_ADDCDR) : /* add.d ${const32}],${Rd} */
5934 {
5935 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5936 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5937 #define FLD(f) abuf->fields.sfmt_addcdr.f
5938 int UNUSED written = 0;
5939 IADDR UNUSED pc = abuf->addr;
5940 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
5941
5942 {
5943 SI tmp_tmpopd;
5944 SI tmp_tmpops;
5945 BI tmp_carry;
5946 SI tmp_newval;
5947 tmp_tmpops = FLD (f_indir_pc__dword);
5948 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5949 tmp_carry = CPU (h_cbit);
5950 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5951 {
5952 SI opval = tmp_newval;
5953 SET_H_GR (FLD (f_operand2), opval);
5954 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5955 }
5956 {
5957 {
5958 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))));
5959 CPU (h_cbit) = opval;
5960 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5961 }
5962 {
5963 BI opval = LTSI (tmp_newval, 0);
5964 CPU (h_nbit) = opval;
5965 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5966 }
5967 {
5968 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5969 CPU (h_zbit) = opval;
5970 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5971 }
5972 {
5973 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)));
5974 CPU (h_vbit) = opval;
5975 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5976 }
5977 {
5978 {
5979 BI opval = 0;
5980 CPU (h_xbit) = opval;
5981 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5982 }
5983 {
5984 BI opval = 0;
5985 SET_H_INSN_PREFIXED_P (opval);
5986 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5987 }
5988 }
5989 }
5990 }
5991
5992 #undef FLD
5993 }
5994 NEXT (vpc);
5995
5996 CASE (sem, INSN_ADDCPC) : /* add.d ${sconst32},PC */
5997 {
5998 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5999 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6000 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
6001 int UNUSED written = 0;
6002 IADDR UNUSED pc = abuf->addr;
6003 SEM_BRANCH_INIT
6004 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
6005
6006 {
6007 SI tmp_newpc;
6008 SI tmp_oldpc;
6009 SI tmp_offs;
6010 tmp_offs = FLD (f_indir_pc__dword);
6011 tmp_oldpc = ADDSI (pc, 6);
6012 tmp_newpc = ADDSI (tmp_oldpc, tmp_offs);
6013 {
6014 USI opval = tmp_newpc;
6015 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6016 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6017 }
6018 {
6019 {
6020 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))));
6021 CPU (h_cbit) = opval;
6022 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6023 }
6024 {
6025 BI opval = LTSI (tmp_newpc, 0);
6026 CPU (h_nbit) = opval;
6027 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6028 }
6029 {
6030 BI opval = ANDIF (EQSI (tmp_newpc, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6031 CPU (h_zbit) = opval;
6032 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6033 }
6034 {
6035 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)));
6036 CPU (h_vbit) = opval;
6037 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6038 }
6039 {
6040 {
6041 BI opval = 0;
6042 CPU (h_xbit) = opval;
6043 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6044 }
6045 {
6046 BI opval = 0;
6047 SET_H_INSN_PREFIXED_P (opval);
6048 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6049 }
6050 }
6051 }
6052 }
6053
6054 SEM_BRANCH_FINI (vpc);
6055 #undef FLD
6056 }
6057 NEXT (vpc);
6058
6059 CASE (sem, INSN_ADDS_B_R) : /* adds.b $Rs,$Rd */
6060 {
6061 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6063 #define FLD(f) abuf->fields.sfmt_add_b_r.f
6064 int UNUSED written = 0;
6065 IADDR UNUSED pc = abuf->addr;
6066 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6067
6068 {
6069 SI tmp_tmpopd;
6070 SI tmp_tmpops;
6071 BI tmp_carry;
6072 SI tmp_newval;
6073 tmp_tmpops = EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
6074 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6075 tmp_carry = CPU (h_cbit);
6076 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6077 {
6078 SI opval = tmp_newval;
6079 SET_H_GR (FLD (f_operand2), opval);
6080 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6081 }
6082 {
6083 {
6084 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))));
6085 CPU (h_cbit) = opval;
6086 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6087 }
6088 {
6089 BI opval = LTSI (tmp_newval, 0);
6090 CPU (h_nbit) = opval;
6091 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6092 }
6093 {
6094 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6095 CPU (h_zbit) = opval;
6096 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6097 }
6098 {
6099 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)));
6100 CPU (h_vbit) = opval;
6101 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6102 }
6103 {
6104 {
6105 BI opval = 0;
6106 CPU (h_xbit) = opval;
6107 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6108 }
6109 {
6110 BI opval = 0;
6111 SET_H_INSN_PREFIXED_P (opval);
6112 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6113 }
6114 }
6115 }
6116 }
6117
6118 #undef FLD
6119 }
6120 NEXT (vpc);
6121
6122 CASE (sem, INSN_ADDS_W_R) : /* adds.w $Rs,$Rd */
6123 {
6124 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6125 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6126 #define FLD(f) abuf->fields.sfmt_add_b_r.f
6127 int UNUSED written = 0;
6128 IADDR UNUSED pc = abuf->addr;
6129 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6130
6131 {
6132 SI tmp_tmpopd;
6133 SI tmp_tmpops;
6134 BI tmp_carry;
6135 SI tmp_newval;
6136 tmp_tmpops = EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
6137 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6138 tmp_carry = CPU (h_cbit);
6139 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6140 {
6141 SI opval = tmp_newval;
6142 SET_H_GR (FLD (f_operand2), opval);
6143 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6144 }
6145 {
6146 {
6147 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))));
6148 CPU (h_cbit) = opval;
6149 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6150 }
6151 {
6152 BI opval = LTSI (tmp_newval, 0);
6153 CPU (h_nbit) = opval;
6154 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6155 }
6156 {
6157 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6158 CPU (h_zbit) = opval;
6159 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6160 }
6161 {
6162 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)));
6163 CPU (h_vbit) = opval;
6164 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6165 }
6166 {
6167 {
6168 BI opval = 0;
6169 CPU (h_xbit) = opval;
6170 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6171 }
6172 {
6173 BI opval = 0;
6174 SET_H_INSN_PREFIXED_P (opval);
6175 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6176 }
6177 }
6178 }
6179 }
6180
6181 #undef FLD
6182 }
6183 NEXT (vpc);
6184
6185 CASE (sem, INSN_ADDS_M_B_M) : /* adds-m.b [${Rs}${inc}],$Rd */
6186 {
6187 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6188 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6189 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
6190 int UNUSED written = 0;
6191 IADDR UNUSED pc = abuf->addr;
6192 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6193
6194 {
6195 SI tmp_tmpopd;
6196 SI tmp_tmpops;
6197 BI tmp_carry;
6198 SI tmp_newval;
6199 tmp_tmpops = EXTQISI (({ SI tmp_addr;
6200 QI tmp_tmp_mem;
6201 BI tmp_postinc;
6202 tmp_postinc = FLD (f_memmode);
6203 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
6204 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
6205 ; if (NEBI (tmp_postinc, 0)) {
6206 {
6207 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
6208 tmp_addr = ADDSI (tmp_addr, 1);
6209 }
6210 {
6211 SI opval = tmp_addr;
6212 SET_H_GR (FLD (f_operand1), opval);
6213 written |= (1 << 11);
6214 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6215 }
6216 }
6217 }
6218 ; tmp_tmp_mem; }));
6219 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6220 tmp_carry = CPU (h_cbit);
6221 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6222 {
6223 SI opval = tmp_newval;
6224 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
6225 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6226 }
6227 {
6228 {
6229 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))));
6230 CPU (h_cbit) = opval;
6231 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6232 }
6233 {
6234 BI opval = LTSI (tmp_newval, 0);
6235 CPU (h_nbit) = opval;
6236 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6237 }
6238 {
6239 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6240 CPU (h_zbit) = opval;
6241 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6242 }
6243 {
6244 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)));
6245 CPU (h_vbit) = opval;
6246 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6247 }
6248 {
6249 {
6250 BI opval = 0;
6251 CPU (h_xbit) = opval;
6252 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6253 }
6254 {
6255 BI opval = 0;
6256 SET_H_INSN_PREFIXED_P (opval);
6257 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6258 }
6259 }
6260 }
6261 }
6262
6263 abuf->written = written;
6264 #undef FLD
6265 }
6266 NEXT (vpc);
6267
6268 CASE (sem, INSN_ADDS_M_W_M) : /* adds-m.w [${Rs}${inc}],$Rd */
6269 {
6270 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6271 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6272 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
6273 int UNUSED written = 0;
6274 IADDR UNUSED pc = abuf->addr;
6275 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6276
6277 {
6278 SI tmp_tmpopd;
6279 SI tmp_tmpops;
6280 BI tmp_carry;
6281 SI tmp_newval;
6282 tmp_tmpops = EXTHISI (({ SI tmp_addr;
6283 HI tmp_tmp_mem;
6284 BI tmp_postinc;
6285 tmp_postinc = FLD (f_memmode);
6286 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
6287 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
6288 ; if (NEBI (tmp_postinc, 0)) {
6289 {
6290 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
6291 tmp_addr = ADDSI (tmp_addr, 2);
6292 }
6293 {
6294 SI opval = tmp_addr;
6295 SET_H_GR (FLD (f_operand1), opval);
6296 written |= (1 << 11);
6297 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6298 }
6299 }
6300 }
6301 ; tmp_tmp_mem; }));
6302 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6303 tmp_carry = CPU (h_cbit);
6304 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6305 {
6306 SI opval = tmp_newval;
6307 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
6308 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6309 }
6310 {
6311 {
6312 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))));
6313 CPU (h_cbit) = opval;
6314 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6315 }
6316 {
6317 BI opval = LTSI (tmp_newval, 0);
6318 CPU (h_nbit) = opval;
6319 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6320 }
6321 {
6322 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6323 CPU (h_zbit) = opval;
6324 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6325 }
6326 {
6327 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)));
6328 CPU (h_vbit) = opval;
6329 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6330 }
6331 {
6332 {
6333 BI opval = 0;
6334 CPU (h_xbit) = opval;
6335 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6336 }
6337 {
6338 BI opval = 0;
6339 SET_H_INSN_PREFIXED_P (opval);
6340 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6341 }
6342 }
6343 }
6344 }
6345
6346 abuf->written = written;
6347 #undef FLD
6348 }
6349 NEXT (vpc);
6350
6351 CASE (sem, INSN_ADDSCBR) : /* [${Rs}${inc}],$Rd */
6352 {
6353 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6354 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6355 #define FLD(f) abuf->fields.sfmt_addcbr.f
6356 int UNUSED written = 0;
6357 IADDR UNUSED pc = abuf->addr;
6358 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6359
6360 {
6361 SI tmp_tmpopd;
6362 SI tmp_tmpops;
6363 BI tmp_carry;
6364 SI tmp_newval;
6365 tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
6366 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6367 tmp_carry = CPU (h_cbit);
6368 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6369 {
6370 SI opval = tmp_newval;
6371 SET_H_GR (FLD (f_operand2), opval);
6372 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6373 }
6374 {
6375 {
6376 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))));
6377 CPU (h_cbit) = opval;
6378 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6379 }
6380 {
6381 BI opval = LTSI (tmp_newval, 0);
6382 CPU (h_nbit) = opval;
6383 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6384 }
6385 {
6386 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6387 CPU (h_zbit) = opval;
6388 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6389 }
6390 {
6391 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)));
6392 CPU (h_vbit) = opval;
6393 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6394 }
6395 {
6396 {
6397 BI opval = 0;
6398 CPU (h_xbit) = opval;
6399 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6400 }
6401 {
6402 BI opval = 0;
6403 SET_H_INSN_PREFIXED_P (opval);
6404 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6405 }
6406 }
6407 }
6408 }
6409
6410 #undef FLD
6411 }
6412 NEXT (vpc);
6413
6414 CASE (sem, INSN_ADDSCWR) : /* [${Rs}${inc}],$Rd */
6415 {
6416 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6417 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6418 #define FLD(f) abuf->fields.sfmt_addcwr.f
6419 int UNUSED written = 0;
6420 IADDR UNUSED pc = abuf->addr;
6421 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6422
6423 {
6424 SI tmp_tmpopd;
6425 SI tmp_tmpops;
6426 BI tmp_carry;
6427 SI tmp_newval;
6428 tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
6429 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6430 tmp_carry = CPU (h_cbit);
6431 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6432 {
6433 SI opval = tmp_newval;
6434 SET_H_GR (FLD (f_operand2), opval);
6435 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6436 }
6437 {
6438 {
6439 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))));
6440 CPU (h_cbit) = opval;
6441 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6442 }
6443 {
6444 BI opval = LTSI (tmp_newval, 0);
6445 CPU (h_nbit) = opval;
6446 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6447 }
6448 {
6449 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6450 CPU (h_zbit) = opval;
6451 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6452 }
6453 {
6454 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)));
6455 CPU (h_vbit) = opval;
6456 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6457 }
6458 {
6459 {
6460 BI opval = 0;
6461 CPU (h_xbit) = opval;
6462 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6463 }
6464 {
6465 BI opval = 0;
6466 SET_H_INSN_PREFIXED_P (opval);
6467 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6468 }
6469 }
6470 }
6471 }
6472
6473 #undef FLD
6474 }
6475 NEXT (vpc);
6476
6477 CASE (sem, INSN_ADDSPCPC) : /* adds.w [PC],PC */
6478 {
6479 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6480 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6481 #define FLD(f) abuf->fields.fmt_empty.f
6482 int UNUSED written = 0;
6483 IADDR UNUSED pc = abuf->addr;
6484 SEM_BRANCH_INIT
6485 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6486
6487 {
6488 SI tmp_newpc;
6489 SI tmp_oldpc;
6490 HI tmp_offs;
6491 if (NOTBI (GET_H_INSN_PREFIXED_P ())) {
6492 cgen_rtx_error (current_cpu, "Unexpected adds.w [PC],PC without prefix");
6493 }
6494 tmp_offs = GETMEMHI (current_cpu, pc, CPU (h_prefixreg_pre_v32));
6495 tmp_oldpc = ADDSI (pc, 2);
6496 tmp_newpc = ADDSI (tmp_oldpc, tmp_offs);
6497 {
6498 USI opval = tmp_newpc;
6499 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6500 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6501 }
6502 {
6503 {
6504 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))));
6505 CPU (h_cbit) = opval;
6506 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6507 }
6508 {
6509 BI opval = LTSI (tmp_newpc, 0);
6510 CPU (h_nbit) = opval;
6511 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6512 }
6513 {
6514 BI opval = ANDIF (EQSI (tmp_newpc, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6515 CPU (h_zbit) = opval;
6516 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6517 }
6518 {
6519 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)));
6520 CPU (h_vbit) = opval;
6521 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6522 }
6523 {
6524 {
6525 BI opval = 0;
6526 CPU (h_xbit) = opval;
6527 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6528 }
6529 {
6530 BI opval = 0;
6531 SET_H_INSN_PREFIXED_P (opval);
6532 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6533 }
6534 }
6535 }
6536 }
6537
6538 SEM_BRANCH_FINI (vpc);
6539 #undef FLD
6540 }
6541 NEXT (vpc);
6542
6543 CASE (sem, INSN_ADDU_B_R) : /* addu.b $Rs,$Rd */
6544 {
6545 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6546 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6547 #define FLD(f) abuf->fields.sfmt_add_b_r.f
6548 int UNUSED written = 0;
6549 IADDR UNUSED pc = abuf->addr;
6550 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6551
6552 {
6553 SI tmp_tmpopd;
6554 SI tmp_tmpops;
6555 BI tmp_carry;
6556 SI tmp_newval;
6557 tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
6558 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6559 tmp_carry = CPU (h_cbit);
6560 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6561 {
6562 SI opval = tmp_newval;
6563 SET_H_GR (FLD (f_operand2), opval);
6564 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6565 }
6566 {
6567 {
6568 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))));
6569 CPU (h_cbit) = opval;
6570 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6571 }
6572 {
6573 BI opval = LTSI (tmp_newval, 0);
6574 CPU (h_nbit) = opval;
6575 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6576 }
6577 {
6578 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6579 CPU (h_zbit) = opval;
6580 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6581 }
6582 {
6583 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)));
6584 CPU (h_vbit) = opval;
6585 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6586 }
6587 {
6588 {
6589 BI opval = 0;
6590 CPU (h_xbit) = opval;
6591 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6592 }
6593 {
6594 BI opval = 0;
6595 SET_H_INSN_PREFIXED_P (opval);
6596 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6597 }
6598 }
6599 }
6600 }
6601
6602 #undef FLD
6603 }
6604 NEXT (vpc);
6605
6606 CASE (sem, INSN_ADDU_W_R) : /* addu.w $Rs,$Rd */
6607 {
6608 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6609 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6610 #define FLD(f) abuf->fields.sfmt_add_b_r.f
6611 int UNUSED written = 0;
6612 IADDR UNUSED pc = abuf->addr;
6613 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6614
6615 {
6616 SI tmp_tmpopd;
6617 SI tmp_tmpops;
6618 BI tmp_carry;
6619 SI tmp_newval;
6620 tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
6621 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6622 tmp_carry = CPU (h_cbit);
6623 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6624 {
6625 SI opval = tmp_newval;
6626 SET_H_GR (FLD (f_operand2), opval);
6627 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6628 }
6629 {
6630 {
6631 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))));
6632 CPU (h_cbit) = opval;
6633 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6634 }
6635 {
6636 BI opval = LTSI (tmp_newval, 0);
6637 CPU (h_nbit) = opval;
6638 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6639 }
6640 {
6641 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6642 CPU (h_zbit) = opval;
6643 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6644 }
6645 {
6646 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)));
6647 CPU (h_vbit) = opval;
6648 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6649 }
6650 {
6651 {
6652 BI opval = 0;
6653 CPU (h_xbit) = opval;
6654 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6655 }
6656 {
6657 BI opval = 0;
6658 SET_H_INSN_PREFIXED_P (opval);
6659 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6660 }
6661 }
6662 }
6663 }
6664
6665 #undef FLD
6666 }
6667 NEXT (vpc);
6668
6669 CASE (sem, INSN_ADDU_M_B_M) : /* addu-m.b [${Rs}${inc}],$Rd */
6670 {
6671 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6672 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6673 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
6674 int UNUSED written = 0;
6675 IADDR UNUSED pc = abuf->addr;
6676 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6677
6678 {
6679 SI tmp_tmpopd;
6680 SI tmp_tmpops;
6681 BI tmp_carry;
6682 SI tmp_newval;
6683 tmp_tmpops = ZEXTQISI (({ SI tmp_addr;
6684 QI tmp_tmp_mem;
6685 BI tmp_postinc;
6686 tmp_postinc = FLD (f_memmode);
6687 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
6688 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
6689 ; if (NEBI (tmp_postinc, 0)) {
6690 {
6691 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
6692 tmp_addr = ADDSI (tmp_addr, 1);
6693 }
6694 {
6695 SI opval = tmp_addr;
6696 SET_H_GR (FLD (f_operand1), opval);
6697 written |= (1 << 11);
6698 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6699 }
6700 }
6701 }
6702 ; tmp_tmp_mem; }));
6703 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6704 tmp_carry = CPU (h_cbit);
6705 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6706 {
6707 SI opval = tmp_newval;
6708 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
6709 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6710 }
6711 {
6712 {
6713 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))));
6714 CPU (h_cbit) = opval;
6715 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6716 }
6717 {
6718 BI opval = LTSI (tmp_newval, 0);
6719 CPU (h_nbit) = opval;
6720 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6721 }
6722 {
6723 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6724 CPU (h_zbit) = opval;
6725 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6726 }
6727 {
6728 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)));
6729 CPU (h_vbit) = opval;
6730 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6731 }
6732 {
6733 {
6734 BI opval = 0;
6735 CPU (h_xbit) = opval;
6736 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6737 }
6738 {
6739 BI opval = 0;
6740 SET_H_INSN_PREFIXED_P (opval);
6741 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6742 }
6743 }
6744 }
6745 }
6746
6747 abuf->written = written;
6748 #undef FLD
6749 }
6750 NEXT (vpc);
6751
6752 CASE (sem, INSN_ADDU_M_W_M) : /* addu-m.w [${Rs}${inc}],$Rd */
6753 {
6754 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6755 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6756 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
6757 int UNUSED written = 0;
6758 IADDR UNUSED pc = abuf->addr;
6759 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6760
6761 {
6762 SI tmp_tmpopd;
6763 SI tmp_tmpops;
6764 BI tmp_carry;
6765 SI tmp_newval;
6766 tmp_tmpops = ZEXTHISI (({ SI tmp_addr;
6767 HI tmp_tmp_mem;
6768 BI tmp_postinc;
6769 tmp_postinc = FLD (f_memmode);
6770 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
6771 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
6772 ; if (NEBI (tmp_postinc, 0)) {
6773 {
6774 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
6775 tmp_addr = ADDSI (tmp_addr, 2);
6776 }
6777 {
6778 SI opval = tmp_addr;
6779 SET_H_GR (FLD (f_operand1), opval);
6780 written |= (1 << 11);
6781 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6782 }
6783 }
6784 }
6785 ; tmp_tmp_mem; }));
6786 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6787 tmp_carry = CPU (h_cbit);
6788 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6789 {
6790 SI opval = tmp_newval;
6791 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
6792 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6793 }
6794 {
6795 {
6796 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))));
6797 CPU (h_cbit) = opval;
6798 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6799 }
6800 {
6801 BI opval = LTSI (tmp_newval, 0);
6802 CPU (h_nbit) = opval;
6803 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6804 }
6805 {
6806 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6807 CPU (h_zbit) = opval;
6808 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6809 }
6810 {
6811 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)));
6812 CPU (h_vbit) = opval;
6813 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6814 }
6815 {
6816 {
6817 BI opval = 0;
6818 CPU (h_xbit) = opval;
6819 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6820 }
6821 {
6822 BI opval = 0;
6823 SET_H_INSN_PREFIXED_P (opval);
6824 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6825 }
6826 }
6827 }
6828 }
6829
6830 abuf->written = written;
6831 #undef FLD
6832 }
6833 NEXT (vpc);
6834
6835 CASE (sem, INSN_ADDUCBR) : /* [${Rs}${inc}],$Rd */
6836 {
6837 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6838 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6839 #define FLD(f) abuf->fields.sfmt_addcbr.f
6840 int UNUSED written = 0;
6841 IADDR UNUSED pc = abuf->addr;
6842 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6843
6844 {
6845 SI tmp_tmpopd;
6846 SI tmp_tmpops;
6847 BI tmp_carry;
6848 SI tmp_newval;
6849 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
6850 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6851 tmp_carry = CPU (h_cbit);
6852 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6853 {
6854 SI opval = tmp_newval;
6855 SET_H_GR (FLD (f_operand2), opval);
6856 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6857 }
6858 {
6859 {
6860 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))));
6861 CPU (h_cbit) = opval;
6862 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6863 }
6864 {
6865 BI opval = LTSI (tmp_newval, 0);
6866 CPU (h_nbit) = opval;
6867 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6868 }
6869 {
6870 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6871 CPU (h_zbit) = opval;
6872 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6873 }
6874 {
6875 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)));
6876 CPU (h_vbit) = opval;
6877 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6878 }
6879 {
6880 {
6881 BI opval = 0;
6882 CPU (h_xbit) = opval;
6883 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6884 }
6885 {
6886 BI opval = 0;
6887 SET_H_INSN_PREFIXED_P (opval);
6888 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6889 }
6890 }
6891 }
6892 }
6893
6894 #undef FLD
6895 }
6896 NEXT (vpc);
6897
6898 CASE (sem, INSN_ADDUCWR) : /* [${Rs}${inc}],$Rd */
6899 {
6900 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6901 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6902 #define FLD(f) abuf->fields.sfmt_addcwr.f
6903 int UNUSED written = 0;
6904 IADDR UNUSED pc = abuf->addr;
6905 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6906
6907 {
6908 SI tmp_tmpopd;
6909 SI tmp_tmpops;
6910 BI tmp_carry;
6911 SI tmp_newval;
6912 tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
6913 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6914 tmp_carry = CPU (h_cbit);
6915 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6916 {
6917 SI opval = tmp_newval;
6918 SET_H_GR (FLD (f_operand2), opval);
6919 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6920 }
6921 {
6922 {
6923 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))));
6924 CPU (h_cbit) = opval;
6925 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6926 }
6927 {
6928 BI opval = LTSI (tmp_newval, 0);
6929 CPU (h_nbit) = opval;
6930 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6931 }
6932 {
6933 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6934 CPU (h_zbit) = opval;
6935 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6936 }
6937 {
6938 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)));
6939 CPU (h_vbit) = opval;
6940 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6941 }
6942 {
6943 {
6944 BI opval = 0;
6945 CPU (h_xbit) = opval;
6946 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6947 }
6948 {
6949 BI opval = 0;
6950 SET_H_INSN_PREFIXED_P (opval);
6951 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6952 }
6953 }
6954 }
6955 }
6956
6957 #undef FLD
6958 }
6959 NEXT (vpc);
6960
6961 CASE (sem, INSN_SUB_B_R) : /* sub.b $Rs,$Rd */
6962 {
6963 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6964 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6965 #define FLD(f) abuf->fields.sfmt_add_b_r.f
6966 int UNUSED written = 0;
6967 IADDR UNUSED pc = abuf->addr;
6968 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6969
6970 {
6971 QI tmp_tmpopd;
6972 QI tmp_tmpops;
6973 BI tmp_carry;
6974 QI tmp_newval;
6975 tmp_tmpops = GET_H_GR (FLD (f_operand1));
6976 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6977 tmp_carry = CPU (h_cbit);
6978 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6979 {
6980 SI tmp_oldregval;
6981 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
6982 {
6983 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
6984 SET_H_GR (FLD (f_operand2), opval);
6985 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6986 }
6987 }
6988 {
6989 {
6990 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))));
6991 CPU (h_cbit) = opval;
6992 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6993 }
6994 {
6995 BI opval = LTQI (tmp_newval, 0);
6996 CPU (h_nbit) = opval;
6997 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6998 }
6999 {
7000 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7001 CPU (h_zbit) = opval;
7002 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7003 }
7004 {
7005 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)));
7006 CPU (h_vbit) = opval;
7007 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7008 }
7009 {
7010 {
7011 BI opval = 0;
7012 CPU (h_xbit) = opval;
7013 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7014 }
7015 {
7016 BI opval = 0;
7017 SET_H_INSN_PREFIXED_P (opval);
7018 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7019 }
7020 }
7021 }
7022 }
7023
7024 #undef FLD
7025 }
7026 NEXT (vpc);
7027
7028 CASE (sem, INSN_SUB_W_R) : /* sub.w $Rs,$Rd */
7029 {
7030 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7031 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7032 #define FLD(f) abuf->fields.sfmt_add_b_r.f
7033 int UNUSED written = 0;
7034 IADDR UNUSED pc = abuf->addr;
7035 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7036
7037 {
7038 HI tmp_tmpopd;
7039 HI tmp_tmpops;
7040 BI tmp_carry;
7041 HI tmp_newval;
7042 tmp_tmpops = GET_H_GR (FLD (f_operand1));
7043 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7044 tmp_carry = CPU (h_cbit);
7045 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7046 {
7047 SI tmp_oldregval;
7048 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
7049 {
7050 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
7051 SET_H_GR (FLD (f_operand2), opval);
7052 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7053 }
7054 }
7055 {
7056 {
7057 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))));
7058 CPU (h_cbit) = opval;
7059 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7060 }
7061 {
7062 BI opval = LTHI (tmp_newval, 0);
7063 CPU (h_nbit) = opval;
7064 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7065 }
7066 {
7067 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7068 CPU (h_zbit) = opval;
7069 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7070 }
7071 {
7072 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)));
7073 CPU (h_vbit) = opval;
7074 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7075 }
7076 {
7077 {
7078 BI opval = 0;
7079 CPU (h_xbit) = opval;
7080 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7081 }
7082 {
7083 BI opval = 0;
7084 SET_H_INSN_PREFIXED_P (opval);
7085 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7086 }
7087 }
7088 }
7089 }
7090
7091 #undef FLD
7092 }
7093 NEXT (vpc);
7094
7095 CASE (sem, INSN_SUB_D_R) : /* sub.d $Rs,$Rd */
7096 {
7097 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7098 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7099 #define FLD(f) abuf->fields.sfmt_add_b_r.f
7100 int UNUSED written = 0;
7101 IADDR UNUSED pc = abuf->addr;
7102 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7103
7104 {
7105 SI tmp_tmpopd;
7106 SI tmp_tmpops;
7107 BI tmp_carry;
7108 SI tmp_newval;
7109 tmp_tmpops = GET_H_GR (FLD (f_operand1));
7110 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7111 tmp_carry = CPU (h_cbit);
7112 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7113 {
7114 SI opval = tmp_newval;
7115 SET_H_GR (FLD (f_operand2), opval);
7116 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7117 }
7118 {
7119 {
7120 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))));
7121 CPU (h_cbit) = opval;
7122 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7123 }
7124 {
7125 BI opval = LTSI (tmp_newval, 0);
7126 CPU (h_nbit) = opval;
7127 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7128 }
7129 {
7130 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7131 CPU (h_zbit) = opval;
7132 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7133 }
7134 {
7135 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)));
7136 CPU (h_vbit) = opval;
7137 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7138 }
7139 {
7140 {
7141 BI opval = 0;
7142 CPU (h_xbit) = opval;
7143 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7144 }
7145 {
7146 BI opval = 0;
7147 SET_H_INSN_PREFIXED_P (opval);
7148 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7149 }
7150 }
7151 }
7152 }
7153
7154 #undef FLD
7155 }
7156 NEXT (vpc);
7157
7158 CASE (sem, INSN_SUB_M_B_M) : /* sub-m.b [${Rs}${inc}],${Rd} */
7159 {
7160 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7161 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7162 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
7163 int UNUSED written = 0;
7164 IADDR UNUSED pc = abuf->addr;
7165 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7166
7167 {
7168 QI tmp_tmpopd;
7169 QI tmp_tmpops;
7170 BI tmp_carry;
7171 QI tmp_newval;
7172 tmp_tmpops = ({ SI tmp_addr;
7173 QI tmp_tmp_mem;
7174 BI tmp_postinc;
7175 tmp_postinc = FLD (f_memmode);
7176 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
7177 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
7178 ; if (NEBI (tmp_postinc, 0)) {
7179 {
7180 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
7181 tmp_addr = ADDSI (tmp_addr, 1);
7182 }
7183 {
7184 SI opval = tmp_addr;
7185 SET_H_GR (FLD (f_operand1), opval);
7186 written |= (1 << 12);
7187 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7188 }
7189 }
7190 }
7191 ; tmp_tmp_mem; });
7192 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7193 tmp_carry = CPU (h_cbit);
7194 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7195 {
7196 SI tmp_oldregval;
7197 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
7198 {
7199 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
7200 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
7201 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7202 }
7203 }
7204 {
7205 {
7206 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))));
7207 CPU (h_cbit) = opval;
7208 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7209 }
7210 {
7211 BI opval = LTQI (tmp_newval, 0);
7212 CPU (h_nbit) = opval;
7213 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7214 }
7215 {
7216 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7217 CPU (h_zbit) = opval;
7218 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7219 }
7220 {
7221 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)));
7222 CPU (h_vbit) = opval;
7223 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7224 }
7225 {
7226 {
7227 BI opval = 0;
7228 CPU (h_xbit) = opval;
7229 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7230 }
7231 {
7232 BI opval = 0;
7233 SET_H_INSN_PREFIXED_P (opval);
7234 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7235 }
7236 }
7237 }
7238 }
7239
7240 abuf->written = written;
7241 #undef FLD
7242 }
7243 NEXT (vpc);
7244
7245 CASE (sem, INSN_SUB_M_W_M) : /* sub-m.w [${Rs}${inc}],${Rd} */
7246 {
7247 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7249 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
7250 int UNUSED written = 0;
7251 IADDR UNUSED pc = abuf->addr;
7252 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7253
7254 {
7255 HI tmp_tmpopd;
7256 HI tmp_tmpops;
7257 BI tmp_carry;
7258 HI tmp_newval;
7259 tmp_tmpops = ({ SI tmp_addr;
7260 HI tmp_tmp_mem;
7261 BI tmp_postinc;
7262 tmp_postinc = FLD (f_memmode);
7263 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
7264 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
7265 ; if (NEBI (tmp_postinc, 0)) {
7266 {
7267 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
7268 tmp_addr = ADDSI (tmp_addr, 2);
7269 }
7270 {
7271 SI opval = tmp_addr;
7272 SET_H_GR (FLD (f_operand1), opval);
7273 written |= (1 << 12);
7274 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7275 }
7276 }
7277 }
7278 ; tmp_tmp_mem; });
7279 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7280 tmp_carry = CPU (h_cbit);
7281 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7282 {
7283 SI tmp_oldregval;
7284 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
7285 {
7286 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
7287 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
7288 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7289 }
7290 }
7291 {
7292 {
7293 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))));
7294 CPU (h_cbit) = opval;
7295 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7296 }
7297 {
7298 BI opval = LTHI (tmp_newval, 0);
7299 CPU (h_nbit) = opval;
7300 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7301 }
7302 {
7303 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7304 CPU (h_zbit) = opval;
7305 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7306 }
7307 {
7308 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)));
7309 CPU (h_vbit) = opval;
7310 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7311 }
7312 {
7313 {
7314 BI opval = 0;
7315 CPU (h_xbit) = opval;
7316 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7317 }
7318 {
7319 BI opval = 0;
7320 SET_H_INSN_PREFIXED_P (opval);
7321 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7322 }
7323 }
7324 }
7325 }
7326
7327 abuf->written = written;
7328 #undef FLD
7329 }
7330 NEXT (vpc);
7331
7332 CASE (sem, INSN_SUB_M_D_M) : /* sub-m.d [${Rs}${inc}],${Rd} */
7333 {
7334 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7336 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
7337 int UNUSED written = 0;
7338 IADDR UNUSED pc = abuf->addr;
7339 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7340
7341 {
7342 SI tmp_tmpopd;
7343 SI tmp_tmpops;
7344 BI tmp_carry;
7345 SI tmp_newval;
7346 tmp_tmpops = ({ SI tmp_addr;
7347 SI tmp_tmp_mem;
7348 BI tmp_postinc;
7349 tmp_postinc = FLD (f_memmode);
7350 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
7351 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
7352 ; if (NEBI (tmp_postinc, 0)) {
7353 {
7354 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
7355 tmp_addr = ADDSI (tmp_addr, 4);
7356 }
7357 {
7358 SI opval = tmp_addr;
7359 SET_H_GR (FLD (f_operand1), opval);
7360 written |= (1 << 11);
7361 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7362 }
7363 }
7364 }
7365 ; tmp_tmp_mem; });
7366 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7367 tmp_carry = CPU (h_cbit);
7368 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7369 {
7370 SI opval = tmp_newval;
7371 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
7372 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7373 }
7374 {
7375 {
7376 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))));
7377 CPU (h_cbit) = opval;
7378 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7379 }
7380 {
7381 BI opval = LTSI (tmp_newval, 0);
7382 CPU (h_nbit) = opval;
7383 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7384 }
7385 {
7386 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7387 CPU (h_zbit) = opval;
7388 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7389 }
7390 {
7391 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)));
7392 CPU (h_vbit) = opval;
7393 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7394 }
7395 {
7396 {
7397 BI opval = 0;
7398 CPU (h_xbit) = opval;
7399 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7400 }
7401 {
7402 BI opval = 0;
7403 SET_H_INSN_PREFIXED_P (opval);
7404 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7405 }
7406 }
7407 }
7408 }
7409
7410 abuf->written = written;
7411 #undef FLD
7412 }
7413 NEXT (vpc);
7414
7415 CASE (sem, INSN_SUBCBR) : /* sub.b ${sconst8}],${Rd} */
7416 {
7417 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7418 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7419 #define FLD(f) abuf->fields.sfmt_addcbr.f
7420 int UNUSED written = 0;
7421 IADDR UNUSED pc = abuf->addr;
7422 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7423
7424 {
7425 QI tmp_tmpopd;
7426 QI tmp_tmpops;
7427 BI tmp_carry;
7428 QI tmp_newval;
7429 tmp_tmpops = FLD (f_indir_pc__byte);
7430 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7431 tmp_carry = CPU (h_cbit);
7432 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7433 {
7434 SI tmp_oldregval;
7435 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
7436 {
7437 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
7438 SET_H_GR (FLD (f_operand2), opval);
7439 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7440 }
7441 }
7442 {
7443 {
7444 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))));
7445 CPU (h_cbit) = opval;
7446 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7447 }
7448 {
7449 BI opval = LTQI (tmp_newval, 0);
7450 CPU (h_nbit) = opval;
7451 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7452 }
7453 {
7454 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7455 CPU (h_zbit) = opval;
7456 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7457 }
7458 {
7459 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)));
7460 CPU (h_vbit) = opval;
7461 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7462 }
7463 {
7464 {
7465 BI opval = 0;
7466 CPU (h_xbit) = opval;
7467 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7468 }
7469 {
7470 BI opval = 0;
7471 SET_H_INSN_PREFIXED_P (opval);
7472 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7473 }
7474 }
7475 }
7476 }
7477
7478 #undef FLD
7479 }
7480 NEXT (vpc);
7481
7482 CASE (sem, INSN_SUBCWR) : /* sub.w ${sconst16}],${Rd} */
7483 {
7484 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7485 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7486 #define FLD(f) abuf->fields.sfmt_addcwr.f
7487 int UNUSED written = 0;
7488 IADDR UNUSED pc = abuf->addr;
7489 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7490
7491 {
7492 HI tmp_tmpopd;
7493 HI tmp_tmpops;
7494 BI tmp_carry;
7495 HI tmp_newval;
7496 tmp_tmpops = FLD (f_indir_pc__word);
7497 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7498 tmp_carry = CPU (h_cbit);
7499 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7500 {
7501 SI tmp_oldregval;
7502 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
7503 {
7504 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
7505 SET_H_GR (FLD (f_operand2), opval);
7506 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7507 }
7508 }
7509 {
7510 {
7511 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))));
7512 CPU (h_cbit) = opval;
7513 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7514 }
7515 {
7516 BI opval = LTHI (tmp_newval, 0);
7517 CPU (h_nbit) = opval;
7518 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7519 }
7520 {
7521 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7522 CPU (h_zbit) = opval;
7523 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7524 }
7525 {
7526 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)));
7527 CPU (h_vbit) = opval;
7528 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7529 }
7530 {
7531 {
7532 BI opval = 0;
7533 CPU (h_xbit) = opval;
7534 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7535 }
7536 {
7537 BI opval = 0;
7538 SET_H_INSN_PREFIXED_P (opval);
7539 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7540 }
7541 }
7542 }
7543 }
7544
7545 #undef FLD
7546 }
7547 NEXT (vpc);
7548
7549 CASE (sem, INSN_SUBCDR) : /* sub.d ${const32}],${Rd} */
7550 {
7551 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7552 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7553 #define FLD(f) abuf->fields.sfmt_addcdr.f
7554 int UNUSED written = 0;
7555 IADDR UNUSED pc = abuf->addr;
7556 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
7557
7558 {
7559 SI tmp_tmpopd;
7560 SI tmp_tmpops;
7561 BI tmp_carry;
7562 SI tmp_newval;
7563 tmp_tmpops = FLD (f_indir_pc__dword);
7564 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7565 tmp_carry = CPU (h_cbit);
7566 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7567 {
7568 SI opval = tmp_newval;
7569 SET_H_GR (FLD (f_operand2), opval);
7570 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7571 }
7572 {
7573 {
7574 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))));
7575 CPU (h_cbit) = opval;
7576 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7577 }
7578 {
7579 BI opval = LTSI (tmp_newval, 0);
7580 CPU (h_nbit) = opval;
7581 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7582 }
7583 {
7584 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7585 CPU (h_zbit) = opval;
7586 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7587 }
7588 {
7589 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)));
7590 CPU (h_vbit) = opval;
7591 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7592 }
7593 {
7594 {
7595 BI opval = 0;
7596 CPU (h_xbit) = opval;
7597 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7598 }
7599 {
7600 BI opval = 0;
7601 SET_H_INSN_PREFIXED_P (opval);
7602 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7603 }
7604 }
7605 }
7606 }
7607
7608 #undef FLD
7609 }
7610 NEXT (vpc);
7611
7612 CASE (sem, INSN_SUBS_B_R) : /* subs.b $Rs,$Rd */
7613 {
7614 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7615 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7616 #define FLD(f) abuf->fields.sfmt_add_b_r.f
7617 int UNUSED written = 0;
7618 IADDR UNUSED pc = abuf->addr;
7619 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7620
7621 {
7622 SI tmp_tmpopd;
7623 SI tmp_tmpops;
7624 BI tmp_carry;
7625 SI tmp_newval;
7626 tmp_tmpops = EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
7627 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7628 tmp_carry = CPU (h_cbit);
7629 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7630 {
7631 SI opval = tmp_newval;
7632 SET_H_GR (FLD (f_operand2), opval);
7633 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7634 }
7635 {
7636 {
7637 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))));
7638 CPU (h_cbit) = opval;
7639 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7640 }
7641 {
7642 BI opval = LTSI (tmp_newval, 0);
7643 CPU (h_nbit) = opval;
7644 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7645 }
7646 {
7647 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7648 CPU (h_zbit) = opval;
7649 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7650 }
7651 {
7652 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)));
7653 CPU (h_vbit) = opval;
7654 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7655 }
7656 {
7657 {
7658 BI opval = 0;
7659 CPU (h_xbit) = opval;
7660 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7661 }
7662 {
7663 BI opval = 0;
7664 SET_H_INSN_PREFIXED_P (opval);
7665 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7666 }
7667 }
7668 }
7669 }
7670
7671 #undef FLD
7672 }
7673 NEXT (vpc);
7674
7675 CASE (sem, INSN_SUBS_W_R) : /* subs.w $Rs,$Rd */
7676 {
7677 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7678 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7679 #define FLD(f) abuf->fields.sfmt_add_b_r.f
7680 int UNUSED written = 0;
7681 IADDR UNUSED pc = abuf->addr;
7682 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7683
7684 {
7685 SI tmp_tmpopd;
7686 SI tmp_tmpops;
7687 BI tmp_carry;
7688 SI tmp_newval;
7689 tmp_tmpops = EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
7690 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7691 tmp_carry = CPU (h_cbit);
7692 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7693 {
7694 SI opval = tmp_newval;
7695 SET_H_GR (FLD (f_operand2), opval);
7696 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7697 }
7698 {
7699 {
7700 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))));
7701 CPU (h_cbit) = opval;
7702 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7703 }
7704 {
7705 BI opval = LTSI (tmp_newval, 0);
7706 CPU (h_nbit) = opval;
7707 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7708 }
7709 {
7710 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7711 CPU (h_zbit) = opval;
7712 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7713 }
7714 {
7715 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)));
7716 CPU (h_vbit) = opval;
7717 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7718 }
7719 {
7720 {
7721 BI opval = 0;
7722 CPU (h_xbit) = opval;
7723 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7724 }
7725 {
7726 BI opval = 0;
7727 SET_H_INSN_PREFIXED_P (opval);
7728 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7729 }
7730 }
7731 }
7732 }
7733
7734 #undef FLD
7735 }
7736 NEXT (vpc);
7737
7738 CASE (sem, INSN_SUBS_M_B_M) : /* subs-m.b [${Rs}${inc}],$Rd */
7739 {
7740 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7741 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7742 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
7743 int UNUSED written = 0;
7744 IADDR UNUSED pc = abuf->addr;
7745 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7746
7747 {
7748 SI tmp_tmpopd;
7749 SI tmp_tmpops;
7750 BI tmp_carry;
7751 SI tmp_newval;
7752 tmp_tmpops = EXTQISI (({ SI tmp_addr;
7753 QI tmp_tmp_mem;
7754 BI tmp_postinc;
7755 tmp_postinc = FLD (f_memmode);
7756 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
7757 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
7758 ; if (NEBI (tmp_postinc, 0)) {
7759 {
7760 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
7761 tmp_addr = ADDSI (tmp_addr, 1);
7762 }
7763 {
7764 SI opval = tmp_addr;
7765 SET_H_GR (FLD (f_operand1), opval);
7766 written |= (1 << 11);
7767 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7768 }
7769 }
7770 }
7771 ; tmp_tmp_mem; }));
7772 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7773 tmp_carry = CPU (h_cbit);
7774 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7775 {
7776 SI opval = tmp_newval;
7777 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
7778 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7779 }
7780 {
7781 {
7782 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))));
7783 CPU (h_cbit) = opval;
7784 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7785 }
7786 {
7787 BI opval = LTSI (tmp_newval, 0);
7788 CPU (h_nbit) = opval;
7789 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7790 }
7791 {
7792 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7793 CPU (h_zbit) = opval;
7794 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7795 }
7796 {
7797 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)));
7798 CPU (h_vbit) = opval;
7799 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7800 }
7801 {
7802 {
7803 BI opval = 0;
7804 CPU (h_xbit) = opval;
7805 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7806 }
7807 {
7808 BI opval = 0;
7809 SET_H_INSN_PREFIXED_P (opval);
7810 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7811 }
7812 }
7813 }
7814 }
7815
7816 abuf->written = written;
7817 #undef FLD
7818 }
7819 NEXT (vpc);
7820
7821 CASE (sem, INSN_SUBS_M_W_M) : /* subs-m.w [${Rs}${inc}],$Rd */
7822 {
7823 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7824 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7825 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
7826 int UNUSED written = 0;
7827 IADDR UNUSED pc = abuf->addr;
7828 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7829
7830 {
7831 SI tmp_tmpopd;
7832 SI tmp_tmpops;
7833 BI tmp_carry;
7834 SI tmp_newval;
7835 tmp_tmpops = EXTHISI (({ SI tmp_addr;
7836 HI tmp_tmp_mem;
7837 BI tmp_postinc;
7838 tmp_postinc = FLD (f_memmode);
7839 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
7840 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
7841 ; if (NEBI (tmp_postinc, 0)) {
7842 {
7843 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
7844 tmp_addr = ADDSI (tmp_addr, 2);
7845 }
7846 {
7847 SI opval = tmp_addr;
7848 SET_H_GR (FLD (f_operand1), opval);
7849 written |= (1 << 11);
7850 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7851 }
7852 }
7853 }
7854 ; tmp_tmp_mem; }));
7855 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7856 tmp_carry = CPU (h_cbit);
7857 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7858 {
7859 SI opval = tmp_newval;
7860 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
7861 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7862 }
7863 {
7864 {
7865 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))));
7866 CPU (h_cbit) = opval;
7867 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7868 }
7869 {
7870 BI opval = LTSI (tmp_newval, 0);
7871 CPU (h_nbit) = opval;
7872 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7873 }
7874 {
7875 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7876 CPU (h_zbit) = opval;
7877 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7878 }
7879 {
7880 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)));
7881 CPU (h_vbit) = opval;
7882 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7883 }
7884 {
7885 {
7886 BI opval = 0;
7887 CPU (h_xbit) = opval;
7888 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7889 }
7890 {
7891 BI opval = 0;
7892 SET_H_INSN_PREFIXED_P (opval);
7893 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7894 }
7895 }
7896 }
7897 }
7898
7899 abuf->written = written;
7900 #undef FLD
7901 }
7902 NEXT (vpc);
7903
7904 CASE (sem, INSN_SUBSCBR) : /* [${Rs}${inc}],$Rd */
7905 {
7906 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7907 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7908 #define FLD(f) abuf->fields.sfmt_addcbr.f
7909 int UNUSED written = 0;
7910 IADDR UNUSED pc = abuf->addr;
7911 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7912
7913 {
7914 SI tmp_tmpopd;
7915 SI tmp_tmpops;
7916 BI tmp_carry;
7917 SI tmp_newval;
7918 tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
7919 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7920 tmp_carry = CPU (h_cbit);
7921 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7922 {
7923 SI opval = tmp_newval;
7924 SET_H_GR (FLD (f_operand2), opval);
7925 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7926 }
7927 {
7928 {
7929 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))));
7930 CPU (h_cbit) = opval;
7931 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7932 }
7933 {
7934 BI opval = LTSI (tmp_newval, 0);
7935 CPU (h_nbit) = opval;
7936 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7937 }
7938 {
7939 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7940 CPU (h_zbit) = opval;
7941 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7942 }
7943 {
7944 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)));
7945 CPU (h_vbit) = opval;
7946 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7947 }
7948 {
7949 {
7950 BI opval = 0;
7951 CPU (h_xbit) = opval;
7952 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7953 }
7954 {
7955 BI opval = 0;
7956 SET_H_INSN_PREFIXED_P (opval);
7957 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7958 }
7959 }
7960 }
7961 }
7962
7963 #undef FLD
7964 }
7965 NEXT (vpc);
7966
7967 CASE (sem, INSN_SUBSCWR) : /* [${Rs}${inc}],$Rd */
7968 {
7969 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7970 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7971 #define FLD(f) abuf->fields.sfmt_addcwr.f
7972 int UNUSED written = 0;
7973 IADDR UNUSED pc = abuf->addr;
7974 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7975
7976 {
7977 SI tmp_tmpopd;
7978 SI tmp_tmpops;
7979 BI tmp_carry;
7980 SI tmp_newval;
7981 tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
7982 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7983 tmp_carry = CPU (h_cbit);
7984 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7985 {
7986 SI opval = tmp_newval;
7987 SET_H_GR (FLD (f_operand2), opval);
7988 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7989 }
7990 {
7991 {
7992 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))));
7993 CPU (h_cbit) = opval;
7994 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7995 }
7996 {
7997 BI opval = LTSI (tmp_newval, 0);
7998 CPU (h_nbit) = opval;
7999 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8000 }
8001 {
8002 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8003 CPU (h_zbit) = opval;
8004 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8005 }
8006 {
8007 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)));
8008 CPU (h_vbit) = opval;
8009 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8010 }
8011 {
8012 {
8013 BI opval = 0;
8014 CPU (h_xbit) = opval;
8015 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8016 }
8017 {
8018 BI opval = 0;
8019 SET_H_INSN_PREFIXED_P (opval);
8020 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8021 }
8022 }
8023 }
8024 }
8025
8026 #undef FLD
8027 }
8028 NEXT (vpc);
8029
8030 CASE (sem, INSN_SUBU_B_R) : /* subu.b $Rs,$Rd */
8031 {
8032 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8033 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8034 #define FLD(f) abuf->fields.sfmt_add_b_r.f
8035 int UNUSED written = 0;
8036 IADDR UNUSED pc = abuf->addr;
8037 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8038
8039 {
8040 SI tmp_tmpopd;
8041 SI tmp_tmpops;
8042 BI tmp_carry;
8043 SI tmp_newval;
8044 tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
8045 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8046 tmp_carry = CPU (h_cbit);
8047 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8048 {
8049 SI opval = tmp_newval;
8050 SET_H_GR (FLD (f_operand2), opval);
8051 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8052 }
8053 {
8054 {
8055 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))));
8056 CPU (h_cbit) = opval;
8057 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8058 }
8059 {
8060 BI opval = LTSI (tmp_newval, 0);
8061 CPU (h_nbit) = opval;
8062 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8063 }
8064 {
8065 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8066 CPU (h_zbit) = opval;
8067 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8068 }
8069 {
8070 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)));
8071 CPU (h_vbit) = opval;
8072 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8073 }
8074 {
8075 {
8076 BI opval = 0;
8077 CPU (h_xbit) = opval;
8078 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8079 }
8080 {
8081 BI opval = 0;
8082 SET_H_INSN_PREFIXED_P (opval);
8083 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8084 }
8085 }
8086 }
8087 }
8088
8089 #undef FLD
8090 }
8091 NEXT (vpc);
8092
8093 CASE (sem, INSN_SUBU_W_R) : /* subu.w $Rs,$Rd */
8094 {
8095 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8096 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8097 #define FLD(f) abuf->fields.sfmt_add_b_r.f
8098 int UNUSED written = 0;
8099 IADDR UNUSED pc = abuf->addr;
8100 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8101
8102 {
8103 SI tmp_tmpopd;
8104 SI tmp_tmpops;
8105 BI tmp_carry;
8106 SI tmp_newval;
8107 tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
8108 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8109 tmp_carry = CPU (h_cbit);
8110 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8111 {
8112 SI opval = tmp_newval;
8113 SET_H_GR (FLD (f_operand2), opval);
8114 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8115 }
8116 {
8117 {
8118 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))));
8119 CPU (h_cbit) = opval;
8120 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8121 }
8122 {
8123 BI opval = LTSI (tmp_newval, 0);
8124 CPU (h_nbit) = opval;
8125 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8126 }
8127 {
8128 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8129 CPU (h_zbit) = opval;
8130 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8131 }
8132 {
8133 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)));
8134 CPU (h_vbit) = opval;
8135 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8136 }
8137 {
8138 {
8139 BI opval = 0;
8140 CPU (h_xbit) = opval;
8141 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8142 }
8143 {
8144 BI opval = 0;
8145 SET_H_INSN_PREFIXED_P (opval);
8146 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8147 }
8148 }
8149 }
8150 }
8151
8152 #undef FLD
8153 }
8154 NEXT (vpc);
8155
8156 CASE (sem, INSN_SUBU_M_B_M) : /* subu-m.b [${Rs}${inc}],$Rd */
8157 {
8158 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8159 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8160 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
8161 int UNUSED written = 0;
8162 IADDR UNUSED pc = abuf->addr;
8163 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8164
8165 {
8166 SI tmp_tmpopd;
8167 SI tmp_tmpops;
8168 BI tmp_carry;
8169 SI tmp_newval;
8170 tmp_tmpops = ZEXTQISI (({ SI tmp_addr;
8171 QI tmp_tmp_mem;
8172 BI tmp_postinc;
8173 tmp_postinc = FLD (f_memmode);
8174 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
8175 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
8176 ; if (NEBI (tmp_postinc, 0)) {
8177 {
8178 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
8179 tmp_addr = ADDSI (tmp_addr, 1);
8180 }
8181 {
8182 SI opval = tmp_addr;
8183 SET_H_GR (FLD (f_operand1), opval);
8184 written |= (1 << 11);
8185 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8186 }
8187 }
8188 }
8189 ; tmp_tmp_mem; }));
8190 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8191 tmp_carry = CPU (h_cbit);
8192 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8193 {
8194 SI opval = tmp_newval;
8195 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
8196 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8197 }
8198 {
8199 {
8200 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))));
8201 CPU (h_cbit) = opval;
8202 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8203 }
8204 {
8205 BI opval = LTSI (tmp_newval, 0);
8206 CPU (h_nbit) = opval;
8207 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8208 }
8209 {
8210 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8211 CPU (h_zbit) = opval;
8212 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8213 }
8214 {
8215 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)));
8216 CPU (h_vbit) = opval;
8217 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8218 }
8219 {
8220 {
8221 BI opval = 0;
8222 CPU (h_xbit) = opval;
8223 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8224 }
8225 {
8226 BI opval = 0;
8227 SET_H_INSN_PREFIXED_P (opval);
8228 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8229 }
8230 }
8231 }
8232 }
8233
8234 abuf->written = written;
8235 #undef FLD
8236 }
8237 NEXT (vpc);
8238
8239 CASE (sem, INSN_SUBU_M_W_M) : /* subu-m.w [${Rs}${inc}],$Rd */
8240 {
8241 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8242 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8243 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
8244 int UNUSED written = 0;
8245 IADDR UNUSED pc = abuf->addr;
8246 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8247
8248 {
8249 SI tmp_tmpopd;
8250 SI tmp_tmpops;
8251 BI tmp_carry;
8252 SI tmp_newval;
8253 tmp_tmpops = ZEXTHISI (({ SI tmp_addr;
8254 HI tmp_tmp_mem;
8255 BI tmp_postinc;
8256 tmp_postinc = FLD (f_memmode);
8257 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
8258 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
8259 ; if (NEBI (tmp_postinc, 0)) {
8260 {
8261 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
8262 tmp_addr = ADDSI (tmp_addr, 2);
8263 }
8264 {
8265 SI opval = tmp_addr;
8266 SET_H_GR (FLD (f_operand1), opval);
8267 written |= (1 << 11);
8268 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8269 }
8270 }
8271 }
8272 ; tmp_tmp_mem; }));
8273 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8274 tmp_carry = CPU (h_cbit);
8275 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8276 {
8277 SI opval = tmp_newval;
8278 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
8279 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8280 }
8281 {
8282 {
8283 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))));
8284 CPU (h_cbit) = opval;
8285 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8286 }
8287 {
8288 BI opval = LTSI (tmp_newval, 0);
8289 CPU (h_nbit) = opval;
8290 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8291 }
8292 {
8293 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8294 CPU (h_zbit) = opval;
8295 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8296 }
8297 {
8298 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)));
8299 CPU (h_vbit) = opval;
8300 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8301 }
8302 {
8303 {
8304 BI opval = 0;
8305 CPU (h_xbit) = opval;
8306 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8307 }
8308 {
8309 BI opval = 0;
8310 SET_H_INSN_PREFIXED_P (opval);
8311 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8312 }
8313 }
8314 }
8315 }
8316
8317 abuf->written = written;
8318 #undef FLD
8319 }
8320 NEXT (vpc);
8321
8322 CASE (sem, INSN_SUBUCBR) : /* [${Rs}${inc}],$Rd */
8323 {
8324 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8325 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8326 #define FLD(f) abuf->fields.sfmt_addcbr.f
8327 int UNUSED written = 0;
8328 IADDR UNUSED pc = abuf->addr;
8329 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8330
8331 {
8332 SI tmp_tmpopd;
8333 SI tmp_tmpops;
8334 BI tmp_carry;
8335 SI tmp_newval;
8336 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
8337 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8338 tmp_carry = CPU (h_cbit);
8339 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8340 {
8341 SI opval = tmp_newval;
8342 SET_H_GR (FLD (f_operand2), opval);
8343 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8344 }
8345 {
8346 {
8347 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))));
8348 CPU (h_cbit) = opval;
8349 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8350 }
8351 {
8352 BI opval = LTSI (tmp_newval, 0);
8353 CPU (h_nbit) = opval;
8354 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8355 }
8356 {
8357 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8358 CPU (h_zbit) = opval;
8359 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8360 }
8361 {
8362 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)));
8363 CPU (h_vbit) = opval;
8364 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8365 }
8366 {
8367 {
8368 BI opval = 0;
8369 CPU (h_xbit) = opval;
8370 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8371 }
8372 {
8373 BI opval = 0;
8374 SET_H_INSN_PREFIXED_P (opval);
8375 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8376 }
8377 }
8378 }
8379 }
8380
8381 #undef FLD
8382 }
8383 NEXT (vpc);
8384
8385 CASE (sem, INSN_SUBUCWR) : /* [${Rs}${inc}],$Rd */
8386 {
8387 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8389 #define FLD(f) abuf->fields.sfmt_addcwr.f
8390 int UNUSED written = 0;
8391 IADDR UNUSED pc = abuf->addr;
8392 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8393
8394 {
8395 SI tmp_tmpopd;
8396 SI tmp_tmpops;
8397 BI tmp_carry;
8398 SI tmp_newval;
8399 tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
8400 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8401 tmp_carry = CPU (h_cbit);
8402 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8403 {
8404 SI opval = tmp_newval;
8405 SET_H_GR (FLD (f_operand2), opval);
8406 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8407 }
8408 {
8409 {
8410 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))));
8411 CPU (h_cbit) = opval;
8412 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8413 }
8414 {
8415 BI opval = LTSI (tmp_newval, 0);
8416 CPU (h_nbit) = opval;
8417 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8418 }
8419 {
8420 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8421 CPU (h_zbit) = opval;
8422 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8423 }
8424 {
8425 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)));
8426 CPU (h_vbit) = opval;
8427 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8428 }
8429 {
8430 {
8431 BI opval = 0;
8432 CPU (h_xbit) = opval;
8433 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8434 }
8435 {
8436 BI opval = 0;
8437 SET_H_INSN_PREFIXED_P (opval);
8438 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8439 }
8440 }
8441 }
8442 }
8443
8444 #undef FLD
8445 }
8446 NEXT (vpc);
8447
8448 CASE (sem, INSN_ADDI_B_R) : /* addi.b ${Rs-dfield}.m,${Rd-sfield} */
8449 {
8450 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8451 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8452 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
8453 int UNUSED written = 0;
8454 IADDR UNUSED pc = abuf->addr;
8455 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8456
8457 {
8458 {
8459 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 1));
8460 SET_H_GR (FLD (f_operand1), opval);
8461 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8462 }
8463 {
8464 {
8465 BI opval = 0;
8466 CPU (h_xbit) = opval;
8467 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8468 }
8469 {
8470 BI opval = 0;
8471 SET_H_INSN_PREFIXED_P (opval);
8472 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8473 }
8474 }
8475 }
8476
8477 #undef FLD
8478 }
8479 NEXT (vpc);
8480
8481 CASE (sem, INSN_ADDI_W_R) : /* addi.w ${Rs-dfield}.m,${Rd-sfield} */
8482 {
8483 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8484 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8485 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
8486 int UNUSED written = 0;
8487 IADDR UNUSED pc = abuf->addr;
8488 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8489
8490 {
8491 {
8492 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 2));
8493 SET_H_GR (FLD (f_operand1), opval);
8494 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8495 }
8496 {
8497 {
8498 BI opval = 0;
8499 CPU (h_xbit) = opval;
8500 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8501 }
8502 {
8503 BI opval = 0;
8504 SET_H_INSN_PREFIXED_P (opval);
8505 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8506 }
8507 }
8508 }
8509
8510 #undef FLD
8511 }
8512 NEXT (vpc);
8513
8514 CASE (sem, INSN_ADDI_D_R) : /* addi.d ${Rs-dfield}.m,${Rd-sfield} */
8515 {
8516 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8517 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8518 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
8519 int UNUSED written = 0;
8520 IADDR UNUSED pc = abuf->addr;
8521 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8522
8523 {
8524 {
8525 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 4));
8526 SET_H_GR (FLD (f_operand1), opval);
8527 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8528 }
8529 {
8530 {
8531 BI opval = 0;
8532 CPU (h_xbit) = opval;
8533 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8534 }
8535 {
8536 BI opval = 0;
8537 SET_H_INSN_PREFIXED_P (opval);
8538 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8539 }
8540 }
8541 }
8542
8543 #undef FLD
8544 }
8545 NEXT (vpc);
8546
8547 CASE (sem, INSN_NEG_B_R) : /* neg.b $Rs,$Rd */
8548 {
8549 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8550 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8551 #define FLD(f) abuf->fields.sfmt_add_b_r.f
8552 int UNUSED written = 0;
8553 IADDR UNUSED pc = abuf->addr;
8554 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8555
8556 {
8557 QI tmp_tmpopd;
8558 QI tmp_tmpops;
8559 BI tmp_carry;
8560 QI tmp_newval;
8561 tmp_tmpops = GET_H_GR (FLD (f_operand1));
8562 tmp_tmpopd = 0;
8563 tmp_carry = CPU (h_cbit);
8564 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8565 {
8566 SI tmp_oldregval;
8567 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
8568 {
8569 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
8570 SET_H_GR (FLD (f_operand2), opval);
8571 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8572 }
8573 }
8574 {
8575 {
8576 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))));
8577 CPU (h_cbit) = opval;
8578 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8579 }
8580 {
8581 BI opval = LTQI (tmp_newval, 0);
8582 CPU (h_nbit) = opval;
8583 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8584 }
8585 {
8586 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8587 CPU (h_zbit) = opval;
8588 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8589 }
8590 {
8591 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)));
8592 CPU (h_vbit) = opval;
8593 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8594 }
8595 {
8596 {
8597 BI opval = 0;
8598 CPU (h_xbit) = opval;
8599 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8600 }
8601 {
8602 BI opval = 0;
8603 SET_H_INSN_PREFIXED_P (opval);
8604 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8605 }
8606 }
8607 }
8608 }
8609
8610 #undef FLD
8611 }
8612 NEXT (vpc);
8613
8614 CASE (sem, INSN_NEG_W_R) : /* neg.w $Rs,$Rd */
8615 {
8616 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8618 #define FLD(f) abuf->fields.sfmt_add_b_r.f
8619 int UNUSED written = 0;
8620 IADDR UNUSED pc = abuf->addr;
8621 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8622
8623 {
8624 HI tmp_tmpopd;
8625 HI tmp_tmpops;
8626 BI tmp_carry;
8627 HI tmp_newval;
8628 tmp_tmpops = GET_H_GR (FLD (f_operand1));
8629 tmp_tmpopd = 0;
8630 tmp_carry = CPU (h_cbit);
8631 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8632 {
8633 SI tmp_oldregval;
8634 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
8635 {
8636 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
8637 SET_H_GR (FLD (f_operand2), opval);
8638 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8639 }
8640 }
8641 {
8642 {
8643 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))));
8644 CPU (h_cbit) = opval;
8645 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8646 }
8647 {
8648 BI opval = LTHI (tmp_newval, 0);
8649 CPU (h_nbit) = opval;
8650 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8651 }
8652 {
8653 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8654 CPU (h_zbit) = opval;
8655 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8656 }
8657 {
8658 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)));
8659 CPU (h_vbit) = opval;
8660 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8661 }
8662 {
8663 {
8664 BI opval = 0;
8665 CPU (h_xbit) = opval;
8666 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8667 }
8668 {
8669 BI opval = 0;
8670 SET_H_INSN_PREFIXED_P (opval);
8671 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8672 }
8673 }
8674 }
8675 }
8676
8677 #undef FLD
8678 }
8679 NEXT (vpc);
8680
8681 CASE (sem, INSN_NEG_D_R) : /* neg.d $Rs,$Rd */
8682 {
8683 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8684 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8685 #define FLD(f) abuf->fields.sfmt_add_b_r.f
8686 int UNUSED written = 0;
8687 IADDR UNUSED pc = abuf->addr;
8688 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8689
8690 {
8691 SI tmp_tmpopd;
8692 SI tmp_tmpops;
8693 BI tmp_carry;
8694 SI tmp_newval;
8695 tmp_tmpops = GET_H_GR (FLD (f_operand1));
8696 tmp_tmpopd = 0;
8697 tmp_carry = CPU (h_cbit);
8698 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8699 {
8700 SI opval = tmp_newval;
8701 SET_H_GR (FLD (f_operand2), opval);
8702 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8703 }
8704 {
8705 {
8706 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))));
8707 CPU (h_cbit) = opval;
8708 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8709 }
8710 {
8711 BI opval = LTSI (tmp_newval, 0);
8712 CPU (h_nbit) = opval;
8713 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8714 }
8715 {
8716 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8717 CPU (h_zbit) = opval;
8718 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8719 }
8720 {
8721 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)));
8722 CPU (h_vbit) = opval;
8723 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8724 }
8725 {
8726 {
8727 BI opval = 0;
8728 CPU (h_xbit) = opval;
8729 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8730 }
8731 {
8732 BI opval = 0;
8733 SET_H_INSN_PREFIXED_P (opval);
8734 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8735 }
8736 }
8737 }
8738 }
8739
8740 #undef FLD
8741 }
8742 NEXT (vpc);
8743
8744 CASE (sem, INSN_TEST_M_B_M) : /* test-m.b [${Rs}${inc}] */
8745 {
8746 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8747 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8748 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
8749 int UNUSED written = 0;
8750 IADDR UNUSED pc = abuf->addr;
8751 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8752
8753 {
8754 QI tmp_tmpd;
8755 tmp_tmpd = ({ SI tmp_addr;
8756 QI tmp_tmp_mem;
8757 BI tmp_postinc;
8758 tmp_postinc = FLD (f_memmode);
8759 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
8760 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
8761 ; if (NEBI (tmp_postinc, 0)) {
8762 {
8763 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
8764 tmp_addr = ADDSI (tmp_addr, 1);
8765 }
8766 {
8767 SI opval = tmp_addr;
8768 SET_H_GR (FLD (f_operand1), opval);
8769 written |= (1 << 8);
8770 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8771 }
8772 }
8773 }
8774 ; tmp_tmp_mem; });
8775 {
8776 QI tmp_tmpopd;
8777 QI tmp_tmpops;
8778 BI tmp_carry;
8779 QI tmp_newval;
8780 tmp_tmpops = 0;
8781 tmp_tmpopd = tmp_tmpd;
8782 tmp_carry = CPU (h_cbit);
8783 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8784 ((void) 0); /*nop*/
8785 {
8786 {
8787 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))));
8788 CPU (h_cbit) = opval;
8789 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8790 }
8791 {
8792 BI opval = LTQI (tmp_newval, 0);
8793 CPU (h_nbit) = opval;
8794 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8795 }
8796 {
8797 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8798 CPU (h_zbit) = opval;
8799 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8800 }
8801 {
8802 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)));
8803 CPU (h_vbit) = opval;
8804 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8805 }
8806 {
8807 {
8808 BI opval = 0;
8809 CPU (h_xbit) = opval;
8810 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8811 }
8812 {
8813 BI opval = 0;
8814 SET_H_INSN_PREFIXED_P (opval);
8815 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8816 }
8817 }
8818 }
8819 }
8820 }
8821
8822 abuf->written = written;
8823 #undef FLD
8824 }
8825 NEXT (vpc);
8826
8827 CASE (sem, INSN_TEST_M_W_M) : /* test-m.w [${Rs}${inc}] */
8828 {
8829 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8830 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8831 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
8832 int UNUSED written = 0;
8833 IADDR UNUSED pc = abuf->addr;
8834 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8835
8836 {
8837 HI tmp_tmpd;
8838 tmp_tmpd = ({ SI tmp_addr;
8839 HI tmp_tmp_mem;
8840 BI tmp_postinc;
8841 tmp_postinc = FLD (f_memmode);
8842 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
8843 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
8844 ; if (NEBI (tmp_postinc, 0)) {
8845 {
8846 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
8847 tmp_addr = ADDSI (tmp_addr, 2);
8848 }
8849 {
8850 SI opval = tmp_addr;
8851 SET_H_GR (FLD (f_operand1), opval);
8852 written |= (1 << 8);
8853 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8854 }
8855 }
8856 }
8857 ; tmp_tmp_mem; });
8858 {
8859 HI tmp_tmpopd;
8860 HI tmp_tmpops;
8861 BI tmp_carry;
8862 HI tmp_newval;
8863 tmp_tmpops = 0;
8864 tmp_tmpopd = tmp_tmpd;
8865 tmp_carry = CPU (h_cbit);
8866 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8867 ((void) 0); /*nop*/
8868 {
8869 {
8870 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))));
8871 CPU (h_cbit) = opval;
8872 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8873 }
8874 {
8875 BI opval = LTHI (tmp_newval, 0);
8876 CPU (h_nbit) = opval;
8877 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8878 }
8879 {
8880 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8881 CPU (h_zbit) = opval;
8882 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8883 }
8884 {
8885 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)));
8886 CPU (h_vbit) = opval;
8887 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8888 }
8889 {
8890 {
8891 BI opval = 0;
8892 CPU (h_xbit) = opval;
8893 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8894 }
8895 {
8896 BI opval = 0;
8897 SET_H_INSN_PREFIXED_P (opval);
8898 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8899 }
8900 }
8901 }
8902 }
8903 }
8904
8905 abuf->written = written;
8906 #undef FLD
8907 }
8908 NEXT (vpc);
8909
8910 CASE (sem, INSN_TEST_M_D_M) : /* test-m.d [${Rs}${inc}] */
8911 {
8912 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8913 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8914 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
8915 int UNUSED written = 0;
8916 IADDR UNUSED pc = abuf->addr;
8917 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8918
8919 {
8920 SI tmp_tmpd;
8921 tmp_tmpd = ({ SI tmp_addr;
8922 SI tmp_tmp_mem;
8923 BI tmp_postinc;
8924 tmp_postinc = FLD (f_memmode);
8925 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
8926 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
8927 ; if (NEBI (tmp_postinc, 0)) {
8928 {
8929 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
8930 tmp_addr = ADDSI (tmp_addr, 4);
8931 }
8932 {
8933 SI opval = tmp_addr;
8934 SET_H_GR (FLD (f_operand1), opval);
8935 written |= (1 << 8);
8936 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8937 }
8938 }
8939 }
8940 ; tmp_tmp_mem; });
8941 {
8942 SI tmp_tmpopd;
8943 SI tmp_tmpops;
8944 BI tmp_carry;
8945 SI tmp_newval;
8946 tmp_tmpops = 0;
8947 tmp_tmpopd = tmp_tmpd;
8948 tmp_carry = CPU (h_cbit);
8949 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8950 ((void) 0); /*nop*/
8951 {
8952 {
8953 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))));
8954 CPU (h_cbit) = opval;
8955 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8956 }
8957 {
8958 BI opval = LTSI (tmp_newval, 0);
8959 CPU (h_nbit) = opval;
8960 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8961 }
8962 {
8963 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8964 CPU (h_zbit) = opval;
8965 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8966 }
8967 {
8968 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)));
8969 CPU (h_vbit) = opval;
8970 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8971 }
8972 {
8973 {
8974 BI opval = 0;
8975 CPU (h_xbit) = opval;
8976 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8977 }
8978 {
8979 BI opval = 0;
8980 SET_H_INSN_PREFIXED_P (opval);
8981 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8982 }
8983 }
8984 }
8985 }
8986 }
8987
8988 abuf->written = written;
8989 #undef FLD
8990 }
8991 NEXT (vpc);
8992
8993 CASE (sem, INSN_MOVE_R_M_B_M) : /* move-r-m.b ${Rs-dfield},[${Rd-sfield}${inc}] */
8994 {
8995 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8996 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8997 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
8998 int UNUSED written = 0;
8999 IADDR UNUSED pc = abuf->addr;
9000 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9001
9002 {
9003 QI tmp_tmpd;
9004 tmp_tmpd = GET_H_GR (FLD (f_operand2));
9005 {
9006 SI tmp_addr;
9007 BI tmp_postinc;
9008 tmp_postinc = FLD (f_memmode);
9009 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
9010 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
9011 if (EQBI (CPU (h_pbit), 0)) {
9012 {
9013 {
9014 QI opval = tmp_tmpd;
9015 SETMEMQI (current_cpu, pc, tmp_addr, opval);
9016 written |= (1 << 10);
9017 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9018 }
9019 {
9020 BI opval = CPU (h_pbit);
9021 CPU (h_cbit) = opval;
9022 written |= (1 << 9);
9023 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9024 }
9025 }
9026 } else {
9027 {
9028 BI opval = 1;
9029 CPU (h_cbit) = opval;
9030 written |= (1 << 9);
9031 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9032 }
9033 }
9034 } else {
9035 {
9036 QI opval = tmp_tmpd;
9037 SETMEMQI (current_cpu, pc, tmp_addr, opval);
9038 written |= (1 << 10);
9039 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9040 }
9041 }
9042 if (NEBI (tmp_postinc, 0)) {
9043 {
9044 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
9045 tmp_addr = ADDSI (tmp_addr, 1);
9046 }
9047 {
9048 SI opval = tmp_addr;
9049 SET_H_GR (FLD (f_operand1), opval);
9050 written |= (1 << 8);
9051 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9052 }
9053 }
9054 }
9055 }
9056 {
9057 {
9058 BI opval = 0;
9059 CPU (h_xbit) = opval;
9060 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9061 }
9062 {
9063 BI opval = 0;
9064 SET_H_INSN_PREFIXED_P (opval);
9065 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9066 }
9067 }
9068 }
9069
9070 abuf->written = written;
9071 #undef FLD
9072 }
9073 NEXT (vpc);
9074
9075 CASE (sem, INSN_MOVE_R_M_W_M) : /* move-r-m.w ${Rs-dfield},[${Rd-sfield}${inc}] */
9076 {
9077 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9078 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9079 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
9080 int UNUSED written = 0;
9081 IADDR UNUSED pc = abuf->addr;
9082 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9083
9084 {
9085 HI tmp_tmpd;
9086 tmp_tmpd = GET_H_GR (FLD (f_operand2));
9087 {
9088 SI tmp_addr;
9089 BI tmp_postinc;
9090 tmp_postinc = FLD (f_memmode);
9091 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
9092 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
9093 if (EQBI (CPU (h_pbit), 0)) {
9094 {
9095 {
9096 HI opval = tmp_tmpd;
9097 SETMEMHI (current_cpu, pc, tmp_addr, opval);
9098 written |= (1 << 10);
9099 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9100 }
9101 {
9102 BI opval = CPU (h_pbit);
9103 CPU (h_cbit) = opval;
9104 written |= (1 << 9);
9105 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9106 }
9107 }
9108 } else {
9109 {
9110 BI opval = 1;
9111 CPU (h_cbit) = opval;
9112 written |= (1 << 9);
9113 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9114 }
9115 }
9116 } else {
9117 {
9118 HI opval = tmp_tmpd;
9119 SETMEMHI (current_cpu, pc, tmp_addr, opval);
9120 written |= (1 << 10);
9121 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9122 }
9123 }
9124 if (NEBI (tmp_postinc, 0)) {
9125 {
9126 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
9127 tmp_addr = ADDSI (tmp_addr, 2);
9128 }
9129 {
9130 SI opval = tmp_addr;
9131 SET_H_GR (FLD (f_operand1), opval);
9132 written |= (1 << 8);
9133 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9134 }
9135 }
9136 }
9137 }
9138 {
9139 {
9140 BI opval = 0;
9141 CPU (h_xbit) = opval;
9142 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9143 }
9144 {
9145 BI opval = 0;
9146 SET_H_INSN_PREFIXED_P (opval);
9147 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9148 }
9149 }
9150 }
9151
9152 abuf->written = written;
9153 #undef FLD
9154 }
9155 NEXT (vpc);
9156
9157 CASE (sem, INSN_MOVE_R_M_D_M) : /* move-r-m.d ${Rs-dfield},[${Rd-sfield}${inc}] */
9158 {
9159 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9160 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9161 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
9162 int UNUSED written = 0;
9163 IADDR UNUSED pc = abuf->addr;
9164 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9165
9166 {
9167 SI tmp_tmpd;
9168 tmp_tmpd = GET_H_GR (FLD (f_operand2));
9169 {
9170 SI tmp_addr;
9171 BI tmp_postinc;
9172 tmp_postinc = FLD (f_memmode);
9173 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
9174 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
9175 if (EQBI (CPU (h_pbit), 0)) {
9176 {
9177 {
9178 SI opval = tmp_tmpd;
9179 SETMEMSI (current_cpu, pc, tmp_addr, opval);
9180 written |= (1 << 10);
9181 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9182 }
9183 {
9184 BI opval = CPU (h_pbit);
9185 CPU (h_cbit) = opval;
9186 written |= (1 << 9);
9187 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9188 }
9189 }
9190 } else {
9191 {
9192 BI opval = 1;
9193 CPU (h_cbit) = opval;
9194 written |= (1 << 9);
9195 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9196 }
9197 }
9198 } else {
9199 {
9200 SI opval = tmp_tmpd;
9201 SETMEMSI (current_cpu, pc, tmp_addr, opval);
9202 written |= (1 << 10);
9203 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9204 }
9205 }
9206 if (NEBI (tmp_postinc, 0)) {
9207 {
9208 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
9209 tmp_addr = ADDSI (tmp_addr, 4);
9210 }
9211 {
9212 SI opval = tmp_addr;
9213 SET_H_GR (FLD (f_operand1), opval);
9214 written |= (1 << 8);
9215 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9216 }
9217 }
9218 }
9219 }
9220 {
9221 {
9222 BI opval = 0;
9223 CPU (h_xbit) = opval;
9224 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9225 }
9226 {
9227 BI opval = 0;
9228 SET_H_INSN_PREFIXED_P (opval);
9229 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9230 }
9231 }
9232 }
9233
9234 abuf->written = written;
9235 #undef FLD
9236 }
9237 NEXT (vpc);
9238
9239 CASE (sem, INSN_MULS_B) : /* muls.b $Rs,$Rd */
9240 {
9241 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9242 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9243 #define FLD(f) abuf->fields.sfmt_muls_b.f
9244 int UNUSED written = 0;
9245 IADDR UNUSED pc = abuf->addr;
9246 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9247
9248 {
9249 DI tmp_src1;
9250 DI tmp_src2;
9251 DI tmp_tmpr;
9252 tmp_src1 = EXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
9253 tmp_src2 = EXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand2))));
9254 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9255 {
9256 SI opval = TRUNCDISI (tmp_tmpr);
9257 SET_H_GR (FLD (f_operand2), opval);
9258 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9259 }
9260 {
9261 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9262 SET_H_SR (((UINT) 7), opval);
9263 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9264 }
9265 {
9266 {
9267 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9268 CPU (h_cbit) = opval;
9269 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9270 }
9271 {
9272 BI opval = LTDI (tmp_tmpr, 0);
9273 CPU (h_nbit) = opval;
9274 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9275 }
9276 {
9277 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9278 CPU (h_zbit) = opval;
9279 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9280 }
9281 {
9282 BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
9283 CPU (h_vbit) = opval;
9284 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9285 }
9286 {
9287 {
9288 BI opval = 0;
9289 CPU (h_xbit) = opval;
9290 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9291 }
9292 {
9293 BI opval = 0;
9294 SET_H_INSN_PREFIXED_P (opval);
9295 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9296 }
9297 }
9298 }
9299 }
9300
9301 #undef FLD
9302 }
9303 NEXT (vpc);
9304
9305 CASE (sem, INSN_MULS_W) : /* muls.w $Rs,$Rd */
9306 {
9307 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9308 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9309 #define FLD(f) abuf->fields.sfmt_muls_b.f
9310 int UNUSED written = 0;
9311 IADDR UNUSED pc = abuf->addr;
9312 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9313
9314 {
9315 DI tmp_src1;
9316 DI tmp_src2;
9317 DI tmp_tmpr;
9318 tmp_src1 = EXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
9319 tmp_src2 = EXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand2))));
9320 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9321 {
9322 SI opval = TRUNCDISI (tmp_tmpr);
9323 SET_H_GR (FLD (f_operand2), opval);
9324 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9325 }
9326 {
9327 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9328 SET_H_SR (((UINT) 7), opval);
9329 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9330 }
9331 {
9332 {
9333 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9334 CPU (h_cbit) = opval;
9335 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9336 }
9337 {
9338 BI opval = LTDI (tmp_tmpr, 0);
9339 CPU (h_nbit) = opval;
9340 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9341 }
9342 {
9343 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9344 CPU (h_zbit) = opval;
9345 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9346 }
9347 {
9348 BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
9349 CPU (h_vbit) = opval;
9350 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9351 }
9352 {
9353 {
9354 BI opval = 0;
9355 CPU (h_xbit) = opval;
9356 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9357 }
9358 {
9359 BI opval = 0;
9360 SET_H_INSN_PREFIXED_P (opval);
9361 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9362 }
9363 }
9364 }
9365 }
9366
9367 #undef FLD
9368 }
9369 NEXT (vpc);
9370
9371 CASE (sem, INSN_MULS_D) : /* muls.d $Rs,$Rd */
9372 {
9373 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9374 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9375 #define FLD(f) abuf->fields.sfmt_muls_b.f
9376 int UNUSED written = 0;
9377 IADDR UNUSED pc = abuf->addr;
9378 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9379
9380 {
9381 DI tmp_src1;
9382 DI tmp_src2;
9383 DI tmp_tmpr;
9384 tmp_src1 = EXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand1))));
9385 tmp_src2 = EXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand2))));
9386 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9387 {
9388 SI opval = TRUNCDISI (tmp_tmpr);
9389 SET_H_GR (FLD (f_operand2), opval);
9390 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9391 }
9392 {
9393 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9394 SET_H_SR (((UINT) 7), opval);
9395 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9396 }
9397 {
9398 {
9399 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9400 CPU (h_cbit) = opval;
9401 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9402 }
9403 {
9404 BI opval = LTDI (tmp_tmpr, 0);
9405 CPU (h_nbit) = opval;
9406 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9407 }
9408 {
9409 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9410 CPU (h_zbit) = opval;
9411 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9412 }
9413 {
9414 BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
9415 CPU (h_vbit) = opval;
9416 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9417 }
9418 {
9419 {
9420 BI opval = 0;
9421 CPU (h_xbit) = opval;
9422 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9423 }
9424 {
9425 BI opval = 0;
9426 SET_H_INSN_PREFIXED_P (opval);
9427 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9428 }
9429 }
9430 }
9431 }
9432
9433 #undef FLD
9434 }
9435 NEXT (vpc);
9436
9437 CASE (sem, INSN_MULU_B) : /* mulu.b $Rs,$Rd */
9438 {
9439 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9440 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9441 #define FLD(f) abuf->fields.sfmt_muls_b.f
9442 int UNUSED written = 0;
9443 IADDR UNUSED pc = abuf->addr;
9444 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9445
9446 {
9447 DI tmp_src1;
9448 DI tmp_src2;
9449 DI tmp_tmpr;
9450 tmp_src1 = ZEXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
9451 tmp_src2 = ZEXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand2))));
9452 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9453 {
9454 SI opval = TRUNCDISI (tmp_tmpr);
9455 SET_H_GR (FLD (f_operand2), opval);
9456 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9457 }
9458 {
9459 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9460 SET_H_SR (((UINT) 7), opval);
9461 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9462 }
9463 {
9464 {
9465 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9466 CPU (h_cbit) = opval;
9467 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9468 }
9469 {
9470 BI opval = LTDI (tmp_tmpr, 0);
9471 CPU (h_nbit) = opval;
9472 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9473 }
9474 {
9475 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9476 CPU (h_zbit) = opval;
9477 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9478 }
9479 {
9480 BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
9481 CPU (h_vbit) = opval;
9482 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9483 }
9484 {
9485 {
9486 BI opval = 0;
9487 CPU (h_xbit) = opval;
9488 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9489 }
9490 {
9491 BI opval = 0;
9492 SET_H_INSN_PREFIXED_P (opval);
9493 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9494 }
9495 }
9496 }
9497 }
9498
9499 #undef FLD
9500 }
9501 NEXT (vpc);
9502
9503 CASE (sem, INSN_MULU_W) : /* mulu.w $Rs,$Rd */
9504 {
9505 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9506 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9507 #define FLD(f) abuf->fields.sfmt_muls_b.f
9508 int UNUSED written = 0;
9509 IADDR UNUSED pc = abuf->addr;
9510 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9511
9512 {
9513 DI tmp_src1;
9514 DI tmp_src2;
9515 DI tmp_tmpr;
9516 tmp_src1 = ZEXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
9517 tmp_src2 = ZEXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand2))));
9518 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9519 {
9520 SI opval = TRUNCDISI (tmp_tmpr);
9521 SET_H_GR (FLD (f_operand2), opval);
9522 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9523 }
9524 {
9525 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9526 SET_H_SR (((UINT) 7), opval);
9527 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9528 }
9529 {
9530 {
9531 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9532 CPU (h_cbit) = opval;
9533 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9534 }
9535 {
9536 BI opval = LTDI (tmp_tmpr, 0);
9537 CPU (h_nbit) = opval;
9538 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9539 }
9540 {
9541 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9542 CPU (h_zbit) = opval;
9543 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9544 }
9545 {
9546 BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
9547 CPU (h_vbit) = opval;
9548 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9549 }
9550 {
9551 {
9552 BI opval = 0;
9553 CPU (h_xbit) = opval;
9554 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9555 }
9556 {
9557 BI opval = 0;
9558 SET_H_INSN_PREFIXED_P (opval);
9559 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9560 }
9561 }
9562 }
9563 }
9564
9565 #undef FLD
9566 }
9567 NEXT (vpc);
9568
9569 CASE (sem, INSN_MULU_D) : /* mulu.d $Rs,$Rd */
9570 {
9571 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9572 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9573 #define FLD(f) abuf->fields.sfmt_muls_b.f
9574 int UNUSED written = 0;
9575 IADDR UNUSED pc = abuf->addr;
9576 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9577
9578 {
9579 DI tmp_src1;
9580 DI tmp_src2;
9581 DI tmp_tmpr;
9582 tmp_src1 = ZEXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand1))));
9583 tmp_src2 = ZEXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand2))));
9584 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9585 {
9586 SI opval = TRUNCDISI (tmp_tmpr);
9587 SET_H_GR (FLD (f_operand2), opval);
9588 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9589 }
9590 {
9591 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9592 SET_H_SR (((UINT) 7), opval);
9593 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9594 }
9595 {
9596 {
9597 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9598 CPU (h_cbit) = opval;
9599 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9600 }
9601 {
9602 BI opval = LTDI (tmp_tmpr, 0);
9603 CPU (h_nbit) = opval;
9604 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9605 }
9606 {
9607 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9608 CPU (h_zbit) = opval;
9609 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9610 }
9611 {
9612 BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
9613 CPU (h_vbit) = opval;
9614 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9615 }
9616 {
9617 {
9618 BI opval = 0;
9619 CPU (h_xbit) = opval;
9620 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9621 }
9622 {
9623 BI opval = 0;
9624 SET_H_INSN_PREFIXED_P (opval);
9625 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9626 }
9627 }
9628 }
9629 }
9630
9631 #undef FLD
9632 }
9633 NEXT (vpc);
9634
9635 CASE (sem, INSN_MSTEP) : /* mstep $Rs,$Rd */
9636 {
9637 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9638 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9639 #define FLD(f) abuf->fields.sfmt_muls_b.f
9640 int UNUSED written = 0;
9641 IADDR UNUSED pc = abuf->addr;
9642 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9643
9644 {
9645 SI tmp_tmpd;
9646 SI tmp_tmps;
9647 tmp_tmps = GET_H_GR (FLD (f_operand1));
9648 tmp_tmpd = ADDSI (SLLSI (GET_H_GR (FLD (f_operand2)), 1), ((CPU (h_nbit)) ? (tmp_tmps) : (0)));
9649 {
9650 SI opval = tmp_tmpd;
9651 SET_H_GR (FLD (f_operand2), opval);
9652 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9653 }
9654 {
9655 {
9656 BI opval = LTSI (tmp_tmpd, 0);
9657 CPU (h_nbit) = opval;
9658 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9659 }
9660 {
9661 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9662 CPU (h_zbit) = opval;
9663 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9664 }
9665 SET_H_CBIT_MOVE (0);
9666 SET_H_VBIT_MOVE (0);
9667 {
9668 {
9669 BI opval = 0;
9670 CPU (h_xbit) = opval;
9671 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9672 }
9673 {
9674 BI opval = 0;
9675 SET_H_INSN_PREFIXED_P (opval);
9676 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9677 }
9678 }
9679 }
9680 }
9681
9682 #undef FLD
9683 }
9684 NEXT (vpc);
9685
9686 CASE (sem, INSN_DSTEP) : /* dstep $Rs,$Rd */
9687 {
9688 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9689 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9690 #define FLD(f) abuf->fields.sfmt_muls_b.f
9691 int UNUSED written = 0;
9692 IADDR UNUSED pc = abuf->addr;
9693 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9694
9695 {
9696 SI tmp_tmp;
9697 SI tmp_tmps;
9698 SI tmp_tmpd;
9699 tmp_tmps = GET_H_GR (FLD (f_operand1));
9700 tmp_tmp = SLLSI (GET_H_GR (FLD (f_operand2)), 1);
9701 tmp_tmpd = ((GEUSI (tmp_tmp, tmp_tmps)) ? (SUBSI (tmp_tmp, tmp_tmps)) : (tmp_tmp));
9702 {
9703 SI opval = tmp_tmpd;
9704 SET_H_GR (FLD (f_operand2), opval);
9705 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9706 }
9707 {
9708 {
9709 BI opval = LTSI (tmp_tmpd, 0);
9710 CPU (h_nbit) = opval;
9711 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9712 }
9713 {
9714 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9715 CPU (h_zbit) = opval;
9716 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9717 }
9718 SET_H_CBIT_MOVE (0);
9719 SET_H_VBIT_MOVE (0);
9720 {
9721 {
9722 BI opval = 0;
9723 CPU (h_xbit) = opval;
9724 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9725 }
9726 {
9727 BI opval = 0;
9728 SET_H_INSN_PREFIXED_P (opval);
9729 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9730 }
9731 }
9732 }
9733 }
9734
9735 #undef FLD
9736 }
9737 NEXT (vpc);
9738
9739 CASE (sem, INSN_ABS) : /* abs $Rs,$Rd */
9740 {
9741 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9742 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9743 #define FLD(f) abuf->fields.sfmt_muls_b.f
9744 int UNUSED written = 0;
9745 IADDR UNUSED pc = abuf->addr;
9746 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9747
9748 {
9749 SI tmp_tmpd;
9750 tmp_tmpd = ABSSI (GET_H_GR (FLD (f_operand1)));
9751 {
9752 SI opval = tmp_tmpd;
9753 SET_H_GR (FLD (f_operand2), opval);
9754 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9755 }
9756 {
9757 {
9758 BI opval = LTSI (tmp_tmpd, 0);
9759 CPU (h_nbit) = opval;
9760 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9761 }
9762 {
9763 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9764 CPU (h_zbit) = opval;
9765 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9766 }
9767 SET_H_CBIT_MOVE (0);
9768 SET_H_VBIT_MOVE (0);
9769 {
9770 {
9771 BI opval = 0;
9772 CPU (h_xbit) = opval;
9773 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9774 }
9775 {
9776 BI opval = 0;
9777 SET_H_INSN_PREFIXED_P (opval);
9778 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9779 }
9780 }
9781 }
9782 }
9783
9784 #undef FLD
9785 }
9786 NEXT (vpc);
9787
9788 CASE (sem, INSN_AND_B_R) : /* and.b $Rs,$Rd */
9789 {
9790 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9791 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9792 #define FLD(f) abuf->fields.sfmt_add_b_r.f
9793 int UNUSED written = 0;
9794 IADDR UNUSED pc = abuf->addr;
9795 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9796
9797 {
9798 QI tmp_tmpd;
9799 tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
9800 {
9801 SI tmp_oldregval;
9802 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
9803 {
9804 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
9805 SET_H_GR (FLD (f_operand2), opval);
9806 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9807 }
9808 }
9809 {
9810 {
9811 BI opval = LTQI (tmp_tmpd, 0);
9812 CPU (h_nbit) = opval;
9813 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9814 }
9815 {
9816 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9817 CPU (h_zbit) = opval;
9818 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9819 }
9820 SET_H_CBIT_MOVE (0);
9821 SET_H_VBIT_MOVE (0);
9822 {
9823 {
9824 BI opval = 0;
9825 CPU (h_xbit) = opval;
9826 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9827 }
9828 {
9829 BI opval = 0;
9830 SET_H_INSN_PREFIXED_P (opval);
9831 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9832 }
9833 }
9834 }
9835 }
9836
9837 #undef FLD
9838 }
9839 NEXT (vpc);
9840
9841 CASE (sem, INSN_AND_W_R) : /* and.w $Rs,$Rd */
9842 {
9843 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9844 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9845 #define FLD(f) abuf->fields.sfmt_add_b_r.f
9846 int UNUSED written = 0;
9847 IADDR UNUSED pc = abuf->addr;
9848 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9849
9850 {
9851 HI tmp_tmpd;
9852 tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
9853 {
9854 SI tmp_oldregval;
9855 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
9856 {
9857 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
9858 SET_H_GR (FLD (f_operand2), opval);
9859 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9860 }
9861 }
9862 {
9863 {
9864 BI opval = LTHI (tmp_tmpd, 0);
9865 CPU (h_nbit) = opval;
9866 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9867 }
9868 {
9869 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9870 CPU (h_zbit) = opval;
9871 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9872 }
9873 SET_H_CBIT_MOVE (0);
9874 SET_H_VBIT_MOVE (0);
9875 {
9876 {
9877 BI opval = 0;
9878 CPU (h_xbit) = opval;
9879 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9880 }
9881 {
9882 BI opval = 0;
9883 SET_H_INSN_PREFIXED_P (opval);
9884 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9885 }
9886 }
9887 }
9888 }
9889
9890 #undef FLD
9891 }
9892 NEXT (vpc);
9893
9894 CASE (sem, INSN_AND_D_R) : /* and.d $Rs,$Rd */
9895 {
9896 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9897 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9898 #define FLD(f) abuf->fields.sfmt_add_b_r.f
9899 int UNUSED written = 0;
9900 IADDR UNUSED pc = abuf->addr;
9901 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9902
9903 {
9904 SI tmp_tmpd;
9905 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
9906 {
9907 SI opval = tmp_tmpd;
9908 SET_H_GR (FLD (f_operand2), opval);
9909 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9910 }
9911 {
9912 {
9913 BI opval = LTSI (tmp_tmpd, 0);
9914 CPU (h_nbit) = opval;
9915 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9916 }
9917 {
9918 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9919 CPU (h_zbit) = opval;
9920 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9921 }
9922 SET_H_CBIT_MOVE (0);
9923 SET_H_VBIT_MOVE (0);
9924 {
9925 {
9926 BI opval = 0;
9927 CPU (h_xbit) = opval;
9928 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9929 }
9930 {
9931 BI opval = 0;
9932 SET_H_INSN_PREFIXED_P (opval);
9933 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9934 }
9935 }
9936 }
9937 }
9938
9939 #undef FLD
9940 }
9941 NEXT (vpc);
9942
9943 CASE (sem, INSN_AND_M_B_M) : /* and-m.b [${Rs}${inc}],${Rd} */
9944 {
9945 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9946 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9947 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
9948 int UNUSED written = 0;
9949 IADDR UNUSED pc = abuf->addr;
9950 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9951
9952 {
9953 QI tmp_tmpd;
9954 tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
9955 QI tmp_tmp_mem;
9956 BI tmp_postinc;
9957 tmp_postinc = FLD (f_memmode);
9958 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
9959 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
9960 ; if (NEBI (tmp_postinc, 0)) {
9961 {
9962 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
9963 tmp_addr = ADDSI (tmp_addr, 1);
9964 }
9965 {
9966 SI opval = tmp_addr;
9967 SET_H_GR (FLD (f_operand1), opval);
9968 written |= (1 << 11);
9969 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9970 }
9971 }
9972 }
9973 ; tmp_tmp_mem; }));
9974 {
9975 SI tmp_oldregval;
9976 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
9977 {
9978 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
9979 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
9980 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9981 }
9982 }
9983 {
9984 {
9985 BI opval = LTQI (tmp_tmpd, 0);
9986 CPU (h_nbit) = opval;
9987 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9988 }
9989 {
9990 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9991 CPU (h_zbit) = opval;
9992 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9993 }
9994 SET_H_CBIT_MOVE (0);
9995 SET_H_VBIT_MOVE (0);
9996 {
9997 {
9998 BI opval = 0;
9999 CPU (h_xbit) = opval;
10000 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10001 }
10002 {
10003 BI opval = 0;
10004 SET_H_INSN_PREFIXED_P (opval);
10005 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10006 }
10007 }
10008 }
10009 }
10010
10011 abuf->written = written;
10012 #undef FLD
10013 }
10014 NEXT (vpc);
10015
10016 CASE (sem, INSN_AND_M_W_M) : /* and-m.w [${Rs}${inc}],${Rd} */
10017 {
10018 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10019 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10020 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
10021 int UNUSED written = 0;
10022 IADDR UNUSED pc = abuf->addr;
10023 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10024
10025 {
10026 HI tmp_tmpd;
10027 tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
10028 HI tmp_tmp_mem;
10029 BI tmp_postinc;
10030 tmp_postinc = FLD (f_memmode);
10031 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
10032 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
10033 ; if (NEBI (tmp_postinc, 0)) {
10034 {
10035 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
10036 tmp_addr = ADDSI (tmp_addr, 2);
10037 }
10038 {
10039 SI opval = tmp_addr;
10040 SET_H_GR (FLD (f_operand1), opval);
10041 written |= (1 << 11);
10042 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10043 }
10044 }
10045 }
10046 ; tmp_tmp_mem; }));
10047 {
10048 SI tmp_oldregval;
10049 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
10050 {
10051 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
10052 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
10053 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10054 }
10055 }
10056 {
10057 {
10058 BI opval = LTHI (tmp_tmpd, 0);
10059 CPU (h_nbit) = opval;
10060 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10061 }
10062 {
10063 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10064 CPU (h_zbit) = opval;
10065 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10066 }
10067 SET_H_CBIT_MOVE (0);
10068 SET_H_VBIT_MOVE (0);
10069 {
10070 {
10071 BI opval = 0;
10072 CPU (h_xbit) = opval;
10073 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10074 }
10075 {
10076 BI opval = 0;
10077 SET_H_INSN_PREFIXED_P (opval);
10078 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10079 }
10080 }
10081 }
10082 }
10083
10084 abuf->written = written;
10085 #undef FLD
10086 }
10087 NEXT (vpc);
10088
10089 CASE (sem, INSN_AND_M_D_M) : /* and-m.d [${Rs}${inc}],${Rd} */
10090 {
10091 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10092 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10093 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
10094 int UNUSED written = 0;
10095 IADDR UNUSED pc = abuf->addr;
10096 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10097
10098 {
10099 SI tmp_tmpd;
10100 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
10101 SI tmp_tmp_mem;
10102 BI tmp_postinc;
10103 tmp_postinc = FLD (f_memmode);
10104 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
10105 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
10106 ; if (NEBI (tmp_postinc, 0)) {
10107 {
10108 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
10109 tmp_addr = ADDSI (tmp_addr, 4);
10110 }
10111 {
10112 SI opval = tmp_addr;
10113 SET_H_GR (FLD (f_operand1), opval);
10114 written |= (1 << 10);
10115 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10116 }
10117 }
10118 }
10119 ; tmp_tmp_mem; }));
10120 {
10121 SI opval = tmp_tmpd;
10122 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
10123 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10124 }
10125 {
10126 {
10127 BI opval = LTSI (tmp_tmpd, 0);
10128 CPU (h_nbit) = opval;
10129 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10130 }
10131 {
10132 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10133 CPU (h_zbit) = opval;
10134 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10135 }
10136 SET_H_CBIT_MOVE (0);
10137 SET_H_VBIT_MOVE (0);
10138 {
10139 {
10140 BI opval = 0;
10141 CPU (h_xbit) = opval;
10142 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10143 }
10144 {
10145 BI opval = 0;
10146 SET_H_INSN_PREFIXED_P (opval);
10147 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10148 }
10149 }
10150 }
10151 }
10152
10153 abuf->written = written;
10154 #undef FLD
10155 }
10156 NEXT (vpc);
10157
10158 CASE (sem, INSN_ANDCBR) : /* and.b ${sconst8}],${Rd} */
10159 {
10160 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10161 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10162 #define FLD(f) abuf->fields.sfmt_addcbr.f
10163 int UNUSED written = 0;
10164 IADDR UNUSED pc = abuf->addr;
10165 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10166
10167 {
10168 QI tmp_tmpd;
10169 tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__byte));
10170 {
10171 SI tmp_oldregval;
10172 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10173 {
10174 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
10175 SET_H_GR (FLD (f_operand2), opval);
10176 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10177 }
10178 }
10179 {
10180 {
10181 BI opval = LTQI (tmp_tmpd, 0);
10182 CPU (h_nbit) = opval;
10183 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10184 }
10185 {
10186 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10187 CPU (h_zbit) = opval;
10188 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10189 }
10190 SET_H_CBIT_MOVE (0);
10191 SET_H_VBIT_MOVE (0);
10192 {
10193 {
10194 BI opval = 0;
10195 CPU (h_xbit) = opval;
10196 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10197 }
10198 {
10199 BI opval = 0;
10200 SET_H_INSN_PREFIXED_P (opval);
10201 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10202 }
10203 }
10204 }
10205 }
10206
10207 #undef FLD
10208 }
10209 NEXT (vpc);
10210
10211 CASE (sem, INSN_ANDCWR) : /* and.w ${sconst16}],${Rd} */
10212 {
10213 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10214 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10215 #define FLD(f) abuf->fields.sfmt_addcwr.f
10216 int UNUSED written = 0;
10217 IADDR UNUSED pc = abuf->addr;
10218 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10219
10220 {
10221 HI tmp_tmpd;
10222 tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__word));
10223 {
10224 SI tmp_oldregval;
10225 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10226 {
10227 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
10228 SET_H_GR (FLD (f_operand2), opval);
10229 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10230 }
10231 }
10232 {
10233 {
10234 BI opval = LTHI (tmp_tmpd, 0);
10235 CPU (h_nbit) = opval;
10236 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10237 }
10238 {
10239 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10240 CPU (h_zbit) = opval;
10241 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10242 }
10243 SET_H_CBIT_MOVE (0);
10244 SET_H_VBIT_MOVE (0);
10245 {
10246 {
10247 BI opval = 0;
10248 CPU (h_xbit) = opval;
10249 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10250 }
10251 {
10252 BI opval = 0;
10253 SET_H_INSN_PREFIXED_P (opval);
10254 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10255 }
10256 }
10257 }
10258 }
10259
10260 #undef FLD
10261 }
10262 NEXT (vpc);
10263
10264 CASE (sem, INSN_ANDCDR) : /* and.d ${const32}],${Rd} */
10265 {
10266 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10268 #define FLD(f) abuf->fields.sfmt_addcdr.f
10269 int UNUSED written = 0;
10270 IADDR UNUSED pc = abuf->addr;
10271 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
10272
10273 {
10274 SI tmp_tmpd;
10275 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
10276 {
10277 SI opval = tmp_tmpd;
10278 SET_H_GR (FLD (f_operand2), opval);
10279 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10280 }
10281 {
10282 {
10283 BI opval = LTSI (tmp_tmpd, 0);
10284 CPU (h_nbit) = opval;
10285 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10286 }
10287 {
10288 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10289 CPU (h_zbit) = opval;
10290 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10291 }
10292 SET_H_CBIT_MOVE (0);
10293 SET_H_VBIT_MOVE (0);
10294 {
10295 {
10296 BI opval = 0;
10297 CPU (h_xbit) = opval;
10298 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10299 }
10300 {
10301 BI opval = 0;
10302 SET_H_INSN_PREFIXED_P (opval);
10303 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10304 }
10305 }
10306 }
10307 }
10308
10309 #undef FLD
10310 }
10311 NEXT (vpc);
10312
10313 CASE (sem, INSN_ANDQ) : /* andq $i,$Rd */
10314 {
10315 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10316 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10317 #define FLD(f) abuf->fields.sfmt_andq.f
10318 int UNUSED written = 0;
10319 IADDR UNUSED pc = abuf->addr;
10320 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10321
10322 {
10323 SI tmp_tmpd;
10324 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), FLD (f_s6));
10325 {
10326 SI opval = tmp_tmpd;
10327 SET_H_GR (FLD (f_operand2), opval);
10328 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10329 }
10330 {
10331 {
10332 BI opval = LTSI (tmp_tmpd, 0);
10333 CPU (h_nbit) = opval;
10334 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10335 }
10336 {
10337 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10338 CPU (h_zbit) = opval;
10339 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10340 }
10341 SET_H_CBIT_MOVE (0);
10342 SET_H_VBIT_MOVE (0);
10343 {
10344 {
10345 BI opval = 0;
10346 CPU (h_xbit) = opval;
10347 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10348 }
10349 {
10350 BI opval = 0;
10351 SET_H_INSN_PREFIXED_P (opval);
10352 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10353 }
10354 }
10355 }
10356 }
10357
10358 #undef FLD
10359 }
10360 NEXT (vpc);
10361
10362 CASE (sem, INSN_ORR_B_R) : /* orr.b $Rs,$Rd */
10363 {
10364 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10365 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10366 #define FLD(f) abuf->fields.sfmt_add_b_r.f
10367 int UNUSED written = 0;
10368 IADDR UNUSED pc = abuf->addr;
10369 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10370
10371 {
10372 QI tmp_tmpd;
10373 tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
10374 {
10375 SI tmp_oldregval;
10376 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10377 {
10378 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
10379 SET_H_GR (FLD (f_operand2), opval);
10380 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10381 }
10382 }
10383 {
10384 {
10385 BI opval = LTQI (tmp_tmpd, 0);
10386 CPU (h_nbit) = opval;
10387 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10388 }
10389 {
10390 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10391 CPU (h_zbit) = opval;
10392 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10393 }
10394 SET_H_CBIT_MOVE (0);
10395 SET_H_VBIT_MOVE (0);
10396 {
10397 {
10398 BI opval = 0;
10399 CPU (h_xbit) = opval;
10400 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10401 }
10402 {
10403 BI opval = 0;
10404 SET_H_INSN_PREFIXED_P (opval);
10405 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10406 }
10407 }
10408 }
10409 }
10410
10411 #undef FLD
10412 }
10413 NEXT (vpc);
10414
10415 CASE (sem, INSN_ORR_W_R) : /* orr.w $Rs,$Rd */
10416 {
10417 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10418 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10419 #define FLD(f) abuf->fields.sfmt_add_b_r.f
10420 int UNUSED written = 0;
10421 IADDR UNUSED pc = abuf->addr;
10422 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10423
10424 {
10425 HI tmp_tmpd;
10426 tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
10427 {
10428 SI tmp_oldregval;
10429 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10430 {
10431 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
10432 SET_H_GR (FLD (f_operand2), opval);
10433 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10434 }
10435 }
10436 {
10437 {
10438 BI opval = LTHI (tmp_tmpd, 0);
10439 CPU (h_nbit) = opval;
10440 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10441 }
10442 {
10443 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10444 CPU (h_zbit) = opval;
10445 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10446 }
10447 SET_H_CBIT_MOVE (0);
10448 SET_H_VBIT_MOVE (0);
10449 {
10450 {
10451 BI opval = 0;
10452 CPU (h_xbit) = opval;
10453 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10454 }
10455 {
10456 BI opval = 0;
10457 SET_H_INSN_PREFIXED_P (opval);
10458 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10459 }
10460 }
10461 }
10462 }
10463
10464 #undef FLD
10465 }
10466 NEXT (vpc);
10467
10468 CASE (sem, INSN_ORR_D_R) : /* orr.d $Rs,$Rd */
10469 {
10470 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10471 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10472 #define FLD(f) abuf->fields.sfmt_add_b_r.f
10473 int UNUSED written = 0;
10474 IADDR UNUSED pc = abuf->addr;
10475 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10476
10477 {
10478 SI tmp_tmpd;
10479 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
10480 {
10481 SI opval = tmp_tmpd;
10482 SET_H_GR (FLD (f_operand2), opval);
10483 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10484 }
10485 {
10486 {
10487 BI opval = LTSI (tmp_tmpd, 0);
10488 CPU (h_nbit) = opval;
10489 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10490 }
10491 {
10492 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10493 CPU (h_zbit) = opval;
10494 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10495 }
10496 SET_H_CBIT_MOVE (0);
10497 SET_H_VBIT_MOVE (0);
10498 {
10499 {
10500 BI opval = 0;
10501 CPU (h_xbit) = opval;
10502 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10503 }
10504 {
10505 BI opval = 0;
10506 SET_H_INSN_PREFIXED_P (opval);
10507 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10508 }
10509 }
10510 }
10511 }
10512
10513 #undef FLD
10514 }
10515 NEXT (vpc);
10516
10517 CASE (sem, INSN_OR_M_B_M) : /* or-m.b [${Rs}${inc}],${Rd} */
10518 {
10519 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10520 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10521 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
10522 int UNUSED written = 0;
10523 IADDR UNUSED pc = abuf->addr;
10524 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10525
10526 {
10527 QI tmp_tmpd;
10528 tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
10529 QI tmp_tmp_mem;
10530 BI tmp_postinc;
10531 tmp_postinc = FLD (f_memmode);
10532 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
10533 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
10534 ; if (NEBI (tmp_postinc, 0)) {
10535 {
10536 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
10537 tmp_addr = ADDSI (tmp_addr, 1);
10538 }
10539 {
10540 SI opval = tmp_addr;
10541 SET_H_GR (FLD (f_operand1), opval);
10542 written |= (1 << 11);
10543 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10544 }
10545 }
10546 }
10547 ; tmp_tmp_mem; }));
10548 {
10549 SI tmp_oldregval;
10550 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
10551 {
10552 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
10553 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
10554 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10555 }
10556 }
10557 {
10558 {
10559 BI opval = LTQI (tmp_tmpd, 0);
10560 CPU (h_nbit) = opval;
10561 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10562 }
10563 {
10564 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10565 CPU (h_zbit) = opval;
10566 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10567 }
10568 SET_H_CBIT_MOVE (0);
10569 SET_H_VBIT_MOVE (0);
10570 {
10571 {
10572 BI opval = 0;
10573 CPU (h_xbit) = opval;
10574 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10575 }
10576 {
10577 BI opval = 0;
10578 SET_H_INSN_PREFIXED_P (opval);
10579 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10580 }
10581 }
10582 }
10583 }
10584
10585 abuf->written = written;
10586 #undef FLD
10587 }
10588 NEXT (vpc);
10589
10590 CASE (sem, INSN_OR_M_W_M) : /* or-m.w [${Rs}${inc}],${Rd} */
10591 {
10592 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10593 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10594 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
10595 int UNUSED written = 0;
10596 IADDR UNUSED pc = abuf->addr;
10597 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10598
10599 {
10600 HI tmp_tmpd;
10601 tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
10602 HI tmp_tmp_mem;
10603 BI tmp_postinc;
10604 tmp_postinc = FLD (f_memmode);
10605 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
10606 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
10607 ; if (NEBI (tmp_postinc, 0)) {
10608 {
10609 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
10610 tmp_addr = ADDSI (tmp_addr, 2);
10611 }
10612 {
10613 SI opval = tmp_addr;
10614 SET_H_GR (FLD (f_operand1), opval);
10615 written |= (1 << 11);
10616 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10617 }
10618 }
10619 }
10620 ; tmp_tmp_mem; }));
10621 {
10622 SI tmp_oldregval;
10623 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
10624 {
10625 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
10626 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
10627 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10628 }
10629 }
10630 {
10631 {
10632 BI opval = LTHI (tmp_tmpd, 0);
10633 CPU (h_nbit) = opval;
10634 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10635 }
10636 {
10637 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10638 CPU (h_zbit) = opval;
10639 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10640 }
10641 SET_H_CBIT_MOVE (0);
10642 SET_H_VBIT_MOVE (0);
10643 {
10644 {
10645 BI opval = 0;
10646 CPU (h_xbit) = opval;
10647 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10648 }
10649 {
10650 BI opval = 0;
10651 SET_H_INSN_PREFIXED_P (opval);
10652 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10653 }
10654 }
10655 }
10656 }
10657
10658 abuf->written = written;
10659 #undef FLD
10660 }
10661 NEXT (vpc);
10662
10663 CASE (sem, INSN_OR_M_D_M) : /* or-m.d [${Rs}${inc}],${Rd} */
10664 {
10665 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10666 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10667 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
10668 int UNUSED written = 0;
10669 IADDR UNUSED pc = abuf->addr;
10670 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10671
10672 {
10673 SI tmp_tmpd;
10674 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
10675 SI tmp_tmp_mem;
10676 BI tmp_postinc;
10677 tmp_postinc = FLD (f_memmode);
10678 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
10679 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
10680 ; if (NEBI (tmp_postinc, 0)) {
10681 {
10682 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
10683 tmp_addr = ADDSI (tmp_addr, 4);
10684 }
10685 {
10686 SI opval = tmp_addr;
10687 SET_H_GR (FLD (f_operand1), opval);
10688 written |= (1 << 10);
10689 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10690 }
10691 }
10692 }
10693 ; tmp_tmp_mem; }));
10694 {
10695 SI opval = tmp_tmpd;
10696 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
10697 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10698 }
10699 {
10700 {
10701 BI opval = LTSI (tmp_tmpd, 0);
10702 CPU (h_nbit) = opval;
10703 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10704 }
10705 {
10706 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10707 CPU (h_zbit) = opval;
10708 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10709 }
10710 SET_H_CBIT_MOVE (0);
10711 SET_H_VBIT_MOVE (0);
10712 {
10713 {
10714 BI opval = 0;
10715 CPU (h_xbit) = opval;
10716 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10717 }
10718 {
10719 BI opval = 0;
10720 SET_H_INSN_PREFIXED_P (opval);
10721 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10722 }
10723 }
10724 }
10725 }
10726
10727 abuf->written = written;
10728 #undef FLD
10729 }
10730 NEXT (vpc);
10731
10732 CASE (sem, INSN_ORCBR) : /* or.b ${sconst8}],${Rd} */
10733 {
10734 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10736 #define FLD(f) abuf->fields.sfmt_addcbr.f
10737 int UNUSED written = 0;
10738 IADDR UNUSED pc = abuf->addr;
10739 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10740
10741 {
10742 QI tmp_tmpd;
10743 tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__byte));
10744 {
10745 SI tmp_oldregval;
10746 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10747 {
10748 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
10749 SET_H_GR (FLD (f_operand2), opval);
10750 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10751 }
10752 }
10753 {
10754 {
10755 BI opval = LTQI (tmp_tmpd, 0);
10756 CPU (h_nbit) = opval;
10757 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10758 }
10759 {
10760 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10761 CPU (h_zbit) = opval;
10762 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10763 }
10764 SET_H_CBIT_MOVE (0);
10765 SET_H_VBIT_MOVE (0);
10766 {
10767 {
10768 BI opval = 0;
10769 CPU (h_xbit) = opval;
10770 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10771 }
10772 {
10773 BI opval = 0;
10774 SET_H_INSN_PREFIXED_P (opval);
10775 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10776 }
10777 }
10778 }
10779 }
10780
10781 #undef FLD
10782 }
10783 NEXT (vpc);
10784
10785 CASE (sem, INSN_ORCWR) : /* or.w ${sconst16}],${Rd} */
10786 {
10787 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10788 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10789 #define FLD(f) abuf->fields.sfmt_addcwr.f
10790 int UNUSED written = 0;
10791 IADDR UNUSED pc = abuf->addr;
10792 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10793
10794 {
10795 HI tmp_tmpd;
10796 tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__word));
10797 {
10798 SI tmp_oldregval;
10799 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10800 {
10801 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
10802 SET_H_GR (FLD (f_operand2), opval);
10803 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10804 }
10805 }
10806 {
10807 {
10808 BI opval = LTHI (tmp_tmpd, 0);
10809 CPU (h_nbit) = opval;
10810 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10811 }
10812 {
10813 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10814 CPU (h_zbit) = opval;
10815 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10816 }
10817 SET_H_CBIT_MOVE (0);
10818 SET_H_VBIT_MOVE (0);
10819 {
10820 {
10821 BI opval = 0;
10822 CPU (h_xbit) = opval;
10823 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10824 }
10825 {
10826 BI opval = 0;
10827 SET_H_INSN_PREFIXED_P (opval);
10828 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10829 }
10830 }
10831 }
10832 }
10833
10834 #undef FLD
10835 }
10836 NEXT (vpc);
10837
10838 CASE (sem, INSN_ORCDR) : /* or.d ${const32}],${Rd} */
10839 {
10840 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10841 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10842 #define FLD(f) abuf->fields.sfmt_addcdr.f
10843 int UNUSED written = 0;
10844 IADDR UNUSED pc = abuf->addr;
10845 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
10846
10847 {
10848 SI tmp_tmpd;
10849 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
10850 {
10851 SI opval = tmp_tmpd;
10852 SET_H_GR (FLD (f_operand2), opval);
10853 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10854 }
10855 {
10856 {
10857 BI opval = LTSI (tmp_tmpd, 0);
10858 CPU (h_nbit) = opval;
10859 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10860 }
10861 {
10862 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10863 CPU (h_zbit) = opval;
10864 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10865 }
10866 SET_H_CBIT_MOVE (0);
10867 SET_H_VBIT_MOVE (0);
10868 {
10869 {
10870 BI opval = 0;
10871 CPU (h_xbit) = opval;
10872 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10873 }
10874 {
10875 BI opval = 0;
10876 SET_H_INSN_PREFIXED_P (opval);
10877 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10878 }
10879 }
10880 }
10881 }
10882
10883 #undef FLD
10884 }
10885 NEXT (vpc);
10886
10887 CASE (sem, INSN_ORQ) : /* orq $i,$Rd */
10888 {
10889 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10890 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10891 #define FLD(f) abuf->fields.sfmt_andq.f
10892 int UNUSED written = 0;
10893 IADDR UNUSED pc = abuf->addr;
10894 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10895
10896 {
10897 SI tmp_tmpd;
10898 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), FLD (f_s6));
10899 {
10900 SI opval = tmp_tmpd;
10901 SET_H_GR (FLD (f_operand2), opval);
10902 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10903 }
10904 {
10905 {
10906 BI opval = LTSI (tmp_tmpd, 0);
10907 CPU (h_nbit) = opval;
10908 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10909 }
10910 {
10911 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10912 CPU (h_zbit) = opval;
10913 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10914 }
10915 SET_H_CBIT_MOVE (0);
10916 SET_H_VBIT_MOVE (0);
10917 {
10918 {
10919 BI opval = 0;
10920 CPU (h_xbit) = opval;
10921 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10922 }
10923 {
10924 BI opval = 0;
10925 SET_H_INSN_PREFIXED_P (opval);
10926 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10927 }
10928 }
10929 }
10930 }
10931
10932 #undef FLD
10933 }
10934 NEXT (vpc);
10935
10936 CASE (sem, INSN_XOR) : /* xor $Rs,$Rd */
10937 {
10938 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10939 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10940 #define FLD(f) abuf->fields.sfmt_muls_b.f
10941 int UNUSED written = 0;
10942 IADDR UNUSED pc = abuf->addr;
10943 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10944
10945 {
10946 SI tmp_tmpd;
10947 tmp_tmpd = XORSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
10948 {
10949 SI opval = tmp_tmpd;
10950 SET_H_GR (FLD (f_operand2), opval);
10951 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10952 }
10953 {
10954 {
10955 BI opval = LTSI (tmp_tmpd, 0);
10956 CPU (h_nbit) = opval;
10957 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10958 }
10959 {
10960 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10961 CPU (h_zbit) = opval;
10962 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10963 }
10964 SET_H_CBIT_MOVE (0);
10965 SET_H_VBIT_MOVE (0);
10966 {
10967 {
10968 BI opval = 0;
10969 CPU (h_xbit) = opval;
10970 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10971 }
10972 {
10973 BI opval = 0;
10974 SET_H_INSN_PREFIXED_P (opval);
10975 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10976 }
10977 }
10978 }
10979 }
10980
10981 #undef FLD
10982 }
10983 NEXT (vpc);
10984
10985 CASE (sem, INSN_SWAP) : /* swap${swapoption} ${Rs} */
10986 {
10987 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10988 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10989 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
10990 int UNUSED written = 0;
10991 IADDR UNUSED pc = abuf->addr;
10992 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10993
10994 {
10995 SI tmp_tmps;
10996 SI tmp_tmpd;
10997 tmp_tmps = GET_H_GR (FLD (f_operand1));
10998 tmp_tmpd = ({ SI tmp_tmpcode;
10999 SI tmp_tmpval;
11000 SI tmp_tmpres;
11001 tmp_tmpcode = FLD (f_operand2);
11002 ; tmp_tmpval = tmp_tmps;
11003 ; if (EQSI (tmp_tmpcode, 0)) {
11004 tmp_tmpres = (cgen_rtx_error (current_cpu, "SWAP without swap modifier isn't implemented"), 0);
11005 }
11006 else if (EQSI (tmp_tmpcode, 1)) {
11007 tmp_tmpres = ({ SI tmp_tmpr;
11008 tmp_tmpr = tmp_tmpval;
11009 ; 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)))))))); });
11010 }
11011 else if (EQSI (tmp_tmpcode, 2)) {
11012 tmp_tmpres = ({ SI tmp_tmpb;
11013 tmp_tmpb = tmp_tmpval;
11014 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11015 }
11016 else if (EQSI (tmp_tmpcode, 3)) {
11017 tmp_tmpres = ({ SI tmp_tmpr;
11018 tmp_tmpr = ({ SI tmp_tmpb;
11019 tmp_tmpb = tmp_tmpval;
11020 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11021 ; 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)))))))); });
11022 }
11023 else if (EQSI (tmp_tmpcode, 4)) {
11024 tmp_tmpres = ({ SI tmp_tmpb;
11025 tmp_tmpb = tmp_tmpval;
11026 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11027 }
11028 else if (EQSI (tmp_tmpcode, 5)) {
11029 tmp_tmpres = ({ SI tmp_tmpr;
11030 tmp_tmpr = ({ SI tmp_tmpb;
11031 tmp_tmpb = tmp_tmpval;
11032 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11033 ; 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)))))))); });
11034 }
11035 else if (EQSI (tmp_tmpcode, 6)) {
11036 tmp_tmpres = ({ SI tmp_tmpb;
11037 tmp_tmpb = ({ SI tmp_tmpb;
11038 tmp_tmpb = tmp_tmpval;
11039 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11040 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11041 }
11042 else if (EQSI (tmp_tmpcode, 7)) {
11043 tmp_tmpres = ({ SI tmp_tmpr;
11044 tmp_tmpr = ({ SI tmp_tmpb;
11045 tmp_tmpb = ({ SI tmp_tmpb;
11046 tmp_tmpb = tmp_tmpval;
11047 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11048 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11049 ; 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)))))))); });
11050 }
11051 else if (EQSI (tmp_tmpcode, 8)) {
11052 tmp_tmpres = INVSI (tmp_tmpval);
11053 }
11054 else if (EQSI (tmp_tmpcode, 9)) {
11055 tmp_tmpres = ({ SI tmp_tmpr;
11056 tmp_tmpr = INVSI (tmp_tmpval);
11057 ; 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)))))))); });
11058 }
11059 else if (EQSI (tmp_tmpcode, 10)) {
11060 tmp_tmpres = ({ SI tmp_tmpb;
11061 tmp_tmpb = INVSI (tmp_tmpval);
11062 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11063 }
11064 else if (EQSI (tmp_tmpcode, 11)) {
11065 tmp_tmpres = ({ SI tmp_tmpr;
11066 tmp_tmpr = ({ SI tmp_tmpb;
11067 tmp_tmpb = INVSI (tmp_tmpval);
11068 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11069 ; 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)))))))); });
11070 }
11071 else if (EQSI (tmp_tmpcode, 12)) {
11072 tmp_tmpres = ({ SI tmp_tmpb;
11073 tmp_tmpb = INVSI (tmp_tmpval);
11074 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11075 }
11076 else if (EQSI (tmp_tmpcode, 13)) {
11077 tmp_tmpres = ({ SI tmp_tmpr;
11078 tmp_tmpr = ({ SI tmp_tmpb;
11079 tmp_tmpb = INVSI (tmp_tmpval);
11080 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11081 ; 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)))))))); });
11082 }
11083 else if (EQSI (tmp_tmpcode, 14)) {
11084 tmp_tmpres = ({ SI tmp_tmpb;
11085 tmp_tmpb = ({ SI tmp_tmpb;
11086 tmp_tmpb = INVSI (tmp_tmpval);
11087 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11088 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11089 }
11090 else if (EQSI (tmp_tmpcode, 15)) {
11091 tmp_tmpres = ({ SI tmp_tmpr;
11092 tmp_tmpr = ({ SI tmp_tmpb;
11093 tmp_tmpb = ({ SI tmp_tmpb;
11094 tmp_tmpb = INVSI (tmp_tmpval);
11095 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11096 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11097 ; 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)))))))); });
11098 }
11099 ; tmp_tmpres; });
11100 {
11101 SI opval = tmp_tmpd;
11102 SET_H_GR (FLD (f_operand1), opval);
11103 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11104 }
11105 {
11106 {
11107 BI opval = LTSI (tmp_tmpd, 0);
11108 CPU (h_nbit) = opval;
11109 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11110 }
11111 {
11112 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11113 CPU (h_zbit) = opval;
11114 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11115 }
11116 SET_H_CBIT_MOVE (0);
11117 SET_H_VBIT_MOVE (0);
11118 {
11119 {
11120 BI opval = 0;
11121 CPU (h_xbit) = opval;
11122 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11123 }
11124 {
11125 BI opval = 0;
11126 SET_H_INSN_PREFIXED_P (opval);
11127 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11128 }
11129 }
11130 }
11131 }
11132
11133 #undef FLD
11134 }
11135 NEXT (vpc);
11136
11137 CASE (sem, INSN_ASRR_B_R) : /* asrr.b $Rs,$Rd */
11138 {
11139 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11140 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11141 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11142 int UNUSED written = 0;
11143 IADDR UNUSED pc = abuf->addr;
11144 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11145
11146 {
11147 QI tmp_tmpd;
11148 SI tmp_cnt1;
11149 SI tmp_cnt2;
11150 tmp_cnt1 = GET_H_GR (FLD (f_operand1));
11151 tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
11152 tmp_tmpd = SRASI (EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
11153 {
11154 SI tmp_oldregval;
11155 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11156 {
11157 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
11158 SET_H_GR (FLD (f_operand2), opval);
11159 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11160 }
11161 }
11162 {
11163 {
11164 BI opval = LTQI (tmp_tmpd, 0);
11165 CPU (h_nbit) = opval;
11166 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11167 }
11168 {
11169 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11170 CPU (h_zbit) = opval;
11171 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11172 }
11173 SET_H_CBIT_MOVE (0);
11174 SET_H_VBIT_MOVE (0);
11175 {
11176 {
11177 BI opval = 0;
11178 CPU (h_xbit) = opval;
11179 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11180 }
11181 {
11182 BI opval = 0;
11183 SET_H_INSN_PREFIXED_P (opval);
11184 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11185 }
11186 }
11187 }
11188 }
11189
11190 #undef FLD
11191 }
11192 NEXT (vpc);
11193
11194 CASE (sem, INSN_ASRR_W_R) : /* asrr.w $Rs,$Rd */
11195 {
11196 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11197 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11198 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11199 int UNUSED written = 0;
11200 IADDR UNUSED pc = abuf->addr;
11201 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11202
11203 {
11204 HI tmp_tmpd;
11205 SI tmp_cnt1;
11206 SI tmp_cnt2;
11207 tmp_cnt1 = GET_H_GR (FLD (f_operand1));
11208 tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
11209 tmp_tmpd = SRASI (EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
11210 {
11211 SI tmp_oldregval;
11212 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11213 {
11214 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
11215 SET_H_GR (FLD (f_operand2), opval);
11216 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11217 }
11218 }
11219 {
11220 {
11221 BI opval = LTHI (tmp_tmpd, 0);
11222 CPU (h_nbit) = opval;
11223 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11224 }
11225 {
11226 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11227 CPU (h_zbit) = opval;
11228 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11229 }
11230 SET_H_CBIT_MOVE (0);
11231 SET_H_VBIT_MOVE (0);
11232 {
11233 {
11234 BI opval = 0;
11235 CPU (h_xbit) = opval;
11236 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11237 }
11238 {
11239 BI opval = 0;
11240 SET_H_INSN_PREFIXED_P (opval);
11241 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11242 }
11243 }
11244 }
11245 }
11246
11247 #undef FLD
11248 }
11249 NEXT (vpc);
11250
11251 CASE (sem, INSN_ASRR_D_R) : /* asrr.d $Rs,$Rd */
11252 {
11253 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11254 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11255 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11256 int UNUSED written = 0;
11257 IADDR UNUSED pc = abuf->addr;
11258 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11259
11260 {
11261 SI tmp_tmpd;
11262 SI tmp_cnt1;
11263 SI tmp_cnt2;
11264 tmp_cnt1 = GET_H_GR (FLD (f_operand1));
11265 tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
11266 tmp_tmpd = SRASI (EXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
11267 {
11268 SI opval = tmp_tmpd;
11269 SET_H_GR (FLD (f_operand2), opval);
11270 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11271 }
11272 {
11273 {
11274 BI opval = LTSI (tmp_tmpd, 0);
11275 CPU (h_nbit) = opval;
11276 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11277 }
11278 {
11279 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11280 CPU (h_zbit) = opval;
11281 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11282 }
11283 SET_H_CBIT_MOVE (0);
11284 SET_H_VBIT_MOVE (0);
11285 {
11286 {
11287 BI opval = 0;
11288 CPU (h_xbit) = opval;
11289 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11290 }
11291 {
11292 BI opval = 0;
11293 SET_H_INSN_PREFIXED_P (opval);
11294 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11295 }
11296 }
11297 }
11298 }
11299
11300 #undef FLD
11301 }
11302 NEXT (vpc);
11303
11304 CASE (sem, INSN_ASRQ) : /* asrq $c,${Rd} */
11305 {
11306 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11307 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11308 #define FLD(f) abuf->fields.sfmt_asrq.f
11309 int UNUSED written = 0;
11310 IADDR UNUSED pc = abuf->addr;
11311 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11312
11313 {
11314 SI tmp_tmpd;
11315 tmp_tmpd = SRASI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
11316 {
11317 SI opval = tmp_tmpd;
11318 SET_H_GR (FLD (f_operand2), opval);
11319 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11320 }
11321 {
11322 {
11323 BI opval = LTSI (tmp_tmpd, 0);
11324 CPU (h_nbit) = opval;
11325 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11326 }
11327 {
11328 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11329 CPU (h_zbit) = opval;
11330 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11331 }
11332 SET_H_CBIT_MOVE (0);
11333 SET_H_VBIT_MOVE (0);
11334 {
11335 {
11336 BI opval = 0;
11337 CPU (h_xbit) = opval;
11338 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11339 }
11340 {
11341 BI opval = 0;
11342 SET_H_INSN_PREFIXED_P (opval);
11343 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11344 }
11345 }
11346 }
11347 }
11348
11349 #undef FLD
11350 }
11351 NEXT (vpc);
11352
11353 CASE (sem, INSN_LSRR_B_R) : /* lsrr.b $Rs,$Rd */
11354 {
11355 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11356 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11357 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11358 int UNUSED written = 0;
11359 IADDR UNUSED pc = abuf->addr;
11360 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11361
11362 {
11363 SI tmp_tmpd;
11364 SI tmp_cnt;
11365 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11366 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SRLSI (ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11367 {
11368 SI tmp_oldregval;
11369 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11370 {
11371 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
11372 SET_H_GR (FLD (f_operand2), opval);
11373 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11374 }
11375 }
11376 {
11377 {
11378 BI opval = LTQI (tmp_tmpd, 0);
11379 CPU (h_nbit) = opval;
11380 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11381 }
11382 {
11383 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11384 CPU (h_zbit) = opval;
11385 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11386 }
11387 SET_H_CBIT_MOVE (0);
11388 SET_H_VBIT_MOVE (0);
11389 {
11390 {
11391 BI opval = 0;
11392 CPU (h_xbit) = opval;
11393 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11394 }
11395 {
11396 BI opval = 0;
11397 SET_H_INSN_PREFIXED_P (opval);
11398 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11399 }
11400 }
11401 }
11402 }
11403
11404 #undef FLD
11405 }
11406 NEXT (vpc);
11407
11408 CASE (sem, INSN_LSRR_W_R) : /* lsrr.w $Rs,$Rd */
11409 {
11410 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11411 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11412 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11413 int UNUSED written = 0;
11414 IADDR UNUSED pc = abuf->addr;
11415 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11416
11417 {
11418 SI tmp_tmpd;
11419 SI tmp_cnt;
11420 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11421 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SRLSI (ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11422 {
11423 SI tmp_oldregval;
11424 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11425 {
11426 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
11427 SET_H_GR (FLD (f_operand2), opval);
11428 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11429 }
11430 }
11431 {
11432 {
11433 BI opval = LTHI (tmp_tmpd, 0);
11434 CPU (h_nbit) = opval;
11435 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11436 }
11437 {
11438 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11439 CPU (h_zbit) = opval;
11440 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11441 }
11442 SET_H_CBIT_MOVE (0);
11443 SET_H_VBIT_MOVE (0);
11444 {
11445 {
11446 BI opval = 0;
11447 CPU (h_xbit) = opval;
11448 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11449 }
11450 {
11451 BI opval = 0;
11452 SET_H_INSN_PREFIXED_P (opval);
11453 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11454 }
11455 }
11456 }
11457 }
11458
11459 #undef FLD
11460 }
11461 NEXT (vpc);
11462
11463 CASE (sem, INSN_LSRR_D_R) : /* lsrr.d $Rs,$Rd */
11464 {
11465 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11466 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11467 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11468 int UNUSED written = 0;
11469 IADDR UNUSED pc = abuf->addr;
11470 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11471
11472 {
11473 SI tmp_tmpd;
11474 SI tmp_cnt;
11475 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11476 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SRLSI (ZEXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11477 {
11478 SI opval = tmp_tmpd;
11479 SET_H_GR (FLD (f_operand2), opval);
11480 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11481 }
11482 {
11483 {
11484 BI opval = LTSI (tmp_tmpd, 0);
11485 CPU (h_nbit) = opval;
11486 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11487 }
11488 {
11489 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11490 CPU (h_zbit) = opval;
11491 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11492 }
11493 SET_H_CBIT_MOVE (0);
11494 SET_H_VBIT_MOVE (0);
11495 {
11496 {
11497 BI opval = 0;
11498 CPU (h_xbit) = opval;
11499 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11500 }
11501 {
11502 BI opval = 0;
11503 SET_H_INSN_PREFIXED_P (opval);
11504 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11505 }
11506 }
11507 }
11508 }
11509
11510 #undef FLD
11511 }
11512 NEXT (vpc);
11513
11514 CASE (sem, INSN_LSRQ) : /* lsrq $c,${Rd} */
11515 {
11516 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11517 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11518 #define FLD(f) abuf->fields.sfmt_asrq.f
11519 int UNUSED written = 0;
11520 IADDR UNUSED pc = abuf->addr;
11521 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11522
11523 {
11524 SI tmp_tmpd;
11525 tmp_tmpd = SRLSI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
11526 {
11527 SI opval = tmp_tmpd;
11528 SET_H_GR (FLD (f_operand2), opval);
11529 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11530 }
11531 {
11532 {
11533 BI opval = LTSI (tmp_tmpd, 0);
11534 CPU (h_nbit) = opval;
11535 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11536 }
11537 {
11538 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11539 CPU (h_zbit) = opval;
11540 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11541 }
11542 SET_H_CBIT_MOVE (0);
11543 SET_H_VBIT_MOVE (0);
11544 {
11545 {
11546 BI opval = 0;
11547 CPU (h_xbit) = opval;
11548 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11549 }
11550 {
11551 BI opval = 0;
11552 SET_H_INSN_PREFIXED_P (opval);
11553 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11554 }
11555 }
11556 }
11557 }
11558
11559 #undef FLD
11560 }
11561 NEXT (vpc);
11562
11563 CASE (sem, INSN_LSLR_B_R) : /* lslr.b $Rs,$Rd */
11564 {
11565 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11566 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11567 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11568 int UNUSED written = 0;
11569 IADDR UNUSED pc = abuf->addr;
11570 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11571
11572 {
11573 SI tmp_tmpd;
11574 SI tmp_cnt;
11575 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11576 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SLLSI (ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11577 {
11578 SI tmp_oldregval;
11579 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11580 {
11581 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
11582 SET_H_GR (FLD (f_operand2), opval);
11583 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11584 }
11585 }
11586 {
11587 {
11588 BI opval = LTQI (tmp_tmpd, 0);
11589 CPU (h_nbit) = opval;
11590 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11591 }
11592 {
11593 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11594 CPU (h_zbit) = opval;
11595 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11596 }
11597 SET_H_CBIT_MOVE (0);
11598 SET_H_VBIT_MOVE (0);
11599 {
11600 {
11601 BI opval = 0;
11602 CPU (h_xbit) = opval;
11603 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11604 }
11605 {
11606 BI opval = 0;
11607 SET_H_INSN_PREFIXED_P (opval);
11608 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11609 }
11610 }
11611 }
11612 }
11613
11614 #undef FLD
11615 }
11616 NEXT (vpc);
11617
11618 CASE (sem, INSN_LSLR_W_R) : /* lslr.w $Rs,$Rd */
11619 {
11620 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11622 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11623 int UNUSED written = 0;
11624 IADDR UNUSED pc = abuf->addr;
11625 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11626
11627 {
11628 SI tmp_tmpd;
11629 SI tmp_cnt;
11630 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11631 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SLLSI (ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11632 {
11633 SI tmp_oldregval;
11634 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11635 {
11636 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
11637 SET_H_GR (FLD (f_operand2), opval);
11638 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11639 }
11640 }
11641 {
11642 {
11643 BI opval = LTHI (tmp_tmpd, 0);
11644 CPU (h_nbit) = opval;
11645 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11646 }
11647 {
11648 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11649 CPU (h_zbit) = opval;
11650 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11651 }
11652 SET_H_CBIT_MOVE (0);
11653 SET_H_VBIT_MOVE (0);
11654 {
11655 {
11656 BI opval = 0;
11657 CPU (h_xbit) = opval;
11658 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11659 }
11660 {
11661 BI opval = 0;
11662 SET_H_INSN_PREFIXED_P (opval);
11663 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11664 }
11665 }
11666 }
11667 }
11668
11669 #undef FLD
11670 }
11671 NEXT (vpc);
11672
11673 CASE (sem, INSN_LSLR_D_R) : /* lslr.d $Rs,$Rd */
11674 {
11675 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11676 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11677 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11678 int UNUSED written = 0;
11679 IADDR UNUSED pc = abuf->addr;
11680 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11681
11682 {
11683 SI tmp_tmpd;
11684 SI tmp_cnt;
11685 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11686 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SLLSI (ZEXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11687 {
11688 SI opval = tmp_tmpd;
11689 SET_H_GR (FLD (f_operand2), opval);
11690 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11691 }
11692 {
11693 {
11694 BI opval = LTSI (tmp_tmpd, 0);
11695 CPU (h_nbit) = opval;
11696 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11697 }
11698 {
11699 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11700 CPU (h_zbit) = opval;
11701 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11702 }
11703 SET_H_CBIT_MOVE (0);
11704 SET_H_VBIT_MOVE (0);
11705 {
11706 {
11707 BI opval = 0;
11708 CPU (h_xbit) = opval;
11709 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11710 }
11711 {
11712 BI opval = 0;
11713 SET_H_INSN_PREFIXED_P (opval);
11714 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11715 }
11716 }
11717 }
11718 }
11719
11720 #undef FLD
11721 }
11722 NEXT (vpc);
11723
11724 CASE (sem, INSN_LSLQ) : /* lslq $c,${Rd} */
11725 {
11726 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11728 #define FLD(f) abuf->fields.sfmt_asrq.f
11729 int UNUSED written = 0;
11730 IADDR UNUSED pc = abuf->addr;
11731 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11732
11733 {
11734 SI tmp_tmpd;
11735 tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
11736 {
11737 SI opval = tmp_tmpd;
11738 SET_H_GR (FLD (f_operand2), opval);
11739 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11740 }
11741 {
11742 {
11743 BI opval = LTSI (tmp_tmpd, 0);
11744 CPU (h_nbit) = opval;
11745 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11746 }
11747 {
11748 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11749 CPU (h_zbit) = opval;
11750 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11751 }
11752 SET_H_CBIT_MOVE (0);
11753 SET_H_VBIT_MOVE (0);
11754 {
11755 {
11756 BI opval = 0;
11757 CPU (h_xbit) = opval;
11758 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11759 }
11760 {
11761 BI opval = 0;
11762 SET_H_INSN_PREFIXED_P (opval);
11763 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11764 }
11765 }
11766 }
11767 }
11768
11769 #undef FLD
11770 }
11771 NEXT (vpc);
11772
11773 CASE (sem, INSN_BTST) : /* $Rs,$Rd */
11774 {
11775 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11777 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11778 int UNUSED written = 0;
11779 IADDR UNUSED pc = abuf->addr;
11780 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11781
11782 {
11783 SI tmp_tmpd;
11784 SI tmp_cnt;
11785 tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), SUBSI (31, ANDSI (GET_H_GR (FLD (f_operand1)), 31)));
11786 {
11787 {
11788 BI opval = LTSI (tmp_tmpd, 0);
11789 CPU (h_nbit) = opval;
11790 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11791 }
11792 {
11793 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11794 CPU (h_zbit) = opval;
11795 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11796 }
11797 SET_H_CBIT_MOVE (0);
11798 SET_H_VBIT_MOVE (0);
11799 {
11800 {
11801 BI opval = 0;
11802 CPU (h_xbit) = opval;
11803 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11804 }
11805 {
11806 BI opval = 0;
11807 SET_H_INSN_PREFIXED_P (opval);
11808 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11809 }
11810 }
11811 }
11812 }
11813
11814 #undef FLD
11815 }
11816 NEXT (vpc);
11817
11818 CASE (sem, INSN_BTSTQ) : /* btstq $c,${Rd} */
11819 {
11820 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11822 #define FLD(f) abuf->fields.sfmt_asrq.f
11823 int UNUSED written = 0;
11824 IADDR UNUSED pc = abuf->addr;
11825 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11826
11827 {
11828 SI tmp_tmpd;
11829 tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), SUBSI (31, FLD (f_u5)));
11830 {
11831 {
11832 BI opval = LTSI (tmp_tmpd, 0);
11833 CPU (h_nbit) = opval;
11834 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11835 }
11836 {
11837 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11838 CPU (h_zbit) = opval;
11839 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11840 }
11841 SET_H_CBIT_MOVE (0);
11842 SET_H_VBIT_MOVE (0);
11843 {
11844 {
11845 BI opval = 0;
11846 CPU (h_xbit) = opval;
11847 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11848 }
11849 {
11850 BI opval = 0;
11851 SET_H_INSN_PREFIXED_P (opval);
11852 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11853 }
11854 }
11855 }
11856 }
11857
11858 #undef FLD
11859 }
11860 NEXT (vpc);
11861
11862 CASE (sem, INSN_SETF) : /* setf ${list-of-flags} */
11863 {
11864 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11865 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11866 #define FLD(f) abuf->fields.sfmt_setf.f
11867 int UNUSED written = 0;
11868 IADDR UNUSED pc = abuf->addr;
11869 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11870
11871 {
11872 SI tmp_tmp;
11873 tmp_tmp = FLD (f_dstsrc);
11874 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 0)), 0)) {
11875 {
11876 BI opval = 1;
11877 CPU (h_cbit) = opval;
11878 written |= (1 << 1);
11879 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
11880 }
11881 }
11882 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 1)), 0)) {
11883 {
11884 BI opval = 1;
11885 CPU (h_vbit) = opval;
11886 written |= (1 << 7);
11887 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
11888 }
11889 }
11890 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 2)), 0)) {
11891 {
11892 BI opval = 1;
11893 CPU (h_zbit) = opval;
11894 written |= (1 << 9);
11895 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11896 }
11897 }
11898 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 3)), 0)) {
11899 {
11900 BI opval = 1;
11901 CPU (h_nbit) = opval;
11902 written |= (1 << 3);
11903 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11904 }
11905 }
11906 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
11907 {
11908 BI opval = 1;
11909 CPU (h_xbit) = opval;
11910 written |= (1 << 8);
11911 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11912 }
11913 }
11914 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 5)), 0)) {
11915 {
11916 BI opval = 1;
11917 SET_H_IBIT (opval);
11918 written |= (1 << 2);
11919 TRACE_RESULT (current_cpu, abuf, "ibit", 'x', opval);
11920 }
11921 }
11922 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 6)), 0)) {
11923 {
11924 BI opval = 1;
11925 SET_H_UBIT (opval);
11926 written |= (1 << 6);
11927 TRACE_RESULT (current_cpu, abuf, "ubit", 'x', opval);
11928 }
11929 }
11930 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 7)), 0)) {
11931 {
11932 BI opval = 1;
11933 CPU (h_pbit) = opval;
11934 written |= (1 << 4);
11935 TRACE_RESULT (current_cpu, abuf, "pbit", 'x', opval);
11936 }
11937 }
11938 {
11939 BI opval = 0;
11940 SET_H_INSN_PREFIXED_P (opval);
11941 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11942 }
11943 if (EQSI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
11944 {
11945 BI opval = 0;
11946 CPU (h_xbit) = opval;
11947 written |= (1 << 8);
11948 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11949 }
11950 }
11951 }
11952
11953 abuf->written = written;
11954 #undef FLD
11955 }
11956 NEXT (vpc);
11957
11958 CASE (sem, INSN_CLEARF) : /* clearf ${list-of-flags} */
11959 {
11960 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11961 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11962 #define FLD(f) abuf->fields.sfmt_setf.f
11963 int UNUSED written = 0;
11964 IADDR UNUSED pc = abuf->addr;
11965 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11966
11967 {
11968 SI tmp_tmp;
11969 tmp_tmp = FLD (f_dstsrc);
11970 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 0)), 0)) {
11971 {
11972 BI opval = 0;
11973 CPU (h_cbit) = opval;
11974 written |= (1 << 1);
11975 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
11976 }
11977 }
11978 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 1)), 0)) {
11979 {
11980 BI opval = 0;
11981 CPU (h_vbit) = opval;
11982 written |= (1 << 7);
11983 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
11984 }
11985 }
11986 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 2)), 0)) {
11987 {
11988 BI opval = 0;
11989 CPU (h_zbit) = opval;
11990 written |= (1 << 9);
11991 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11992 }
11993 }
11994 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 3)), 0)) {
11995 {
11996 BI opval = 0;
11997 CPU (h_nbit) = opval;
11998 written |= (1 << 3);
11999 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12000 }
12001 }
12002 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
12003 {
12004 BI opval = 0;
12005 CPU (h_xbit) = opval;
12006 written |= (1 << 8);
12007 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12008 }
12009 }
12010 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 5)), 0)) {
12011 {
12012 BI opval = 0;
12013 SET_H_IBIT (opval);
12014 written |= (1 << 2);
12015 TRACE_RESULT (current_cpu, abuf, "ibit", 'x', opval);
12016 }
12017 }
12018 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 6)), 0)) {
12019 {
12020 BI opval = 0;
12021 SET_H_UBIT (opval);
12022 written |= (1 << 6);
12023 TRACE_RESULT (current_cpu, abuf, "ubit", 'x', opval);
12024 }
12025 }
12026 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 7)), 0)) {
12027 {
12028 BI opval = 0;
12029 CPU (h_pbit) = opval;
12030 written |= (1 << 4);
12031 TRACE_RESULT (current_cpu, abuf, "pbit", 'x', opval);
12032 }
12033 }
12034 {
12035 {
12036 BI opval = 0;
12037 CPU (h_xbit) = opval;
12038 written |= (1 << 8);
12039 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12040 }
12041 {
12042 BI opval = 0;
12043 SET_H_INSN_PREFIXED_P (opval);
12044 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12045 }
12046 }
12047 }
12048
12049 abuf->written = written;
12050 #undef FLD
12051 }
12052 NEXT (vpc);
12053
12054 CASE (sem, INSN_BCC_B) : /* b${cc} ${o-pcrel} */
12055 {
12056 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12057 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12058 #define FLD(f) abuf->fields.sfmt_bcc_b.f
12059 int UNUSED written = 0;
12060 IADDR UNUSED pc = abuf->addr;
12061 SEM_BRANCH_INIT
12062 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12063
12064 {
12065 BI tmp_truthval;
12066 tmp_truthval = ({ SI tmp_tmpcond;
12067 BI tmp_condres;
12068 tmp_tmpcond = FLD (f_operand2);
12069 ; if (EQSI (tmp_tmpcond, 0)) {
12070 tmp_condres = NOTBI (CPU (h_cbit));
12071 }
12072 else if (EQSI (tmp_tmpcond, 1)) {
12073 tmp_condres = CPU (h_cbit);
12074 }
12075 else if (EQSI (tmp_tmpcond, 2)) {
12076 tmp_condres = NOTBI (CPU (h_zbit));
12077 }
12078 else if (EQSI (tmp_tmpcond, 3)) {
12079 tmp_condres = CPU (h_zbit);
12080 }
12081 else if (EQSI (tmp_tmpcond, 4)) {
12082 tmp_condres = NOTBI (CPU (h_vbit));
12083 }
12084 else if (EQSI (tmp_tmpcond, 5)) {
12085 tmp_condres = CPU (h_vbit);
12086 }
12087 else if (EQSI (tmp_tmpcond, 6)) {
12088 tmp_condres = NOTBI (CPU (h_nbit));
12089 }
12090 else if (EQSI (tmp_tmpcond, 7)) {
12091 tmp_condres = CPU (h_nbit);
12092 }
12093 else if (EQSI (tmp_tmpcond, 8)) {
12094 tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
12095 }
12096 else if (EQSI (tmp_tmpcond, 9)) {
12097 tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
12098 }
12099 else if (EQSI (tmp_tmpcond, 10)) {
12100 tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
12101 }
12102 else if (EQSI (tmp_tmpcond, 11)) {
12103 tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
12104 }
12105 else if (EQSI (tmp_tmpcond, 12)) {
12106 tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
12107 }
12108 else if (EQSI (tmp_tmpcond, 13)) {
12109 tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
12110 }
12111 else if (EQSI (tmp_tmpcond, 14)) {
12112 tmp_condres = 1;
12113 }
12114 else if (EQSI (tmp_tmpcond, 15)) {
12115 tmp_condres = CPU (h_pbit);
12116 }
12117 ; tmp_condres; });
12118 crisv10f_branch_taken (current_cpu, pc, FLD (i_o_pcrel), tmp_truthval);
12119 {
12120 {
12121 BI opval = 0;
12122 CPU (h_xbit) = opval;
12123 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12124 }
12125 {
12126 BI opval = 0;
12127 SET_H_INSN_PREFIXED_P (opval);
12128 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12129 }
12130 }
12131 if (tmp_truthval) {
12132 {
12133 {
12134 USI opval = FLD (i_o_pcrel);
12135 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
12136 written |= (1 << 8);
12137 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12138 }
12139 }
12140 }
12141 }
12142
12143 abuf->written = written;
12144 SEM_BRANCH_FINI (vpc);
12145 #undef FLD
12146 }
12147 NEXT (vpc);
12148
12149 CASE (sem, INSN_BA_B) : /* ba ${o-pcrel} */
12150 {
12151 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12152 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12153 #define FLD(f) abuf->fields.sfmt_bcc_b.f
12154 int UNUSED written = 0;
12155 IADDR UNUSED pc = abuf->addr;
12156 SEM_BRANCH_INIT
12157 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12158
12159 {
12160 {
12161 {
12162 BI opval = 0;
12163 CPU (h_xbit) = opval;
12164 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12165 }
12166 {
12167 BI opval = 0;
12168 SET_H_INSN_PREFIXED_P (opval);
12169 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12170 }
12171 }
12172 {
12173 {
12174 USI opval = FLD (i_o_pcrel);
12175 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
12176 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12177 }
12178 }
12179 }
12180
12181 SEM_BRANCH_FINI (vpc);
12182 #undef FLD
12183 }
12184 NEXT (vpc);
12185
12186 CASE (sem, INSN_BCC_W) : /* b${cc} ${o-word-pcrel} */
12187 {
12188 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12189 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12190 #define FLD(f) abuf->fields.sfmt_bcc_w.f
12191 int UNUSED written = 0;
12192 IADDR UNUSED pc = abuf->addr;
12193 SEM_BRANCH_INIT
12194 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12195
12196 {
12197 BI tmp_truthval;
12198 tmp_truthval = ({ SI tmp_tmpcond;
12199 BI tmp_condres;
12200 tmp_tmpcond = FLD (f_operand2);
12201 ; if (EQSI (tmp_tmpcond, 0)) {
12202 tmp_condres = NOTBI (CPU (h_cbit));
12203 }
12204 else if (EQSI (tmp_tmpcond, 1)) {
12205 tmp_condres = CPU (h_cbit);
12206 }
12207 else if (EQSI (tmp_tmpcond, 2)) {
12208 tmp_condres = NOTBI (CPU (h_zbit));
12209 }
12210 else if (EQSI (tmp_tmpcond, 3)) {
12211 tmp_condres = CPU (h_zbit);
12212 }
12213 else if (EQSI (tmp_tmpcond, 4)) {
12214 tmp_condres = NOTBI (CPU (h_vbit));
12215 }
12216 else if (EQSI (tmp_tmpcond, 5)) {
12217 tmp_condres = CPU (h_vbit);
12218 }
12219 else if (EQSI (tmp_tmpcond, 6)) {
12220 tmp_condres = NOTBI (CPU (h_nbit));
12221 }
12222 else if (EQSI (tmp_tmpcond, 7)) {
12223 tmp_condres = CPU (h_nbit);
12224 }
12225 else if (EQSI (tmp_tmpcond, 8)) {
12226 tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
12227 }
12228 else if (EQSI (tmp_tmpcond, 9)) {
12229 tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
12230 }
12231 else if (EQSI (tmp_tmpcond, 10)) {
12232 tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
12233 }
12234 else if (EQSI (tmp_tmpcond, 11)) {
12235 tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
12236 }
12237 else if (EQSI (tmp_tmpcond, 12)) {
12238 tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
12239 }
12240 else if (EQSI (tmp_tmpcond, 13)) {
12241 tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
12242 }
12243 else if (EQSI (tmp_tmpcond, 14)) {
12244 tmp_condres = 1;
12245 }
12246 else if (EQSI (tmp_tmpcond, 15)) {
12247 tmp_condres = CPU (h_pbit);
12248 }
12249 ; tmp_condres; });
12250 crisv10f_branch_taken (current_cpu, pc, FLD (i_o_word_pcrel), tmp_truthval);
12251 {
12252 {
12253 BI opval = 0;
12254 CPU (h_xbit) = opval;
12255 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12256 }
12257 {
12258 BI opval = 0;
12259 SET_H_INSN_PREFIXED_P (opval);
12260 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12261 }
12262 }
12263 if (tmp_truthval) {
12264 {
12265 {
12266 USI opval = FLD (i_o_word_pcrel);
12267 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
12268 written |= (1 << 8);
12269 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12270 }
12271 }
12272 }
12273 }
12274
12275 abuf->written = written;
12276 SEM_BRANCH_FINI (vpc);
12277 #undef FLD
12278 }
12279 NEXT (vpc);
12280
12281 CASE (sem, INSN_BA_W) : /* ba ${o-word-pcrel} */
12282 {
12283 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12284 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12285 #define FLD(f) abuf->fields.sfmt_bcc_w.f
12286 int UNUSED written = 0;
12287 IADDR UNUSED pc = abuf->addr;
12288 SEM_BRANCH_INIT
12289 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12290
12291 {
12292 {
12293 {
12294 BI opval = 0;
12295 CPU (h_xbit) = opval;
12296 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12297 }
12298 {
12299 BI opval = 0;
12300 SET_H_INSN_PREFIXED_P (opval);
12301 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12302 }
12303 }
12304 {
12305 {
12306 USI opval = FLD (i_o_word_pcrel);
12307 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
12308 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12309 }
12310 }
12311 }
12312
12313 SEM_BRANCH_FINI (vpc);
12314 #undef FLD
12315 }
12316 NEXT (vpc);
12317
12318 CASE (sem, INSN_JUMP_R) : /* jump/jsr/jir ${Rs} */
12319 {
12320 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12321 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12322 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
12323 int UNUSED written = 0;
12324 IADDR UNUSED pc = abuf->addr;
12325 SEM_BRANCH_INIT
12326 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12327
12328 {
12329 {
12330 SI opval = ADDSI (pc, 2);
12331 SET_H_SR (FLD (f_operand2), opval);
12332 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
12333 }
12334 {
12335 USI opval = GET_H_GR (FLD (f_operand1));
12336 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
12337 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12338 }
12339 {
12340 {
12341 BI opval = 0;
12342 CPU (h_xbit) = opval;
12343 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12344 }
12345 {
12346 BI opval = 0;
12347 SET_H_INSN_PREFIXED_P (opval);
12348 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12349 }
12350 }
12351 }
12352
12353 SEM_BRANCH_FINI (vpc);
12354 #undef FLD
12355 }
12356 NEXT (vpc);
12357
12358 CASE (sem, INSN_JUMP_M) : /* jump/jsr/jir [${Rs}${inc}] */
12359 {
12360 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12361 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12362 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
12363 int UNUSED written = 0;
12364 IADDR UNUSED pc = abuf->addr;
12365 SEM_BRANCH_INIT
12366 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12367
12368 {
12369 {
12370 SI opval = ADDSI (pc, 2);
12371 SET_H_SR (FLD (f_operand2), opval);
12372 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
12373 }
12374 {
12375 USI opval = ({ SI tmp_addr;
12376 SI tmp_tmp_mem;
12377 BI tmp_postinc;
12378 tmp_postinc = FLD (f_memmode);
12379 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
12380 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
12381 ; if (NEBI (tmp_postinc, 0)) {
12382 {
12383 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
12384 tmp_addr = ADDSI (tmp_addr, 4);
12385 }
12386 {
12387 SI opval = tmp_addr;
12388 SET_H_GR (FLD (f_operand1), opval);
12389 written |= (1 << 7);
12390 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12391 }
12392 }
12393 }
12394 ; tmp_tmp_mem; });
12395 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
12396 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12397 }
12398 {
12399 {
12400 BI opval = 0;
12401 CPU (h_xbit) = opval;
12402 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12403 }
12404 {
12405 BI opval = 0;
12406 SET_H_INSN_PREFIXED_P (opval);
12407 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12408 }
12409 }
12410 }
12411
12412 abuf->written = written;
12413 SEM_BRANCH_FINI (vpc);
12414 #undef FLD
12415 }
12416 NEXT (vpc);
12417
12418 CASE (sem, INSN_JUMP_C) : /* jump/jsr/jir ${const32} */
12419 {
12420 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12421 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12422 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
12423 int UNUSED written = 0;
12424 IADDR UNUSED pc = abuf->addr;
12425 SEM_BRANCH_INIT
12426 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
12427
12428 {
12429 {
12430 SI opval = ADDSI (pc, 6);
12431 SET_H_SR (FLD (f_operand2), opval);
12432 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
12433 }
12434 {
12435 USI opval = FLD (f_indir_pc__dword);
12436 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
12437 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12438 }
12439 {
12440 {
12441 BI opval = 0;
12442 CPU (h_xbit) = opval;
12443 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12444 }
12445 {
12446 BI opval = 0;
12447 SET_H_INSN_PREFIXED_P (opval);
12448 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12449 }
12450 }
12451 }
12452
12453 SEM_BRANCH_FINI (vpc);
12454 #undef FLD
12455 }
12456 NEXT (vpc);
12457
12458 CASE (sem, INSN_BREAK) : /* break $n */
12459 {
12460 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12461 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12462 #define FLD(f) abuf->fields.sfmt_break.f
12463 int UNUSED written = 0;
12464 IADDR UNUSED pc = abuf->addr;
12465 SEM_BRANCH_INIT
12466 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12467
12468 {
12469 {
12470 {
12471 BI opval = 0;
12472 CPU (h_xbit) = opval;
12473 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12474 }
12475 {
12476 BI opval = 0;
12477 SET_H_INSN_PREFIXED_P (opval);
12478 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12479 }
12480 }
12481 {
12482 USI opval = crisv10f_break_handler (current_cpu, FLD (f_u4), pc);
12483 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
12484 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12485 }
12486 }
12487
12488 SEM_BRANCH_FINI (vpc);
12489 #undef FLD
12490 }
12491 NEXT (vpc);
12492
12493 CASE (sem, INSN_BOUND_R_B_R) : /* bound-r.b ${Rs},${Rd} */
12494 {
12495 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12496 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12497 #define FLD(f) abuf->fields.sfmt_muls_b.f
12498 int UNUSED written = 0;
12499 IADDR UNUSED pc = abuf->addr;
12500 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12501
12502 {
12503 SI tmp_tmpopd;
12504 SI tmp_tmpops;
12505 SI tmp_newval;
12506 tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
12507 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12508 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12509 {
12510 SI opval = tmp_newval;
12511 SET_H_GR (FLD (f_operand2), opval);
12512 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12513 }
12514 {
12515 {
12516 BI opval = LTSI (tmp_newval, 0);
12517 CPU (h_nbit) = opval;
12518 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12519 }
12520 {
12521 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12522 CPU (h_zbit) = opval;
12523 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12524 }
12525 SET_H_CBIT_MOVE (0);
12526 SET_H_VBIT_MOVE (0);
12527 {
12528 {
12529 BI opval = 0;
12530 CPU (h_xbit) = opval;
12531 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12532 }
12533 {
12534 BI opval = 0;
12535 SET_H_INSN_PREFIXED_P (opval);
12536 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12537 }
12538 }
12539 }
12540 }
12541
12542 #undef FLD
12543 }
12544 NEXT (vpc);
12545
12546 CASE (sem, INSN_BOUND_R_W_R) : /* bound-r.w ${Rs},${Rd} */
12547 {
12548 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12549 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12550 #define FLD(f) abuf->fields.sfmt_muls_b.f
12551 int UNUSED written = 0;
12552 IADDR UNUSED pc = abuf->addr;
12553 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12554
12555 {
12556 SI tmp_tmpopd;
12557 SI tmp_tmpops;
12558 SI tmp_newval;
12559 tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
12560 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12561 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12562 {
12563 SI opval = tmp_newval;
12564 SET_H_GR (FLD (f_operand2), opval);
12565 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12566 }
12567 {
12568 {
12569 BI opval = LTSI (tmp_newval, 0);
12570 CPU (h_nbit) = opval;
12571 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12572 }
12573 {
12574 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12575 CPU (h_zbit) = opval;
12576 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12577 }
12578 SET_H_CBIT_MOVE (0);
12579 SET_H_VBIT_MOVE (0);
12580 {
12581 {
12582 BI opval = 0;
12583 CPU (h_xbit) = opval;
12584 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12585 }
12586 {
12587 BI opval = 0;
12588 SET_H_INSN_PREFIXED_P (opval);
12589 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12590 }
12591 }
12592 }
12593 }
12594
12595 #undef FLD
12596 }
12597 NEXT (vpc);
12598
12599 CASE (sem, INSN_BOUND_R_D_R) : /* bound-r.d ${Rs},${Rd} */
12600 {
12601 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12602 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12603 #define FLD(f) abuf->fields.sfmt_muls_b.f
12604 int UNUSED written = 0;
12605 IADDR UNUSED pc = abuf->addr;
12606 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12607
12608 {
12609 SI tmp_tmpopd;
12610 SI tmp_tmpops;
12611 SI tmp_newval;
12612 tmp_tmpops = TRUNCSISI (GET_H_GR (FLD (f_operand1)));
12613 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12614 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12615 {
12616 SI opval = tmp_newval;
12617 SET_H_GR (FLD (f_operand2), opval);
12618 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12619 }
12620 {
12621 {
12622 BI opval = LTSI (tmp_newval, 0);
12623 CPU (h_nbit) = opval;
12624 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12625 }
12626 {
12627 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12628 CPU (h_zbit) = opval;
12629 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12630 }
12631 SET_H_CBIT_MOVE (0);
12632 SET_H_VBIT_MOVE (0);
12633 {
12634 {
12635 BI opval = 0;
12636 CPU (h_xbit) = opval;
12637 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12638 }
12639 {
12640 BI opval = 0;
12641 SET_H_INSN_PREFIXED_P (opval);
12642 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12643 }
12644 }
12645 }
12646 }
12647
12648 #undef FLD
12649 }
12650 NEXT (vpc);
12651
12652 CASE (sem, INSN_BOUND_M_B_M) : /* bound-m.b [${Rs}${inc}],${Rd} */
12653 {
12654 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12655 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12656 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
12657 int UNUSED written = 0;
12658 IADDR UNUSED pc = abuf->addr;
12659 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12660
12661 {
12662 SI tmp_tmpopd;
12663 SI tmp_tmpops;
12664 SI tmp_newval;
12665 tmp_tmpops = ZEXTQISI (({ SI tmp_addr;
12666 QI tmp_tmp_mem;
12667 BI tmp_postinc;
12668 tmp_postinc = FLD (f_memmode);
12669 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
12670 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
12671 ; if (NEBI (tmp_postinc, 0)) {
12672 {
12673 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
12674 tmp_addr = ADDSI (tmp_addr, 1);
12675 }
12676 {
12677 SI opval = tmp_addr;
12678 SET_H_GR (FLD (f_operand1), opval);
12679 written |= (1 << 9);
12680 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12681 }
12682 }
12683 }
12684 ; tmp_tmp_mem; }));
12685 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12686 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12687 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
12688 {
12689 SI opval = tmp_newval;
12690 SET_H_GR (FLD (f_operand1), opval);
12691 written |= (1 << 9);
12692 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12693 }
12694 } else {
12695 {
12696 SI opval = tmp_newval;
12697 SET_H_GR (FLD (f_operand2), opval);
12698 written |= (1 << 8);
12699 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12700 }
12701 }
12702 {
12703 {
12704 BI opval = LTSI (tmp_newval, 0);
12705 CPU (h_nbit) = opval;
12706 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12707 }
12708 {
12709 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12710 CPU (h_zbit) = opval;
12711 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12712 }
12713 SET_H_CBIT_MOVE (0);
12714 SET_H_VBIT_MOVE (0);
12715 {
12716 {
12717 BI opval = 0;
12718 CPU (h_xbit) = opval;
12719 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12720 }
12721 {
12722 BI opval = 0;
12723 SET_H_INSN_PREFIXED_P (opval);
12724 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12725 }
12726 }
12727 }
12728 }
12729
12730 abuf->written = written;
12731 #undef FLD
12732 }
12733 NEXT (vpc);
12734
12735 CASE (sem, INSN_BOUND_M_W_M) : /* bound-m.w [${Rs}${inc}],${Rd} */
12736 {
12737 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12738 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12739 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
12740 int UNUSED written = 0;
12741 IADDR UNUSED pc = abuf->addr;
12742 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12743
12744 {
12745 SI tmp_tmpopd;
12746 SI tmp_tmpops;
12747 SI tmp_newval;
12748 tmp_tmpops = ZEXTHISI (({ SI tmp_addr;
12749 HI tmp_tmp_mem;
12750 BI tmp_postinc;
12751 tmp_postinc = FLD (f_memmode);
12752 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
12753 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
12754 ; if (NEBI (tmp_postinc, 0)) {
12755 {
12756 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
12757 tmp_addr = ADDSI (tmp_addr, 2);
12758 }
12759 {
12760 SI opval = tmp_addr;
12761 SET_H_GR (FLD (f_operand1), opval);
12762 written |= (1 << 9);
12763 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12764 }
12765 }
12766 }
12767 ; tmp_tmp_mem; }));
12768 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12769 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12770 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
12771 {
12772 SI opval = tmp_newval;
12773 SET_H_GR (FLD (f_operand1), opval);
12774 written |= (1 << 9);
12775 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12776 }
12777 } else {
12778 {
12779 SI opval = tmp_newval;
12780 SET_H_GR (FLD (f_operand2), opval);
12781 written |= (1 << 8);
12782 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12783 }
12784 }
12785 {
12786 {
12787 BI opval = LTSI (tmp_newval, 0);
12788 CPU (h_nbit) = opval;
12789 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12790 }
12791 {
12792 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12793 CPU (h_zbit) = opval;
12794 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12795 }
12796 SET_H_CBIT_MOVE (0);
12797 SET_H_VBIT_MOVE (0);
12798 {
12799 {
12800 BI opval = 0;
12801 CPU (h_xbit) = opval;
12802 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12803 }
12804 {
12805 BI opval = 0;
12806 SET_H_INSN_PREFIXED_P (opval);
12807 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12808 }
12809 }
12810 }
12811 }
12812
12813 abuf->written = written;
12814 #undef FLD
12815 }
12816 NEXT (vpc);
12817
12818 CASE (sem, INSN_BOUND_M_D_M) : /* bound-m.d [${Rs}${inc}],${Rd} */
12819 {
12820 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12822 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
12823 int UNUSED written = 0;
12824 IADDR UNUSED pc = abuf->addr;
12825 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12826
12827 {
12828 SI tmp_tmpopd;
12829 SI tmp_tmpops;
12830 SI tmp_newval;
12831 tmp_tmpops = ({ SI tmp_addr;
12832 SI tmp_tmp_mem;
12833 BI tmp_postinc;
12834 tmp_postinc = FLD (f_memmode);
12835 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
12836 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
12837 ; if (NEBI (tmp_postinc, 0)) {
12838 {
12839 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
12840 tmp_addr = ADDSI (tmp_addr, 4);
12841 }
12842 {
12843 SI opval = tmp_addr;
12844 SET_H_GR (FLD (f_operand1), opval);
12845 written |= (1 << 9);
12846 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12847 }
12848 }
12849 }
12850 ; tmp_tmp_mem; });
12851 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12852 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12853 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
12854 {
12855 SI opval = tmp_newval;
12856 SET_H_GR (FLD (f_operand1), opval);
12857 written |= (1 << 9);
12858 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12859 }
12860 } else {
12861 {
12862 SI opval = tmp_newval;
12863 SET_H_GR (FLD (f_operand2), opval);
12864 written |= (1 << 8);
12865 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12866 }
12867 }
12868 {
12869 {
12870 BI opval = LTSI (tmp_newval, 0);
12871 CPU (h_nbit) = opval;
12872 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12873 }
12874 {
12875 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12876 CPU (h_zbit) = opval;
12877 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12878 }
12879 SET_H_CBIT_MOVE (0);
12880 SET_H_VBIT_MOVE (0);
12881 {
12882 {
12883 BI opval = 0;
12884 CPU (h_xbit) = opval;
12885 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12886 }
12887 {
12888 BI opval = 0;
12889 SET_H_INSN_PREFIXED_P (opval);
12890 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12891 }
12892 }
12893 }
12894 }
12895
12896 abuf->written = written;
12897 #undef FLD
12898 }
12899 NEXT (vpc);
12900
12901 CASE (sem, INSN_BOUND_CB) : /* bound.b [PC+],${Rd} */
12902 {
12903 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12904 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12905 #define FLD(f) abuf->fields.sfmt_bound_cb.f
12906 int UNUSED written = 0;
12907 IADDR UNUSED pc = abuf->addr;
12908 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12909
12910 {
12911 SI tmp_tmpopd;
12912 SI tmp_tmpops;
12913 SI tmp_newval;
12914 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
12915 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12916 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12917 {
12918 SI opval = tmp_newval;
12919 SET_H_GR (FLD (f_operand2), opval);
12920 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12921 }
12922 {
12923 {
12924 BI opval = LTSI (tmp_newval, 0);
12925 CPU (h_nbit) = opval;
12926 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12927 }
12928 {
12929 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12930 CPU (h_zbit) = opval;
12931 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12932 }
12933 SET_H_CBIT_MOVE (0);
12934 SET_H_VBIT_MOVE (0);
12935 {
12936 {
12937 BI opval = 0;
12938 CPU (h_xbit) = opval;
12939 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12940 }
12941 {
12942 BI opval = 0;
12943 SET_H_INSN_PREFIXED_P (opval);
12944 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12945 }
12946 }
12947 }
12948 }
12949
12950 #undef FLD
12951 }
12952 NEXT (vpc);
12953
12954 CASE (sem, INSN_BOUND_CW) : /* bound.w [PC+],${Rd} */
12955 {
12956 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12957 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12958 #define FLD(f) abuf->fields.sfmt_bound_cw.f
12959 int UNUSED written = 0;
12960 IADDR UNUSED pc = abuf->addr;
12961 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12962
12963 {
12964 SI tmp_tmpopd;
12965 SI tmp_tmpops;
12966 SI tmp_newval;
12967 tmp_tmpops = ZEXTSISI (FLD (f_indir_pc__word));
12968 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12969 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12970 {
12971 SI opval = tmp_newval;
12972 SET_H_GR (FLD (f_operand2), opval);
12973 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12974 }
12975 {
12976 {
12977 BI opval = LTSI (tmp_newval, 0);
12978 CPU (h_nbit) = opval;
12979 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12980 }
12981 {
12982 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12983 CPU (h_zbit) = opval;
12984 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12985 }
12986 SET_H_CBIT_MOVE (0);
12987 SET_H_VBIT_MOVE (0);
12988 {
12989 {
12990 BI opval = 0;
12991 CPU (h_xbit) = opval;
12992 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12993 }
12994 {
12995 BI opval = 0;
12996 SET_H_INSN_PREFIXED_P (opval);
12997 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12998 }
12999 }
13000 }
13001 }
13002
13003 #undef FLD
13004 }
13005 NEXT (vpc);
13006
13007 CASE (sem, INSN_BOUND_CD) : /* bound.d [PC+],${Rd} */
13008 {
13009 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13010 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13011 #define FLD(f) abuf->fields.sfmt_bound_cd.f
13012 int UNUSED written = 0;
13013 IADDR UNUSED pc = abuf->addr;
13014 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
13015
13016 {
13017 SI tmp_tmpopd;
13018 SI tmp_tmpops;
13019 SI tmp_newval;
13020 tmp_tmpops = FLD (f_indir_pc__dword);
13021 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
13022 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
13023 {
13024 SI opval = tmp_newval;
13025 SET_H_GR (FLD (f_operand2), opval);
13026 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13027 }
13028 {
13029 {
13030 BI opval = LTSI (tmp_newval, 0);
13031 CPU (h_nbit) = opval;
13032 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
13033 }
13034 {
13035 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
13036 CPU (h_zbit) = opval;
13037 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
13038 }
13039 SET_H_CBIT_MOVE (0);
13040 SET_H_VBIT_MOVE (0);
13041 {
13042 {
13043 BI opval = 0;
13044 CPU (h_xbit) = opval;
13045 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
13046 }
13047 {
13048 BI opval = 0;
13049 SET_H_INSN_PREFIXED_P (opval);
13050 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13051 }
13052 }
13053 }
13054 }
13055
13056 #undef FLD
13057 }
13058 NEXT (vpc);
13059
13060 CASE (sem, INSN_SCC) : /* s${cc} ${Rd-sfield} */
13061 {
13062 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13064 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
13065 int UNUSED written = 0;
13066 IADDR UNUSED pc = abuf->addr;
13067 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13068
13069 {
13070 BI tmp_truthval;
13071 tmp_truthval = ({ SI tmp_tmpcond;
13072 BI tmp_condres;
13073 tmp_tmpcond = FLD (f_operand2);
13074 ; if (EQSI (tmp_tmpcond, 0)) {
13075 tmp_condres = NOTBI (CPU (h_cbit));
13076 }
13077 else if (EQSI (tmp_tmpcond, 1)) {
13078 tmp_condres = CPU (h_cbit);
13079 }
13080 else if (EQSI (tmp_tmpcond, 2)) {
13081 tmp_condres = NOTBI (CPU (h_zbit));
13082 }
13083 else if (EQSI (tmp_tmpcond, 3)) {
13084 tmp_condres = CPU (h_zbit);
13085 }
13086 else if (EQSI (tmp_tmpcond, 4)) {
13087 tmp_condres = NOTBI (CPU (h_vbit));
13088 }
13089 else if (EQSI (tmp_tmpcond, 5)) {
13090 tmp_condres = CPU (h_vbit);
13091 }
13092 else if (EQSI (tmp_tmpcond, 6)) {
13093 tmp_condres = NOTBI (CPU (h_nbit));
13094 }
13095 else if (EQSI (tmp_tmpcond, 7)) {
13096 tmp_condres = CPU (h_nbit);
13097 }
13098 else if (EQSI (tmp_tmpcond, 8)) {
13099 tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
13100 }
13101 else if (EQSI (tmp_tmpcond, 9)) {
13102 tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
13103 }
13104 else if (EQSI (tmp_tmpcond, 10)) {
13105 tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
13106 }
13107 else if (EQSI (tmp_tmpcond, 11)) {
13108 tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
13109 }
13110 else if (EQSI (tmp_tmpcond, 12)) {
13111 tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
13112 }
13113 else if (EQSI (tmp_tmpcond, 13)) {
13114 tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
13115 }
13116 else if (EQSI (tmp_tmpcond, 14)) {
13117 tmp_condres = 1;
13118 }
13119 else if (EQSI (tmp_tmpcond, 15)) {
13120 tmp_condres = CPU (h_pbit);
13121 }
13122 ; tmp_condres; });
13123 {
13124 SI opval = ZEXTBISI (tmp_truthval);
13125 SET_H_GR (FLD (f_operand1), opval);
13126 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13127 }
13128 {
13129 {
13130 BI opval = 0;
13131 CPU (h_xbit) = opval;
13132 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
13133 }
13134 {
13135 BI opval = 0;
13136 SET_H_INSN_PREFIXED_P (opval);
13137 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13138 }
13139 }
13140 }
13141
13142 #undef FLD
13143 }
13144 NEXT (vpc);
13145
13146 CASE (sem, INSN_LZ) : /* lz ${Rs},${Rd} */
13147 {
13148 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13149 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13150 #define FLD(f) abuf->fields.sfmt_muls_b.f
13151 int UNUSED written = 0;
13152 IADDR UNUSED pc = abuf->addr;
13153 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13154
13155 {
13156 SI tmp_tmpd;
13157 SI tmp_tmp;
13158 tmp_tmp = GET_H_GR (FLD (f_operand1));
13159 tmp_tmpd = 0;
13160 {
13161 if (GESI (tmp_tmp, 0)) {
13162 {
13163 tmp_tmp = SLLSI (tmp_tmp, 1);
13164 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13165 }
13166 }
13167 if (GESI (tmp_tmp, 0)) {
13168 {
13169 tmp_tmp = SLLSI (tmp_tmp, 1);
13170 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13171 }
13172 }
13173 if (GESI (tmp_tmp, 0)) {
13174 {
13175 tmp_tmp = SLLSI (tmp_tmp, 1);
13176 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13177 }
13178 }
13179 if (GESI (tmp_tmp, 0)) {
13180 {
13181 tmp_tmp = SLLSI (tmp_tmp, 1);
13182 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13183 }
13184 }
13185 if (GESI (tmp_tmp, 0)) {
13186 {
13187 tmp_tmp = SLLSI (tmp_tmp, 1);
13188 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13189 }
13190 }
13191 if (GESI (tmp_tmp, 0)) {
13192 {
13193 tmp_tmp = SLLSI (tmp_tmp, 1);
13194 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13195 }
13196 }
13197 if (GESI (tmp_tmp, 0)) {
13198 {
13199 tmp_tmp = SLLSI (tmp_tmp, 1);
13200 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13201 }
13202 }
13203 if (GESI (tmp_tmp, 0)) {
13204 {
13205 tmp_tmp = SLLSI (tmp_tmp, 1);
13206 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13207 }
13208 }
13209 if (GESI (tmp_tmp, 0)) {
13210 {
13211 tmp_tmp = SLLSI (tmp_tmp, 1);
13212 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13213 }
13214 }
13215 if (GESI (tmp_tmp, 0)) {
13216 {
13217 tmp_tmp = SLLSI (tmp_tmp, 1);
13218 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13219 }
13220 }
13221 if (GESI (tmp_tmp, 0)) {
13222 {
13223 tmp_tmp = SLLSI (tmp_tmp, 1);
13224 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13225 }
13226 }
13227 if (GESI (tmp_tmp, 0)) {
13228 {
13229 tmp_tmp = SLLSI (tmp_tmp, 1);
13230 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13231 }
13232 }
13233 if (GESI (tmp_tmp, 0)) {
13234 {
13235 tmp_tmp = SLLSI (tmp_tmp, 1);
13236 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13237 }
13238 }
13239 if (GESI (tmp_tmp, 0)) {
13240 {
13241 tmp_tmp = SLLSI (tmp_tmp, 1);
13242 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13243 }
13244 }
13245 if (GESI (tmp_tmp, 0)) {
13246 {
13247 tmp_tmp = SLLSI (tmp_tmp, 1);
13248 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13249 }
13250 }
13251 if (GESI (tmp_tmp, 0)) {
13252 {
13253 tmp_tmp = SLLSI (tmp_tmp, 1);
13254 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13255 }
13256 }
13257 if (GESI (tmp_tmp, 0)) {
13258 {
13259 tmp_tmp = SLLSI (tmp_tmp, 1);
13260 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13261 }
13262 }
13263 if (GESI (tmp_tmp, 0)) {
13264 {
13265 tmp_tmp = SLLSI (tmp_tmp, 1);
13266 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13267 }
13268 }
13269 if (GESI (tmp_tmp, 0)) {
13270 {
13271 tmp_tmp = SLLSI (tmp_tmp, 1);
13272 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13273 }
13274 }
13275 if (GESI (tmp_tmp, 0)) {
13276 {
13277 tmp_tmp = SLLSI (tmp_tmp, 1);
13278 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13279 }
13280 }
13281 if (GESI (tmp_tmp, 0)) {
13282 {
13283 tmp_tmp = SLLSI (tmp_tmp, 1);
13284 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13285 }
13286 }
13287 if (GESI (tmp_tmp, 0)) {
13288 {
13289 tmp_tmp = SLLSI (tmp_tmp, 1);
13290 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13291 }
13292 }
13293 if (GESI (tmp_tmp, 0)) {
13294 {
13295 tmp_tmp = SLLSI (tmp_tmp, 1);
13296 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13297 }
13298 }
13299 if (GESI (tmp_tmp, 0)) {
13300 {
13301 tmp_tmp = SLLSI (tmp_tmp, 1);
13302 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13303 }
13304 }
13305 if (GESI (tmp_tmp, 0)) {
13306 {
13307 tmp_tmp = SLLSI (tmp_tmp, 1);
13308 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13309 }
13310 }
13311 if (GESI (tmp_tmp, 0)) {
13312 {
13313 tmp_tmp = SLLSI (tmp_tmp, 1);
13314 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13315 }
13316 }
13317 if (GESI (tmp_tmp, 0)) {
13318 {
13319 tmp_tmp = SLLSI (tmp_tmp, 1);
13320 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13321 }
13322 }
13323 if (GESI (tmp_tmp, 0)) {
13324 {
13325 tmp_tmp = SLLSI (tmp_tmp, 1);
13326 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13327 }
13328 }
13329 if (GESI (tmp_tmp, 0)) {
13330 {
13331 tmp_tmp = SLLSI (tmp_tmp, 1);
13332 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13333 }
13334 }
13335 if (GESI (tmp_tmp, 0)) {
13336 {
13337 tmp_tmp = SLLSI (tmp_tmp, 1);
13338 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13339 }
13340 }
13341 if (GESI (tmp_tmp, 0)) {
13342 {
13343 tmp_tmp = SLLSI (tmp_tmp, 1);
13344 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13345 }
13346 }
13347 if (GESI (tmp_tmp, 0)) {
13348 {
13349 tmp_tmp = SLLSI (tmp_tmp, 1);
13350 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13351 }
13352 }
13353 }
13354 {
13355 SI opval = tmp_tmpd;
13356 SET_H_GR (FLD (f_operand2), opval);
13357 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13358 }
13359 {
13360 {
13361 BI opval = LTSI (tmp_tmpd, 0);
13362 CPU (h_nbit) = opval;
13363 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
13364 }
13365 {
13366 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
13367 CPU (h_zbit) = opval;
13368 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
13369 }
13370 SET_H_CBIT_MOVE (0);
13371 SET_H_VBIT_MOVE (0);
13372 {
13373 {
13374 BI opval = 0;
13375 CPU (h_xbit) = opval;
13376 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
13377 }
13378 {
13379 BI opval = 0;
13380 SET_H_INSN_PREFIXED_P (opval);
13381 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13382 }
13383 }
13384 }
13385 }
13386
13387 #undef FLD
13388 }
13389 NEXT (vpc);
13390
13391 CASE (sem, INSN_ADDOQ) : /* addoq $o,$Rs,ACR */
13392 {
13393 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13394 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13395 #define FLD(f) abuf->fields.sfmt_addoq.f
13396 int UNUSED written = 0;
13397 IADDR UNUSED pc = abuf->addr;
13398 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13399
13400 {
13401 {
13402 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), FLD (f_s8));
13403 CPU (h_prefixreg_pre_v32) = opval;
13404 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13405 }
13406 {
13407 BI opval = 1;
13408 SET_H_INSN_PREFIXED_P (opval);
13409 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13410 }
13411 }
13412
13413 #undef FLD
13414 }
13415 NEXT (vpc);
13416
13417 CASE (sem, INSN_BDAPQPC) : /* bdapq $o,PC */
13418 {
13419 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13420 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13421 #define FLD(f) abuf->fields.sfmt_addoq.f
13422 int UNUSED written = 0;
13423 IADDR UNUSED pc = abuf->addr;
13424 SEM_BRANCH_INIT
13425 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13426
13427 {
13428 {
13429 SI opval = ADDSI (ADDSI (pc, 2), FLD (f_s8));
13430 CPU (h_prefixreg_pre_v32) = opval;
13431 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13432 }
13433 {
13434 BI opval = 1;
13435 SET_H_INSN_PREFIXED_P (opval);
13436 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13437 }
13438 cris_flush_simulator_decode_cache (current_cpu, pc);
13439 }
13440
13441 SEM_BRANCH_FINI (vpc);
13442 #undef FLD
13443 }
13444 NEXT (vpc);
13445
13446 CASE (sem, INSN_BDAP_32_PC) : /* bdap ${sconst32},PC */
13447 {
13448 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13449 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13450 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
13451 int UNUSED written = 0;
13452 IADDR UNUSED pc = abuf->addr;
13453 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
13454
13455 {
13456 SI tmp_newpc;
13457 SI tmp_oldpc;
13458 SI tmp_offs;
13459 tmp_offs = FLD (f_indir_pc__dword);
13460 tmp_oldpc = ADDSI (pc, 6);
13461 tmp_newpc = ADDSI (tmp_oldpc, tmp_offs);
13462 {
13463 SI opval = tmp_newpc;
13464 CPU (h_prefixreg_pre_v32) = opval;
13465 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13466 }
13467 {
13468 BI opval = 1;
13469 SET_H_INSN_PREFIXED_P (opval);
13470 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13471 }
13472 }
13473
13474 #undef FLD
13475 }
13476 NEXT (vpc);
13477
13478 CASE (sem, INSN_MOVE_M_PCPLUS_P0) : /* move [PC+],P0 */
13479 {
13480 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13481 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13482 #define FLD(f) abuf->fields.sfmt_move_m_spplus_p8.f
13483 int UNUSED written = 0;
13484 IADDR UNUSED pc = abuf->addr;
13485 SEM_BRANCH_INIT
13486 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13487
13488 if (GET_H_INSN_PREFIXED_P ()) {
13489 {
13490 QI tmp_dummy;
13491 tmp_dummy = ({ SI tmp_addr;
13492 QI tmp_tmp_mem;
13493 BI tmp_postinc;
13494 tmp_postinc = FLD (f_memmode);
13495 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (pc) : (CPU (h_prefixreg_pre_v32)));
13496 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
13497 ; if (NEBI (tmp_postinc, 0)) {
13498 {
13499 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13500 tmp_addr = ADDSI (tmp_addr, 1);
13501 }
13502 {
13503 USI opval = tmp_addr;
13504 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
13505 written |= (1 << 5);
13506 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
13507 }
13508 }
13509 }
13510 ; tmp_tmp_mem; });
13511 {
13512 {
13513 BI opval = 0;
13514 CPU (h_xbit) = opval;
13515 written |= (1 << 7);
13516 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
13517 }
13518 {
13519 BI opval = 0;
13520 SET_H_INSN_PREFIXED_P (opval);
13521 written |= (1 << 6);
13522 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13523 }
13524 }
13525 }
13526 } else {
13527 cgen_rtx_error (current_cpu, "move [PC+],P0 without prefix is not implemented");
13528 }
13529
13530 abuf->written = written;
13531 SEM_BRANCH_FINI (vpc);
13532 #undef FLD
13533 }
13534 NEXT (vpc);
13535
13536 CASE (sem, INSN_MOVE_M_SPPLUS_P8) : /* move [SP+],P8 */
13537 {
13538 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13539 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13540 #define FLD(f) abuf->fields.sfmt_move_m_spplus_p8.f
13541 int UNUSED written = 0;
13542 IADDR UNUSED pc = abuf->addr;
13543 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13544
13545 if (GET_H_INSN_PREFIXED_P ()) {
13546 {
13547 SI tmp_dummy;
13548 tmp_dummy = ({ SI tmp_addr;
13549 SI tmp_tmp_mem;
13550 BI tmp_postinc;
13551 tmp_postinc = FLD (f_memmode);
13552 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (((UINT) 14))) : (CPU (h_prefixreg_pre_v32)));
13553 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
13554 ; if (NEBI (tmp_postinc, 0)) {
13555 {
13556 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13557 tmp_addr = ADDSI (tmp_addr, 4);
13558 }
13559 {
13560 SI opval = tmp_addr;
13561 SET_H_GR (((UINT) 14), opval);
13562 written |= (1 << 5);
13563 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13564 }
13565 }
13566 }
13567 ; tmp_tmp_mem; });
13568 {
13569 {
13570 BI opval = 0;
13571 CPU (h_xbit) = opval;
13572 written |= (1 << 7);
13573 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
13574 }
13575 {
13576 BI opval = 0;
13577 SET_H_INSN_PREFIXED_P (opval);
13578 written |= (1 << 6);
13579 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13580 }
13581 }
13582 }
13583 } else {
13584 cgen_rtx_error (current_cpu, "move [SP+],P8 without prefix is not implemented");
13585 }
13586
13587 abuf->written = written;
13588 #undef FLD
13589 }
13590 NEXT (vpc);
13591
13592 CASE (sem, INSN_ADDO_M_B_M) : /* addo-m.b [${Rs}${inc}],$Rd,ACR */
13593 {
13594 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13595 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13596 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
13597 int UNUSED written = 0;
13598 IADDR UNUSED pc = abuf->addr;
13599 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13600
13601 {
13602 QI tmp_tmps;
13603 tmp_tmps = ({ SI tmp_addr;
13604 QI tmp_tmp_mem;
13605 BI tmp_postinc;
13606 tmp_postinc = FLD (f_memmode);
13607 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
13608 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
13609 ; if (NEBI (tmp_postinc, 0)) {
13610 {
13611 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13612 tmp_addr = ADDSI (tmp_addr, 1);
13613 }
13614 {
13615 SI opval = tmp_addr;
13616 SET_H_GR (FLD (f_operand1), opval);
13617 written |= (1 << 6);
13618 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13619 }
13620 }
13621 }
13622 ; tmp_tmp_mem; });
13623 {
13624 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTQISI (tmp_tmps));
13625 CPU (h_prefixreg_pre_v32) = opval;
13626 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13627 }
13628 {
13629 BI opval = 1;
13630 SET_H_INSN_PREFIXED_P (opval);
13631 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13632 }
13633 }
13634
13635 abuf->written = written;
13636 #undef FLD
13637 }
13638 NEXT (vpc);
13639
13640 CASE (sem, INSN_ADDO_M_W_M) : /* addo-m.w [${Rs}${inc}],$Rd,ACR */
13641 {
13642 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13643 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13644 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
13645 int UNUSED written = 0;
13646 IADDR UNUSED pc = abuf->addr;
13647 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13648
13649 {
13650 HI tmp_tmps;
13651 tmp_tmps = ({ SI tmp_addr;
13652 HI tmp_tmp_mem;
13653 BI tmp_postinc;
13654 tmp_postinc = FLD (f_memmode);
13655 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
13656 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
13657 ; if (NEBI (tmp_postinc, 0)) {
13658 {
13659 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13660 tmp_addr = ADDSI (tmp_addr, 2);
13661 }
13662 {
13663 SI opval = tmp_addr;
13664 SET_H_GR (FLD (f_operand1), opval);
13665 written |= (1 << 6);
13666 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13667 }
13668 }
13669 }
13670 ; tmp_tmp_mem; });
13671 {
13672 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTHISI (tmp_tmps));
13673 CPU (h_prefixreg_pre_v32) = opval;
13674 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13675 }
13676 {
13677 BI opval = 1;
13678 SET_H_INSN_PREFIXED_P (opval);
13679 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13680 }
13681 }
13682
13683 abuf->written = written;
13684 #undef FLD
13685 }
13686 NEXT (vpc);
13687
13688 CASE (sem, INSN_ADDO_M_D_M) : /* addo-m.d [${Rs}${inc}],$Rd,ACR */
13689 {
13690 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13691 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13692 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
13693 int UNUSED written = 0;
13694 IADDR UNUSED pc = abuf->addr;
13695 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13696
13697 {
13698 SI tmp_tmps;
13699 tmp_tmps = ({ SI tmp_addr;
13700 SI tmp_tmp_mem;
13701 BI tmp_postinc;
13702 tmp_postinc = FLD (f_memmode);
13703 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
13704 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
13705 ; if (NEBI (tmp_postinc, 0)) {
13706 {
13707 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13708 tmp_addr = ADDSI (tmp_addr, 4);
13709 }
13710 {
13711 SI opval = tmp_addr;
13712 SET_H_GR (FLD (f_operand1), opval);
13713 written |= (1 << 6);
13714 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13715 }
13716 }
13717 }
13718 ; tmp_tmp_mem; });
13719 {
13720 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), tmp_tmps);
13721 CPU (h_prefixreg_pre_v32) = opval;
13722 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13723 }
13724 {
13725 BI opval = 1;
13726 SET_H_INSN_PREFIXED_P (opval);
13727 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13728 }
13729 }
13730
13731 abuf->written = written;
13732 #undef FLD
13733 }
13734 NEXT (vpc);
13735
13736 CASE (sem, INSN_ADDO_CB) : /* addo.b [PC+],$Rd,ACR */
13737 {
13738 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13739 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13740 #define FLD(f) abuf->fields.sfmt_bound_cb.f
13741 int UNUSED written = 0;
13742 IADDR UNUSED pc = abuf->addr;
13743 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13744
13745 {
13746 {
13747 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte))));
13748 CPU (h_prefixreg_pre_v32) = opval;
13749 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13750 }
13751 {
13752 BI opval = 1;
13753 SET_H_INSN_PREFIXED_P (opval);
13754 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13755 }
13756 }
13757
13758 #undef FLD
13759 }
13760 NEXT (vpc);
13761
13762 CASE (sem, INSN_ADDO_CW) : /* addo.w [PC+],$Rd,ACR */
13763 {
13764 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13765 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13766 #define FLD(f) abuf->fields.sfmt_bound_cw.f
13767 int UNUSED written = 0;
13768 IADDR UNUSED pc = abuf->addr;
13769 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13770
13771 {
13772 {
13773 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word))));
13774 CPU (h_prefixreg_pre_v32) = opval;
13775 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13776 }
13777 {
13778 BI opval = 1;
13779 SET_H_INSN_PREFIXED_P (opval);
13780 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13781 }
13782 }
13783
13784 #undef FLD
13785 }
13786 NEXT (vpc);
13787
13788 CASE (sem, INSN_ADDO_CD) : /* addo.d [PC+],$Rd,ACR */
13789 {
13790 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13791 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13792 #define FLD(f) abuf->fields.sfmt_bound_cd.f
13793 int UNUSED written = 0;
13794 IADDR UNUSED pc = abuf->addr;
13795 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
13796
13797 {
13798 {
13799 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
13800 CPU (h_prefixreg_pre_v32) = opval;
13801 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13802 }
13803 {
13804 BI opval = 1;
13805 SET_H_INSN_PREFIXED_P (opval);
13806 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13807 }
13808 }
13809
13810 #undef FLD
13811 }
13812 NEXT (vpc);
13813
13814 CASE (sem, INSN_DIP_M) : /* dip [${Rs}${inc}] */
13815 {
13816 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13818 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
13819 int UNUSED written = 0;
13820 IADDR UNUSED pc = abuf->addr;
13821 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13822
13823 {
13824 SI tmp_tmps;
13825 tmp_tmps = ({ SI tmp_addr;
13826 SI tmp_tmp_mem;
13827 BI tmp_postinc;
13828 tmp_postinc = FLD (f_memmode);
13829 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
13830 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
13831 ; if (NEBI (tmp_postinc, 0)) {
13832 {
13833 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13834 tmp_addr = ADDSI (tmp_addr, 4);
13835 }
13836 {
13837 SI opval = tmp_addr;
13838 SET_H_GR (FLD (f_operand1), opval);
13839 written |= (1 << 5);
13840 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13841 }
13842 }
13843 }
13844 ; tmp_tmp_mem; });
13845 {
13846 SI opval = tmp_tmps;
13847 CPU (h_prefixreg_pre_v32) = opval;
13848 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13849 }
13850 {
13851 BI opval = 1;
13852 SET_H_INSN_PREFIXED_P (opval);
13853 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13854 }
13855 }
13856
13857 abuf->written = written;
13858 #undef FLD
13859 }
13860 NEXT (vpc);
13861
13862 CASE (sem, INSN_DIP_C) : /* dip [PC+] */
13863 {
13864 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13865 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13866 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
13867 int UNUSED written = 0;
13868 IADDR UNUSED pc = abuf->addr;
13869 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
13870
13871 {
13872 {
13873 SI opval = FLD (f_indir_pc__dword);
13874 CPU (h_prefixreg_pre_v32) = opval;
13875 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13876 }
13877 {
13878 BI opval = 1;
13879 SET_H_INSN_PREFIXED_P (opval);
13880 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13881 }
13882 }
13883
13884 #undef FLD
13885 }
13886 NEXT (vpc);
13887
13888 CASE (sem, INSN_ADDI_ACR_B_R) : /* addi-acr.b ${Rs-dfield}.m,${Rd-sfield},ACR */
13889 {
13890 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13891 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13892 #define FLD(f) abuf->fields.sfmt_add_b_r.f
13893 int UNUSED written = 0;
13894 IADDR UNUSED pc = abuf->addr;
13895 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13896
13897 {
13898 {
13899 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 1));
13900 CPU (h_prefixreg_pre_v32) = opval;
13901 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13902 }
13903 {
13904 BI opval = 1;
13905 SET_H_INSN_PREFIXED_P (opval);
13906 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13907 }
13908 }
13909
13910 #undef FLD
13911 }
13912 NEXT (vpc);
13913
13914 CASE (sem, INSN_ADDI_ACR_W_R) : /* addi-acr.w ${Rs-dfield}.m,${Rd-sfield},ACR */
13915 {
13916 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13917 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13918 #define FLD(f) abuf->fields.sfmt_add_b_r.f
13919 int UNUSED written = 0;
13920 IADDR UNUSED pc = abuf->addr;
13921 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13922
13923 {
13924 {
13925 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 2));
13926 CPU (h_prefixreg_pre_v32) = opval;
13927 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13928 }
13929 {
13930 BI opval = 1;
13931 SET_H_INSN_PREFIXED_P (opval);
13932 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13933 }
13934 }
13935
13936 #undef FLD
13937 }
13938 NEXT (vpc);
13939
13940 CASE (sem, INSN_ADDI_ACR_D_R) : /* addi-acr.d ${Rs-dfield}.m,${Rd-sfield},ACR */
13941 {
13942 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13943 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13944 #define FLD(f) abuf->fields.sfmt_add_b_r.f
13945 int UNUSED written = 0;
13946 IADDR UNUSED pc = abuf->addr;
13947 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13948
13949 {
13950 {
13951 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 4));
13952 CPU (h_prefixreg_pre_v32) = opval;
13953 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13954 }
13955 {
13956 BI opval = 1;
13957 SET_H_INSN_PREFIXED_P (opval);
13958 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13959 }
13960 }
13961
13962 #undef FLD
13963 }
13964 NEXT (vpc);
13965
13966 CASE (sem, INSN_BIAP_PC_B_R) : /* biap-pc.b ${Rs-dfield}.m,PC */
13967 {
13968 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13969 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13970 #define FLD(f) abuf->fields.sfmt_addoq.f
13971 int UNUSED written = 0;
13972 IADDR UNUSED pc = abuf->addr;
13973 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13974
13975 {
13976 {
13977 SI opval = ADDSI (ADDSI (pc, 4), MULSI (GET_H_GR (FLD (f_operand2)), 1));
13978 CPU (h_prefixreg_pre_v32) = opval;
13979 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13980 }
13981 {
13982 BI opval = 1;
13983 SET_H_INSN_PREFIXED_P (opval);
13984 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13985 }
13986 }
13987
13988 #undef FLD
13989 }
13990 NEXT (vpc);
13991
13992 CASE (sem, INSN_BIAP_PC_W_R) : /* biap-pc.w ${Rs-dfield}.m,PC */
13993 {
13994 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13995 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13996 #define FLD(f) abuf->fields.sfmt_addoq.f
13997 int UNUSED written = 0;
13998 IADDR UNUSED pc = abuf->addr;
13999 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
14000
14001 {
14002 {
14003 SI opval = ADDSI (ADDSI (pc, 4), MULSI (GET_H_GR (FLD (f_operand2)), 2));
14004 CPU (h_prefixreg_pre_v32) = opval;
14005 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
14006 }
14007 {
14008 BI opval = 1;
14009 SET_H_INSN_PREFIXED_P (opval);
14010 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
14011 }
14012 }
14013
14014 #undef FLD
14015 }
14016 NEXT (vpc);
14017
14018 CASE (sem, INSN_BIAP_PC_D_R) : /* biap-pc.d ${Rs-dfield}.m,PC */
14019 {
14020 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
14021 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14022 #define FLD(f) abuf->fields.sfmt_addoq.f
14023 int UNUSED written = 0;
14024 IADDR UNUSED pc = abuf->addr;
14025 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
14026
14027 {
14028 {
14029 SI opval = ADDSI (ADDSI (pc, 4), MULSI (GET_H_GR (FLD (f_operand2)), 4));
14030 CPU (h_prefixreg_pre_v32) = opval;
14031 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
14032 }
14033 {
14034 BI opval = 1;
14035 SET_H_INSN_PREFIXED_P (opval);
14036 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
14037 }
14038 }
14039
14040 #undef FLD
14041 }
14042 NEXT (vpc);
14043
14044
14045 }
14046 ENDSWITCH (sem) /* End of semantic switch. */
14047
14048 /* At this point `vpc' contains the next insn to execute. */
14049 }
14050
14051 #undef DEFINE_SWITCH
14052 #endif /* DEFINE_SWITCH */
This page took 0.483827 seconds and 5 git commands to generate.