1 /* Simulator instruction semantics for crisv10f.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright 1996-2010 Free Software Foundation, Inc.
7 This file is part of the GNU simulators.
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)
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.
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.
27 /* The labels have the case they have because the enum of insn types
28 is all uppercase and in the non-stdc case the insn symbol is built
29 into the enum name. */
35 { 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 },
248 for (i = 0; labels[i].label != 0; ++i)
251 CPU_IDESC (current_cpu) [labels[i].index].sem_fast_lab = labels[i].label;
253 CPU_IDESC (current_cpu) [labels[i].index].sem_full_lab = labels[i].label;
258 #endif /* DEFINE_LABELS */
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". */
270 #define TRACE_RESULT(cpu, abuf, name, type, val)
274 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
280 /* Branch to next handler without going around main loop. */
281 #define NEXT(vpc) goto * SEM_ARGBUF (vpc) -> semantic.sem_case
282 SWITCH (sem, SEM_ARGBUF (vpc) -> semantic.sem_case)
284 #else /* ! WITH_SCACHE_PBB */
286 #define NEXT(vpc) BREAK (sem)
289 SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_fast_lab)
291 SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_full_lab)
294 SWITCH (sem, SEM_ARGBUF (sc) -> idesc->num)
297 #endif /* ! WITH_SCACHE_PBB */
301 CASE (sem, INSN_X_INVALID) : /* --invalid-- */
303 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
305 #define FLD(f) abuf->fields.sfmt_empty.f
306 int UNUSED written = 0;
307 IADDR UNUSED pc = abuf->addr;
308 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
311 /* Update the recorded pc in the cpu state struct.
312 Only necessary for WITH_SCACHE case, but to avoid the
313 conditional compilation .... */
315 /* Virtual insns have zero size. Overwrite vpc with address of next insn
316 using the default-insn-bitsize spec. When executing insns in parallel
317 we may want to queue the fault and continue execution. */
318 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
319 vpc = sim_engine_invalid_insn (current_cpu, pc, vpc);
326 CASE (sem, INSN_X_AFTER) : /* --after-- */
328 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
329 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
330 #define FLD(f) abuf->fields.sfmt_empty.f
331 int UNUSED written = 0;
332 IADDR UNUSED pc = abuf->addr;
333 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
336 #if WITH_SCACHE_PBB_CRISV10F
337 crisv10f_pbb_after (current_cpu, sem_arg);
345 CASE (sem, INSN_X_BEFORE) : /* --before-- */
347 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
348 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
349 #define FLD(f) abuf->fields.sfmt_empty.f
350 int UNUSED written = 0;
351 IADDR UNUSED pc = abuf->addr;
352 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
355 #if WITH_SCACHE_PBB_CRISV10F
356 crisv10f_pbb_before (current_cpu, sem_arg);
364 CASE (sem, INSN_X_CTI_CHAIN) : /* --cti-chain-- */
366 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
367 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
368 #define FLD(f) abuf->fields.sfmt_empty.f
369 int UNUSED written = 0;
370 IADDR UNUSED pc = abuf->addr;
371 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
374 #if WITH_SCACHE_PBB_CRISV10F
376 vpc = crisv10f_pbb_cti_chain (current_cpu, sem_arg,
377 pbb_br_type, pbb_br_npc);
380 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
381 vpc = crisv10f_pbb_cti_chain (current_cpu, sem_arg,
382 CPU_PBB_BR_TYPE (current_cpu),
383 CPU_PBB_BR_NPC (current_cpu));
392 CASE (sem, INSN_X_CHAIN) : /* --chain-- */
394 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
395 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
396 #define FLD(f) abuf->fields.sfmt_empty.f
397 int UNUSED written = 0;
398 IADDR UNUSED pc = abuf->addr;
399 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
402 #if WITH_SCACHE_PBB_CRISV10F
403 vpc = crisv10f_pbb_chain (current_cpu, sem_arg);
414 CASE (sem, INSN_X_BEGIN) : /* --begin-- */
416 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
417 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
418 #define FLD(f) abuf->fields.sfmt_empty.f
419 int UNUSED written = 0;
420 IADDR UNUSED pc = abuf->addr;
421 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
424 #if WITH_SCACHE_PBB_CRISV10F
425 #if defined DEFINE_SWITCH || defined FAST_P
426 /* In the switch case FAST_P is a constant, allowing several optimizations
427 in any called inline functions. */
428 vpc = crisv10f_pbb_begin (current_cpu, FAST_P);
430 #if 0 /* cgen engine can't handle dynamic fast/full switching yet. */
431 vpc = crisv10f_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
433 vpc = crisv10f_pbb_begin (current_cpu, 0);
443 CASE (sem, INSN_NOP) : /* nop */
445 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
446 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
447 #define FLD(f) abuf->fields.sfmt_empty.f
448 int UNUSED written = 0;
449 IADDR UNUSED pc = abuf->addr;
450 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
455 CPU (h_xbit) = opval;
456 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
460 SET_H_INSN_PREFIXED_P (opval);
461 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
469 CASE (sem, INSN_MOVE_B_R) : /* move.b move.m ${Rs},${Rd} */
471 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
472 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
473 #define FLD(f) abuf->fields.sfmt_add_b_r.f
474 int UNUSED written = 0;
475 IADDR UNUSED pc = abuf->addr;
476 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
480 tmp_newval = GET_H_GR (FLD (f_operand1));
483 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
485 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
486 SET_H_GR (FLD (f_operand2), opval);
487 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
492 BI opval = LTQI (tmp_newval, 0);
493 CPU (h_nbit) = opval;
494 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
497 BI opval = ANDIF (EQQI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
498 CPU (h_zbit) = opval;
499 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
506 CPU (h_xbit) = opval;
507 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
511 SET_H_INSN_PREFIXED_P (opval);
512 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
522 CASE (sem, INSN_MOVE_W_R) : /* move.w move.m ${Rs},${Rd} */
524 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
525 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
526 #define FLD(f) abuf->fields.sfmt_add_b_r.f
527 int UNUSED written = 0;
528 IADDR UNUSED pc = abuf->addr;
529 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
533 tmp_newval = GET_H_GR (FLD (f_operand1));
536 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
538 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
539 SET_H_GR (FLD (f_operand2), opval);
540 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
545 BI opval = LTHI (tmp_newval, 0);
546 CPU (h_nbit) = opval;
547 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
550 BI opval = ANDIF (EQHI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
551 CPU (h_zbit) = opval;
552 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
559 CPU (h_xbit) = opval;
560 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
564 SET_H_INSN_PREFIXED_P (opval);
565 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
575 CASE (sem, INSN_MOVE_D_R) : /* move.d move.m ${Rs},${Rd} */
577 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
578 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
579 #define FLD(f) abuf->fields.sfmt_add_b_r.f
580 int UNUSED written = 0;
581 IADDR UNUSED pc = abuf->addr;
582 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
586 tmp_newval = GET_H_GR (FLD (f_operand1));
588 SI opval = tmp_newval;
589 SET_H_GR (FLD (f_operand2), opval);
590 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
594 BI opval = LTSI (tmp_newval, 0);
595 CPU (h_nbit) = opval;
596 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
599 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
600 CPU (h_zbit) = opval;
601 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
608 CPU (h_xbit) = opval;
609 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
613 SET_H_INSN_PREFIXED_P (opval);
614 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
624 CASE (sem, INSN_MOVEPCR) : /* move.d PC,${Rd} */
626 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
627 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
628 #define FLD(f) abuf->fields.sfmt_moveq.f
629 int UNUSED written = 0;
630 IADDR UNUSED pc = abuf->addr;
632 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
636 tmp_pcval = ADDSI (pc, 2);
638 SI opval = tmp_pcval;
639 SET_H_GR (FLD (f_operand2), opval);
640 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
644 BI opval = LTSI (tmp_pcval, 0);
645 CPU (h_nbit) = opval;
646 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
649 BI opval = ANDIF (EQSI (tmp_pcval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
650 CPU (h_zbit) = opval;
651 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
658 CPU (h_xbit) = opval;
659 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
663 SET_H_INSN_PREFIXED_P (opval);
664 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
670 SEM_BRANCH_FINI (vpc);
675 CASE (sem, INSN_MOVEQ) : /* moveq $i,$Rd */
677 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
678 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
679 #define FLD(f) abuf->fields.sfmt_moveq.f
680 int UNUSED written = 0;
681 IADDR UNUSED pc = abuf->addr;
682 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
686 tmp_newval = FLD (f_s6);
688 SI opval = tmp_newval;
689 SET_H_GR (FLD (f_operand2), opval);
690 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
693 SET_H_NBIT_MOVE (LTSI (tmp_newval, 0));
694 SET_H_ZBIT_MOVE (ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1))));
700 CPU (h_xbit) = opval;
701 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
705 SET_H_INSN_PREFIXED_P (opval);
706 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
716 CASE (sem, INSN_MOVS_B_R) : /* movs.b movs.m ${Rs},${Rd} */
718 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
719 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
720 #define FLD(f) abuf->fields.sfmt_muls_b.f
721 int UNUSED written = 0;
722 IADDR UNUSED pc = abuf->addr;
723 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
728 tmp_tmpops = GET_H_GR (FLD (f_operand1));
729 tmp_newval = EXTQISI (tmp_tmpops);
731 SI opval = tmp_newval;
732 SET_H_GR (FLD (f_operand2), opval);
733 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
737 BI opval = LTSI (tmp_newval, 0);
738 CPU (h_nbit) = opval;
739 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
742 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
743 CPU (h_zbit) = opval;
744 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
751 CPU (h_xbit) = opval;
752 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
756 SET_H_INSN_PREFIXED_P (opval);
757 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
767 CASE (sem, INSN_MOVS_W_R) : /* movs.w movs.m ${Rs},${Rd} */
769 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
770 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
771 #define FLD(f) abuf->fields.sfmt_muls_b.f
772 int UNUSED written = 0;
773 IADDR UNUSED pc = abuf->addr;
774 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
779 tmp_tmpops = GET_H_GR (FLD (f_operand1));
780 tmp_newval = EXTHISI (tmp_tmpops);
782 SI opval = tmp_newval;
783 SET_H_GR (FLD (f_operand2), opval);
784 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
788 BI opval = LTSI (tmp_newval, 0);
789 CPU (h_nbit) = opval;
790 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
793 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
794 CPU (h_zbit) = opval;
795 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
802 CPU (h_xbit) = opval;
803 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
807 SET_H_INSN_PREFIXED_P (opval);
808 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
818 CASE (sem, INSN_MOVU_B_R) : /* movu.b movu.m ${Rs},${Rd} */
820 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
822 #define FLD(f) abuf->fields.sfmt_muls_b.f
823 int UNUSED written = 0;
824 IADDR UNUSED pc = abuf->addr;
825 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
830 tmp_tmpops = GET_H_GR (FLD (f_operand1));
831 tmp_newval = ZEXTQISI (tmp_tmpops);
833 SI opval = tmp_newval;
834 SET_H_GR (FLD (f_operand2), opval);
835 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
839 BI opval = LTSI (tmp_newval, 0);
840 CPU (h_nbit) = opval;
841 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
844 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
845 CPU (h_zbit) = opval;
846 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
853 CPU (h_xbit) = opval;
854 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
858 SET_H_INSN_PREFIXED_P (opval);
859 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
869 CASE (sem, INSN_MOVU_W_R) : /* movu.w movu.m ${Rs},${Rd} */
871 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
872 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
873 #define FLD(f) abuf->fields.sfmt_muls_b.f
874 int UNUSED written = 0;
875 IADDR UNUSED pc = abuf->addr;
876 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
881 tmp_tmpops = GET_H_GR (FLD (f_operand1));
882 tmp_newval = ZEXTHISI (tmp_tmpops);
884 SI opval = tmp_newval;
885 SET_H_GR (FLD (f_operand2), opval);
886 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
890 BI opval = LTSI (tmp_newval, 0);
891 CPU (h_nbit) = opval;
892 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
895 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
896 CPU (h_zbit) = opval;
897 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
904 CPU (h_xbit) = opval;
905 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
909 SET_H_INSN_PREFIXED_P (opval);
910 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
920 CASE (sem, INSN_MOVECBR) : /* move.b ${sconst8},${Rd} */
922 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
923 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
924 #define FLD(f) abuf->fields.sfmt_addcbr.f
925 int UNUSED written = 0;
926 IADDR UNUSED pc = abuf->addr;
927 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
931 tmp_newval = FLD (f_indir_pc__byte);
934 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
936 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
937 SET_H_GR (FLD (f_operand2), opval);
938 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
943 BI opval = LTQI (tmp_newval, 0);
944 CPU (h_nbit) = opval;
945 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
948 BI opval = ANDIF (EQQI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
949 CPU (h_zbit) = opval;
950 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
957 CPU (h_xbit) = opval;
958 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
962 SET_H_INSN_PREFIXED_P (opval);
963 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
973 CASE (sem, INSN_MOVECWR) : /* move.w ${sconst16},${Rd} */
975 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
976 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
977 #define FLD(f) abuf->fields.sfmt_addcwr.f
978 int UNUSED written = 0;
979 IADDR UNUSED pc = abuf->addr;
980 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
984 tmp_newval = FLD (f_indir_pc__word);
987 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
989 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
990 SET_H_GR (FLD (f_operand2), opval);
991 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
996 BI opval = LTHI (tmp_newval, 0);
997 CPU (h_nbit) = opval;
998 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1001 BI opval = ANDIF (EQHI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1002 CPU (h_zbit) = opval;
1003 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1005 SET_H_CBIT_MOVE (0);
1006 SET_H_VBIT_MOVE (0);
1010 CPU (h_xbit) = opval;
1011 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1015 SET_H_INSN_PREFIXED_P (opval);
1016 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1026 CASE (sem, INSN_MOVECDR) : /* move.d ${const32},${Rd} */
1028 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1029 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1030 #define FLD(f) abuf->fields.sfmt_bound_cd.f
1031 int UNUSED written = 0;
1032 IADDR UNUSED pc = abuf->addr;
1033 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
1037 tmp_newval = FLD (f_indir_pc__dword);
1039 SI opval = tmp_newval;
1040 SET_H_GR (FLD (f_operand2), opval);
1041 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1045 BI opval = LTSI (tmp_newval, 0);
1046 CPU (h_nbit) = opval;
1047 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1050 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1051 CPU (h_zbit) = opval;
1052 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1054 SET_H_CBIT_MOVE (0);
1055 SET_H_VBIT_MOVE (0);
1059 CPU (h_xbit) = opval;
1060 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1064 SET_H_INSN_PREFIXED_P (opval);
1065 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1075 CASE (sem, INSN_MOVSCBR) : /* movs.b ${sconst8},${Rd} */
1077 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1078 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1079 #define FLD(f) abuf->fields.sfmt_bound_cb.f
1080 int UNUSED written = 0;
1081 IADDR UNUSED pc = abuf->addr;
1082 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1086 tmp_newval = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
1088 SI opval = tmp_newval;
1089 SET_H_GR (FLD (f_operand2), opval);
1090 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1094 BI opval = LTSI (tmp_newval, 0);
1095 CPU (h_nbit) = opval;
1096 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1099 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1100 CPU (h_zbit) = opval;
1101 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1103 SET_H_CBIT_MOVE (0);
1104 SET_H_VBIT_MOVE (0);
1108 CPU (h_xbit) = opval;
1109 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1113 SET_H_INSN_PREFIXED_P (opval);
1114 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1124 CASE (sem, INSN_MOVSCWR) : /* movs.w ${sconst16},${Rd} */
1126 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1127 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1128 #define FLD(f) abuf->fields.sfmt_bound_cw.f
1129 int UNUSED written = 0;
1130 IADDR UNUSED pc = abuf->addr;
1131 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1135 tmp_newval = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
1137 SI opval = tmp_newval;
1138 SET_H_GR (FLD (f_operand2), opval);
1139 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1143 BI opval = LTSI (tmp_newval, 0);
1144 CPU (h_nbit) = opval;
1145 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1148 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1149 CPU (h_zbit) = opval;
1150 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1152 SET_H_CBIT_MOVE (0);
1153 SET_H_VBIT_MOVE (0);
1157 CPU (h_xbit) = opval;
1158 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1162 SET_H_INSN_PREFIXED_P (opval);
1163 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1173 CASE (sem, INSN_MOVUCBR) : /* movu.b ${uconst8},${Rd} */
1175 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1176 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1177 #define FLD(f) abuf->fields.sfmt_bound_cb.f
1178 int UNUSED written = 0;
1179 IADDR UNUSED pc = abuf->addr;
1180 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1184 tmp_newval = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
1186 SI opval = tmp_newval;
1187 SET_H_GR (FLD (f_operand2), opval);
1188 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1192 BI opval = LTSI (tmp_newval, 0);
1193 CPU (h_nbit) = opval;
1194 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1197 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1198 CPU (h_zbit) = opval;
1199 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1201 SET_H_CBIT_MOVE (0);
1202 SET_H_VBIT_MOVE (0);
1206 CPU (h_xbit) = opval;
1207 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1211 SET_H_INSN_PREFIXED_P (opval);
1212 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1222 CASE (sem, INSN_MOVUCWR) : /* movu.w ${uconst16},${Rd} */
1224 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1225 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1226 #define FLD(f) abuf->fields.sfmt_bound_cw.f
1227 int UNUSED written = 0;
1228 IADDR UNUSED pc = abuf->addr;
1229 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1233 tmp_newval = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
1235 SI opval = tmp_newval;
1236 SET_H_GR (FLD (f_operand2), opval);
1237 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1241 BI opval = LTSI (tmp_newval, 0);
1242 CPU (h_nbit) = opval;
1243 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1246 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
1247 CPU (h_zbit) = opval;
1248 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1250 SET_H_CBIT_MOVE (0);
1251 SET_H_VBIT_MOVE (0);
1255 CPU (h_xbit) = opval;
1256 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1260 SET_H_INSN_PREFIXED_P (opval);
1261 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1271 CASE (sem, INSN_ADDQ) : /* addq $j,$Rd */
1273 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1274 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1275 #define FLD(f) abuf->fields.sfmt_addq.f
1276 int UNUSED written = 0;
1277 IADDR UNUSED pc = abuf->addr;
1278 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1285 tmp_tmpops = FLD (f_u6);
1286 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1287 tmp_carry = CPU (h_cbit);
1288 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1290 SI opval = tmp_newval;
1291 SET_H_GR (FLD (f_operand2), opval);
1292 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1296 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
1297 CPU (h_cbit) = opval;
1298 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1301 BI opval = LTSI (tmp_newval, 0);
1302 CPU (h_nbit) = opval;
1303 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1306 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1307 CPU (h_zbit) = opval;
1308 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1311 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
1312 CPU (h_vbit) = opval;
1313 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1318 CPU (h_xbit) = opval;
1319 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1323 SET_H_INSN_PREFIXED_P (opval);
1324 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1334 CASE (sem, INSN_SUBQ) : /* subq $j,$Rd */
1336 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1337 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1338 #define FLD(f) abuf->fields.sfmt_addq.f
1339 int UNUSED written = 0;
1340 IADDR UNUSED pc = abuf->addr;
1341 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1348 tmp_tmpops = FLD (f_u6);
1349 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1350 tmp_carry = CPU (h_cbit);
1351 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1353 SI opval = tmp_newval;
1354 SET_H_GR (FLD (f_operand2), opval);
1355 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1359 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
1360 CPU (h_cbit) = opval;
1361 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1364 BI opval = LTSI (tmp_newval, 0);
1365 CPU (h_nbit) = opval;
1366 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1369 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1370 CPU (h_zbit) = opval;
1371 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1374 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
1375 CPU (h_vbit) = opval;
1376 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1381 CPU (h_xbit) = opval;
1382 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1386 SET_H_INSN_PREFIXED_P (opval);
1387 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1397 CASE (sem, INSN_CMP_R_B_R) : /* cmp-r.b $Rs,$Rd */
1399 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1400 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1401 #define FLD(f) abuf->fields.sfmt_add_b_r.f
1402 int UNUSED written = 0;
1403 IADDR UNUSED pc = abuf->addr;
1404 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1411 tmp_tmpops = GET_H_GR (FLD (f_operand1));
1412 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1413 tmp_carry = CPU (h_cbit);
1414 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1418 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
1419 CPU (h_cbit) = opval;
1420 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1423 BI opval = LTQI (tmp_newval, 0);
1424 CPU (h_nbit) = opval;
1425 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1428 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1429 CPU (h_zbit) = opval;
1430 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1433 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
1434 CPU (h_vbit) = opval;
1435 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1440 CPU (h_xbit) = opval;
1441 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1445 SET_H_INSN_PREFIXED_P (opval);
1446 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1456 CASE (sem, INSN_CMP_R_W_R) : /* cmp-r.w $Rs,$Rd */
1458 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1459 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1460 #define FLD(f) abuf->fields.sfmt_add_b_r.f
1461 int UNUSED written = 0;
1462 IADDR UNUSED pc = abuf->addr;
1463 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1470 tmp_tmpops = GET_H_GR (FLD (f_operand1));
1471 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1472 tmp_carry = CPU (h_cbit);
1473 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1477 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
1478 CPU (h_cbit) = opval;
1479 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1482 BI opval = LTHI (tmp_newval, 0);
1483 CPU (h_nbit) = opval;
1484 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1487 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1488 CPU (h_zbit) = opval;
1489 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1492 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
1493 CPU (h_vbit) = opval;
1494 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1499 CPU (h_xbit) = opval;
1500 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1504 SET_H_INSN_PREFIXED_P (opval);
1505 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1515 CASE (sem, INSN_CMP_R_D_R) : /* cmp-r.d $Rs,$Rd */
1517 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1518 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1519 #define FLD(f) abuf->fields.sfmt_add_b_r.f
1520 int UNUSED written = 0;
1521 IADDR UNUSED pc = abuf->addr;
1522 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1529 tmp_tmpops = GET_H_GR (FLD (f_operand1));
1530 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1531 tmp_carry = CPU (h_cbit);
1532 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1536 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
1537 CPU (h_cbit) = opval;
1538 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1541 BI opval = LTSI (tmp_newval, 0);
1542 CPU (h_nbit) = opval;
1543 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1546 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1547 CPU (h_zbit) = opval;
1548 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1551 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
1552 CPU (h_vbit) = opval;
1553 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1558 CPU (h_xbit) = opval;
1559 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1563 SET_H_INSN_PREFIXED_P (opval);
1564 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1574 CASE (sem, INSN_CMP_M_B_M) : /* cmp-m.b [${Rs}${inc}],${Rd} */
1576 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1577 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1578 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
1579 int UNUSED written = 0;
1580 IADDR UNUSED pc = abuf->addr;
1581 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1588 tmp_tmpops = ({ SI tmp_addr;
1591 tmp_postinc = FLD (f_memmode);
1592 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
1593 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
1594 ; if (NEBI (tmp_postinc, 0)) {
1596 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
1597 tmp_addr = ADDSI (tmp_addr, 1);
1600 SI opval = tmp_addr;
1601 SET_H_GR (FLD (f_operand1), opval);
1602 written |= (1 << 9);
1603 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1608 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1609 tmp_carry = CPU (h_cbit);
1610 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1614 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
1615 CPU (h_cbit) = opval;
1616 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1619 BI opval = LTQI (tmp_newval, 0);
1620 CPU (h_nbit) = opval;
1621 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1624 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1625 CPU (h_zbit) = opval;
1626 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1629 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
1630 CPU (h_vbit) = opval;
1631 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1636 CPU (h_xbit) = opval;
1637 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1641 SET_H_INSN_PREFIXED_P (opval);
1642 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1648 abuf->written = written;
1653 CASE (sem, INSN_CMP_M_W_M) : /* cmp-m.w [${Rs}${inc}],${Rd} */
1655 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1656 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1657 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
1658 int UNUSED written = 0;
1659 IADDR UNUSED pc = abuf->addr;
1660 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1667 tmp_tmpops = ({ SI tmp_addr;
1670 tmp_postinc = FLD (f_memmode);
1671 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
1672 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
1673 ; if (NEBI (tmp_postinc, 0)) {
1675 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
1676 tmp_addr = ADDSI (tmp_addr, 2);
1679 SI opval = tmp_addr;
1680 SET_H_GR (FLD (f_operand1), opval);
1681 written |= (1 << 9);
1682 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1687 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1688 tmp_carry = CPU (h_cbit);
1689 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1693 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
1694 CPU (h_cbit) = opval;
1695 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1698 BI opval = LTHI (tmp_newval, 0);
1699 CPU (h_nbit) = opval;
1700 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1703 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1704 CPU (h_zbit) = opval;
1705 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1708 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
1709 CPU (h_vbit) = opval;
1710 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1715 CPU (h_xbit) = opval;
1716 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1720 SET_H_INSN_PREFIXED_P (opval);
1721 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1727 abuf->written = written;
1732 CASE (sem, INSN_CMP_M_D_M) : /* cmp-m.d [${Rs}${inc}],${Rd} */
1734 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1736 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
1737 int UNUSED written = 0;
1738 IADDR UNUSED pc = abuf->addr;
1739 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1746 tmp_tmpops = ({ SI tmp_addr;
1749 tmp_postinc = FLD (f_memmode);
1750 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
1751 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
1752 ; if (NEBI (tmp_postinc, 0)) {
1754 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
1755 tmp_addr = ADDSI (tmp_addr, 4);
1758 SI opval = tmp_addr;
1759 SET_H_GR (FLD (f_operand1), opval);
1760 written |= (1 << 9);
1761 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1766 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1767 tmp_carry = CPU (h_cbit);
1768 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1772 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
1773 CPU (h_cbit) = opval;
1774 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1777 BI opval = LTSI (tmp_newval, 0);
1778 CPU (h_nbit) = opval;
1779 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1782 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1783 CPU (h_zbit) = opval;
1784 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1787 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
1788 CPU (h_vbit) = opval;
1789 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1794 CPU (h_xbit) = opval;
1795 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1799 SET_H_INSN_PREFIXED_P (opval);
1800 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1806 abuf->written = written;
1811 CASE (sem, INSN_CMPCBR) : /* cmp.b $sconst8,$Rd */
1813 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1814 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1815 #define FLD(f) abuf->fields.sfmt_bound_cb.f
1816 int UNUSED written = 0;
1817 IADDR UNUSED pc = abuf->addr;
1818 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1825 tmp_tmpops = TRUNCSIQI (FLD (f_indir_pc__byte));
1826 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1827 tmp_carry = CPU (h_cbit);
1828 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1832 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
1833 CPU (h_cbit) = opval;
1834 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1837 BI opval = LTQI (tmp_newval, 0);
1838 CPU (h_nbit) = opval;
1839 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1842 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1843 CPU (h_zbit) = opval;
1844 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1847 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
1848 CPU (h_vbit) = opval;
1849 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1854 CPU (h_xbit) = opval;
1855 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1859 SET_H_INSN_PREFIXED_P (opval);
1860 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1870 CASE (sem, INSN_CMPCWR) : /* cmp.w $sconst16,$Rd */
1872 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1873 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1874 #define FLD(f) abuf->fields.sfmt_bound_cw.f
1875 int UNUSED written = 0;
1876 IADDR UNUSED pc = abuf->addr;
1877 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1884 tmp_tmpops = TRUNCSIHI (FLD (f_indir_pc__word));
1885 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1886 tmp_carry = CPU (h_cbit);
1887 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1891 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
1892 CPU (h_cbit) = opval;
1893 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1896 BI opval = LTHI (tmp_newval, 0);
1897 CPU (h_nbit) = opval;
1898 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1901 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1902 CPU (h_zbit) = opval;
1903 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1906 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
1907 CPU (h_vbit) = opval;
1908 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1913 CPU (h_xbit) = opval;
1914 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1918 SET_H_INSN_PREFIXED_P (opval);
1919 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1929 CASE (sem, INSN_CMPCDR) : /* cmp.d $const32,$Rd */
1931 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1933 #define FLD(f) abuf->fields.sfmt_bound_cd.f
1934 int UNUSED written = 0;
1935 IADDR UNUSED pc = abuf->addr;
1936 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
1943 tmp_tmpops = FLD (f_indir_pc__dword);
1944 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
1945 tmp_carry = CPU (h_cbit);
1946 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
1950 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
1951 CPU (h_cbit) = opval;
1952 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1955 BI opval = LTSI (tmp_newval, 0);
1956 CPU (h_nbit) = opval;
1957 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1960 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
1961 CPU (h_zbit) = opval;
1962 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1965 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
1966 CPU (h_vbit) = opval;
1967 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1972 CPU (h_xbit) = opval;
1973 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
1977 SET_H_INSN_PREFIXED_P (opval);
1978 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
1988 CASE (sem, INSN_CMPQ) : /* cmpq $i,$Rd */
1990 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1991 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1992 #define FLD(f) abuf->fields.sfmt_andq.f
1993 int UNUSED written = 0;
1994 IADDR UNUSED pc = abuf->addr;
1995 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2002 tmp_tmpops = FLD (f_s6);
2003 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2004 tmp_carry = CPU (h_cbit);
2005 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2009 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2010 CPU (h_cbit) = opval;
2011 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2014 BI opval = LTSI (tmp_newval, 0);
2015 CPU (h_nbit) = opval;
2016 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2019 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2020 CPU (h_zbit) = opval;
2021 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2024 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2025 CPU (h_vbit) = opval;
2026 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2031 CPU (h_xbit) = opval;
2032 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2036 SET_H_INSN_PREFIXED_P (opval);
2037 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2047 CASE (sem, INSN_CMPS_M_B_M) : /* cmps-m.b [${Rs}${inc}],$Rd */
2049 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2050 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2051 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2052 int UNUSED written = 0;
2053 IADDR UNUSED pc = abuf->addr;
2054 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2061 tmp_tmpops = EXTQISI (({ SI tmp_addr;
2064 tmp_postinc = FLD (f_memmode);
2065 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2066 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
2067 ; if (NEBI (tmp_postinc, 0)) {
2069 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2070 tmp_addr = ADDSI (tmp_addr, 1);
2073 SI opval = tmp_addr;
2074 SET_H_GR (FLD (f_operand1), opval);
2075 written |= (1 << 9);
2076 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2081 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2082 tmp_carry = CPU (h_cbit);
2083 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2087 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2088 CPU (h_cbit) = opval;
2089 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2092 BI opval = LTSI (tmp_newval, 0);
2093 CPU (h_nbit) = opval;
2094 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2097 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2098 CPU (h_zbit) = opval;
2099 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2102 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2103 CPU (h_vbit) = opval;
2104 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2109 CPU (h_xbit) = opval;
2110 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2114 SET_H_INSN_PREFIXED_P (opval);
2115 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2121 abuf->written = written;
2126 CASE (sem, INSN_CMPS_M_W_M) : /* cmps-m.w [${Rs}${inc}],$Rd */
2128 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2129 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2130 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2131 int UNUSED written = 0;
2132 IADDR UNUSED pc = abuf->addr;
2133 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2140 tmp_tmpops = EXTHISI (({ SI tmp_addr;
2143 tmp_postinc = FLD (f_memmode);
2144 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2145 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
2146 ; if (NEBI (tmp_postinc, 0)) {
2148 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2149 tmp_addr = ADDSI (tmp_addr, 2);
2152 SI opval = tmp_addr;
2153 SET_H_GR (FLD (f_operand1), opval);
2154 written |= (1 << 9);
2155 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2160 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2161 tmp_carry = CPU (h_cbit);
2162 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2166 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2167 CPU (h_cbit) = opval;
2168 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2171 BI opval = LTSI (tmp_newval, 0);
2172 CPU (h_nbit) = opval;
2173 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2176 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2177 CPU (h_zbit) = opval;
2178 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2181 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2182 CPU (h_vbit) = opval;
2183 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2188 CPU (h_xbit) = opval;
2189 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2193 SET_H_INSN_PREFIXED_P (opval);
2194 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2200 abuf->written = written;
2205 CASE (sem, INSN_CMPSCBR) : /* [${Rs}${inc}],$Rd */
2207 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2208 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2209 #define FLD(f) abuf->fields.sfmt_bound_cb.f
2210 int UNUSED written = 0;
2211 IADDR UNUSED pc = abuf->addr;
2212 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2219 tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
2220 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2221 tmp_carry = CPU (h_cbit);
2222 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2226 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2227 CPU (h_cbit) = opval;
2228 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2231 BI opval = LTSI (tmp_newval, 0);
2232 CPU (h_nbit) = opval;
2233 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2236 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2237 CPU (h_zbit) = opval;
2238 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2241 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2242 CPU (h_vbit) = opval;
2243 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2248 CPU (h_xbit) = opval;
2249 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2253 SET_H_INSN_PREFIXED_P (opval);
2254 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2264 CASE (sem, INSN_CMPSCWR) : /* [${Rs}${inc}],$Rd */
2266 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2268 #define FLD(f) abuf->fields.sfmt_bound_cw.f
2269 int UNUSED written = 0;
2270 IADDR UNUSED pc = abuf->addr;
2271 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2278 tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
2279 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2280 tmp_carry = CPU (h_cbit);
2281 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2285 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2286 CPU (h_cbit) = opval;
2287 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2290 BI opval = LTSI (tmp_newval, 0);
2291 CPU (h_nbit) = opval;
2292 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2295 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2296 CPU (h_zbit) = opval;
2297 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2300 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2301 CPU (h_vbit) = opval;
2302 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2307 CPU (h_xbit) = opval;
2308 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2312 SET_H_INSN_PREFIXED_P (opval);
2313 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2323 CASE (sem, INSN_CMPU_M_B_M) : /* cmpu-m.b [${Rs}${inc}],$Rd */
2325 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2326 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2327 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2328 int UNUSED written = 0;
2329 IADDR UNUSED pc = abuf->addr;
2330 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2337 tmp_tmpops = ZEXTQISI (({ SI tmp_addr;
2340 tmp_postinc = FLD (f_memmode);
2341 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2342 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
2343 ; if (NEBI (tmp_postinc, 0)) {
2345 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2346 tmp_addr = ADDSI (tmp_addr, 1);
2349 SI opval = tmp_addr;
2350 SET_H_GR (FLD (f_operand1), opval);
2351 written |= (1 << 9);
2352 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2357 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2358 tmp_carry = CPU (h_cbit);
2359 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2363 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2364 CPU (h_cbit) = opval;
2365 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2368 BI opval = LTSI (tmp_newval, 0);
2369 CPU (h_nbit) = opval;
2370 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2373 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2374 CPU (h_zbit) = opval;
2375 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2378 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2379 CPU (h_vbit) = opval;
2380 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2385 CPU (h_xbit) = opval;
2386 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2390 SET_H_INSN_PREFIXED_P (opval);
2391 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2397 abuf->written = written;
2402 CASE (sem, INSN_CMPU_M_W_M) : /* cmpu-m.w [${Rs}${inc}],$Rd */
2404 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2405 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2406 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2407 int UNUSED written = 0;
2408 IADDR UNUSED pc = abuf->addr;
2409 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2416 tmp_tmpops = ZEXTHISI (({ SI tmp_addr;
2419 tmp_postinc = FLD (f_memmode);
2420 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2421 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
2422 ; if (NEBI (tmp_postinc, 0)) {
2424 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2425 tmp_addr = ADDSI (tmp_addr, 2);
2428 SI opval = tmp_addr;
2429 SET_H_GR (FLD (f_operand1), opval);
2430 written |= (1 << 9);
2431 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2436 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2437 tmp_carry = CPU (h_cbit);
2438 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2442 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2443 CPU (h_cbit) = opval;
2444 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2447 BI opval = LTSI (tmp_newval, 0);
2448 CPU (h_nbit) = opval;
2449 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2452 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2453 CPU (h_zbit) = opval;
2454 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2457 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2458 CPU (h_vbit) = opval;
2459 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2464 CPU (h_xbit) = opval;
2465 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2469 SET_H_INSN_PREFIXED_P (opval);
2470 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2476 abuf->written = written;
2481 CASE (sem, INSN_CMPUCBR) : /* [${Rs}${inc}],$Rd */
2483 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2484 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2485 #define FLD(f) abuf->fields.sfmt_bound_cb.f
2486 int UNUSED written = 0;
2487 IADDR UNUSED pc = abuf->addr;
2488 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2495 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
2496 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2497 tmp_carry = CPU (h_cbit);
2498 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2502 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2503 CPU (h_cbit) = opval;
2504 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2507 BI opval = LTSI (tmp_newval, 0);
2508 CPU (h_nbit) = opval;
2509 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2512 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2513 CPU (h_zbit) = opval;
2514 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2517 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2518 CPU (h_vbit) = opval;
2519 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2524 CPU (h_xbit) = opval;
2525 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2529 SET_H_INSN_PREFIXED_P (opval);
2530 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2540 CASE (sem, INSN_CMPUCWR) : /* [${Rs}${inc}],$Rd */
2542 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2543 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2544 #define FLD(f) abuf->fields.sfmt_bound_cw.f
2545 int UNUSED written = 0;
2546 IADDR UNUSED pc = abuf->addr;
2547 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2554 tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
2555 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
2556 tmp_carry = CPU (h_cbit);
2557 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
2561 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
2562 CPU (h_cbit) = opval;
2563 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2566 BI opval = LTSI (tmp_newval, 0);
2567 CPU (h_nbit) = opval;
2568 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2571 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
2572 CPU (h_zbit) = opval;
2573 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2576 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
2577 CPU (h_vbit) = opval;
2578 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
2583 CPU (h_xbit) = opval;
2584 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2588 SET_H_INSN_PREFIXED_P (opval);
2589 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2599 CASE (sem, INSN_MOVE_M_B_M) : /* move-m.b [${Rs}${inc}],${Rd} */
2601 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2602 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2603 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2604 int UNUSED written = 0;
2605 IADDR UNUSED pc = abuf->addr;
2606 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2610 tmp_tmp = ({ SI tmp_addr;
2613 tmp_postinc = FLD (f_memmode);
2614 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2615 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
2616 ; if (NEBI (tmp_postinc, 0)) {
2618 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2619 tmp_addr = ADDSI (tmp_addr, 1);
2622 SI opval = tmp_addr;
2623 SET_H_GR (FLD (f_operand1), opval);
2624 written |= (1 << 10);
2625 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2632 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
2634 SI opval = ORSI (ANDSI (tmp_tmp, 255), ANDSI (tmp_oldregval, 0xffffff00));
2635 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
2636 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2641 BI opval = LTQI (tmp_tmp, 0);
2642 CPU (h_nbit) = opval;
2643 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2646 BI opval = ANDIF (EQQI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
2647 CPU (h_zbit) = opval;
2648 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2650 SET_H_CBIT_MOVE (0);
2651 SET_H_VBIT_MOVE (0);
2655 CPU (h_xbit) = opval;
2656 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2660 SET_H_INSN_PREFIXED_P (opval);
2661 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2667 abuf->written = written;
2672 CASE (sem, INSN_MOVE_M_W_M) : /* move-m.w [${Rs}${inc}],${Rd} */
2674 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2675 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2676 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2677 int UNUSED written = 0;
2678 IADDR UNUSED pc = abuf->addr;
2679 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2683 tmp_tmp = ({ SI tmp_addr;
2686 tmp_postinc = FLD (f_memmode);
2687 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2688 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
2689 ; if (NEBI (tmp_postinc, 0)) {
2691 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2692 tmp_addr = ADDSI (tmp_addr, 2);
2695 SI opval = tmp_addr;
2696 SET_H_GR (FLD (f_operand1), opval);
2697 written |= (1 << 10);
2698 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2705 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
2707 SI opval = ORSI (ANDSI (tmp_tmp, 65535), ANDSI (tmp_oldregval, 0xffff0000));
2708 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
2709 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2714 BI opval = LTHI (tmp_tmp, 0);
2715 CPU (h_nbit) = opval;
2716 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2719 BI opval = ANDIF (EQHI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
2720 CPU (h_zbit) = opval;
2721 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2723 SET_H_CBIT_MOVE (0);
2724 SET_H_VBIT_MOVE (0);
2728 CPU (h_xbit) = opval;
2729 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2733 SET_H_INSN_PREFIXED_P (opval);
2734 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2740 abuf->written = written;
2745 CASE (sem, INSN_MOVE_M_D_M) : /* move-m.d [${Rs}${inc}],${Rd} */
2747 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2748 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2749 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2750 int UNUSED written = 0;
2751 IADDR UNUSED pc = abuf->addr;
2752 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2756 tmp_tmp = ({ SI tmp_addr;
2759 tmp_postinc = FLD (f_memmode);
2760 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2761 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
2762 ; if (NEBI (tmp_postinc, 0)) {
2764 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2765 tmp_addr = ADDSI (tmp_addr, 4);
2768 SI opval = tmp_addr;
2769 SET_H_GR (FLD (f_operand1), opval);
2770 written |= (1 << 9);
2771 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2778 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
2779 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2783 BI opval = LTSI (tmp_tmp, 0);
2784 CPU (h_nbit) = opval;
2785 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2788 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
2789 CPU (h_zbit) = opval;
2790 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2792 SET_H_CBIT_MOVE (0);
2793 SET_H_VBIT_MOVE (0);
2797 CPU (h_xbit) = opval;
2798 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2802 SET_H_INSN_PREFIXED_P (opval);
2803 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2809 abuf->written = written;
2814 CASE (sem, INSN_MOVS_M_B_M) : /* movs-m.b [${Rs}${inc}],${Rd} */
2816 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2818 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2819 int UNUSED written = 0;
2820 IADDR UNUSED pc = abuf->addr;
2821 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2825 tmp_tmp = EXTQISI (({ SI tmp_addr;
2828 tmp_postinc = FLD (f_memmode);
2829 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2830 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
2831 ; if (NEBI (tmp_postinc, 0)) {
2833 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2834 tmp_addr = ADDSI (tmp_addr, 1);
2837 SI opval = tmp_addr;
2838 SET_H_GR (FLD (f_operand1), opval);
2839 written |= (1 << 8);
2840 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2845 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
2848 SET_H_GR (FLD (f_operand1), opval);
2849 written |= (1 << 8);
2850 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2855 SET_H_GR (FLD (f_operand2), opval);
2856 written |= (1 << 7);
2857 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2862 BI opval = LTSI (tmp_tmp, 0);
2863 CPU (h_nbit) = opval;
2864 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2867 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
2868 CPU (h_zbit) = opval;
2869 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2871 SET_H_CBIT_MOVE (0);
2872 SET_H_VBIT_MOVE (0);
2876 CPU (h_xbit) = opval;
2877 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2881 SET_H_INSN_PREFIXED_P (opval);
2882 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2888 abuf->written = written;
2893 CASE (sem, INSN_MOVS_M_W_M) : /* movs-m.w [${Rs}${inc}],${Rd} */
2895 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2896 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2897 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2898 int UNUSED written = 0;
2899 IADDR UNUSED pc = abuf->addr;
2900 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2904 tmp_tmp = EXTHISI (({ SI tmp_addr;
2907 tmp_postinc = FLD (f_memmode);
2908 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2909 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
2910 ; if (NEBI (tmp_postinc, 0)) {
2912 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2913 tmp_addr = ADDSI (tmp_addr, 2);
2916 SI opval = tmp_addr;
2917 SET_H_GR (FLD (f_operand1), opval);
2918 written |= (1 << 8);
2919 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2924 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
2927 SET_H_GR (FLD (f_operand1), opval);
2928 written |= (1 << 8);
2929 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2934 SET_H_GR (FLD (f_operand2), opval);
2935 written |= (1 << 7);
2936 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2941 BI opval = LTSI (tmp_tmp, 0);
2942 CPU (h_nbit) = opval;
2943 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2946 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
2947 CPU (h_zbit) = opval;
2948 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2950 SET_H_CBIT_MOVE (0);
2951 SET_H_VBIT_MOVE (0);
2955 CPU (h_xbit) = opval;
2956 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
2960 SET_H_INSN_PREFIXED_P (opval);
2961 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
2967 abuf->written = written;
2972 CASE (sem, INSN_MOVU_M_B_M) : /* movu-m.b [${Rs}${inc}],${Rd} */
2974 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2975 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2976 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2977 int UNUSED written = 0;
2978 IADDR UNUSED pc = abuf->addr;
2979 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2983 tmp_tmp = ZEXTQISI (({ SI tmp_addr;
2986 tmp_postinc = FLD (f_memmode);
2987 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
2988 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
2989 ; if (NEBI (tmp_postinc, 0)) {
2991 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
2992 tmp_addr = ADDSI (tmp_addr, 1);
2995 SI opval = tmp_addr;
2996 SET_H_GR (FLD (f_operand1), opval);
2997 written |= (1 << 8);
2998 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3003 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
3006 SET_H_GR (FLD (f_operand1), opval);
3007 written |= (1 << 8);
3008 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3013 SET_H_GR (FLD (f_operand2), opval);
3014 written |= (1 << 7);
3015 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3020 BI opval = LTSI (tmp_tmp, 0);
3021 CPU (h_nbit) = opval;
3022 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
3025 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
3026 CPU (h_zbit) = opval;
3027 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
3029 SET_H_CBIT_MOVE (0);
3030 SET_H_VBIT_MOVE (0);
3034 CPU (h_xbit) = opval;
3035 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3039 SET_H_INSN_PREFIXED_P (opval);
3040 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3046 abuf->written = written;
3051 CASE (sem, INSN_MOVU_M_W_M) : /* movu-m.w [${Rs}${inc}],${Rd} */
3053 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3054 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3055 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
3056 int UNUSED written = 0;
3057 IADDR UNUSED pc = abuf->addr;
3058 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3062 tmp_tmp = ZEXTHISI (({ SI tmp_addr;
3065 tmp_postinc = FLD (f_memmode);
3066 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3067 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
3068 ; if (NEBI (tmp_postinc, 0)) {
3070 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3071 tmp_addr = ADDSI (tmp_addr, 2);
3074 SI opval = tmp_addr;
3075 SET_H_GR (FLD (f_operand1), opval);
3076 written |= (1 << 8);
3077 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3082 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
3085 SET_H_GR (FLD (f_operand1), opval);
3086 written |= (1 << 8);
3087 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3092 SET_H_GR (FLD (f_operand2), opval);
3093 written |= (1 << 7);
3094 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3099 BI opval = LTSI (tmp_tmp, 0);
3100 CPU (h_nbit) = opval;
3101 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
3104 BI opval = ANDIF (EQSI (tmp_tmp, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
3105 CPU (h_zbit) = opval;
3106 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
3108 SET_H_CBIT_MOVE (0);
3109 SET_H_VBIT_MOVE (0);
3113 CPU (h_xbit) = opval;
3114 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3118 SET_H_INSN_PREFIXED_P (opval);
3119 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3125 abuf->written = written;
3130 CASE (sem, INSN_MOVE_R_SPRV10) : /* move ${Rs},${Pd} */
3132 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3133 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3134 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
3135 int UNUSED written = 0;
3136 IADDR UNUSED pc = abuf->addr;
3137 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3142 tmp_tmp = GET_H_GR (FLD (f_operand1));
3143 tmp_rno = FLD (f_operand2);
3144 if (ORIF (ORIF (EQSI (tmp_rno, 0), EQSI (tmp_rno, 1)), ORIF (EQSI (tmp_rno, 4), EQSI (tmp_rno, 8)))) {
3145 cgen_rtx_error (current_cpu, "move-r-spr: trying to set a read-only special register");
3150 SET_H_SR (FLD (f_operand2), opval);
3151 written |= (1 << 2);
3152 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3158 CPU (h_xbit) = opval;
3159 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3163 SET_H_INSN_PREFIXED_P (opval);
3164 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3169 abuf->written = written;
3174 CASE (sem, INSN_MOVE_SPR_RV10) : /* move ${Ps},${Rd-sfield} */
3176 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3177 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3178 #define FLD(f) abuf->fields.sfmt_move_spr_rv10.f
3179 int UNUSED written = 0;
3180 IADDR UNUSED pc = abuf->addr;
3181 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3187 tmp_prno = FLD (f_operand2);
3188 tmp_newval = GET_H_SR (FLD (f_operand2));
3189 if (EQSI (tmp_prno, 5)) {
3192 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1));
3194 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
3195 SET_H_GR (FLD (f_operand1), opval);
3196 written |= (1 << 4);
3197 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3201 else if (EQSI (tmp_prno, 9)) {
3203 SI opval = tmp_newval;
3204 SET_H_GR (FLD (f_operand1), opval);
3205 written |= (1 << 4);
3206 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3209 else if (EQSI (tmp_prno, 10)) {
3211 SI opval = tmp_newval;
3212 SET_H_GR (FLD (f_operand1), opval);
3213 written |= (1 << 4);
3214 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3217 else if (EQSI (tmp_prno, 11)) {
3219 SI opval = tmp_newval;
3220 SET_H_GR (FLD (f_operand1), opval);
3221 written |= (1 << 4);
3222 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3225 else if (EQSI (tmp_prno, 12)) {
3227 SI opval = tmp_newval;
3228 SET_H_GR (FLD (f_operand1), opval);
3229 written |= (1 << 4);
3230 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3233 else if (EQSI (tmp_prno, 13)) {
3235 SI opval = tmp_newval;
3236 SET_H_GR (FLD (f_operand1), opval);
3237 written |= (1 << 4);
3238 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3241 else if (EQSI (tmp_prno, 0)) {
3244 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1));
3246 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
3247 SET_H_GR (FLD (f_operand1), opval);
3248 written |= (1 << 4);
3249 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3253 else if (EQSI (tmp_prno, 1)) {
3256 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1));
3258 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
3259 SET_H_GR (FLD (f_operand1), opval);
3260 written |= (1 << 4);
3261 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3265 else if (EQSI (tmp_prno, 4)) {
3268 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand1));
3270 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
3271 SET_H_GR (FLD (f_operand1), opval);
3272 written |= (1 << 4);
3273 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3277 else if (EQSI (tmp_prno, 8)) {
3279 SI opval = tmp_newval;
3280 SET_H_GR (FLD (f_operand1), opval);
3281 written |= (1 << 4);
3282 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3285 else if (EQSI (tmp_prno, 7)) {
3287 SI opval = tmp_newval;
3288 SET_H_GR (FLD (f_operand1), opval);
3289 written |= (1 << 4);
3290 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3293 else if (EQSI (tmp_prno, 14)) {
3295 SI opval = tmp_newval;
3296 SET_H_GR (FLD (f_operand1), opval);
3297 written |= (1 << 4);
3298 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3301 else if (EQSI (tmp_prno, 15)) {
3303 SI opval = tmp_newval;
3304 SET_H_GR (FLD (f_operand1), opval);
3305 written |= (1 << 4);
3306 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3310 cgen_rtx_error (current_cpu, "move-spr-r from unimplemented register");
3315 CPU (h_xbit) = opval;
3316 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3320 SET_H_INSN_PREFIXED_P (opval);
3321 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3326 abuf->written = written;
3331 CASE (sem, INSN_RET_TYPE) : /* ret/reti/retb */
3333 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3334 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3335 #define FLD(f) abuf->fields.sfmt_move_spr_rv10.f
3336 int UNUSED written = 0;
3337 IADDR UNUSED pc = abuf->addr;
3339 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3343 tmp_retaddr = GET_H_SR (FLD (f_operand2));
3347 CPU (h_xbit) = opval;
3348 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3352 SET_H_INSN_PREFIXED_P (opval);
3353 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3358 USI opval = tmp_retaddr;
3359 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3360 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3365 SEM_BRANCH_FINI (vpc);
3370 CASE (sem, INSN_MOVE_M_SPRV10) : /* move [${Rs}${inc}],${Pd} */
3372 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3373 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3374 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
3375 int UNUSED written = 0;
3376 IADDR UNUSED pc = abuf->addr;
3377 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3382 tmp_rno = FLD (f_operand2);
3383 if (EQSI (tmp_rno, 5)) {
3384 tmp_newval = EXTHISI (({ SI tmp_addr;
3387 tmp_postinc = FLD (f_memmode);
3388 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3389 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
3390 ; if (NEBI (tmp_postinc, 0)) {
3392 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3393 tmp_addr = ADDSI (tmp_addr, 2);
3396 SI opval = tmp_addr;
3397 SET_H_GR (FLD (f_operand1), opval);
3398 written |= (1 << 8);
3399 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3405 else if (EQSI (tmp_rno, 9)) {
3406 tmp_newval = ({ SI tmp_addr;
3409 tmp_postinc = FLD (f_memmode);
3410 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3411 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3412 ; if (NEBI (tmp_postinc, 0)) {
3414 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3415 tmp_addr = ADDSI (tmp_addr, 4);
3418 SI opval = tmp_addr;
3419 SET_H_GR (FLD (f_operand1), opval);
3420 written |= (1 << 8);
3421 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3427 else if (EQSI (tmp_rno, 10)) {
3428 tmp_newval = ({ SI tmp_addr;
3431 tmp_postinc = FLD (f_memmode);
3432 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3433 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3434 ; if (NEBI (tmp_postinc, 0)) {
3436 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3437 tmp_addr = ADDSI (tmp_addr, 4);
3440 SI opval = tmp_addr;
3441 SET_H_GR (FLD (f_operand1), opval);
3442 written |= (1 << 8);
3443 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3449 else if (EQSI (tmp_rno, 11)) {
3450 tmp_newval = ({ SI tmp_addr;
3453 tmp_postinc = FLD (f_memmode);
3454 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3455 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3456 ; if (NEBI (tmp_postinc, 0)) {
3458 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3459 tmp_addr = ADDSI (tmp_addr, 4);
3462 SI opval = tmp_addr;
3463 SET_H_GR (FLD (f_operand1), opval);
3464 written |= (1 << 8);
3465 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3471 else if (EQSI (tmp_rno, 12)) {
3472 tmp_newval = ({ SI tmp_addr;
3475 tmp_postinc = FLD (f_memmode);
3476 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3477 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3478 ; if (NEBI (tmp_postinc, 0)) {
3480 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3481 tmp_addr = ADDSI (tmp_addr, 4);
3484 SI opval = tmp_addr;
3485 SET_H_GR (FLD (f_operand1), opval);
3486 written |= (1 << 8);
3487 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3493 else if (EQSI (tmp_rno, 13)) {
3494 tmp_newval = ({ SI tmp_addr;
3497 tmp_postinc = FLD (f_memmode);
3498 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3499 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3500 ; if (NEBI (tmp_postinc, 0)) {
3502 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3503 tmp_addr = ADDSI (tmp_addr, 4);
3506 SI opval = tmp_addr;
3507 SET_H_GR (FLD (f_operand1), opval);
3508 written |= (1 << 8);
3509 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3515 else if (EQSI (tmp_rno, 7)) {
3516 tmp_newval = ({ SI tmp_addr;
3519 tmp_postinc = FLD (f_memmode);
3520 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3521 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3522 ; if (NEBI (tmp_postinc, 0)) {
3524 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3525 tmp_addr = ADDSI (tmp_addr, 4);
3528 SI opval = tmp_addr;
3529 SET_H_GR (FLD (f_operand1), opval);
3530 written |= (1 << 8);
3531 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3537 else if (EQSI (tmp_rno, 14)) {
3538 tmp_newval = ({ SI tmp_addr;
3541 tmp_postinc = FLD (f_memmode);
3542 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3543 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3544 ; if (NEBI (tmp_postinc, 0)) {
3546 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3547 tmp_addr = ADDSI (tmp_addr, 4);
3550 SI opval = tmp_addr;
3551 SET_H_GR (FLD (f_operand1), opval);
3552 written |= (1 << 8);
3553 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3559 else if (EQSI (tmp_rno, 15)) {
3560 tmp_newval = ({ SI tmp_addr;
3563 tmp_postinc = FLD (f_memmode);
3564 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3565 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
3566 ; if (NEBI (tmp_postinc, 0)) {
3568 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3569 tmp_addr = ADDSI (tmp_addr, 4);
3572 SI opval = tmp_addr;
3573 SET_H_GR (FLD (f_operand1), opval);
3574 written |= (1 << 8);
3575 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3582 cgen_rtx_error (current_cpu, "Trying to set unimplemented special register");
3585 SI opval = tmp_newval;
3586 SET_H_SR (FLD (f_operand2), opval);
3587 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3592 CPU (h_xbit) = opval;
3593 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3597 SET_H_INSN_PREFIXED_P (opval);
3598 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3603 abuf->written = written;
3608 CASE (sem, INSN_MOVE_C_SPRV10_P5) : /* move ${sconst16},${Pd} */
3610 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3611 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3612 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p5.f
3613 int UNUSED written = 0;
3614 IADDR UNUSED pc = abuf->addr;
3615 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3619 SI opval = FLD (f_indir_pc__word);
3620 SET_H_SR (FLD (f_operand2), opval);
3621 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3626 CPU (h_xbit) = opval;
3627 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3631 SET_H_INSN_PREFIXED_P (opval);
3632 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3641 CASE (sem, INSN_MOVE_C_SPRV10_P9) : /* move ${const32},${Pd} */
3643 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3644 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3645 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3646 int UNUSED written = 0;
3647 IADDR UNUSED pc = abuf->addr;
3648 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3652 SI opval = FLD (f_indir_pc__dword);
3653 SET_H_SR (FLD (f_operand2), opval);
3654 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3659 CPU (h_xbit) = opval;
3660 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3664 SET_H_INSN_PREFIXED_P (opval);
3665 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3674 CASE (sem, INSN_MOVE_C_SPRV10_P10) : /* move ${const32},${Pd} */
3676 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3677 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3678 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3679 int UNUSED written = 0;
3680 IADDR UNUSED pc = abuf->addr;
3681 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3685 SI opval = FLD (f_indir_pc__dword);
3686 SET_H_SR (FLD (f_operand2), opval);
3687 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3692 CPU (h_xbit) = opval;
3693 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3697 SET_H_INSN_PREFIXED_P (opval);
3698 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3707 CASE (sem, INSN_MOVE_C_SPRV10_P11) : /* move ${const32},${Pd} */
3709 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3710 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3711 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3712 int UNUSED written = 0;
3713 IADDR UNUSED pc = abuf->addr;
3714 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3718 SI opval = FLD (f_indir_pc__dword);
3719 SET_H_SR (FLD (f_operand2), opval);
3720 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3725 CPU (h_xbit) = opval;
3726 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3730 SET_H_INSN_PREFIXED_P (opval);
3731 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3740 CASE (sem, INSN_MOVE_C_SPRV10_P12) : /* move ${const32},${Pd} */
3742 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3743 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3744 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3745 int UNUSED written = 0;
3746 IADDR UNUSED pc = abuf->addr;
3747 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3751 SI opval = FLD (f_indir_pc__dword);
3752 SET_H_SR (FLD (f_operand2), opval);
3753 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3758 CPU (h_xbit) = opval;
3759 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3763 SET_H_INSN_PREFIXED_P (opval);
3764 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3773 CASE (sem, INSN_MOVE_C_SPRV10_P13) : /* move ${const32},${Pd} */
3775 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3777 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3778 int UNUSED written = 0;
3779 IADDR UNUSED pc = abuf->addr;
3780 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3784 SI opval = FLD (f_indir_pc__dword);
3785 SET_H_SR (FLD (f_operand2), opval);
3786 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3791 CPU (h_xbit) = opval;
3792 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3796 SET_H_INSN_PREFIXED_P (opval);
3797 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3806 CASE (sem, INSN_MOVE_C_SPRV10_P7) : /* move ${const32},${Pd} */
3808 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3809 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3810 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3811 int UNUSED written = 0;
3812 IADDR UNUSED pc = abuf->addr;
3813 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3817 SI opval = FLD (f_indir_pc__dword);
3818 SET_H_SR (FLD (f_operand2), opval);
3819 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3824 CPU (h_xbit) = opval;
3825 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3829 SET_H_INSN_PREFIXED_P (opval);
3830 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3839 CASE (sem, INSN_MOVE_C_SPRV10_P14) : /* move ${const32},${Pd} */
3841 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3842 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3843 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3844 int UNUSED written = 0;
3845 IADDR UNUSED pc = abuf->addr;
3846 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3850 SI opval = FLD (f_indir_pc__dword);
3851 SET_H_SR (FLD (f_operand2), opval);
3852 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3857 CPU (h_xbit) = opval;
3858 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3862 SET_H_INSN_PREFIXED_P (opval);
3863 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3872 CASE (sem, INSN_MOVE_C_SPRV10_P15) : /* move ${const32},${Pd} */
3874 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3875 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3876 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3877 int UNUSED written = 0;
3878 IADDR UNUSED pc = abuf->addr;
3879 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
3883 SI opval = FLD (f_indir_pc__dword);
3884 SET_H_SR (FLD (f_operand2), opval);
3885 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
3890 CPU (h_xbit) = opval;
3891 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
3895 SET_H_INSN_PREFIXED_P (opval);
3896 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
3905 CASE (sem, INSN_MOVE_SPR_MV10) : /* move ${Ps},[${Rd-sfield}${inc}] */
3907 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3908 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3909 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
3910 int UNUSED written = 0;
3911 IADDR UNUSED pc = abuf->addr;
3912 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3916 tmp_rno = FLD (f_operand2);
3917 if (EQSI (tmp_rno, 5)) {
3921 tmp_postinc = FLD (f_memmode);
3922 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3923 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
3924 if (EQBI (CPU (h_pbit), 0)) {
3927 HI opval = GET_H_SR (FLD (f_operand2));
3928 SETMEMHI (current_cpu, pc, tmp_addr, opval);
3929 written |= (1 << 11);
3930 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3933 BI opval = CPU (h_pbit);
3934 CPU (h_cbit) = opval;
3935 written |= (1 << 10);
3936 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
3942 CPU (h_cbit) = opval;
3943 written |= (1 << 10);
3944 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
3949 HI opval = GET_H_SR (FLD (f_operand2));
3950 SETMEMHI (current_cpu, pc, tmp_addr, opval);
3951 written |= (1 << 11);
3952 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3955 if (NEBI (tmp_postinc, 0)) {
3957 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
3958 tmp_addr = ADDSI (tmp_addr, 2);
3961 SI opval = tmp_addr;
3962 SET_H_GR (FLD (f_operand1), opval);
3963 written |= (1 << 9);
3964 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3970 else if (EQSI (tmp_rno, 9)) {
3974 tmp_postinc = FLD (f_memmode);
3975 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
3976 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
3977 if (EQBI (CPU (h_pbit), 0)) {
3980 SI opval = GET_H_SR (FLD (f_operand2));
3981 SETMEMSI (current_cpu, pc, tmp_addr, opval);
3982 written |= (1 << 13);
3983 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
3986 BI opval = CPU (h_pbit);
3987 CPU (h_cbit) = opval;
3988 written |= (1 << 10);
3989 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
3995 CPU (h_cbit) = opval;
3996 written |= (1 << 10);
3997 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4002 SI opval = GET_H_SR (FLD (f_operand2));
4003 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4004 written |= (1 << 13);
4005 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4008 if (NEBI (tmp_postinc, 0)) {
4010 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4011 tmp_addr = ADDSI (tmp_addr, 4);
4014 SI opval = tmp_addr;
4015 SET_H_GR (FLD (f_operand1), opval);
4016 written |= (1 << 9);
4017 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4023 else if (EQSI (tmp_rno, 10)) {
4027 tmp_postinc = FLD (f_memmode);
4028 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4029 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4030 if (EQBI (CPU (h_pbit), 0)) {
4033 SI opval = GET_H_SR (FLD (f_operand2));
4034 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4035 written |= (1 << 13);
4036 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4039 BI opval = CPU (h_pbit);
4040 CPU (h_cbit) = opval;
4041 written |= (1 << 10);
4042 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4048 CPU (h_cbit) = opval;
4049 written |= (1 << 10);
4050 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4055 SI opval = GET_H_SR (FLD (f_operand2));
4056 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4057 written |= (1 << 13);
4058 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4061 if (NEBI (tmp_postinc, 0)) {
4063 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4064 tmp_addr = ADDSI (tmp_addr, 4);
4067 SI opval = tmp_addr;
4068 SET_H_GR (FLD (f_operand1), opval);
4069 written |= (1 << 9);
4070 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4076 else if (EQSI (tmp_rno, 11)) {
4080 tmp_postinc = FLD (f_memmode);
4081 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4082 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4083 if (EQBI (CPU (h_pbit), 0)) {
4086 SI opval = GET_H_SR (FLD (f_operand2));
4087 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4088 written |= (1 << 13);
4089 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4092 BI opval = CPU (h_pbit);
4093 CPU (h_cbit) = opval;
4094 written |= (1 << 10);
4095 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4101 CPU (h_cbit) = opval;
4102 written |= (1 << 10);
4103 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4108 SI opval = GET_H_SR (FLD (f_operand2));
4109 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4110 written |= (1 << 13);
4111 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4114 if (NEBI (tmp_postinc, 0)) {
4116 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4117 tmp_addr = ADDSI (tmp_addr, 4);
4120 SI opval = tmp_addr;
4121 SET_H_GR (FLD (f_operand1), opval);
4122 written |= (1 << 9);
4123 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4129 else if (EQSI (tmp_rno, 12)) {
4133 tmp_postinc = FLD (f_memmode);
4134 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4135 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4136 if (EQBI (CPU (h_pbit), 0)) {
4139 SI opval = GET_H_SR (FLD (f_operand2));
4140 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4141 written |= (1 << 13);
4142 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4145 BI opval = CPU (h_pbit);
4146 CPU (h_cbit) = opval;
4147 written |= (1 << 10);
4148 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4154 CPU (h_cbit) = opval;
4155 written |= (1 << 10);
4156 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4161 SI opval = GET_H_SR (FLD (f_operand2));
4162 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4163 written |= (1 << 13);
4164 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4167 if (NEBI (tmp_postinc, 0)) {
4169 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4170 tmp_addr = ADDSI (tmp_addr, 4);
4173 SI opval = tmp_addr;
4174 SET_H_GR (FLD (f_operand1), opval);
4175 written |= (1 << 9);
4176 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4182 else if (EQSI (tmp_rno, 13)) {
4186 tmp_postinc = FLD (f_memmode);
4187 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4188 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4189 if (EQBI (CPU (h_pbit), 0)) {
4192 SI opval = GET_H_SR (FLD (f_operand2));
4193 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4194 written |= (1 << 13);
4195 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4198 BI opval = CPU (h_pbit);
4199 CPU (h_cbit) = opval;
4200 written |= (1 << 10);
4201 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4207 CPU (h_cbit) = opval;
4208 written |= (1 << 10);
4209 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4214 SI opval = GET_H_SR (FLD (f_operand2));
4215 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4216 written |= (1 << 13);
4217 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4220 if (NEBI (tmp_postinc, 0)) {
4222 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4223 tmp_addr = ADDSI (tmp_addr, 4);
4226 SI opval = tmp_addr;
4227 SET_H_GR (FLD (f_operand1), opval);
4228 written |= (1 << 9);
4229 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4235 else if (EQSI (tmp_rno, 0)) {
4239 tmp_postinc = FLD (f_memmode);
4240 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4241 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4242 if (EQBI (CPU (h_pbit), 0)) {
4245 QI opval = GET_H_SR (FLD (f_operand2));
4246 SETMEMQI (current_cpu, pc, tmp_addr, opval);
4247 written |= (1 << 12);
4248 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4251 BI opval = CPU (h_pbit);
4252 CPU (h_cbit) = opval;
4253 written |= (1 << 10);
4254 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4260 CPU (h_cbit) = opval;
4261 written |= (1 << 10);
4262 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4267 QI opval = GET_H_SR (FLD (f_operand2));
4268 SETMEMQI (current_cpu, pc, tmp_addr, opval);
4269 written |= (1 << 12);
4270 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4273 if (NEBI (tmp_postinc, 0)) {
4275 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4276 tmp_addr = ADDSI (tmp_addr, 1);
4279 SI opval = tmp_addr;
4280 SET_H_GR (FLD (f_operand1), opval);
4281 written |= (1 << 9);
4282 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4288 else if (EQSI (tmp_rno, 1)) {
4292 tmp_postinc = FLD (f_memmode);
4293 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4294 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4295 if (EQBI (CPU (h_pbit), 0)) {
4298 QI opval = GET_H_SR (FLD (f_operand2));
4299 SETMEMQI (current_cpu, pc, tmp_addr, opval);
4300 written |= (1 << 12);
4301 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4304 BI opval = CPU (h_pbit);
4305 CPU (h_cbit) = opval;
4306 written |= (1 << 10);
4307 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4313 CPU (h_cbit) = opval;
4314 written |= (1 << 10);
4315 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4320 QI opval = GET_H_SR (FLD (f_operand2));
4321 SETMEMQI (current_cpu, pc, tmp_addr, opval);
4322 written |= (1 << 12);
4323 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4326 if (NEBI (tmp_postinc, 0)) {
4328 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4329 tmp_addr = ADDSI (tmp_addr, 1);
4332 SI opval = tmp_addr;
4333 SET_H_GR (FLD (f_operand1), opval);
4334 written |= (1 << 9);
4335 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4341 else if (EQSI (tmp_rno, 4)) {
4345 tmp_postinc = FLD (f_memmode);
4346 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4347 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4348 if (EQBI (CPU (h_pbit), 0)) {
4351 HI opval = GET_H_SR (FLD (f_operand2));
4352 SETMEMHI (current_cpu, pc, tmp_addr, opval);
4353 written |= (1 << 11);
4354 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4357 BI opval = CPU (h_pbit);
4358 CPU (h_cbit) = opval;
4359 written |= (1 << 10);
4360 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4366 CPU (h_cbit) = opval;
4367 written |= (1 << 10);
4368 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4373 HI opval = GET_H_SR (FLD (f_operand2));
4374 SETMEMHI (current_cpu, pc, tmp_addr, opval);
4375 written |= (1 << 11);
4376 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4379 if (NEBI (tmp_postinc, 0)) {
4381 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4382 tmp_addr = ADDSI (tmp_addr, 2);
4385 SI opval = tmp_addr;
4386 SET_H_GR (FLD (f_operand1), opval);
4387 written |= (1 << 9);
4388 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4394 else if (EQSI (tmp_rno, 8)) {
4398 tmp_postinc = FLD (f_memmode);
4399 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4400 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4401 if (EQBI (CPU (h_pbit), 0)) {
4404 SI opval = GET_H_SR (FLD (f_operand2));
4405 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4406 written |= (1 << 13);
4407 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4410 BI opval = CPU (h_pbit);
4411 CPU (h_cbit) = opval;
4412 written |= (1 << 10);
4413 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4419 CPU (h_cbit) = opval;
4420 written |= (1 << 10);
4421 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4426 SI opval = GET_H_SR (FLD (f_operand2));
4427 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4428 written |= (1 << 13);
4429 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4432 if (NEBI (tmp_postinc, 0)) {
4434 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4435 tmp_addr = ADDSI (tmp_addr, 4);
4438 SI opval = tmp_addr;
4439 SET_H_GR (FLD (f_operand1), opval);
4440 written |= (1 << 9);
4441 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4447 else if (EQSI (tmp_rno, 7)) {
4451 tmp_postinc = FLD (f_memmode);
4452 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4453 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4454 if (EQBI (CPU (h_pbit), 0)) {
4457 SI opval = GET_H_SR (FLD (f_operand2));
4458 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4459 written |= (1 << 13);
4460 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4463 BI opval = CPU (h_pbit);
4464 CPU (h_cbit) = opval;
4465 written |= (1 << 10);
4466 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4472 CPU (h_cbit) = opval;
4473 written |= (1 << 10);
4474 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4479 SI opval = GET_H_SR (FLD (f_operand2));
4480 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4481 written |= (1 << 13);
4482 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4485 if (NEBI (tmp_postinc, 0)) {
4487 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4488 tmp_addr = ADDSI (tmp_addr, 4);
4491 SI opval = tmp_addr;
4492 SET_H_GR (FLD (f_operand1), opval);
4493 written |= (1 << 9);
4494 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4500 else if (EQSI (tmp_rno, 14)) {
4504 tmp_postinc = FLD (f_memmode);
4505 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4506 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4507 if (EQBI (CPU (h_pbit), 0)) {
4510 SI opval = GET_H_SR (FLD (f_operand2));
4511 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4512 written |= (1 << 13);
4513 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4516 BI opval = CPU (h_pbit);
4517 CPU (h_cbit) = opval;
4518 written |= (1 << 10);
4519 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4525 CPU (h_cbit) = opval;
4526 written |= (1 << 10);
4527 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4532 SI opval = GET_H_SR (FLD (f_operand2));
4533 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4534 written |= (1 << 13);
4535 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4538 if (NEBI (tmp_postinc, 0)) {
4540 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4541 tmp_addr = ADDSI (tmp_addr, 4);
4544 SI opval = tmp_addr;
4545 SET_H_GR (FLD (f_operand1), opval);
4546 written |= (1 << 9);
4547 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4553 else if (EQSI (tmp_rno, 15)) {
4557 tmp_postinc = FLD (f_memmode);
4558 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4559 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
4560 if (EQBI (CPU (h_pbit), 0)) {
4563 SI opval = GET_H_SR (FLD (f_operand2));
4564 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4565 written |= (1 << 13);
4566 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4569 BI opval = CPU (h_pbit);
4570 CPU (h_cbit) = opval;
4571 written |= (1 << 10);
4572 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4578 CPU (h_cbit) = opval;
4579 written |= (1 << 10);
4580 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
4585 SI opval = GET_H_SR (FLD (f_operand2));
4586 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4587 written |= (1 << 13);
4588 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4591 if (NEBI (tmp_postinc, 0)) {
4593 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
4594 tmp_addr = ADDSI (tmp_addr, 4);
4597 SI opval = tmp_addr;
4598 SET_H_GR (FLD (f_operand1), opval);
4599 written |= (1 << 9);
4600 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4607 cgen_rtx_error (current_cpu, "write from unimplemented special register");
4612 CPU (h_xbit) = opval;
4613 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
4617 SET_H_INSN_PREFIXED_P (opval);
4618 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
4623 abuf->written = written;
4628 CASE (sem, INSN_SBFS) : /* sbfs [${Rd-sfield}${inc}] */
4630 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4631 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4632 #define FLD(f) abuf->fields.sfmt_empty.f
4633 int UNUSED written = 0;
4634 IADDR UNUSED pc = abuf->addr;
4635 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4637 cgen_rtx_error (current_cpu, "SBFS isn't implemented");
4643 CASE (sem, INSN_MOVEM_R_M) : /* movem ${Rs-dfield},[${Rd-sfield}${inc}] */
4645 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4646 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4647 #define FLD(f) abuf->fields.sfmt_movem_r_m.f
4648 int UNUSED written = 0;
4649 IADDR UNUSED pc = abuf->addr;
4650 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4655 tmp_postinc = FLD (f_memmode);
4658 tmp_dummy = GET_H_GR (FLD (f_operand2));
4660 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4662 if (GESI (FLD (f_operand2), 15)) {
4665 tmp_tmp = GET_H_GR (((UINT) 15));
4668 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4669 written |= (1 << 23);
4670 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4672 tmp_addr = ADDSI (tmp_addr, 4);
4675 if (GESI (FLD (f_operand2), 14)) {
4678 tmp_tmp = GET_H_GR (((UINT) 14));
4681 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4682 written |= (1 << 23);
4683 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4685 tmp_addr = ADDSI (tmp_addr, 4);
4688 if (GESI (FLD (f_operand2), 13)) {
4691 tmp_tmp = GET_H_GR (((UINT) 13));
4694 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4695 written |= (1 << 23);
4696 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4698 tmp_addr = ADDSI (tmp_addr, 4);
4701 if (GESI (FLD (f_operand2), 12)) {
4704 tmp_tmp = GET_H_GR (((UINT) 12));
4707 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4708 written |= (1 << 23);
4709 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4711 tmp_addr = ADDSI (tmp_addr, 4);
4714 if (GESI (FLD (f_operand2), 11)) {
4717 tmp_tmp = GET_H_GR (((UINT) 11));
4720 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4721 written |= (1 << 23);
4722 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4724 tmp_addr = ADDSI (tmp_addr, 4);
4727 if (GESI (FLD (f_operand2), 10)) {
4730 tmp_tmp = GET_H_GR (((UINT) 10));
4733 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4734 written |= (1 << 23);
4735 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4737 tmp_addr = ADDSI (tmp_addr, 4);
4740 if (GESI (FLD (f_operand2), 9)) {
4743 tmp_tmp = GET_H_GR (((UINT) 9));
4746 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4747 written |= (1 << 23);
4748 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4750 tmp_addr = ADDSI (tmp_addr, 4);
4753 if (GESI (FLD (f_operand2), 8)) {
4756 tmp_tmp = GET_H_GR (((UINT) 8));
4759 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4760 written |= (1 << 23);
4761 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4763 tmp_addr = ADDSI (tmp_addr, 4);
4766 if (GESI (FLD (f_operand2), 7)) {
4769 tmp_tmp = GET_H_GR (((UINT) 7));
4772 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4773 written |= (1 << 23);
4774 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4776 tmp_addr = ADDSI (tmp_addr, 4);
4779 if (GESI (FLD (f_operand2), 6)) {
4782 tmp_tmp = GET_H_GR (((UINT) 6));
4785 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4786 written |= (1 << 23);
4787 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4789 tmp_addr = ADDSI (tmp_addr, 4);
4792 if (GESI (FLD (f_operand2), 5)) {
4795 tmp_tmp = GET_H_GR (((UINT) 5));
4798 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4799 written |= (1 << 23);
4800 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4802 tmp_addr = ADDSI (tmp_addr, 4);
4805 if (GESI (FLD (f_operand2), 4)) {
4808 tmp_tmp = GET_H_GR (((UINT) 4));
4811 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4812 written |= (1 << 23);
4813 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4815 tmp_addr = ADDSI (tmp_addr, 4);
4818 if (GESI (FLD (f_operand2), 3)) {
4821 tmp_tmp = GET_H_GR (((UINT) 3));
4824 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4825 written |= (1 << 23);
4826 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4828 tmp_addr = ADDSI (tmp_addr, 4);
4831 if (GESI (FLD (f_operand2), 2)) {
4834 tmp_tmp = GET_H_GR (((UINT) 2));
4837 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4838 written |= (1 << 23);
4839 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4841 tmp_addr = ADDSI (tmp_addr, 4);
4844 if (GESI (FLD (f_operand2), 1)) {
4847 tmp_tmp = GET_H_GR (((UINT) 1));
4850 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4851 written |= (1 << 23);
4852 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4854 tmp_addr = ADDSI (tmp_addr, 4);
4857 if (GESI (FLD (f_operand2), 0)) {
4860 tmp_tmp = GET_H_GR (((UINT) 0));
4863 SETMEMSI (current_cpu, pc, tmp_addr, opval);
4864 written |= (1 << 23);
4865 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4867 tmp_addr = ADDSI (tmp_addr, 4);
4871 if (NEBI (tmp_postinc, 0)) {
4873 SI opval = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (tmp_addr) : (CPU (h_prefixreg_pre_v32)));
4874 SET_H_GR (FLD (f_operand1), opval);
4875 written |= (1 << 22);
4876 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4882 CPU (h_xbit) = opval;
4883 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
4887 SET_H_INSN_PREFIXED_P (opval);
4888 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
4893 abuf->written = written;
4898 CASE (sem, INSN_MOVEM_M_R) : /* movem [${Rs}${inc}],${Rd} */
4900 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4901 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4902 #define FLD(f) abuf->fields.sfmt_movem_m_r.f
4903 int UNUSED written = 0;
4904 IADDR UNUSED pc = abuf->addr;
4905 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4910 tmp_postinc = FLD (f_memmode);
4911 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
4914 tmp_dummy = GET_H_GR (FLD (f_operand2));
4917 if (GESI (FLD (f_operand2), 14)) {
4920 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4923 SET_H_GR (((UINT) 14), opval);
4924 written |= (1 << 14);
4925 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4927 tmp_addr = ADDSI (tmp_addr, 4);
4930 if (GESI (FLD (f_operand2), 13)) {
4933 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4936 SET_H_GR (((UINT) 13), opval);
4937 written |= (1 << 13);
4938 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4940 tmp_addr = ADDSI (tmp_addr, 4);
4943 if (GESI (FLD (f_operand2), 12)) {
4946 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4949 SET_H_GR (((UINT) 12), opval);
4950 written |= (1 << 12);
4951 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4953 tmp_addr = ADDSI (tmp_addr, 4);
4956 if (GESI (FLD (f_operand2), 11)) {
4959 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4962 SET_H_GR (((UINT) 11), opval);
4963 written |= (1 << 11);
4964 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4966 tmp_addr = ADDSI (tmp_addr, 4);
4969 if (GESI (FLD (f_operand2), 10)) {
4972 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4975 SET_H_GR (((UINT) 10), opval);
4976 written |= (1 << 10);
4977 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4979 tmp_addr = ADDSI (tmp_addr, 4);
4982 if (GESI (FLD (f_operand2), 9)) {
4985 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
4988 SET_H_GR (((UINT) 9), opval);
4989 written |= (1 << 22);
4990 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4992 tmp_addr = ADDSI (tmp_addr, 4);
4995 if (GESI (FLD (f_operand2), 8)) {
4998 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5001 SET_H_GR (((UINT) 8), opval);
5002 written |= (1 << 21);
5003 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5005 tmp_addr = ADDSI (tmp_addr, 4);
5008 if (GESI (FLD (f_operand2), 7)) {
5011 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5014 SET_H_GR (((UINT) 7), opval);
5015 written |= (1 << 20);
5016 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5018 tmp_addr = ADDSI (tmp_addr, 4);
5021 if (GESI (FLD (f_operand2), 6)) {
5024 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5027 SET_H_GR (((UINT) 6), opval);
5028 written |= (1 << 19);
5029 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5031 tmp_addr = ADDSI (tmp_addr, 4);
5034 if (GESI (FLD (f_operand2), 5)) {
5037 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5040 SET_H_GR (((UINT) 5), opval);
5041 written |= (1 << 18);
5042 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5044 tmp_addr = ADDSI (tmp_addr, 4);
5047 if (GESI (FLD (f_operand2), 4)) {
5050 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5053 SET_H_GR (((UINT) 4), opval);
5054 written |= (1 << 17);
5055 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5057 tmp_addr = ADDSI (tmp_addr, 4);
5060 if (GESI (FLD (f_operand2), 3)) {
5063 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5066 SET_H_GR (((UINT) 3), opval);
5067 written |= (1 << 16);
5068 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5070 tmp_addr = ADDSI (tmp_addr, 4);
5073 if (GESI (FLD (f_operand2), 2)) {
5076 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5079 SET_H_GR (((UINT) 2), opval);
5080 written |= (1 << 15);
5081 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5083 tmp_addr = ADDSI (tmp_addr, 4);
5086 if (GESI (FLD (f_operand2), 1)) {
5089 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5092 SET_H_GR (((UINT) 1), opval);
5093 written |= (1 << 9);
5094 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5096 tmp_addr = ADDSI (tmp_addr, 4);
5099 if (GESI (FLD (f_operand2), 0)) {
5102 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5105 SET_H_GR (((UINT) 0), opval);
5106 written |= (1 << 8);
5107 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5109 tmp_addr = ADDSI (tmp_addr, 4);
5113 if (NEBI (tmp_postinc, 0)) {
5115 SI opval = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (tmp_addr) : (CPU (h_prefixreg_pre_v32)));
5116 SET_H_GR (FLD (f_operand1), opval);
5117 written |= (1 << 7);
5118 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5124 CPU (h_xbit) = opval;
5125 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5129 SET_H_INSN_PREFIXED_P (opval);
5130 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5135 abuf->written = written;
5140 CASE (sem, INSN_MOVEM_M_PC) : /* movem [${Rs}${inc}],${Rd} */
5142 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5143 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5144 #define FLD(f) abuf->fields.sfmt_movem_m_r.f
5145 int UNUSED written = 0;
5146 IADDR UNUSED pc = abuf->addr;
5148 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5153 tmp_postinc = FLD (f_memmode);
5154 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
5157 USI opval = GETMEMSI (current_cpu, pc, tmp_addr);
5158 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
5159 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5161 tmp_addr = ADDSI (tmp_addr, 4);
5164 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5167 SET_H_GR (((UINT) 14), opval);
5168 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5170 tmp_addr = ADDSI (tmp_addr, 4);
5174 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5177 SET_H_GR (((UINT) 13), opval);
5178 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5180 tmp_addr = ADDSI (tmp_addr, 4);
5184 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5187 SET_H_GR (((UINT) 12), opval);
5188 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5190 tmp_addr = ADDSI (tmp_addr, 4);
5194 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5197 SET_H_GR (((UINT) 11), opval);
5198 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5200 tmp_addr = ADDSI (tmp_addr, 4);
5204 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5207 SET_H_GR (((UINT) 10), opval);
5208 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5210 tmp_addr = ADDSI (tmp_addr, 4);
5214 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5217 SET_H_GR (((UINT) 9), opval);
5218 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5220 tmp_addr = ADDSI (tmp_addr, 4);
5224 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5227 SET_H_GR (((UINT) 8), opval);
5228 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5230 tmp_addr = ADDSI (tmp_addr, 4);
5234 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5237 SET_H_GR (((UINT) 7), opval);
5238 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5240 tmp_addr = ADDSI (tmp_addr, 4);
5244 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5247 SET_H_GR (((UINT) 6), opval);
5248 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5250 tmp_addr = ADDSI (tmp_addr, 4);
5254 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5257 SET_H_GR (((UINT) 5), opval);
5258 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5260 tmp_addr = ADDSI (tmp_addr, 4);
5264 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5267 SET_H_GR (((UINT) 4), opval);
5268 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5270 tmp_addr = ADDSI (tmp_addr, 4);
5274 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5277 SET_H_GR (((UINT) 3), opval);
5278 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5280 tmp_addr = ADDSI (tmp_addr, 4);
5284 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5287 SET_H_GR (((UINT) 2), opval);
5288 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5290 tmp_addr = ADDSI (tmp_addr, 4);
5294 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5297 SET_H_GR (((UINT) 1), opval);
5298 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5300 tmp_addr = ADDSI (tmp_addr, 4);
5304 tmp_tmp = GETMEMSI (current_cpu, pc, tmp_addr);
5307 SET_H_GR (((UINT) 0), opval);
5308 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5310 tmp_addr = ADDSI (tmp_addr, 4);
5313 if (NEBI (tmp_postinc, 0)) {
5315 SI opval = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (tmp_addr) : (CPU (h_prefixreg_pre_v32)));
5316 SET_H_GR (FLD (f_operand1), opval);
5317 written |= (1 << 5);
5318 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5324 CPU (h_xbit) = opval;
5325 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5329 SET_H_INSN_PREFIXED_P (opval);
5330 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5335 abuf->written = written;
5336 SEM_BRANCH_FINI (vpc);
5341 CASE (sem, INSN_ADD_B_R) : /* add.b $Rs,$Rd */
5343 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5344 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5345 #define FLD(f) abuf->fields.sfmt_add_b_r.f
5346 int UNUSED written = 0;
5347 IADDR UNUSED pc = abuf->addr;
5348 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5355 tmp_tmpops = GET_H_GR (FLD (f_operand1));
5356 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5357 tmp_carry = CPU (h_cbit);
5358 tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5361 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
5363 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
5364 SET_H_GR (FLD (f_operand2), opval);
5365 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5370 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), ORIF (ANDIF (LTQI (tmp_tmpopd, 0), GEQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_newval, 0))));
5371 CPU (h_cbit) = opval;
5372 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5375 BI opval = LTQI (tmp_newval, 0);
5376 CPU (h_nbit) = opval;
5377 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5380 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5381 CPU (h_zbit) = opval;
5382 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5385 BI opval = ORIF (ANDIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (GEQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
5386 CPU (h_vbit) = opval;
5387 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5392 CPU (h_xbit) = opval;
5393 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5397 SET_H_INSN_PREFIXED_P (opval);
5398 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5408 CASE (sem, INSN_ADD_W_R) : /* add.w $Rs,$Rd */
5410 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5411 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5412 #define FLD(f) abuf->fields.sfmt_add_b_r.f
5413 int UNUSED written = 0;
5414 IADDR UNUSED pc = abuf->addr;
5415 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5422 tmp_tmpops = GET_H_GR (FLD (f_operand1));
5423 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5424 tmp_carry = CPU (h_cbit);
5425 tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5428 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
5430 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
5431 SET_H_GR (FLD (f_operand2), opval);
5432 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5437 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), ORIF (ANDIF (LTHI (tmp_tmpopd, 0), GEHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_newval, 0))));
5438 CPU (h_cbit) = opval;
5439 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5442 BI opval = LTHI (tmp_newval, 0);
5443 CPU (h_nbit) = opval;
5444 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5447 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5448 CPU (h_zbit) = opval;
5449 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5452 BI opval = ORIF (ANDIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (GEHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
5453 CPU (h_vbit) = opval;
5454 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5459 CPU (h_xbit) = opval;
5460 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5464 SET_H_INSN_PREFIXED_P (opval);
5465 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5475 CASE (sem, INSN_ADD_D_R) : /* add.d $Rs,$Rd */
5477 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5478 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5479 #define FLD(f) abuf->fields.sfmt_add_b_r.f
5480 int UNUSED written = 0;
5481 IADDR UNUSED pc = abuf->addr;
5482 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5489 tmp_tmpops = GET_H_GR (FLD (f_operand1));
5490 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5491 tmp_carry = CPU (h_cbit);
5492 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5494 SI opval = tmp_newval;
5495 SET_H_GR (FLD (f_operand2), opval);
5496 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5500 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
5501 CPU (h_cbit) = opval;
5502 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5505 BI opval = LTSI (tmp_newval, 0);
5506 CPU (h_nbit) = opval;
5507 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5510 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5511 CPU (h_zbit) = opval;
5512 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5515 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
5516 CPU (h_vbit) = opval;
5517 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5522 CPU (h_xbit) = opval;
5523 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5527 SET_H_INSN_PREFIXED_P (opval);
5528 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5538 CASE (sem, INSN_ADD_M_B_M) : /* add-m.b [${Rs}${inc}],${Rd} */
5540 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5541 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5542 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
5543 int UNUSED written = 0;
5544 IADDR UNUSED pc = abuf->addr;
5545 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5552 tmp_tmpops = ({ SI tmp_addr;
5555 tmp_postinc = FLD (f_memmode);
5556 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
5557 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
5558 ; if (NEBI (tmp_postinc, 0)) {
5560 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
5561 tmp_addr = ADDSI (tmp_addr, 1);
5564 SI opval = tmp_addr;
5565 SET_H_GR (FLD (f_operand1), opval);
5566 written |= (1 << 12);
5567 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5572 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5573 tmp_carry = CPU (h_cbit);
5574 tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5577 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
5579 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
5580 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
5581 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5586 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), ORIF (ANDIF (LTQI (tmp_tmpopd, 0), GEQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_newval, 0))));
5587 CPU (h_cbit) = opval;
5588 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5591 BI opval = LTQI (tmp_newval, 0);
5592 CPU (h_nbit) = opval;
5593 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5596 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5597 CPU (h_zbit) = opval;
5598 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5601 BI opval = ORIF (ANDIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (GEQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
5602 CPU (h_vbit) = opval;
5603 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5608 CPU (h_xbit) = opval;
5609 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5613 SET_H_INSN_PREFIXED_P (opval);
5614 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5620 abuf->written = written;
5625 CASE (sem, INSN_ADD_M_W_M) : /* add-m.w [${Rs}${inc}],${Rd} */
5627 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5628 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5629 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
5630 int UNUSED written = 0;
5631 IADDR UNUSED pc = abuf->addr;
5632 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5639 tmp_tmpops = ({ SI tmp_addr;
5642 tmp_postinc = FLD (f_memmode);
5643 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
5644 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
5645 ; if (NEBI (tmp_postinc, 0)) {
5647 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
5648 tmp_addr = ADDSI (tmp_addr, 2);
5651 SI opval = tmp_addr;
5652 SET_H_GR (FLD (f_operand1), opval);
5653 written |= (1 << 12);
5654 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5659 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5660 tmp_carry = CPU (h_cbit);
5661 tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5664 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
5666 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
5667 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
5668 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5673 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), ORIF (ANDIF (LTHI (tmp_tmpopd, 0), GEHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_newval, 0))));
5674 CPU (h_cbit) = opval;
5675 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5678 BI opval = LTHI (tmp_newval, 0);
5679 CPU (h_nbit) = opval;
5680 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5683 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5684 CPU (h_zbit) = opval;
5685 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5688 BI opval = ORIF (ANDIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (GEHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
5689 CPU (h_vbit) = opval;
5690 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5695 CPU (h_xbit) = opval;
5696 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5700 SET_H_INSN_PREFIXED_P (opval);
5701 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5707 abuf->written = written;
5712 CASE (sem, INSN_ADD_M_D_M) : /* add-m.d [${Rs}${inc}],${Rd} */
5714 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5715 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5716 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
5717 int UNUSED written = 0;
5718 IADDR UNUSED pc = abuf->addr;
5719 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5726 tmp_tmpops = ({ SI tmp_addr;
5729 tmp_postinc = FLD (f_memmode);
5730 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
5731 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
5732 ; if (NEBI (tmp_postinc, 0)) {
5734 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
5735 tmp_addr = ADDSI (tmp_addr, 4);
5738 SI opval = tmp_addr;
5739 SET_H_GR (FLD (f_operand1), opval);
5740 written |= (1 << 11);
5741 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5746 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5747 tmp_carry = CPU (h_cbit);
5748 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5750 SI opval = tmp_newval;
5751 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
5752 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5756 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
5757 CPU (h_cbit) = opval;
5758 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5761 BI opval = LTSI (tmp_newval, 0);
5762 CPU (h_nbit) = opval;
5763 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5766 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5767 CPU (h_zbit) = opval;
5768 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5771 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
5772 CPU (h_vbit) = opval;
5773 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5778 CPU (h_xbit) = opval;
5779 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5783 SET_H_INSN_PREFIXED_P (opval);
5784 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5790 abuf->written = written;
5795 CASE (sem, INSN_ADDCBR) : /* add.b ${sconst8}],${Rd} */
5797 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5798 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5799 #define FLD(f) abuf->fields.sfmt_addcbr.f
5800 int UNUSED written = 0;
5801 IADDR UNUSED pc = abuf->addr;
5802 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5809 tmp_tmpops = FLD (f_indir_pc__byte);
5810 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5811 tmp_carry = CPU (h_cbit);
5812 tmp_newval = ADDCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5815 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
5817 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
5818 SET_H_GR (FLD (f_operand2), opval);
5819 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5824 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), ORIF (ANDIF (LTQI (tmp_tmpopd, 0), GEQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_newval, 0))));
5825 CPU (h_cbit) = opval;
5826 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5829 BI opval = LTQI (tmp_newval, 0);
5830 CPU (h_nbit) = opval;
5831 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5834 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5835 CPU (h_zbit) = opval;
5836 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5839 BI opval = ORIF (ANDIF (ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (GEQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
5840 CPU (h_vbit) = opval;
5841 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5846 CPU (h_xbit) = opval;
5847 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5851 SET_H_INSN_PREFIXED_P (opval);
5852 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5862 CASE (sem, INSN_ADDCWR) : /* add.w ${sconst16}],${Rd} */
5864 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5865 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5866 #define FLD(f) abuf->fields.sfmt_addcwr.f
5867 int UNUSED written = 0;
5868 IADDR UNUSED pc = abuf->addr;
5869 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5876 tmp_tmpops = FLD (f_indir_pc__word);
5877 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5878 tmp_carry = CPU (h_cbit);
5879 tmp_newval = ADDCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5882 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
5884 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
5885 SET_H_GR (FLD (f_operand2), opval);
5886 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5891 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), ORIF (ANDIF (LTHI (tmp_tmpopd, 0), GEHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_newval, 0))));
5892 CPU (h_cbit) = opval;
5893 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5896 BI opval = LTHI (tmp_newval, 0);
5897 CPU (h_nbit) = opval;
5898 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5901 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5902 CPU (h_zbit) = opval;
5903 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5906 BI opval = ORIF (ANDIF (ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (GEHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
5907 CPU (h_vbit) = opval;
5908 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5913 CPU (h_xbit) = opval;
5914 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5918 SET_H_INSN_PREFIXED_P (opval);
5919 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5929 CASE (sem, INSN_ADDCDR) : /* add.d ${const32}],${Rd} */
5931 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5933 #define FLD(f) abuf->fields.sfmt_addcdr.f
5934 int UNUSED written = 0;
5935 IADDR UNUSED pc = abuf->addr;
5936 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
5943 tmp_tmpops = FLD (f_indir_pc__dword);
5944 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
5945 tmp_carry = CPU (h_cbit);
5946 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
5948 SI opval = tmp_newval;
5949 SET_H_GR (FLD (f_operand2), opval);
5950 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5954 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
5955 CPU (h_cbit) = opval;
5956 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
5959 BI opval = LTSI (tmp_newval, 0);
5960 CPU (h_nbit) = opval;
5961 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
5964 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
5965 CPU (h_zbit) = opval;
5966 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
5969 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
5970 CPU (h_vbit) = opval;
5971 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
5976 CPU (h_xbit) = opval;
5977 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
5981 SET_H_INSN_PREFIXED_P (opval);
5982 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
5992 CASE (sem, INSN_ADDCPC) : /* add.d ${sconst32},PC */
5994 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5995 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5996 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
5997 int UNUSED written = 0;
5998 IADDR UNUSED pc = abuf->addr;
6000 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
6006 tmp_offs = FLD (f_indir_pc__dword);
6007 tmp_oldpc = ADDSI (pc, 6);
6008 tmp_newpc = ADDSI (tmp_oldpc, tmp_offs);
6010 USI opval = tmp_newpc;
6011 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6012 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6016 BI opval = ORIF (ANDIF (LTSI (tmp_offs, 0), LTSI (tmp_oldpc, 0)), ORIF (ANDIF (LTSI (tmp_oldpc, 0), GESI (tmp_newpc, 0)), ANDIF (LTSI (tmp_offs, 0), GESI (tmp_newpc, 0))));
6017 CPU (h_cbit) = opval;
6018 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6021 BI opval = LTSI (tmp_newpc, 0);
6022 CPU (h_nbit) = opval;
6023 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6026 BI opval = ANDIF (EQSI (tmp_newpc, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6027 CPU (h_zbit) = opval;
6028 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6031 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_offs, 0), LTSI (tmp_oldpc, 0)), GESI (tmp_newpc, 0)), ANDIF (ANDIF (GESI (tmp_offs, 0), GESI (tmp_oldpc, 0)), LTSI (tmp_newpc, 0)));
6032 CPU (h_vbit) = opval;
6033 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6038 CPU (h_xbit) = opval;
6039 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6043 SET_H_INSN_PREFIXED_P (opval);
6044 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6050 SEM_BRANCH_FINI (vpc);
6055 CASE (sem, INSN_ADDS_B_R) : /* adds.b $Rs,$Rd */
6057 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6058 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6059 #define FLD(f) abuf->fields.sfmt_add_b_r.f
6060 int UNUSED written = 0;
6061 IADDR UNUSED pc = abuf->addr;
6062 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6069 tmp_tmpops = EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
6070 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6071 tmp_carry = CPU (h_cbit);
6072 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6074 SI opval = tmp_newval;
6075 SET_H_GR (FLD (f_operand2), opval);
6076 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6080 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6081 CPU (h_cbit) = opval;
6082 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6085 BI opval = LTSI (tmp_newval, 0);
6086 CPU (h_nbit) = opval;
6087 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6090 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6091 CPU (h_zbit) = opval;
6092 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6095 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6096 CPU (h_vbit) = opval;
6097 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6102 CPU (h_xbit) = opval;
6103 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6107 SET_H_INSN_PREFIXED_P (opval);
6108 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6118 CASE (sem, INSN_ADDS_W_R) : /* adds.w $Rs,$Rd */
6120 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6121 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6122 #define FLD(f) abuf->fields.sfmt_add_b_r.f
6123 int UNUSED written = 0;
6124 IADDR UNUSED pc = abuf->addr;
6125 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6132 tmp_tmpops = EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
6133 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6134 tmp_carry = CPU (h_cbit);
6135 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6137 SI opval = tmp_newval;
6138 SET_H_GR (FLD (f_operand2), opval);
6139 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6143 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6144 CPU (h_cbit) = opval;
6145 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6148 BI opval = LTSI (tmp_newval, 0);
6149 CPU (h_nbit) = opval;
6150 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6153 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6154 CPU (h_zbit) = opval;
6155 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6158 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6159 CPU (h_vbit) = opval;
6160 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6165 CPU (h_xbit) = opval;
6166 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6170 SET_H_INSN_PREFIXED_P (opval);
6171 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6181 CASE (sem, INSN_ADDS_M_B_M) : /* adds-m.b [${Rs}${inc}],$Rd */
6183 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6185 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
6186 int UNUSED written = 0;
6187 IADDR UNUSED pc = abuf->addr;
6188 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6195 tmp_tmpops = EXTQISI (({ SI tmp_addr;
6198 tmp_postinc = FLD (f_memmode);
6199 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
6200 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
6201 ; if (NEBI (tmp_postinc, 0)) {
6203 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
6204 tmp_addr = ADDSI (tmp_addr, 1);
6207 SI opval = tmp_addr;
6208 SET_H_GR (FLD (f_operand1), opval);
6209 written |= (1 << 11);
6210 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6215 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6216 tmp_carry = CPU (h_cbit);
6217 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6219 SI opval = tmp_newval;
6220 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
6221 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6225 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6226 CPU (h_cbit) = opval;
6227 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6230 BI opval = LTSI (tmp_newval, 0);
6231 CPU (h_nbit) = opval;
6232 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6235 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6236 CPU (h_zbit) = opval;
6237 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6240 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6241 CPU (h_vbit) = opval;
6242 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6247 CPU (h_xbit) = opval;
6248 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6252 SET_H_INSN_PREFIXED_P (opval);
6253 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6259 abuf->written = written;
6264 CASE (sem, INSN_ADDS_M_W_M) : /* adds-m.w [${Rs}${inc}],$Rd */
6266 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6268 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
6269 int UNUSED written = 0;
6270 IADDR UNUSED pc = abuf->addr;
6271 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6278 tmp_tmpops = EXTHISI (({ SI tmp_addr;
6281 tmp_postinc = FLD (f_memmode);
6282 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
6283 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
6284 ; if (NEBI (tmp_postinc, 0)) {
6286 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
6287 tmp_addr = ADDSI (tmp_addr, 2);
6290 SI opval = tmp_addr;
6291 SET_H_GR (FLD (f_operand1), opval);
6292 written |= (1 << 11);
6293 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6298 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6299 tmp_carry = CPU (h_cbit);
6300 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6302 SI opval = tmp_newval;
6303 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
6304 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6308 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6309 CPU (h_cbit) = opval;
6310 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6313 BI opval = LTSI (tmp_newval, 0);
6314 CPU (h_nbit) = opval;
6315 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6318 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6319 CPU (h_zbit) = opval;
6320 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6323 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6324 CPU (h_vbit) = opval;
6325 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6330 CPU (h_xbit) = opval;
6331 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6335 SET_H_INSN_PREFIXED_P (opval);
6336 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6342 abuf->written = written;
6347 CASE (sem, INSN_ADDSCBR) : /* [${Rs}${inc}],$Rd */
6349 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6350 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6351 #define FLD(f) abuf->fields.sfmt_addcbr.f
6352 int UNUSED written = 0;
6353 IADDR UNUSED pc = abuf->addr;
6354 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6361 tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
6362 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6363 tmp_carry = CPU (h_cbit);
6364 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6366 SI opval = tmp_newval;
6367 SET_H_GR (FLD (f_operand2), opval);
6368 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6372 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6373 CPU (h_cbit) = opval;
6374 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6377 BI opval = LTSI (tmp_newval, 0);
6378 CPU (h_nbit) = opval;
6379 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6382 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6383 CPU (h_zbit) = opval;
6384 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6387 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6388 CPU (h_vbit) = opval;
6389 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6394 CPU (h_xbit) = opval;
6395 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6399 SET_H_INSN_PREFIXED_P (opval);
6400 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6410 CASE (sem, INSN_ADDSCWR) : /* [${Rs}${inc}],$Rd */
6412 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6413 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6414 #define FLD(f) abuf->fields.sfmt_addcwr.f
6415 int UNUSED written = 0;
6416 IADDR UNUSED pc = abuf->addr;
6417 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6424 tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
6425 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6426 tmp_carry = CPU (h_cbit);
6427 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6429 SI opval = tmp_newval;
6430 SET_H_GR (FLD (f_operand2), opval);
6431 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6435 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6436 CPU (h_cbit) = opval;
6437 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6440 BI opval = LTSI (tmp_newval, 0);
6441 CPU (h_nbit) = opval;
6442 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6445 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6446 CPU (h_zbit) = opval;
6447 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6450 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6451 CPU (h_vbit) = opval;
6452 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6457 CPU (h_xbit) = opval;
6458 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6462 SET_H_INSN_PREFIXED_P (opval);
6463 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6473 CASE (sem, INSN_ADDSPCPC) : /* adds.w [PC],PC */
6475 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6476 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6477 #define FLD(f) abuf->fields.sfmt_empty.f
6478 int UNUSED written = 0;
6479 IADDR UNUSED pc = abuf->addr;
6481 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6487 if (NOTBI (GET_H_INSN_PREFIXED_P ())) {
6488 cgen_rtx_error (current_cpu, "Unexpected adds.w [PC],PC without prefix");
6490 tmp_offs = GETMEMHI (current_cpu, pc, CPU (h_prefixreg_pre_v32));
6491 tmp_oldpc = ADDSI (pc, 2);
6492 tmp_newpc = ADDSI (tmp_oldpc, tmp_offs);
6494 USI opval = tmp_newpc;
6495 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6496 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6500 BI opval = ORIF (ANDIF (LTSI (EXTHISI (tmp_offs), 0), LTSI (tmp_oldpc, 0)), ORIF (ANDIF (LTSI (tmp_oldpc, 0), GESI (tmp_newpc, 0)), ANDIF (LTSI (EXTHISI (tmp_offs), 0), GESI (tmp_newpc, 0))));
6501 CPU (h_cbit) = opval;
6502 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6505 BI opval = LTSI (tmp_newpc, 0);
6506 CPU (h_nbit) = opval;
6507 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6510 BI opval = ANDIF (EQSI (tmp_newpc, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6511 CPU (h_zbit) = opval;
6512 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6515 BI opval = ORIF (ANDIF (ANDIF (LTSI (EXTHISI (tmp_offs), 0), LTSI (tmp_oldpc, 0)), GESI (tmp_newpc, 0)), ANDIF (ANDIF (GESI (EXTHISI (tmp_offs), 0), GESI (tmp_oldpc, 0)), LTSI (tmp_newpc, 0)));
6516 CPU (h_vbit) = opval;
6517 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6522 CPU (h_xbit) = opval;
6523 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6527 SET_H_INSN_PREFIXED_P (opval);
6528 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6534 SEM_BRANCH_FINI (vpc);
6539 CASE (sem, INSN_ADDU_B_R) : /* addu.b $Rs,$Rd */
6541 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6542 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6543 #define FLD(f) abuf->fields.sfmt_add_b_r.f
6544 int UNUSED written = 0;
6545 IADDR UNUSED pc = abuf->addr;
6546 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6553 tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
6554 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6555 tmp_carry = CPU (h_cbit);
6556 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6558 SI opval = tmp_newval;
6559 SET_H_GR (FLD (f_operand2), opval);
6560 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6564 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6565 CPU (h_cbit) = opval;
6566 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6569 BI opval = LTSI (tmp_newval, 0);
6570 CPU (h_nbit) = opval;
6571 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6574 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6575 CPU (h_zbit) = opval;
6576 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6579 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6580 CPU (h_vbit) = opval;
6581 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6586 CPU (h_xbit) = opval;
6587 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6591 SET_H_INSN_PREFIXED_P (opval);
6592 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6602 CASE (sem, INSN_ADDU_W_R) : /* addu.w $Rs,$Rd */
6604 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6605 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6606 #define FLD(f) abuf->fields.sfmt_add_b_r.f
6607 int UNUSED written = 0;
6608 IADDR UNUSED pc = abuf->addr;
6609 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6616 tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
6617 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6618 tmp_carry = CPU (h_cbit);
6619 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6621 SI opval = tmp_newval;
6622 SET_H_GR (FLD (f_operand2), opval);
6623 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6627 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6628 CPU (h_cbit) = opval;
6629 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6632 BI opval = LTSI (tmp_newval, 0);
6633 CPU (h_nbit) = opval;
6634 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6637 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6638 CPU (h_zbit) = opval;
6639 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6642 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6643 CPU (h_vbit) = opval;
6644 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6649 CPU (h_xbit) = opval;
6650 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6654 SET_H_INSN_PREFIXED_P (opval);
6655 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6665 CASE (sem, INSN_ADDU_M_B_M) : /* addu-m.b [${Rs}${inc}],$Rd */
6667 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6668 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6669 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
6670 int UNUSED written = 0;
6671 IADDR UNUSED pc = abuf->addr;
6672 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6679 tmp_tmpops = ZEXTQISI (({ SI tmp_addr;
6682 tmp_postinc = FLD (f_memmode);
6683 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
6684 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
6685 ; if (NEBI (tmp_postinc, 0)) {
6687 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
6688 tmp_addr = ADDSI (tmp_addr, 1);
6691 SI opval = tmp_addr;
6692 SET_H_GR (FLD (f_operand1), opval);
6693 written |= (1 << 11);
6694 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6699 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6700 tmp_carry = CPU (h_cbit);
6701 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6703 SI opval = tmp_newval;
6704 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
6705 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6709 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6710 CPU (h_cbit) = opval;
6711 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6714 BI opval = LTSI (tmp_newval, 0);
6715 CPU (h_nbit) = opval;
6716 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6719 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6720 CPU (h_zbit) = opval;
6721 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6724 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6725 CPU (h_vbit) = opval;
6726 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6731 CPU (h_xbit) = opval;
6732 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6736 SET_H_INSN_PREFIXED_P (opval);
6737 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6743 abuf->written = written;
6748 CASE (sem, INSN_ADDU_M_W_M) : /* addu-m.w [${Rs}${inc}],$Rd */
6750 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6751 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6752 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
6753 int UNUSED written = 0;
6754 IADDR UNUSED pc = abuf->addr;
6755 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6762 tmp_tmpops = ZEXTHISI (({ SI tmp_addr;
6765 tmp_postinc = FLD (f_memmode);
6766 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
6767 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
6768 ; if (NEBI (tmp_postinc, 0)) {
6770 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
6771 tmp_addr = ADDSI (tmp_addr, 2);
6774 SI opval = tmp_addr;
6775 SET_H_GR (FLD (f_operand1), opval);
6776 written |= (1 << 11);
6777 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6782 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6783 tmp_carry = CPU (h_cbit);
6784 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6786 SI opval = tmp_newval;
6787 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
6788 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6792 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6793 CPU (h_cbit) = opval;
6794 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6797 BI opval = LTSI (tmp_newval, 0);
6798 CPU (h_nbit) = opval;
6799 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6802 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6803 CPU (h_zbit) = opval;
6804 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6807 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6808 CPU (h_vbit) = opval;
6809 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6814 CPU (h_xbit) = opval;
6815 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6819 SET_H_INSN_PREFIXED_P (opval);
6820 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6826 abuf->written = written;
6831 CASE (sem, INSN_ADDUCBR) : /* [${Rs}${inc}],$Rd */
6833 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6834 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6835 #define FLD(f) abuf->fields.sfmt_addcbr.f
6836 int UNUSED written = 0;
6837 IADDR UNUSED pc = abuf->addr;
6838 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6845 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
6846 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6847 tmp_carry = CPU (h_cbit);
6848 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6850 SI opval = tmp_newval;
6851 SET_H_GR (FLD (f_operand2), opval);
6852 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6856 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6857 CPU (h_cbit) = opval;
6858 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6861 BI opval = LTSI (tmp_newval, 0);
6862 CPU (h_nbit) = opval;
6863 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6866 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6867 CPU (h_zbit) = opval;
6868 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6871 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6872 CPU (h_vbit) = opval;
6873 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6878 CPU (h_xbit) = opval;
6879 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6883 SET_H_INSN_PREFIXED_P (opval);
6884 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6894 CASE (sem, INSN_ADDUCWR) : /* [${Rs}${inc}],$Rd */
6896 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6897 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6898 #define FLD(f) abuf->fields.sfmt_addcwr.f
6899 int UNUSED written = 0;
6900 IADDR UNUSED pc = abuf->addr;
6901 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6908 tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
6909 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6910 tmp_carry = CPU (h_cbit);
6911 tmp_newval = ADDCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6913 SI opval = tmp_newval;
6914 SET_H_GR (FLD (f_operand2), opval);
6915 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6919 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), ORIF (ANDIF (LTSI (tmp_tmpopd, 0), GESI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_newval, 0))));
6920 CPU (h_cbit) = opval;
6921 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6924 BI opval = LTSI (tmp_newval, 0);
6925 CPU (h_nbit) = opval;
6926 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6929 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6930 CPU (h_zbit) = opval;
6931 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
6934 BI opval = ORIF (ANDIF (ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (GESI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
6935 CPU (h_vbit) = opval;
6936 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
6941 CPU (h_xbit) = opval;
6942 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
6946 SET_H_INSN_PREFIXED_P (opval);
6947 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
6957 CASE (sem, INSN_SUB_B_R) : /* sub.b $Rs,$Rd */
6959 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6960 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6961 #define FLD(f) abuf->fields.sfmt_add_b_r.f
6962 int UNUSED written = 0;
6963 IADDR UNUSED pc = abuf->addr;
6964 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
6971 tmp_tmpops = GET_H_GR (FLD (f_operand1));
6972 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
6973 tmp_carry = CPU (h_cbit);
6974 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
6977 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
6979 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
6980 SET_H_GR (FLD (f_operand2), opval);
6981 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6986 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
6987 CPU (h_cbit) = opval;
6988 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
6991 BI opval = LTQI (tmp_newval, 0);
6992 CPU (h_nbit) = opval;
6993 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
6996 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
6997 CPU (h_zbit) = opval;
6998 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7001 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
7002 CPU (h_vbit) = opval;
7003 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7008 CPU (h_xbit) = opval;
7009 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7013 SET_H_INSN_PREFIXED_P (opval);
7014 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7024 CASE (sem, INSN_SUB_W_R) : /* sub.w $Rs,$Rd */
7026 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7027 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7028 #define FLD(f) abuf->fields.sfmt_add_b_r.f
7029 int UNUSED written = 0;
7030 IADDR UNUSED pc = abuf->addr;
7031 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7038 tmp_tmpops = GET_H_GR (FLD (f_operand1));
7039 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7040 tmp_carry = CPU (h_cbit);
7041 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7044 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
7046 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
7047 SET_H_GR (FLD (f_operand2), opval);
7048 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7053 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
7054 CPU (h_cbit) = opval;
7055 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7058 BI opval = LTHI (tmp_newval, 0);
7059 CPU (h_nbit) = opval;
7060 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7063 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7064 CPU (h_zbit) = opval;
7065 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7068 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
7069 CPU (h_vbit) = opval;
7070 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7075 CPU (h_xbit) = opval;
7076 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7080 SET_H_INSN_PREFIXED_P (opval);
7081 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7091 CASE (sem, INSN_SUB_D_R) : /* sub.d $Rs,$Rd */
7093 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7094 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7095 #define FLD(f) abuf->fields.sfmt_add_b_r.f
7096 int UNUSED written = 0;
7097 IADDR UNUSED pc = abuf->addr;
7098 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7105 tmp_tmpops = GET_H_GR (FLD (f_operand1));
7106 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7107 tmp_carry = CPU (h_cbit);
7108 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7110 SI opval = tmp_newval;
7111 SET_H_GR (FLD (f_operand2), opval);
7112 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7116 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7117 CPU (h_cbit) = opval;
7118 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7121 BI opval = LTSI (tmp_newval, 0);
7122 CPU (h_nbit) = opval;
7123 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7126 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7127 CPU (h_zbit) = opval;
7128 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7131 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7132 CPU (h_vbit) = opval;
7133 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7138 CPU (h_xbit) = opval;
7139 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7143 SET_H_INSN_PREFIXED_P (opval);
7144 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7154 CASE (sem, INSN_SUB_M_B_M) : /* sub-m.b [${Rs}${inc}],${Rd} */
7156 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7157 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7158 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
7159 int UNUSED written = 0;
7160 IADDR UNUSED pc = abuf->addr;
7161 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7168 tmp_tmpops = ({ SI tmp_addr;
7171 tmp_postinc = FLD (f_memmode);
7172 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
7173 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
7174 ; if (NEBI (tmp_postinc, 0)) {
7176 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
7177 tmp_addr = ADDSI (tmp_addr, 1);
7180 SI opval = tmp_addr;
7181 SET_H_GR (FLD (f_operand1), opval);
7182 written |= (1 << 12);
7183 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7188 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7189 tmp_carry = CPU (h_cbit);
7190 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7193 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
7195 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
7196 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
7197 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7202 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
7203 CPU (h_cbit) = opval;
7204 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7207 BI opval = LTQI (tmp_newval, 0);
7208 CPU (h_nbit) = opval;
7209 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7212 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7213 CPU (h_zbit) = opval;
7214 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7217 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
7218 CPU (h_vbit) = opval;
7219 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7224 CPU (h_xbit) = opval;
7225 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7229 SET_H_INSN_PREFIXED_P (opval);
7230 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7236 abuf->written = written;
7241 CASE (sem, INSN_SUB_M_W_M) : /* sub-m.w [${Rs}${inc}],${Rd} */
7243 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7244 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7245 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
7246 int UNUSED written = 0;
7247 IADDR UNUSED pc = abuf->addr;
7248 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7255 tmp_tmpops = ({ SI tmp_addr;
7258 tmp_postinc = FLD (f_memmode);
7259 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
7260 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
7261 ; if (NEBI (tmp_postinc, 0)) {
7263 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
7264 tmp_addr = ADDSI (tmp_addr, 2);
7267 SI opval = tmp_addr;
7268 SET_H_GR (FLD (f_operand1), opval);
7269 written |= (1 << 12);
7270 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7275 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7276 tmp_carry = CPU (h_cbit);
7277 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7280 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
7282 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
7283 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
7284 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7289 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
7290 CPU (h_cbit) = opval;
7291 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7294 BI opval = LTHI (tmp_newval, 0);
7295 CPU (h_nbit) = opval;
7296 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7299 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7300 CPU (h_zbit) = opval;
7301 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7304 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
7305 CPU (h_vbit) = opval;
7306 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7311 CPU (h_xbit) = opval;
7312 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7316 SET_H_INSN_PREFIXED_P (opval);
7317 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7323 abuf->written = written;
7328 CASE (sem, INSN_SUB_M_D_M) : /* sub-m.d [${Rs}${inc}],${Rd} */
7330 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7331 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7332 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
7333 int UNUSED written = 0;
7334 IADDR UNUSED pc = abuf->addr;
7335 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7342 tmp_tmpops = ({ SI tmp_addr;
7345 tmp_postinc = FLD (f_memmode);
7346 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
7347 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
7348 ; if (NEBI (tmp_postinc, 0)) {
7350 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
7351 tmp_addr = ADDSI (tmp_addr, 4);
7354 SI opval = tmp_addr;
7355 SET_H_GR (FLD (f_operand1), opval);
7356 written |= (1 << 11);
7357 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7362 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7363 tmp_carry = CPU (h_cbit);
7364 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7366 SI opval = tmp_newval;
7367 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
7368 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7372 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7373 CPU (h_cbit) = opval;
7374 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7377 BI opval = LTSI (tmp_newval, 0);
7378 CPU (h_nbit) = opval;
7379 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7382 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7383 CPU (h_zbit) = opval;
7384 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7387 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7388 CPU (h_vbit) = opval;
7389 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7394 CPU (h_xbit) = opval;
7395 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7399 SET_H_INSN_PREFIXED_P (opval);
7400 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7406 abuf->written = written;
7411 CASE (sem, INSN_SUBCBR) : /* sub.b ${sconst8}],${Rd} */
7413 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7414 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7415 #define FLD(f) abuf->fields.sfmt_addcbr.f
7416 int UNUSED written = 0;
7417 IADDR UNUSED pc = abuf->addr;
7418 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7425 tmp_tmpops = FLD (f_indir_pc__byte);
7426 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7427 tmp_carry = CPU (h_cbit);
7428 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7431 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
7433 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
7434 SET_H_GR (FLD (f_operand2), opval);
7435 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7440 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
7441 CPU (h_cbit) = opval;
7442 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7445 BI opval = LTQI (tmp_newval, 0);
7446 CPU (h_nbit) = opval;
7447 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7450 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7451 CPU (h_zbit) = opval;
7452 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7455 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
7456 CPU (h_vbit) = opval;
7457 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7462 CPU (h_xbit) = opval;
7463 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7467 SET_H_INSN_PREFIXED_P (opval);
7468 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7478 CASE (sem, INSN_SUBCWR) : /* sub.w ${sconst16}],${Rd} */
7480 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7481 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7482 #define FLD(f) abuf->fields.sfmt_addcwr.f
7483 int UNUSED written = 0;
7484 IADDR UNUSED pc = abuf->addr;
7485 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7492 tmp_tmpops = FLD (f_indir_pc__word);
7493 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7494 tmp_carry = CPU (h_cbit);
7495 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7498 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
7500 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
7501 SET_H_GR (FLD (f_operand2), opval);
7502 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7507 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
7508 CPU (h_cbit) = opval;
7509 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7512 BI opval = LTHI (tmp_newval, 0);
7513 CPU (h_nbit) = opval;
7514 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7517 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7518 CPU (h_zbit) = opval;
7519 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7522 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
7523 CPU (h_vbit) = opval;
7524 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7529 CPU (h_xbit) = opval;
7530 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7534 SET_H_INSN_PREFIXED_P (opval);
7535 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7545 CASE (sem, INSN_SUBCDR) : /* sub.d ${const32}],${Rd} */
7547 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7548 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7549 #define FLD(f) abuf->fields.sfmt_addcdr.f
7550 int UNUSED written = 0;
7551 IADDR UNUSED pc = abuf->addr;
7552 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
7559 tmp_tmpops = FLD (f_indir_pc__dword);
7560 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7561 tmp_carry = CPU (h_cbit);
7562 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7564 SI opval = tmp_newval;
7565 SET_H_GR (FLD (f_operand2), opval);
7566 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7570 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7571 CPU (h_cbit) = opval;
7572 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7575 BI opval = LTSI (tmp_newval, 0);
7576 CPU (h_nbit) = opval;
7577 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7580 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7581 CPU (h_zbit) = opval;
7582 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7585 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7586 CPU (h_vbit) = opval;
7587 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7592 CPU (h_xbit) = opval;
7593 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7597 SET_H_INSN_PREFIXED_P (opval);
7598 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7608 CASE (sem, INSN_SUBS_B_R) : /* subs.b $Rs,$Rd */
7610 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7611 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7612 #define FLD(f) abuf->fields.sfmt_add_b_r.f
7613 int UNUSED written = 0;
7614 IADDR UNUSED pc = abuf->addr;
7615 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7622 tmp_tmpops = EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
7623 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7624 tmp_carry = CPU (h_cbit);
7625 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7627 SI opval = tmp_newval;
7628 SET_H_GR (FLD (f_operand2), opval);
7629 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7633 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7634 CPU (h_cbit) = opval;
7635 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7638 BI opval = LTSI (tmp_newval, 0);
7639 CPU (h_nbit) = opval;
7640 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7643 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7644 CPU (h_zbit) = opval;
7645 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7648 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7649 CPU (h_vbit) = opval;
7650 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7655 CPU (h_xbit) = opval;
7656 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7660 SET_H_INSN_PREFIXED_P (opval);
7661 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7671 CASE (sem, INSN_SUBS_W_R) : /* subs.w $Rs,$Rd */
7673 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7674 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7675 #define FLD(f) abuf->fields.sfmt_add_b_r.f
7676 int UNUSED written = 0;
7677 IADDR UNUSED pc = abuf->addr;
7678 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7685 tmp_tmpops = EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
7686 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7687 tmp_carry = CPU (h_cbit);
7688 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7690 SI opval = tmp_newval;
7691 SET_H_GR (FLD (f_operand2), opval);
7692 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7696 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7697 CPU (h_cbit) = opval;
7698 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7701 BI opval = LTSI (tmp_newval, 0);
7702 CPU (h_nbit) = opval;
7703 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7706 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7707 CPU (h_zbit) = opval;
7708 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7711 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7712 CPU (h_vbit) = opval;
7713 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7718 CPU (h_xbit) = opval;
7719 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7723 SET_H_INSN_PREFIXED_P (opval);
7724 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7734 CASE (sem, INSN_SUBS_M_B_M) : /* subs-m.b [${Rs}${inc}],$Rd */
7736 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7737 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7738 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
7739 int UNUSED written = 0;
7740 IADDR UNUSED pc = abuf->addr;
7741 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7748 tmp_tmpops = EXTQISI (({ SI tmp_addr;
7751 tmp_postinc = FLD (f_memmode);
7752 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
7753 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
7754 ; if (NEBI (tmp_postinc, 0)) {
7756 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
7757 tmp_addr = ADDSI (tmp_addr, 1);
7760 SI opval = tmp_addr;
7761 SET_H_GR (FLD (f_operand1), opval);
7762 written |= (1 << 11);
7763 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7768 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7769 tmp_carry = CPU (h_cbit);
7770 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7772 SI opval = tmp_newval;
7773 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
7774 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7778 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7779 CPU (h_cbit) = opval;
7780 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7783 BI opval = LTSI (tmp_newval, 0);
7784 CPU (h_nbit) = opval;
7785 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7788 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7789 CPU (h_zbit) = opval;
7790 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7793 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7794 CPU (h_vbit) = opval;
7795 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7800 CPU (h_xbit) = opval;
7801 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7805 SET_H_INSN_PREFIXED_P (opval);
7806 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7812 abuf->written = written;
7817 CASE (sem, INSN_SUBS_M_W_M) : /* subs-m.w [${Rs}${inc}],$Rd */
7819 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7820 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7821 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
7822 int UNUSED written = 0;
7823 IADDR UNUSED pc = abuf->addr;
7824 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
7831 tmp_tmpops = EXTHISI (({ SI tmp_addr;
7834 tmp_postinc = FLD (f_memmode);
7835 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
7836 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
7837 ; if (NEBI (tmp_postinc, 0)) {
7839 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
7840 tmp_addr = ADDSI (tmp_addr, 2);
7843 SI opval = tmp_addr;
7844 SET_H_GR (FLD (f_operand1), opval);
7845 written |= (1 << 11);
7846 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7851 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7852 tmp_carry = CPU (h_cbit);
7853 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7855 SI opval = tmp_newval;
7856 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
7857 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7861 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7862 CPU (h_cbit) = opval;
7863 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7866 BI opval = LTSI (tmp_newval, 0);
7867 CPU (h_nbit) = opval;
7868 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7871 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7872 CPU (h_zbit) = opval;
7873 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7876 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7877 CPU (h_vbit) = opval;
7878 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7883 CPU (h_xbit) = opval;
7884 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7888 SET_H_INSN_PREFIXED_P (opval);
7889 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7895 abuf->written = written;
7900 CASE (sem, INSN_SUBSCBR) : /* [${Rs}${inc}],$Rd */
7902 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7903 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7904 #define FLD(f) abuf->fields.sfmt_addcbr.f
7905 int UNUSED written = 0;
7906 IADDR UNUSED pc = abuf->addr;
7907 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7914 tmp_tmpops = EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
7915 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7916 tmp_carry = CPU (h_cbit);
7917 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7919 SI opval = tmp_newval;
7920 SET_H_GR (FLD (f_operand2), opval);
7921 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7925 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7926 CPU (h_cbit) = opval;
7927 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7930 BI opval = LTSI (tmp_newval, 0);
7931 CPU (h_nbit) = opval;
7932 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7935 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7936 CPU (h_zbit) = opval;
7937 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
7940 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
7941 CPU (h_vbit) = opval;
7942 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
7947 CPU (h_xbit) = opval;
7948 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
7952 SET_H_INSN_PREFIXED_P (opval);
7953 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
7963 CASE (sem, INSN_SUBSCWR) : /* [${Rs}${inc}],$Rd */
7965 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7966 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7967 #define FLD(f) abuf->fields.sfmt_addcwr.f
7968 int UNUSED written = 0;
7969 IADDR UNUSED pc = abuf->addr;
7970 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7977 tmp_tmpops = EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
7978 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
7979 tmp_carry = CPU (h_cbit);
7980 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
7982 SI opval = tmp_newval;
7983 SET_H_GR (FLD (f_operand2), opval);
7984 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7988 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
7989 CPU (h_cbit) = opval;
7990 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
7993 BI opval = LTSI (tmp_newval, 0);
7994 CPU (h_nbit) = opval;
7995 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
7998 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
7999 CPU (h_zbit) = opval;
8000 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8003 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8004 CPU (h_vbit) = opval;
8005 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8010 CPU (h_xbit) = opval;
8011 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8015 SET_H_INSN_PREFIXED_P (opval);
8016 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8026 CASE (sem, INSN_SUBU_B_R) : /* subu.b $Rs,$Rd */
8028 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8029 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8030 #define FLD(f) abuf->fields.sfmt_add_b_r.f
8031 int UNUSED written = 0;
8032 IADDR UNUSED pc = abuf->addr;
8033 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8040 tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
8041 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8042 tmp_carry = CPU (h_cbit);
8043 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8045 SI opval = tmp_newval;
8046 SET_H_GR (FLD (f_operand2), opval);
8047 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8051 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8052 CPU (h_cbit) = opval;
8053 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8056 BI opval = LTSI (tmp_newval, 0);
8057 CPU (h_nbit) = opval;
8058 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8061 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8062 CPU (h_zbit) = opval;
8063 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8066 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8067 CPU (h_vbit) = opval;
8068 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8073 CPU (h_xbit) = opval;
8074 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8078 SET_H_INSN_PREFIXED_P (opval);
8079 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8089 CASE (sem, INSN_SUBU_W_R) : /* subu.w $Rs,$Rd */
8091 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8092 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8093 #define FLD(f) abuf->fields.sfmt_add_b_r.f
8094 int UNUSED written = 0;
8095 IADDR UNUSED pc = abuf->addr;
8096 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8103 tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
8104 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8105 tmp_carry = CPU (h_cbit);
8106 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8108 SI opval = tmp_newval;
8109 SET_H_GR (FLD (f_operand2), opval);
8110 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8114 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8115 CPU (h_cbit) = opval;
8116 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8119 BI opval = LTSI (tmp_newval, 0);
8120 CPU (h_nbit) = opval;
8121 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8124 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8125 CPU (h_zbit) = opval;
8126 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8129 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8130 CPU (h_vbit) = opval;
8131 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8136 CPU (h_xbit) = opval;
8137 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8141 SET_H_INSN_PREFIXED_P (opval);
8142 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8152 CASE (sem, INSN_SUBU_M_B_M) : /* subu-m.b [${Rs}${inc}],$Rd */
8154 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8155 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8156 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
8157 int UNUSED written = 0;
8158 IADDR UNUSED pc = abuf->addr;
8159 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8166 tmp_tmpops = ZEXTQISI (({ SI tmp_addr;
8169 tmp_postinc = FLD (f_memmode);
8170 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
8171 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
8172 ; if (NEBI (tmp_postinc, 0)) {
8174 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
8175 tmp_addr = ADDSI (tmp_addr, 1);
8178 SI opval = tmp_addr;
8179 SET_H_GR (FLD (f_operand1), opval);
8180 written |= (1 << 11);
8181 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8186 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8187 tmp_carry = CPU (h_cbit);
8188 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8190 SI opval = tmp_newval;
8191 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
8192 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8196 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8197 CPU (h_cbit) = opval;
8198 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8201 BI opval = LTSI (tmp_newval, 0);
8202 CPU (h_nbit) = opval;
8203 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8206 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8207 CPU (h_zbit) = opval;
8208 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8211 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8212 CPU (h_vbit) = opval;
8213 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8218 CPU (h_xbit) = opval;
8219 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8223 SET_H_INSN_PREFIXED_P (opval);
8224 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8230 abuf->written = written;
8235 CASE (sem, INSN_SUBU_M_W_M) : /* subu-m.w [${Rs}${inc}],$Rd */
8237 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8238 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8239 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
8240 int UNUSED written = 0;
8241 IADDR UNUSED pc = abuf->addr;
8242 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8249 tmp_tmpops = ZEXTHISI (({ SI tmp_addr;
8252 tmp_postinc = FLD (f_memmode);
8253 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
8254 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
8255 ; if (NEBI (tmp_postinc, 0)) {
8257 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
8258 tmp_addr = ADDSI (tmp_addr, 2);
8261 SI opval = tmp_addr;
8262 SET_H_GR (FLD (f_operand1), opval);
8263 written |= (1 << 11);
8264 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8269 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8270 tmp_carry = CPU (h_cbit);
8271 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8273 SI opval = tmp_newval;
8274 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
8275 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8279 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8280 CPU (h_cbit) = opval;
8281 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8284 BI opval = LTSI (tmp_newval, 0);
8285 CPU (h_nbit) = opval;
8286 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8289 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8290 CPU (h_zbit) = opval;
8291 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8294 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8295 CPU (h_vbit) = opval;
8296 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8301 CPU (h_xbit) = opval;
8302 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8306 SET_H_INSN_PREFIXED_P (opval);
8307 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8313 abuf->written = written;
8318 CASE (sem, INSN_SUBUCBR) : /* [${Rs}${inc}],$Rd */
8320 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8321 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8322 #define FLD(f) abuf->fields.sfmt_addcbr.f
8323 int UNUSED written = 0;
8324 IADDR UNUSED pc = abuf->addr;
8325 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8332 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
8333 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8334 tmp_carry = CPU (h_cbit);
8335 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8337 SI opval = tmp_newval;
8338 SET_H_GR (FLD (f_operand2), opval);
8339 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8343 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8344 CPU (h_cbit) = opval;
8345 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8348 BI opval = LTSI (tmp_newval, 0);
8349 CPU (h_nbit) = opval;
8350 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8353 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8354 CPU (h_zbit) = opval;
8355 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8358 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8359 CPU (h_vbit) = opval;
8360 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8365 CPU (h_xbit) = opval;
8366 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8370 SET_H_INSN_PREFIXED_P (opval);
8371 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8381 CASE (sem, INSN_SUBUCWR) : /* [${Rs}${inc}],$Rd */
8383 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8384 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8385 #define FLD(f) abuf->fields.sfmt_addcwr.f
8386 int UNUSED written = 0;
8387 IADDR UNUSED pc = abuf->addr;
8388 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8395 tmp_tmpops = ZEXTHISI (TRUNCSIHI (FLD (f_indir_pc__word)));
8396 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
8397 tmp_carry = CPU (h_cbit);
8398 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8400 SI opval = tmp_newval;
8401 SET_H_GR (FLD (f_operand2), opval);
8402 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8406 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8407 CPU (h_cbit) = opval;
8408 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8411 BI opval = LTSI (tmp_newval, 0);
8412 CPU (h_nbit) = opval;
8413 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8416 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8417 CPU (h_zbit) = opval;
8418 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8421 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8422 CPU (h_vbit) = opval;
8423 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8428 CPU (h_xbit) = opval;
8429 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8433 SET_H_INSN_PREFIXED_P (opval);
8434 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8444 CASE (sem, INSN_ADDI_B_R) : /* addi.b ${Rs-dfield}.m,${Rd-sfield} */
8446 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8447 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8448 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
8449 int UNUSED written = 0;
8450 IADDR UNUSED pc = abuf->addr;
8451 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8455 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 1));
8456 SET_H_GR (FLD (f_operand1), opval);
8457 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8462 CPU (h_xbit) = opval;
8463 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8467 SET_H_INSN_PREFIXED_P (opval);
8468 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8477 CASE (sem, INSN_ADDI_W_R) : /* addi.w ${Rs-dfield}.m,${Rd-sfield} */
8479 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8480 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8481 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
8482 int UNUSED written = 0;
8483 IADDR UNUSED pc = abuf->addr;
8484 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8488 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 2));
8489 SET_H_GR (FLD (f_operand1), opval);
8490 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8495 CPU (h_xbit) = opval;
8496 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8500 SET_H_INSN_PREFIXED_P (opval);
8501 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8510 CASE (sem, INSN_ADDI_D_R) : /* addi.d ${Rs-dfield}.m,${Rd-sfield} */
8512 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8513 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8514 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
8515 int UNUSED written = 0;
8516 IADDR UNUSED pc = abuf->addr;
8517 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8521 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 4));
8522 SET_H_GR (FLD (f_operand1), opval);
8523 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8528 CPU (h_xbit) = opval;
8529 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8533 SET_H_INSN_PREFIXED_P (opval);
8534 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8543 CASE (sem, INSN_NEG_B_R) : /* neg.b $Rs,$Rd */
8545 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8546 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8547 #define FLD(f) abuf->fields.sfmt_add_b_r.f
8548 int UNUSED written = 0;
8549 IADDR UNUSED pc = abuf->addr;
8550 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8557 tmp_tmpops = GET_H_GR (FLD (f_operand1));
8559 tmp_carry = CPU (h_cbit);
8560 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8563 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
8565 SI opval = ORSI (ANDSI (tmp_newval, 255), ANDSI (tmp_oldregval, 0xffffff00));
8566 SET_H_GR (FLD (f_operand2), opval);
8567 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8572 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
8573 CPU (h_cbit) = opval;
8574 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8577 BI opval = LTQI (tmp_newval, 0);
8578 CPU (h_nbit) = opval;
8579 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8582 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8583 CPU (h_zbit) = opval;
8584 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8587 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
8588 CPU (h_vbit) = opval;
8589 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8594 CPU (h_xbit) = opval;
8595 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8599 SET_H_INSN_PREFIXED_P (opval);
8600 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8610 CASE (sem, INSN_NEG_W_R) : /* neg.w $Rs,$Rd */
8612 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8613 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8614 #define FLD(f) abuf->fields.sfmt_add_b_r.f
8615 int UNUSED written = 0;
8616 IADDR UNUSED pc = abuf->addr;
8617 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8624 tmp_tmpops = GET_H_GR (FLD (f_operand1));
8626 tmp_carry = CPU (h_cbit);
8627 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8630 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
8632 SI opval = ORSI (ANDSI (tmp_newval, 65535), ANDSI (tmp_oldregval, 0xffff0000));
8633 SET_H_GR (FLD (f_operand2), opval);
8634 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8639 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
8640 CPU (h_cbit) = opval;
8641 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8644 BI opval = LTHI (tmp_newval, 0);
8645 CPU (h_nbit) = opval;
8646 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8649 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8650 CPU (h_zbit) = opval;
8651 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8654 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
8655 CPU (h_vbit) = opval;
8656 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8661 CPU (h_xbit) = opval;
8662 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8666 SET_H_INSN_PREFIXED_P (opval);
8667 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8677 CASE (sem, INSN_NEG_D_R) : /* neg.d $Rs,$Rd */
8679 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8680 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8681 #define FLD(f) abuf->fields.sfmt_add_b_r.f
8682 int UNUSED written = 0;
8683 IADDR UNUSED pc = abuf->addr;
8684 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8691 tmp_tmpops = GET_H_GR (FLD (f_operand1));
8693 tmp_carry = CPU (h_cbit);
8694 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8696 SI opval = tmp_newval;
8697 SET_H_GR (FLD (f_operand2), opval);
8698 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8702 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8703 CPU (h_cbit) = opval;
8704 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8707 BI opval = LTSI (tmp_newval, 0);
8708 CPU (h_nbit) = opval;
8709 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8712 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8713 CPU (h_zbit) = opval;
8714 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8717 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8718 CPU (h_vbit) = opval;
8719 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8724 CPU (h_xbit) = opval;
8725 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8729 SET_H_INSN_PREFIXED_P (opval);
8730 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8740 CASE (sem, INSN_TEST_M_B_M) : /* test-m.b [${Rs}${inc}] */
8742 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8743 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8744 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
8745 int UNUSED written = 0;
8746 IADDR UNUSED pc = abuf->addr;
8747 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8751 tmp_tmpd = ({ SI tmp_addr;
8754 tmp_postinc = FLD (f_memmode);
8755 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
8756 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
8757 ; if (NEBI (tmp_postinc, 0)) {
8759 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
8760 tmp_addr = ADDSI (tmp_addr, 1);
8763 SI opval = tmp_addr;
8764 SET_H_GR (FLD (f_operand1), opval);
8765 written |= (1 << 8);
8766 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8777 tmp_tmpopd = tmp_tmpd;
8778 tmp_carry = CPU (h_cbit);
8779 tmp_newval = SUBCQI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8783 BI opval = ORIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), ORIF (ANDIF (GEQI (tmp_tmpopd, 0), LTQI (tmp_newval, 0)), ANDIF (LTQI (tmp_tmpops, 0), LTQI (tmp_newval, 0))));
8784 CPU (h_cbit) = opval;
8785 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8788 BI opval = LTQI (tmp_newval, 0);
8789 CPU (h_nbit) = opval;
8790 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8793 BI opval = ANDIF (EQQI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8794 CPU (h_zbit) = opval;
8795 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8798 BI opval = ORIF (ANDIF (ANDIF (GEQI (tmp_tmpops, 0), LTQI (tmp_tmpopd, 0)), GEQI (tmp_newval, 0)), ANDIF (ANDIF (LTQI (tmp_tmpops, 0), GEQI (tmp_tmpopd, 0)), LTQI (tmp_newval, 0)));
8799 CPU (h_vbit) = opval;
8800 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8805 CPU (h_xbit) = opval;
8806 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8810 SET_H_INSN_PREFIXED_P (opval);
8811 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8818 abuf->written = written;
8823 CASE (sem, INSN_TEST_M_W_M) : /* test-m.w [${Rs}${inc}] */
8825 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8826 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8827 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
8828 int UNUSED written = 0;
8829 IADDR UNUSED pc = abuf->addr;
8830 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8834 tmp_tmpd = ({ SI tmp_addr;
8837 tmp_postinc = FLD (f_memmode);
8838 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
8839 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
8840 ; if (NEBI (tmp_postinc, 0)) {
8842 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
8843 tmp_addr = ADDSI (tmp_addr, 2);
8846 SI opval = tmp_addr;
8847 SET_H_GR (FLD (f_operand1), opval);
8848 written |= (1 << 8);
8849 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8860 tmp_tmpopd = tmp_tmpd;
8861 tmp_carry = CPU (h_cbit);
8862 tmp_newval = SUBCHI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8866 BI opval = ORIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), ORIF (ANDIF (GEHI (tmp_tmpopd, 0), LTHI (tmp_newval, 0)), ANDIF (LTHI (tmp_tmpops, 0), LTHI (tmp_newval, 0))));
8867 CPU (h_cbit) = opval;
8868 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8871 BI opval = LTHI (tmp_newval, 0);
8872 CPU (h_nbit) = opval;
8873 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8876 BI opval = ANDIF (EQHI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8877 CPU (h_zbit) = opval;
8878 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8881 BI opval = ORIF (ANDIF (ANDIF (GEHI (tmp_tmpops, 0), LTHI (tmp_tmpopd, 0)), GEHI (tmp_newval, 0)), ANDIF (ANDIF (LTHI (tmp_tmpops, 0), GEHI (tmp_tmpopd, 0)), LTHI (tmp_newval, 0)));
8882 CPU (h_vbit) = opval;
8883 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8888 CPU (h_xbit) = opval;
8889 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8893 SET_H_INSN_PREFIXED_P (opval);
8894 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8901 abuf->written = written;
8906 CASE (sem, INSN_TEST_M_D_M) : /* test-m.d [${Rs}${inc}] */
8908 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8909 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8910 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
8911 int UNUSED written = 0;
8912 IADDR UNUSED pc = abuf->addr;
8913 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
8917 tmp_tmpd = ({ SI tmp_addr;
8920 tmp_postinc = FLD (f_memmode);
8921 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
8922 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
8923 ; if (NEBI (tmp_postinc, 0)) {
8925 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
8926 tmp_addr = ADDSI (tmp_addr, 4);
8929 SI opval = tmp_addr;
8930 SET_H_GR (FLD (f_operand1), opval);
8931 written |= (1 << 8);
8932 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
8943 tmp_tmpopd = tmp_tmpd;
8944 tmp_carry = CPU (h_cbit);
8945 tmp_newval = SUBCSI (tmp_tmpopd, tmp_tmpops, ((EQBI (CPU (h_xbit), 0)) ? (0) : (tmp_carry)));
8949 BI opval = ORIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), ORIF (ANDIF (GESI (tmp_tmpopd, 0), LTSI (tmp_newval, 0)), ANDIF (LTSI (tmp_tmpops, 0), LTSI (tmp_newval, 0))));
8950 CPU (h_cbit) = opval;
8951 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
8954 BI opval = LTSI (tmp_newval, 0);
8955 CPU (h_nbit) = opval;
8956 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
8959 BI opval = ANDIF (EQSI (tmp_newval, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
8960 CPU (h_zbit) = opval;
8961 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
8964 BI opval = ORIF (ANDIF (ANDIF (GESI (tmp_tmpops, 0), LTSI (tmp_tmpopd, 0)), GESI (tmp_newval, 0)), ANDIF (ANDIF (LTSI (tmp_tmpops, 0), GESI (tmp_tmpopd, 0)), LTSI (tmp_newval, 0)));
8965 CPU (h_vbit) = opval;
8966 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
8971 CPU (h_xbit) = opval;
8972 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
8976 SET_H_INSN_PREFIXED_P (opval);
8977 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
8984 abuf->written = written;
8989 CASE (sem, INSN_MOVE_R_M_B_M) : /* move-r-m.b ${Rs-dfield},[${Rd-sfield}${inc}] */
8991 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
8992 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8993 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
8994 int UNUSED written = 0;
8995 IADDR UNUSED pc = abuf->addr;
8996 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9000 tmp_tmpd = GET_H_GR (FLD (f_operand2));
9004 tmp_postinc = FLD (f_memmode);
9005 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
9006 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
9007 if (EQBI (CPU (h_pbit), 0)) {
9010 QI opval = tmp_tmpd;
9011 SETMEMQI (current_cpu, pc, tmp_addr, opval);
9012 written |= (1 << 10);
9013 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9016 BI opval = CPU (h_pbit);
9017 CPU (h_cbit) = opval;
9018 written |= (1 << 9);
9019 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9025 CPU (h_cbit) = opval;
9026 written |= (1 << 9);
9027 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9032 QI opval = tmp_tmpd;
9033 SETMEMQI (current_cpu, pc, tmp_addr, opval);
9034 written |= (1 << 10);
9035 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9038 if (NEBI (tmp_postinc, 0)) {
9040 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
9041 tmp_addr = ADDSI (tmp_addr, 1);
9044 SI opval = tmp_addr;
9045 SET_H_GR (FLD (f_operand1), opval);
9046 written |= (1 << 8);
9047 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9055 CPU (h_xbit) = opval;
9056 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9060 SET_H_INSN_PREFIXED_P (opval);
9061 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9066 abuf->written = written;
9071 CASE (sem, INSN_MOVE_R_M_W_M) : /* move-r-m.w ${Rs-dfield},[${Rd-sfield}${inc}] */
9073 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9074 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9075 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
9076 int UNUSED written = 0;
9077 IADDR UNUSED pc = abuf->addr;
9078 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9082 tmp_tmpd = GET_H_GR (FLD (f_operand2));
9086 tmp_postinc = FLD (f_memmode);
9087 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
9088 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
9089 if (EQBI (CPU (h_pbit), 0)) {
9092 HI opval = tmp_tmpd;
9093 SETMEMHI (current_cpu, pc, tmp_addr, opval);
9094 written |= (1 << 10);
9095 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9098 BI opval = CPU (h_pbit);
9099 CPU (h_cbit) = opval;
9100 written |= (1 << 9);
9101 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9107 CPU (h_cbit) = opval;
9108 written |= (1 << 9);
9109 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9114 HI opval = tmp_tmpd;
9115 SETMEMHI (current_cpu, pc, tmp_addr, opval);
9116 written |= (1 << 10);
9117 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9120 if (NEBI (tmp_postinc, 0)) {
9122 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
9123 tmp_addr = ADDSI (tmp_addr, 2);
9126 SI opval = tmp_addr;
9127 SET_H_GR (FLD (f_operand1), opval);
9128 written |= (1 << 8);
9129 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9137 CPU (h_xbit) = opval;
9138 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9142 SET_H_INSN_PREFIXED_P (opval);
9143 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9148 abuf->written = written;
9153 CASE (sem, INSN_MOVE_R_M_D_M) : /* move-r-m.d ${Rs-dfield},[${Rd-sfield}${inc}] */
9155 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9156 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9157 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
9158 int UNUSED written = 0;
9159 IADDR UNUSED pc = abuf->addr;
9160 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9164 tmp_tmpd = GET_H_GR (FLD (f_operand2));
9168 tmp_postinc = FLD (f_memmode);
9169 tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
9170 if (ANDIF (GET_H_V32_NON_V32 (), NEBI (CPU (h_xbit), 0))) {
9171 if (EQBI (CPU (h_pbit), 0)) {
9174 SI opval = tmp_tmpd;
9175 SETMEMSI (current_cpu, pc, tmp_addr, opval);
9176 written |= (1 << 10);
9177 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9180 BI opval = CPU (h_pbit);
9181 CPU (h_cbit) = opval;
9182 written |= (1 << 9);
9183 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9189 CPU (h_cbit) = opval;
9190 written |= (1 << 9);
9191 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9196 SI opval = tmp_tmpd;
9197 SETMEMSI (current_cpu, pc, tmp_addr, opval);
9198 written |= (1 << 10);
9199 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
9202 if (NEBI (tmp_postinc, 0)) {
9204 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
9205 tmp_addr = ADDSI (tmp_addr, 4);
9208 SI opval = tmp_addr;
9209 SET_H_GR (FLD (f_operand1), opval);
9210 written |= (1 << 8);
9211 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9219 CPU (h_xbit) = opval;
9220 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9224 SET_H_INSN_PREFIXED_P (opval);
9225 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9230 abuf->written = written;
9235 CASE (sem, INSN_MULS_B) : /* muls.b $Rs,$Rd */
9237 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9238 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9239 #define FLD(f) abuf->fields.sfmt_muls_b.f
9240 int UNUSED written = 0;
9241 IADDR UNUSED pc = abuf->addr;
9242 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9248 tmp_src1 = EXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
9249 tmp_src2 = EXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand2))));
9250 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9252 SI opval = TRUNCDISI (tmp_tmpr);
9253 SET_H_GR (FLD (f_operand2), opval);
9254 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9257 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9258 SET_H_SR (((UINT) 7), opval);
9259 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9263 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9264 CPU (h_cbit) = opval;
9265 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9268 BI opval = LTDI (tmp_tmpr, 0);
9269 CPU (h_nbit) = opval;
9270 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9273 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9274 CPU (h_zbit) = opval;
9275 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9278 BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
9279 CPU (h_vbit) = opval;
9280 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9285 CPU (h_xbit) = opval;
9286 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9290 SET_H_INSN_PREFIXED_P (opval);
9291 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9301 CASE (sem, INSN_MULS_W) : /* muls.w $Rs,$Rd */
9303 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9305 #define FLD(f) abuf->fields.sfmt_muls_b.f
9306 int UNUSED written = 0;
9307 IADDR UNUSED pc = abuf->addr;
9308 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9314 tmp_src1 = EXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
9315 tmp_src2 = EXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand2))));
9316 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9318 SI opval = TRUNCDISI (tmp_tmpr);
9319 SET_H_GR (FLD (f_operand2), opval);
9320 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9323 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9324 SET_H_SR (((UINT) 7), opval);
9325 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9329 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9330 CPU (h_cbit) = opval;
9331 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9334 BI opval = LTDI (tmp_tmpr, 0);
9335 CPU (h_nbit) = opval;
9336 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9339 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9340 CPU (h_zbit) = opval;
9341 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9344 BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
9345 CPU (h_vbit) = opval;
9346 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9351 CPU (h_xbit) = opval;
9352 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9356 SET_H_INSN_PREFIXED_P (opval);
9357 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9367 CASE (sem, INSN_MULS_D) : /* muls.d $Rs,$Rd */
9369 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9370 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9371 #define FLD(f) abuf->fields.sfmt_muls_b.f
9372 int UNUSED written = 0;
9373 IADDR UNUSED pc = abuf->addr;
9374 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9380 tmp_src1 = EXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand1))));
9381 tmp_src2 = EXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand2))));
9382 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9384 SI opval = TRUNCDISI (tmp_tmpr);
9385 SET_H_GR (FLD (f_operand2), opval);
9386 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9389 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9390 SET_H_SR (((UINT) 7), opval);
9391 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9395 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9396 CPU (h_cbit) = opval;
9397 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9400 BI opval = LTDI (tmp_tmpr, 0);
9401 CPU (h_nbit) = opval;
9402 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9405 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9406 CPU (h_zbit) = opval;
9407 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9410 BI opval = NEDI (tmp_tmpr, EXTSIDI (TRUNCDISI (tmp_tmpr)));
9411 CPU (h_vbit) = opval;
9412 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9417 CPU (h_xbit) = opval;
9418 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9422 SET_H_INSN_PREFIXED_P (opval);
9423 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9433 CASE (sem, INSN_MULU_B) : /* mulu.b $Rs,$Rd */
9435 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9436 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9437 #define FLD(f) abuf->fields.sfmt_muls_b.f
9438 int UNUSED written = 0;
9439 IADDR UNUSED pc = abuf->addr;
9440 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9446 tmp_src1 = ZEXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
9447 tmp_src2 = ZEXTQIDI (TRUNCSIQI (GET_H_GR (FLD (f_operand2))));
9448 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9450 SI opval = TRUNCDISI (tmp_tmpr);
9451 SET_H_GR (FLD (f_operand2), opval);
9452 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9455 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9456 SET_H_SR (((UINT) 7), opval);
9457 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9461 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9462 CPU (h_cbit) = opval;
9463 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9466 BI opval = LTDI (tmp_tmpr, 0);
9467 CPU (h_nbit) = opval;
9468 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9471 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9472 CPU (h_zbit) = opval;
9473 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9476 BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
9477 CPU (h_vbit) = opval;
9478 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9483 CPU (h_xbit) = opval;
9484 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9488 SET_H_INSN_PREFIXED_P (opval);
9489 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9499 CASE (sem, INSN_MULU_W) : /* mulu.w $Rs,$Rd */
9501 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9502 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9503 #define FLD(f) abuf->fields.sfmt_muls_b.f
9504 int UNUSED written = 0;
9505 IADDR UNUSED pc = abuf->addr;
9506 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9512 tmp_src1 = ZEXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
9513 tmp_src2 = ZEXTHIDI (TRUNCSIHI (GET_H_GR (FLD (f_operand2))));
9514 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9516 SI opval = TRUNCDISI (tmp_tmpr);
9517 SET_H_GR (FLD (f_operand2), opval);
9518 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9521 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9522 SET_H_SR (((UINT) 7), opval);
9523 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9527 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9528 CPU (h_cbit) = opval;
9529 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9532 BI opval = LTDI (tmp_tmpr, 0);
9533 CPU (h_nbit) = opval;
9534 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9537 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9538 CPU (h_zbit) = opval;
9539 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9542 BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
9543 CPU (h_vbit) = opval;
9544 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9549 CPU (h_xbit) = opval;
9550 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9554 SET_H_INSN_PREFIXED_P (opval);
9555 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9565 CASE (sem, INSN_MULU_D) : /* mulu.d $Rs,$Rd */
9567 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9568 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9569 #define FLD(f) abuf->fields.sfmt_muls_b.f
9570 int UNUSED written = 0;
9571 IADDR UNUSED pc = abuf->addr;
9572 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9578 tmp_src1 = ZEXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand1))));
9579 tmp_src2 = ZEXTSIDI (TRUNCSISI (GET_H_GR (FLD (f_operand2))));
9580 tmp_tmpr = MULDI (tmp_src1, tmp_src2);
9582 SI opval = TRUNCDISI (tmp_tmpr);
9583 SET_H_GR (FLD (f_operand2), opval);
9584 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9587 SI opval = TRUNCDISI (SRLDI (tmp_tmpr, 32));
9588 SET_H_SR (((UINT) 7), opval);
9589 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
9593 BI opval = ANDIF (GET_H_V32_NON_V32 (), CPU (h_cbit));
9594 CPU (h_cbit) = opval;
9595 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
9598 BI opval = LTDI (tmp_tmpr, 0);
9599 CPU (h_nbit) = opval;
9600 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9603 BI opval = ANDIF (EQDI (tmp_tmpr, 0), ORIF (CPU (h_zbit), NOTBI (CPU (h_xbit))));
9604 CPU (h_zbit) = opval;
9605 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9608 BI opval = NEDI (tmp_tmpr, ZEXTSIDI (TRUNCDISI (tmp_tmpr)));
9609 CPU (h_vbit) = opval;
9610 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
9615 CPU (h_xbit) = opval;
9616 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9620 SET_H_INSN_PREFIXED_P (opval);
9621 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9631 CASE (sem, INSN_MSTEP) : /* mstep $Rs,$Rd */
9633 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9634 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9635 #define FLD(f) abuf->fields.sfmt_muls_b.f
9636 int UNUSED written = 0;
9637 IADDR UNUSED pc = abuf->addr;
9638 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9643 tmp_tmps = GET_H_GR (FLD (f_operand1));
9644 tmp_tmpd = ADDSI (SLLSI (GET_H_GR (FLD (f_operand2)), 1), ((CPU (h_nbit)) ? (tmp_tmps) : (0)));
9646 SI opval = tmp_tmpd;
9647 SET_H_GR (FLD (f_operand2), opval);
9648 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9652 BI opval = LTSI (tmp_tmpd, 0);
9653 CPU (h_nbit) = opval;
9654 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9657 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9658 CPU (h_zbit) = opval;
9659 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9661 SET_H_CBIT_MOVE (0);
9662 SET_H_VBIT_MOVE (0);
9666 CPU (h_xbit) = opval;
9667 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9671 SET_H_INSN_PREFIXED_P (opval);
9672 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9682 CASE (sem, INSN_DSTEP) : /* dstep $Rs,$Rd */
9684 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9685 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9686 #define FLD(f) abuf->fields.sfmt_muls_b.f
9687 int UNUSED written = 0;
9688 IADDR UNUSED pc = abuf->addr;
9689 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9695 tmp_tmps = GET_H_GR (FLD (f_operand1));
9696 tmp_tmp = SLLSI (GET_H_GR (FLD (f_operand2)), 1);
9697 tmp_tmpd = ((GEUSI (tmp_tmp, tmp_tmps)) ? (SUBSI (tmp_tmp, tmp_tmps)) : (tmp_tmp));
9699 SI opval = tmp_tmpd;
9700 SET_H_GR (FLD (f_operand2), opval);
9701 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9705 BI opval = LTSI (tmp_tmpd, 0);
9706 CPU (h_nbit) = opval;
9707 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9710 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9711 CPU (h_zbit) = opval;
9712 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9714 SET_H_CBIT_MOVE (0);
9715 SET_H_VBIT_MOVE (0);
9719 CPU (h_xbit) = opval;
9720 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9724 SET_H_INSN_PREFIXED_P (opval);
9725 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9735 CASE (sem, INSN_ABS) : /* abs $Rs,$Rd */
9737 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9738 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9739 #define FLD(f) abuf->fields.sfmt_muls_b.f
9740 int UNUSED written = 0;
9741 IADDR UNUSED pc = abuf->addr;
9742 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9746 tmp_tmpd = ABSSI (GET_H_GR (FLD (f_operand1)));
9748 SI opval = tmp_tmpd;
9749 SET_H_GR (FLD (f_operand2), opval);
9750 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9754 BI opval = LTSI (tmp_tmpd, 0);
9755 CPU (h_nbit) = opval;
9756 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9759 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9760 CPU (h_zbit) = opval;
9761 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9763 SET_H_CBIT_MOVE (0);
9764 SET_H_VBIT_MOVE (0);
9768 CPU (h_xbit) = opval;
9769 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9773 SET_H_INSN_PREFIXED_P (opval);
9774 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9784 CASE (sem, INSN_AND_B_R) : /* and.b $Rs,$Rd */
9786 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9787 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9788 #define FLD(f) abuf->fields.sfmt_add_b_r.f
9789 int UNUSED written = 0;
9790 IADDR UNUSED pc = abuf->addr;
9791 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9795 tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
9798 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
9800 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
9801 SET_H_GR (FLD (f_operand2), opval);
9802 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9807 BI opval = LTQI (tmp_tmpd, 0);
9808 CPU (h_nbit) = opval;
9809 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9812 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9813 CPU (h_zbit) = opval;
9814 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9816 SET_H_CBIT_MOVE (0);
9817 SET_H_VBIT_MOVE (0);
9821 CPU (h_xbit) = opval;
9822 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9826 SET_H_INSN_PREFIXED_P (opval);
9827 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9837 CASE (sem, INSN_AND_W_R) : /* and.w $Rs,$Rd */
9839 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9840 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9841 #define FLD(f) abuf->fields.sfmt_add_b_r.f
9842 int UNUSED written = 0;
9843 IADDR UNUSED pc = abuf->addr;
9844 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9848 tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
9851 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
9853 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
9854 SET_H_GR (FLD (f_operand2), opval);
9855 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9860 BI opval = LTHI (tmp_tmpd, 0);
9861 CPU (h_nbit) = opval;
9862 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9865 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9866 CPU (h_zbit) = opval;
9867 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9869 SET_H_CBIT_MOVE (0);
9870 SET_H_VBIT_MOVE (0);
9874 CPU (h_xbit) = opval;
9875 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9879 SET_H_INSN_PREFIXED_P (opval);
9880 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9890 CASE (sem, INSN_AND_D_R) : /* and.d $Rs,$Rd */
9892 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9893 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9894 #define FLD(f) abuf->fields.sfmt_add_b_r.f
9895 int UNUSED written = 0;
9896 IADDR UNUSED pc = abuf->addr;
9897 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9901 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
9903 SI opval = tmp_tmpd;
9904 SET_H_GR (FLD (f_operand2), opval);
9905 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9909 BI opval = LTSI (tmp_tmpd, 0);
9910 CPU (h_nbit) = opval;
9911 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9914 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9915 CPU (h_zbit) = opval;
9916 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9918 SET_H_CBIT_MOVE (0);
9919 SET_H_VBIT_MOVE (0);
9923 CPU (h_xbit) = opval;
9924 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
9928 SET_H_INSN_PREFIXED_P (opval);
9929 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
9939 CASE (sem, INSN_AND_M_B_M) : /* and-m.b [${Rs}${inc}],${Rd} */
9941 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
9942 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9943 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
9944 int UNUSED written = 0;
9945 IADDR UNUSED pc = abuf->addr;
9946 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
9950 tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
9953 tmp_postinc = FLD (f_memmode);
9954 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
9955 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
9956 ; if (NEBI (tmp_postinc, 0)) {
9958 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
9959 tmp_addr = ADDSI (tmp_addr, 1);
9962 SI opval = tmp_addr;
9963 SET_H_GR (FLD (f_operand1), opval);
9964 written |= (1 << 11);
9965 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9972 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
9974 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
9975 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
9976 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
9981 BI opval = LTQI (tmp_tmpd, 0);
9982 CPU (h_nbit) = opval;
9983 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
9986 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
9987 CPU (h_zbit) = opval;
9988 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
9990 SET_H_CBIT_MOVE (0);
9991 SET_H_VBIT_MOVE (0);
9995 CPU (h_xbit) = opval;
9996 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10000 SET_H_INSN_PREFIXED_P (opval);
10001 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10007 abuf->written = written;
10012 CASE (sem, INSN_AND_M_W_M) : /* and-m.w [${Rs}${inc}],${Rd} */
10014 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10016 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
10017 int UNUSED written = 0;
10018 IADDR UNUSED pc = abuf->addr;
10019 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10023 tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
10026 tmp_postinc = FLD (f_memmode);
10027 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
10028 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
10029 ; if (NEBI (tmp_postinc, 0)) {
10031 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
10032 tmp_addr = ADDSI (tmp_addr, 2);
10035 SI opval = tmp_addr;
10036 SET_H_GR (FLD (f_operand1), opval);
10037 written |= (1 << 11);
10038 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10042 ; tmp_tmp_mem; }));
10045 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
10047 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
10048 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
10049 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10054 BI opval = LTHI (tmp_tmpd, 0);
10055 CPU (h_nbit) = opval;
10056 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10059 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10060 CPU (h_zbit) = opval;
10061 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10063 SET_H_CBIT_MOVE (0);
10064 SET_H_VBIT_MOVE (0);
10068 CPU (h_xbit) = opval;
10069 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10073 SET_H_INSN_PREFIXED_P (opval);
10074 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10080 abuf->written = written;
10085 CASE (sem, INSN_AND_M_D_M) : /* and-m.d [${Rs}${inc}],${Rd} */
10087 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10088 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10089 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
10090 int UNUSED written = 0;
10091 IADDR UNUSED pc = abuf->addr;
10092 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10096 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
10099 tmp_postinc = FLD (f_memmode);
10100 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
10101 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
10102 ; if (NEBI (tmp_postinc, 0)) {
10104 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
10105 tmp_addr = ADDSI (tmp_addr, 4);
10108 SI opval = tmp_addr;
10109 SET_H_GR (FLD (f_operand1), opval);
10110 written |= (1 << 10);
10111 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10115 ; tmp_tmp_mem; }));
10117 SI opval = tmp_tmpd;
10118 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
10119 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10123 BI opval = LTSI (tmp_tmpd, 0);
10124 CPU (h_nbit) = opval;
10125 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10128 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10129 CPU (h_zbit) = opval;
10130 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10132 SET_H_CBIT_MOVE (0);
10133 SET_H_VBIT_MOVE (0);
10137 CPU (h_xbit) = opval;
10138 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10142 SET_H_INSN_PREFIXED_P (opval);
10143 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10149 abuf->written = written;
10154 CASE (sem, INSN_ANDCBR) : /* and.b ${sconst8}],${Rd} */
10156 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10157 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10158 #define FLD(f) abuf->fields.sfmt_addcbr.f
10159 int UNUSED written = 0;
10160 IADDR UNUSED pc = abuf->addr;
10161 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10165 tmp_tmpd = ANDQI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__byte));
10168 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10170 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
10171 SET_H_GR (FLD (f_operand2), opval);
10172 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10177 BI opval = LTQI (tmp_tmpd, 0);
10178 CPU (h_nbit) = opval;
10179 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10182 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10183 CPU (h_zbit) = opval;
10184 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10186 SET_H_CBIT_MOVE (0);
10187 SET_H_VBIT_MOVE (0);
10191 CPU (h_xbit) = opval;
10192 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10196 SET_H_INSN_PREFIXED_P (opval);
10197 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10207 CASE (sem, INSN_ANDCWR) : /* and.w ${sconst16}],${Rd} */
10209 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10210 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10211 #define FLD(f) abuf->fields.sfmt_addcwr.f
10212 int UNUSED written = 0;
10213 IADDR UNUSED pc = abuf->addr;
10214 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10218 tmp_tmpd = ANDHI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__word));
10221 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10223 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
10224 SET_H_GR (FLD (f_operand2), opval);
10225 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10230 BI opval = LTHI (tmp_tmpd, 0);
10231 CPU (h_nbit) = opval;
10232 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10235 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10236 CPU (h_zbit) = opval;
10237 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10239 SET_H_CBIT_MOVE (0);
10240 SET_H_VBIT_MOVE (0);
10244 CPU (h_xbit) = opval;
10245 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10249 SET_H_INSN_PREFIXED_P (opval);
10250 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10260 CASE (sem, INSN_ANDCDR) : /* and.d ${const32}],${Rd} */
10262 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10263 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10264 #define FLD(f) abuf->fields.sfmt_addcdr.f
10265 int UNUSED written = 0;
10266 IADDR UNUSED pc = abuf->addr;
10267 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
10271 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
10273 SI opval = tmp_tmpd;
10274 SET_H_GR (FLD (f_operand2), opval);
10275 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10279 BI opval = LTSI (tmp_tmpd, 0);
10280 CPU (h_nbit) = opval;
10281 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10284 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10285 CPU (h_zbit) = opval;
10286 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10288 SET_H_CBIT_MOVE (0);
10289 SET_H_VBIT_MOVE (0);
10293 CPU (h_xbit) = opval;
10294 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10298 SET_H_INSN_PREFIXED_P (opval);
10299 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10309 CASE (sem, INSN_ANDQ) : /* andq $i,$Rd */
10311 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10312 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10313 #define FLD(f) abuf->fields.sfmt_andq.f
10314 int UNUSED written = 0;
10315 IADDR UNUSED pc = abuf->addr;
10316 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10320 tmp_tmpd = ANDSI (GET_H_GR (FLD (f_operand2)), FLD (f_s6));
10322 SI opval = tmp_tmpd;
10323 SET_H_GR (FLD (f_operand2), opval);
10324 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10328 BI opval = LTSI (tmp_tmpd, 0);
10329 CPU (h_nbit) = opval;
10330 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10333 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10334 CPU (h_zbit) = opval;
10335 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10337 SET_H_CBIT_MOVE (0);
10338 SET_H_VBIT_MOVE (0);
10342 CPU (h_xbit) = opval;
10343 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10347 SET_H_INSN_PREFIXED_P (opval);
10348 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10358 CASE (sem, INSN_ORR_B_R) : /* orr.b $Rs,$Rd */
10360 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10361 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10362 #define FLD(f) abuf->fields.sfmt_add_b_r.f
10363 int UNUSED written = 0;
10364 IADDR UNUSED pc = abuf->addr;
10365 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10369 tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
10372 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10374 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
10375 SET_H_GR (FLD (f_operand2), opval);
10376 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10381 BI opval = LTQI (tmp_tmpd, 0);
10382 CPU (h_nbit) = opval;
10383 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10386 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10387 CPU (h_zbit) = opval;
10388 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10390 SET_H_CBIT_MOVE (0);
10391 SET_H_VBIT_MOVE (0);
10395 CPU (h_xbit) = opval;
10396 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10400 SET_H_INSN_PREFIXED_P (opval);
10401 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10411 CASE (sem, INSN_ORR_W_R) : /* orr.w $Rs,$Rd */
10413 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10414 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10415 #define FLD(f) abuf->fields.sfmt_add_b_r.f
10416 int UNUSED written = 0;
10417 IADDR UNUSED pc = abuf->addr;
10418 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10422 tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
10425 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10427 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
10428 SET_H_GR (FLD (f_operand2), opval);
10429 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10434 BI opval = LTHI (tmp_tmpd, 0);
10435 CPU (h_nbit) = opval;
10436 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10439 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10440 CPU (h_zbit) = opval;
10441 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10443 SET_H_CBIT_MOVE (0);
10444 SET_H_VBIT_MOVE (0);
10448 CPU (h_xbit) = opval;
10449 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10453 SET_H_INSN_PREFIXED_P (opval);
10454 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10464 CASE (sem, INSN_ORR_D_R) : /* orr.d $Rs,$Rd */
10466 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10467 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10468 #define FLD(f) abuf->fields.sfmt_add_b_r.f
10469 int UNUSED written = 0;
10470 IADDR UNUSED pc = abuf->addr;
10471 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10475 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
10477 SI opval = tmp_tmpd;
10478 SET_H_GR (FLD (f_operand2), opval);
10479 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10483 BI opval = LTSI (tmp_tmpd, 0);
10484 CPU (h_nbit) = opval;
10485 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10488 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10489 CPU (h_zbit) = opval;
10490 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10492 SET_H_CBIT_MOVE (0);
10493 SET_H_VBIT_MOVE (0);
10497 CPU (h_xbit) = opval;
10498 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10502 SET_H_INSN_PREFIXED_P (opval);
10503 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10513 CASE (sem, INSN_OR_M_B_M) : /* or-m.b [${Rs}${inc}],${Rd} */
10515 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10516 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10517 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
10518 int UNUSED written = 0;
10519 IADDR UNUSED pc = abuf->addr;
10520 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10524 tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
10527 tmp_postinc = FLD (f_memmode);
10528 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
10529 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
10530 ; if (NEBI (tmp_postinc, 0)) {
10532 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
10533 tmp_addr = ADDSI (tmp_addr, 1);
10536 SI opval = tmp_addr;
10537 SET_H_GR (FLD (f_operand1), opval);
10538 written |= (1 << 11);
10539 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10543 ; tmp_tmp_mem; }));
10546 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
10548 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
10549 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
10550 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10555 BI opval = LTQI (tmp_tmpd, 0);
10556 CPU (h_nbit) = opval;
10557 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10560 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10561 CPU (h_zbit) = opval;
10562 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10564 SET_H_CBIT_MOVE (0);
10565 SET_H_VBIT_MOVE (0);
10569 CPU (h_xbit) = opval;
10570 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10574 SET_H_INSN_PREFIXED_P (opval);
10575 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10581 abuf->written = written;
10586 CASE (sem, INSN_OR_M_W_M) : /* or-m.w [${Rs}${inc}],${Rd} */
10588 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10589 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10590 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
10591 int UNUSED written = 0;
10592 IADDR UNUSED pc = abuf->addr;
10593 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10597 tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
10600 tmp_postinc = FLD (f_memmode);
10601 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
10602 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
10603 ; if (NEBI (tmp_postinc, 0)) {
10605 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
10606 tmp_addr = ADDSI (tmp_addr, 2);
10609 SI opval = tmp_addr;
10610 SET_H_GR (FLD (f_operand1), opval);
10611 written |= (1 << 11);
10612 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10616 ; tmp_tmp_mem; }));
10619 tmp_oldregval = GET_H_RAW_GR_PC (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))));
10621 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
10622 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
10623 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10628 BI opval = LTHI (tmp_tmpd, 0);
10629 CPU (h_nbit) = opval;
10630 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10633 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10634 CPU (h_zbit) = opval;
10635 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10637 SET_H_CBIT_MOVE (0);
10638 SET_H_VBIT_MOVE (0);
10642 CPU (h_xbit) = opval;
10643 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10647 SET_H_INSN_PREFIXED_P (opval);
10648 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10654 abuf->written = written;
10659 CASE (sem, INSN_OR_M_D_M) : /* or-m.d [${Rs}${inc}],${Rd} */
10661 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10662 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10663 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
10664 int UNUSED written = 0;
10665 IADDR UNUSED pc = abuf->addr;
10666 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10670 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), ({ SI tmp_addr;
10673 tmp_postinc = FLD (f_memmode);
10674 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
10675 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
10676 ; if (NEBI (tmp_postinc, 0)) {
10678 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
10679 tmp_addr = ADDSI (tmp_addr, 4);
10682 SI opval = tmp_addr;
10683 SET_H_GR (FLD (f_operand1), opval);
10684 written |= (1 << 10);
10685 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10689 ; tmp_tmp_mem; }));
10691 SI opval = tmp_tmpd;
10692 SET_H_GR (((ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) ? (FLD (f_operand1)) : (FLD (f_operand2))), opval);
10693 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10697 BI opval = LTSI (tmp_tmpd, 0);
10698 CPU (h_nbit) = opval;
10699 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10702 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10703 CPU (h_zbit) = opval;
10704 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10706 SET_H_CBIT_MOVE (0);
10707 SET_H_VBIT_MOVE (0);
10711 CPU (h_xbit) = opval;
10712 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10716 SET_H_INSN_PREFIXED_P (opval);
10717 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10723 abuf->written = written;
10728 CASE (sem, INSN_ORCBR) : /* or.b ${sconst8}],${Rd} */
10730 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10731 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10732 #define FLD(f) abuf->fields.sfmt_addcbr.f
10733 int UNUSED written = 0;
10734 IADDR UNUSED pc = abuf->addr;
10735 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10739 tmp_tmpd = ORQI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__byte));
10742 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10744 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
10745 SET_H_GR (FLD (f_operand2), opval);
10746 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10751 BI opval = LTQI (tmp_tmpd, 0);
10752 CPU (h_nbit) = opval;
10753 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10756 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10757 CPU (h_zbit) = opval;
10758 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10760 SET_H_CBIT_MOVE (0);
10761 SET_H_VBIT_MOVE (0);
10765 CPU (h_xbit) = opval;
10766 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10770 SET_H_INSN_PREFIXED_P (opval);
10771 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10781 CASE (sem, INSN_ORCWR) : /* or.w ${sconst16}],${Rd} */
10783 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10784 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10785 #define FLD(f) abuf->fields.sfmt_addcwr.f
10786 int UNUSED written = 0;
10787 IADDR UNUSED pc = abuf->addr;
10788 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10792 tmp_tmpd = ORHI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__word));
10795 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
10797 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
10798 SET_H_GR (FLD (f_operand2), opval);
10799 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10804 BI opval = LTHI (tmp_tmpd, 0);
10805 CPU (h_nbit) = opval;
10806 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10809 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10810 CPU (h_zbit) = opval;
10811 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10813 SET_H_CBIT_MOVE (0);
10814 SET_H_VBIT_MOVE (0);
10818 CPU (h_xbit) = opval;
10819 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10823 SET_H_INSN_PREFIXED_P (opval);
10824 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10834 CASE (sem, INSN_ORCDR) : /* or.d ${const32}],${Rd} */
10836 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10837 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10838 #define FLD(f) abuf->fields.sfmt_addcdr.f
10839 int UNUSED written = 0;
10840 IADDR UNUSED pc = abuf->addr;
10841 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
10845 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
10847 SI opval = tmp_tmpd;
10848 SET_H_GR (FLD (f_operand2), opval);
10849 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10853 BI opval = LTSI (tmp_tmpd, 0);
10854 CPU (h_nbit) = opval;
10855 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10858 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10859 CPU (h_zbit) = opval;
10860 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10862 SET_H_CBIT_MOVE (0);
10863 SET_H_VBIT_MOVE (0);
10867 CPU (h_xbit) = opval;
10868 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10872 SET_H_INSN_PREFIXED_P (opval);
10873 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10883 CASE (sem, INSN_ORQ) : /* orq $i,$Rd */
10885 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10886 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10887 #define FLD(f) abuf->fields.sfmt_andq.f
10888 int UNUSED written = 0;
10889 IADDR UNUSED pc = abuf->addr;
10890 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10894 tmp_tmpd = ORSI (GET_H_GR (FLD (f_operand2)), FLD (f_s6));
10896 SI opval = tmp_tmpd;
10897 SET_H_GR (FLD (f_operand2), opval);
10898 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10902 BI opval = LTSI (tmp_tmpd, 0);
10903 CPU (h_nbit) = opval;
10904 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10907 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10908 CPU (h_zbit) = opval;
10909 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10911 SET_H_CBIT_MOVE (0);
10912 SET_H_VBIT_MOVE (0);
10916 CPU (h_xbit) = opval;
10917 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10921 SET_H_INSN_PREFIXED_P (opval);
10922 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10932 CASE (sem, INSN_XOR) : /* xor $Rs,$Rd */
10934 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10935 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10936 #define FLD(f) abuf->fields.sfmt_muls_b.f
10937 int UNUSED written = 0;
10938 IADDR UNUSED pc = abuf->addr;
10939 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10943 tmp_tmpd = XORSI (GET_H_GR (FLD (f_operand2)), GET_H_GR (FLD (f_operand1)));
10945 SI opval = tmp_tmpd;
10946 SET_H_GR (FLD (f_operand2), opval);
10947 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
10951 BI opval = LTSI (tmp_tmpd, 0);
10952 CPU (h_nbit) = opval;
10953 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
10956 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
10957 CPU (h_zbit) = opval;
10958 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
10960 SET_H_CBIT_MOVE (0);
10961 SET_H_VBIT_MOVE (0);
10965 CPU (h_xbit) = opval;
10966 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
10970 SET_H_INSN_PREFIXED_P (opval);
10971 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
10981 CASE (sem, INSN_SWAP) : /* swap${swapoption} ${Rs} */
10983 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
10984 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10985 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
10986 int UNUSED written = 0;
10987 IADDR UNUSED pc = abuf->addr;
10988 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
10993 tmp_tmps = GET_H_GR (FLD (f_operand1));
10994 tmp_tmpd = ({ SI tmp_tmpcode;
10997 tmp_tmpcode = FLD (f_operand2);
10998 ; tmp_tmpval = tmp_tmps;
10999 ; if (EQSI (tmp_tmpcode, 0)) {
11000 tmp_tmpres = (cgen_rtx_error (current_cpu, "SWAP without swap modifier isn't implemented"), 0);
11002 else if (EQSI (tmp_tmpcode, 1)) {
11003 tmp_tmpres = ({ SI tmp_tmpr;
11004 tmp_tmpr = tmp_tmpval;
11005 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11007 else if (EQSI (tmp_tmpcode, 2)) {
11008 tmp_tmpres = ({ SI tmp_tmpb;
11009 tmp_tmpb = tmp_tmpval;
11010 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11012 else if (EQSI (tmp_tmpcode, 3)) {
11013 tmp_tmpres = ({ SI tmp_tmpr;
11014 tmp_tmpr = ({ SI tmp_tmpb;
11015 tmp_tmpb = tmp_tmpval;
11016 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11017 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11019 else if (EQSI (tmp_tmpcode, 4)) {
11020 tmp_tmpres = ({ SI tmp_tmpb;
11021 tmp_tmpb = tmp_tmpval;
11022 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11024 else if (EQSI (tmp_tmpcode, 5)) {
11025 tmp_tmpres = ({ SI tmp_tmpr;
11026 tmp_tmpr = ({ SI tmp_tmpb;
11027 tmp_tmpb = tmp_tmpval;
11028 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11029 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11031 else if (EQSI (tmp_tmpcode, 6)) {
11032 tmp_tmpres = ({ SI tmp_tmpb;
11033 tmp_tmpb = ({ SI tmp_tmpb;
11034 tmp_tmpb = tmp_tmpval;
11035 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11036 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11038 else if (EQSI (tmp_tmpcode, 7)) {
11039 tmp_tmpres = ({ SI tmp_tmpr;
11040 tmp_tmpr = ({ SI tmp_tmpb;
11041 tmp_tmpb = ({ SI tmp_tmpb;
11042 tmp_tmpb = tmp_tmpval;
11043 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11044 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11045 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11047 else if (EQSI (tmp_tmpcode, 8)) {
11048 tmp_tmpres = INVSI (tmp_tmpval);
11050 else if (EQSI (tmp_tmpcode, 9)) {
11051 tmp_tmpres = ({ SI tmp_tmpr;
11052 tmp_tmpr = INVSI (tmp_tmpval);
11053 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11055 else if (EQSI (tmp_tmpcode, 10)) {
11056 tmp_tmpres = ({ SI tmp_tmpb;
11057 tmp_tmpb = INVSI (tmp_tmpval);
11058 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11060 else if (EQSI (tmp_tmpcode, 11)) {
11061 tmp_tmpres = ({ SI tmp_tmpr;
11062 tmp_tmpr = ({ SI tmp_tmpb;
11063 tmp_tmpb = INVSI (tmp_tmpval);
11064 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11065 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11067 else if (EQSI (tmp_tmpcode, 12)) {
11068 tmp_tmpres = ({ SI tmp_tmpb;
11069 tmp_tmpb = INVSI (tmp_tmpval);
11070 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11072 else if (EQSI (tmp_tmpcode, 13)) {
11073 tmp_tmpres = ({ SI tmp_tmpr;
11074 tmp_tmpr = ({ SI tmp_tmpb;
11075 tmp_tmpb = INVSI (tmp_tmpval);
11076 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11077 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11079 else if (EQSI (tmp_tmpcode, 14)) {
11080 tmp_tmpres = ({ SI tmp_tmpb;
11081 tmp_tmpb = ({ SI tmp_tmpb;
11082 tmp_tmpb = INVSI (tmp_tmpval);
11083 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11084 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11086 else if (EQSI (tmp_tmpcode, 15)) {
11087 tmp_tmpres = ({ SI tmp_tmpr;
11088 tmp_tmpr = ({ SI tmp_tmpb;
11089 tmp_tmpb = ({ SI tmp_tmpb;
11090 tmp_tmpb = INVSI (tmp_tmpval);
11091 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 16), 0xffff0000), ANDSI (SRLSI (tmp_tmpb, 16), 65535)); });
11092 ; ORSI (ANDSI (SLLSI (tmp_tmpb, 8), 0xff00ff00), ANDSI (SRLSI (tmp_tmpb, 8), 16711935)); });
11093 ; ORSI (SLLSI (ANDSI (tmp_tmpr, 16843009), 7), ORSI (SLLSI (ANDSI (tmp_tmpr, 33686018), 5), ORSI (SLLSI (ANDSI (tmp_tmpr, 67372036), 3), ORSI (SLLSI (ANDSI (tmp_tmpr, 134744072), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 269488144), 1), ORSI (SRLSI (ANDSI (tmp_tmpr, 538976288), 3), ORSI (SRLSI (ANDSI (tmp_tmpr, 1077952576), 5), SRLSI (ANDSI (tmp_tmpr, 0x80808080), 7)))))))); });
11097 SI opval = tmp_tmpd;
11098 SET_H_GR (FLD (f_operand1), opval);
11099 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11103 BI opval = LTSI (tmp_tmpd, 0);
11104 CPU (h_nbit) = opval;
11105 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11108 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11109 CPU (h_zbit) = opval;
11110 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11112 SET_H_CBIT_MOVE (0);
11113 SET_H_VBIT_MOVE (0);
11117 CPU (h_xbit) = opval;
11118 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11122 SET_H_INSN_PREFIXED_P (opval);
11123 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11133 CASE (sem, INSN_ASRR_B_R) : /* asrr.b $Rs,$Rd */
11135 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11137 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11138 int UNUSED written = 0;
11139 IADDR UNUSED pc = abuf->addr;
11140 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11146 tmp_cnt1 = GET_H_GR (FLD (f_operand1));
11147 tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
11148 tmp_tmpd = SRASI (EXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
11151 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11153 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
11154 SET_H_GR (FLD (f_operand2), opval);
11155 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11160 BI opval = LTQI (tmp_tmpd, 0);
11161 CPU (h_nbit) = opval;
11162 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11165 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11166 CPU (h_zbit) = opval;
11167 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11169 SET_H_CBIT_MOVE (0);
11170 SET_H_VBIT_MOVE (0);
11174 CPU (h_xbit) = opval;
11175 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11179 SET_H_INSN_PREFIXED_P (opval);
11180 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11190 CASE (sem, INSN_ASRR_W_R) : /* asrr.w $Rs,$Rd */
11192 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11193 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11194 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11195 int UNUSED written = 0;
11196 IADDR UNUSED pc = abuf->addr;
11197 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11203 tmp_cnt1 = GET_H_GR (FLD (f_operand1));
11204 tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
11205 tmp_tmpd = SRASI (EXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
11208 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11210 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
11211 SET_H_GR (FLD (f_operand2), opval);
11212 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11217 BI opval = LTHI (tmp_tmpd, 0);
11218 CPU (h_nbit) = opval;
11219 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11222 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11223 CPU (h_zbit) = opval;
11224 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11226 SET_H_CBIT_MOVE (0);
11227 SET_H_VBIT_MOVE (0);
11231 CPU (h_xbit) = opval;
11232 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11236 SET_H_INSN_PREFIXED_P (opval);
11237 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11247 CASE (sem, INSN_ASRR_D_R) : /* asrr.d $Rs,$Rd */
11249 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11250 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11251 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11252 int UNUSED written = 0;
11253 IADDR UNUSED pc = abuf->addr;
11254 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11260 tmp_cnt1 = GET_H_GR (FLD (f_operand1));
11261 tmp_cnt2 = ((NESI (ANDSI (tmp_cnt1, 32), 0)) ? (31) : (ANDSI (tmp_cnt1, 31)));
11262 tmp_tmpd = SRASI (EXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), tmp_cnt2);
11264 SI opval = tmp_tmpd;
11265 SET_H_GR (FLD (f_operand2), opval);
11266 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11270 BI opval = LTSI (tmp_tmpd, 0);
11271 CPU (h_nbit) = opval;
11272 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11275 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11276 CPU (h_zbit) = opval;
11277 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11279 SET_H_CBIT_MOVE (0);
11280 SET_H_VBIT_MOVE (0);
11284 CPU (h_xbit) = opval;
11285 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11289 SET_H_INSN_PREFIXED_P (opval);
11290 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11300 CASE (sem, INSN_ASRQ) : /* asrq $c,${Rd} */
11302 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11304 #define FLD(f) abuf->fields.sfmt_asrq.f
11305 int UNUSED written = 0;
11306 IADDR UNUSED pc = abuf->addr;
11307 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11311 tmp_tmpd = SRASI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
11313 SI opval = tmp_tmpd;
11314 SET_H_GR (FLD (f_operand2), opval);
11315 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11319 BI opval = LTSI (tmp_tmpd, 0);
11320 CPU (h_nbit) = opval;
11321 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11324 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11325 CPU (h_zbit) = opval;
11326 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11328 SET_H_CBIT_MOVE (0);
11329 SET_H_VBIT_MOVE (0);
11333 CPU (h_xbit) = opval;
11334 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11338 SET_H_INSN_PREFIXED_P (opval);
11339 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11349 CASE (sem, INSN_LSRR_B_R) : /* lsrr.b $Rs,$Rd */
11351 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11352 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11353 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11354 int UNUSED written = 0;
11355 IADDR UNUSED pc = abuf->addr;
11356 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11361 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11362 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SRLSI (ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11365 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11367 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
11368 SET_H_GR (FLD (f_operand2), opval);
11369 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11374 BI opval = LTQI (tmp_tmpd, 0);
11375 CPU (h_nbit) = opval;
11376 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11379 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11380 CPU (h_zbit) = opval;
11381 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11383 SET_H_CBIT_MOVE (0);
11384 SET_H_VBIT_MOVE (0);
11388 CPU (h_xbit) = opval;
11389 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11393 SET_H_INSN_PREFIXED_P (opval);
11394 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11404 CASE (sem, INSN_LSRR_W_R) : /* lsrr.w $Rs,$Rd */
11406 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11407 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11408 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11409 int UNUSED written = 0;
11410 IADDR UNUSED pc = abuf->addr;
11411 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11416 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11417 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SRLSI (ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11420 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11422 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
11423 SET_H_GR (FLD (f_operand2), opval);
11424 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11429 BI opval = LTHI (tmp_tmpd, 0);
11430 CPU (h_nbit) = opval;
11431 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11434 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11435 CPU (h_zbit) = opval;
11436 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11438 SET_H_CBIT_MOVE (0);
11439 SET_H_VBIT_MOVE (0);
11443 CPU (h_xbit) = opval;
11444 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11448 SET_H_INSN_PREFIXED_P (opval);
11449 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11459 CASE (sem, INSN_LSRR_D_R) : /* lsrr.d $Rs,$Rd */
11461 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11462 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11463 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11464 int UNUSED written = 0;
11465 IADDR UNUSED pc = abuf->addr;
11466 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11471 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11472 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SRLSI (ZEXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11474 SI opval = tmp_tmpd;
11475 SET_H_GR (FLD (f_operand2), opval);
11476 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11480 BI opval = LTSI (tmp_tmpd, 0);
11481 CPU (h_nbit) = opval;
11482 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11485 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11486 CPU (h_zbit) = opval;
11487 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11489 SET_H_CBIT_MOVE (0);
11490 SET_H_VBIT_MOVE (0);
11494 CPU (h_xbit) = opval;
11495 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11499 SET_H_INSN_PREFIXED_P (opval);
11500 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11510 CASE (sem, INSN_LSRQ) : /* lsrq $c,${Rd} */
11512 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11513 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11514 #define FLD(f) abuf->fields.sfmt_asrq.f
11515 int UNUSED written = 0;
11516 IADDR UNUSED pc = abuf->addr;
11517 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11521 tmp_tmpd = SRLSI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
11523 SI opval = tmp_tmpd;
11524 SET_H_GR (FLD (f_operand2), opval);
11525 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11529 BI opval = LTSI (tmp_tmpd, 0);
11530 CPU (h_nbit) = opval;
11531 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11534 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11535 CPU (h_zbit) = opval;
11536 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11538 SET_H_CBIT_MOVE (0);
11539 SET_H_VBIT_MOVE (0);
11543 CPU (h_xbit) = opval;
11544 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11548 SET_H_INSN_PREFIXED_P (opval);
11549 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11559 CASE (sem, INSN_LSLR_B_R) : /* lslr.b $Rs,$Rd */
11561 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11562 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11563 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11564 int UNUSED written = 0;
11565 IADDR UNUSED pc = abuf->addr;
11566 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11571 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11572 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SLLSI (ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11575 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11577 SI opval = ORSI (ANDSI (tmp_tmpd, 255), ANDSI (tmp_oldregval, 0xffffff00));
11578 SET_H_GR (FLD (f_operand2), opval);
11579 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11584 BI opval = LTQI (tmp_tmpd, 0);
11585 CPU (h_nbit) = opval;
11586 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11589 BI opval = ANDIF (EQQI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11590 CPU (h_zbit) = opval;
11591 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11593 SET_H_CBIT_MOVE (0);
11594 SET_H_VBIT_MOVE (0);
11598 CPU (h_xbit) = opval;
11599 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11603 SET_H_INSN_PREFIXED_P (opval);
11604 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11614 CASE (sem, INSN_LSLR_W_R) : /* lslr.w $Rs,$Rd */
11616 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11618 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11619 int UNUSED written = 0;
11620 IADDR UNUSED pc = abuf->addr;
11621 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11626 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11627 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SLLSI (ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11630 tmp_oldregval = GET_H_RAW_GR_PC (FLD (f_operand2));
11632 SI opval = ORSI (ANDSI (tmp_tmpd, 65535), ANDSI (tmp_oldregval, 0xffff0000));
11633 SET_H_GR (FLD (f_operand2), opval);
11634 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11639 BI opval = LTHI (tmp_tmpd, 0);
11640 CPU (h_nbit) = opval;
11641 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11644 BI opval = ANDIF (EQHI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11645 CPU (h_zbit) = opval;
11646 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11648 SET_H_CBIT_MOVE (0);
11649 SET_H_VBIT_MOVE (0);
11653 CPU (h_xbit) = opval;
11654 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11658 SET_H_INSN_PREFIXED_P (opval);
11659 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11669 CASE (sem, INSN_LSLR_D_R) : /* lslr.d $Rs,$Rd */
11671 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11672 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11673 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11674 int UNUSED written = 0;
11675 IADDR UNUSED pc = abuf->addr;
11676 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11681 tmp_cnt = ANDSI (GET_H_GR (FLD (f_operand1)), 63);
11682 tmp_tmpd = ((NESI (ANDSI (tmp_cnt, 32), 0)) ? (0) : (SLLSI (ZEXTSISI (TRUNCSISI (GET_H_GR (FLD (f_operand2)))), ANDSI (tmp_cnt, 31))));
11684 SI opval = tmp_tmpd;
11685 SET_H_GR (FLD (f_operand2), opval);
11686 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11690 BI opval = LTSI (tmp_tmpd, 0);
11691 CPU (h_nbit) = opval;
11692 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11695 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11696 CPU (h_zbit) = opval;
11697 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11699 SET_H_CBIT_MOVE (0);
11700 SET_H_VBIT_MOVE (0);
11704 CPU (h_xbit) = opval;
11705 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11709 SET_H_INSN_PREFIXED_P (opval);
11710 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11720 CASE (sem, INSN_LSLQ) : /* lslq $c,${Rd} */
11722 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11723 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11724 #define FLD(f) abuf->fields.sfmt_asrq.f
11725 int UNUSED written = 0;
11726 IADDR UNUSED pc = abuf->addr;
11727 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11731 tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), FLD (f_u5));
11733 SI opval = tmp_tmpd;
11734 SET_H_GR (FLD (f_operand2), opval);
11735 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
11739 BI opval = LTSI (tmp_tmpd, 0);
11740 CPU (h_nbit) = opval;
11741 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11744 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11745 CPU (h_zbit) = opval;
11746 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11748 SET_H_CBIT_MOVE (0);
11749 SET_H_VBIT_MOVE (0);
11753 CPU (h_xbit) = opval;
11754 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11758 SET_H_INSN_PREFIXED_P (opval);
11759 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11769 CASE (sem, INSN_BTST) : /* $Rs,$Rd */
11771 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11772 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11773 #define FLD(f) abuf->fields.sfmt_add_b_r.f
11774 int UNUSED written = 0;
11775 IADDR UNUSED pc = abuf->addr;
11776 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11781 tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), SUBSI (31, ANDSI (GET_H_GR (FLD (f_operand1)), 31)));
11784 BI opval = LTSI (tmp_tmpd, 0);
11785 CPU (h_nbit) = opval;
11786 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11789 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11790 CPU (h_zbit) = opval;
11791 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11793 SET_H_CBIT_MOVE (0);
11794 SET_H_VBIT_MOVE (0);
11798 CPU (h_xbit) = opval;
11799 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11803 SET_H_INSN_PREFIXED_P (opval);
11804 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11814 CASE (sem, INSN_BTSTQ) : /* btstq $c,${Rd} */
11816 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11818 #define FLD(f) abuf->fields.sfmt_asrq.f
11819 int UNUSED written = 0;
11820 IADDR UNUSED pc = abuf->addr;
11821 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11825 tmp_tmpd = SLLSI (GET_H_GR (FLD (f_operand2)), SUBSI (31, FLD (f_u5)));
11828 BI opval = LTSI (tmp_tmpd, 0);
11829 CPU (h_nbit) = opval;
11830 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11833 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
11834 CPU (h_zbit) = opval;
11835 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11837 SET_H_CBIT_MOVE (0);
11838 SET_H_VBIT_MOVE (0);
11842 CPU (h_xbit) = opval;
11843 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11847 SET_H_INSN_PREFIXED_P (opval);
11848 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11858 CASE (sem, INSN_SETF) : /* setf ${list-of-flags} */
11860 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11861 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11862 #define FLD(f) abuf->fields.sfmt_setf.f
11863 int UNUSED written = 0;
11864 IADDR UNUSED pc = abuf->addr;
11865 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11869 tmp_tmp = FLD (f_dstsrc);
11870 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 0)), 0)) {
11873 CPU (h_cbit) = opval;
11874 written |= (1 << 1);
11875 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
11878 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 1)), 0)) {
11881 CPU (h_vbit) = opval;
11882 written |= (1 << 7);
11883 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
11886 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 2)), 0)) {
11889 CPU (h_zbit) = opval;
11890 written |= (1 << 9);
11891 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11894 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 3)), 0)) {
11897 CPU (h_nbit) = opval;
11898 written |= (1 << 3);
11899 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11902 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
11905 CPU (h_xbit) = opval;
11906 written |= (1 << 8);
11907 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11910 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 5)), 0)) {
11913 SET_H_IBIT (opval);
11914 written |= (1 << 2);
11915 TRACE_RESULT (current_cpu, abuf, "ibit", 'x', opval);
11918 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 6)), 0)) {
11921 SET_H_UBIT (opval);
11922 written |= (1 << 6);
11923 TRACE_RESULT (current_cpu, abuf, "ubit", 'x', opval);
11926 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 7)), 0)) {
11929 CPU (h_pbit) = opval;
11930 written |= (1 << 4);
11931 TRACE_RESULT (current_cpu, abuf, "pbit", 'x', opval);
11936 SET_H_INSN_PREFIXED_P (opval);
11937 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
11939 if (EQSI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
11942 CPU (h_xbit) = opval;
11943 written |= (1 << 8);
11944 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
11949 abuf->written = written;
11954 CASE (sem, INSN_CLEARF) : /* clearf ${list-of-flags} */
11956 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
11957 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11958 #define FLD(f) abuf->fields.sfmt_setf.f
11959 int UNUSED written = 0;
11960 IADDR UNUSED pc = abuf->addr;
11961 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
11965 tmp_tmp = FLD (f_dstsrc);
11966 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 0)), 0)) {
11969 CPU (h_cbit) = opval;
11970 written |= (1 << 1);
11971 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
11974 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 1)), 0)) {
11977 CPU (h_vbit) = opval;
11978 written |= (1 << 7);
11979 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
11982 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 2)), 0)) {
11985 CPU (h_zbit) = opval;
11986 written |= (1 << 9);
11987 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
11990 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 3)), 0)) {
11993 CPU (h_nbit) = opval;
11994 written |= (1 << 3);
11995 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
11998 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 4)), 0)) {
12001 CPU (h_xbit) = opval;
12002 written |= (1 << 8);
12003 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12006 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 5)), 0)) {
12009 SET_H_IBIT (opval);
12010 written |= (1 << 2);
12011 TRACE_RESULT (current_cpu, abuf, "ibit", 'x', opval);
12014 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 6)), 0)) {
12017 SET_H_UBIT (opval);
12018 written |= (1 << 6);
12019 TRACE_RESULT (current_cpu, abuf, "ubit", 'x', opval);
12022 if (NESI (ANDSI (tmp_tmp, SLLSI (1, 7)), 0)) {
12025 CPU (h_pbit) = opval;
12026 written |= (1 << 4);
12027 TRACE_RESULT (current_cpu, abuf, "pbit", 'x', opval);
12033 CPU (h_xbit) = opval;
12034 written |= (1 << 8);
12035 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12039 SET_H_INSN_PREFIXED_P (opval);
12040 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12045 abuf->written = written;
12050 CASE (sem, INSN_BCC_B) : /* b${cc} ${o-pcrel} */
12052 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12053 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12054 #define FLD(f) abuf->fields.sfmt_bcc_b.f
12055 int UNUSED written = 0;
12056 IADDR UNUSED pc = abuf->addr;
12058 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12062 tmp_truthval = ({ SI tmp_tmpcond;
12064 tmp_tmpcond = FLD (f_operand2);
12065 ; if (EQSI (tmp_tmpcond, 0)) {
12066 tmp_condres = NOTBI (CPU (h_cbit));
12068 else if (EQSI (tmp_tmpcond, 1)) {
12069 tmp_condres = CPU (h_cbit);
12071 else if (EQSI (tmp_tmpcond, 2)) {
12072 tmp_condres = NOTBI (CPU (h_zbit));
12074 else if (EQSI (tmp_tmpcond, 3)) {
12075 tmp_condres = CPU (h_zbit);
12077 else if (EQSI (tmp_tmpcond, 4)) {
12078 tmp_condres = NOTBI (CPU (h_vbit));
12080 else if (EQSI (tmp_tmpcond, 5)) {
12081 tmp_condres = CPU (h_vbit);
12083 else if (EQSI (tmp_tmpcond, 6)) {
12084 tmp_condres = NOTBI (CPU (h_nbit));
12086 else if (EQSI (tmp_tmpcond, 7)) {
12087 tmp_condres = CPU (h_nbit);
12089 else if (EQSI (tmp_tmpcond, 8)) {
12090 tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
12092 else if (EQSI (tmp_tmpcond, 9)) {
12093 tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
12095 else if (EQSI (tmp_tmpcond, 10)) {
12096 tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
12098 else if (EQSI (tmp_tmpcond, 11)) {
12099 tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
12101 else if (EQSI (tmp_tmpcond, 12)) {
12102 tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
12104 else if (EQSI (tmp_tmpcond, 13)) {
12105 tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
12107 else if (EQSI (tmp_tmpcond, 14)) {
12110 else if (EQSI (tmp_tmpcond, 15)) {
12111 tmp_condres = CPU (h_pbit);
12114 crisv10f_branch_taken (current_cpu, pc, FLD (i_o_pcrel), tmp_truthval);
12118 CPU (h_xbit) = opval;
12119 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12123 SET_H_INSN_PREFIXED_P (opval);
12124 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12127 if (tmp_truthval) {
12130 USI opval = FLD (i_o_pcrel);
12131 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
12132 written |= (1 << 8);
12133 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12139 abuf->written = written;
12140 SEM_BRANCH_FINI (vpc);
12145 CASE (sem, INSN_BA_B) : /* ba ${o-pcrel} */
12147 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12148 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12149 #define FLD(f) abuf->fields.sfmt_bcc_b.f
12150 int UNUSED written = 0;
12151 IADDR UNUSED pc = abuf->addr;
12153 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12159 CPU (h_xbit) = opval;
12160 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12164 SET_H_INSN_PREFIXED_P (opval);
12165 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12170 USI opval = FLD (i_o_pcrel);
12171 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
12172 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12177 SEM_BRANCH_FINI (vpc);
12182 CASE (sem, INSN_BCC_W) : /* b${cc} ${o-word-pcrel} */
12184 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12186 #define FLD(f) abuf->fields.sfmt_bcc_w.f
12187 int UNUSED written = 0;
12188 IADDR UNUSED pc = abuf->addr;
12190 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12194 tmp_truthval = ({ SI tmp_tmpcond;
12196 tmp_tmpcond = FLD (f_operand2);
12197 ; if (EQSI (tmp_tmpcond, 0)) {
12198 tmp_condres = NOTBI (CPU (h_cbit));
12200 else if (EQSI (tmp_tmpcond, 1)) {
12201 tmp_condres = CPU (h_cbit);
12203 else if (EQSI (tmp_tmpcond, 2)) {
12204 tmp_condres = NOTBI (CPU (h_zbit));
12206 else if (EQSI (tmp_tmpcond, 3)) {
12207 tmp_condres = CPU (h_zbit);
12209 else if (EQSI (tmp_tmpcond, 4)) {
12210 tmp_condres = NOTBI (CPU (h_vbit));
12212 else if (EQSI (tmp_tmpcond, 5)) {
12213 tmp_condres = CPU (h_vbit);
12215 else if (EQSI (tmp_tmpcond, 6)) {
12216 tmp_condres = NOTBI (CPU (h_nbit));
12218 else if (EQSI (tmp_tmpcond, 7)) {
12219 tmp_condres = CPU (h_nbit);
12221 else if (EQSI (tmp_tmpcond, 8)) {
12222 tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
12224 else if (EQSI (tmp_tmpcond, 9)) {
12225 tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
12227 else if (EQSI (tmp_tmpcond, 10)) {
12228 tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
12230 else if (EQSI (tmp_tmpcond, 11)) {
12231 tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
12233 else if (EQSI (tmp_tmpcond, 12)) {
12234 tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
12236 else if (EQSI (tmp_tmpcond, 13)) {
12237 tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
12239 else if (EQSI (tmp_tmpcond, 14)) {
12242 else if (EQSI (tmp_tmpcond, 15)) {
12243 tmp_condres = CPU (h_pbit);
12246 crisv10f_branch_taken (current_cpu, pc, FLD (i_o_word_pcrel), tmp_truthval);
12250 CPU (h_xbit) = opval;
12251 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12255 SET_H_INSN_PREFIXED_P (opval);
12256 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12259 if (tmp_truthval) {
12262 USI opval = FLD (i_o_word_pcrel);
12263 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
12264 written |= (1 << 8);
12265 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12271 abuf->written = written;
12272 SEM_BRANCH_FINI (vpc);
12277 CASE (sem, INSN_BA_W) : /* ba ${o-word-pcrel} */
12279 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12280 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12281 #define FLD(f) abuf->fields.sfmt_bcc_w.f
12282 int UNUSED written = 0;
12283 IADDR UNUSED pc = abuf->addr;
12285 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12291 CPU (h_xbit) = opval;
12292 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12296 SET_H_INSN_PREFIXED_P (opval);
12297 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12302 USI opval = FLD (i_o_word_pcrel);
12303 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
12304 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12309 SEM_BRANCH_FINI (vpc);
12314 CASE (sem, INSN_JUMP_R) : /* jump/jsr/jir ${Rs} */
12316 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12317 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12318 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
12319 int UNUSED written = 0;
12320 IADDR UNUSED pc = abuf->addr;
12322 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12326 SI opval = ADDSI (pc, 2);
12327 SET_H_SR (FLD (f_operand2), opval);
12328 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
12331 USI opval = GET_H_GR (FLD (f_operand1));
12332 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
12333 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12338 CPU (h_xbit) = opval;
12339 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12343 SET_H_INSN_PREFIXED_P (opval);
12344 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12349 SEM_BRANCH_FINI (vpc);
12354 CASE (sem, INSN_JUMP_M) : /* jump/jsr/jir [${Rs}${inc}] */
12356 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12357 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12358 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
12359 int UNUSED written = 0;
12360 IADDR UNUSED pc = abuf->addr;
12362 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12366 SI opval = ADDSI (pc, 2);
12367 SET_H_SR (FLD (f_operand2), opval);
12368 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
12371 USI opval = ({ SI tmp_addr;
12374 tmp_postinc = FLD (f_memmode);
12375 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
12376 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
12377 ; if (NEBI (tmp_postinc, 0)) {
12379 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
12380 tmp_addr = ADDSI (tmp_addr, 4);
12383 SI opval = tmp_addr;
12384 SET_H_GR (FLD (f_operand1), opval);
12385 written |= (1 << 7);
12386 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12391 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
12392 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12397 CPU (h_xbit) = opval;
12398 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12402 SET_H_INSN_PREFIXED_P (opval);
12403 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12408 abuf->written = written;
12409 SEM_BRANCH_FINI (vpc);
12414 CASE (sem, INSN_JUMP_C) : /* jump/jsr/jir ${const32} */
12416 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12417 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12418 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
12419 int UNUSED written = 0;
12420 IADDR UNUSED pc = abuf->addr;
12422 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
12426 SI opval = ADDSI (pc, 6);
12427 SET_H_SR (FLD (f_operand2), opval);
12428 TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
12431 USI opval = FLD (f_indir_pc__dword);
12432 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
12433 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12438 CPU (h_xbit) = opval;
12439 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12443 SET_H_INSN_PREFIXED_P (opval);
12444 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12449 SEM_BRANCH_FINI (vpc);
12454 CASE (sem, INSN_BREAK) : /* break $n */
12456 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12457 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12458 #define FLD(f) abuf->fields.sfmt_break.f
12459 int UNUSED written = 0;
12460 IADDR UNUSED pc = abuf->addr;
12462 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12468 CPU (h_xbit) = opval;
12469 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12473 SET_H_INSN_PREFIXED_P (opval);
12474 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12478 USI opval = crisv10f_break_handler (current_cpu, FLD (f_u4), pc);
12479 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
12480 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
12484 SEM_BRANCH_FINI (vpc);
12489 CASE (sem, INSN_BOUND_R_B_R) : /* bound-r.b ${Rs},${Rd} */
12491 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12492 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12493 #define FLD(f) abuf->fields.sfmt_muls_b.f
12494 int UNUSED written = 0;
12495 IADDR UNUSED pc = abuf->addr;
12496 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12502 tmp_tmpops = ZEXTQISI (TRUNCSIQI (GET_H_GR (FLD (f_operand1))));
12503 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12504 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12506 SI opval = tmp_newval;
12507 SET_H_GR (FLD (f_operand2), opval);
12508 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12512 BI opval = LTSI (tmp_newval, 0);
12513 CPU (h_nbit) = opval;
12514 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12517 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12518 CPU (h_zbit) = opval;
12519 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12521 SET_H_CBIT_MOVE (0);
12522 SET_H_VBIT_MOVE (0);
12526 CPU (h_xbit) = opval;
12527 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12531 SET_H_INSN_PREFIXED_P (opval);
12532 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12542 CASE (sem, INSN_BOUND_R_W_R) : /* bound-r.w ${Rs},${Rd} */
12544 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12545 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12546 #define FLD(f) abuf->fields.sfmt_muls_b.f
12547 int UNUSED written = 0;
12548 IADDR UNUSED pc = abuf->addr;
12549 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12555 tmp_tmpops = ZEXTHISI (TRUNCSIHI (GET_H_GR (FLD (f_operand1))));
12556 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12557 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12559 SI opval = tmp_newval;
12560 SET_H_GR (FLD (f_operand2), opval);
12561 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12565 BI opval = LTSI (tmp_newval, 0);
12566 CPU (h_nbit) = opval;
12567 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12570 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12571 CPU (h_zbit) = opval;
12572 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12574 SET_H_CBIT_MOVE (0);
12575 SET_H_VBIT_MOVE (0);
12579 CPU (h_xbit) = opval;
12580 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12584 SET_H_INSN_PREFIXED_P (opval);
12585 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12595 CASE (sem, INSN_BOUND_R_D_R) : /* bound-r.d ${Rs},${Rd} */
12597 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12598 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12599 #define FLD(f) abuf->fields.sfmt_muls_b.f
12600 int UNUSED written = 0;
12601 IADDR UNUSED pc = abuf->addr;
12602 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12608 tmp_tmpops = TRUNCSISI (GET_H_GR (FLD (f_operand1)));
12609 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12610 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12612 SI opval = tmp_newval;
12613 SET_H_GR (FLD (f_operand2), opval);
12614 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12618 BI opval = LTSI (tmp_newval, 0);
12619 CPU (h_nbit) = opval;
12620 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12623 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12624 CPU (h_zbit) = opval;
12625 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12627 SET_H_CBIT_MOVE (0);
12628 SET_H_VBIT_MOVE (0);
12632 CPU (h_xbit) = opval;
12633 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12637 SET_H_INSN_PREFIXED_P (opval);
12638 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12648 CASE (sem, INSN_BOUND_M_B_M) : /* bound-m.b [${Rs}${inc}],${Rd} */
12650 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12651 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12652 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
12653 int UNUSED written = 0;
12654 IADDR UNUSED pc = abuf->addr;
12655 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12661 tmp_tmpops = ZEXTQISI (({ SI tmp_addr;
12664 tmp_postinc = FLD (f_memmode);
12665 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
12666 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
12667 ; if (NEBI (tmp_postinc, 0)) {
12669 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
12670 tmp_addr = ADDSI (tmp_addr, 1);
12673 SI opval = tmp_addr;
12674 SET_H_GR (FLD (f_operand1), opval);
12675 written |= (1 << 9);
12676 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12680 ; tmp_tmp_mem; }));
12681 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12682 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12683 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
12685 SI opval = tmp_newval;
12686 SET_H_GR (FLD (f_operand1), opval);
12687 written |= (1 << 9);
12688 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12692 SI opval = tmp_newval;
12693 SET_H_GR (FLD (f_operand2), opval);
12694 written |= (1 << 8);
12695 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12700 BI opval = LTSI (tmp_newval, 0);
12701 CPU (h_nbit) = opval;
12702 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12705 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12706 CPU (h_zbit) = opval;
12707 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12709 SET_H_CBIT_MOVE (0);
12710 SET_H_VBIT_MOVE (0);
12714 CPU (h_xbit) = opval;
12715 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12719 SET_H_INSN_PREFIXED_P (opval);
12720 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12726 abuf->written = written;
12731 CASE (sem, INSN_BOUND_M_W_M) : /* bound-m.w [${Rs}${inc}],${Rd} */
12733 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12734 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12735 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
12736 int UNUSED written = 0;
12737 IADDR UNUSED pc = abuf->addr;
12738 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12744 tmp_tmpops = ZEXTHISI (({ SI tmp_addr;
12747 tmp_postinc = FLD (f_memmode);
12748 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
12749 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
12750 ; if (NEBI (tmp_postinc, 0)) {
12752 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
12753 tmp_addr = ADDSI (tmp_addr, 2);
12756 SI opval = tmp_addr;
12757 SET_H_GR (FLD (f_operand1), opval);
12758 written |= (1 << 9);
12759 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12763 ; tmp_tmp_mem; }));
12764 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12765 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12766 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
12768 SI opval = tmp_newval;
12769 SET_H_GR (FLD (f_operand1), opval);
12770 written |= (1 << 9);
12771 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12775 SI opval = tmp_newval;
12776 SET_H_GR (FLD (f_operand2), opval);
12777 written |= (1 << 8);
12778 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12783 BI opval = LTSI (tmp_newval, 0);
12784 CPU (h_nbit) = opval;
12785 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12788 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12789 CPU (h_zbit) = opval;
12790 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12792 SET_H_CBIT_MOVE (0);
12793 SET_H_VBIT_MOVE (0);
12797 CPU (h_xbit) = opval;
12798 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12802 SET_H_INSN_PREFIXED_P (opval);
12803 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12809 abuf->written = written;
12814 CASE (sem, INSN_BOUND_M_D_M) : /* bound-m.d [${Rs}${inc}],${Rd} */
12816 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12818 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
12819 int UNUSED written = 0;
12820 IADDR UNUSED pc = abuf->addr;
12821 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
12827 tmp_tmpops = ({ SI tmp_addr;
12830 tmp_postinc = FLD (f_memmode);
12831 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
12832 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
12833 ; if (NEBI (tmp_postinc, 0)) {
12835 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
12836 tmp_addr = ADDSI (tmp_addr, 4);
12839 SI opval = tmp_addr;
12840 SET_H_GR (FLD (f_operand1), opval);
12841 written |= (1 << 9);
12842 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12847 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12848 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12849 if (ANDIF (GET_H_INSN_PREFIXED_P (), NOTSI (FLD (f_memmode)))) {
12851 SI opval = tmp_newval;
12852 SET_H_GR (FLD (f_operand1), opval);
12853 written |= (1 << 9);
12854 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12858 SI opval = tmp_newval;
12859 SET_H_GR (FLD (f_operand2), opval);
12860 written |= (1 << 8);
12861 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12866 BI opval = LTSI (tmp_newval, 0);
12867 CPU (h_nbit) = opval;
12868 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12871 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12872 CPU (h_zbit) = opval;
12873 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12875 SET_H_CBIT_MOVE (0);
12876 SET_H_VBIT_MOVE (0);
12880 CPU (h_xbit) = opval;
12881 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12885 SET_H_INSN_PREFIXED_P (opval);
12886 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12892 abuf->written = written;
12897 CASE (sem, INSN_BOUND_CB) : /* bound.b [PC+],${Rd} */
12899 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12900 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12901 #define FLD(f) abuf->fields.sfmt_bound_cb.f
12902 int UNUSED written = 0;
12903 IADDR UNUSED pc = abuf->addr;
12904 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12910 tmp_tmpops = ZEXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte)));
12911 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12912 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12914 SI opval = tmp_newval;
12915 SET_H_GR (FLD (f_operand2), opval);
12916 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12920 BI opval = LTSI (tmp_newval, 0);
12921 CPU (h_nbit) = opval;
12922 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12925 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12926 CPU (h_zbit) = opval;
12927 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12929 SET_H_CBIT_MOVE (0);
12930 SET_H_VBIT_MOVE (0);
12934 CPU (h_xbit) = opval;
12935 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12939 SET_H_INSN_PREFIXED_P (opval);
12940 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
12950 CASE (sem, INSN_BOUND_CW) : /* bound.w [PC+],${Rd} */
12952 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
12953 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12954 #define FLD(f) abuf->fields.sfmt_bound_cw.f
12955 int UNUSED written = 0;
12956 IADDR UNUSED pc = abuf->addr;
12957 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12963 tmp_tmpops = ZEXTSISI (FLD (f_indir_pc__word));
12964 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
12965 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
12967 SI opval = tmp_newval;
12968 SET_H_GR (FLD (f_operand2), opval);
12969 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
12973 BI opval = LTSI (tmp_newval, 0);
12974 CPU (h_nbit) = opval;
12975 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
12978 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
12979 CPU (h_zbit) = opval;
12980 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
12982 SET_H_CBIT_MOVE (0);
12983 SET_H_VBIT_MOVE (0);
12987 CPU (h_xbit) = opval;
12988 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
12992 SET_H_INSN_PREFIXED_P (opval);
12993 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13003 CASE (sem, INSN_BOUND_CD) : /* bound.d [PC+],${Rd} */
13005 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13006 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13007 #define FLD(f) abuf->fields.sfmt_bound_cd.f
13008 int UNUSED written = 0;
13009 IADDR UNUSED pc = abuf->addr;
13010 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
13016 tmp_tmpops = FLD (f_indir_pc__dword);
13017 tmp_tmpopd = GET_H_GR (FLD (f_operand2));
13018 tmp_newval = ((LTUSI (tmp_tmpops, tmp_tmpopd)) ? (tmp_tmpops) : (tmp_tmpopd));
13020 SI opval = tmp_newval;
13021 SET_H_GR (FLD (f_operand2), opval);
13022 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13026 BI opval = LTSI (tmp_newval, 0);
13027 CPU (h_nbit) = opval;
13028 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
13031 BI opval = ANDIF (EQSI (tmp_newval, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
13032 CPU (h_zbit) = opval;
13033 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
13035 SET_H_CBIT_MOVE (0);
13036 SET_H_VBIT_MOVE (0);
13040 CPU (h_xbit) = opval;
13041 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
13045 SET_H_INSN_PREFIXED_P (opval);
13046 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13056 CASE (sem, INSN_SCC) : /* s${cc} ${Rd-sfield} */
13058 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13059 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13060 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
13061 int UNUSED written = 0;
13062 IADDR UNUSED pc = abuf->addr;
13063 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13067 tmp_truthval = ({ SI tmp_tmpcond;
13069 tmp_tmpcond = FLD (f_operand2);
13070 ; if (EQSI (tmp_tmpcond, 0)) {
13071 tmp_condres = NOTBI (CPU (h_cbit));
13073 else if (EQSI (tmp_tmpcond, 1)) {
13074 tmp_condres = CPU (h_cbit);
13076 else if (EQSI (tmp_tmpcond, 2)) {
13077 tmp_condres = NOTBI (CPU (h_zbit));
13079 else if (EQSI (tmp_tmpcond, 3)) {
13080 tmp_condres = CPU (h_zbit);
13082 else if (EQSI (tmp_tmpcond, 4)) {
13083 tmp_condres = NOTBI (CPU (h_vbit));
13085 else if (EQSI (tmp_tmpcond, 5)) {
13086 tmp_condres = CPU (h_vbit);
13088 else if (EQSI (tmp_tmpcond, 6)) {
13089 tmp_condres = NOTBI (CPU (h_nbit));
13091 else if (EQSI (tmp_tmpcond, 7)) {
13092 tmp_condres = CPU (h_nbit);
13094 else if (EQSI (tmp_tmpcond, 8)) {
13095 tmp_condres = ORBI (CPU (h_cbit), CPU (h_zbit));
13097 else if (EQSI (tmp_tmpcond, 9)) {
13098 tmp_condres = NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)));
13100 else if (EQSI (tmp_tmpcond, 10)) {
13101 tmp_condres = NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)));
13103 else if (EQSI (tmp_tmpcond, 11)) {
13104 tmp_condres = XORBI (CPU (h_vbit), CPU (h_nbit));
13106 else if (EQSI (tmp_tmpcond, 12)) {
13107 tmp_condres = NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)));
13109 else if (EQSI (tmp_tmpcond, 13)) {
13110 tmp_condres = ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit));
13112 else if (EQSI (tmp_tmpcond, 14)) {
13115 else if (EQSI (tmp_tmpcond, 15)) {
13116 tmp_condres = CPU (h_pbit);
13120 SI opval = ZEXTBISI (tmp_truthval);
13121 SET_H_GR (FLD (f_operand1), opval);
13122 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13127 CPU (h_xbit) = opval;
13128 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
13132 SET_H_INSN_PREFIXED_P (opval);
13133 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13142 CASE (sem, INSN_LZ) : /* lz ${Rs},${Rd} */
13144 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13145 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13146 #define FLD(f) abuf->fields.sfmt_muls_b.f
13147 int UNUSED written = 0;
13148 IADDR UNUSED pc = abuf->addr;
13149 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13154 tmp_tmp = GET_H_GR (FLD (f_operand1));
13157 if (GESI (tmp_tmp, 0)) {
13159 tmp_tmp = SLLSI (tmp_tmp, 1);
13160 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13163 if (GESI (tmp_tmp, 0)) {
13165 tmp_tmp = SLLSI (tmp_tmp, 1);
13166 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13169 if (GESI (tmp_tmp, 0)) {
13171 tmp_tmp = SLLSI (tmp_tmp, 1);
13172 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13175 if (GESI (tmp_tmp, 0)) {
13177 tmp_tmp = SLLSI (tmp_tmp, 1);
13178 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13181 if (GESI (tmp_tmp, 0)) {
13183 tmp_tmp = SLLSI (tmp_tmp, 1);
13184 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13187 if (GESI (tmp_tmp, 0)) {
13189 tmp_tmp = SLLSI (tmp_tmp, 1);
13190 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13193 if (GESI (tmp_tmp, 0)) {
13195 tmp_tmp = SLLSI (tmp_tmp, 1);
13196 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13199 if (GESI (tmp_tmp, 0)) {
13201 tmp_tmp = SLLSI (tmp_tmp, 1);
13202 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13205 if (GESI (tmp_tmp, 0)) {
13207 tmp_tmp = SLLSI (tmp_tmp, 1);
13208 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13211 if (GESI (tmp_tmp, 0)) {
13213 tmp_tmp = SLLSI (tmp_tmp, 1);
13214 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13217 if (GESI (tmp_tmp, 0)) {
13219 tmp_tmp = SLLSI (tmp_tmp, 1);
13220 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13223 if (GESI (tmp_tmp, 0)) {
13225 tmp_tmp = SLLSI (tmp_tmp, 1);
13226 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13229 if (GESI (tmp_tmp, 0)) {
13231 tmp_tmp = SLLSI (tmp_tmp, 1);
13232 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13235 if (GESI (tmp_tmp, 0)) {
13237 tmp_tmp = SLLSI (tmp_tmp, 1);
13238 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13241 if (GESI (tmp_tmp, 0)) {
13243 tmp_tmp = SLLSI (tmp_tmp, 1);
13244 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13247 if (GESI (tmp_tmp, 0)) {
13249 tmp_tmp = SLLSI (tmp_tmp, 1);
13250 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13253 if (GESI (tmp_tmp, 0)) {
13255 tmp_tmp = SLLSI (tmp_tmp, 1);
13256 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13259 if (GESI (tmp_tmp, 0)) {
13261 tmp_tmp = SLLSI (tmp_tmp, 1);
13262 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13265 if (GESI (tmp_tmp, 0)) {
13267 tmp_tmp = SLLSI (tmp_tmp, 1);
13268 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13271 if (GESI (tmp_tmp, 0)) {
13273 tmp_tmp = SLLSI (tmp_tmp, 1);
13274 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13277 if (GESI (tmp_tmp, 0)) {
13279 tmp_tmp = SLLSI (tmp_tmp, 1);
13280 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13283 if (GESI (tmp_tmp, 0)) {
13285 tmp_tmp = SLLSI (tmp_tmp, 1);
13286 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13289 if (GESI (tmp_tmp, 0)) {
13291 tmp_tmp = SLLSI (tmp_tmp, 1);
13292 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13295 if (GESI (tmp_tmp, 0)) {
13297 tmp_tmp = SLLSI (tmp_tmp, 1);
13298 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13301 if (GESI (tmp_tmp, 0)) {
13303 tmp_tmp = SLLSI (tmp_tmp, 1);
13304 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13307 if (GESI (tmp_tmp, 0)) {
13309 tmp_tmp = SLLSI (tmp_tmp, 1);
13310 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13313 if (GESI (tmp_tmp, 0)) {
13315 tmp_tmp = SLLSI (tmp_tmp, 1);
13316 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13319 if (GESI (tmp_tmp, 0)) {
13321 tmp_tmp = SLLSI (tmp_tmp, 1);
13322 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13325 if (GESI (tmp_tmp, 0)) {
13327 tmp_tmp = SLLSI (tmp_tmp, 1);
13328 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13331 if (GESI (tmp_tmp, 0)) {
13333 tmp_tmp = SLLSI (tmp_tmp, 1);
13334 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13337 if (GESI (tmp_tmp, 0)) {
13339 tmp_tmp = SLLSI (tmp_tmp, 1);
13340 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13343 if (GESI (tmp_tmp, 0)) {
13345 tmp_tmp = SLLSI (tmp_tmp, 1);
13346 tmp_tmpd = ADDSI (tmp_tmpd, 1);
13351 SI opval = tmp_tmpd;
13352 SET_H_GR (FLD (f_operand2), opval);
13353 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13357 BI opval = LTSI (tmp_tmpd, 0);
13358 CPU (h_nbit) = opval;
13359 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
13362 BI opval = ANDIF (EQSI (tmp_tmpd, 0), ((CPU (h_xbit)) ? (CPU (h_zbit)) : (1)));
13363 CPU (h_zbit) = opval;
13364 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
13366 SET_H_CBIT_MOVE (0);
13367 SET_H_VBIT_MOVE (0);
13371 CPU (h_xbit) = opval;
13372 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
13376 SET_H_INSN_PREFIXED_P (opval);
13377 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13387 CASE (sem, INSN_ADDOQ) : /* addoq $o,$Rs,ACR */
13389 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13391 #define FLD(f) abuf->fields.sfmt_addoq.f
13392 int UNUSED written = 0;
13393 IADDR UNUSED pc = abuf->addr;
13394 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13398 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), FLD (f_s8));
13399 CPU (h_prefixreg_pre_v32) = opval;
13400 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13404 SET_H_INSN_PREFIXED_P (opval);
13405 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13413 CASE (sem, INSN_BDAPQPC) : /* bdapq $o,PC */
13415 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13416 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13417 #define FLD(f) abuf->fields.sfmt_addoq.f
13418 int UNUSED written = 0;
13419 IADDR UNUSED pc = abuf->addr;
13421 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13425 SI opval = ADDSI (ADDSI (pc, 2), FLD (f_s8));
13426 CPU (h_prefixreg_pre_v32) = opval;
13427 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13431 SET_H_INSN_PREFIXED_P (opval);
13432 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13434 cris_flush_simulator_decode_cache (current_cpu, pc);
13437 SEM_BRANCH_FINI (vpc);
13442 CASE (sem, INSN_BDAP_32_PC) : /* bdap ${sconst32},PC */
13444 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13445 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13446 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
13447 int UNUSED written = 0;
13448 IADDR UNUSED pc = abuf->addr;
13449 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
13455 tmp_offs = FLD (f_indir_pc__dword);
13456 tmp_oldpc = ADDSI (pc, 6);
13457 tmp_newpc = ADDSI (tmp_oldpc, tmp_offs);
13459 SI opval = tmp_newpc;
13460 CPU (h_prefixreg_pre_v32) = opval;
13461 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13465 SET_H_INSN_PREFIXED_P (opval);
13466 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13474 CASE (sem, INSN_MOVE_M_PCPLUS_P0) : /* move [PC+],P0 */
13476 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13477 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13478 #define FLD(f) abuf->fields.sfmt_move_m_spplus_p8.f
13479 int UNUSED written = 0;
13480 IADDR UNUSED pc = abuf->addr;
13482 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13484 if (GET_H_INSN_PREFIXED_P ()) {
13487 tmp_dummy = ({ SI tmp_addr;
13490 tmp_postinc = FLD (f_memmode);
13491 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (pc) : (CPU (h_prefixreg_pre_v32)));
13492 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
13493 ; if (NEBI (tmp_postinc, 0)) {
13495 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13496 tmp_addr = ADDSI (tmp_addr, 1);
13499 USI opval = tmp_addr;
13500 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
13501 written |= (1 << 5);
13502 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
13510 CPU (h_xbit) = opval;
13511 written |= (1 << 7);
13512 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
13516 SET_H_INSN_PREFIXED_P (opval);
13517 written |= (1 << 6);
13518 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13523 cgen_rtx_error (current_cpu, "move [PC+],P0 without prefix is not implemented");
13526 abuf->written = written;
13527 SEM_BRANCH_FINI (vpc);
13532 CASE (sem, INSN_MOVE_M_SPPLUS_P8) : /* move [SP+],P8 */
13534 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13535 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13536 #define FLD(f) abuf->fields.sfmt_move_m_spplus_p8.f
13537 int UNUSED written = 0;
13538 IADDR UNUSED pc = abuf->addr;
13539 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13541 if (GET_H_INSN_PREFIXED_P ()) {
13544 tmp_dummy = ({ SI tmp_addr;
13547 tmp_postinc = FLD (f_memmode);
13548 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (((UINT) 14))) : (CPU (h_prefixreg_pre_v32)));
13549 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
13550 ; if (NEBI (tmp_postinc, 0)) {
13552 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13553 tmp_addr = ADDSI (tmp_addr, 4);
13556 SI opval = tmp_addr;
13557 SET_H_GR (((UINT) 14), opval);
13558 written |= (1 << 5);
13559 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13567 CPU (h_xbit) = opval;
13568 written |= (1 << 7);
13569 TRACE_RESULT (current_cpu, abuf, "xbit", 'x', opval);
13573 SET_H_INSN_PREFIXED_P (opval);
13574 written |= (1 << 6);
13575 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13580 cgen_rtx_error (current_cpu, "move [SP+],P8 without prefix is not implemented");
13583 abuf->written = written;
13588 CASE (sem, INSN_ADDO_M_B_M) : /* addo-m.b [${Rs}${inc}],$Rd,ACR */
13590 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13591 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13592 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
13593 int UNUSED written = 0;
13594 IADDR UNUSED pc = abuf->addr;
13595 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13599 tmp_tmps = ({ SI tmp_addr;
13602 tmp_postinc = FLD (f_memmode);
13603 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
13604 ; tmp_tmp_mem = GETMEMQI (current_cpu, pc, tmp_addr);
13605 ; if (NEBI (tmp_postinc, 0)) {
13607 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13608 tmp_addr = ADDSI (tmp_addr, 1);
13611 SI opval = tmp_addr;
13612 SET_H_GR (FLD (f_operand1), opval);
13613 written |= (1 << 6);
13614 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13620 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTQISI (tmp_tmps));
13621 CPU (h_prefixreg_pre_v32) = opval;
13622 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13626 SET_H_INSN_PREFIXED_P (opval);
13627 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13631 abuf->written = written;
13636 CASE (sem, INSN_ADDO_M_W_M) : /* addo-m.w [${Rs}${inc}],$Rd,ACR */
13638 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13640 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
13641 int UNUSED written = 0;
13642 IADDR UNUSED pc = abuf->addr;
13643 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13647 tmp_tmps = ({ SI tmp_addr;
13650 tmp_postinc = FLD (f_memmode);
13651 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
13652 ; tmp_tmp_mem = GETMEMHI (current_cpu, pc, tmp_addr);
13653 ; if (NEBI (tmp_postinc, 0)) {
13655 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13656 tmp_addr = ADDSI (tmp_addr, 2);
13659 SI opval = tmp_addr;
13660 SET_H_GR (FLD (f_operand1), opval);
13661 written |= (1 << 6);
13662 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13668 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTHISI (tmp_tmps));
13669 CPU (h_prefixreg_pre_v32) = opval;
13670 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13674 SET_H_INSN_PREFIXED_P (opval);
13675 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13679 abuf->written = written;
13684 CASE (sem, INSN_ADDO_M_D_M) : /* addo-m.d [${Rs}${inc}],$Rd,ACR */
13686 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13687 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13688 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
13689 int UNUSED written = 0;
13690 IADDR UNUSED pc = abuf->addr;
13691 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13695 tmp_tmps = ({ SI tmp_addr;
13698 tmp_postinc = FLD (f_memmode);
13699 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
13700 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
13701 ; if (NEBI (tmp_postinc, 0)) {
13703 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13704 tmp_addr = ADDSI (tmp_addr, 4);
13707 SI opval = tmp_addr;
13708 SET_H_GR (FLD (f_operand1), opval);
13709 written |= (1 << 6);
13710 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13716 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), tmp_tmps);
13717 CPU (h_prefixreg_pre_v32) = opval;
13718 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13722 SET_H_INSN_PREFIXED_P (opval);
13723 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13727 abuf->written = written;
13732 CASE (sem, INSN_ADDO_CB) : /* addo.b [PC+],$Rd,ACR */
13734 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13736 #define FLD(f) abuf->fields.sfmt_bound_cb.f
13737 int UNUSED written = 0;
13738 IADDR UNUSED pc = abuf->addr;
13739 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13743 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTQISI (TRUNCSIQI (FLD (f_indir_pc__byte))));
13744 CPU (h_prefixreg_pre_v32) = opval;
13745 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13749 SET_H_INSN_PREFIXED_P (opval);
13750 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13758 CASE (sem, INSN_ADDO_CW) : /* addo.w [PC+],$Rd,ACR */
13760 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13761 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13762 #define FLD(f) abuf->fields.sfmt_bound_cw.f
13763 int UNUSED written = 0;
13764 IADDR UNUSED pc = abuf->addr;
13765 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13769 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), EXTHISI (TRUNCSIHI (FLD (f_indir_pc__word))));
13770 CPU (h_prefixreg_pre_v32) = opval;
13771 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13775 SET_H_INSN_PREFIXED_P (opval);
13776 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13784 CASE (sem, INSN_ADDO_CD) : /* addo.d [PC+],$Rd,ACR */
13786 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13787 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13788 #define FLD(f) abuf->fields.sfmt_bound_cd.f
13789 int UNUSED written = 0;
13790 IADDR UNUSED pc = abuf->addr;
13791 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
13795 SI opval = ADDSI (GET_H_GR (FLD (f_operand2)), FLD (f_indir_pc__dword));
13796 CPU (h_prefixreg_pre_v32) = opval;
13797 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13801 SET_H_INSN_PREFIXED_P (opval);
13802 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13810 CASE (sem, INSN_DIP_M) : /* dip [${Rs}${inc}] */
13812 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13814 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
13815 int UNUSED written = 0;
13816 IADDR UNUSED pc = abuf->addr;
13817 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13821 tmp_tmps = ({ SI tmp_addr;
13824 tmp_postinc = FLD (f_memmode);
13825 ; tmp_addr = ((EQBI (GET_H_INSN_PREFIXED_P (), 0)) ? (GET_H_GR (FLD (f_operand1))) : (CPU (h_prefixreg_pre_v32)));
13826 ; tmp_tmp_mem = GETMEMSI (current_cpu, pc, tmp_addr);
13827 ; if (NEBI (tmp_postinc, 0)) {
13829 if (EQBI (GET_H_INSN_PREFIXED_P (), 0)) {
13830 tmp_addr = ADDSI (tmp_addr, 4);
13833 SI opval = tmp_addr;
13834 SET_H_GR (FLD (f_operand1), opval);
13835 written |= (1 << 5);
13836 TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
13842 SI opval = tmp_tmps;
13843 CPU (h_prefixreg_pre_v32) = opval;
13844 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13848 SET_H_INSN_PREFIXED_P (opval);
13849 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13853 abuf->written = written;
13858 CASE (sem, INSN_DIP_C) : /* dip [PC+] */
13860 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13861 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13862 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
13863 int UNUSED written = 0;
13864 IADDR UNUSED pc = abuf->addr;
13865 vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
13869 SI opval = FLD (f_indir_pc__dword);
13870 CPU (h_prefixreg_pre_v32) = opval;
13871 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13875 SET_H_INSN_PREFIXED_P (opval);
13876 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13884 CASE (sem, INSN_ADDI_ACR_B_R) : /* addi-acr.b ${Rs-dfield}.m,${Rd-sfield},ACR */
13886 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13887 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13888 #define FLD(f) abuf->fields.sfmt_add_b_r.f
13889 int UNUSED written = 0;
13890 IADDR UNUSED pc = abuf->addr;
13891 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13895 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 1));
13896 CPU (h_prefixreg_pre_v32) = opval;
13897 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13901 SET_H_INSN_PREFIXED_P (opval);
13902 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13910 CASE (sem, INSN_ADDI_ACR_W_R) : /* addi-acr.w ${Rs-dfield}.m,${Rd-sfield},ACR */
13912 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13913 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13914 #define FLD(f) abuf->fields.sfmt_add_b_r.f
13915 int UNUSED written = 0;
13916 IADDR UNUSED pc = abuf->addr;
13917 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13921 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 2));
13922 CPU (h_prefixreg_pre_v32) = opval;
13923 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13927 SET_H_INSN_PREFIXED_P (opval);
13928 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13936 CASE (sem, INSN_ADDI_ACR_D_R) : /* addi-acr.d ${Rs-dfield}.m,${Rd-sfield},ACR */
13938 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13939 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13940 #define FLD(f) abuf->fields.sfmt_add_b_r.f
13941 int UNUSED written = 0;
13942 IADDR UNUSED pc = abuf->addr;
13943 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13947 SI opval = ADDSI (GET_H_GR (FLD (f_operand1)), MULSI (GET_H_GR (FLD (f_operand2)), 4));
13948 CPU (h_prefixreg_pre_v32) = opval;
13949 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13953 SET_H_INSN_PREFIXED_P (opval);
13954 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13962 CASE (sem, INSN_BIAP_PC_B_R) : /* biap-pc.b ${Rs-dfield}.m,PC */
13964 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13965 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13966 #define FLD(f) abuf->fields.sfmt_addoq.f
13967 int UNUSED written = 0;
13968 IADDR UNUSED pc = abuf->addr;
13969 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13973 SI opval = ADDSI (ADDSI (pc, 4), MULSI (GET_H_GR (FLD (f_operand2)), 1));
13974 CPU (h_prefixreg_pre_v32) = opval;
13975 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
13979 SET_H_INSN_PREFIXED_P (opval);
13980 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
13988 CASE (sem, INSN_BIAP_PC_W_R) : /* biap-pc.w ${Rs-dfield}.m,PC */
13990 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
13991 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13992 #define FLD(f) abuf->fields.sfmt_addoq.f
13993 int UNUSED written = 0;
13994 IADDR UNUSED pc = abuf->addr;
13995 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
13999 SI opval = ADDSI (ADDSI (pc, 4), MULSI (GET_H_GR (FLD (f_operand2)), 2));
14000 CPU (h_prefixreg_pre_v32) = opval;
14001 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
14005 SET_H_INSN_PREFIXED_P (opval);
14006 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
14014 CASE (sem, INSN_BIAP_PC_D_R) : /* biap-pc.d ${Rs-dfield}.m,PC */
14016 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
14017 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14018 #define FLD(f) abuf->fields.sfmt_addoq.f
14019 int UNUSED written = 0;
14020 IADDR UNUSED pc = abuf->addr;
14021 vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
14025 SI opval = ADDSI (ADDSI (pc, 4), MULSI (GET_H_GR (FLD (f_operand2)), 4));
14026 CPU (h_prefixreg_pre_v32) = opval;
14027 TRACE_RESULT (current_cpu, abuf, "prefixreg", 'x', opval);
14031 SET_H_INSN_PREFIXED_P (opval);
14032 TRACE_RESULT (current_cpu, abuf, "insn-prefixed-p", 'x', opval);
14042 ENDSWITCH (sem) /* End of semantic switch. */
14044 /* At this point `vpc' contains the next insn to execute. */
14047 #undef DEFINE_SWITCH
14048 #endif /* DEFINE_SWITCH */