]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/i960/sem-switch.c
Initial creation of sourceware repository
[thirdparty/binutils-gdb.git] / sim / i960 / sem-switch.c
1 /* Simulator instruction semantics for i960base.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
6
7 This file is part of the GNU Simulators.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
12 any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23 */
24
25 #ifdef DEFINE_LABELS
26
27 /* The labels have the case they have because the enum of insn types
28 is all uppercase and in the non-stdc case the insn symbol is built
29 into the enum name. */
30
31 static struct {
32 int index;
33 void *label;
34 } labels[] = {
35 { I960BASE_INSN_X_INVALID, && case_sem_INSN_X_INVALID },
36 { I960BASE_INSN_X_AFTER, && case_sem_INSN_X_AFTER },
37 { I960BASE_INSN_X_BEFORE, && case_sem_INSN_X_BEFORE },
38 { I960BASE_INSN_X_CTI_CHAIN, && case_sem_INSN_X_CTI_CHAIN },
39 { I960BASE_INSN_X_CHAIN, && case_sem_INSN_X_CHAIN },
40 { I960BASE_INSN_X_BEGIN, && case_sem_INSN_X_BEGIN },
41 { I960BASE_INSN_MULO, && case_sem_INSN_MULO },
42 { I960BASE_INSN_MULO1, && case_sem_INSN_MULO1 },
43 { I960BASE_INSN_MULO2, && case_sem_INSN_MULO2 },
44 { I960BASE_INSN_MULO3, && case_sem_INSN_MULO3 },
45 { I960BASE_INSN_REMO, && case_sem_INSN_REMO },
46 { I960BASE_INSN_REMO1, && case_sem_INSN_REMO1 },
47 { I960BASE_INSN_REMO2, && case_sem_INSN_REMO2 },
48 { I960BASE_INSN_REMO3, && case_sem_INSN_REMO3 },
49 { I960BASE_INSN_DIVO, && case_sem_INSN_DIVO },
50 { I960BASE_INSN_DIVO1, && case_sem_INSN_DIVO1 },
51 { I960BASE_INSN_DIVO2, && case_sem_INSN_DIVO2 },
52 { I960BASE_INSN_DIVO3, && case_sem_INSN_DIVO3 },
53 { I960BASE_INSN_REMI, && case_sem_INSN_REMI },
54 { I960BASE_INSN_REMI1, && case_sem_INSN_REMI1 },
55 { I960BASE_INSN_REMI2, && case_sem_INSN_REMI2 },
56 { I960BASE_INSN_REMI3, && case_sem_INSN_REMI3 },
57 { I960BASE_INSN_DIVI, && case_sem_INSN_DIVI },
58 { I960BASE_INSN_DIVI1, && case_sem_INSN_DIVI1 },
59 { I960BASE_INSN_DIVI2, && case_sem_INSN_DIVI2 },
60 { I960BASE_INSN_DIVI3, && case_sem_INSN_DIVI3 },
61 { I960BASE_INSN_ADDO, && case_sem_INSN_ADDO },
62 { I960BASE_INSN_ADDO1, && case_sem_INSN_ADDO1 },
63 { I960BASE_INSN_ADDO2, && case_sem_INSN_ADDO2 },
64 { I960BASE_INSN_ADDO3, && case_sem_INSN_ADDO3 },
65 { I960BASE_INSN_SUBO, && case_sem_INSN_SUBO },
66 { I960BASE_INSN_SUBO1, && case_sem_INSN_SUBO1 },
67 { I960BASE_INSN_SUBO2, && case_sem_INSN_SUBO2 },
68 { I960BASE_INSN_SUBO3, && case_sem_INSN_SUBO3 },
69 { I960BASE_INSN_NOTBIT, && case_sem_INSN_NOTBIT },
70 { I960BASE_INSN_NOTBIT1, && case_sem_INSN_NOTBIT1 },
71 { I960BASE_INSN_NOTBIT2, && case_sem_INSN_NOTBIT2 },
72 { I960BASE_INSN_NOTBIT3, && case_sem_INSN_NOTBIT3 },
73 { I960BASE_INSN_AND, && case_sem_INSN_AND },
74 { I960BASE_INSN_AND1, && case_sem_INSN_AND1 },
75 { I960BASE_INSN_AND2, && case_sem_INSN_AND2 },
76 { I960BASE_INSN_AND3, && case_sem_INSN_AND3 },
77 { I960BASE_INSN_ANDNOT, && case_sem_INSN_ANDNOT },
78 { I960BASE_INSN_ANDNOT1, && case_sem_INSN_ANDNOT1 },
79 { I960BASE_INSN_ANDNOT2, && case_sem_INSN_ANDNOT2 },
80 { I960BASE_INSN_ANDNOT3, && case_sem_INSN_ANDNOT3 },
81 { I960BASE_INSN_SETBIT, && case_sem_INSN_SETBIT },
82 { I960BASE_INSN_SETBIT1, && case_sem_INSN_SETBIT1 },
83 { I960BASE_INSN_SETBIT2, && case_sem_INSN_SETBIT2 },
84 { I960BASE_INSN_SETBIT3, && case_sem_INSN_SETBIT3 },
85 { I960BASE_INSN_NOTAND, && case_sem_INSN_NOTAND },
86 { I960BASE_INSN_NOTAND1, && case_sem_INSN_NOTAND1 },
87 { I960BASE_INSN_NOTAND2, && case_sem_INSN_NOTAND2 },
88 { I960BASE_INSN_NOTAND3, && case_sem_INSN_NOTAND3 },
89 { I960BASE_INSN_XOR, && case_sem_INSN_XOR },
90 { I960BASE_INSN_XOR1, && case_sem_INSN_XOR1 },
91 { I960BASE_INSN_XOR2, && case_sem_INSN_XOR2 },
92 { I960BASE_INSN_XOR3, && case_sem_INSN_XOR3 },
93 { I960BASE_INSN_OR, && case_sem_INSN_OR },
94 { I960BASE_INSN_OR1, && case_sem_INSN_OR1 },
95 { I960BASE_INSN_OR2, && case_sem_INSN_OR2 },
96 { I960BASE_INSN_OR3, && case_sem_INSN_OR3 },
97 { I960BASE_INSN_NOR, && case_sem_INSN_NOR },
98 { I960BASE_INSN_NOR1, && case_sem_INSN_NOR1 },
99 { I960BASE_INSN_NOR2, && case_sem_INSN_NOR2 },
100 { I960BASE_INSN_NOR3, && case_sem_INSN_NOR3 },
101 { I960BASE_INSN_NOT, && case_sem_INSN_NOT },
102 { I960BASE_INSN_NOT1, && case_sem_INSN_NOT1 },
103 { I960BASE_INSN_NOT2, && case_sem_INSN_NOT2 },
104 { I960BASE_INSN_NOT3, && case_sem_INSN_NOT3 },
105 { I960BASE_INSN_CLRBIT, && case_sem_INSN_CLRBIT },
106 { I960BASE_INSN_CLRBIT1, && case_sem_INSN_CLRBIT1 },
107 { I960BASE_INSN_CLRBIT2, && case_sem_INSN_CLRBIT2 },
108 { I960BASE_INSN_CLRBIT3, && case_sem_INSN_CLRBIT3 },
109 { I960BASE_INSN_SHLO, && case_sem_INSN_SHLO },
110 { I960BASE_INSN_SHLO1, && case_sem_INSN_SHLO1 },
111 { I960BASE_INSN_SHLO2, && case_sem_INSN_SHLO2 },
112 { I960BASE_INSN_SHLO3, && case_sem_INSN_SHLO3 },
113 { I960BASE_INSN_SHRO, && case_sem_INSN_SHRO },
114 { I960BASE_INSN_SHRO1, && case_sem_INSN_SHRO1 },
115 { I960BASE_INSN_SHRO2, && case_sem_INSN_SHRO2 },
116 { I960BASE_INSN_SHRO3, && case_sem_INSN_SHRO3 },
117 { I960BASE_INSN_SHLI, && case_sem_INSN_SHLI },
118 { I960BASE_INSN_SHLI1, && case_sem_INSN_SHLI1 },
119 { I960BASE_INSN_SHLI2, && case_sem_INSN_SHLI2 },
120 { I960BASE_INSN_SHLI3, && case_sem_INSN_SHLI3 },
121 { I960BASE_INSN_SHRI, && case_sem_INSN_SHRI },
122 { I960BASE_INSN_SHRI1, && case_sem_INSN_SHRI1 },
123 { I960BASE_INSN_SHRI2, && case_sem_INSN_SHRI2 },
124 { I960BASE_INSN_SHRI3, && case_sem_INSN_SHRI3 },
125 { I960BASE_INSN_EMUL, && case_sem_INSN_EMUL },
126 { I960BASE_INSN_EMUL1, && case_sem_INSN_EMUL1 },
127 { I960BASE_INSN_EMUL2, && case_sem_INSN_EMUL2 },
128 { I960BASE_INSN_EMUL3, && case_sem_INSN_EMUL3 },
129 { I960BASE_INSN_MOV, && case_sem_INSN_MOV },
130 { I960BASE_INSN_MOV1, && case_sem_INSN_MOV1 },
131 { I960BASE_INSN_MOVL, && case_sem_INSN_MOVL },
132 { I960BASE_INSN_MOVL1, && case_sem_INSN_MOVL1 },
133 { I960BASE_INSN_MOVT, && case_sem_INSN_MOVT },
134 { I960BASE_INSN_MOVT1, && case_sem_INSN_MOVT1 },
135 { I960BASE_INSN_MOVQ, && case_sem_INSN_MOVQ },
136 { I960BASE_INSN_MOVQ1, && case_sem_INSN_MOVQ1 },
137 { I960BASE_INSN_MODPC, && case_sem_INSN_MODPC },
138 { I960BASE_INSN_MODAC, && case_sem_INSN_MODAC },
139 { I960BASE_INSN_LDA_OFFSET, && case_sem_INSN_LDA_OFFSET },
140 { I960BASE_INSN_LDA_INDIRECT_OFFSET, && case_sem_INSN_LDA_INDIRECT_OFFSET },
141 { I960BASE_INSN_LDA_INDIRECT, && case_sem_INSN_LDA_INDIRECT },
142 { I960BASE_INSN_LDA_INDIRECT_INDEX, && case_sem_INSN_LDA_INDIRECT_INDEX },
143 { I960BASE_INSN_LDA_DISP, && case_sem_INSN_LDA_DISP },
144 { I960BASE_INSN_LDA_INDIRECT_DISP, && case_sem_INSN_LDA_INDIRECT_DISP },
145 { I960BASE_INSN_LDA_INDEX_DISP, && case_sem_INSN_LDA_INDEX_DISP },
146 { I960BASE_INSN_LDA_INDIRECT_INDEX_DISP, && case_sem_INSN_LDA_INDIRECT_INDEX_DISP },
147 { I960BASE_INSN_LD_OFFSET, && case_sem_INSN_LD_OFFSET },
148 { I960BASE_INSN_LD_INDIRECT_OFFSET, && case_sem_INSN_LD_INDIRECT_OFFSET },
149 { I960BASE_INSN_LD_INDIRECT, && case_sem_INSN_LD_INDIRECT },
150 { I960BASE_INSN_LD_INDIRECT_INDEX, && case_sem_INSN_LD_INDIRECT_INDEX },
151 { I960BASE_INSN_LD_DISP, && case_sem_INSN_LD_DISP },
152 { I960BASE_INSN_LD_INDIRECT_DISP, && case_sem_INSN_LD_INDIRECT_DISP },
153 { I960BASE_INSN_LD_INDEX_DISP, && case_sem_INSN_LD_INDEX_DISP },
154 { I960BASE_INSN_LD_INDIRECT_INDEX_DISP, && case_sem_INSN_LD_INDIRECT_INDEX_DISP },
155 { I960BASE_INSN_LDOB_OFFSET, && case_sem_INSN_LDOB_OFFSET },
156 { I960BASE_INSN_LDOB_INDIRECT_OFFSET, && case_sem_INSN_LDOB_INDIRECT_OFFSET },
157 { I960BASE_INSN_LDOB_INDIRECT, && case_sem_INSN_LDOB_INDIRECT },
158 { I960BASE_INSN_LDOB_INDIRECT_INDEX, && case_sem_INSN_LDOB_INDIRECT_INDEX },
159 { I960BASE_INSN_LDOB_DISP, && case_sem_INSN_LDOB_DISP },
160 { I960BASE_INSN_LDOB_INDIRECT_DISP, && case_sem_INSN_LDOB_INDIRECT_DISP },
161 { I960BASE_INSN_LDOB_INDEX_DISP, && case_sem_INSN_LDOB_INDEX_DISP },
162 { I960BASE_INSN_LDOB_INDIRECT_INDEX_DISP, && case_sem_INSN_LDOB_INDIRECT_INDEX_DISP },
163 { I960BASE_INSN_LDOS_OFFSET, && case_sem_INSN_LDOS_OFFSET },
164 { I960BASE_INSN_LDOS_INDIRECT_OFFSET, && case_sem_INSN_LDOS_INDIRECT_OFFSET },
165 { I960BASE_INSN_LDOS_INDIRECT, && case_sem_INSN_LDOS_INDIRECT },
166 { I960BASE_INSN_LDOS_INDIRECT_INDEX, && case_sem_INSN_LDOS_INDIRECT_INDEX },
167 { I960BASE_INSN_LDOS_DISP, && case_sem_INSN_LDOS_DISP },
168 { I960BASE_INSN_LDOS_INDIRECT_DISP, && case_sem_INSN_LDOS_INDIRECT_DISP },
169 { I960BASE_INSN_LDOS_INDEX_DISP, && case_sem_INSN_LDOS_INDEX_DISP },
170 { I960BASE_INSN_LDOS_INDIRECT_INDEX_DISP, && case_sem_INSN_LDOS_INDIRECT_INDEX_DISP },
171 { I960BASE_INSN_LDIB_OFFSET, && case_sem_INSN_LDIB_OFFSET },
172 { I960BASE_INSN_LDIB_INDIRECT_OFFSET, && case_sem_INSN_LDIB_INDIRECT_OFFSET },
173 { I960BASE_INSN_LDIB_INDIRECT, && case_sem_INSN_LDIB_INDIRECT },
174 { I960BASE_INSN_LDIB_INDIRECT_INDEX, && case_sem_INSN_LDIB_INDIRECT_INDEX },
175 { I960BASE_INSN_LDIB_DISP, && case_sem_INSN_LDIB_DISP },
176 { I960BASE_INSN_LDIB_INDIRECT_DISP, && case_sem_INSN_LDIB_INDIRECT_DISP },
177 { I960BASE_INSN_LDIB_INDEX_DISP, && case_sem_INSN_LDIB_INDEX_DISP },
178 { I960BASE_INSN_LDIB_INDIRECT_INDEX_DISP, && case_sem_INSN_LDIB_INDIRECT_INDEX_DISP },
179 { I960BASE_INSN_LDIS_OFFSET, && case_sem_INSN_LDIS_OFFSET },
180 { I960BASE_INSN_LDIS_INDIRECT_OFFSET, && case_sem_INSN_LDIS_INDIRECT_OFFSET },
181 { I960BASE_INSN_LDIS_INDIRECT, && case_sem_INSN_LDIS_INDIRECT },
182 { I960BASE_INSN_LDIS_INDIRECT_INDEX, && case_sem_INSN_LDIS_INDIRECT_INDEX },
183 { I960BASE_INSN_LDIS_DISP, && case_sem_INSN_LDIS_DISP },
184 { I960BASE_INSN_LDIS_INDIRECT_DISP, && case_sem_INSN_LDIS_INDIRECT_DISP },
185 { I960BASE_INSN_LDIS_INDEX_DISP, && case_sem_INSN_LDIS_INDEX_DISP },
186 { I960BASE_INSN_LDIS_INDIRECT_INDEX_DISP, && case_sem_INSN_LDIS_INDIRECT_INDEX_DISP },
187 { I960BASE_INSN_LDL_OFFSET, && case_sem_INSN_LDL_OFFSET },
188 { I960BASE_INSN_LDL_INDIRECT_OFFSET, && case_sem_INSN_LDL_INDIRECT_OFFSET },
189 { I960BASE_INSN_LDL_INDIRECT, && case_sem_INSN_LDL_INDIRECT },
190 { I960BASE_INSN_LDL_INDIRECT_INDEX, && case_sem_INSN_LDL_INDIRECT_INDEX },
191 { I960BASE_INSN_LDL_DISP, && case_sem_INSN_LDL_DISP },
192 { I960BASE_INSN_LDL_INDIRECT_DISP, && case_sem_INSN_LDL_INDIRECT_DISP },
193 { I960BASE_INSN_LDL_INDEX_DISP, && case_sem_INSN_LDL_INDEX_DISP },
194 { I960BASE_INSN_LDL_INDIRECT_INDEX_DISP, && case_sem_INSN_LDL_INDIRECT_INDEX_DISP },
195 { I960BASE_INSN_LDT_OFFSET, && case_sem_INSN_LDT_OFFSET },
196 { I960BASE_INSN_LDT_INDIRECT_OFFSET, && case_sem_INSN_LDT_INDIRECT_OFFSET },
197 { I960BASE_INSN_LDT_INDIRECT, && case_sem_INSN_LDT_INDIRECT },
198 { I960BASE_INSN_LDT_INDIRECT_INDEX, && case_sem_INSN_LDT_INDIRECT_INDEX },
199 { I960BASE_INSN_LDT_DISP, && case_sem_INSN_LDT_DISP },
200 { I960BASE_INSN_LDT_INDIRECT_DISP, && case_sem_INSN_LDT_INDIRECT_DISP },
201 { I960BASE_INSN_LDT_INDEX_DISP, && case_sem_INSN_LDT_INDEX_DISP },
202 { I960BASE_INSN_LDT_INDIRECT_INDEX_DISP, && case_sem_INSN_LDT_INDIRECT_INDEX_DISP },
203 { I960BASE_INSN_LDQ_OFFSET, && case_sem_INSN_LDQ_OFFSET },
204 { I960BASE_INSN_LDQ_INDIRECT_OFFSET, && case_sem_INSN_LDQ_INDIRECT_OFFSET },
205 { I960BASE_INSN_LDQ_INDIRECT, && case_sem_INSN_LDQ_INDIRECT },
206 { I960BASE_INSN_LDQ_INDIRECT_INDEX, && case_sem_INSN_LDQ_INDIRECT_INDEX },
207 { I960BASE_INSN_LDQ_DISP, && case_sem_INSN_LDQ_DISP },
208 { I960BASE_INSN_LDQ_INDIRECT_DISP, && case_sem_INSN_LDQ_INDIRECT_DISP },
209 { I960BASE_INSN_LDQ_INDEX_DISP, && case_sem_INSN_LDQ_INDEX_DISP },
210 { I960BASE_INSN_LDQ_INDIRECT_INDEX_DISP, && case_sem_INSN_LDQ_INDIRECT_INDEX_DISP },
211 { I960BASE_INSN_ST_OFFSET, && case_sem_INSN_ST_OFFSET },
212 { I960BASE_INSN_ST_INDIRECT_OFFSET, && case_sem_INSN_ST_INDIRECT_OFFSET },
213 { I960BASE_INSN_ST_INDIRECT, && case_sem_INSN_ST_INDIRECT },
214 { I960BASE_INSN_ST_INDIRECT_INDEX, && case_sem_INSN_ST_INDIRECT_INDEX },
215 { I960BASE_INSN_ST_DISP, && case_sem_INSN_ST_DISP },
216 { I960BASE_INSN_ST_INDIRECT_DISP, && case_sem_INSN_ST_INDIRECT_DISP },
217 { I960BASE_INSN_ST_INDEX_DISP, && case_sem_INSN_ST_INDEX_DISP },
218 { I960BASE_INSN_ST_INDIRECT_INDEX_DISP, && case_sem_INSN_ST_INDIRECT_INDEX_DISP },
219 { I960BASE_INSN_STOB_OFFSET, && case_sem_INSN_STOB_OFFSET },
220 { I960BASE_INSN_STOB_INDIRECT_OFFSET, && case_sem_INSN_STOB_INDIRECT_OFFSET },
221 { I960BASE_INSN_STOB_INDIRECT, && case_sem_INSN_STOB_INDIRECT },
222 { I960BASE_INSN_STOB_INDIRECT_INDEX, && case_sem_INSN_STOB_INDIRECT_INDEX },
223 { I960BASE_INSN_STOB_DISP, && case_sem_INSN_STOB_DISP },
224 { I960BASE_INSN_STOB_INDIRECT_DISP, && case_sem_INSN_STOB_INDIRECT_DISP },
225 { I960BASE_INSN_STOB_INDEX_DISP, && case_sem_INSN_STOB_INDEX_DISP },
226 { I960BASE_INSN_STOB_INDIRECT_INDEX_DISP, && case_sem_INSN_STOB_INDIRECT_INDEX_DISP },
227 { I960BASE_INSN_STOS_OFFSET, && case_sem_INSN_STOS_OFFSET },
228 { I960BASE_INSN_STOS_INDIRECT_OFFSET, && case_sem_INSN_STOS_INDIRECT_OFFSET },
229 { I960BASE_INSN_STOS_INDIRECT, && case_sem_INSN_STOS_INDIRECT },
230 { I960BASE_INSN_STOS_INDIRECT_INDEX, && case_sem_INSN_STOS_INDIRECT_INDEX },
231 { I960BASE_INSN_STOS_DISP, && case_sem_INSN_STOS_DISP },
232 { I960BASE_INSN_STOS_INDIRECT_DISP, && case_sem_INSN_STOS_INDIRECT_DISP },
233 { I960BASE_INSN_STOS_INDEX_DISP, && case_sem_INSN_STOS_INDEX_DISP },
234 { I960BASE_INSN_STOS_INDIRECT_INDEX_DISP, && case_sem_INSN_STOS_INDIRECT_INDEX_DISP },
235 { I960BASE_INSN_STL_OFFSET, && case_sem_INSN_STL_OFFSET },
236 { I960BASE_INSN_STL_INDIRECT_OFFSET, && case_sem_INSN_STL_INDIRECT_OFFSET },
237 { I960BASE_INSN_STL_INDIRECT, && case_sem_INSN_STL_INDIRECT },
238 { I960BASE_INSN_STL_INDIRECT_INDEX, && case_sem_INSN_STL_INDIRECT_INDEX },
239 { I960BASE_INSN_STL_DISP, && case_sem_INSN_STL_DISP },
240 { I960BASE_INSN_STL_INDIRECT_DISP, && case_sem_INSN_STL_INDIRECT_DISP },
241 { I960BASE_INSN_STL_INDEX_DISP, && case_sem_INSN_STL_INDEX_DISP },
242 { I960BASE_INSN_STL_INDIRECT_INDEX_DISP, && case_sem_INSN_STL_INDIRECT_INDEX_DISP },
243 { I960BASE_INSN_STT_OFFSET, && case_sem_INSN_STT_OFFSET },
244 { I960BASE_INSN_STT_INDIRECT_OFFSET, && case_sem_INSN_STT_INDIRECT_OFFSET },
245 { I960BASE_INSN_STT_INDIRECT, && case_sem_INSN_STT_INDIRECT },
246 { I960BASE_INSN_STT_INDIRECT_INDEX, && case_sem_INSN_STT_INDIRECT_INDEX },
247 { I960BASE_INSN_STT_DISP, && case_sem_INSN_STT_DISP },
248 { I960BASE_INSN_STT_INDIRECT_DISP, && case_sem_INSN_STT_INDIRECT_DISP },
249 { I960BASE_INSN_STT_INDEX_DISP, && case_sem_INSN_STT_INDEX_DISP },
250 { I960BASE_INSN_STT_INDIRECT_INDEX_DISP, && case_sem_INSN_STT_INDIRECT_INDEX_DISP },
251 { I960BASE_INSN_STQ_OFFSET, && case_sem_INSN_STQ_OFFSET },
252 { I960BASE_INSN_STQ_INDIRECT_OFFSET, && case_sem_INSN_STQ_INDIRECT_OFFSET },
253 { I960BASE_INSN_STQ_INDIRECT, && case_sem_INSN_STQ_INDIRECT },
254 { I960BASE_INSN_STQ_INDIRECT_INDEX, && case_sem_INSN_STQ_INDIRECT_INDEX },
255 { I960BASE_INSN_STQ_DISP, && case_sem_INSN_STQ_DISP },
256 { I960BASE_INSN_STQ_INDIRECT_DISP, && case_sem_INSN_STQ_INDIRECT_DISP },
257 { I960BASE_INSN_STQ_INDEX_DISP, && case_sem_INSN_STQ_INDEX_DISP },
258 { I960BASE_INSN_STQ_INDIRECT_INDEX_DISP, && case_sem_INSN_STQ_INDIRECT_INDEX_DISP },
259 { I960BASE_INSN_CMPOBE_REG, && case_sem_INSN_CMPOBE_REG },
260 { I960BASE_INSN_CMPOBE_LIT, && case_sem_INSN_CMPOBE_LIT },
261 { I960BASE_INSN_CMPOBNE_REG, && case_sem_INSN_CMPOBNE_REG },
262 { I960BASE_INSN_CMPOBNE_LIT, && case_sem_INSN_CMPOBNE_LIT },
263 { I960BASE_INSN_CMPOBL_REG, && case_sem_INSN_CMPOBL_REG },
264 { I960BASE_INSN_CMPOBL_LIT, && case_sem_INSN_CMPOBL_LIT },
265 { I960BASE_INSN_CMPOBLE_REG, && case_sem_INSN_CMPOBLE_REG },
266 { I960BASE_INSN_CMPOBLE_LIT, && case_sem_INSN_CMPOBLE_LIT },
267 { I960BASE_INSN_CMPOBG_REG, && case_sem_INSN_CMPOBG_REG },
268 { I960BASE_INSN_CMPOBG_LIT, && case_sem_INSN_CMPOBG_LIT },
269 { I960BASE_INSN_CMPOBGE_REG, && case_sem_INSN_CMPOBGE_REG },
270 { I960BASE_INSN_CMPOBGE_LIT, && case_sem_INSN_CMPOBGE_LIT },
271 { I960BASE_INSN_CMPIBE_REG, && case_sem_INSN_CMPIBE_REG },
272 { I960BASE_INSN_CMPIBE_LIT, && case_sem_INSN_CMPIBE_LIT },
273 { I960BASE_INSN_CMPIBNE_REG, && case_sem_INSN_CMPIBNE_REG },
274 { I960BASE_INSN_CMPIBNE_LIT, && case_sem_INSN_CMPIBNE_LIT },
275 { I960BASE_INSN_CMPIBL_REG, && case_sem_INSN_CMPIBL_REG },
276 { I960BASE_INSN_CMPIBL_LIT, && case_sem_INSN_CMPIBL_LIT },
277 { I960BASE_INSN_CMPIBLE_REG, && case_sem_INSN_CMPIBLE_REG },
278 { I960BASE_INSN_CMPIBLE_LIT, && case_sem_INSN_CMPIBLE_LIT },
279 { I960BASE_INSN_CMPIBG_REG, && case_sem_INSN_CMPIBG_REG },
280 { I960BASE_INSN_CMPIBG_LIT, && case_sem_INSN_CMPIBG_LIT },
281 { I960BASE_INSN_CMPIBGE_REG, && case_sem_INSN_CMPIBGE_REG },
282 { I960BASE_INSN_CMPIBGE_LIT, && case_sem_INSN_CMPIBGE_LIT },
283 { I960BASE_INSN_BBC_REG, && case_sem_INSN_BBC_REG },
284 { I960BASE_INSN_BBC_LIT, && case_sem_INSN_BBC_LIT },
285 { I960BASE_INSN_BBS_REG, && case_sem_INSN_BBS_REG },
286 { I960BASE_INSN_BBS_LIT, && case_sem_INSN_BBS_LIT },
287 { I960BASE_INSN_CMPI, && case_sem_INSN_CMPI },
288 { I960BASE_INSN_CMPI1, && case_sem_INSN_CMPI1 },
289 { I960BASE_INSN_CMPI2, && case_sem_INSN_CMPI2 },
290 { I960BASE_INSN_CMPI3, && case_sem_INSN_CMPI3 },
291 { I960BASE_INSN_CMPO, && case_sem_INSN_CMPO },
292 { I960BASE_INSN_CMPO1, && case_sem_INSN_CMPO1 },
293 { I960BASE_INSN_CMPO2, && case_sem_INSN_CMPO2 },
294 { I960BASE_INSN_CMPO3, && case_sem_INSN_CMPO3 },
295 { I960BASE_INSN_TESTNO_REG, && case_sem_INSN_TESTNO_REG },
296 { I960BASE_INSN_TESTG_REG, && case_sem_INSN_TESTG_REG },
297 { I960BASE_INSN_TESTE_REG, && case_sem_INSN_TESTE_REG },
298 { I960BASE_INSN_TESTGE_REG, && case_sem_INSN_TESTGE_REG },
299 { I960BASE_INSN_TESTL_REG, && case_sem_INSN_TESTL_REG },
300 { I960BASE_INSN_TESTNE_REG, && case_sem_INSN_TESTNE_REG },
301 { I960BASE_INSN_TESTLE_REG, && case_sem_INSN_TESTLE_REG },
302 { I960BASE_INSN_TESTO_REG, && case_sem_INSN_TESTO_REG },
303 { I960BASE_INSN_BNO, && case_sem_INSN_BNO },
304 { I960BASE_INSN_BG, && case_sem_INSN_BG },
305 { I960BASE_INSN_BE, && case_sem_INSN_BE },
306 { I960BASE_INSN_BGE, && case_sem_INSN_BGE },
307 { I960BASE_INSN_BL, && case_sem_INSN_BL },
308 { I960BASE_INSN_BNE, && case_sem_INSN_BNE },
309 { I960BASE_INSN_BLE, && case_sem_INSN_BLE },
310 { I960BASE_INSN_BO, && case_sem_INSN_BO },
311 { I960BASE_INSN_B, && case_sem_INSN_B },
312 { I960BASE_INSN_BX_INDIRECT_OFFSET, && case_sem_INSN_BX_INDIRECT_OFFSET },
313 { I960BASE_INSN_BX_INDIRECT, && case_sem_INSN_BX_INDIRECT },
314 { I960BASE_INSN_BX_INDIRECT_INDEX, && case_sem_INSN_BX_INDIRECT_INDEX },
315 { I960BASE_INSN_BX_DISP, && case_sem_INSN_BX_DISP },
316 { I960BASE_INSN_BX_INDIRECT_DISP, && case_sem_INSN_BX_INDIRECT_DISP },
317 { I960BASE_INSN_CALLX_DISP, && case_sem_INSN_CALLX_DISP },
318 { I960BASE_INSN_CALLX_INDIRECT, && case_sem_INSN_CALLX_INDIRECT },
319 { I960BASE_INSN_CALLX_INDIRECT_OFFSET, && case_sem_INSN_CALLX_INDIRECT_OFFSET },
320 { I960BASE_INSN_RET, && case_sem_INSN_RET },
321 { I960BASE_INSN_CALLS, && case_sem_INSN_CALLS },
322 { I960BASE_INSN_FMARK, && case_sem_INSN_FMARK },
323 { I960BASE_INSN_FLUSHREG, && case_sem_INSN_FLUSHREG },
324 { 0, 0 }
325 };
326 int i;
327
328 for (i = 0; labels[i].label != 0; ++i)
329 #if FAST_P
330 CPU_IDESC (current_cpu) [labels[i].index].sem_fast_lab = labels[i].label;
331 #else
332 CPU_IDESC (current_cpu) [labels[i].index].sem_full_lab = labels[i].label;
333 #endif
334
335 #undef DEFINE_LABELS
336 #endif /* DEFINE_LABELS */
337
338 #ifdef DEFINE_SWITCH
339
340 /* If hyper-fast [well not unnecessarily slow] execution is selected, turn
341 off frills like tracing and profiling. */
342 /* FIXME: A better way would be to have TRACE_RESULT check for something
343 that can cause it to be optimized out. Another way would be to emit
344 special handlers into the instruction "stream". */
345
346 #if FAST_P
347 #undef TRACE_RESULT
348 #define TRACE_RESULT(cpu, abuf, name, type, val)
349 #endif
350
351 #undef GET_ATTR
352 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
353
354 {
355
356 #if WITH_SCACHE_PBB
357
358 /* Branch to next handler without going around main loop. */
359 #define NEXT(vpc) goto * SEM_ARGBUF (vpc) -> semantic.sem_case
360 SWITCH (sem, SEM_ARGBUF (vpc) -> semantic.sem_case)
361
362 #else /* ! WITH_SCACHE_PBB */
363
364 #define NEXT(vpc) BREAK (sem)
365 #ifdef __GNUC__
366 #if FAST_P
367 SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_fast_lab)
368 #else
369 SWITCH (sem, SEM_ARGBUF (sc) -> idesc->sem_full_lab)
370 #endif
371 #else
372 SWITCH (sem, SEM_ARGBUF (sc) -> idesc->num)
373 #endif
374
375 #endif /* ! WITH_SCACHE_PBB */
376
377 {
378
379 CASE (sem, INSN_X_INVALID) : /* --invalid-- */
380 {
381 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
382 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
383 #define FLD(f) abuf->fields.fmt_empty.f
384 int UNUSED written = 0;
385 IADDR UNUSED pc = abuf->addr;
386 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
387
388 {
389 #if WITH_SCACHE
390 /* Update the recorded pc in the cpu state struct. */
391 SET_H_PC (pc);
392 #endif
393 sim_engine_invalid_insn (current_cpu, pc);
394 sim_io_error (CPU_STATE (current_cpu), "invalid insn not handled\n");
395 /* NOTREACHED */
396 }
397
398 #undef FLD
399 }
400 NEXT (vpc);
401
402 CASE (sem, INSN_X_AFTER) : /* --after-- */
403 {
404 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
405 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
406 #define FLD(f) abuf->fields.fmt_empty.f
407 int UNUSED written = 0;
408 IADDR UNUSED pc = abuf->addr;
409 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
410
411 {
412 #if WITH_SCACHE_PBB_I960BASE
413 i960base_pbb_after (current_cpu, sem_arg);
414 #endif
415 }
416
417 #undef FLD
418 }
419 NEXT (vpc);
420
421 CASE (sem, INSN_X_BEFORE) : /* --before-- */
422 {
423 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
424 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
425 #define FLD(f) abuf->fields.fmt_empty.f
426 int UNUSED written = 0;
427 IADDR UNUSED pc = abuf->addr;
428 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
429
430 {
431 #if WITH_SCACHE_PBB_I960BASE
432 i960base_pbb_before (current_cpu, sem_arg);
433 #endif
434 }
435
436 #undef FLD
437 }
438 NEXT (vpc);
439
440 CASE (sem, INSN_X_CTI_CHAIN) : /* --cti-chain-- */
441 {
442 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
443 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
444 #define FLD(f) abuf->fields.fmt_empty.f
445 int UNUSED written = 0;
446 IADDR UNUSED pc = abuf->addr;
447 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
448
449 {
450 #if WITH_SCACHE_PBB_I960BASE
451 #ifdef DEFINE_SWITCH
452 vpc = i960base_pbb_cti_chain (current_cpu, sem_arg,
453 pbb_br_npc_ptr, pbb_br_npc);
454 BREAK (sem);
455 #else
456 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
457 vpc = i960base_pbb_cti_chain (current_cpu, sem_arg,
458 CPU_PBB_BR_NPC_PTR (current_cpu),
459 CPU_PBB_BR_NPC (current_cpu));
460 #endif
461 #endif
462 }
463
464 #undef FLD
465 }
466 NEXT (vpc);
467
468 CASE (sem, INSN_X_CHAIN) : /* --chain-- */
469 {
470 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
471 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
472 #define FLD(f) abuf->fields.fmt_empty.f
473 int UNUSED written = 0;
474 IADDR UNUSED pc = abuf->addr;
475 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
476
477 {
478 #if WITH_SCACHE_PBB_I960BASE
479 vpc = i960base_pbb_chain (current_cpu, sem_arg);
480 #ifdef DEFINE_SWITCH
481 BREAK (sem);
482 #endif
483 #endif
484 }
485
486 #undef FLD
487 }
488 NEXT (vpc);
489
490 CASE (sem, INSN_X_BEGIN) : /* --begin-- */
491 {
492 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
493 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
494 #define FLD(f) abuf->fields.fmt_empty.f
495 int UNUSED written = 0;
496 IADDR UNUSED pc = abuf->addr;
497 vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
498
499 {
500 #if WITH_SCACHE_PBB_I960BASE
501 #ifdef DEFINE_SWITCH
502 /* In the switch case FAST_P is a constant, allowing several optimizations
503 in any called inline functions. */
504 vpc = i960base_pbb_begin (current_cpu, FAST_P);
505 #else
506 vpc = i960base_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
507 #endif
508 #endif
509 }
510
511 #undef FLD
512 }
513 NEXT (vpc);
514
515 CASE (sem, INSN_MULO) : /* mulo $src1, $src2, $dst */
516 {
517 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
518 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
519 #define FLD(f) abuf->fields.fmt_mulo.f
520 int UNUSED written = 0;
521 IADDR UNUSED pc = abuf->addr;
522 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
523
524 {
525 SI opval = MULSI (* FLD (i_src1), * FLD (i_src2));
526 * FLD (i_dst) = opval;
527 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
528 }
529
530 #undef FLD
531 }
532 NEXT (vpc);
533
534 CASE (sem, INSN_MULO1) : /* mulo $lit1, $src2, $dst */
535 {
536 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
538 #define FLD(f) abuf->fields.fmt_mulo1.f
539 int UNUSED written = 0;
540 IADDR UNUSED pc = abuf->addr;
541 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
542
543 {
544 SI opval = MULSI (FLD (f_src1), * FLD (i_src2));
545 * FLD (i_dst) = opval;
546 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
547 }
548
549 #undef FLD
550 }
551 NEXT (vpc);
552
553 CASE (sem, INSN_MULO2) : /* mulo $src1, $lit2, $dst */
554 {
555 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
556 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
557 #define FLD(f) abuf->fields.fmt_mulo2.f
558 int UNUSED written = 0;
559 IADDR UNUSED pc = abuf->addr;
560 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
561
562 {
563 SI opval = MULSI (* FLD (i_src1), FLD (f_src2));
564 * FLD (i_dst) = opval;
565 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
566 }
567
568 #undef FLD
569 }
570 NEXT (vpc);
571
572 CASE (sem, INSN_MULO3) : /* mulo $lit1, $lit2, $dst */
573 {
574 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
575 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
576 #define FLD(f) abuf->fields.fmt_mulo3.f
577 int UNUSED written = 0;
578 IADDR UNUSED pc = abuf->addr;
579 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
580
581 {
582 SI opval = MULSI (FLD (f_src1), FLD (f_src2));
583 * FLD (i_dst) = opval;
584 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
585 }
586
587 #undef FLD
588 }
589 NEXT (vpc);
590
591 CASE (sem, INSN_REMO) : /* remo $src1, $src2, $dst */
592 {
593 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
594 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
595 #define FLD(f) abuf->fields.fmt_mulo.f
596 int UNUSED written = 0;
597 IADDR UNUSED pc = abuf->addr;
598 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
599
600 {
601 SI opval = UMODSI (* FLD (i_src2), * FLD (i_src1));
602 * FLD (i_dst) = opval;
603 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
604 }
605
606 #undef FLD
607 }
608 NEXT (vpc);
609
610 CASE (sem, INSN_REMO1) : /* remo $lit1, $src2, $dst */
611 {
612 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
613 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
614 #define FLD(f) abuf->fields.fmt_mulo1.f
615 int UNUSED written = 0;
616 IADDR UNUSED pc = abuf->addr;
617 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
618
619 {
620 SI opval = UMODSI (* FLD (i_src2), FLD (f_src1));
621 * FLD (i_dst) = opval;
622 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
623 }
624
625 #undef FLD
626 }
627 NEXT (vpc);
628
629 CASE (sem, INSN_REMO2) : /* remo $src1, $lit2, $dst */
630 {
631 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
632 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
633 #define FLD(f) abuf->fields.fmt_mulo2.f
634 int UNUSED written = 0;
635 IADDR UNUSED pc = abuf->addr;
636 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
637
638 {
639 SI opval = UMODSI (FLD (f_src2), * FLD (i_src1));
640 * FLD (i_dst) = opval;
641 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
642 }
643
644 #undef FLD
645 }
646 NEXT (vpc);
647
648 CASE (sem, INSN_REMO3) : /* remo $lit1, $lit2, $dst */
649 {
650 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
651 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
652 #define FLD(f) abuf->fields.fmt_mulo3.f
653 int UNUSED written = 0;
654 IADDR UNUSED pc = abuf->addr;
655 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
656
657 {
658 SI opval = UMODSI (FLD (f_src2), FLD (f_src1));
659 * FLD (i_dst) = opval;
660 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
661 }
662
663 #undef FLD
664 }
665 NEXT (vpc);
666
667 CASE (sem, INSN_DIVO) : /* divo $src1, $src2, $dst */
668 {
669 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
670 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
671 #define FLD(f) abuf->fields.fmt_mulo.f
672 int UNUSED written = 0;
673 IADDR UNUSED pc = abuf->addr;
674 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
675
676 {
677 SI opval = UDIVSI (* FLD (i_src2), * FLD (i_src1));
678 * FLD (i_dst) = opval;
679 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
680 }
681
682 #undef FLD
683 }
684 NEXT (vpc);
685
686 CASE (sem, INSN_DIVO1) : /* divo $lit1, $src2, $dst */
687 {
688 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
689 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
690 #define FLD(f) abuf->fields.fmt_mulo1.f
691 int UNUSED written = 0;
692 IADDR UNUSED pc = abuf->addr;
693 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
694
695 {
696 SI opval = UDIVSI (* FLD (i_src2), FLD (f_src1));
697 * FLD (i_dst) = opval;
698 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
699 }
700
701 #undef FLD
702 }
703 NEXT (vpc);
704
705 CASE (sem, INSN_DIVO2) : /* divo $src1, $lit2, $dst */
706 {
707 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
708 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
709 #define FLD(f) abuf->fields.fmt_mulo2.f
710 int UNUSED written = 0;
711 IADDR UNUSED pc = abuf->addr;
712 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
713
714 {
715 SI opval = UDIVSI (FLD (f_src2), * FLD (i_src1));
716 * FLD (i_dst) = opval;
717 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
718 }
719
720 #undef FLD
721 }
722 NEXT (vpc);
723
724 CASE (sem, INSN_DIVO3) : /* divo $lit1, $lit2, $dst */
725 {
726 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
728 #define FLD(f) abuf->fields.fmt_mulo3.f
729 int UNUSED written = 0;
730 IADDR UNUSED pc = abuf->addr;
731 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
732
733 {
734 SI opval = UDIVSI (FLD (f_src2), FLD (f_src1));
735 * FLD (i_dst) = opval;
736 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
737 }
738
739 #undef FLD
740 }
741 NEXT (vpc);
742
743 CASE (sem, INSN_REMI) : /* remi $src1, $src2, $dst */
744 {
745 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
746 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
747 #define FLD(f) abuf->fields.fmt_mulo.f
748 int UNUSED written = 0;
749 IADDR UNUSED pc = abuf->addr;
750 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
751
752 {
753 SI opval = MODSI (* FLD (i_src2), * FLD (i_src1));
754 * FLD (i_dst) = opval;
755 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
756 }
757
758 #undef FLD
759 }
760 NEXT (vpc);
761
762 CASE (sem, INSN_REMI1) : /* remi $lit1, $src2, $dst */
763 {
764 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
765 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
766 #define FLD(f) abuf->fields.fmt_mulo1.f
767 int UNUSED written = 0;
768 IADDR UNUSED pc = abuf->addr;
769 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
770
771 {
772 SI opval = MODSI (* FLD (i_src2), FLD (f_src1));
773 * FLD (i_dst) = opval;
774 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
775 }
776
777 #undef FLD
778 }
779 NEXT (vpc);
780
781 CASE (sem, INSN_REMI2) : /* remi $src1, $lit2, $dst */
782 {
783 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
784 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
785 #define FLD(f) abuf->fields.fmt_mulo2.f
786 int UNUSED written = 0;
787 IADDR UNUSED pc = abuf->addr;
788 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
789
790 {
791 SI opval = MODSI (FLD (f_src2), * FLD (i_src1));
792 * FLD (i_dst) = opval;
793 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
794 }
795
796 #undef FLD
797 }
798 NEXT (vpc);
799
800 CASE (sem, INSN_REMI3) : /* remi $lit1, $lit2, $dst */
801 {
802 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
803 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
804 #define FLD(f) abuf->fields.fmt_mulo3.f
805 int UNUSED written = 0;
806 IADDR UNUSED pc = abuf->addr;
807 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
808
809 {
810 SI opval = MODSI (FLD (f_src2), FLD (f_src1));
811 * FLD (i_dst) = opval;
812 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
813 }
814
815 #undef FLD
816 }
817 NEXT (vpc);
818
819 CASE (sem, INSN_DIVI) : /* divi $src1, $src2, $dst */
820 {
821 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
822 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
823 #define FLD(f) abuf->fields.fmt_mulo.f
824 int UNUSED written = 0;
825 IADDR UNUSED pc = abuf->addr;
826 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
827
828 {
829 SI opval = DIVSI (* FLD (i_src2), * FLD (i_src1));
830 * FLD (i_dst) = opval;
831 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
832 }
833
834 #undef FLD
835 }
836 NEXT (vpc);
837
838 CASE (sem, INSN_DIVI1) : /* divi $lit1, $src2, $dst */
839 {
840 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
841 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
842 #define FLD(f) abuf->fields.fmt_mulo1.f
843 int UNUSED written = 0;
844 IADDR UNUSED pc = abuf->addr;
845 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
846
847 {
848 SI opval = DIVSI (* FLD (i_src2), FLD (f_src1));
849 * FLD (i_dst) = opval;
850 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
851 }
852
853 #undef FLD
854 }
855 NEXT (vpc);
856
857 CASE (sem, INSN_DIVI2) : /* divi $src1, $lit2, $dst */
858 {
859 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
860 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
861 #define FLD(f) abuf->fields.fmt_mulo2.f
862 int UNUSED written = 0;
863 IADDR UNUSED pc = abuf->addr;
864 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
865
866 {
867 SI opval = DIVSI (FLD (f_src2), * FLD (i_src1));
868 * FLD (i_dst) = opval;
869 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
870 }
871
872 #undef FLD
873 }
874 NEXT (vpc);
875
876 CASE (sem, INSN_DIVI3) : /* divi $lit1, $lit2, $dst */
877 {
878 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
879 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
880 #define FLD(f) abuf->fields.fmt_mulo3.f
881 int UNUSED written = 0;
882 IADDR UNUSED pc = abuf->addr;
883 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
884
885 {
886 SI opval = DIVSI (FLD (f_src2), FLD (f_src1));
887 * FLD (i_dst) = opval;
888 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
889 }
890
891 #undef FLD
892 }
893 NEXT (vpc);
894
895 CASE (sem, INSN_ADDO) : /* addo $src1, $src2, $dst */
896 {
897 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
898 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
899 #define FLD(f) abuf->fields.fmt_mulo.f
900 int UNUSED written = 0;
901 IADDR UNUSED pc = abuf->addr;
902 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
903
904 {
905 SI opval = ADDSI (* FLD (i_src1), * FLD (i_src2));
906 * FLD (i_dst) = opval;
907 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
908 }
909
910 #undef FLD
911 }
912 NEXT (vpc);
913
914 CASE (sem, INSN_ADDO1) : /* addo $lit1, $src2, $dst */
915 {
916 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
917 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
918 #define FLD(f) abuf->fields.fmt_mulo1.f
919 int UNUSED written = 0;
920 IADDR UNUSED pc = abuf->addr;
921 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
922
923 {
924 SI opval = ADDSI (FLD (f_src1), * FLD (i_src2));
925 * FLD (i_dst) = opval;
926 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
927 }
928
929 #undef FLD
930 }
931 NEXT (vpc);
932
933 CASE (sem, INSN_ADDO2) : /* addo $src1, $lit2, $dst */
934 {
935 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
936 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
937 #define FLD(f) abuf->fields.fmt_mulo2.f
938 int UNUSED written = 0;
939 IADDR UNUSED pc = abuf->addr;
940 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
941
942 {
943 SI opval = ADDSI (* FLD (i_src1), FLD (f_src2));
944 * FLD (i_dst) = opval;
945 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
946 }
947
948 #undef FLD
949 }
950 NEXT (vpc);
951
952 CASE (sem, INSN_ADDO3) : /* addo $lit1, $lit2, $dst */
953 {
954 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
955 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
956 #define FLD(f) abuf->fields.fmt_mulo3.f
957 int UNUSED written = 0;
958 IADDR UNUSED pc = abuf->addr;
959 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
960
961 {
962 SI opval = ADDSI (FLD (f_src1), FLD (f_src2));
963 * FLD (i_dst) = opval;
964 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
965 }
966
967 #undef FLD
968 }
969 NEXT (vpc);
970
971 CASE (sem, INSN_SUBO) : /* subo $src1, $src2, $dst */
972 {
973 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
974 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
975 #define FLD(f) abuf->fields.fmt_mulo.f
976 int UNUSED written = 0;
977 IADDR UNUSED pc = abuf->addr;
978 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
979
980 {
981 SI opval = SUBSI (* FLD (i_src2), * FLD (i_src1));
982 * FLD (i_dst) = opval;
983 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
984 }
985
986 #undef FLD
987 }
988 NEXT (vpc);
989
990 CASE (sem, INSN_SUBO1) : /* subo $lit1, $src2, $dst */
991 {
992 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
993 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
994 #define FLD(f) abuf->fields.fmt_mulo1.f
995 int UNUSED written = 0;
996 IADDR UNUSED pc = abuf->addr;
997 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
998
999 {
1000 SI opval = SUBSI (* FLD (i_src2), FLD (f_src1));
1001 * FLD (i_dst) = opval;
1002 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1003 }
1004
1005 #undef FLD
1006 }
1007 NEXT (vpc);
1008
1009 CASE (sem, INSN_SUBO2) : /* subo $src1, $lit2, $dst */
1010 {
1011 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1012 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1013 #define FLD(f) abuf->fields.fmt_mulo2.f
1014 int UNUSED written = 0;
1015 IADDR UNUSED pc = abuf->addr;
1016 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1017
1018 {
1019 SI opval = SUBSI (FLD (f_src2), * FLD (i_src1));
1020 * FLD (i_dst) = opval;
1021 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1022 }
1023
1024 #undef FLD
1025 }
1026 NEXT (vpc);
1027
1028 CASE (sem, INSN_SUBO3) : /* subo $lit1, $lit2, $dst */
1029 {
1030 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1031 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1032 #define FLD(f) abuf->fields.fmt_mulo3.f
1033 int UNUSED written = 0;
1034 IADDR UNUSED pc = abuf->addr;
1035 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1036
1037 {
1038 SI opval = SUBSI (FLD (f_src2), FLD (f_src1));
1039 * FLD (i_dst) = opval;
1040 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1041 }
1042
1043 #undef FLD
1044 }
1045 NEXT (vpc);
1046
1047 CASE (sem, INSN_NOTBIT) : /* notbit $src1, $src2, $dst */
1048 {
1049 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1050 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1051 #define FLD(f) abuf->fields.fmt_notbit.f
1052 int UNUSED written = 0;
1053 IADDR UNUSED pc = abuf->addr;
1054 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1055
1056 {
1057 SI opval = XORSI (SLLSI (1, * FLD (i_src1)), * FLD (i_src2));
1058 * FLD (i_dst) = opval;
1059 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1060 }
1061
1062 #undef FLD
1063 }
1064 NEXT (vpc);
1065
1066 CASE (sem, INSN_NOTBIT1) : /* notbit $lit1, $src2, $dst */
1067 {
1068 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1069 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1070 #define FLD(f) abuf->fields.fmt_notbit1.f
1071 int UNUSED written = 0;
1072 IADDR UNUSED pc = abuf->addr;
1073 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1074
1075 {
1076 SI opval = XORSI (SLLSI (1, FLD (f_src1)), * FLD (i_src2));
1077 * FLD (i_dst) = opval;
1078 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1079 }
1080
1081 #undef FLD
1082 }
1083 NEXT (vpc);
1084
1085 CASE (sem, INSN_NOTBIT2) : /* notbit $src1, $lit2, $dst */
1086 {
1087 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1088 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1089 #define FLD(f) abuf->fields.fmt_notbit2.f
1090 int UNUSED written = 0;
1091 IADDR UNUSED pc = abuf->addr;
1092 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1093
1094 {
1095 SI opval = XORSI (SLLSI (1, * FLD (i_src1)), FLD (f_src2));
1096 * FLD (i_dst) = opval;
1097 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1098 }
1099
1100 #undef FLD
1101 }
1102 NEXT (vpc);
1103
1104 CASE (sem, INSN_NOTBIT3) : /* notbit $lit1, $lit2, $dst */
1105 {
1106 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1107 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1108 #define FLD(f) abuf->fields.fmt_notbit3.f
1109 int UNUSED written = 0;
1110 IADDR UNUSED pc = abuf->addr;
1111 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1112
1113 {
1114 SI opval = XORSI (SLLSI (1, FLD (f_src1)), FLD (f_src2));
1115 * FLD (i_dst) = opval;
1116 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1117 }
1118
1119 #undef FLD
1120 }
1121 NEXT (vpc);
1122
1123 CASE (sem, INSN_AND) : /* and $src1, $src2, $dst */
1124 {
1125 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1126 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1127 #define FLD(f) abuf->fields.fmt_mulo.f
1128 int UNUSED written = 0;
1129 IADDR UNUSED pc = abuf->addr;
1130 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1131
1132 {
1133 SI opval = ANDSI (* FLD (i_src1), * FLD (i_src2));
1134 * FLD (i_dst) = opval;
1135 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1136 }
1137
1138 #undef FLD
1139 }
1140 NEXT (vpc);
1141
1142 CASE (sem, INSN_AND1) : /* and $lit1, $src2, $dst */
1143 {
1144 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1145 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1146 #define FLD(f) abuf->fields.fmt_mulo1.f
1147 int UNUSED written = 0;
1148 IADDR UNUSED pc = abuf->addr;
1149 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1150
1151 {
1152 SI opval = ANDSI (FLD (f_src1), * FLD (i_src2));
1153 * FLD (i_dst) = opval;
1154 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1155 }
1156
1157 #undef FLD
1158 }
1159 NEXT (vpc);
1160
1161 CASE (sem, INSN_AND2) : /* and $src1, $lit2, $dst */
1162 {
1163 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1164 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1165 #define FLD(f) abuf->fields.fmt_mulo2.f
1166 int UNUSED written = 0;
1167 IADDR UNUSED pc = abuf->addr;
1168 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1169
1170 {
1171 SI opval = ANDSI (* FLD (i_src1), FLD (f_src2));
1172 * FLD (i_dst) = opval;
1173 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1174 }
1175
1176 #undef FLD
1177 }
1178 NEXT (vpc);
1179
1180 CASE (sem, INSN_AND3) : /* and $lit1, $lit2, $dst */
1181 {
1182 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1183 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1184 #define FLD(f) abuf->fields.fmt_mulo3.f
1185 int UNUSED written = 0;
1186 IADDR UNUSED pc = abuf->addr;
1187 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1188
1189 {
1190 SI opval = ANDSI (FLD (f_src1), FLD (f_src2));
1191 * FLD (i_dst) = opval;
1192 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1193 }
1194
1195 #undef FLD
1196 }
1197 NEXT (vpc);
1198
1199 CASE (sem, INSN_ANDNOT) : /* andnot $src1, $src2, $dst */
1200 {
1201 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1202 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1203 #define FLD(f) abuf->fields.fmt_mulo.f
1204 int UNUSED written = 0;
1205 IADDR UNUSED pc = abuf->addr;
1206 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1207
1208 {
1209 SI opval = ANDSI (* FLD (i_src2), INVSI (* FLD (i_src1)));
1210 * FLD (i_dst) = opval;
1211 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1212 }
1213
1214 #undef FLD
1215 }
1216 NEXT (vpc);
1217
1218 CASE (sem, INSN_ANDNOT1) : /* andnot $lit1, $src2, $dst */
1219 {
1220 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1221 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1222 #define FLD(f) abuf->fields.fmt_mulo1.f
1223 int UNUSED written = 0;
1224 IADDR UNUSED pc = abuf->addr;
1225 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1226
1227 {
1228 SI opval = ANDSI (* FLD (i_src2), INVSI (FLD (f_src1)));
1229 * FLD (i_dst) = opval;
1230 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1231 }
1232
1233 #undef FLD
1234 }
1235 NEXT (vpc);
1236
1237 CASE (sem, INSN_ANDNOT2) : /* andnot $src1, $lit2, $dst */
1238 {
1239 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1240 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1241 #define FLD(f) abuf->fields.fmt_mulo2.f
1242 int UNUSED written = 0;
1243 IADDR UNUSED pc = abuf->addr;
1244 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1245
1246 {
1247 SI opval = ANDSI (FLD (f_src2), INVSI (* FLD (i_src1)));
1248 * FLD (i_dst) = opval;
1249 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1250 }
1251
1252 #undef FLD
1253 }
1254 NEXT (vpc);
1255
1256 CASE (sem, INSN_ANDNOT3) : /* andnot $lit1, $lit2, $dst */
1257 {
1258 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1259 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1260 #define FLD(f) abuf->fields.fmt_mulo3.f
1261 int UNUSED written = 0;
1262 IADDR UNUSED pc = abuf->addr;
1263 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1264
1265 {
1266 SI opval = ANDSI (FLD (f_src2), INVSI (FLD (f_src1)));
1267 * FLD (i_dst) = opval;
1268 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1269 }
1270
1271 #undef FLD
1272 }
1273 NEXT (vpc);
1274
1275 CASE (sem, INSN_SETBIT) : /* setbit $src1, $src2, $dst */
1276 {
1277 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1278 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1279 #define FLD(f) abuf->fields.fmt_notbit.f
1280 int UNUSED written = 0;
1281 IADDR UNUSED pc = abuf->addr;
1282 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1283
1284 {
1285 SI opval = ORSI (SLLSI (1, * FLD (i_src1)), * FLD (i_src2));
1286 * FLD (i_dst) = opval;
1287 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1288 }
1289
1290 #undef FLD
1291 }
1292 NEXT (vpc);
1293
1294 CASE (sem, INSN_SETBIT1) : /* setbit $lit1, $src2, $dst */
1295 {
1296 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1298 #define FLD(f) abuf->fields.fmt_notbit1.f
1299 int UNUSED written = 0;
1300 IADDR UNUSED pc = abuf->addr;
1301 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1302
1303 {
1304 SI opval = ORSI (SLLSI (1, FLD (f_src1)), * FLD (i_src2));
1305 * FLD (i_dst) = opval;
1306 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1307 }
1308
1309 #undef FLD
1310 }
1311 NEXT (vpc);
1312
1313 CASE (sem, INSN_SETBIT2) : /* setbit $src1, $lit2, $dst */
1314 {
1315 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1316 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1317 #define FLD(f) abuf->fields.fmt_notbit2.f
1318 int UNUSED written = 0;
1319 IADDR UNUSED pc = abuf->addr;
1320 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1321
1322 {
1323 SI opval = ORSI (SLLSI (1, * FLD (i_src1)), FLD (f_src2));
1324 * FLD (i_dst) = opval;
1325 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1326 }
1327
1328 #undef FLD
1329 }
1330 NEXT (vpc);
1331
1332 CASE (sem, INSN_SETBIT3) : /* setbit $lit1, $lit2, $dst */
1333 {
1334 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1336 #define FLD(f) abuf->fields.fmt_notbit3.f
1337 int UNUSED written = 0;
1338 IADDR UNUSED pc = abuf->addr;
1339 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1340
1341 {
1342 SI opval = ORSI (SLLSI (1, FLD (f_src1)), FLD (f_src2));
1343 * FLD (i_dst) = opval;
1344 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1345 }
1346
1347 #undef FLD
1348 }
1349 NEXT (vpc);
1350
1351 CASE (sem, INSN_NOTAND) : /* notand $src1, $src2, $dst */
1352 {
1353 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1354 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1355 #define FLD(f) abuf->fields.fmt_mulo.f
1356 int UNUSED written = 0;
1357 IADDR UNUSED pc = abuf->addr;
1358 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1359
1360 {
1361 SI opval = ANDSI (INVSI (* FLD (i_src2)), * FLD (i_src1));
1362 * FLD (i_dst) = opval;
1363 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1364 }
1365
1366 #undef FLD
1367 }
1368 NEXT (vpc);
1369
1370 CASE (sem, INSN_NOTAND1) : /* notand $lit1, $src2, $dst */
1371 {
1372 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1373 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1374 #define FLD(f) abuf->fields.fmt_mulo1.f
1375 int UNUSED written = 0;
1376 IADDR UNUSED pc = abuf->addr;
1377 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1378
1379 {
1380 SI opval = ANDSI (INVSI (* FLD (i_src2)), FLD (f_src1));
1381 * FLD (i_dst) = opval;
1382 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1383 }
1384
1385 #undef FLD
1386 }
1387 NEXT (vpc);
1388
1389 CASE (sem, INSN_NOTAND2) : /* notand $src1, $lit2, $dst */
1390 {
1391 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1393 #define FLD(f) abuf->fields.fmt_mulo2.f
1394 int UNUSED written = 0;
1395 IADDR UNUSED pc = abuf->addr;
1396 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1397
1398 {
1399 SI opval = ANDSI (INVSI (FLD (f_src2)), * FLD (i_src1));
1400 * FLD (i_dst) = opval;
1401 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1402 }
1403
1404 #undef FLD
1405 }
1406 NEXT (vpc);
1407
1408 CASE (sem, INSN_NOTAND3) : /* notand $lit1, $lit2, $dst */
1409 {
1410 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1411 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1412 #define FLD(f) abuf->fields.fmt_mulo3.f
1413 int UNUSED written = 0;
1414 IADDR UNUSED pc = abuf->addr;
1415 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1416
1417 {
1418 SI opval = ANDSI (INVSI (FLD (f_src2)), FLD (f_src1));
1419 * FLD (i_dst) = opval;
1420 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1421 }
1422
1423 #undef FLD
1424 }
1425 NEXT (vpc);
1426
1427 CASE (sem, INSN_XOR) : /* xor $src1, $src2, $dst */
1428 {
1429 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1430 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1431 #define FLD(f) abuf->fields.fmt_mulo.f
1432 int UNUSED written = 0;
1433 IADDR UNUSED pc = abuf->addr;
1434 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1435
1436 {
1437 SI opval = XORSI (* FLD (i_src1), * FLD (i_src2));
1438 * FLD (i_dst) = opval;
1439 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1440 }
1441
1442 #undef FLD
1443 }
1444 NEXT (vpc);
1445
1446 CASE (sem, INSN_XOR1) : /* xor $lit1, $src2, $dst */
1447 {
1448 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1449 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1450 #define FLD(f) abuf->fields.fmt_mulo1.f
1451 int UNUSED written = 0;
1452 IADDR UNUSED pc = abuf->addr;
1453 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1454
1455 {
1456 SI opval = XORSI (FLD (f_src1), * FLD (i_src2));
1457 * FLD (i_dst) = opval;
1458 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1459 }
1460
1461 #undef FLD
1462 }
1463 NEXT (vpc);
1464
1465 CASE (sem, INSN_XOR2) : /* xor $src1, $lit2, $dst */
1466 {
1467 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1468 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1469 #define FLD(f) abuf->fields.fmt_mulo2.f
1470 int UNUSED written = 0;
1471 IADDR UNUSED pc = abuf->addr;
1472 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1473
1474 {
1475 SI opval = XORSI (* FLD (i_src1), FLD (f_src2));
1476 * FLD (i_dst) = opval;
1477 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1478 }
1479
1480 #undef FLD
1481 }
1482 NEXT (vpc);
1483
1484 CASE (sem, INSN_XOR3) : /* xor $lit1, $lit2, $dst */
1485 {
1486 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1487 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1488 #define FLD(f) abuf->fields.fmt_mulo3.f
1489 int UNUSED written = 0;
1490 IADDR UNUSED pc = abuf->addr;
1491 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1492
1493 {
1494 SI opval = XORSI (FLD (f_src1), FLD (f_src2));
1495 * FLD (i_dst) = opval;
1496 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1497 }
1498
1499 #undef FLD
1500 }
1501 NEXT (vpc);
1502
1503 CASE (sem, INSN_OR) : /* or $src1, $src2, $dst */
1504 {
1505 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1506 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1507 #define FLD(f) abuf->fields.fmt_mulo.f
1508 int UNUSED written = 0;
1509 IADDR UNUSED pc = abuf->addr;
1510 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1511
1512 {
1513 SI opval = ORSI (* FLD (i_src1), * FLD (i_src2));
1514 * FLD (i_dst) = opval;
1515 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1516 }
1517
1518 #undef FLD
1519 }
1520 NEXT (vpc);
1521
1522 CASE (sem, INSN_OR1) : /* or $lit1, $src2, $dst */
1523 {
1524 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1525 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1526 #define FLD(f) abuf->fields.fmt_mulo1.f
1527 int UNUSED written = 0;
1528 IADDR UNUSED pc = abuf->addr;
1529 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1530
1531 {
1532 SI opval = ORSI (FLD (f_src1), * FLD (i_src2));
1533 * FLD (i_dst) = opval;
1534 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1535 }
1536
1537 #undef FLD
1538 }
1539 NEXT (vpc);
1540
1541 CASE (sem, INSN_OR2) : /* or $src1, $lit2, $dst */
1542 {
1543 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1544 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1545 #define FLD(f) abuf->fields.fmt_mulo2.f
1546 int UNUSED written = 0;
1547 IADDR UNUSED pc = abuf->addr;
1548 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1549
1550 {
1551 SI opval = ORSI (* FLD (i_src1), FLD (f_src2));
1552 * FLD (i_dst) = opval;
1553 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1554 }
1555
1556 #undef FLD
1557 }
1558 NEXT (vpc);
1559
1560 CASE (sem, INSN_OR3) : /* or $lit1, $lit2, $dst */
1561 {
1562 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1563 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1564 #define FLD(f) abuf->fields.fmt_mulo3.f
1565 int UNUSED written = 0;
1566 IADDR UNUSED pc = abuf->addr;
1567 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1568
1569 {
1570 SI opval = ORSI (FLD (f_src1), FLD (f_src2));
1571 * FLD (i_dst) = opval;
1572 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1573 }
1574
1575 #undef FLD
1576 }
1577 NEXT (vpc);
1578
1579 CASE (sem, INSN_NOR) : /* nor $src1, $src2, $dst */
1580 {
1581 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1582 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1583 #define FLD(f) abuf->fields.fmt_mulo.f
1584 int UNUSED written = 0;
1585 IADDR UNUSED pc = abuf->addr;
1586 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1587
1588 {
1589 SI opval = ANDSI (INVSI (* FLD (i_src2)), INVSI (* FLD (i_src1)));
1590 * FLD (i_dst) = opval;
1591 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1592 }
1593
1594 #undef FLD
1595 }
1596 NEXT (vpc);
1597
1598 CASE (sem, INSN_NOR1) : /* nor $lit1, $src2, $dst */
1599 {
1600 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1601 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1602 #define FLD(f) abuf->fields.fmt_mulo1.f
1603 int UNUSED written = 0;
1604 IADDR UNUSED pc = abuf->addr;
1605 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1606
1607 {
1608 SI opval = ANDSI (INVSI (* FLD (i_src2)), INVSI (FLD (f_src1)));
1609 * FLD (i_dst) = opval;
1610 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1611 }
1612
1613 #undef FLD
1614 }
1615 NEXT (vpc);
1616
1617 CASE (sem, INSN_NOR2) : /* nor $src1, $lit2, $dst */
1618 {
1619 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1620 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1621 #define FLD(f) abuf->fields.fmt_mulo2.f
1622 int UNUSED written = 0;
1623 IADDR UNUSED pc = abuf->addr;
1624 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1625
1626 {
1627 SI opval = ANDSI (INVSI (FLD (f_src2)), INVSI (* FLD (i_src1)));
1628 * FLD (i_dst) = opval;
1629 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1630 }
1631
1632 #undef FLD
1633 }
1634 NEXT (vpc);
1635
1636 CASE (sem, INSN_NOR3) : /* nor $lit1, $lit2, $dst */
1637 {
1638 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1640 #define FLD(f) abuf->fields.fmt_mulo3.f
1641 int UNUSED written = 0;
1642 IADDR UNUSED pc = abuf->addr;
1643 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1644
1645 {
1646 SI opval = ANDSI (INVSI (FLD (f_src2)), INVSI (FLD (f_src1)));
1647 * FLD (i_dst) = opval;
1648 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1649 }
1650
1651 #undef FLD
1652 }
1653 NEXT (vpc);
1654
1655 CASE (sem, INSN_NOT) : /* not $src1, $src2, $dst */
1656 {
1657 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1658 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1659 #define FLD(f) abuf->fields.fmt_not.f
1660 int UNUSED written = 0;
1661 IADDR UNUSED pc = abuf->addr;
1662 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1663
1664 {
1665 SI opval = INVSI (* FLD (i_src1));
1666 * FLD (i_dst) = opval;
1667 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1668 }
1669
1670 #undef FLD
1671 }
1672 NEXT (vpc);
1673
1674 CASE (sem, INSN_NOT1) : /* not $lit1, $src2, $dst */
1675 {
1676 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1677 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1678 #define FLD(f) abuf->fields.fmt_not1.f
1679 int UNUSED written = 0;
1680 IADDR UNUSED pc = abuf->addr;
1681 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1682
1683 {
1684 SI opval = INVSI (FLD (f_src1));
1685 * FLD (i_dst) = opval;
1686 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1687 }
1688
1689 #undef FLD
1690 }
1691 NEXT (vpc);
1692
1693 CASE (sem, INSN_NOT2) : /* not $src1, $lit2, $dst */
1694 {
1695 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1696 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1697 #define FLD(f) abuf->fields.fmt_not2.f
1698 int UNUSED written = 0;
1699 IADDR UNUSED pc = abuf->addr;
1700 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1701
1702 {
1703 SI opval = INVSI (* FLD (i_src1));
1704 * FLD (i_dst) = opval;
1705 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1706 }
1707
1708 #undef FLD
1709 }
1710 NEXT (vpc);
1711
1712 CASE (sem, INSN_NOT3) : /* not $lit1, $lit2, $dst */
1713 {
1714 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1715 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1716 #define FLD(f) abuf->fields.fmt_not3.f
1717 int UNUSED written = 0;
1718 IADDR UNUSED pc = abuf->addr;
1719 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1720
1721 {
1722 SI opval = INVSI (FLD (f_src1));
1723 * FLD (i_dst) = opval;
1724 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1725 }
1726
1727 #undef FLD
1728 }
1729 NEXT (vpc);
1730
1731 CASE (sem, INSN_CLRBIT) : /* clrbit $src1, $src2, $dst */
1732 {
1733 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1734 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1735 #define FLD(f) abuf->fields.fmt_notbit.f
1736 int UNUSED written = 0;
1737 IADDR UNUSED pc = abuf->addr;
1738 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1739
1740 {
1741 SI opval = ANDSI (INVSI (SLLSI (1, * FLD (i_src1))), * FLD (i_src2));
1742 * FLD (i_dst) = opval;
1743 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1744 }
1745
1746 #undef FLD
1747 }
1748 NEXT (vpc);
1749
1750 CASE (sem, INSN_CLRBIT1) : /* clrbit $lit1, $src2, $dst */
1751 {
1752 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1753 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1754 #define FLD(f) abuf->fields.fmt_notbit1.f
1755 int UNUSED written = 0;
1756 IADDR UNUSED pc = abuf->addr;
1757 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1758
1759 {
1760 SI opval = ANDSI (INVSI (SLLSI (1, FLD (f_src1))), * FLD (i_src2));
1761 * FLD (i_dst) = opval;
1762 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1763 }
1764
1765 #undef FLD
1766 }
1767 NEXT (vpc);
1768
1769 CASE (sem, INSN_CLRBIT2) : /* clrbit $src1, $lit2, $dst */
1770 {
1771 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1772 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1773 #define FLD(f) abuf->fields.fmt_notbit2.f
1774 int UNUSED written = 0;
1775 IADDR UNUSED pc = abuf->addr;
1776 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1777
1778 {
1779 SI opval = ANDSI (INVSI (SLLSI (1, * FLD (i_src1))), FLD (f_src2));
1780 * FLD (i_dst) = opval;
1781 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1782 }
1783
1784 #undef FLD
1785 }
1786 NEXT (vpc);
1787
1788 CASE (sem, INSN_CLRBIT3) : /* clrbit $lit1, $lit2, $dst */
1789 {
1790 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1791 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1792 #define FLD(f) abuf->fields.fmt_notbit3.f
1793 int UNUSED written = 0;
1794 IADDR UNUSED pc = abuf->addr;
1795 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1796
1797 {
1798 SI opval = ANDSI (INVSI (SLLSI (1, FLD (f_src1))), FLD (f_src2));
1799 * FLD (i_dst) = opval;
1800 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1801 }
1802
1803 #undef FLD
1804 }
1805 NEXT (vpc);
1806
1807 CASE (sem, INSN_SHLO) : /* shlo $src1, $src2, $dst */
1808 {
1809 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1810 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1811 #define FLD(f) abuf->fields.fmt_notbit.f
1812 int UNUSED written = 0;
1813 IADDR UNUSED pc = abuf->addr;
1814 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1815
1816 {
1817 SI opval = SLLSI (* FLD (i_src2), * FLD (i_src1));
1818 * FLD (i_dst) = opval;
1819 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1820 }
1821
1822 #undef FLD
1823 }
1824 NEXT (vpc);
1825
1826 CASE (sem, INSN_SHLO1) : /* shlo $lit1, $src2, $dst */
1827 {
1828 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1829 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1830 #define FLD(f) abuf->fields.fmt_notbit1.f
1831 int UNUSED written = 0;
1832 IADDR UNUSED pc = abuf->addr;
1833 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1834
1835 {
1836 SI opval = SLLSI (* FLD (i_src2), FLD (f_src1));
1837 * FLD (i_dst) = opval;
1838 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1839 }
1840
1841 #undef FLD
1842 }
1843 NEXT (vpc);
1844
1845 CASE (sem, INSN_SHLO2) : /* shlo $src1, $lit2, $dst */
1846 {
1847 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1848 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1849 #define FLD(f) abuf->fields.fmt_notbit2.f
1850 int UNUSED written = 0;
1851 IADDR UNUSED pc = abuf->addr;
1852 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1853
1854 {
1855 SI opval = SLLSI (FLD (f_src2), * FLD (i_src1));
1856 * FLD (i_dst) = opval;
1857 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1858 }
1859
1860 #undef FLD
1861 }
1862 NEXT (vpc);
1863
1864 CASE (sem, INSN_SHLO3) : /* shlo $lit1, $lit2, $dst */
1865 {
1866 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1867 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1868 #define FLD(f) abuf->fields.fmt_notbit3.f
1869 int UNUSED written = 0;
1870 IADDR UNUSED pc = abuf->addr;
1871 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1872
1873 {
1874 SI opval = SLLSI (FLD (f_src2), FLD (f_src1));
1875 * FLD (i_dst) = opval;
1876 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1877 }
1878
1879 #undef FLD
1880 }
1881 NEXT (vpc);
1882
1883 CASE (sem, INSN_SHRO) : /* shro $src1, $src2, $dst */
1884 {
1885 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1886 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1887 #define FLD(f) abuf->fields.fmt_notbit.f
1888 int UNUSED written = 0;
1889 IADDR UNUSED pc = abuf->addr;
1890 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1891
1892 {
1893 SI opval = SRLSI (* FLD (i_src2), * FLD (i_src1));
1894 * FLD (i_dst) = opval;
1895 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1896 }
1897
1898 #undef FLD
1899 }
1900 NEXT (vpc);
1901
1902 CASE (sem, INSN_SHRO1) : /* shro $lit1, $src2, $dst */
1903 {
1904 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1905 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1906 #define FLD(f) abuf->fields.fmt_notbit1.f
1907 int UNUSED written = 0;
1908 IADDR UNUSED pc = abuf->addr;
1909 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1910
1911 {
1912 SI opval = SRLSI (* FLD (i_src2), FLD (f_src1));
1913 * FLD (i_dst) = opval;
1914 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1915 }
1916
1917 #undef FLD
1918 }
1919 NEXT (vpc);
1920
1921 CASE (sem, INSN_SHRO2) : /* shro $src1, $lit2, $dst */
1922 {
1923 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1924 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1925 #define FLD(f) abuf->fields.fmt_notbit2.f
1926 int UNUSED written = 0;
1927 IADDR UNUSED pc = abuf->addr;
1928 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1929
1930 {
1931 SI opval = SRLSI (FLD (f_src2), * FLD (i_src1));
1932 * FLD (i_dst) = opval;
1933 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1934 }
1935
1936 #undef FLD
1937 }
1938 NEXT (vpc);
1939
1940 CASE (sem, INSN_SHRO3) : /* shro $lit1, $lit2, $dst */
1941 {
1942 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1943 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1944 #define FLD(f) abuf->fields.fmt_notbit3.f
1945 int UNUSED written = 0;
1946 IADDR UNUSED pc = abuf->addr;
1947 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1948
1949 {
1950 SI opval = SRLSI (FLD (f_src2), FLD (f_src1));
1951 * FLD (i_dst) = opval;
1952 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1953 }
1954
1955 #undef FLD
1956 }
1957 NEXT (vpc);
1958
1959 CASE (sem, INSN_SHLI) : /* shli $src1, $src2, $dst */
1960 {
1961 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1962 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1963 #define FLD(f) abuf->fields.fmt_notbit.f
1964 int UNUSED written = 0;
1965 IADDR UNUSED pc = abuf->addr;
1966 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1967
1968 {
1969 SI opval = SLLSI (* FLD (i_src2), * FLD (i_src1));
1970 * FLD (i_dst) = opval;
1971 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1972 }
1973
1974 #undef FLD
1975 }
1976 NEXT (vpc);
1977
1978 CASE (sem, INSN_SHLI1) : /* shli $lit1, $src2, $dst */
1979 {
1980 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
1981 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1982 #define FLD(f) abuf->fields.fmt_notbit1.f
1983 int UNUSED written = 0;
1984 IADDR UNUSED pc = abuf->addr;
1985 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1986
1987 {
1988 SI opval = SLLSI (* FLD (i_src2), FLD (f_src1));
1989 * FLD (i_dst) = opval;
1990 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1991 }
1992
1993 #undef FLD
1994 }
1995 NEXT (vpc);
1996
1997 CASE (sem, INSN_SHLI2) : /* shli $src1, $lit2, $dst */
1998 {
1999 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2000 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2001 #define FLD(f) abuf->fields.fmt_notbit2.f
2002 int UNUSED written = 0;
2003 IADDR UNUSED pc = abuf->addr;
2004 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2005
2006 {
2007 SI opval = SLLSI (FLD (f_src2), * FLD (i_src1));
2008 * FLD (i_dst) = opval;
2009 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2010 }
2011
2012 #undef FLD
2013 }
2014 NEXT (vpc);
2015
2016 CASE (sem, INSN_SHLI3) : /* shli $lit1, $lit2, $dst */
2017 {
2018 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2019 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2020 #define FLD(f) abuf->fields.fmt_notbit3.f
2021 int UNUSED written = 0;
2022 IADDR UNUSED pc = abuf->addr;
2023 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2024
2025 {
2026 SI opval = SLLSI (FLD (f_src2), FLD (f_src1));
2027 * FLD (i_dst) = opval;
2028 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2029 }
2030
2031 #undef FLD
2032 }
2033 NEXT (vpc);
2034
2035 CASE (sem, INSN_SHRI) : /* shri $src1, $src2, $dst */
2036 {
2037 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2038 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2039 #define FLD(f) abuf->fields.fmt_notbit.f
2040 int UNUSED written = 0;
2041 IADDR UNUSED pc = abuf->addr;
2042 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2043
2044 {
2045 SI opval = SRASI (* FLD (i_src2), * FLD (i_src1));
2046 * FLD (i_dst) = opval;
2047 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2048 }
2049
2050 #undef FLD
2051 }
2052 NEXT (vpc);
2053
2054 CASE (sem, INSN_SHRI1) : /* shri $lit1, $src2, $dst */
2055 {
2056 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2057 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2058 #define FLD(f) abuf->fields.fmt_notbit1.f
2059 int UNUSED written = 0;
2060 IADDR UNUSED pc = abuf->addr;
2061 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2062
2063 {
2064 SI opval = SRASI (* FLD (i_src2), FLD (f_src1));
2065 * FLD (i_dst) = opval;
2066 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2067 }
2068
2069 #undef FLD
2070 }
2071 NEXT (vpc);
2072
2073 CASE (sem, INSN_SHRI2) : /* shri $src1, $lit2, $dst */
2074 {
2075 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2076 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2077 #define FLD(f) abuf->fields.fmt_notbit2.f
2078 int UNUSED written = 0;
2079 IADDR UNUSED pc = abuf->addr;
2080 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2081
2082 {
2083 SI opval = SRASI (FLD (f_src2), * FLD (i_src1));
2084 * FLD (i_dst) = opval;
2085 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2086 }
2087
2088 #undef FLD
2089 }
2090 NEXT (vpc);
2091
2092 CASE (sem, INSN_SHRI3) : /* shri $lit1, $lit2, $dst */
2093 {
2094 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2095 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2096 #define FLD(f) abuf->fields.fmt_notbit3.f
2097 int UNUSED written = 0;
2098 IADDR UNUSED pc = abuf->addr;
2099 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2100
2101 {
2102 SI opval = SRASI (FLD (f_src2), FLD (f_src1));
2103 * FLD (i_dst) = opval;
2104 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2105 }
2106
2107 #undef FLD
2108 }
2109 NEXT (vpc);
2110
2111 CASE (sem, INSN_EMUL) : /* emul $src1, $src2, $dst */
2112 {
2113 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2114 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2115 #define FLD(f) abuf->fields.fmt_emul.f
2116 int UNUSED written = 0;
2117 IADDR UNUSED pc = abuf->addr;
2118 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2119
2120 do {
2121 SI tmp_dregno;
2122 DI tmp_temp;
2123 tmp_temp = MULDI (ZEXTSIDI (* FLD (i_src1)), ZEXTSIDI (* FLD (i_src2)));
2124 tmp_dregno = FLD (f_srcdst);
2125 {
2126 SI opval = TRUNCDISI (tmp_temp);
2127 * FLD (i_dst) = opval;
2128 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2129 }
2130 {
2131 SI opval = TRUNCDISI (SRLDI (tmp_temp, 32));
2132 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
2133 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
2134 }
2135 } while (0);
2136
2137 #undef FLD
2138 }
2139 NEXT (vpc);
2140
2141 CASE (sem, INSN_EMUL1) : /* emul $lit1, $src2, $dst */
2142 {
2143 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2144 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2145 #define FLD(f) abuf->fields.fmt_emul1.f
2146 int UNUSED written = 0;
2147 IADDR UNUSED pc = abuf->addr;
2148 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2149
2150 do {
2151 SI tmp_dregno;
2152 DI tmp_temp;
2153 tmp_temp = MULDI (ZEXTSIDI (FLD (f_src1)), ZEXTSIDI (* FLD (i_src2)));
2154 tmp_dregno = FLD (f_srcdst);
2155 {
2156 SI opval = TRUNCDISI (tmp_temp);
2157 * FLD (i_dst) = opval;
2158 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2159 }
2160 {
2161 SI opval = TRUNCDISI (SRLDI (tmp_temp, 32));
2162 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
2163 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
2164 }
2165 } while (0);
2166
2167 #undef FLD
2168 }
2169 NEXT (vpc);
2170
2171 CASE (sem, INSN_EMUL2) : /* emul $src1, $lit2, $dst */
2172 {
2173 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2174 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2175 #define FLD(f) abuf->fields.fmt_emul2.f
2176 int UNUSED written = 0;
2177 IADDR UNUSED pc = abuf->addr;
2178 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2179
2180 do {
2181 SI tmp_dregno;
2182 DI tmp_temp;
2183 tmp_temp = MULDI (ZEXTSIDI (* FLD (i_src1)), ZEXTSIDI (FLD (f_src2)));
2184 tmp_dregno = FLD (f_srcdst);
2185 {
2186 SI opval = TRUNCDISI (tmp_temp);
2187 * FLD (i_dst) = opval;
2188 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2189 }
2190 {
2191 SI opval = TRUNCDISI (SRLDI (tmp_temp, 32));
2192 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
2193 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
2194 }
2195 } while (0);
2196
2197 #undef FLD
2198 }
2199 NEXT (vpc);
2200
2201 CASE (sem, INSN_EMUL3) : /* emul $lit1, $lit2, $dst */
2202 {
2203 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2204 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2205 #define FLD(f) abuf->fields.fmt_emul3.f
2206 int UNUSED written = 0;
2207 IADDR UNUSED pc = abuf->addr;
2208 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2209
2210 do {
2211 SI tmp_dregno;
2212 DI tmp_temp;
2213 tmp_temp = MULDI (ZEXTSIDI (FLD (f_src1)), ZEXTSIDI (FLD (f_src2)));
2214 tmp_dregno = FLD (f_srcdst);
2215 {
2216 SI opval = TRUNCDISI (tmp_temp);
2217 * FLD (i_dst) = opval;
2218 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2219 }
2220 {
2221 SI opval = TRUNCDISI (SRLDI (tmp_temp, 32));
2222 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
2223 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
2224 }
2225 } while (0);
2226
2227 #undef FLD
2228 }
2229 NEXT (vpc);
2230
2231 CASE (sem, INSN_MOV) : /* mov $src1, $dst */
2232 {
2233 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2234 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2235 #define FLD(f) abuf->fields.fmt_not2.f
2236 int UNUSED written = 0;
2237 IADDR UNUSED pc = abuf->addr;
2238 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2239
2240 {
2241 SI opval = * FLD (i_src1);
2242 * FLD (i_dst) = opval;
2243 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2244 }
2245
2246 #undef FLD
2247 }
2248 NEXT (vpc);
2249
2250 CASE (sem, INSN_MOV1) : /* mov $lit1, $dst */
2251 {
2252 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2253 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2254 #define FLD(f) abuf->fields.fmt_not3.f
2255 int UNUSED written = 0;
2256 IADDR UNUSED pc = abuf->addr;
2257 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2258
2259 {
2260 SI opval = FLD (f_src1);
2261 * FLD (i_dst) = opval;
2262 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2263 }
2264
2265 #undef FLD
2266 }
2267 NEXT (vpc);
2268
2269 CASE (sem, INSN_MOVL) : /* movl $src1, $dst */
2270 {
2271 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2272 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2273 #define FLD(f) abuf->fields.fmt_movl.f
2274 int UNUSED written = 0;
2275 IADDR UNUSED pc = abuf->addr;
2276 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2277
2278 do {
2279 SI tmp_sregno;
2280 SI tmp_dregno;
2281 tmp_dregno = FLD (f_srcdst);
2282 tmp_sregno = FLD (f_src1);
2283 {
2284 SI opval = * FLD (i_src1);
2285 * FLD (i_dst) = opval;
2286 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2287 }
2288 {
2289 SI opval = CPU (h_gr[((FLD (f_src1)) + (1))]);
2290 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
2291 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
2292 }
2293 } while (0);
2294
2295 #undef FLD
2296 }
2297 NEXT (vpc);
2298
2299 CASE (sem, INSN_MOVL1) : /* movl $lit1, $dst */
2300 {
2301 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2303 #define FLD(f) abuf->fields.fmt_movl1.f
2304 int UNUSED written = 0;
2305 IADDR UNUSED pc = abuf->addr;
2306 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2307
2308 do {
2309 SI tmp_dregno;
2310 tmp_dregno = FLD (f_srcdst);
2311 {
2312 SI opval = FLD (f_src1);
2313 * FLD (i_dst) = opval;
2314 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2315 }
2316 {
2317 SI opval = 0;
2318 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
2319 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
2320 }
2321 } while (0);
2322
2323 #undef FLD
2324 }
2325 NEXT (vpc);
2326
2327 CASE (sem, INSN_MOVT) : /* movt $src1, $dst */
2328 {
2329 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2330 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2331 #define FLD(f) abuf->fields.fmt_movt.f
2332 int UNUSED written = 0;
2333 IADDR UNUSED pc = abuf->addr;
2334 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2335
2336 do {
2337 SI tmp_sregno;
2338 SI tmp_dregno;
2339 tmp_dregno = FLD (f_srcdst);
2340 tmp_sregno = FLD (f_src1);
2341 {
2342 SI opval = * FLD (i_src1);
2343 * FLD (i_dst) = opval;
2344 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2345 }
2346 {
2347 SI opval = CPU (h_gr[((FLD (f_src1)) + (1))]);
2348 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
2349 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
2350 }
2351 {
2352 SI opval = CPU (h_gr[((FLD (f_src1)) + (2))]);
2353 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
2354 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
2355 }
2356 } while (0);
2357
2358 #undef FLD
2359 }
2360 NEXT (vpc);
2361
2362 CASE (sem, INSN_MOVT1) : /* movt $lit1, $dst */
2363 {
2364 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2365 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2366 #define FLD(f) abuf->fields.fmt_movt1.f
2367 int UNUSED written = 0;
2368 IADDR UNUSED pc = abuf->addr;
2369 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2370
2371 do {
2372 SI tmp_dregno;
2373 tmp_dregno = FLD (f_srcdst);
2374 {
2375 SI opval = FLD (f_src1);
2376 * FLD (i_dst) = opval;
2377 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2378 }
2379 {
2380 SI opval = 0;
2381 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
2382 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
2383 }
2384 {
2385 SI opval = 0;
2386 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
2387 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
2388 }
2389 } while (0);
2390
2391 #undef FLD
2392 }
2393 NEXT (vpc);
2394
2395 CASE (sem, INSN_MOVQ) : /* movq $src1, $dst */
2396 {
2397 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2398 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2399 #define FLD(f) abuf->fields.fmt_movq.f
2400 int UNUSED written = 0;
2401 IADDR UNUSED pc = abuf->addr;
2402 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2403
2404 do {
2405 SI tmp_sregno;
2406 SI tmp_dregno;
2407 tmp_dregno = FLD (f_srcdst);
2408 tmp_sregno = FLD (f_src1);
2409 {
2410 SI opval = * FLD (i_src1);
2411 * FLD (i_dst) = opval;
2412 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2413 }
2414 {
2415 SI opval = CPU (h_gr[((FLD (f_src1)) + (1))]);
2416 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
2417 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
2418 }
2419 {
2420 SI opval = CPU (h_gr[((FLD (f_src1)) + (2))]);
2421 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
2422 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
2423 }
2424 {
2425 SI opval = CPU (h_gr[((FLD (f_src1)) + (3))]);
2426 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
2427 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval);
2428 }
2429 } while (0);
2430
2431 #undef FLD
2432 }
2433 NEXT (vpc);
2434
2435 CASE (sem, INSN_MOVQ1) : /* movq $lit1, $dst */
2436 {
2437 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2438 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2439 #define FLD(f) abuf->fields.fmt_movq1.f
2440 int UNUSED written = 0;
2441 IADDR UNUSED pc = abuf->addr;
2442 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2443
2444 do {
2445 SI tmp_dregno;
2446 tmp_dregno = FLD (f_srcdst);
2447 {
2448 SI opval = FLD (f_src1);
2449 * FLD (i_dst) = opval;
2450 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2451 }
2452 {
2453 SI opval = 0;
2454 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
2455 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
2456 }
2457 {
2458 SI opval = 0;
2459 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
2460 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
2461 }
2462 {
2463 SI opval = 0;
2464 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
2465 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval);
2466 }
2467 } while (0);
2468
2469 #undef FLD
2470 }
2471 NEXT (vpc);
2472
2473 CASE (sem, INSN_MODPC) : /* modpc $src1, $src2, $dst */
2474 {
2475 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2476 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2477 #define FLD(f) abuf->fields.fmt_modpc.f
2478 int UNUSED written = 0;
2479 IADDR UNUSED pc = abuf->addr;
2480 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2481
2482 {
2483 SI opval = * FLD (i_src2);
2484 * FLD (i_dst) = opval;
2485 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2486 }
2487
2488 #undef FLD
2489 }
2490 NEXT (vpc);
2491
2492 CASE (sem, INSN_MODAC) : /* modac $src1, $src2, $dst */
2493 {
2494 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2495 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2496 #define FLD(f) abuf->fields.fmt_modpc.f
2497 int UNUSED written = 0;
2498 IADDR UNUSED pc = abuf->addr;
2499 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2500
2501 {
2502 SI opval = * FLD (i_src2);
2503 * FLD (i_dst) = opval;
2504 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2505 }
2506
2507 #undef FLD
2508 }
2509 NEXT (vpc);
2510
2511 CASE (sem, INSN_LDA_OFFSET) : /* lda $offset, $dst */
2512 {
2513 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2514 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2515 #define FLD(f) abuf->fields.fmt_lda_offset.f
2516 int UNUSED written = 0;
2517 IADDR UNUSED pc = abuf->addr;
2518 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2519
2520 {
2521 SI opval = FLD (f_offset);
2522 * FLD (i_dst) = opval;
2523 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2524 }
2525
2526 #undef FLD
2527 }
2528 NEXT (vpc);
2529
2530 CASE (sem, INSN_LDA_INDIRECT_OFFSET) : /* lda $offset($abase), $dst */
2531 {
2532 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2533 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2534 #define FLD(f) abuf->fields.fmt_lda_indirect_offset.f
2535 int UNUSED written = 0;
2536 IADDR UNUSED pc = abuf->addr;
2537 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2538
2539 {
2540 SI opval = ADDSI (FLD (f_offset), * FLD (i_abase));
2541 * FLD (i_dst) = opval;
2542 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2543 }
2544
2545 #undef FLD
2546 }
2547 NEXT (vpc);
2548
2549 CASE (sem, INSN_LDA_INDIRECT) : /* lda ($abase), $dst */
2550 {
2551 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2552 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2553 #define FLD(f) abuf->fields.fmt_lda_indirect.f
2554 int UNUSED written = 0;
2555 IADDR UNUSED pc = abuf->addr;
2556 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2557
2558 {
2559 SI opval = * FLD (i_abase);
2560 * FLD (i_dst) = opval;
2561 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2562 }
2563
2564 #undef FLD
2565 }
2566 NEXT (vpc);
2567
2568 CASE (sem, INSN_LDA_INDIRECT_INDEX) : /* lda ($abase)[$index*S$scale], $dst */
2569 {
2570 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2571 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2572 #define FLD(f) abuf->fields.fmt_lda_indirect_index.f
2573 int UNUSED written = 0;
2574 IADDR UNUSED pc = abuf->addr;
2575 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2576
2577 {
2578 SI opval = ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
2579 * FLD (i_dst) = opval;
2580 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2581 }
2582
2583 #undef FLD
2584 }
2585 NEXT (vpc);
2586
2587 CASE (sem, INSN_LDA_DISP) : /* lda $optdisp, $dst */
2588 {
2589 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2590 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2591 #define FLD(f) abuf->fields.fmt_lda_disp.f
2592 int UNUSED written = 0;
2593 IADDR UNUSED pc = abuf->addr;
2594 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2595
2596 {
2597 SI opval = FLD (f_optdisp);
2598 * FLD (i_dst) = opval;
2599 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2600 }
2601
2602 #undef FLD
2603 }
2604 NEXT (vpc);
2605
2606 CASE (sem, INSN_LDA_INDIRECT_DISP) : /* lda $optdisp($abase), $dst */
2607 {
2608 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2609 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2610 #define FLD(f) abuf->fields.fmt_lda_indirect_disp.f
2611 int UNUSED written = 0;
2612 IADDR UNUSED pc = abuf->addr;
2613 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2614
2615 {
2616 SI opval = ADDSI (FLD (f_optdisp), * FLD (i_abase));
2617 * FLD (i_dst) = opval;
2618 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2619 }
2620
2621 #undef FLD
2622 }
2623 NEXT (vpc);
2624
2625 CASE (sem, INSN_LDA_INDEX_DISP) : /* lda $optdisp[$index*S$scale], $dst */
2626 {
2627 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2628 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2629 #define FLD(f) abuf->fields.fmt_lda_index_disp.f
2630 int UNUSED written = 0;
2631 IADDR UNUSED pc = abuf->addr;
2632 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2633
2634 {
2635 SI opval = ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
2636 * FLD (i_dst) = opval;
2637 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2638 }
2639
2640 #undef FLD
2641 }
2642 NEXT (vpc);
2643
2644 CASE (sem, INSN_LDA_INDIRECT_INDEX_DISP) : /* lda $optdisp($abase)[$index*S$scale], $dst */
2645 {
2646 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2647 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2648 #define FLD(f) abuf->fields.fmt_lda_indirect_index_disp.f
2649 int UNUSED written = 0;
2650 IADDR UNUSED pc = abuf->addr;
2651 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2652
2653 {
2654 SI opval = ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
2655 * FLD (i_dst) = opval;
2656 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2657 }
2658
2659 #undef FLD
2660 }
2661 NEXT (vpc);
2662
2663 CASE (sem, INSN_LD_OFFSET) : /* ld $offset, $dst */
2664 {
2665 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2666 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2667 #define FLD(f) abuf->fields.fmt_ld_offset.f
2668 int UNUSED written = 0;
2669 IADDR UNUSED pc = abuf->addr;
2670 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2671
2672 {
2673 SI opval = GETMEMSI (current_cpu, pc, FLD (f_offset));
2674 * FLD (i_dst) = opval;
2675 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2676 }
2677
2678 #undef FLD
2679 }
2680 NEXT (vpc);
2681
2682 CASE (sem, INSN_LD_INDIRECT_OFFSET) : /* ld $offset($abase), $dst */
2683 {
2684 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2685 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2686 #define FLD(f) abuf->fields.fmt_ld_indirect_offset.f
2687 int UNUSED written = 0;
2688 IADDR UNUSED pc = abuf->addr;
2689 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2690
2691 {
2692 SI opval = GETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)));
2693 * FLD (i_dst) = opval;
2694 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2695 }
2696
2697 #undef FLD
2698 }
2699 NEXT (vpc);
2700
2701 CASE (sem, INSN_LD_INDIRECT) : /* ld ($abase), $dst */
2702 {
2703 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2704 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2705 #define FLD(f) abuf->fields.fmt_ld_indirect.f
2706 int UNUSED written = 0;
2707 IADDR UNUSED pc = abuf->addr;
2708 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2709
2710 {
2711 SI opval = GETMEMSI (current_cpu, pc, * FLD (i_abase));
2712 * FLD (i_dst) = opval;
2713 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2714 }
2715
2716 #undef FLD
2717 }
2718 NEXT (vpc);
2719
2720 CASE (sem, INSN_LD_INDIRECT_INDEX) : /* ld ($abase)[$index*S$scale], $dst */
2721 {
2722 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2723 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2724 #define FLD(f) abuf->fields.fmt_ld_indirect_index.f
2725 int UNUSED written = 0;
2726 IADDR UNUSED pc = abuf->addr;
2727 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2728
2729 {
2730 SI opval = GETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
2731 * FLD (i_dst) = opval;
2732 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2733 }
2734
2735 #undef FLD
2736 }
2737 NEXT (vpc);
2738
2739 CASE (sem, INSN_LD_DISP) : /* ld $optdisp, $dst */
2740 {
2741 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2742 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2743 #define FLD(f) abuf->fields.fmt_ld_disp.f
2744 int UNUSED written = 0;
2745 IADDR UNUSED pc = abuf->addr;
2746 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2747
2748 {
2749 SI opval = GETMEMSI (current_cpu, pc, FLD (f_optdisp));
2750 * FLD (i_dst) = opval;
2751 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2752 }
2753
2754 #undef FLD
2755 }
2756 NEXT (vpc);
2757
2758 CASE (sem, INSN_LD_INDIRECT_DISP) : /* ld $optdisp($abase), $dst */
2759 {
2760 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2761 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2762 #define FLD(f) abuf->fields.fmt_ld_indirect_disp.f
2763 int UNUSED written = 0;
2764 IADDR UNUSED pc = abuf->addr;
2765 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2766
2767 {
2768 SI opval = GETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)));
2769 * FLD (i_dst) = opval;
2770 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2771 }
2772
2773 #undef FLD
2774 }
2775 NEXT (vpc);
2776
2777 CASE (sem, INSN_LD_INDEX_DISP) : /* ld $optdisp[$index*S$scale], $dst */
2778 {
2779 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2780 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2781 #define FLD(f) abuf->fields.fmt_ld_index_disp.f
2782 int UNUSED written = 0;
2783 IADDR UNUSED pc = abuf->addr;
2784 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2785
2786 {
2787 SI opval = GETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
2788 * FLD (i_dst) = opval;
2789 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2790 }
2791
2792 #undef FLD
2793 }
2794 NEXT (vpc);
2795
2796 CASE (sem, INSN_LD_INDIRECT_INDEX_DISP) : /* ld $optdisp($abase)[$index*S$scale], $dst */
2797 {
2798 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2799 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2800 #define FLD(f) abuf->fields.fmt_ld_indirect_index_disp.f
2801 int UNUSED written = 0;
2802 IADDR UNUSED pc = abuf->addr;
2803 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2804
2805 {
2806 SI opval = GETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))));
2807 * FLD (i_dst) = opval;
2808 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2809 }
2810
2811 #undef FLD
2812 }
2813 NEXT (vpc);
2814
2815 CASE (sem, INSN_LDOB_OFFSET) : /* ldob $offset, $dst */
2816 {
2817 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2818 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2819 #define FLD(f) abuf->fields.fmt_ldob_offset.f
2820 int UNUSED written = 0;
2821 IADDR UNUSED pc = abuf->addr;
2822 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2823
2824 {
2825 SI opval = GETMEMUQI (current_cpu, pc, FLD (f_offset));
2826 * FLD (i_dst) = opval;
2827 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2828 }
2829
2830 #undef FLD
2831 }
2832 NEXT (vpc);
2833
2834 CASE (sem, INSN_LDOB_INDIRECT_OFFSET) : /* ldob $offset($abase), $dst */
2835 {
2836 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2837 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2838 #define FLD(f) abuf->fields.fmt_ldob_indirect_offset.f
2839 int UNUSED written = 0;
2840 IADDR UNUSED pc = abuf->addr;
2841 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2842
2843 {
2844 SI opval = GETMEMUQI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)));
2845 * FLD (i_dst) = opval;
2846 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2847 }
2848
2849 #undef FLD
2850 }
2851 NEXT (vpc);
2852
2853 CASE (sem, INSN_LDOB_INDIRECT) : /* ldob ($abase), $dst */
2854 {
2855 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2856 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2857 #define FLD(f) abuf->fields.fmt_ldob_indirect.f
2858 int UNUSED written = 0;
2859 IADDR UNUSED pc = abuf->addr;
2860 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2861
2862 {
2863 SI opval = GETMEMUQI (current_cpu, pc, * FLD (i_abase));
2864 * FLD (i_dst) = opval;
2865 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2866 }
2867
2868 #undef FLD
2869 }
2870 NEXT (vpc);
2871
2872 CASE (sem, INSN_LDOB_INDIRECT_INDEX) : /* ldob ($abase)[$index*S$scale], $dst */
2873 {
2874 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2875 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2876 #define FLD(f) abuf->fields.fmt_ldob_indirect_index.f
2877 int UNUSED written = 0;
2878 IADDR UNUSED pc = abuf->addr;
2879 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2880
2881 {
2882 SI opval = GETMEMUQI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
2883 * FLD (i_dst) = opval;
2884 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2885 }
2886
2887 #undef FLD
2888 }
2889 NEXT (vpc);
2890
2891 CASE (sem, INSN_LDOB_DISP) : /* ldob $optdisp, $dst */
2892 {
2893 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2894 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2895 #define FLD(f) abuf->fields.fmt_ldob_disp.f
2896 int UNUSED written = 0;
2897 IADDR UNUSED pc = abuf->addr;
2898 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2899
2900 {
2901 SI opval = GETMEMUQI (current_cpu, pc, FLD (f_optdisp));
2902 * FLD (i_dst) = opval;
2903 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2904 }
2905
2906 #undef FLD
2907 }
2908 NEXT (vpc);
2909
2910 CASE (sem, INSN_LDOB_INDIRECT_DISP) : /* ldob $optdisp($abase), $dst */
2911 {
2912 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2913 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2914 #define FLD(f) abuf->fields.fmt_ldob_indirect_disp.f
2915 int UNUSED written = 0;
2916 IADDR UNUSED pc = abuf->addr;
2917 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2918
2919 {
2920 SI opval = GETMEMUQI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)));
2921 * FLD (i_dst) = opval;
2922 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2923 }
2924
2925 #undef FLD
2926 }
2927 NEXT (vpc);
2928
2929 CASE (sem, INSN_LDOB_INDEX_DISP) : /* ldob $optdisp[$index*S$scale], $dst */
2930 {
2931 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2933 #define FLD(f) abuf->fields.fmt_ldob_index_disp.f
2934 int UNUSED written = 0;
2935 IADDR UNUSED pc = abuf->addr;
2936 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2937
2938 {
2939 SI opval = GETMEMUQI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
2940 * FLD (i_dst) = opval;
2941 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2942 }
2943
2944 #undef FLD
2945 }
2946 NEXT (vpc);
2947
2948 CASE (sem, INSN_LDOB_INDIRECT_INDEX_DISP) : /* ldob $optdisp($abase)[$index*S$scale], $dst */
2949 {
2950 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2951 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2952 #define FLD(f) abuf->fields.fmt_ldob_indirect_index_disp.f
2953 int UNUSED written = 0;
2954 IADDR UNUSED pc = abuf->addr;
2955 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2956
2957 {
2958 SI opval = GETMEMUQI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))));
2959 * FLD (i_dst) = opval;
2960 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2961 }
2962
2963 #undef FLD
2964 }
2965 NEXT (vpc);
2966
2967 CASE (sem, INSN_LDOS_OFFSET) : /* ldos $offset, $dst */
2968 {
2969 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2970 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2971 #define FLD(f) abuf->fields.fmt_ldos_offset.f
2972 int UNUSED written = 0;
2973 IADDR UNUSED pc = abuf->addr;
2974 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2975
2976 {
2977 SI opval = GETMEMUHI (current_cpu, pc, FLD (f_offset));
2978 * FLD (i_dst) = opval;
2979 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2980 }
2981
2982 #undef FLD
2983 }
2984 NEXT (vpc);
2985
2986 CASE (sem, INSN_LDOS_INDIRECT_OFFSET) : /* ldos $offset($abase), $dst */
2987 {
2988 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
2989 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2990 #define FLD(f) abuf->fields.fmt_ldos_indirect_offset.f
2991 int UNUSED written = 0;
2992 IADDR UNUSED pc = abuf->addr;
2993 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2994
2995 {
2996 SI opval = GETMEMUHI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)));
2997 * FLD (i_dst) = opval;
2998 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2999 }
3000
3001 #undef FLD
3002 }
3003 NEXT (vpc);
3004
3005 CASE (sem, INSN_LDOS_INDIRECT) : /* ldos ($abase), $dst */
3006 {
3007 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3008 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3009 #define FLD(f) abuf->fields.fmt_ldos_indirect.f
3010 int UNUSED written = 0;
3011 IADDR UNUSED pc = abuf->addr;
3012 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3013
3014 {
3015 SI opval = GETMEMUHI (current_cpu, pc, * FLD (i_abase));
3016 * FLD (i_dst) = opval;
3017 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3018 }
3019
3020 #undef FLD
3021 }
3022 NEXT (vpc);
3023
3024 CASE (sem, INSN_LDOS_INDIRECT_INDEX) : /* ldos ($abase)[$index*S$scale], $dst */
3025 {
3026 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3027 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3028 #define FLD(f) abuf->fields.fmt_ldos_indirect_index.f
3029 int UNUSED written = 0;
3030 IADDR UNUSED pc = abuf->addr;
3031 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3032
3033 {
3034 SI opval = GETMEMUHI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3035 * FLD (i_dst) = opval;
3036 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3037 }
3038
3039 #undef FLD
3040 }
3041 NEXT (vpc);
3042
3043 CASE (sem, INSN_LDOS_DISP) : /* ldos $optdisp, $dst */
3044 {
3045 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3046 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3047 #define FLD(f) abuf->fields.fmt_ldos_disp.f
3048 int UNUSED written = 0;
3049 IADDR UNUSED pc = abuf->addr;
3050 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3051
3052 {
3053 SI opval = GETMEMUHI (current_cpu, pc, FLD (f_optdisp));
3054 * FLD (i_dst) = opval;
3055 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3056 }
3057
3058 #undef FLD
3059 }
3060 NEXT (vpc);
3061
3062 CASE (sem, INSN_LDOS_INDIRECT_DISP) : /* ldos $optdisp($abase), $dst */
3063 {
3064 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3065 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3066 #define FLD(f) abuf->fields.fmt_ldos_indirect_disp.f
3067 int UNUSED written = 0;
3068 IADDR UNUSED pc = abuf->addr;
3069 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3070
3071 {
3072 SI opval = GETMEMUHI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)));
3073 * FLD (i_dst) = opval;
3074 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3075 }
3076
3077 #undef FLD
3078 }
3079 NEXT (vpc);
3080
3081 CASE (sem, INSN_LDOS_INDEX_DISP) : /* ldos $optdisp[$index*S$scale], $dst */
3082 {
3083 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3084 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3085 #define FLD(f) abuf->fields.fmt_ldos_index_disp.f
3086 int UNUSED written = 0;
3087 IADDR UNUSED pc = abuf->addr;
3088 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3089
3090 {
3091 SI opval = GETMEMUHI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3092 * FLD (i_dst) = opval;
3093 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3094 }
3095
3096 #undef FLD
3097 }
3098 NEXT (vpc);
3099
3100 CASE (sem, INSN_LDOS_INDIRECT_INDEX_DISP) : /* ldos $optdisp($abase)[$index*S$scale], $dst */
3101 {
3102 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3103 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3104 #define FLD(f) abuf->fields.fmt_ldos_indirect_index_disp.f
3105 int UNUSED written = 0;
3106 IADDR UNUSED pc = abuf->addr;
3107 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3108
3109 {
3110 SI opval = GETMEMUHI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))));
3111 * FLD (i_dst) = opval;
3112 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3113 }
3114
3115 #undef FLD
3116 }
3117 NEXT (vpc);
3118
3119 CASE (sem, INSN_LDIB_OFFSET) : /* ldib $offset, $dst */
3120 {
3121 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3122 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3123 #define FLD(f) abuf->fields.fmt_ldib_offset.f
3124 int UNUSED written = 0;
3125 IADDR UNUSED pc = abuf->addr;
3126 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3127
3128 {
3129 SI opval = GETMEMQI (current_cpu, pc, FLD (f_offset));
3130 * FLD (i_dst) = opval;
3131 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3132 }
3133
3134 #undef FLD
3135 }
3136 NEXT (vpc);
3137
3138 CASE (sem, INSN_LDIB_INDIRECT_OFFSET) : /* ldib $offset($abase), $dst */
3139 {
3140 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3141 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3142 #define FLD(f) abuf->fields.fmt_ldib_indirect_offset.f
3143 int UNUSED written = 0;
3144 IADDR UNUSED pc = abuf->addr;
3145 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3146
3147 {
3148 SI opval = GETMEMQI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)));
3149 * FLD (i_dst) = opval;
3150 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3151 }
3152
3153 #undef FLD
3154 }
3155 NEXT (vpc);
3156
3157 CASE (sem, INSN_LDIB_INDIRECT) : /* ldib ($abase), $dst */
3158 {
3159 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3160 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3161 #define FLD(f) abuf->fields.fmt_ldib_indirect.f
3162 int UNUSED written = 0;
3163 IADDR UNUSED pc = abuf->addr;
3164 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3165
3166 {
3167 SI opval = GETMEMQI (current_cpu, pc, * FLD (i_abase));
3168 * FLD (i_dst) = opval;
3169 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3170 }
3171
3172 #undef FLD
3173 }
3174 NEXT (vpc);
3175
3176 CASE (sem, INSN_LDIB_INDIRECT_INDEX) : /* ldib ($abase)[$index*S$scale], $dst */
3177 {
3178 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3179 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3180 #define FLD(f) abuf->fields.fmt_ldib_indirect_index.f
3181 int UNUSED written = 0;
3182 IADDR UNUSED pc = abuf->addr;
3183 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3184
3185 {
3186 SI opval = GETMEMQI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3187 * FLD (i_dst) = opval;
3188 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3189 }
3190
3191 #undef FLD
3192 }
3193 NEXT (vpc);
3194
3195 CASE (sem, INSN_LDIB_DISP) : /* ldib $optdisp, $dst */
3196 {
3197 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3198 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3199 #define FLD(f) abuf->fields.fmt_ldib_disp.f
3200 int UNUSED written = 0;
3201 IADDR UNUSED pc = abuf->addr;
3202 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3203
3204 {
3205 SI opval = GETMEMQI (current_cpu, pc, FLD (f_optdisp));
3206 * FLD (i_dst) = opval;
3207 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3208 }
3209
3210 #undef FLD
3211 }
3212 NEXT (vpc);
3213
3214 CASE (sem, INSN_LDIB_INDIRECT_DISP) : /* ldib $optdisp($abase), $dst */
3215 {
3216 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3217 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3218 #define FLD(f) abuf->fields.fmt_ldib_indirect_disp.f
3219 int UNUSED written = 0;
3220 IADDR UNUSED pc = abuf->addr;
3221 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3222
3223 {
3224 SI opval = GETMEMQI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)));
3225 * FLD (i_dst) = opval;
3226 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3227 }
3228
3229 #undef FLD
3230 }
3231 NEXT (vpc);
3232
3233 CASE (sem, INSN_LDIB_INDEX_DISP) : /* ldib $optdisp[$index*S$scale], $dst */
3234 {
3235 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3236 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3237 #define FLD(f) abuf->fields.fmt_ldib_index_disp.f
3238 int UNUSED written = 0;
3239 IADDR UNUSED pc = abuf->addr;
3240 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3241
3242 {
3243 SI opval = GETMEMQI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3244 * FLD (i_dst) = opval;
3245 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3246 }
3247
3248 #undef FLD
3249 }
3250 NEXT (vpc);
3251
3252 CASE (sem, INSN_LDIB_INDIRECT_INDEX_DISP) : /* ldib $optdisp($abase)[$index*S$scale], $dst */
3253 {
3254 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3255 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3256 #define FLD(f) abuf->fields.fmt_ldib_indirect_index_disp.f
3257 int UNUSED written = 0;
3258 IADDR UNUSED pc = abuf->addr;
3259 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3260
3261 {
3262 SI opval = GETMEMQI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))));
3263 * FLD (i_dst) = opval;
3264 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3265 }
3266
3267 #undef FLD
3268 }
3269 NEXT (vpc);
3270
3271 CASE (sem, INSN_LDIS_OFFSET) : /* ldis $offset, $dst */
3272 {
3273 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3274 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3275 #define FLD(f) abuf->fields.fmt_ldis_offset.f
3276 int UNUSED written = 0;
3277 IADDR UNUSED pc = abuf->addr;
3278 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3279
3280 {
3281 SI opval = GETMEMHI (current_cpu, pc, FLD (f_offset));
3282 * FLD (i_dst) = opval;
3283 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3284 }
3285
3286 #undef FLD
3287 }
3288 NEXT (vpc);
3289
3290 CASE (sem, INSN_LDIS_INDIRECT_OFFSET) : /* ldis $offset($abase), $dst */
3291 {
3292 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3293 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3294 #define FLD(f) abuf->fields.fmt_ldis_indirect_offset.f
3295 int UNUSED written = 0;
3296 IADDR UNUSED pc = abuf->addr;
3297 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3298
3299 {
3300 SI opval = GETMEMHI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)));
3301 * FLD (i_dst) = opval;
3302 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3303 }
3304
3305 #undef FLD
3306 }
3307 NEXT (vpc);
3308
3309 CASE (sem, INSN_LDIS_INDIRECT) : /* ldis ($abase), $dst */
3310 {
3311 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3312 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3313 #define FLD(f) abuf->fields.fmt_ldis_indirect.f
3314 int UNUSED written = 0;
3315 IADDR UNUSED pc = abuf->addr;
3316 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3317
3318 {
3319 SI opval = GETMEMHI (current_cpu, pc, * FLD (i_abase));
3320 * FLD (i_dst) = opval;
3321 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3322 }
3323
3324 #undef FLD
3325 }
3326 NEXT (vpc);
3327
3328 CASE (sem, INSN_LDIS_INDIRECT_INDEX) : /* ldis ($abase)[$index*S$scale], $dst */
3329 {
3330 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3331 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3332 #define FLD(f) abuf->fields.fmt_ldis_indirect_index.f
3333 int UNUSED written = 0;
3334 IADDR UNUSED pc = abuf->addr;
3335 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3336
3337 {
3338 SI opval = GETMEMHI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3339 * FLD (i_dst) = opval;
3340 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3341 }
3342
3343 #undef FLD
3344 }
3345 NEXT (vpc);
3346
3347 CASE (sem, INSN_LDIS_DISP) : /* ldis $optdisp, $dst */
3348 {
3349 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3350 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3351 #define FLD(f) abuf->fields.fmt_ldis_disp.f
3352 int UNUSED written = 0;
3353 IADDR UNUSED pc = abuf->addr;
3354 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3355
3356 {
3357 SI opval = GETMEMHI (current_cpu, pc, FLD (f_optdisp));
3358 * FLD (i_dst) = opval;
3359 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3360 }
3361
3362 #undef FLD
3363 }
3364 NEXT (vpc);
3365
3366 CASE (sem, INSN_LDIS_INDIRECT_DISP) : /* ldis $optdisp($abase), $dst */
3367 {
3368 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3369 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3370 #define FLD(f) abuf->fields.fmt_ldis_indirect_disp.f
3371 int UNUSED written = 0;
3372 IADDR UNUSED pc = abuf->addr;
3373 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3374
3375 {
3376 SI opval = GETMEMHI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)));
3377 * FLD (i_dst) = opval;
3378 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3379 }
3380
3381 #undef FLD
3382 }
3383 NEXT (vpc);
3384
3385 CASE (sem, INSN_LDIS_INDEX_DISP) : /* ldis $optdisp[$index*S$scale], $dst */
3386 {
3387 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3389 #define FLD(f) abuf->fields.fmt_ldis_index_disp.f
3390 int UNUSED written = 0;
3391 IADDR UNUSED pc = abuf->addr;
3392 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3393
3394 {
3395 SI opval = GETMEMHI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3396 * FLD (i_dst) = opval;
3397 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3398 }
3399
3400 #undef FLD
3401 }
3402 NEXT (vpc);
3403
3404 CASE (sem, INSN_LDIS_INDIRECT_INDEX_DISP) : /* ldis $optdisp($abase)[$index*S$scale], $dst */
3405 {
3406 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3407 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3408 #define FLD(f) abuf->fields.fmt_ldis_indirect_index_disp.f
3409 int UNUSED written = 0;
3410 IADDR UNUSED pc = abuf->addr;
3411 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3412
3413 {
3414 SI opval = GETMEMHI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))));
3415 * FLD (i_dst) = opval;
3416 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3417 }
3418
3419 #undef FLD
3420 }
3421 NEXT (vpc);
3422
3423 CASE (sem, INSN_LDL_OFFSET) : /* ldl $offset, $dst */
3424 {
3425 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3426 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3427 #define FLD(f) abuf->fields.fmt_ldl_offset.f
3428 int UNUSED written = 0;
3429 IADDR UNUSED pc = abuf->addr;
3430 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3431
3432 do {
3433 SI tmp_dregno;
3434 SI tmp_temp;
3435 tmp_dregno = FLD (f_srcdst);
3436 tmp_temp = FLD (f_offset);
3437 {
3438 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3439 * FLD (i_dst) = opval;
3440 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3441 }
3442 {
3443 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3444 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3445 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3446 }
3447 } while (0);
3448
3449 #undef FLD
3450 }
3451 NEXT (vpc);
3452
3453 CASE (sem, INSN_LDL_INDIRECT_OFFSET) : /* ldl $offset($abase), $dst */
3454 {
3455 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3456 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3457 #define FLD(f) abuf->fields.fmt_ldl_indirect_offset.f
3458 int UNUSED written = 0;
3459 IADDR UNUSED pc = abuf->addr;
3460 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3461
3462 do {
3463 SI tmp_dregno;
3464 SI tmp_temp;
3465 tmp_dregno = FLD (f_srcdst);
3466 tmp_temp = ADDSI (FLD (f_offset), * FLD (i_abase));
3467 {
3468 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3469 * FLD (i_dst) = opval;
3470 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3471 }
3472 {
3473 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3474 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3475 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3476 }
3477 } while (0);
3478
3479 #undef FLD
3480 }
3481 NEXT (vpc);
3482
3483 CASE (sem, INSN_LDL_INDIRECT) : /* ldl ($abase), $dst */
3484 {
3485 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3486 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3487 #define FLD(f) abuf->fields.fmt_ldl_indirect.f
3488 int UNUSED written = 0;
3489 IADDR UNUSED pc = abuf->addr;
3490 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3491
3492 do {
3493 SI tmp_dregno;
3494 SI tmp_temp;
3495 tmp_dregno = FLD (f_srcdst);
3496 tmp_temp = * FLD (i_abase);
3497 {
3498 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3499 * FLD (i_dst) = opval;
3500 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3501 }
3502 {
3503 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3504 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3505 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3506 }
3507 } while (0);
3508
3509 #undef FLD
3510 }
3511 NEXT (vpc);
3512
3513 CASE (sem, INSN_LDL_INDIRECT_INDEX) : /* ldl ($abase)[$index*S$scale], $dst */
3514 {
3515 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3516 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3517 #define FLD(f) abuf->fields.fmt_ldl_indirect_index.f
3518 int UNUSED written = 0;
3519 IADDR UNUSED pc = abuf->addr;
3520 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3521
3522 do {
3523 SI tmp_dregno;
3524 SI tmp_temp;
3525 tmp_dregno = FLD (f_srcdst);
3526 tmp_temp = ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
3527 {
3528 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3529 * FLD (i_dst) = opval;
3530 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3531 }
3532 {
3533 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3534 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3535 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3536 }
3537 } while (0);
3538
3539 #undef FLD
3540 }
3541 NEXT (vpc);
3542
3543 CASE (sem, INSN_LDL_DISP) : /* ldl $optdisp, $dst */
3544 {
3545 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3546 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3547 #define FLD(f) abuf->fields.fmt_ldl_disp.f
3548 int UNUSED written = 0;
3549 IADDR UNUSED pc = abuf->addr;
3550 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3551
3552 do {
3553 SI tmp_dregno;
3554 SI tmp_temp;
3555 tmp_dregno = FLD (f_srcdst);
3556 tmp_temp = FLD (f_optdisp);
3557 {
3558 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3559 * FLD (i_dst) = opval;
3560 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3561 }
3562 {
3563 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3564 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3565 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3566 }
3567 } while (0);
3568
3569 #undef FLD
3570 }
3571 NEXT (vpc);
3572
3573 CASE (sem, INSN_LDL_INDIRECT_DISP) : /* ldl $optdisp($abase), $dst */
3574 {
3575 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3576 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3577 #define FLD(f) abuf->fields.fmt_ldl_indirect_disp.f
3578 int UNUSED written = 0;
3579 IADDR UNUSED pc = abuf->addr;
3580 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3581
3582 do {
3583 SI tmp_dregno;
3584 SI tmp_temp;
3585 tmp_dregno = FLD (f_srcdst);
3586 tmp_temp = ADDSI (FLD (f_optdisp), * FLD (i_abase));
3587 {
3588 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3589 * FLD (i_dst) = opval;
3590 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3591 }
3592 {
3593 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3594 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3595 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3596 }
3597 } while (0);
3598
3599 #undef FLD
3600 }
3601 NEXT (vpc);
3602
3603 CASE (sem, INSN_LDL_INDEX_DISP) : /* ldl $optdisp[$index*S$scale], $dst */
3604 {
3605 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3606 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3607 #define FLD(f) abuf->fields.fmt_ldl_index_disp.f
3608 int UNUSED written = 0;
3609 IADDR UNUSED pc = abuf->addr;
3610 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3611
3612 do {
3613 SI tmp_dregno;
3614 SI tmp_temp;
3615 tmp_dregno = FLD (f_srcdst);
3616 tmp_temp = ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
3617 {
3618 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3619 * FLD (i_dst) = opval;
3620 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3621 }
3622 {
3623 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3624 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3625 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3626 }
3627 } while (0);
3628
3629 #undef FLD
3630 }
3631 NEXT (vpc);
3632
3633 CASE (sem, INSN_LDL_INDIRECT_INDEX_DISP) : /* ldl $optdisp($abase)[$index*S$scale], $dst */
3634 {
3635 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3636 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3637 #define FLD(f) abuf->fields.fmt_ldl_indirect_index_disp.f
3638 int UNUSED written = 0;
3639 IADDR UNUSED pc = abuf->addr;
3640 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3641
3642 do {
3643 SI tmp_dregno;
3644 SI tmp_temp;
3645 tmp_dregno = FLD (f_srcdst);
3646 tmp_temp = ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3647 {
3648 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3649 * FLD (i_dst) = opval;
3650 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3651 }
3652 {
3653 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3654 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3655 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3656 }
3657 } while (0);
3658
3659 #undef FLD
3660 }
3661 NEXT (vpc);
3662
3663 CASE (sem, INSN_LDT_OFFSET) : /* ldt $offset, $dst */
3664 {
3665 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3666 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3667 #define FLD(f) abuf->fields.fmt_ldt_offset.f
3668 int UNUSED written = 0;
3669 IADDR UNUSED pc = abuf->addr;
3670 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3671
3672 do {
3673 SI tmp_dregno;
3674 SI tmp_temp;
3675 tmp_dregno = FLD (f_srcdst);
3676 tmp_temp = FLD (f_offset);
3677 {
3678 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3679 * FLD (i_dst) = opval;
3680 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3681 }
3682 {
3683 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3684 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3685 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3686 }
3687 {
3688 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3689 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
3690 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
3691 }
3692 } while (0);
3693
3694 #undef FLD
3695 }
3696 NEXT (vpc);
3697
3698 CASE (sem, INSN_LDT_INDIRECT_OFFSET) : /* ldt $offset($abase), $dst */
3699 {
3700 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3701 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3702 #define FLD(f) abuf->fields.fmt_ldt_indirect_offset.f
3703 int UNUSED written = 0;
3704 IADDR UNUSED pc = abuf->addr;
3705 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3706
3707 do {
3708 SI tmp_dregno;
3709 SI tmp_temp;
3710 tmp_dregno = FLD (f_srcdst);
3711 tmp_temp = ADDSI (FLD (f_offset), * FLD (i_abase));
3712 {
3713 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3714 * FLD (i_dst) = opval;
3715 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3716 }
3717 {
3718 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3719 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3720 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3721 }
3722 {
3723 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3724 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
3725 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
3726 }
3727 } while (0);
3728
3729 #undef FLD
3730 }
3731 NEXT (vpc);
3732
3733 CASE (sem, INSN_LDT_INDIRECT) : /* ldt ($abase), $dst */
3734 {
3735 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3736 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3737 #define FLD(f) abuf->fields.fmt_ldt_indirect.f
3738 int UNUSED written = 0;
3739 IADDR UNUSED pc = abuf->addr;
3740 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3741
3742 do {
3743 SI tmp_dregno;
3744 SI tmp_temp;
3745 tmp_dregno = FLD (f_srcdst);
3746 tmp_temp = * FLD (i_abase);
3747 {
3748 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3749 * FLD (i_dst) = opval;
3750 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3751 }
3752 {
3753 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3754 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3755 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3756 }
3757 {
3758 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3759 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
3760 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
3761 }
3762 } while (0);
3763
3764 #undef FLD
3765 }
3766 NEXT (vpc);
3767
3768 CASE (sem, INSN_LDT_INDIRECT_INDEX) : /* ldt ($abase)[$index*S$scale], $dst */
3769 {
3770 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3771 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3772 #define FLD(f) abuf->fields.fmt_ldt_indirect_index.f
3773 int UNUSED written = 0;
3774 IADDR UNUSED pc = abuf->addr;
3775 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3776
3777 do {
3778 SI tmp_dregno;
3779 SI tmp_temp;
3780 tmp_dregno = FLD (f_srcdst);
3781 tmp_temp = ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
3782 {
3783 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3784 * FLD (i_dst) = opval;
3785 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3786 }
3787 {
3788 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3789 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3790 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3791 }
3792 {
3793 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3794 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
3795 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
3796 }
3797 } while (0);
3798
3799 #undef FLD
3800 }
3801 NEXT (vpc);
3802
3803 CASE (sem, INSN_LDT_DISP) : /* ldt $optdisp, $dst */
3804 {
3805 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3806 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3807 #define FLD(f) abuf->fields.fmt_ldt_disp.f
3808 int UNUSED written = 0;
3809 IADDR UNUSED pc = abuf->addr;
3810 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3811
3812 do {
3813 SI tmp_dregno;
3814 SI tmp_temp;
3815 tmp_dregno = FLD (f_srcdst);
3816 tmp_temp = FLD (f_optdisp);
3817 {
3818 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3819 * FLD (i_dst) = opval;
3820 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3821 }
3822 {
3823 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3824 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3825 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3826 }
3827 {
3828 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3829 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
3830 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
3831 }
3832 } while (0);
3833
3834 #undef FLD
3835 }
3836 NEXT (vpc);
3837
3838 CASE (sem, INSN_LDT_INDIRECT_DISP) : /* ldt $optdisp($abase), $dst */
3839 {
3840 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3841 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3842 #define FLD(f) abuf->fields.fmt_ldt_indirect_disp.f
3843 int UNUSED written = 0;
3844 IADDR UNUSED pc = abuf->addr;
3845 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3846
3847 do {
3848 SI tmp_dregno;
3849 SI tmp_temp;
3850 tmp_dregno = FLD (f_srcdst);
3851 tmp_temp = ADDSI (FLD (f_optdisp), * FLD (i_abase));
3852 {
3853 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3854 * FLD (i_dst) = opval;
3855 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3856 }
3857 {
3858 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3859 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3860 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3861 }
3862 {
3863 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3864 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
3865 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
3866 }
3867 } while (0);
3868
3869 #undef FLD
3870 }
3871 NEXT (vpc);
3872
3873 CASE (sem, INSN_LDT_INDEX_DISP) : /* ldt $optdisp[$index*S$scale], $dst */
3874 {
3875 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3876 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3877 #define FLD(f) abuf->fields.fmt_ldt_index_disp.f
3878 int UNUSED written = 0;
3879 IADDR UNUSED pc = abuf->addr;
3880 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3881
3882 do {
3883 SI tmp_dregno;
3884 SI tmp_temp;
3885 tmp_dregno = FLD (f_srcdst);
3886 tmp_temp = ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
3887 {
3888 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3889 * FLD (i_dst) = opval;
3890 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3891 }
3892 {
3893 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3894 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3895 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3896 }
3897 {
3898 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3899 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
3900 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
3901 }
3902 } while (0);
3903
3904 #undef FLD
3905 }
3906 NEXT (vpc);
3907
3908 CASE (sem, INSN_LDT_INDIRECT_INDEX_DISP) : /* ldt $optdisp($abase)[$index*S$scale], $dst */
3909 {
3910 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3911 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3912 #define FLD(f) abuf->fields.fmt_ldt_indirect_index_disp.f
3913 int UNUSED written = 0;
3914 IADDR UNUSED pc = abuf->addr;
3915 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3916
3917 do {
3918 SI tmp_dregno;
3919 SI tmp_temp;
3920 tmp_dregno = FLD (f_srcdst);
3921 tmp_temp = ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3922 {
3923 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3924 * FLD (i_dst) = opval;
3925 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3926 }
3927 {
3928 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3929 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3930 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3931 }
3932 {
3933 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3934 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
3935 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
3936 }
3937 } while (0);
3938
3939 #undef FLD
3940 }
3941 NEXT (vpc);
3942
3943 CASE (sem, INSN_LDQ_OFFSET) : /* ldq $offset, $dst */
3944 {
3945 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3946 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3947 #define FLD(f) abuf->fields.fmt_ldq_offset.f
3948 int UNUSED written = 0;
3949 IADDR UNUSED pc = abuf->addr;
3950 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3951
3952 do {
3953 SI tmp_dregno;
3954 SI tmp_temp;
3955 tmp_dregno = FLD (f_srcdst);
3956 tmp_temp = FLD (f_offset);
3957 {
3958 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3959 * FLD (i_dst) = opval;
3960 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3961 }
3962 {
3963 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3964 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
3965 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
3966 }
3967 {
3968 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3969 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
3970 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
3971 }
3972 {
3973 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
3974 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
3975 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval);
3976 }
3977 } while (0);
3978
3979 #undef FLD
3980 }
3981 NEXT (vpc);
3982
3983 CASE (sem, INSN_LDQ_INDIRECT_OFFSET) : /* ldq $offset($abase), $dst */
3984 {
3985 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
3986 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3987 #define FLD(f) abuf->fields.fmt_ldq_indirect_offset.f
3988 int UNUSED written = 0;
3989 IADDR UNUSED pc = abuf->addr;
3990 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3991
3992 do {
3993 SI tmp_dregno;
3994 SI tmp_temp;
3995 tmp_dregno = FLD (f_srcdst);
3996 tmp_temp = ADDSI (FLD (f_offset), * FLD (i_abase));
3997 {
3998 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3999 * FLD (i_dst) = opval;
4000 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4001 }
4002 {
4003 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4004 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
4005 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
4006 }
4007 {
4008 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4009 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4010 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
4011 }
4012 {
4013 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4014 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
4015 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval);
4016 }
4017 } while (0);
4018
4019 #undef FLD
4020 }
4021 NEXT (vpc);
4022
4023 CASE (sem, INSN_LDQ_INDIRECT) : /* ldq ($abase), $dst */
4024 {
4025 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4026 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4027 #define FLD(f) abuf->fields.fmt_ldq_indirect.f
4028 int UNUSED written = 0;
4029 IADDR UNUSED pc = abuf->addr;
4030 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4031
4032 do {
4033 SI tmp_dregno;
4034 SI tmp_temp;
4035 tmp_dregno = FLD (f_srcdst);
4036 tmp_temp = * FLD (i_abase);
4037 {
4038 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4039 * FLD (i_dst) = opval;
4040 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4041 }
4042 {
4043 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4044 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
4045 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
4046 }
4047 {
4048 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4049 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4050 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
4051 }
4052 {
4053 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4054 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
4055 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval);
4056 }
4057 } while (0);
4058
4059 #undef FLD
4060 }
4061 NEXT (vpc);
4062
4063 CASE (sem, INSN_LDQ_INDIRECT_INDEX) : /* ldq ($abase)[$index*S$scale], $dst */
4064 {
4065 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4066 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4067 #define FLD(f) abuf->fields.fmt_ldq_indirect_index.f
4068 int UNUSED written = 0;
4069 IADDR UNUSED pc = abuf->addr;
4070 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4071
4072 do {
4073 SI tmp_dregno;
4074 SI tmp_temp;
4075 tmp_dregno = FLD (f_srcdst);
4076 tmp_temp = ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
4077 {
4078 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4079 * FLD (i_dst) = opval;
4080 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4081 }
4082 {
4083 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4084 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
4085 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
4086 }
4087 {
4088 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4089 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4090 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
4091 }
4092 {
4093 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4094 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
4095 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval);
4096 }
4097 } while (0);
4098
4099 #undef FLD
4100 }
4101 NEXT (vpc);
4102
4103 CASE (sem, INSN_LDQ_DISP) : /* ldq $optdisp, $dst */
4104 {
4105 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4106 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4107 #define FLD(f) abuf->fields.fmt_ldq_disp.f
4108 int UNUSED written = 0;
4109 IADDR UNUSED pc = abuf->addr;
4110 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4111
4112 do {
4113 SI tmp_dregno;
4114 SI tmp_temp;
4115 tmp_dregno = FLD (f_srcdst);
4116 tmp_temp = FLD (f_optdisp);
4117 {
4118 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4119 * FLD (i_dst) = opval;
4120 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4121 }
4122 {
4123 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4124 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
4125 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
4126 }
4127 {
4128 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4129 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4130 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
4131 }
4132 {
4133 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4134 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
4135 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval);
4136 }
4137 } while (0);
4138
4139 #undef FLD
4140 }
4141 NEXT (vpc);
4142
4143 CASE (sem, INSN_LDQ_INDIRECT_DISP) : /* ldq $optdisp($abase), $dst */
4144 {
4145 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4146 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4147 #define FLD(f) abuf->fields.fmt_ldq_indirect_disp.f
4148 int UNUSED written = 0;
4149 IADDR UNUSED pc = abuf->addr;
4150 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4151
4152 do {
4153 SI tmp_dregno;
4154 SI tmp_temp;
4155 tmp_dregno = FLD (f_srcdst);
4156 tmp_temp = ADDSI (FLD (f_optdisp), * FLD (i_abase));
4157 {
4158 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4159 * FLD (i_dst) = opval;
4160 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4161 }
4162 {
4163 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4164 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
4165 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
4166 }
4167 {
4168 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4169 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4170 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
4171 }
4172 {
4173 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4174 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
4175 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval);
4176 }
4177 } while (0);
4178
4179 #undef FLD
4180 }
4181 NEXT (vpc);
4182
4183 CASE (sem, INSN_LDQ_INDEX_DISP) : /* ldq $optdisp[$index*S$scale], $dst */
4184 {
4185 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4186 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4187 #define FLD(f) abuf->fields.fmt_ldq_index_disp.f
4188 int UNUSED written = 0;
4189 IADDR UNUSED pc = abuf->addr;
4190 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4191
4192 do {
4193 SI tmp_dregno;
4194 SI tmp_temp;
4195 tmp_dregno = FLD (f_srcdst);
4196 tmp_temp = ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
4197 {
4198 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4199 * FLD (i_dst) = opval;
4200 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4201 }
4202 {
4203 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4204 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
4205 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
4206 }
4207 {
4208 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4209 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4210 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
4211 }
4212 {
4213 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4214 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
4215 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval);
4216 }
4217 } while (0);
4218
4219 #undef FLD
4220 }
4221 NEXT (vpc);
4222
4223 CASE (sem, INSN_LDQ_INDIRECT_INDEX_DISP) : /* ldq $optdisp($abase)[$index*S$scale], $dst */
4224 {
4225 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4226 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4227 #define FLD(f) abuf->fields.fmt_ldq_indirect_index_disp.f
4228 int UNUSED written = 0;
4229 IADDR UNUSED pc = abuf->addr;
4230 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4231
4232 do {
4233 SI tmp_dregno;
4234 SI tmp_temp;
4235 tmp_dregno = FLD (f_srcdst);
4236 tmp_temp = ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
4237 {
4238 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4239 * FLD (i_dst) = opval;
4240 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4241 }
4242 {
4243 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4244 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
4245 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval);
4246 }
4247 {
4248 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4249 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4250 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval);
4251 }
4252 {
4253 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4254 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
4255 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval);
4256 }
4257 } while (0);
4258
4259 #undef FLD
4260 }
4261 NEXT (vpc);
4262
4263 CASE (sem, INSN_ST_OFFSET) : /* st $st_src, $offset */
4264 {
4265 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4266 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4267 #define FLD(f) abuf->fields.fmt_st_offset.f
4268 int UNUSED written = 0;
4269 IADDR UNUSED pc = abuf->addr;
4270 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4271
4272 {
4273 SI opval = * FLD (i_st_src);
4274 SETMEMSI (current_cpu, pc, FLD (f_offset), opval);
4275 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4276 }
4277
4278 #undef FLD
4279 }
4280 NEXT (vpc);
4281
4282 CASE (sem, INSN_ST_INDIRECT_OFFSET) : /* st $st_src, $offset($abase) */
4283 {
4284 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4285 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4286 #define FLD(f) abuf->fields.fmt_st_indirect_offset.f
4287 int UNUSED written = 0;
4288 IADDR UNUSED pc = abuf->addr;
4289 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4290
4291 {
4292 SI opval = * FLD (i_st_src);
4293 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)), opval);
4294 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4295 }
4296
4297 #undef FLD
4298 }
4299 NEXT (vpc);
4300
4301 CASE (sem, INSN_ST_INDIRECT) : /* st $st_src, ($abase) */
4302 {
4303 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4305 #define FLD(f) abuf->fields.fmt_st_indirect.f
4306 int UNUSED written = 0;
4307 IADDR UNUSED pc = abuf->addr;
4308 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4309
4310 {
4311 SI opval = * FLD (i_st_src);
4312 SETMEMSI (current_cpu, pc, * FLD (i_abase), opval);
4313 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4314 }
4315
4316 #undef FLD
4317 }
4318 NEXT (vpc);
4319
4320 CASE (sem, INSN_ST_INDIRECT_INDEX) : /* st $st_src, ($abase)[$index*S$scale] */
4321 {
4322 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4323 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4324 #define FLD(f) abuf->fields.fmt_st_indirect_index.f
4325 int UNUSED written = 0;
4326 IADDR UNUSED pc = abuf->addr;
4327 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4328
4329 {
4330 SI opval = * FLD (i_st_src);
4331 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
4332 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4333 }
4334
4335 #undef FLD
4336 }
4337 NEXT (vpc);
4338
4339 CASE (sem, INSN_ST_DISP) : /* st $st_src, $optdisp */
4340 {
4341 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4342 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4343 #define FLD(f) abuf->fields.fmt_st_disp.f
4344 int UNUSED written = 0;
4345 IADDR UNUSED pc = abuf->addr;
4346 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4347
4348 {
4349 SI opval = * FLD (i_st_src);
4350 SETMEMSI (current_cpu, pc, FLD (f_optdisp), opval);
4351 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4352 }
4353
4354 #undef FLD
4355 }
4356 NEXT (vpc);
4357
4358 CASE (sem, INSN_ST_INDIRECT_DISP) : /* st $st_src, $optdisp($abase) */
4359 {
4360 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4361 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4362 #define FLD(f) abuf->fields.fmt_st_indirect_disp.f
4363 int UNUSED written = 0;
4364 IADDR UNUSED pc = abuf->addr;
4365 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4366
4367 {
4368 SI opval = * FLD (i_st_src);
4369 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)), opval);
4370 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4371 }
4372
4373 #undef FLD
4374 }
4375 NEXT (vpc);
4376
4377 CASE (sem, INSN_ST_INDEX_DISP) : /* st $st_src, $optdisp[$index*S$scale */
4378 {
4379 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4380 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4381 #define FLD(f) abuf->fields.fmt_st_index_disp.f
4382 int UNUSED written = 0;
4383 IADDR UNUSED pc = abuf->addr;
4384 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4385
4386 {
4387 SI opval = * FLD (i_st_src);
4388 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
4389 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4390 }
4391
4392 #undef FLD
4393 }
4394 NEXT (vpc);
4395
4396 CASE (sem, INSN_ST_INDIRECT_INDEX_DISP) : /* st $st_src, $optdisp($abase)[$index*S$scale] */
4397 {
4398 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4399 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4400 #define FLD(f) abuf->fields.fmt_st_indirect_index_disp.f
4401 int UNUSED written = 0;
4402 IADDR UNUSED pc = abuf->addr;
4403 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4404
4405 {
4406 SI opval = * FLD (i_st_src);
4407 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), opval);
4408 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4409 }
4410
4411 #undef FLD
4412 }
4413 NEXT (vpc);
4414
4415 CASE (sem, INSN_STOB_OFFSET) : /* stob $st_src, $offset */
4416 {
4417 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4418 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4419 #define FLD(f) abuf->fields.fmt_stob_offset.f
4420 int UNUSED written = 0;
4421 IADDR UNUSED pc = abuf->addr;
4422 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4423
4424 {
4425 QI opval = * FLD (i_st_src);
4426 SETMEMQI (current_cpu, pc, FLD (f_offset), opval);
4427 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4428 }
4429
4430 #undef FLD
4431 }
4432 NEXT (vpc);
4433
4434 CASE (sem, INSN_STOB_INDIRECT_OFFSET) : /* stob $st_src, $offset($abase) */
4435 {
4436 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4437 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4438 #define FLD(f) abuf->fields.fmt_stob_indirect_offset.f
4439 int UNUSED written = 0;
4440 IADDR UNUSED pc = abuf->addr;
4441 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4442
4443 {
4444 QI opval = * FLD (i_st_src);
4445 SETMEMQI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)), opval);
4446 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4447 }
4448
4449 #undef FLD
4450 }
4451 NEXT (vpc);
4452
4453 CASE (sem, INSN_STOB_INDIRECT) : /* stob $st_src, ($abase) */
4454 {
4455 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4456 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4457 #define FLD(f) abuf->fields.fmt_stob_indirect.f
4458 int UNUSED written = 0;
4459 IADDR UNUSED pc = abuf->addr;
4460 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4461
4462 {
4463 QI opval = * FLD (i_st_src);
4464 SETMEMQI (current_cpu, pc, * FLD (i_abase), opval);
4465 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4466 }
4467
4468 #undef FLD
4469 }
4470 NEXT (vpc);
4471
4472 CASE (sem, INSN_STOB_INDIRECT_INDEX) : /* stob $st_src, ($abase)[$index*S$scale] */
4473 {
4474 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4475 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4476 #define FLD(f) abuf->fields.fmt_stob_indirect_index.f
4477 int UNUSED written = 0;
4478 IADDR UNUSED pc = abuf->addr;
4479 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4480
4481 {
4482 QI opval = * FLD (i_st_src);
4483 SETMEMQI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
4484 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4485 }
4486
4487 #undef FLD
4488 }
4489 NEXT (vpc);
4490
4491 CASE (sem, INSN_STOB_DISP) : /* stob $st_src, $optdisp */
4492 {
4493 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4494 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4495 #define FLD(f) abuf->fields.fmt_stob_disp.f
4496 int UNUSED written = 0;
4497 IADDR UNUSED pc = abuf->addr;
4498 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4499
4500 {
4501 QI opval = * FLD (i_st_src);
4502 SETMEMQI (current_cpu, pc, FLD (f_optdisp), opval);
4503 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4504 }
4505
4506 #undef FLD
4507 }
4508 NEXT (vpc);
4509
4510 CASE (sem, INSN_STOB_INDIRECT_DISP) : /* stob $st_src, $optdisp($abase) */
4511 {
4512 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4513 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4514 #define FLD(f) abuf->fields.fmt_stob_indirect_disp.f
4515 int UNUSED written = 0;
4516 IADDR UNUSED pc = abuf->addr;
4517 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4518
4519 {
4520 QI opval = * FLD (i_st_src);
4521 SETMEMQI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)), opval);
4522 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4523 }
4524
4525 #undef FLD
4526 }
4527 NEXT (vpc);
4528
4529 CASE (sem, INSN_STOB_INDEX_DISP) : /* stob $st_src, $optdisp[$index*S$scale */
4530 {
4531 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4532 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4533 #define FLD(f) abuf->fields.fmt_stob_index_disp.f
4534 int UNUSED written = 0;
4535 IADDR UNUSED pc = abuf->addr;
4536 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4537
4538 {
4539 QI opval = * FLD (i_st_src);
4540 SETMEMQI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
4541 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4542 }
4543
4544 #undef FLD
4545 }
4546 NEXT (vpc);
4547
4548 CASE (sem, INSN_STOB_INDIRECT_INDEX_DISP) : /* stob $st_src, $optdisp($abase)[$index*S$scale] */
4549 {
4550 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4551 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4552 #define FLD(f) abuf->fields.fmt_stob_indirect_index_disp.f
4553 int UNUSED written = 0;
4554 IADDR UNUSED pc = abuf->addr;
4555 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4556
4557 {
4558 QI opval = * FLD (i_st_src);
4559 SETMEMQI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), opval);
4560 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4561 }
4562
4563 #undef FLD
4564 }
4565 NEXT (vpc);
4566
4567 CASE (sem, INSN_STOS_OFFSET) : /* stos $st_src, $offset */
4568 {
4569 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4570 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4571 #define FLD(f) abuf->fields.fmt_stos_offset.f
4572 int UNUSED written = 0;
4573 IADDR UNUSED pc = abuf->addr;
4574 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4575
4576 {
4577 HI opval = * FLD (i_st_src);
4578 SETMEMHI (current_cpu, pc, FLD (f_offset), opval);
4579 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4580 }
4581
4582 #undef FLD
4583 }
4584 NEXT (vpc);
4585
4586 CASE (sem, INSN_STOS_INDIRECT_OFFSET) : /* stos $st_src, $offset($abase) */
4587 {
4588 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4589 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4590 #define FLD(f) abuf->fields.fmt_stos_indirect_offset.f
4591 int UNUSED written = 0;
4592 IADDR UNUSED pc = abuf->addr;
4593 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4594
4595 {
4596 HI opval = * FLD (i_st_src);
4597 SETMEMHI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)), opval);
4598 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4599 }
4600
4601 #undef FLD
4602 }
4603 NEXT (vpc);
4604
4605 CASE (sem, INSN_STOS_INDIRECT) : /* stos $st_src, ($abase) */
4606 {
4607 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4608 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4609 #define FLD(f) abuf->fields.fmt_stos_indirect.f
4610 int UNUSED written = 0;
4611 IADDR UNUSED pc = abuf->addr;
4612 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4613
4614 {
4615 HI opval = * FLD (i_st_src);
4616 SETMEMHI (current_cpu, pc, * FLD (i_abase), opval);
4617 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4618 }
4619
4620 #undef FLD
4621 }
4622 NEXT (vpc);
4623
4624 CASE (sem, INSN_STOS_INDIRECT_INDEX) : /* stos $st_src, ($abase)[$index*S$scale] */
4625 {
4626 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4627 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4628 #define FLD(f) abuf->fields.fmt_stos_indirect_index.f
4629 int UNUSED written = 0;
4630 IADDR UNUSED pc = abuf->addr;
4631 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4632
4633 {
4634 HI opval = * FLD (i_st_src);
4635 SETMEMHI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
4636 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4637 }
4638
4639 #undef FLD
4640 }
4641 NEXT (vpc);
4642
4643 CASE (sem, INSN_STOS_DISP) : /* stos $st_src, $optdisp */
4644 {
4645 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4646 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4647 #define FLD(f) abuf->fields.fmt_stos_disp.f
4648 int UNUSED written = 0;
4649 IADDR UNUSED pc = abuf->addr;
4650 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4651
4652 {
4653 HI opval = * FLD (i_st_src);
4654 SETMEMHI (current_cpu, pc, FLD (f_optdisp), opval);
4655 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4656 }
4657
4658 #undef FLD
4659 }
4660 NEXT (vpc);
4661
4662 CASE (sem, INSN_STOS_INDIRECT_DISP) : /* stos $st_src, $optdisp($abase) */
4663 {
4664 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4665 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4666 #define FLD(f) abuf->fields.fmt_stos_indirect_disp.f
4667 int UNUSED written = 0;
4668 IADDR UNUSED pc = abuf->addr;
4669 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4670
4671 {
4672 HI opval = * FLD (i_st_src);
4673 SETMEMHI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)), opval);
4674 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4675 }
4676
4677 #undef FLD
4678 }
4679 NEXT (vpc);
4680
4681 CASE (sem, INSN_STOS_INDEX_DISP) : /* stos $st_src, $optdisp[$index*S$scale */
4682 {
4683 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4684 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4685 #define FLD(f) abuf->fields.fmt_stos_index_disp.f
4686 int UNUSED written = 0;
4687 IADDR UNUSED pc = abuf->addr;
4688 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4689
4690 {
4691 HI opval = * FLD (i_st_src);
4692 SETMEMHI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
4693 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4694 }
4695
4696 #undef FLD
4697 }
4698 NEXT (vpc);
4699
4700 CASE (sem, INSN_STOS_INDIRECT_INDEX_DISP) : /* stos $st_src, $optdisp($abase)[$index*S$scale] */
4701 {
4702 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4703 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4704 #define FLD(f) abuf->fields.fmt_stos_indirect_index_disp.f
4705 int UNUSED written = 0;
4706 IADDR UNUSED pc = abuf->addr;
4707 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4708
4709 {
4710 HI opval = * FLD (i_st_src);
4711 SETMEMHI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), opval);
4712 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4713 }
4714
4715 #undef FLD
4716 }
4717 NEXT (vpc);
4718
4719 CASE (sem, INSN_STL_OFFSET) : /* stl $st_src, $offset */
4720 {
4721 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4722 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4723 #define FLD(f) abuf->fields.fmt_stl_offset.f
4724 int UNUSED written = 0;
4725 IADDR UNUSED pc = abuf->addr;
4726 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4727
4728 do {
4729 SI tmp_sregno;
4730 tmp_sregno = FLD (f_srcdst);
4731 {
4732 SI opval = * FLD (i_st_src);
4733 SETMEMSI (current_cpu, pc, FLD (f_offset), opval);
4734 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4735 }
4736 {
4737 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
4738 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), 4), opval);
4739 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4740 }
4741 } while (0);
4742
4743 #undef FLD
4744 }
4745 NEXT (vpc);
4746
4747 CASE (sem, INSN_STL_INDIRECT_OFFSET) : /* stl $st_src, $offset($abase) */
4748 {
4749 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4750 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4751 #define FLD(f) abuf->fields.fmt_stl_indirect_offset.f
4752 int UNUSED written = 0;
4753 IADDR UNUSED pc = abuf->addr;
4754 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4755
4756 do {
4757 SI tmp_sregno;
4758 tmp_sregno = FLD (f_srcdst);
4759 {
4760 SI opval = * FLD (i_st_src);
4761 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)), opval);
4762 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4763 }
4764 {
4765 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
4766 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_offset), * FLD (i_abase)), 4), opval);
4767 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4768 }
4769 } while (0);
4770
4771 #undef FLD
4772 }
4773 NEXT (vpc);
4774
4775 CASE (sem, INSN_STL_INDIRECT) : /* stl $st_src, ($abase) */
4776 {
4777 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4779 #define FLD(f) abuf->fields.fmt_stl_indirect.f
4780 int UNUSED written = 0;
4781 IADDR UNUSED pc = abuf->addr;
4782 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4783
4784 do {
4785 SI tmp_sregno;
4786 tmp_sregno = FLD (f_srcdst);
4787 {
4788 SI opval = * FLD (i_st_src);
4789 SETMEMSI (current_cpu, pc, * FLD (i_abase), opval);
4790 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4791 }
4792 {
4793 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
4794 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), 4), opval);
4795 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4796 }
4797 } while (0);
4798
4799 #undef FLD
4800 }
4801 NEXT (vpc);
4802
4803 CASE (sem, INSN_STL_INDIRECT_INDEX) : /* stl $st_src, ($abase)[$index*S$scale] */
4804 {
4805 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4806 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4807 #define FLD(f) abuf->fields.fmt_stl_indirect_index.f
4808 int UNUSED written = 0;
4809 IADDR UNUSED pc = abuf->addr;
4810 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4811
4812 do {
4813 SI tmp_sregno;
4814 tmp_sregno = FLD (f_srcdst);
4815 {
4816 SI opval = * FLD (i_st_src);
4817 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
4818 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4819 }
4820 {
4821 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
4822 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 4), opval);
4823 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4824 }
4825 } while (0);
4826
4827 #undef FLD
4828 }
4829 NEXT (vpc);
4830
4831 CASE (sem, INSN_STL_DISP) : /* stl $st_src, $optdisp */
4832 {
4833 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4834 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4835 #define FLD(f) abuf->fields.fmt_stl_disp.f
4836 int UNUSED written = 0;
4837 IADDR UNUSED pc = abuf->addr;
4838 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4839
4840 do {
4841 SI tmp_sregno;
4842 tmp_sregno = FLD (f_srcdst);
4843 {
4844 SI opval = * FLD (i_st_src);
4845 SETMEMSI (current_cpu, pc, FLD (f_optdisp), opval);
4846 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4847 }
4848 {
4849 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
4850 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), 4), opval);
4851 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4852 }
4853 } while (0);
4854
4855 #undef FLD
4856 }
4857 NEXT (vpc);
4858
4859 CASE (sem, INSN_STL_INDIRECT_DISP) : /* stl $st_src, $optdisp($abase) */
4860 {
4861 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4862 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4863 #define FLD(f) abuf->fields.fmt_stl_indirect_disp.f
4864 int UNUSED written = 0;
4865 IADDR UNUSED pc = abuf->addr;
4866 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4867
4868 do {
4869 SI tmp_sregno;
4870 tmp_sregno = FLD (f_srcdst);
4871 {
4872 SI opval = * FLD (i_st_src);
4873 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)), opval);
4874 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4875 }
4876 {
4877 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
4878 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), * FLD (i_abase)), 4), opval);
4879 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4880 }
4881 } while (0);
4882
4883 #undef FLD
4884 }
4885 NEXT (vpc);
4886
4887 CASE (sem, INSN_STL_INDEX_DISP) : /* stl $st_src, $optdisp[$index*S$scale */
4888 {
4889 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4890 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4891 #define FLD(f) abuf->fields.fmt_stl_index_disp.f
4892 int UNUSED written = 0;
4893 IADDR UNUSED pc = abuf->addr;
4894 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4895
4896 do {
4897 SI tmp_sregno;
4898 tmp_sregno = FLD (f_srcdst);
4899 {
4900 SI opval = * FLD (i_st_src);
4901 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
4902 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4903 }
4904 {
4905 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
4906 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 4), opval);
4907 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4908 }
4909 } while (0);
4910
4911 #undef FLD
4912 }
4913 NEXT (vpc);
4914
4915 CASE (sem, INSN_STL_INDIRECT_INDEX_DISP) : /* stl $st_src, $optdisp($abase)[$index*S$scale] */
4916 {
4917 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4918 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4919 #define FLD(f) abuf->fields.fmt_stl_indirect_index_disp.f
4920 int UNUSED written = 0;
4921 IADDR UNUSED pc = abuf->addr;
4922 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4923
4924 do {
4925 SI tmp_sregno;
4926 tmp_sregno = FLD (f_srcdst);
4927 {
4928 SI opval = * FLD (i_st_src);
4929 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), opval);
4930 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4931 }
4932 {
4933 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
4934 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), 4), opval);
4935 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4936 }
4937 } while (0);
4938
4939 #undef FLD
4940 }
4941 NEXT (vpc);
4942
4943 CASE (sem, INSN_STT_OFFSET) : /* stt $st_src, $offset */
4944 {
4945 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4946 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4947 #define FLD(f) abuf->fields.fmt_stt_offset.f
4948 int UNUSED written = 0;
4949 IADDR UNUSED pc = abuf->addr;
4950 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4951
4952 do {
4953 SI tmp_sregno;
4954 tmp_sregno = FLD (f_srcdst);
4955 {
4956 SI opval = * FLD (i_st_src);
4957 SETMEMSI (current_cpu, pc, FLD (f_offset), opval);
4958 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4959 }
4960 {
4961 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
4962 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), 4), opval);
4963 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4964 }
4965 {
4966 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
4967 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), 8), opval);
4968 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4969 }
4970 } while (0);
4971
4972 #undef FLD
4973 }
4974 NEXT (vpc);
4975
4976 CASE (sem, INSN_STT_INDIRECT_OFFSET) : /* stt $st_src, $offset($abase) */
4977 {
4978 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
4979 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4980 #define FLD(f) abuf->fields.fmt_stt_indirect_offset.f
4981 int UNUSED written = 0;
4982 IADDR UNUSED pc = abuf->addr;
4983 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4984
4985 do {
4986 SI tmp_sregno;
4987 tmp_sregno = FLD (f_srcdst);
4988 {
4989 SI opval = * FLD (i_st_src);
4990 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)), opval);
4991 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4992 }
4993 {
4994 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
4995 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_offset), * FLD (i_abase)), 4), opval);
4996 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4997 }
4998 {
4999 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5000 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_offset), * FLD (i_abase)), 8), opval);
5001 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5002 }
5003 } while (0);
5004
5005 #undef FLD
5006 }
5007 NEXT (vpc);
5008
5009 CASE (sem, INSN_STT_INDIRECT) : /* stt $st_src, ($abase) */
5010 {
5011 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5012 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5013 #define FLD(f) abuf->fields.fmt_stt_indirect.f
5014 int UNUSED written = 0;
5015 IADDR UNUSED pc = abuf->addr;
5016 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5017
5018 do {
5019 SI tmp_sregno;
5020 tmp_sregno = FLD (f_srcdst);
5021 {
5022 SI opval = * FLD (i_st_src);
5023 SETMEMSI (current_cpu, pc, * FLD (i_abase), opval);
5024 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5025 }
5026 {
5027 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5028 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), 4), opval);
5029 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5030 }
5031 {
5032 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5033 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), 8), opval);
5034 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5035 }
5036 } while (0);
5037
5038 #undef FLD
5039 }
5040 NEXT (vpc);
5041
5042 CASE (sem, INSN_STT_INDIRECT_INDEX) : /* stt $st_src, ($abase)[$index*S$scale] */
5043 {
5044 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5045 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5046 #define FLD(f) abuf->fields.fmt_stt_indirect_index.f
5047 int UNUSED written = 0;
5048 IADDR UNUSED pc = abuf->addr;
5049 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5050
5051 do {
5052 SI tmp_sregno;
5053 tmp_sregno = FLD (f_srcdst);
5054 {
5055 SI opval = * FLD (i_st_src);
5056 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
5057 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5058 }
5059 {
5060 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5061 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 4), opval);
5062 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5063 }
5064 {
5065 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5066 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 8), opval);
5067 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5068 }
5069 } while (0);
5070
5071 #undef FLD
5072 }
5073 NEXT (vpc);
5074
5075 CASE (sem, INSN_STT_DISP) : /* stt $st_src, $optdisp */
5076 {
5077 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5078 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5079 #define FLD(f) abuf->fields.fmt_stt_disp.f
5080 int UNUSED written = 0;
5081 IADDR UNUSED pc = abuf->addr;
5082 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5083
5084 do {
5085 SI tmp_sregno;
5086 tmp_sregno = FLD (f_srcdst);
5087 {
5088 SI opval = * FLD (i_st_src);
5089 SETMEMSI (current_cpu, pc, FLD (f_optdisp), opval);
5090 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5091 }
5092 {
5093 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5094 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), 4), opval);
5095 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5096 }
5097 {
5098 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5099 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), 8), opval);
5100 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5101 }
5102 } while (0);
5103
5104 #undef FLD
5105 }
5106 NEXT (vpc);
5107
5108 CASE (sem, INSN_STT_INDIRECT_DISP) : /* stt $st_src, $optdisp($abase) */
5109 {
5110 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5111 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5112 #define FLD(f) abuf->fields.fmt_stt_indirect_disp.f
5113 int UNUSED written = 0;
5114 IADDR UNUSED pc = abuf->addr;
5115 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5116
5117 do {
5118 SI tmp_sregno;
5119 tmp_sregno = FLD (f_srcdst);
5120 {
5121 SI opval = * FLD (i_st_src);
5122 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)), opval);
5123 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5124 }
5125 {
5126 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5127 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), * FLD (i_abase)), 4), opval);
5128 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5129 }
5130 {
5131 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5132 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), * FLD (i_abase)), 8), opval);
5133 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5134 }
5135 } while (0);
5136
5137 #undef FLD
5138 }
5139 NEXT (vpc);
5140
5141 CASE (sem, INSN_STT_INDEX_DISP) : /* stt $st_src, $optdisp[$index*S$scale */
5142 {
5143 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5144 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5145 #define FLD(f) abuf->fields.fmt_stt_index_disp.f
5146 int UNUSED written = 0;
5147 IADDR UNUSED pc = abuf->addr;
5148 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5149
5150 do {
5151 SI tmp_sregno;
5152 tmp_sregno = FLD (f_srcdst);
5153 {
5154 SI opval = * FLD (i_st_src);
5155 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
5156 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5157 }
5158 {
5159 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5160 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 4), opval);
5161 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5162 }
5163 {
5164 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5165 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 8), opval);
5166 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5167 }
5168 } while (0);
5169
5170 #undef FLD
5171 }
5172 NEXT (vpc);
5173
5174 CASE (sem, INSN_STT_INDIRECT_INDEX_DISP) : /* stt $st_src, $optdisp($abase)[$index*S$scale] */
5175 {
5176 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5177 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5178 #define FLD(f) abuf->fields.fmt_stt_indirect_index_disp.f
5179 int UNUSED written = 0;
5180 IADDR UNUSED pc = abuf->addr;
5181 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5182
5183 do {
5184 SI tmp_sregno;
5185 tmp_sregno = FLD (f_srcdst);
5186 {
5187 SI opval = * FLD (i_st_src);
5188 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), opval);
5189 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5190 }
5191 {
5192 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5193 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), 4), opval);
5194 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5195 }
5196 {
5197 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5198 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), 8), opval);
5199 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5200 }
5201 } while (0);
5202
5203 #undef FLD
5204 }
5205 NEXT (vpc);
5206
5207 CASE (sem, INSN_STQ_OFFSET) : /* stq $st_src, $offset */
5208 {
5209 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5210 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5211 #define FLD(f) abuf->fields.fmt_stq_offset.f
5212 int UNUSED written = 0;
5213 IADDR UNUSED pc = abuf->addr;
5214 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5215
5216 do {
5217 SI tmp_sregno;
5218 tmp_sregno = FLD (f_srcdst);
5219 {
5220 SI opval = * FLD (i_st_src);
5221 SETMEMSI (current_cpu, pc, FLD (f_offset), opval);
5222 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5223 }
5224 {
5225 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5226 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), 4), opval);
5227 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5228 }
5229 {
5230 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5231 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), 8), opval);
5232 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5233 }
5234 {
5235 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5236 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), 12), opval);
5237 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5238 }
5239 } while (0);
5240
5241 #undef FLD
5242 }
5243 NEXT (vpc);
5244
5245 CASE (sem, INSN_STQ_INDIRECT_OFFSET) : /* stq $st_src, $offset($abase) */
5246 {
5247 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5249 #define FLD(f) abuf->fields.fmt_stq_indirect_offset.f
5250 int UNUSED written = 0;
5251 IADDR UNUSED pc = abuf->addr;
5252 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5253
5254 do {
5255 SI tmp_sregno;
5256 tmp_sregno = FLD (f_srcdst);
5257 {
5258 SI opval = * FLD (i_st_src);
5259 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)), opval);
5260 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5261 }
5262 {
5263 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5264 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_offset), * FLD (i_abase)), 4), opval);
5265 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5266 }
5267 {
5268 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5269 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_offset), * FLD (i_abase)), 8), opval);
5270 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5271 }
5272 {
5273 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5274 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_offset), * FLD (i_abase)), 12), opval);
5275 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5276 }
5277 } while (0);
5278
5279 #undef FLD
5280 }
5281 NEXT (vpc);
5282
5283 CASE (sem, INSN_STQ_INDIRECT) : /* stq $st_src, ($abase) */
5284 {
5285 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5286 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5287 #define FLD(f) abuf->fields.fmt_stq_indirect.f
5288 int UNUSED written = 0;
5289 IADDR UNUSED pc = abuf->addr;
5290 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5291
5292 do {
5293 SI tmp_sregno;
5294 tmp_sregno = FLD (f_srcdst);
5295 {
5296 SI opval = * FLD (i_st_src);
5297 SETMEMSI (current_cpu, pc, * FLD (i_abase), opval);
5298 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5299 }
5300 {
5301 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5302 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), 4), opval);
5303 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5304 }
5305 {
5306 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5307 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), 8), opval);
5308 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5309 }
5310 {
5311 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5312 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), 12), opval);
5313 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5314 }
5315 } while (0);
5316
5317 #undef FLD
5318 }
5319 NEXT (vpc);
5320
5321 CASE (sem, INSN_STQ_INDIRECT_INDEX) : /* stq $st_src, ($abase)[$index*S$scale] */
5322 {
5323 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5324 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5325 #define FLD(f) abuf->fields.fmt_stq_indirect_index.f
5326 int UNUSED written = 0;
5327 IADDR UNUSED pc = abuf->addr;
5328 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5329
5330 do {
5331 SI tmp_sregno;
5332 tmp_sregno = FLD (f_srcdst);
5333 {
5334 SI opval = * FLD (i_st_src);
5335 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
5336 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5337 }
5338 {
5339 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5340 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 4), opval);
5341 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5342 }
5343 {
5344 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5345 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 8), opval);
5346 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5347 }
5348 {
5349 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5350 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 12), opval);
5351 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5352 }
5353 } while (0);
5354
5355 #undef FLD
5356 }
5357 NEXT (vpc);
5358
5359 CASE (sem, INSN_STQ_DISP) : /* stq $st_src, $optdisp */
5360 {
5361 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5362 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5363 #define FLD(f) abuf->fields.fmt_stq_disp.f
5364 int UNUSED written = 0;
5365 IADDR UNUSED pc = abuf->addr;
5366 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5367
5368 do {
5369 SI tmp_sregno;
5370 tmp_sregno = FLD (f_srcdst);
5371 {
5372 SI opval = * FLD (i_st_src);
5373 SETMEMSI (current_cpu, pc, FLD (f_optdisp), opval);
5374 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5375 }
5376 {
5377 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5378 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), 4), opval);
5379 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5380 }
5381 {
5382 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5383 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), 8), opval);
5384 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5385 }
5386 {
5387 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5388 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), 12), opval);
5389 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5390 }
5391 } while (0);
5392
5393 #undef FLD
5394 }
5395 NEXT (vpc);
5396
5397 CASE (sem, INSN_STQ_INDIRECT_DISP) : /* stq $st_src, $optdisp($abase) */
5398 {
5399 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5400 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5401 #define FLD(f) abuf->fields.fmt_stq_indirect_disp.f
5402 int UNUSED written = 0;
5403 IADDR UNUSED pc = abuf->addr;
5404 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5405
5406 do {
5407 SI tmp_sregno;
5408 tmp_sregno = FLD (f_srcdst);
5409 {
5410 SI opval = * FLD (i_st_src);
5411 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)), opval);
5412 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5413 }
5414 {
5415 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5416 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), * FLD (i_abase)), 4), opval);
5417 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5418 }
5419 {
5420 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5421 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), * FLD (i_abase)), 8), opval);
5422 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5423 }
5424 {
5425 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5426 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), * FLD (i_abase)), 12), opval);
5427 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5428 }
5429 } while (0);
5430
5431 #undef FLD
5432 }
5433 NEXT (vpc);
5434
5435 CASE (sem, INSN_STQ_INDEX_DISP) : /* stq $st_src, $optdisp[$index*S$scale */
5436 {
5437 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5438 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5439 #define FLD(f) abuf->fields.fmt_stq_index_disp.f
5440 int UNUSED written = 0;
5441 IADDR UNUSED pc = abuf->addr;
5442 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5443
5444 do {
5445 SI tmp_sregno;
5446 tmp_sregno = FLD (f_srcdst);
5447 {
5448 SI opval = * FLD (i_st_src);
5449 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
5450 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5451 }
5452 {
5453 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5454 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 4), opval);
5455 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5456 }
5457 {
5458 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5459 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 8), opval);
5460 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5461 }
5462 {
5463 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5464 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 12), opval);
5465 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5466 }
5467 } while (0);
5468
5469 #undef FLD
5470 }
5471 NEXT (vpc);
5472
5473 CASE (sem, INSN_STQ_INDIRECT_INDEX_DISP) : /* stq $st_src, $optdisp($abase)[$index*S$scale] */
5474 {
5475 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5476 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5477 #define FLD(f) abuf->fields.fmt_stq_indirect_index_disp.f
5478 int UNUSED written = 0;
5479 IADDR UNUSED pc = abuf->addr;
5480 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5481
5482 do {
5483 SI tmp_sregno;
5484 tmp_sregno = FLD (f_srcdst);
5485 {
5486 SI opval = * FLD (i_st_src);
5487 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), opval);
5488 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5489 }
5490 {
5491 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5492 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), 4), opval);
5493 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5494 }
5495 {
5496 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5497 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), 8), opval);
5498 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5499 }
5500 {
5501 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5502 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), 12), opval);
5503 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5504 }
5505 } while (0);
5506
5507 #undef FLD
5508 }
5509 NEXT (vpc);
5510
5511 CASE (sem, INSN_CMPOBE_REG) : /* cmpobe $br_src1, $br_src2, $br_disp */
5512 {
5513 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5514 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5515 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5516 int UNUSED written = 0;
5517 IADDR UNUSED pc = abuf->addr;
5518 SEM_BRANCH_INIT
5519 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5520
5521 if (EQSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
5522 {
5523 USI opval = FLD (i_br_disp);
5524 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5525 written |= (1 << 3);
5526 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5527 }
5528 }
5529
5530 abuf->written = written;
5531 SEM_BRANCH_FINI (vpc);
5532 #undef FLD
5533 }
5534 NEXT (vpc);
5535
5536 CASE (sem, INSN_CMPOBE_LIT) : /* cmpobe $br_lit1, $br_src2, $br_disp */
5537 {
5538 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5539 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5540 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5541 int UNUSED written = 0;
5542 IADDR UNUSED pc = abuf->addr;
5543 SEM_BRANCH_INIT
5544 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5545
5546 if (EQSI (FLD (f_br_src1), * FLD (i_br_src2))) {
5547 {
5548 USI opval = FLD (i_br_disp);
5549 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5550 written |= (1 << 3);
5551 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5552 }
5553 }
5554
5555 abuf->written = written;
5556 SEM_BRANCH_FINI (vpc);
5557 #undef FLD
5558 }
5559 NEXT (vpc);
5560
5561 CASE (sem, INSN_CMPOBNE_REG) : /* cmpobne $br_src1, $br_src2, $br_disp */
5562 {
5563 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5564 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5565 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5566 int UNUSED written = 0;
5567 IADDR UNUSED pc = abuf->addr;
5568 SEM_BRANCH_INIT
5569 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5570
5571 if (NESI (* FLD (i_br_src1), * FLD (i_br_src2))) {
5572 {
5573 USI opval = FLD (i_br_disp);
5574 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5575 written |= (1 << 3);
5576 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5577 }
5578 }
5579
5580 abuf->written = written;
5581 SEM_BRANCH_FINI (vpc);
5582 #undef FLD
5583 }
5584 NEXT (vpc);
5585
5586 CASE (sem, INSN_CMPOBNE_LIT) : /* cmpobne $br_lit1, $br_src2, $br_disp */
5587 {
5588 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5589 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5590 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5591 int UNUSED written = 0;
5592 IADDR UNUSED pc = abuf->addr;
5593 SEM_BRANCH_INIT
5594 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5595
5596 if (NESI (FLD (f_br_src1), * FLD (i_br_src2))) {
5597 {
5598 USI opval = FLD (i_br_disp);
5599 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5600 written |= (1 << 3);
5601 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5602 }
5603 }
5604
5605 abuf->written = written;
5606 SEM_BRANCH_FINI (vpc);
5607 #undef FLD
5608 }
5609 NEXT (vpc);
5610
5611 CASE (sem, INSN_CMPOBL_REG) : /* cmpobl $br_src1, $br_src2, $br_disp */
5612 {
5613 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5614 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5615 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
5616 int UNUSED written = 0;
5617 IADDR UNUSED pc = abuf->addr;
5618 SEM_BRANCH_INIT
5619 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5620
5621 if (LTUSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
5622 {
5623 USI opval = FLD (i_br_disp);
5624 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5625 written |= (1 << 3);
5626 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5627 }
5628 }
5629
5630 abuf->written = written;
5631 SEM_BRANCH_FINI (vpc);
5632 #undef FLD
5633 }
5634 NEXT (vpc);
5635
5636 CASE (sem, INSN_CMPOBL_LIT) : /* cmpobl $br_lit1, $br_src2, $br_disp */
5637 {
5638 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5640 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
5641 int UNUSED written = 0;
5642 IADDR UNUSED pc = abuf->addr;
5643 SEM_BRANCH_INIT
5644 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5645
5646 if (LTUSI (FLD (f_br_src1), * FLD (i_br_src2))) {
5647 {
5648 USI opval = FLD (i_br_disp);
5649 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5650 written |= (1 << 3);
5651 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5652 }
5653 }
5654
5655 abuf->written = written;
5656 SEM_BRANCH_FINI (vpc);
5657 #undef FLD
5658 }
5659 NEXT (vpc);
5660
5661 CASE (sem, INSN_CMPOBLE_REG) : /* cmpoble $br_src1, $br_src2, $br_disp */
5662 {
5663 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5664 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5665 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
5666 int UNUSED written = 0;
5667 IADDR UNUSED pc = abuf->addr;
5668 SEM_BRANCH_INIT
5669 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5670
5671 if (LEUSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
5672 {
5673 USI opval = FLD (i_br_disp);
5674 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5675 written |= (1 << 3);
5676 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5677 }
5678 }
5679
5680 abuf->written = written;
5681 SEM_BRANCH_FINI (vpc);
5682 #undef FLD
5683 }
5684 NEXT (vpc);
5685
5686 CASE (sem, INSN_CMPOBLE_LIT) : /* cmpoble $br_lit1, $br_src2, $br_disp */
5687 {
5688 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5689 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5690 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
5691 int UNUSED written = 0;
5692 IADDR UNUSED pc = abuf->addr;
5693 SEM_BRANCH_INIT
5694 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5695
5696 if (LEUSI (FLD (f_br_src1), * FLD (i_br_src2))) {
5697 {
5698 USI opval = FLD (i_br_disp);
5699 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5700 written |= (1 << 3);
5701 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5702 }
5703 }
5704
5705 abuf->written = written;
5706 SEM_BRANCH_FINI (vpc);
5707 #undef FLD
5708 }
5709 NEXT (vpc);
5710
5711 CASE (sem, INSN_CMPOBG_REG) : /* cmpobg $br_src1, $br_src2, $br_disp */
5712 {
5713 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5714 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5715 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
5716 int UNUSED written = 0;
5717 IADDR UNUSED pc = abuf->addr;
5718 SEM_BRANCH_INIT
5719 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5720
5721 if (GTUSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
5722 {
5723 USI opval = FLD (i_br_disp);
5724 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5725 written |= (1 << 3);
5726 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5727 }
5728 }
5729
5730 abuf->written = written;
5731 SEM_BRANCH_FINI (vpc);
5732 #undef FLD
5733 }
5734 NEXT (vpc);
5735
5736 CASE (sem, INSN_CMPOBG_LIT) : /* cmpobg $br_lit1, $br_src2, $br_disp */
5737 {
5738 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5739 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5740 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
5741 int UNUSED written = 0;
5742 IADDR UNUSED pc = abuf->addr;
5743 SEM_BRANCH_INIT
5744 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5745
5746 if (GTUSI (FLD (f_br_src1), * FLD (i_br_src2))) {
5747 {
5748 USI opval = FLD (i_br_disp);
5749 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5750 written |= (1 << 3);
5751 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5752 }
5753 }
5754
5755 abuf->written = written;
5756 SEM_BRANCH_FINI (vpc);
5757 #undef FLD
5758 }
5759 NEXT (vpc);
5760
5761 CASE (sem, INSN_CMPOBGE_REG) : /* cmpobge $br_src1, $br_src2, $br_disp */
5762 {
5763 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5764 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5765 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
5766 int UNUSED written = 0;
5767 IADDR UNUSED pc = abuf->addr;
5768 SEM_BRANCH_INIT
5769 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5770
5771 if (GEUSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
5772 {
5773 USI opval = FLD (i_br_disp);
5774 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5775 written |= (1 << 3);
5776 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5777 }
5778 }
5779
5780 abuf->written = written;
5781 SEM_BRANCH_FINI (vpc);
5782 #undef FLD
5783 }
5784 NEXT (vpc);
5785
5786 CASE (sem, INSN_CMPOBGE_LIT) : /* cmpobge $br_lit1, $br_src2, $br_disp */
5787 {
5788 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5789 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5790 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
5791 int UNUSED written = 0;
5792 IADDR UNUSED pc = abuf->addr;
5793 SEM_BRANCH_INIT
5794 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5795
5796 if (GEUSI (FLD (f_br_src1), * FLD (i_br_src2))) {
5797 {
5798 USI opval = FLD (i_br_disp);
5799 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5800 written |= (1 << 3);
5801 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5802 }
5803 }
5804
5805 abuf->written = written;
5806 SEM_BRANCH_FINI (vpc);
5807 #undef FLD
5808 }
5809 NEXT (vpc);
5810
5811 CASE (sem, INSN_CMPIBE_REG) : /* cmpibe $br_src1, $br_src2, $br_disp */
5812 {
5813 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5814 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5815 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5816 int UNUSED written = 0;
5817 IADDR UNUSED pc = abuf->addr;
5818 SEM_BRANCH_INIT
5819 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5820
5821 if (EQSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
5822 {
5823 USI opval = FLD (i_br_disp);
5824 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5825 written |= (1 << 3);
5826 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5827 }
5828 }
5829
5830 abuf->written = written;
5831 SEM_BRANCH_FINI (vpc);
5832 #undef FLD
5833 }
5834 NEXT (vpc);
5835
5836 CASE (sem, INSN_CMPIBE_LIT) : /* cmpibe $br_lit1, $br_src2, $br_disp */
5837 {
5838 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5839 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5840 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5841 int UNUSED written = 0;
5842 IADDR UNUSED pc = abuf->addr;
5843 SEM_BRANCH_INIT
5844 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5845
5846 if (EQSI (FLD (f_br_src1), * FLD (i_br_src2))) {
5847 {
5848 USI opval = FLD (i_br_disp);
5849 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5850 written |= (1 << 3);
5851 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5852 }
5853 }
5854
5855 abuf->written = written;
5856 SEM_BRANCH_FINI (vpc);
5857 #undef FLD
5858 }
5859 NEXT (vpc);
5860
5861 CASE (sem, INSN_CMPIBNE_REG) : /* cmpibne $br_src1, $br_src2, $br_disp */
5862 {
5863 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5865 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5866 int UNUSED written = 0;
5867 IADDR UNUSED pc = abuf->addr;
5868 SEM_BRANCH_INIT
5869 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5870
5871 if (NESI (* FLD (i_br_src1), * FLD (i_br_src2))) {
5872 {
5873 USI opval = FLD (i_br_disp);
5874 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5875 written |= (1 << 3);
5876 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5877 }
5878 }
5879
5880 abuf->written = written;
5881 SEM_BRANCH_FINI (vpc);
5882 #undef FLD
5883 }
5884 NEXT (vpc);
5885
5886 CASE (sem, INSN_CMPIBNE_LIT) : /* cmpibne $br_lit1, $br_src2, $br_disp */
5887 {
5888 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5889 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5890 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5891 int UNUSED written = 0;
5892 IADDR UNUSED pc = abuf->addr;
5893 SEM_BRANCH_INIT
5894 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5895
5896 if (NESI (FLD (f_br_src1), * FLD (i_br_src2))) {
5897 {
5898 USI opval = FLD (i_br_disp);
5899 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5900 written |= (1 << 3);
5901 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5902 }
5903 }
5904
5905 abuf->written = written;
5906 SEM_BRANCH_FINI (vpc);
5907 #undef FLD
5908 }
5909 NEXT (vpc);
5910
5911 CASE (sem, INSN_CMPIBL_REG) : /* cmpibl $br_src1, $br_src2, $br_disp */
5912 {
5913 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5914 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5915 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5916 int UNUSED written = 0;
5917 IADDR UNUSED pc = abuf->addr;
5918 SEM_BRANCH_INIT
5919 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5920
5921 if (LTSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
5922 {
5923 USI opval = FLD (i_br_disp);
5924 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5925 written |= (1 << 3);
5926 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5927 }
5928 }
5929
5930 abuf->written = written;
5931 SEM_BRANCH_FINI (vpc);
5932 #undef FLD
5933 }
5934 NEXT (vpc);
5935
5936 CASE (sem, INSN_CMPIBL_LIT) : /* cmpibl $br_lit1, $br_src2, $br_disp */
5937 {
5938 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5939 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5940 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5941 int UNUSED written = 0;
5942 IADDR UNUSED pc = abuf->addr;
5943 SEM_BRANCH_INIT
5944 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5945
5946 if (LTSI (FLD (f_br_src1), * FLD (i_br_src2))) {
5947 {
5948 USI opval = FLD (i_br_disp);
5949 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5950 written |= (1 << 3);
5951 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5952 }
5953 }
5954
5955 abuf->written = written;
5956 SEM_BRANCH_FINI (vpc);
5957 #undef FLD
5958 }
5959 NEXT (vpc);
5960
5961 CASE (sem, INSN_CMPIBLE_REG) : /* cmpible $br_src1, $br_src2, $br_disp */
5962 {
5963 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5964 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5965 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5966 int UNUSED written = 0;
5967 IADDR UNUSED pc = abuf->addr;
5968 SEM_BRANCH_INIT
5969 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5970
5971 if (LESI (* FLD (i_br_src1), * FLD (i_br_src2))) {
5972 {
5973 USI opval = FLD (i_br_disp);
5974 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5975 written |= (1 << 3);
5976 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5977 }
5978 }
5979
5980 abuf->written = written;
5981 SEM_BRANCH_FINI (vpc);
5982 #undef FLD
5983 }
5984 NEXT (vpc);
5985
5986 CASE (sem, INSN_CMPIBLE_LIT) : /* cmpible $br_lit1, $br_src2, $br_disp */
5987 {
5988 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
5989 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5990 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5991 int UNUSED written = 0;
5992 IADDR UNUSED pc = abuf->addr;
5993 SEM_BRANCH_INIT
5994 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5995
5996 if (LESI (FLD (f_br_src1), * FLD (i_br_src2))) {
5997 {
5998 USI opval = FLD (i_br_disp);
5999 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6000 written |= (1 << 3);
6001 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6002 }
6003 }
6004
6005 abuf->written = written;
6006 SEM_BRANCH_FINI (vpc);
6007 #undef FLD
6008 }
6009 NEXT (vpc);
6010
6011 CASE (sem, INSN_CMPIBG_REG) : /* cmpibg $br_src1, $br_src2, $br_disp */
6012 {
6013 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6014 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6015 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
6016 int UNUSED written = 0;
6017 IADDR UNUSED pc = abuf->addr;
6018 SEM_BRANCH_INIT
6019 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6020
6021 if (GTSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
6022 {
6023 USI opval = FLD (i_br_disp);
6024 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6025 written |= (1 << 3);
6026 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6027 }
6028 }
6029
6030 abuf->written = written;
6031 SEM_BRANCH_FINI (vpc);
6032 #undef FLD
6033 }
6034 NEXT (vpc);
6035
6036 CASE (sem, INSN_CMPIBG_LIT) : /* cmpibg $br_lit1, $br_src2, $br_disp */
6037 {
6038 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6039 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6040 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6041 int UNUSED written = 0;
6042 IADDR UNUSED pc = abuf->addr;
6043 SEM_BRANCH_INIT
6044 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6045
6046 if (GTSI (FLD (f_br_src1), * FLD (i_br_src2))) {
6047 {
6048 USI opval = FLD (i_br_disp);
6049 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6050 written |= (1 << 3);
6051 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6052 }
6053 }
6054
6055 abuf->written = written;
6056 SEM_BRANCH_FINI (vpc);
6057 #undef FLD
6058 }
6059 NEXT (vpc);
6060
6061 CASE (sem, INSN_CMPIBGE_REG) : /* cmpibge $br_src1, $br_src2, $br_disp */
6062 {
6063 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6064 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6065 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
6066 int UNUSED written = 0;
6067 IADDR UNUSED pc = abuf->addr;
6068 SEM_BRANCH_INIT
6069 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6070
6071 if (GESI (* FLD (i_br_src1), * FLD (i_br_src2))) {
6072 {
6073 USI opval = FLD (i_br_disp);
6074 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6075 written |= (1 << 3);
6076 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6077 }
6078 }
6079
6080 abuf->written = written;
6081 SEM_BRANCH_FINI (vpc);
6082 #undef FLD
6083 }
6084 NEXT (vpc);
6085
6086 CASE (sem, INSN_CMPIBGE_LIT) : /* cmpibge $br_lit1, $br_src2, $br_disp */
6087 {
6088 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6089 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6090 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6091 int UNUSED written = 0;
6092 IADDR UNUSED pc = abuf->addr;
6093 SEM_BRANCH_INIT
6094 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6095
6096 if (GESI (FLD (f_br_src1), * FLD (i_br_src2))) {
6097 {
6098 USI opval = FLD (i_br_disp);
6099 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6100 written |= (1 << 3);
6101 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6102 }
6103 }
6104
6105 abuf->written = written;
6106 SEM_BRANCH_FINI (vpc);
6107 #undef FLD
6108 }
6109 NEXT (vpc);
6110
6111 CASE (sem, INSN_BBC_REG) : /* bbc $br_src1, $br_src2, $br_disp */
6112 {
6113 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6114 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6115 #define FLD(f) abuf->fields.cti.fields.fmt_bbc_reg.f
6116 int UNUSED written = 0;
6117 IADDR UNUSED pc = abuf->addr;
6118 SEM_BRANCH_INIT
6119 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6120
6121 if (EQSI (ANDSI (SLLSI (1, * FLD (i_br_src1)), * FLD (i_br_src2)), 0)) {
6122 {
6123 USI opval = FLD (i_br_disp);
6124 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6125 written |= (1 << 3);
6126 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6127 }
6128 }
6129
6130 abuf->written = written;
6131 SEM_BRANCH_FINI (vpc);
6132 #undef FLD
6133 }
6134 NEXT (vpc);
6135
6136 CASE (sem, INSN_BBC_LIT) : /* bbc $br_lit1, $br_src2, $br_disp */
6137 {
6138 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6139 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6140 #define FLD(f) abuf->fields.cti.fields.fmt_bbc_lit.f
6141 int UNUSED written = 0;
6142 IADDR UNUSED pc = abuf->addr;
6143 SEM_BRANCH_INIT
6144 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6145
6146 if (EQSI (ANDSI (SLLSI (1, FLD (f_br_src1)), * FLD (i_br_src2)), 0)) {
6147 {
6148 USI opval = FLD (i_br_disp);
6149 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6150 written |= (1 << 3);
6151 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6152 }
6153 }
6154
6155 abuf->written = written;
6156 SEM_BRANCH_FINI (vpc);
6157 #undef FLD
6158 }
6159 NEXT (vpc);
6160
6161 CASE (sem, INSN_BBS_REG) : /* bbs $br_src1, $br_src2, $br_disp */
6162 {
6163 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6164 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6165 #define FLD(f) abuf->fields.cti.fields.fmt_bbc_reg.f
6166 int UNUSED written = 0;
6167 IADDR UNUSED pc = abuf->addr;
6168 SEM_BRANCH_INIT
6169 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6170
6171 if (NESI (ANDSI (SLLSI (1, * FLD (i_br_src1)), * FLD (i_br_src2)), 0)) {
6172 {
6173 USI opval = FLD (i_br_disp);
6174 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6175 written |= (1 << 3);
6176 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6177 }
6178 }
6179
6180 abuf->written = written;
6181 SEM_BRANCH_FINI (vpc);
6182 #undef FLD
6183 }
6184 NEXT (vpc);
6185
6186 CASE (sem, INSN_BBS_LIT) : /* bbs $br_lit1, $br_src2, $br_disp */
6187 {
6188 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6189 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6190 #define FLD(f) abuf->fields.cti.fields.fmt_bbc_lit.f
6191 int UNUSED written = 0;
6192 IADDR UNUSED pc = abuf->addr;
6193 SEM_BRANCH_INIT
6194 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6195
6196 if (NESI (ANDSI (SLLSI (1, FLD (f_br_src1)), * FLD (i_br_src2)), 0)) {
6197 {
6198 USI opval = FLD (i_br_disp);
6199 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6200 written |= (1 << 3);
6201 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6202 }
6203 }
6204
6205 abuf->written = written;
6206 SEM_BRANCH_FINI (vpc);
6207 #undef FLD
6208 }
6209 NEXT (vpc);
6210
6211 CASE (sem, INSN_CMPI) : /* cmpi $src1, $src2 */
6212 {
6213 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6214 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6215 #define FLD(f) abuf->fields.fmt_cmpi.f
6216 int UNUSED written = 0;
6217 IADDR UNUSED pc = abuf->addr;
6218 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6219
6220 {
6221 SI opval = (LTSI (* FLD (i_src1), * FLD (i_src2))) ? (4) : (EQSI (* FLD (i_src1), * FLD (i_src2))) ? (2) : (1);
6222 CPU (h_cc) = opval;
6223 TRACE_RESULT (current_cpu, abuf, "cc-0", 'x', opval);
6224 }
6225
6226 #undef FLD
6227 }
6228 NEXT (vpc);
6229
6230 CASE (sem, INSN_CMPI1) : /* cmpi $lit1, $src2 */
6231 {
6232 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6233 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6234 #define FLD(f) abuf->fields.fmt_cmpi1.f
6235 int UNUSED written = 0;
6236 IADDR UNUSED pc = abuf->addr;
6237 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6238
6239 {
6240 SI opval = (LTSI (FLD (f_src1), * FLD (i_src2))) ? (4) : (EQSI (FLD (f_src1), * FLD (i_src2))) ? (2) : (1);
6241 CPU (h_cc) = opval;
6242 TRACE_RESULT (current_cpu, abuf, "cc-0", 'x', opval);
6243 }
6244
6245 #undef FLD
6246 }
6247 NEXT (vpc);
6248
6249 CASE (sem, INSN_CMPI2) : /* cmpi $src1, $lit2 */
6250 {
6251 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6252 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6253 #define FLD(f) abuf->fields.fmt_cmpi2.f
6254 int UNUSED written = 0;
6255 IADDR UNUSED pc = abuf->addr;
6256 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6257
6258 {
6259 SI opval = (LTSI (* FLD (i_src1), FLD (f_src2))) ? (4) : (EQSI (* FLD (i_src1), FLD (f_src2))) ? (2) : (1);
6260 CPU (h_cc) = opval;
6261 TRACE_RESULT (current_cpu, abuf, "cc-0", 'x', opval);
6262 }
6263
6264 #undef FLD
6265 }
6266 NEXT (vpc);
6267
6268 CASE (sem, INSN_CMPI3) : /* cmpi $lit1, $lit2 */
6269 {
6270 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6271 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6272 #define FLD(f) abuf->fields.fmt_cmpi3.f
6273 int UNUSED written = 0;
6274 IADDR UNUSED pc = abuf->addr;
6275 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6276
6277 {
6278 SI opval = (LTSI (FLD (f_src1), FLD (f_src2))) ? (4) : (EQSI (FLD (f_src1), FLD (f_src2))) ? (2) : (1);
6279 CPU (h_cc) = opval;
6280 TRACE_RESULT (current_cpu, abuf, "cc-0", 'x', opval);
6281 }
6282
6283 #undef FLD
6284 }
6285 NEXT (vpc);
6286
6287 CASE (sem, INSN_CMPO) : /* cmpo $src1, $src2 */
6288 {
6289 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6290 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6291 #define FLD(f) abuf->fields.fmt_cmpo.f
6292 int UNUSED written = 0;
6293 IADDR UNUSED pc = abuf->addr;
6294 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6295
6296 {
6297 SI opval = (LTUSI (* FLD (i_src1), * FLD (i_src2))) ? (4) : (EQSI (* FLD (i_src1), * FLD (i_src2))) ? (2) : (1);
6298 CPU (h_cc) = opval;
6299 TRACE_RESULT (current_cpu, abuf, "cc-0", 'x', opval);
6300 }
6301
6302 #undef FLD
6303 }
6304 NEXT (vpc);
6305
6306 CASE (sem, INSN_CMPO1) : /* cmpo $lit1, $src2 */
6307 {
6308 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6309 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6310 #define FLD(f) abuf->fields.fmt_cmpo1.f
6311 int UNUSED written = 0;
6312 IADDR UNUSED pc = abuf->addr;
6313 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6314
6315 {
6316 SI opval = (LTUSI (FLD (f_src1), * FLD (i_src2))) ? (4) : (EQSI (FLD (f_src1), * FLD (i_src2))) ? (2) : (1);
6317 CPU (h_cc) = opval;
6318 TRACE_RESULT (current_cpu, abuf, "cc-0", 'x', opval);
6319 }
6320
6321 #undef FLD
6322 }
6323 NEXT (vpc);
6324
6325 CASE (sem, INSN_CMPO2) : /* cmpo $src1, $lit2 */
6326 {
6327 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6328 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6329 #define FLD(f) abuf->fields.fmt_cmpo2.f
6330 int UNUSED written = 0;
6331 IADDR UNUSED pc = abuf->addr;
6332 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6333
6334 {
6335 SI opval = (LTUSI (* FLD (i_src1), FLD (f_src2))) ? (4) : (EQSI (* FLD (i_src1), FLD (f_src2))) ? (2) : (1);
6336 CPU (h_cc) = opval;
6337 TRACE_RESULT (current_cpu, abuf, "cc-0", 'x', opval);
6338 }
6339
6340 #undef FLD
6341 }
6342 NEXT (vpc);
6343
6344 CASE (sem, INSN_CMPO3) : /* cmpo $lit1, $lit2 */
6345 {
6346 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6347 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6348 #define FLD(f) abuf->fields.fmt_cmpo3.f
6349 int UNUSED written = 0;
6350 IADDR UNUSED pc = abuf->addr;
6351 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6352
6353 {
6354 SI opval = (LTUSI (FLD (f_src1), FLD (f_src2))) ? (4) : (EQSI (FLD (f_src1), FLD (f_src2))) ? (2) : (1);
6355 CPU (h_cc) = opval;
6356 TRACE_RESULT (current_cpu, abuf, "cc-0", 'x', opval);
6357 }
6358
6359 #undef FLD
6360 }
6361 NEXT (vpc);
6362
6363 CASE (sem, INSN_TESTNO_REG) : /* testno $br_src1 */
6364 {
6365 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6366 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6367 #define FLD(f) abuf->fields.fmt_testno_reg.f
6368 int UNUSED written = 0;
6369 IADDR UNUSED pc = abuf->addr;
6370 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6371
6372 {
6373 SI opval = EQSI (CPU (h_cc), 0);
6374 * FLD (i_br_src1) = opval;
6375 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6376 }
6377
6378 #undef FLD
6379 }
6380 NEXT (vpc);
6381
6382 CASE (sem, INSN_TESTG_REG) : /* testg $br_src1 */
6383 {
6384 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6385 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6386 #define FLD(f) abuf->fields.fmt_testno_reg.f
6387 int UNUSED written = 0;
6388 IADDR UNUSED pc = abuf->addr;
6389 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6390
6391 {
6392 SI opval = NESI (ANDSI (CPU (h_cc), 1), 0);
6393 * FLD (i_br_src1) = opval;
6394 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6395 }
6396
6397 #undef FLD
6398 }
6399 NEXT (vpc);
6400
6401 CASE (sem, INSN_TESTE_REG) : /* teste $br_src1 */
6402 {
6403 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6404 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6405 #define FLD(f) abuf->fields.fmt_testno_reg.f
6406 int UNUSED written = 0;
6407 IADDR UNUSED pc = abuf->addr;
6408 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6409
6410 {
6411 SI opval = NESI (ANDSI (CPU (h_cc), 2), 0);
6412 * FLD (i_br_src1) = opval;
6413 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6414 }
6415
6416 #undef FLD
6417 }
6418 NEXT (vpc);
6419
6420 CASE (sem, INSN_TESTGE_REG) : /* testge $br_src1 */
6421 {
6422 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6423 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6424 #define FLD(f) abuf->fields.fmt_testno_reg.f
6425 int UNUSED written = 0;
6426 IADDR UNUSED pc = abuf->addr;
6427 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6428
6429 {
6430 SI opval = NESI (ANDSI (CPU (h_cc), 3), 0);
6431 * FLD (i_br_src1) = opval;
6432 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6433 }
6434
6435 #undef FLD
6436 }
6437 NEXT (vpc);
6438
6439 CASE (sem, INSN_TESTL_REG) : /* testl $br_src1 */
6440 {
6441 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6442 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6443 #define FLD(f) abuf->fields.fmt_testno_reg.f
6444 int UNUSED written = 0;
6445 IADDR UNUSED pc = abuf->addr;
6446 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6447
6448 {
6449 SI opval = NESI (ANDSI (CPU (h_cc), 4), 0);
6450 * FLD (i_br_src1) = opval;
6451 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6452 }
6453
6454 #undef FLD
6455 }
6456 NEXT (vpc);
6457
6458 CASE (sem, INSN_TESTNE_REG) : /* testne $br_src1 */
6459 {
6460 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6461 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6462 #define FLD(f) abuf->fields.fmt_testno_reg.f
6463 int UNUSED written = 0;
6464 IADDR UNUSED pc = abuf->addr;
6465 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6466
6467 {
6468 SI opval = NESI (ANDSI (CPU (h_cc), 5), 0);
6469 * FLD (i_br_src1) = opval;
6470 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6471 }
6472
6473 #undef FLD
6474 }
6475 NEXT (vpc);
6476
6477 CASE (sem, INSN_TESTLE_REG) : /* testle $br_src1 */
6478 {
6479 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6480 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6481 #define FLD(f) abuf->fields.fmt_testno_reg.f
6482 int UNUSED written = 0;
6483 IADDR UNUSED pc = abuf->addr;
6484 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6485
6486 {
6487 SI opval = NESI (ANDSI (CPU (h_cc), 6), 0);
6488 * FLD (i_br_src1) = opval;
6489 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6490 }
6491
6492 #undef FLD
6493 }
6494 NEXT (vpc);
6495
6496 CASE (sem, INSN_TESTO_REG) : /* testo $br_src1 */
6497 {
6498 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6499 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6500 #define FLD(f) abuf->fields.fmt_testno_reg.f
6501 int UNUSED written = 0;
6502 IADDR UNUSED pc = abuf->addr;
6503 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6504
6505 {
6506 SI opval = NESI (ANDSI (CPU (h_cc), 7), 0);
6507 * FLD (i_br_src1) = opval;
6508 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6509 }
6510
6511 #undef FLD
6512 }
6513 NEXT (vpc);
6514
6515 CASE (sem, INSN_BNO) : /* bno $ctrl_disp */
6516 {
6517 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6518 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6519 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6520 int UNUSED written = 0;
6521 IADDR UNUSED pc = abuf->addr;
6522 SEM_BRANCH_INIT
6523 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6524
6525 if (EQSI (CPU (h_cc), 0)) {
6526 {
6527 USI opval = FLD (i_ctrl_disp);
6528 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6529 written |= (1 << 2);
6530 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6531 }
6532 }
6533
6534 abuf->written = written;
6535 SEM_BRANCH_FINI (vpc);
6536 #undef FLD
6537 }
6538 NEXT (vpc);
6539
6540 CASE (sem, INSN_BG) : /* bg $ctrl_disp */
6541 {
6542 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6543 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6544 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6545 int UNUSED written = 0;
6546 IADDR UNUSED pc = abuf->addr;
6547 SEM_BRANCH_INIT
6548 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6549
6550 if (NESI (ANDSI (CPU (h_cc), 1), 0)) {
6551 {
6552 USI opval = FLD (i_ctrl_disp);
6553 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6554 written |= (1 << 2);
6555 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6556 }
6557 }
6558
6559 abuf->written = written;
6560 SEM_BRANCH_FINI (vpc);
6561 #undef FLD
6562 }
6563 NEXT (vpc);
6564
6565 CASE (sem, INSN_BE) : /* be $ctrl_disp */
6566 {
6567 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6568 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6569 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6570 int UNUSED written = 0;
6571 IADDR UNUSED pc = abuf->addr;
6572 SEM_BRANCH_INIT
6573 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6574
6575 if (NESI (ANDSI (CPU (h_cc), 2), 0)) {
6576 {
6577 USI opval = FLD (i_ctrl_disp);
6578 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6579 written |= (1 << 2);
6580 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6581 }
6582 }
6583
6584 abuf->written = written;
6585 SEM_BRANCH_FINI (vpc);
6586 #undef FLD
6587 }
6588 NEXT (vpc);
6589
6590 CASE (sem, INSN_BGE) : /* bge $ctrl_disp */
6591 {
6592 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6593 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6594 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6595 int UNUSED written = 0;
6596 IADDR UNUSED pc = abuf->addr;
6597 SEM_BRANCH_INIT
6598 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6599
6600 if (NESI (ANDSI (CPU (h_cc), 3), 0)) {
6601 {
6602 USI opval = FLD (i_ctrl_disp);
6603 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6604 written |= (1 << 2);
6605 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6606 }
6607 }
6608
6609 abuf->written = written;
6610 SEM_BRANCH_FINI (vpc);
6611 #undef FLD
6612 }
6613 NEXT (vpc);
6614
6615 CASE (sem, INSN_BL) : /* bl $ctrl_disp */
6616 {
6617 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6618 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6619 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6620 int UNUSED written = 0;
6621 IADDR UNUSED pc = abuf->addr;
6622 SEM_BRANCH_INIT
6623 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6624
6625 if (NESI (ANDSI (CPU (h_cc), 4), 0)) {
6626 {
6627 USI opval = FLD (i_ctrl_disp);
6628 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6629 written |= (1 << 2);
6630 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6631 }
6632 }
6633
6634 abuf->written = written;
6635 SEM_BRANCH_FINI (vpc);
6636 #undef FLD
6637 }
6638 NEXT (vpc);
6639
6640 CASE (sem, INSN_BNE) : /* bne $ctrl_disp */
6641 {
6642 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6643 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6644 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6645 int UNUSED written = 0;
6646 IADDR UNUSED pc = abuf->addr;
6647 SEM_BRANCH_INIT
6648 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6649
6650 if (NESI (ANDSI (CPU (h_cc), 5), 0)) {
6651 {
6652 USI opval = FLD (i_ctrl_disp);
6653 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6654 written |= (1 << 2);
6655 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6656 }
6657 }
6658
6659 abuf->written = written;
6660 SEM_BRANCH_FINI (vpc);
6661 #undef FLD
6662 }
6663 NEXT (vpc);
6664
6665 CASE (sem, INSN_BLE) : /* ble $ctrl_disp */
6666 {
6667 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6668 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6669 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6670 int UNUSED written = 0;
6671 IADDR UNUSED pc = abuf->addr;
6672 SEM_BRANCH_INIT
6673 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6674
6675 if (NESI (ANDSI (CPU (h_cc), 6), 0)) {
6676 {
6677 USI opval = FLD (i_ctrl_disp);
6678 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6679 written |= (1 << 2);
6680 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6681 }
6682 }
6683
6684 abuf->written = written;
6685 SEM_BRANCH_FINI (vpc);
6686 #undef FLD
6687 }
6688 NEXT (vpc);
6689
6690 CASE (sem, INSN_BO) : /* bo $ctrl_disp */
6691 {
6692 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6694 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6695 int UNUSED written = 0;
6696 IADDR UNUSED pc = abuf->addr;
6697 SEM_BRANCH_INIT
6698 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6699
6700 if (NESI (ANDSI (CPU (h_cc), 7), 0)) {
6701 {
6702 USI opval = FLD (i_ctrl_disp);
6703 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6704 written |= (1 << 2);
6705 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6706 }
6707 }
6708
6709 abuf->written = written;
6710 SEM_BRANCH_FINI (vpc);
6711 #undef FLD
6712 }
6713 NEXT (vpc);
6714
6715 CASE (sem, INSN_B) : /* b $ctrl_disp */
6716 {
6717 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6718 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6719 #define FLD(f) abuf->fields.cti.fields.fmt_b.f
6720 int UNUSED written = 0;
6721 IADDR UNUSED pc = abuf->addr;
6722 SEM_BRANCH_INIT
6723 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6724
6725 {
6726 USI opval = FLD (i_ctrl_disp);
6727 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6728 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6729 }
6730
6731 SEM_BRANCH_FINI (vpc);
6732 #undef FLD
6733 }
6734 NEXT (vpc);
6735
6736 CASE (sem, INSN_BX_INDIRECT_OFFSET) : /* bx $offset($abase) */
6737 {
6738 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6739 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6740 #define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect_offset.f
6741 int UNUSED written = 0;
6742 IADDR UNUSED pc = abuf->addr;
6743 SEM_BRANCH_INIT
6744 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6745
6746 {
6747 USI opval = ADDSI (FLD (f_offset), * FLD (i_abase));
6748 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6749 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6750 }
6751
6752 SEM_BRANCH_FINI (vpc);
6753 #undef FLD
6754 }
6755 NEXT (vpc);
6756
6757 CASE (sem, INSN_BX_INDIRECT) : /* bx ($abase) */
6758 {
6759 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6760 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6761 #define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect.f
6762 int UNUSED written = 0;
6763 IADDR UNUSED pc = abuf->addr;
6764 SEM_BRANCH_INIT
6765 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6766
6767 {
6768 USI opval = * FLD (i_abase);
6769 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6770 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6771 }
6772
6773 SEM_BRANCH_FINI (vpc);
6774 #undef FLD
6775 }
6776 NEXT (vpc);
6777
6778 CASE (sem, INSN_BX_INDIRECT_INDEX) : /* bx ($abase)[$index*S$scale] */
6779 {
6780 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6781 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6782 #define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect_index.f
6783 int UNUSED written = 0;
6784 IADDR UNUSED pc = abuf->addr;
6785 SEM_BRANCH_INIT
6786 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6787
6788 {
6789 USI opval = ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
6790 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6791 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6792 }
6793
6794 SEM_BRANCH_FINI (vpc);
6795 #undef FLD
6796 }
6797 NEXT (vpc);
6798
6799 CASE (sem, INSN_BX_DISP) : /* bx $optdisp */
6800 {
6801 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6802 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6803 #define FLD(f) abuf->fields.cti.fields.fmt_bx_disp.f
6804 int UNUSED written = 0;
6805 IADDR UNUSED pc = abuf->addr;
6806 SEM_BRANCH_INIT
6807 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
6808
6809 {
6810 USI opval = FLD (f_optdisp);
6811 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6812 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6813 }
6814
6815 SEM_BRANCH_FINI (vpc);
6816 #undef FLD
6817 }
6818 NEXT (vpc);
6819
6820 CASE (sem, INSN_BX_INDIRECT_DISP) : /* bx $optdisp($abase) */
6821 {
6822 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6823 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6824 #define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect_disp.f
6825 int UNUSED written = 0;
6826 IADDR UNUSED pc = abuf->addr;
6827 SEM_BRANCH_INIT
6828 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
6829
6830 {
6831 USI opval = ADDSI (FLD (f_optdisp), * FLD (i_abase));
6832 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6833 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6834 }
6835
6836 SEM_BRANCH_FINI (vpc);
6837 #undef FLD
6838 }
6839 NEXT (vpc);
6840
6841 CASE (sem, INSN_CALLX_DISP) : /* callx $optdisp */
6842 {
6843 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6844 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6845 #define FLD(f) abuf->fields.cti.fields.fmt_callx_disp.f
6846 int UNUSED written = 0;
6847 IADDR UNUSED pc = abuf->addr;
6848 SEM_BRANCH_INIT
6849 vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
6850
6851 do {
6852 SI tmp_temp;
6853 tmp_temp = ANDSI (ADDSI (CPU (h_gr[((UINT) 1)]), 63), INVSI (63));
6854 {
6855 SI opval = ADDSI (pc, 8);
6856 CPU (h_gr[((UINT) 2)]) = opval;
6857 TRACE_RESULT (current_cpu, abuf, "gr-2", 'x', opval);
6858 }
6859 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 0), CPU (h_gr[((UINT) 0)]));
6860 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 4), CPU (h_gr[((UINT) 1)]));
6861 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 8), CPU (h_gr[((UINT) 2)]));
6862 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 12), CPU (h_gr[((UINT) 3)]));
6863 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 16), CPU (h_gr[((UINT) 4)]));
6864 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 20), CPU (h_gr[((UINT) 5)]));
6865 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 24), CPU (h_gr[((UINT) 6)]));
6866 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 28), CPU (h_gr[((UINT) 7)]));
6867 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 32), CPU (h_gr[((UINT) 8)]));
6868 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 36), CPU (h_gr[((UINT) 9)]));
6869 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 40), CPU (h_gr[((UINT) 10)]));
6870 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 44), CPU (h_gr[((UINT) 11)]));
6871 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 48), CPU (h_gr[((UINT) 12)]));
6872 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 52), CPU (h_gr[((UINT) 13)]));
6873 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 56), CPU (h_gr[((UINT) 14)]));
6874 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 60), CPU (h_gr[((UINT) 15)]));
6875 {
6876 USI opval = FLD (f_optdisp);
6877 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6878 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6879 }
6880 CPU (h_gr[((UINT) 0)]) = 0xdeadbeef;
6881 CPU (h_gr[((UINT) 1)]) = 0xdeadbeef;
6882 CPU (h_gr[((UINT) 2)]) = 0xdeadbeef;
6883 CPU (h_gr[((UINT) 3)]) = 0xdeadbeef;
6884 CPU (h_gr[((UINT) 4)]) = 0xdeadbeef;
6885 CPU (h_gr[((UINT) 5)]) = 0xdeadbeef;
6886 CPU (h_gr[((UINT) 6)]) = 0xdeadbeef;
6887 CPU (h_gr[((UINT) 7)]) = 0xdeadbeef;
6888 CPU (h_gr[((UINT) 8)]) = 0xdeadbeef;
6889 CPU (h_gr[((UINT) 9)]) = 0xdeadbeef;
6890 CPU (h_gr[((UINT) 10)]) = 0xdeadbeef;
6891 CPU (h_gr[((UINT) 11)]) = 0xdeadbeef;
6892 CPU (h_gr[((UINT) 12)]) = 0xdeadbeef;
6893 CPU (h_gr[((UINT) 13)]) = 0xdeadbeef;
6894 CPU (h_gr[((UINT) 14)]) = 0xdeadbeef;
6895 CPU (h_gr[((UINT) 15)]) = 0xdeadbeef;
6896 {
6897 SI opval = CPU (h_gr[((UINT) 31)]);
6898 CPU (h_gr[((UINT) 0)]) = opval;
6899 TRACE_RESULT (current_cpu, abuf, "gr-0", 'x', opval);
6900 }
6901 {
6902 SI opval = tmp_temp;
6903 CPU (h_gr[((UINT) 31)]) = opval;
6904 TRACE_RESULT (current_cpu, abuf, "gr-31", 'x', opval);
6905 }
6906 {
6907 SI opval = ADDSI (tmp_temp, 64);
6908 CPU (h_gr[((UINT) 1)]) = opval;
6909 TRACE_RESULT (current_cpu, abuf, "gr-1", 'x', opval);
6910 }
6911 } while (0);
6912
6913 SEM_BRANCH_FINI (vpc);
6914 #undef FLD
6915 }
6916 NEXT (vpc);
6917
6918 CASE (sem, INSN_CALLX_INDIRECT) : /* callx ($abase) */
6919 {
6920 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6921 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6922 #define FLD(f) abuf->fields.cti.fields.fmt_callx_indirect.f
6923 int UNUSED written = 0;
6924 IADDR UNUSED pc = abuf->addr;
6925 SEM_BRANCH_INIT
6926 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6927
6928 do {
6929 SI tmp_temp;
6930 tmp_temp = ANDSI (ADDSI (CPU (h_gr[((UINT) 1)]), 63), INVSI (63));
6931 {
6932 SI opval = ADDSI (pc, 4);
6933 CPU (h_gr[((UINT) 2)]) = opval;
6934 TRACE_RESULT (current_cpu, abuf, "gr-2", 'x', opval);
6935 }
6936 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 0), CPU (h_gr[((UINT) 0)]));
6937 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 4), CPU (h_gr[((UINT) 1)]));
6938 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 8), CPU (h_gr[((UINT) 2)]));
6939 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 12), CPU (h_gr[((UINT) 3)]));
6940 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 16), CPU (h_gr[((UINT) 4)]));
6941 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 20), CPU (h_gr[((UINT) 5)]));
6942 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 24), CPU (h_gr[((UINT) 6)]));
6943 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 28), CPU (h_gr[((UINT) 7)]));
6944 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 32), CPU (h_gr[((UINT) 8)]));
6945 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 36), CPU (h_gr[((UINT) 9)]));
6946 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 40), CPU (h_gr[((UINT) 10)]));
6947 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 44), CPU (h_gr[((UINT) 11)]));
6948 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 48), CPU (h_gr[((UINT) 12)]));
6949 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 52), CPU (h_gr[((UINT) 13)]));
6950 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 56), CPU (h_gr[((UINT) 14)]));
6951 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 60), CPU (h_gr[((UINT) 15)]));
6952 {
6953 USI opval = * FLD (i_abase);
6954 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
6955 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6956 }
6957 CPU (h_gr[((UINT) 0)]) = 0xdeadbeef;
6958 CPU (h_gr[((UINT) 1)]) = 0xdeadbeef;
6959 CPU (h_gr[((UINT) 2)]) = 0xdeadbeef;
6960 CPU (h_gr[((UINT) 3)]) = 0xdeadbeef;
6961 CPU (h_gr[((UINT) 4)]) = 0xdeadbeef;
6962 CPU (h_gr[((UINT) 5)]) = 0xdeadbeef;
6963 CPU (h_gr[((UINT) 6)]) = 0xdeadbeef;
6964 CPU (h_gr[((UINT) 7)]) = 0xdeadbeef;
6965 CPU (h_gr[((UINT) 8)]) = 0xdeadbeef;
6966 CPU (h_gr[((UINT) 9)]) = 0xdeadbeef;
6967 CPU (h_gr[((UINT) 10)]) = 0xdeadbeef;
6968 CPU (h_gr[((UINT) 11)]) = 0xdeadbeef;
6969 CPU (h_gr[((UINT) 12)]) = 0xdeadbeef;
6970 CPU (h_gr[((UINT) 13)]) = 0xdeadbeef;
6971 CPU (h_gr[((UINT) 14)]) = 0xdeadbeef;
6972 CPU (h_gr[((UINT) 15)]) = 0xdeadbeef;
6973 {
6974 SI opval = CPU (h_gr[((UINT) 31)]);
6975 CPU (h_gr[((UINT) 0)]) = opval;
6976 TRACE_RESULT (current_cpu, abuf, "gr-0", 'x', opval);
6977 }
6978 {
6979 SI opval = tmp_temp;
6980 CPU (h_gr[((UINT) 31)]) = opval;
6981 TRACE_RESULT (current_cpu, abuf, "gr-31", 'x', opval);
6982 }
6983 {
6984 SI opval = ADDSI (tmp_temp, 64);
6985 CPU (h_gr[((UINT) 1)]) = opval;
6986 TRACE_RESULT (current_cpu, abuf, "gr-1", 'x', opval);
6987 }
6988 } while (0);
6989
6990 SEM_BRANCH_FINI (vpc);
6991 #undef FLD
6992 }
6993 NEXT (vpc);
6994
6995 CASE (sem, INSN_CALLX_INDIRECT_OFFSET) : /* callx $offset($abase) */
6996 {
6997 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
6998 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6999 #define FLD(f) abuf->fields.cti.fields.fmt_callx_indirect_offset.f
7000 int UNUSED written = 0;
7001 IADDR UNUSED pc = abuf->addr;
7002 SEM_BRANCH_INIT
7003 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7004
7005 do {
7006 SI tmp_temp;
7007 tmp_temp = ANDSI (ADDSI (CPU (h_gr[((UINT) 1)]), 63), INVSI (63));
7008 {
7009 SI opval = ADDSI (pc, 4);
7010 CPU (h_gr[((UINT) 2)]) = opval;
7011 TRACE_RESULT (current_cpu, abuf, "gr-2", 'x', opval);
7012 }
7013 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 0), CPU (h_gr[((UINT) 0)]));
7014 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 4), CPU (h_gr[((UINT) 1)]));
7015 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 8), CPU (h_gr[((UINT) 2)]));
7016 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 12), CPU (h_gr[((UINT) 3)]));
7017 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 16), CPU (h_gr[((UINT) 4)]));
7018 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 20), CPU (h_gr[((UINT) 5)]));
7019 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 24), CPU (h_gr[((UINT) 6)]));
7020 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 28), CPU (h_gr[((UINT) 7)]));
7021 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 32), CPU (h_gr[((UINT) 8)]));
7022 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 36), CPU (h_gr[((UINT) 9)]));
7023 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 40), CPU (h_gr[((UINT) 10)]));
7024 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 44), CPU (h_gr[((UINT) 11)]));
7025 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 48), CPU (h_gr[((UINT) 12)]));
7026 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 52), CPU (h_gr[((UINT) 13)]));
7027 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 56), CPU (h_gr[((UINT) 14)]));
7028 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 60), CPU (h_gr[((UINT) 15)]));
7029 {
7030 USI opval = ADDSI (FLD (f_offset), * FLD (i_abase));
7031 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7032 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7033 }
7034 CPU (h_gr[((UINT) 0)]) = 0xdeadbeef;
7035 CPU (h_gr[((UINT) 1)]) = 0xdeadbeef;
7036 CPU (h_gr[((UINT) 2)]) = 0xdeadbeef;
7037 CPU (h_gr[((UINT) 3)]) = 0xdeadbeef;
7038 CPU (h_gr[((UINT) 4)]) = 0xdeadbeef;
7039 CPU (h_gr[((UINT) 5)]) = 0xdeadbeef;
7040 CPU (h_gr[((UINT) 6)]) = 0xdeadbeef;
7041 CPU (h_gr[((UINT) 7)]) = 0xdeadbeef;
7042 CPU (h_gr[((UINT) 8)]) = 0xdeadbeef;
7043 CPU (h_gr[((UINT) 9)]) = 0xdeadbeef;
7044 CPU (h_gr[((UINT) 10)]) = 0xdeadbeef;
7045 CPU (h_gr[((UINT) 11)]) = 0xdeadbeef;
7046 CPU (h_gr[((UINT) 12)]) = 0xdeadbeef;
7047 CPU (h_gr[((UINT) 13)]) = 0xdeadbeef;
7048 CPU (h_gr[((UINT) 14)]) = 0xdeadbeef;
7049 CPU (h_gr[((UINT) 15)]) = 0xdeadbeef;
7050 {
7051 SI opval = CPU (h_gr[((UINT) 31)]);
7052 CPU (h_gr[((UINT) 0)]) = opval;
7053 TRACE_RESULT (current_cpu, abuf, "gr-0", 'x', opval);
7054 }
7055 {
7056 SI opval = tmp_temp;
7057 CPU (h_gr[((UINT) 31)]) = opval;
7058 TRACE_RESULT (current_cpu, abuf, "gr-31", 'x', opval);
7059 }
7060 {
7061 SI opval = ADDSI (tmp_temp, 64);
7062 CPU (h_gr[((UINT) 1)]) = opval;
7063 TRACE_RESULT (current_cpu, abuf, "gr-1", 'x', opval);
7064 }
7065 } while (0);
7066
7067 SEM_BRANCH_FINI (vpc);
7068 #undef FLD
7069 }
7070 NEXT (vpc);
7071
7072 CASE (sem, INSN_RET) : /* ret */
7073 {
7074 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7075 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7076 #define FLD(f) abuf->fields.cti.fields.fmt_ret.f
7077 int UNUSED written = 0;
7078 IADDR UNUSED pc = abuf->addr;
7079 SEM_BRANCH_INIT
7080 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7081
7082 do {
7083 {
7084 SI opval = CPU (h_gr[((UINT) 0)]);
7085 CPU (h_gr[((UINT) 31)]) = opval;
7086 TRACE_RESULT (current_cpu, abuf, "gr-31", 'x', opval);
7087 }
7088 CPU (h_gr[((UINT) 0)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 0));
7089 CPU (h_gr[((UINT) 1)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 4));
7090 CPU (h_gr[((UINT) 2)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 8));
7091 CPU (h_gr[((UINT) 3)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 12));
7092 CPU (h_gr[((UINT) 4)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 16));
7093 CPU (h_gr[((UINT) 5)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 20));
7094 CPU (h_gr[((UINT) 6)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 24));
7095 CPU (h_gr[((UINT) 7)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 28));
7096 CPU (h_gr[((UINT) 8)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 32));
7097 CPU (h_gr[((UINT) 9)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 36));
7098 CPU (h_gr[((UINT) 10)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 40));
7099 CPU (h_gr[((UINT) 11)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 44));
7100 CPU (h_gr[((UINT) 12)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 48));
7101 CPU (h_gr[((UINT) 13)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 52));
7102 CPU (h_gr[((UINT) 14)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 56));
7103 CPU (h_gr[((UINT) 15)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 60));
7104 {
7105 USI opval = CPU (h_gr[((UINT) 2)]);
7106 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7107 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7108 }
7109 } while (0);
7110
7111 SEM_BRANCH_FINI (vpc);
7112 #undef FLD
7113 }
7114 NEXT (vpc);
7115
7116 CASE (sem, INSN_CALLS) : /* calls $src1 */
7117 {
7118 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7119 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7120 #define FLD(f) abuf->fields.cti.fields.fmt_calls.f
7121 int UNUSED written = 0;
7122 IADDR UNUSED pc = abuf->addr;
7123 SEM_BRANCH_INIT
7124 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7125
7126 {
7127 SI opval = i960_trap (current_cpu, pc, * FLD (i_src1));
7128 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7129 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7130 }
7131
7132 SEM_BRANCH_FINI (vpc);
7133 #undef FLD
7134 }
7135 NEXT (vpc);
7136
7137 CASE (sem, INSN_FMARK) : /* fmark */
7138 {
7139 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7140 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7141 #define FLD(f) abuf->fields.cti.fields.fmt_fmark.f
7142 int UNUSED written = 0;
7143 IADDR UNUSED pc = abuf->addr;
7144 SEM_BRANCH_INIT
7145 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7146
7147 {
7148 SI opval = i960_breakpoint (current_cpu, pc);
7149 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7150 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7151 }
7152
7153 SEM_BRANCH_FINI (vpc);
7154 #undef FLD
7155 }
7156 NEXT (vpc);
7157
7158 CASE (sem, INSN_FLUSHREG) : /* flushreg */
7159 {
7160 SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
7161 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7162 #define FLD(f) abuf->fields.fmt_flushreg.f
7163 int UNUSED written = 0;
7164 IADDR UNUSED pc = abuf->addr;
7165 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7166
7167 do { } while (0); /*nop*/
7168
7169 #undef FLD
7170 }
7171 NEXT (vpc);
7172
7173
7174 }
7175 ENDSWITCH (sem) /* End of semantic switch. */
7176
7177 /* At this point `vpc' contains the next insn to execute. */
7178 }
7179
7180 #undef DEFINE_SWITCH
7181 #endif /* DEFINE_SWITCH */