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 */