1 /* Simulator instruction semantics for i960base.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
7 This file is part of the GNU Simulators.
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)
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.
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.
27 /* The labels have the case they have because the enum of insn types
28 is all uppercase and in the non-stdc case the insn symbol is built
29 into the enum name. */
35 { 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_XNOR
, && case_sem_INSN_XNOR
},
102 { I960BASE_INSN_XNOR1
, && case_sem_INSN_XNOR1
},
103 { I960BASE_INSN_XNOR2
, && case_sem_INSN_XNOR2
},
104 { I960BASE_INSN_XNOR3
, && case_sem_INSN_XNOR3
},
105 { I960BASE_INSN_NOT
, && case_sem_INSN_NOT
},
106 { I960BASE_INSN_NOT1
, && case_sem_INSN_NOT1
},
107 { I960BASE_INSN_NOT2
, && case_sem_INSN_NOT2
},
108 { I960BASE_INSN_NOT3
, && case_sem_INSN_NOT3
},
109 { I960BASE_INSN_ORNOT
, && case_sem_INSN_ORNOT
},
110 { I960BASE_INSN_ORNOT1
, && case_sem_INSN_ORNOT1
},
111 { I960BASE_INSN_ORNOT2
, && case_sem_INSN_ORNOT2
},
112 { I960BASE_INSN_ORNOT3
, && case_sem_INSN_ORNOT3
},
113 { I960BASE_INSN_CLRBIT
, && case_sem_INSN_CLRBIT
},
114 { I960BASE_INSN_CLRBIT1
, && case_sem_INSN_CLRBIT1
},
115 { I960BASE_INSN_CLRBIT2
, && case_sem_INSN_CLRBIT2
},
116 { I960BASE_INSN_CLRBIT3
, && case_sem_INSN_CLRBIT3
},
117 { I960BASE_INSN_SHLO
, && case_sem_INSN_SHLO
},
118 { I960BASE_INSN_SHLO1
, && case_sem_INSN_SHLO1
},
119 { I960BASE_INSN_SHLO2
, && case_sem_INSN_SHLO2
},
120 { I960BASE_INSN_SHLO3
, && case_sem_INSN_SHLO3
},
121 { I960BASE_INSN_SHRO
, && case_sem_INSN_SHRO
},
122 { I960BASE_INSN_SHRO1
, && case_sem_INSN_SHRO1
},
123 { I960BASE_INSN_SHRO2
, && case_sem_INSN_SHRO2
},
124 { I960BASE_INSN_SHRO3
, && case_sem_INSN_SHRO3
},
125 { I960BASE_INSN_SHLI
, && case_sem_INSN_SHLI
},
126 { I960BASE_INSN_SHLI1
, && case_sem_INSN_SHLI1
},
127 { I960BASE_INSN_SHLI2
, && case_sem_INSN_SHLI2
},
128 { I960BASE_INSN_SHLI3
, && case_sem_INSN_SHLI3
},
129 { I960BASE_INSN_SHRI
, && case_sem_INSN_SHRI
},
130 { I960BASE_INSN_SHRI1
, && case_sem_INSN_SHRI1
},
131 { I960BASE_INSN_SHRI2
, && case_sem_INSN_SHRI2
},
132 { I960BASE_INSN_SHRI3
, && case_sem_INSN_SHRI3
},
133 { I960BASE_INSN_EMUL
, && case_sem_INSN_EMUL
},
134 { I960BASE_INSN_EMUL1
, && case_sem_INSN_EMUL1
},
135 { I960BASE_INSN_EMUL2
, && case_sem_INSN_EMUL2
},
136 { I960BASE_INSN_EMUL3
, && case_sem_INSN_EMUL3
},
137 { I960BASE_INSN_MOV
, && case_sem_INSN_MOV
},
138 { I960BASE_INSN_MOV1
, && case_sem_INSN_MOV1
},
139 { I960BASE_INSN_MOVL
, && case_sem_INSN_MOVL
},
140 { I960BASE_INSN_MOVL1
, && case_sem_INSN_MOVL1
},
141 { I960BASE_INSN_MOVT
, && case_sem_INSN_MOVT
},
142 { I960BASE_INSN_MOVT1
, && case_sem_INSN_MOVT1
},
143 { I960BASE_INSN_MOVQ
, && case_sem_INSN_MOVQ
},
144 { I960BASE_INSN_MOVQ1
, && case_sem_INSN_MOVQ1
},
145 { I960BASE_INSN_MODPC
, && case_sem_INSN_MODPC
},
146 { I960BASE_INSN_MODAC
, && case_sem_INSN_MODAC
},
147 { I960BASE_INSN_LDA_OFFSET
, && case_sem_INSN_LDA_OFFSET
},
148 { I960BASE_INSN_LDA_INDIRECT_OFFSET
, && case_sem_INSN_LDA_INDIRECT_OFFSET
},
149 { I960BASE_INSN_LDA_INDIRECT
, && case_sem_INSN_LDA_INDIRECT
},
150 { I960BASE_INSN_LDA_INDIRECT_INDEX
, && case_sem_INSN_LDA_INDIRECT_INDEX
},
151 { I960BASE_INSN_LDA_DISP
, && case_sem_INSN_LDA_DISP
},
152 { I960BASE_INSN_LDA_INDIRECT_DISP
, && case_sem_INSN_LDA_INDIRECT_DISP
},
153 { I960BASE_INSN_LDA_INDEX_DISP
, && case_sem_INSN_LDA_INDEX_DISP
},
154 { I960BASE_INSN_LDA_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDA_INDIRECT_INDEX_DISP
},
155 { I960BASE_INSN_LD_OFFSET
, && case_sem_INSN_LD_OFFSET
},
156 { I960BASE_INSN_LD_INDIRECT_OFFSET
, && case_sem_INSN_LD_INDIRECT_OFFSET
},
157 { I960BASE_INSN_LD_INDIRECT
, && case_sem_INSN_LD_INDIRECT
},
158 { I960BASE_INSN_LD_INDIRECT_INDEX
, && case_sem_INSN_LD_INDIRECT_INDEX
},
159 { I960BASE_INSN_LD_DISP
, && case_sem_INSN_LD_DISP
},
160 { I960BASE_INSN_LD_INDIRECT_DISP
, && case_sem_INSN_LD_INDIRECT_DISP
},
161 { I960BASE_INSN_LD_INDEX_DISP
, && case_sem_INSN_LD_INDEX_DISP
},
162 { I960BASE_INSN_LD_INDIRECT_INDEX_DISP
, && case_sem_INSN_LD_INDIRECT_INDEX_DISP
},
163 { I960BASE_INSN_LDOB_OFFSET
, && case_sem_INSN_LDOB_OFFSET
},
164 { I960BASE_INSN_LDOB_INDIRECT_OFFSET
, && case_sem_INSN_LDOB_INDIRECT_OFFSET
},
165 { I960BASE_INSN_LDOB_INDIRECT
, && case_sem_INSN_LDOB_INDIRECT
},
166 { I960BASE_INSN_LDOB_INDIRECT_INDEX
, && case_sem_INSN_LDOB_INDIRECT_INDEX
},
167 { I960BASE_INSN_LDOB_DISP
, && case_sem_INSN_LDOB_DISP
},
168 { I960BASE_INSN_LDOB_INDIRECT_DISP
, && case_sem_INSN_LDOB_INDIRECT_DISP
},
169 { I960BASE_INSN_LDOB_INDEX_DISP
, && case_sem_INSN_LDOB_INDEX_DISP
},
170 { I960BASE_INSN_LDOB_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDOB_INDIRECT_INDEX_DISP
},
171 { I960BASE_INSN_LDOS_OFFSET
, && case_sem_INSN_LDOS_OFFSET
},
172 { I960BASE_INSN_LDOS_INDIRECT_OFFSET
, && case_sem_INSN_LDOS_INDIRECT_OFFSET
},
173 { I960BASE_INSN_LDOS_INDIRECT
, && case_sem_INSN_LDOS_INDIRECT
},
174 { I960BASE_INSN_LDOS_INDIRECT_INDEX
, && case_sem_INSN_LDOS_INDIRECT_INDEX
},
175 { I960BASE_INSN_LDOS_DISP
, && case_sem_INSN_LDOS_DISP
},
176 { I960BASE_INSN_LDOS_INDIRECT_DISP
, && case_sem_INSN_LDOS_INDIRECT_DISP
},
177 { I960BASE_INSN_LDOS_INDEX_DISP
, && case_sem_INSN_LDOS_INDEX_DISP
},
178 { I960BASE_INSN_LDOS_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDOS_INDIRECT_INDEX_DISP
},
179 { I960BASE_INSN_LDIB_OFFSET
, && case_sem_INSN_LDIB_OFFSET
},
180 { I960BASE_INSN_LDIB_INDIRECT_OFFSET
, && case_sem_INSN_LDIB_INDIRECT_OFFSET
},
181 { I960BASE_INSN_LDIB_INDIRECT
, && case_sem_INSN_LDIB_INDIRECT
},
182 { I960BASE_INSN_LDIB_INDIRECT_INDEX
, && case_sem_INSN_LDIB_INDIRECT_INDEX
},
183 { I960BASE_INSN_LDIB_DISP
, && case_sem_INSN_LDIB_DISP
},
184 { I960BASE_INSN_LDIB_INDIRECT_DISP
, && case_sem_INSN_LDIB_INDIRECT_DISP
},
185 { I960BASE_INSN_LDIB_INDEX_DISP
, && case_sem_INSN_LDIB_INDEX_DISP
},
186 { I960BASE_INSN_LDIB_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDIB_INDIRECT_INDEX_DISP
},
187 { I960BASE_INSN_LDIS_OFFSET
, && case_sem_INSN_LDIS_OFFSET
},
188 { I960BASE_INSN_LDIS_INDIRECT_OFFSET
, && case_sem_INSN_LDIS_INDIRECT_OFFSET
},
189 { I960BASE_INSN_LDIS_INDIRECT
, && case_sem_INSN_LDIS_INDIRECT
},
190 { I960BASE_INSN_LDIS_INDIRECT_INDEX
, && case_sem_INSN_LDIS_INDIRECT_INDEX
},
191 { I960BASE_INSN_LDIS_DISP
, && case_sem_INSN_LDIS_DISP
},
192 { I960BASE_INSN_LDIS_INDIRECT_DISP
, && case_sem_INSN_LDIS_INDIRECT_DISP
},
193 { I960BASE_INSN_LDIS_INDEX_DISP
, && case_sem_INSN_LDIS_INDEX_DISP
},
194 { I960BASE_INSN_LDIS_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDIS_INDIRECT_INDEX_DISP
},
195 { I960BASE_INSN_LDL_OFFSET
, && case_sem_INSN_LDL_OFFSET
},
196 { I960BASE_INSN_LDL_INDIRECT_OFFSET
, && case_sem_INSN_LDL_INDIRECT_OFFSET
},
197 { I960BASE_INSN_LDL_INDIRECT
, && case_sem_INSN_LDL_INDIRECT
},
198 { I960BASE_INSN_LDL_INDIRECT_INDEX
, && case_sem_INSN_LDL_INDIRECT_INDEX
},
199 { I960BASE_INSN_LDL_DISP
, && case_sem_INSN_LDL_DISP
},
200 { I960BASE_INSN_LDL_INDIRECT_DISP
, && case_sem_INSN_LDL_INDIRECT_DISP
},
201 { I960BASE_INSN_LDL_INDEX_DISP
, && case_sem_INSN_LDL_INDEX_DISP
},
202 { I960BASE_INSN_LDL_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDL_INDIRECT_INDEX_DISP
},
203 { I960BASE_INSN_LDT_OFFSET
, && case_sem_INSN_LDT_OFFSET
},
204 { I960BASE_INSN_LDT_INDIRECT_OFFSET
, && case_sem_INSN_LDT_INDIRECT_OFFSET
},
205 { I960BASE_INSN_LDT_INDIRECT
, && case_sem_INSN_LDT_INDIRECT
},
206 { I960BASE_INSN_LDT_INDIRECT_INDEX
, && case_sem_INSN_LDT_INDIRECT_INDEX
},
207 { I960BASE_INSN_LDT_DISP
, && case_sem_INSN_LDT_DISP
},
208 { I960BASE_INSN_LDT_INDIRECT_DISP
, && case_sem_INSN_LDT_INDIRECT_DISP
},
209 { I960BASE_INSN_LDT_INDEX_DISP
, && case_sem_INSN_LDT_INDEX_DISP
},
210 { I960BASE_INSN_LDT_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDT_INDIRECT_INDEX_DISP
},
211 { I960BASE_INSN_LDQ_OFFSET
, && case_sem_INSN_LDQ_OFFSET
},
212 { I960BASE_INSN_LDQ_INDIRECT_OFFSET
, && case_sem_INSN_LDQ_INDIRECT_OFFSET
},
213 { I960BASE_INSN_LDQ_INDIRECT
, && case_sem_INSN_LDQ_INDIRECT
},
214 { I960BASE_INSN_LDQ_INDIRECT_INDEX
, && case_sem_INSN_LDQ_INDIRECT_INDEX
},
215 { I960BASE_INSN_LDQ_DISP
, && case_sem_INSN_LDQ_DISP
},
216 { I960BASE_INSN_LDQ_INDIRECT_DISP
, && case_sem_INSN_LDQ_INDIRECT_DISP
},
217 { I960BASE_INSN_LDQ_INDEX_DISP
, && case_sem_INSN_LDQ_INDEX_DISP
},
218 { I960BASE_INSN_LDQ_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDQ_INDIRECT_INDEX_DISP
},
219 { I960BASE_INSN_ST_OFFSET
, && case_sem_INSN_ST_OFFSET
},
220 { I960BASE_INSN_ST_INDIRECT_OFFSET
, && case_sem_INSN_ST_INDIRECT_OFFSET
},
221 { I960BASE_INSN_ST_INDIRECT
, && case_sem_INSN_ST_INDIRECT
},
222 { I960BASE_INSN_ST_INDIRECT_INDEX
, && case_sem_INSN_ST_INDIRECT_INDEX
},
223 { I960BASE_INSN_ST_DISP
, && case_sem_INSN_ST_DISP
},
224 { I960BASE_INSN_ST_INDIRECT_DISP
, && case_sem_INSN_ST_INDIRECT_DISP
},
225 { I960BASE_INSN_ST_INDEX_DISP
, && case_sem_INSN_ST_INDEX_DISP
},
226 { I960BASE_INSN_ST_INDIRECT_INDEX_DISP
, && case_sem_INSN_ST_INDIRECT_INDEX_DISP
},
227 { I960BASE_INSN_STOB_OFFSET
, && case_sem_INSN_STOB_OFFSET
},
228 { I960BASE_INSN_STOB_INDIRECT_OFFSET
, && case_sem_INSN_STOB_INDIRECT_OFFSET
},
229 { I960BASE_INSN_STOB_INDIRECT
, && case_sem_INSN_STOB_INDIRECT
},
230 { I960BASE_INSN_STOB_INDIRECT_INDEX
, && case_sem_INSN_STOB_INDIRECT_INDEX
},
231 { I960BASE_INSN_STOB_DISP
, && case_sem_INSN_STOB_DISP
},
232 { I960BASE_INSN_STOB_INDIRECT_DISP
, && case_sem_INSN_STOB_INDIRECT_DISP
},
233 { I960BASE_INSN_STOB_INDEX_DISP
, && case_sem_INSN_STOB_INDEX_DISP
},
234 { I960BASE_INSN_STOB_INDIRECT_INDEX_DISP
, && case_sem_INSN_STOB_INDIRECT_INDEX_DISP
},
235 { I960BASE_INSN_STOS_OFFSET
, && case_sem_INSN_STOS_OFFSET
},
236 { I960BASE_INSN_STOS_INDIRECT_OFFSET
, && case_sem_INSN_STOS_INDIRECT_OFFSET
},
237 { I960BASE_INSN_STOS_INDIRECT
, && case_sem_INSN_STOS_INDIRECT
},
238 { I960BASE_INSN_STOS_INDIRECT_INDEX
, && case_sem_INSN_STOS_INDIRECT_INDEX
},
239 { I960BASE_INSN_STOS_DISP
, && case_sem_INSN_STOS_DISP
},
240 { I960BASE_INSN_STOS_INDIRECT_DISP
, && case_sem_INSN_STOS_INDIRECT_DISP
},
241 { I960BASE_INSN_STOS_INDEX_DISP
, && case_sem_INSN_STOS_INDEX_DISP
},
242 { I960BASE_INSN_STOS_INDIRECT_INDEX_DISP
, && case_sem_INSN_STOS_INDIRECT_INDEX_DISP
},
243 { I960BASE_INSN_STL_OFFSET
, && case_sem_INSN_STL_OFFSET
},
244 { I960BASE_INSN_STL_INDIRECT_OFFSET
, && case_sem_INSN_STL_INDIRECT_OFFSET
},
245 { I960BASE_INSN_STL_INDIRECT
, && case_sem_INSN_STL_INDIRECT
},
246 { I960BASE_INSN_STL_INDIRECT_INDEX
, && case_sem_INSN_STL_INDIRECT_INDEX
},
247 { I960BASE_INSN_STL_DISP
, && case_sem_INSN_STL_DISP
},
248 { I960BASE_INSN_STL_INDIRECT_DISP
, && case_sem_INSN_STL_INDIRECT_DISP
},
249 { I960BASE_INSN_STL_INDEX_DISP
, && case_sem_INSN_STL_INDEX_DISP
},
250 { I960BASE_INSN_STL_INDIRECT_INDEX_DISP
, && case_sem_INSN_STL_INDIRECT_INDEX_DISP
},
251 { I960BASE_INSN_STT_OFFSET
, && case_sem_INSN_STT_OFFSET
},
252 { I960BASE_INSN_STT_INDIRECT_OFFSET
, && case_sem_INSN_STT_INDIRECT_OFFSET
},
253 { I960BASE_INSN_STT_INDIRECT
, && case_sem_INSN_STT_INDIRECT
},
254 { I960BASE_INSN_STT_INDIRECT_INDEX
, && case_sem_INSN_STT_INDIRECT_INDEX
},
255 { I960BASE_INSN_STT_DISP
, && case_sem_INSN_STT_DISP
},
256 { I960BASE_INSN_STT_INDIRECT_DISP
, && case_sem_INSN_STT_INDIRECT_DISP
},
257 { I960BASE_INSN_STT_INDEX_DISP
, && case_sem_INSN_STT_INDEX_DISP
},
258 { I960BASE_INSN_STT_INDIRECT_INDEX_DISP
, && case_sem_INSN_STT_INDIRECT_INDEX_DISP
},
259 { I960BASE_INSN_STQ_OFFSET
, && case_sem_INSN_STQ_OFFSET
},
260 { I960BASE_INSN_STQ_INDIRECT_OFFSET
, && case_sem_INSN_STQ_INDIRECT_OFFSET
},
261 { I960BASE_INSN_STQ_INDIRECT
, && case_sem_INSN_STQ_INDIRECT
},
262 { I960BASE_INSN_STQ_INDIRECT_INDEX
, && case_sem_INSN_STQ_INDIRECT_INDEX
},
263 { I960BASE_INSN_STQ_DISP
, && case_sem_INSN_STQ_DISP
},
264 { I960BASE_INSN_STQ_INDIRECT_DISP
, && case_sem_INSN_STQ_INDIRECT_DISP
},
265 { I960BASE_INSN_STQ_INDEX_DISP
, && case_sem_INSN_STQ_INDEX_DISP
},
266 { I960BASE_INSN_STQ_INDIRECT_INDEX_DISP
, && case_sem_INSN_STQ_INDIRECT_INDEX_DISP
},
267 { I960BASE_INSN_CMPOBE_REG
, && case_sem_INSN_CMPOBE_REG
},
268 { I960BASE_INSN_CMPOBE_LIT
, && case_sem_INSN_CMPOBE_LIT
},
269 { I960BASE_INSN_CMPOBNE_REG
, && case_sem_INSN_CMPOBNE_REG
},
270 { I960BASE_INSN_CMPOBNE_LIT
, && case_sem_INSN_CMPOBNE_LIT
},
271 { I960BASE_INSN_CMPOBL_REG
, && case_sem_INSN_CMPOBL_REG
},
272 { I960BASE_INSN_CMPOBL_LIT
, && case_sem_INSN_CMPOBL_LIT
},
273 { I960BASE_INSN_CMPOBLE_REG
, && case_sem_INSN_CMPOBLE_REG
},
274 { I960BASE_INSN_CMPOBLE_LIT
, && case_sem_INSN_CMPOBLE_LIT
},
275 { I960BASE_INSN_CMPOBG_REG
, && case_sem_INSN_CMPOBG_REG
},
276 { I960BASE_INSN_CMPOBG_LIT
, && case_sem_INSN_CMPOBG_LIT
},
277 { I960BASE_INSN_CMPOBGE_REG
, && case_sem_INSN_CMPOBGE_REG
},
278 { I960BASE_INSN_CMPOBGE_LIT
, && case_sem_INSN_CMPOBGE_LIT
},
279 { I960BASE_INSN_CMPIBE_REG
, && case_sem_INSN_CMPIBE_REG
},
280 { I960BASE_INSN_CMPIBE_LIT
, && case_sem_INSN_CMPIBE_LIT
},
281 { I960BASE_INSN_CMPIBNE_REG
, && case_sem_INSN_CMPIBNE_REG
},
282 { I960BASE_INSN_CMPIBNE_LIT
, && case_sem_INSN_CMPIBNE_LIT
},
283 { I960BASE_INSN_CMPIBL_REG
, && case_sem_INSN_CMPIBL_REG
},
284 { I960BASE_INSN_CMPIBL_LIT
, && case_sem_INSN_CMPIBL_LIT
},
285 { I960BASE_INSN_CMPIBLE_REG
, && case_sem_INSN_CMPIBLE_REG
},
286 { I960BASE_INSN_CMPIBLE_LIT
, && case_sem_INSN_CMPIBLE_LIT
},
287 { I960BASE_INSN_CMPIBG_REG
, && case_sem_INSN_CMPIBG_REG
},
288 { I960BASE_INSN_CMPIBG_LIT
, && case_sem_INSN_CMPIBG_LIT
},
289 { I960BASE_INSN_CMPIBGE_REG
, && case_sem_INSN_CMPIBGE_REG
},
290 { I960BASE_INSN_CMPIBGE_LIT
, && case_sem_INSN_CMPIBGE_LIT
},
291 { I960BASE_INSN_BBC_REG
, && case_sem_INSN_BBC_REG
},
292 { I960BASE_INSN_BBC_LIT
, && case_sem_INSN_BBC_LIT
},
293 { I960BASE_INSN_BBS_REG
, && case_sem_INSN_BBS_REG
},
294 { I960BASE_INSN_BBS_LIT
, && case_sem_INSN_BBS_LIT
},
295 { I960BASE_INSN_CMPI
, && case_sem_INSN_CMPI
},
296 { I960BASE_INSN_CMPI1
, && case_sem_INSN_CMPI1
},
297 { I960BASE_INSN_CMPI2
, && case_sem_INSN_CMPI2
},
298 { I960BASE_INSN_CMPI3
, && case_sem_INSN_CMPI3
},
299 { I960BASE_INSN_CMPO
, && case_sem_INSN_CMPO
},
300 { I960BASE_INSN_CMPO1
, && case_sem_INSN_CMPO1
},
301 { I960BASE_INSN_CMPO2
, && case_sem_INSN_CMPO2
},
302 { I960BASE_INSN_CMPO3
, && case_sem_INSN_CMPO3
},
303 { I960BASE_INSN_TESTNO_REG
, && case_sem_INSN_TESTNO_REG
},
304 { I960BASE_INSN_TESTG_REG
, && case_sem_INSN_TESTG_REG
},
305 { I960BASE_INSN_TESTE_REG
, && case_sem_INSN_TESTE_REG
},
306 { I960BASE_INSN_TESTGE_REG
, && case_sem_INSN_TESTGE_REG
},
307 { I960BASE_INSN_TESTL_REG
, && case_sem_INSN_TESTL_REG
},
308 { I960BASE_INSN_TESTNE_REG
, && case_sem_INSN_TESTNE_REG
},
309 { I960BASE_INSN_TESTLE_REG
, && case_sem_INSN_TESTLE_REG
},
310 { I960BASE_INSN_TESTO_REG
, && case_sem_INSN_TESTO_REG
},
311 { I960BASE_INSN_BNO
, && case_sem_INSN_BNO
},
312 { I960BASE_INSN_BG
, && case_sem_INSN_BG
},
313 { I960BASE_INSN_BE
, && case_sem_INSN_BE
},
314 { I960BASE_INSN_BGE
, && case_sem_INSN_BGE
},
315 { I960BASE_INSN_BL
, && case_sem_INSN_BL
},
316 { I960BASE_INSN_BNE
, && case_sem_INSN_BNE
},
317 { I960BASE_INSN_BLE
, && case_sem_INSN_BLE
},
318 { I960BASE_INSN_BO
, && case_sem_INSN_BO
},
319 { I960BASE_INSN_B
, && case_sem_INSN_B
},
320 { I960BASE_INSN_BX_INDIRECT_OFFSET
, && case_sem_INSN_BX_INDIRECT_OFFSET
},
321 { I960BASE_INSN_BX_INDIRECT
, && case_sem_INSN_BX_INDIRECT
},
322 { I960BASE_INSN_BX_INDIRECT_INDEX
, && case_sem_INSN_BX_INDIRECT_INDEX
},
323 { I960BASE_INSN_BX_DISP
, && case_sem_INSN_BX_DISP
},
324 { I960BASE_INSN_BX_INDIRECT_DISP
, && case_sem_INSN_BX_INDIRECT_DISP
},
325 { I960BASE_INSN_CALLX_DISP
, && case_sem_INSN_CALLX_DISP
},
326 { I960BASE_INSN_CALLX_INDIRECT
, && case_sem_INSN_CALLX_INDIRECT
},
327 { I960BASE_INSN_CALLX_INDIRECT_OFFSET
, && case_sem_INSN_CALLX_INDIRECT_OFFSET
},
328 { I960BASE_INSN_RET
, && case_sem_INSN_RET
},
329 { I960BASE_INSN_CALLS
, && case_sem_INSN_CALLS
},
330 { I960BASE_INSN_FMARK
, && case_sem_INSN_FMARK
},
331 { I960BASE_INSN_FLUSHREG
, && case_sem_INSN_FLUSHREG
},
336 for (i
= 0; labels
[i
].label
!= 0; ++i
)
338 CPU_IDESC (current_cpu
) [labels
[i
].index
].sem_fast_lab
= labels
[i
].label
;
340 CPU_IDESC (current_cpu
) [labels
[i
].index
].sem_full_lab
= labels
[i
].label
;
344 #endif /* DEFINE_LABELS */
348 /* If hyper-fast [well not unnecessarily slow] execution is selected, turn
349 off frills like tracing and profiling. */
350 /* FIXME: A better way would be to have TRACE_RESULT check for something
351 that can cause it to be optimized out. Another way would be to emit
352 special handlers into the instruction "stream". */
356 #define TRACE_RESULT(cpu, abuf, name, type, val)
360 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
366 /* Branch to next handler without going around main loop. */
367 #define NEXT(vpc) goto * SEM_ARGBUF (vpc) -> semantic.sem_case
368 SWITCH (sem
, SEM_ARGBUF (vpc
) -> semantic
.sem_case
)
370 #else /* ! WITH_SCACHE_PBB */
372 #define NEXT(vpc) BREAK (sem)
375 SWITCH (sem
, SEM_ARGBUF (sc
) -> idesc
->sem_fast_lab
)
377 SWITCH (sem
, SEM_ARGBUF (sc
) -> idesc
->sem_full_lab
)
380 SWITCH (sem
, SEM_ARGBUF (sc
) -> idesc
->num
)
383 #endif /* ! WITH_SCACHE_PBB */
387 CASE (sem
, INSN_X_INVALID
) : /* --invalid-- */
389 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
390 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
391 #define FLD(f) abuf->fields.fmt_empty.f
392 int UNUSED written
= 0;
393 IADDR UNUSED pc
= abuf
->addr
;
394 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
398 /* Update the recorded pc in the cpu state struct. */
401 sim_engine_invalid_insn (current_cpu
, pc
);
402 sim_io_error (CPU_STATE (current_cpu
), "invalid insn not handled\n");
410 CASE (sem
, INSN_X_AFTER
) : /* --after-- */
412 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
413 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
414 #define FLD(f) abuf->fields.fmt_empty.f
415 int UNUSED written
= 0;
416 IADDR UNUSED pc
= abuf
->addr
;
417 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
420 #if WITH_SCACHE_PBB_I960BASE
421 i960base_pbb_after (current_cpu
, sem_arg
);
429 CASE (sem
, INSN_X_BEFORE
) : /* --before-- */
431 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
432 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
433 #define FLD(f) abuf->fields.fmt_empty.f
434 int UNUSED written
= 0;
435 IADDR UNUSED pc
= abuf
->addr
;
436 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
439 #if WITH_SCACHE_PBB_I960BASE
440 i960base_pbb_before (current_cpu
, sem_arg
);
448 CASE (sem
, INSN_X_CTI_CHAIN
) : /* --cti-chain-- */
450 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
451 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
452 #define FLD(f) abuf->fields.fmt_empty.f
453 int UNUSED written
= 0;
454 IADDR UNUSED pc
= abuf
->addr
;
455 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
458 #if WITH_SCACHE_PBB_I960BASE
460 vpc
= i960base_pbb_cti_chain (current_cpu
, sem_arg
,
461 pbb_br_npc_ptr
, pbb_br_npc
);
464 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
465 vpc
= i960base_pbb_cti_chain (current_cpu
, sem_arg
,
466 CPU_PBB_BR_NPC_PTR (current_cpu
),
467 CPU_PBB_BR_NPC (current_cpu
));
476 CASE (sem
, INSN_X_CHAIN
) : /* --chain-- */
478 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
479 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
480 #define FLD(f) abuf->fields.fmt_empty.f
481 int UNUSED written
= 0;
482 IADDR UNUSED pc
= abuf
->addr
;
483 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
486 #if WITH_SCACHE_PBB_I960BASE
487 vpc
= i960base_pbb_chain (current_cpu
, sem_arg
);
498 CASE (sem
, INSN_X_BEGIN
) : /* --begin-- */
500 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
501 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
502 #define FLD(f) abuf->fields.fmt_empty.f
503 int UNUSED written
= 0;
504 IADDR UNUSED pc
= abuf
->addr
;
505 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
508 #if WITH_SCACHE_PBB_I960BASE
510 /* In the switch case FAST_P is a constant, allowing several optimizations
511 in any called inline functions. */
512 vpc
= i960base_pbb_begin (current_cpu
, FAST_P
);
514 vpc
= i960base_pbb_begin (current_cpu
, STATE_RUN_FAST_P (CPU_STATE (current_cpu
)));
523 CASE (sem
, INSN_MULO
) : /* mulo $src1, $src2, $dst */
525 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
526 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
527 #define FLD(f) abuf->fields.fmt_mulo.f
528 int UNUSED written
= 0;
529 IADDR UNUSED pc
= abuf
->addr
;
530 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
533 SI opval
= MULSI (* FLD (i_src1
), * FLD (i_src2
));
534 * FLD (i_dst
) = opval
;
535 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
542 CASE (sem
, INSN_MULO1
) : /* mulo $lit1, $src2, $dst */
544 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
545 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
546 #define FLD(f) abuf->fields.fmt_mulo1.f
547 int UNUSED written
= 0;
548 IADDR UNUSED pc
= abuf
->addr
;
549 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
552 SI opval
= MULSI (FLD (f_src1
), * FLD (i_src2
));
553 * FLD (i_dst
) = opval
;
554 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
561 CASE (sem
, INSN_MULO2
) : /* mulo $src1, $lit2, $dst */
563 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
564 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
565 #define FLD(f) abuf->fields.fmt_mulo2.f
566 int UNUSED written
= 0;
567 IADDR UNUSED pc
= abuf
->addr
;
568 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
571 SI opval
= MULSI (* FLD (i_src1
), FLD (f_src2
));
572 * FLD (i_dst
) = opval
;
573 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
580 CASE (sem
, INSN_MULO3
) : /* mulo $lit1, $lit2, $dst */
582 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
583 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
584 #define FLD(f) abuf->fields.fmt_mulo3.f
585 int UNUSED written
= 0;
586 IADDR UNUSED pc
= abuf
->addr
;
587 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
590 SI opval
= MULSI (FLD (f_src1
), FLD (f_src2
));
591 * FLD (i_dst
) = opval
;
592 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
599 CASE (sem
, INSN_REMO
) : /* remo $src1, $src2, $dst */
601 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
602 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
603 #define FLD(f) abuf->fields.fmt_mulo.f
604 int UNUSED written
= 0;
605 IADDR UNUSED pc
= abuf
->addr
;
606 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
609 SI opval
= UMODSI (* FLD (i_src2
), * FLD (i_src1
));
610 * FLD (i_dst
) = opval
;
611 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
618 CASE (sem
, INSN_REMO1
) : /* remo $lit1, $src2, $dst */
620 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
621 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
622 #define FLD(f) abuf->fields.fmt_mulo1.f
623 int UNUSED written
= 0;
624 IADDR UNUSED pc
= abuf
->addr
;
625 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
628 SI opval
= UMODSI (* FLD (i_src2
), FLD (f_src1
));
629 * FLD (i_dst
) = opval
;
630 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
637 CASE (sem
, INSN_REMO2
) : /* remo $src1, $lit2, $dst */
639 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
640 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
641 #define FLD(f) abuf->fields.fmt_mulo2.f
642 int UNUSED written
= 0;
643 IADDR UNUSED pc
= abuf
->addr
;
644 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
647 SI opval
= UMODSI (FLD (f_src2
), * FLD (i_src1
));
648 * FLD (i_dst
) = opval
;
649 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
656 CASE (sem
, INSN_REMO3
) : /* remo $lit1, $lit2, $dst */
658 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
659 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
660 #define FLD(f) abuf->fields.fmt_mulo3.f
661 int UNUSED written
= 0;
662 IADDR UNUSED pc
= abuf
->addr
;
663 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
666 SI opval
= UMODSI (FLD (f_src2
), FLD (f_src1
));
667 * FLD (i_dst
) = opval
;
668 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
675 CASE (sem
, INSN_DIVO
) : /* divo $src1, $src2, $dst */
677 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
678 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
679 #define FLD(f) abuf->fields.fmt_mulo.f
680 int UNUSED written
= 0;
681 IADDR UNUSED pc
= abuf
->addr
;
682 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
685 SI opval
= UDIVSI (* FLD (i_src2
), * FLD (i_src1
));
686 * FLD (i_dst
) = opval
;
687 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
694 CASE (sem
, INSN_DIVO1
) : /* divo $lit1, $src2, $dst */
696 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
697 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
698 #define FLD(f) abuf->fields.fmt_mulo1.f
699 int UNUSED written
= 0;
700 IADDR UNUSED pc
= abuf
->addr
;
701 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
704 SI opval
= UDIVSI (* FLD (i_src2
), FLD (f_src1
));
705 * FLD (i_dst
) = opval
;
706 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
713 CASE (sem
, INSN_DIVO2
) : /* divo $src1, $lit2, $dst */
715 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
716 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
717 #define FLD(f) abuf->fields.fmt_mulo2.f
718 int UNUSED written
= 0;
719 IADDR UNUSED pc
= abuf
->addr
;
720 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
723 SI opval
= UDIVSI (FLD (f_src2
), * FLD (i_src1
));
724 * FLD (i_dst
) = opval
;
725 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
732 CASE (sem
, INSN_DIVO3
) : /* divo $lit1, $lit2, $dst */
734 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
735 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
736 #define FLD(f) abuf->fields.fmt_mulo3.f
737 int UNUSED written
= 0;
738 IADDR UNUSED pc
= abuf
->addr
;
739 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
742 SI opval
= UDIVSI (FLD (f_src2
), FLD (f_src1
));
743 * FLD (i_dst
) = opval
;
744 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
751 CASE (sem
, INSN_REMI
) : /* remi $src1, $src2, $dst */
753 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
754 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
755 #define FLD(f) abuf->fields.fmt_mulo.f
756 int UNUSED written
= 0;
757 IADDR UNUSED pc
= abuf
->addr
;
758 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
761 SI opval
= MODSI (* FLD (i_src2
), * FLD (i_src1
));
762 * FLD (i_dst
) = opval
;
763 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
770 CASE (sem
, INSN_REMI1
) : /* remi $lit1, $src2, $dst */
772 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
773 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
774 #define FLD(f) abuf->fields.fmt_mulo1.f
775 int UNUSED written
= 0;
776 IADDR UNUSED pc
= abuf
->addr
;
777 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
780 SI opval
= MODSI (* FLD (i_src2
), FLD (f_src1
));
781 * FLD (i_dst
) = opval
;
782 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
789 CASE (sem
, INSN_REMI2
) : /* remi $src1, $lit2, $dst */
791 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
792 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
793 #define FLD(f) abuf->fields.fmt_mulo2.f
794 int UNUSED written
= 0;
795 IADDR UNUSED pc
= abuf
->addr
;
796 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
799 SI opval
= MODSI (FLD (f_src2
), * FLD (i_src1
));
800 * FLD (i_dst
) = opval
;
801 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
808 CASE (sem
, INSN_REMI3
) : /* remi $lit1, $lit2, $dst */
810 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
811 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
812 #define FLD(f) abuf->fields.fmt_mulo3.f
813 int UNUSED written
= 0;
814 IADDR UNUSED pc
= abuf
->addr
;
815 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
818 SI opval
= MODSI (FLD (f_src2
), FLD (f_src1
));
819 * FLD (i_dst
) = opval
;
820 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
827 CASE (sem
, INSN_DIVI
) : /* divi $src1, $src2, $dst */
829 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
830 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
831 #define FLD(f) abuf->fields.fmt_mulo.f
832 int UNUSED written
= 0;
833 IADDR UNUSED pc
= abuf
->addr
;
834 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
837 SI opval
= DIVSI (* FLD (i_src2
), * FLD (i_src1
));
838 * FLD (i_dst
) = opval
;
839 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
846 CASE (sem
, INSN_DIVI1
) : /* divi $lit1, $src2, $dst */
848 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
849 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
850 #define FLD(f) abuf->fields.fmt_mulo1.f
851 int UNUSED written
= 0;
852 IADDR UNUSED pc
= abuf
->addr
;
853 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
856 SI opval
= DIVSI (* FLD (i_src2
), FLD (f_src1
));
857 * FLD (i_dst
) = opval
;
858 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
865 CASE (sem
, INSN_DIVI2
) : /* divi $src1, $lit2, $dst */
867 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
868 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
869 #define FLD(f) abuf->fields.fmt_mulo2.f
870 int UNUSED written
= 0;
871 IADDR UNUSED pc
= abuf
->addr
;
872 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
875 SI opval
= DIVSI (FLD (f_src2
), * FLD (i_src1
));
876 * FLD (i_dst
) = opval
;
877 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
884 CASE (sem
, INSN_DIVI3
) : /* divi $lit1, $lit2, $dst */
886 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
887 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
888 #define FLD(f) abuf->fields.fmt_mulo3.f
889 int UNUSED written
= 0;
890 IADDR UNUSED pc
= abuf
->addr
;
891 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
894 SI opval
= DIVSI (FLD (f_src2
), FLD (f_src1
));
895 * FLD (i_dst
) = opval
;
896 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
903 CASE (sem
, INSN_ADDO
) : /* addo $src1, $src2, $dst */
905 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
906 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
907 #define FLD(f) abuf->fields.fmt_mulo.f
908 int UNUSED written
= 0;
909 IADDR UNUSED pc
= abuf
->addr
;
910 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
913 SI opval
= ADDSI (* FLD (i_src1
), * FLD (i_src2
));
914 * FLD (i_dst
) = opval
;
915 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
922 CASE (sem
, INSN_ADDO1
) : /* addo $lit1, $src2, $dst */
924 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
925 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
926 #define FLD(f) abuf->fields.fmt_mulo1.f
927 int UNUSED written
= 0;
928 IADDR UNUSED pc
= abuf
->addr
;
929 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
932 SI opval
= ADDSI (FLD (f_src1
), * FLD (i_src2
));
933 * FLD (i_dst
) = opval
;
934 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
941 CASE (sem
, INSN_ADDO2
) : /* addo $src1, $lit2, $dst */
943 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
944 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
945 #define FLD(f) abuf->fields.fmt_mulo2.f
946 int UNUSED written
= 0;
947 IADDR UNUSED pc
= abuf
->addr
;
948 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
951 SI opval
= ADDSI (* FLD (i_src1
), FLD (f_src2
));
952 * FLD (i_dst
) = opval
;
953 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
960 CASE (sem
, INSN_ADDO3
) : /* addo $lit1, $lit2, $dst */
962 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
963 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
964 #define FLD(f) abuf->fields.fmt_mulo3.f
965 int UNUSED written
= 0;
966 IADDR UNUSED pc
= abuf
->addr
;
967 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
970 SI opval
= ADDSI (FLD (f_src1
), FLD (f_src2
));
971 * FLD (i_dst
) = opval
;
972 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
979 CASE (sem
, INSN_SUBO
) : /* subo $src1, $src2, $dst */
981 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
982 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
983 #define FLD(f) abuf->fields.fmt_mulo.f
984 int UNUSED written
= 0;
985 IADDR UNUSED pc
= abuf
->addr
;
986 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
989 SI opval
= SUBSI (* FLD (i_src2
), * FLD (i_src1
));
990 * FLD (i_dst
) = opval
;
991 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
998 CASE (sem
, INSN_SUBO1
) : /* subo $lit1, $src2, $dst */
1000 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1001 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1002 #define FLD(f) abuf->fields.fmt_mulo1.f
1003 int UNUSED written
= 0;
1004 IADDR UNUSED pc
= abuf
->addr
;
1005 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1008 SI opval
= SUBSI (* FLD (i_src2
), FLD (f_src1
));
1009 * FLD (i_dst
) = opval
;
1010 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1017 CASE (sem
, INSN_SUBO2
) : /* subo $src1, $lit2, $dst */
1019 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1020 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1021 #define FLD(f) abuf->fields.fmt_mulo2.f
1022 int UNUSED written
= 0;
1023 IADDR UNUSED pc
= abuf
->addr
;
1024 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1027 SI opval
= SUBSI (FLD (f_src2
), * FLD (i_src1
));
1028 * FLD (i_dst
) = opval
;
1029 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1036 CASE (sem
, INSN_SUBO3
) : /* subo $lit1, $lit2, $dst */
1038 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1039 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1040 #define FLD(f) abuf->fields.fmt_mulo3.f
1041 int UNUSED written
= 0;
1042 IADDR UNUSED pc
= abuf
->addr
;
1043 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1046 SI opval
= SUBSI (FLD (f_src2
), FLD (f_src1
));
1047 * FLD (i_dst
) = opval
;
1048 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1055 CASE (sem
, INSN_NOTBIT
) : /* notbit $src1, $src2, $dst */
1057 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1058 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1059 #define FLD(f) abuf->fields.fmt_notbit.f
1060 int UNUSED written
= 0;
1061 IADDR UNUSED pc
= abuf
->addr
;
1062 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1065 SI opval
= XORSI (SLLSI (1, * FLD (i_src1
)), * FLD (i_src2
));
1066 * FLD (i_dst
) = opval
;
1067 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1074 CASE (sem
, INSN_NOTBIT1
) : /* notbit $lit1, $src2, $dst */
1076 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1077 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1078 #define FLD(f) abuf->fields.fmt_notbit1.f
1079 int UNUSED written
= 0;
1080 IADDR UNUSED pc
= abuf
->addr
;
1081 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1084 SI opval
= XORSI (SLLSI (1, FLD (f_src1
)), * FLD (i_src2
));
1085 * FLD (i_dst
) = opval
;
1086 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1093 CASE (sem
, INSN_NOTBIT2
) : /* notbit $src1, $lit2, $dst */
1095 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1096 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1097 #define FLD(f) abuf->fields.fmt_notbit2.f
1098 int UNUSED written
= 0;
1099 IADDR UNUSED pc
= abuf
->addr
;
1100 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1103 SI opval
= XORSI (SLLSI (1, * FLD (i_src1
)), FLD (f_src2
));
1104 * FLD (i_dst
) = opval
;
1105 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1112 CASE (sem
, INSN_NOTBIT3
) : /* notbit $lit1, $lit2, $dst */
1114 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1115 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1116 #define FLD(f) abuf->fields.fmt_notbit3.f
1117 int UNUSED written
= 0;
1118 IADDR UNUSED pc
= abuf
->addr
;
1119 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1122 SI opval
= XORSI (SLLSI (1, FLD (f_src1
)), FLD (f_src2
));
1123 * FLD (i_dst
) = opval
;
1124 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1131 CASE (sem
, INSN_AND
) : /* and $src1, $src2, $dst */
1133 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1134 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1135 #define FLD(f) abuf->fields.fmt_mulo.f
1136 int UNUSED written
= 0;
1137 IADDR UNUSED pc
= abuf
->addr
;
1138 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1141 SI opval
= ANDSI (* FLD (i_src1
), * FLD (i_src2
));
1142 * FLD (i_dst
) = opval
;
1143 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1150 CASE (sem
, INSN_AND1
) : /* and $lit1, $src2, $dst */
1152 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1153 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1154 #define FLD(f) abuf->fields.fmt_mulo1.f
1155 int UNUSED written
= 0;
1156 IADDR UNUSED pc
= abuf
->addr
;
1157 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1160 SI opval
= ANDSI (FLD (f_src1
), * FLD (i_src2
));
1161 * FLD (i_dst
) = opval
;
1162 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1169 CASE (sem
, INSN_AND2
) : /* and $src1, $lit2, $dst */
1171 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1172 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1173 #define FLD(f) abuf->fields.fmt_mulo2.f
1174 int UNUSED written
= 0;
1175 IADDR UNUSED pc
= abuf
->addr
;
1176 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1179 SI opval
= ANDSI (* FLD (i_src1
), FLD (f_src2
));
1180 * FLD (i_dst
) = opval
;
1181 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1188 CASE (sem
, INSN_AND3
) : /* and $lit1, $lit2, $dst */
1190 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1191 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1192 #define FLD(f) abuf->fields.fmt_mulo3.f
1193 int UNUSED written
= 0;
1194 IADDR UNUSED pc
= abuf
->addr
;
1195 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1198 SI opval
= ANDSI (FLD (f_src1
), FLD (f_src2
));
1199 * FLD (i_dst
) = opval
;
1200 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1207 CASE (sem
, INSN_ANDNOT
) : /* andnot $src1, $src2, $dst */
1209 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1210 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1211 #define FLD(f) abuf->fields.fmt_mulo.f
1212 int UNUSED written
= 0;
1213 IADDR UNUSED pc
= abuf
->addr
;
1214 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1217 SI opval
= ANDSI (* FLD (i_src2
), INVSI (* FLD (i_src1
)));
1218 * FLD (i_dst
) = opval
;
1219 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1226 CASE (sem
, INSN_ANDNOT1
) : /* andnot $lit1, $src2, $dst */
1228 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1229 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1230 #define FLD(f) abuf->fields.fmt_mulo1.f
1231 int UNUSED written
= 0;
1232 IADDR UNUSED pc
= abuf
->addr
;
1233 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1236 SI opval
= ANDSI (* FLD (i_src2
), INVSI (FLD (f_src1
)));
1237 * FLD (i_dst
) = opval
;
1238 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1245 CASE (sem
, INSN_ANDNOT2
) : /* andnot $src1, $lit2, $dst */
1247 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1248 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1249 #define FLD(f) abuf->fields.fmt_mulo2.f
1250 int UNUSED written
= 0;
1251 IADDR UNUSED pc
= abuf
->addr
;
1252 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1255 SI opval
= ANDSI (FLD (f_src2
), INVSI (* FLD (i_src1
)));
1256 * FLD (i_dst
) = opval
;
1257 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1264 CASE (sem
, INSN_ANDNOT3
) : /* andnot $lit1, $lit2, $dst */
1266 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1267 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1268 #define FLD(f) abuf->fields.fmt_mulo3.f
1269 int UNUSED written
= 0;
1270 IADDR UNUSED pc
= abuf
->addr
;
1271 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1274 SI opval
= ANDSI (FLD (f_src2
), INVSI (FLD (f_src1
)));
1275 * FLD (i_dst
) = opval
;
1276 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1283 CASE (sem
, INSN_SETBIT
) : /* setbit $src1, $src2, $dst */
1285 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1286 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1287 #define FLD(f) abuf->fields.fmt_notbit.f
1288 int UNUSED written
= 0;
1289 IADDR UNUSED pc
= abuf
->addr
;
1290 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1293 SI opval
= ORSI (SLLSI (1, * FLD (i_src1
)), * FLD (i_src2
));
1294 * FLD (i_dst
) = opval
;
1295 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1302 CASE (sem
, INSN_SETBIT1
) : /* setbit $lit1, $src2, $dst */
1304 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1305 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1306 #define FLD(f) abuf->fields.fmt_notbit1.f
1307 int UNUSED written
= 0;
1308 IADDR UNUSED pc
= abuf
->addr
;
1309 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1312 SI opval
= ORSI (SLLSI (1, FLD (f_src1
)), * FLD (i_src2
));
1313 * FLD (i_dst
) = opval
;
1314 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1321 CASE (sem
, INSN_SETBIT2
) : /* setbit $src1, $lit2, $dst */
1323 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1324 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1325 #define FLD(f) abuf->fields.fmt_notbit2.f
1326 int UNUSED written
= 0;
1327 IADDR UNUSED pc
= abuf
->addr
;
1328 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1331 SI opval
= ORSI (SLLSI (1, * FLD (i_src1
)), FLD (f_src2
));
1332 * FLD (i_dst
) = opval
;
1333 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1340 CASE (sem
, INSN_SETBIT3
) : /* setbit $lit1, $lit2, $dst */
1342 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1343 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1344 #define FLD(f) abuf->fields.fmt_notbit3.f
1345 int UNUSED written
= 0;
1346 IADDR UNUSED pc
= abuf
->addr
;
1347 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1350 SI opval
= ORSI (SLLSI (1, FLD (f_src1
)), FLD (f_src2
));
1351 * FLD (i_dst
) = opval
;
1352 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1359 CASE (sem
, INSN_NOTAND
) : /* notand $src1, $src2, $dst */
1361 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1362 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1363 #define FLD(f) abuf->fields.fmt_mulo.f
1364 int UNUSED written
= 0;
1365 IADDR UNUSED pc
= abuf
->addr
;
1366 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1369 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), * FLD (i_src1
));
1370 * FLD (i_dst
) = opval
;
1371 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1378 CASE (sem
, INSN_NOTAND1
) : /* notand $lit1, $src2, $dst */
1380 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1381 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1382 #define FLD(f) abuf->fields.fmt_mulo1.f
1383 int UNUSED written
= 0;
1384 IADDR UNUSED pc
= abuf
->addr
;
1385 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1388 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), FLD (f_src1
));
1389 * FLD (i_dst
) = opval
;
1390 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1397 CASE (sem
, INSN_NOTAND2
) : /* notand $src1, $lit2, $dst */
1399 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1400 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1401 #define FLD(f) abuf->fields.fmt_mulo2.f
1402 int UNUSED written
= 0;
1403 IADDR UNUSED pc
= abuf
->addr
;
1404 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1407 SI opval
= ANDSI (INVSI (FLD (f_src2
)), * FLD (i_src1
));
1408 * FLD (i_dst
) = opval
;
1409 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1416 CASE (sem
, INSN_NOTAND3
) : /* notand $lit1, $lit2, $dst */
1418 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1419 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1420 #define FLD(f) abuf->fields.fmt_mulo3.f
1421 int UNUSED written
= 0;
1422 IADDR UNUSED pc
= abuf
->addr
;
1423 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1426 SI opval
= ANDSI (INVSI (FLD (f_src2
)), FLD (f_src1
));
1427 * FLD (i_dst
) = opval
;
1428 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1435 CASE (sem
, INSN_XOR
) : /* xor $src1, $src2, $dst */
1437 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1438 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1439 #define FLD(f) abuf->fields.fmt_mulo.f
1440 int UNUSED written
= 0;
1441 IADDR UNUSED pc
= abuf
->addr
;
1442 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1445 SI opval
= XORSI (* FLD (i_src1
), * FLD (i_src2
));
1446 * FLD (i_dst
) = opval
;
1447 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1454 CASE (sem
, INSN_XOR1
) : /* xor $lit1, $src2, $dst */
1456 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1457 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1458 #define FLD(f) abuf->fields.fmt_mulo1.f
1459 int UNUSED written
= 0;
1460 IADDR UNUSED pc
= abuf
->addr
;
1461 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1464 SI opval
= XORSI (FLD (f_src1
), * FLD (i_src2
));
1465 * FLD (i_dst
) = opval
;
1466 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1473 CASE (sem
, INSN_XOR2
) : /* xor $src1, $lit2, $dst */
1475 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1476 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1477 #define FLD(f) abuf->fields.fmt_mulo2.f
1478 int UNUSED written
= 0;
1479 IADDR UNUSED pc
= abuf
->addr
;
1480 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1483 SI opval
= XORSI (* FLD (i_src1
), FLD (f_src2
));
1484 * FLD (i_dst
) = opval
;
1485 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1492 CASE (sem
, INSN_XOR3
) : /* xor $lit1, $lit2, $dst */
1494 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1495 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1496 #define FLD(f) abuf->fields.fmt_mulo3.f
1497 int UNUSED written
= 0;
1498 IADDR UNUSED pc
= abuf
->addr
;
1499 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1502 SI opval
= XORSI (FLD (f_src1
), FLD (f_src2
));
1503 * FLD (i_dst
) = opval
;
1504 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1511 CASE (sem
, INSN_OR
) : /* or $src1, $src2, $dst */
1513 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1514 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1515 #define FLD(f) abuf->fields.fmt_mulo.f
1516 int UNUSED written
= 0;
1517 IADDR UNUSED pc
= abuf
->addr
;
1518 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1521 SI opval
= ORSI (* FLD (i_src1
), * FLD (i_src2
));
1522 * FLD (i_dst
) = opval
;
1523 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1530 CASE (sem
, INSN_OR1
) : /* or $lit1, $src2, $dst */
1532 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1533 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1534 #define FLD(f) abuf->fields.fmt_mulo1.f
1535 int UNUSED written
= 0;
1536 IADDR UNUSED pc
= abuf
->addr
;
1537 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1540 SI opval
= ORSI (FLD (f_src1
), * FLD (i_src2
));
1541 * FLD (i_dst
) = opval
;
1542 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1549 CASE (sem
, INSN_OR2
) : /* or $src1, $lit2, $dst */
1551 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1552 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1553 #define FLD(f) abuf->fields.fmt_mulo2.f
1554 int UNUSED written
= 0;
1555 IADDR UNUSED pc
= abuf
->addr
;
1556 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1559 SI opval
= ORSI (* FLD (i_src1
), FLD (f_src2
));
1560 * FLD (i_dst
) = opval
;
1561 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1568 CASE (sem
, INSN_OR3
) : /* or $lit1, $lit2, $dst */
1570 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1571 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1572 #define FLD(f) abuf->fields.fmt_mulo3.f
1573 int UNUSED written
= 0;
1574 IADDR UNUSED pc
= abuf
->addr
;
1575 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1578 SI opval
= ORSI (FLD (f_src1
), FLD (f_src2
));
1579 * FLD (i_dst
) = opval
;
1580 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1587 CASE (sem
, INSN_NOR
) : /* nor $src1, $src2, $dst */
1589 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1590 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1591 #define FLD(f) abuf->fields.fmt_mulo.f
1592 int UNUSED written
= 0;
1593 IADDR UNUSED pc
= abuf
->addr
;
1594 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1597 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), INVSI (* FLD (i_src1
)));
1598 * FLD (i_dst
) = opval
;
1599 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1606 CASE (sem
, INSN_NOR1
) : /* nor $lit1, $src2, $dst */
1608 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1609 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1610 #define FLD(f) abuf->fields.fmt_mulo1.f
1611 int UNUSED written
= 0;
1612 IADDR UNUSED pc
= abuf
->addr
;
1613 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1616 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), INVSI (FLD (f_src1
)));
1617 * FLD (i_dst
) = opval
;
1618 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1625 CASE (sem
, INSN_NOR2
) : /* nor $src1, $lit2, $dst */
1627 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1628 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1629 #define FLD(f) abuf->fields.fmt_mulo2.f
1630 int UNUSED written
= 0;
1631 IADDR UNUSED pc
= abuf
->addr
;
1632 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1635 SI opval
= ANDSI (INVSI (FLD (f_src2
)), INVSI (* FLD (i_src1
)));
1636 * FLD (i_dst
) = opval
;
1637 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1644 CASE (sem
, INSN_NOR3
) : /* nor $lit1, $lit2, $dst */
1646 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1647 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1648 #define FLD(f) abuf->fields.fmt_mulo3.f
1649 int UNUSED written
= 0;
1650 IADDR UNUSED pc
= abuf
->addr
;
1651 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1654 SI opval
= ANDSI (INVSI (FLD (f_src2
)), INVSI (FLD (f_src1
)));
1655 * FLD (i_dst
) = opval
;
1656 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1663 CASE (sem
, INSN_XNOR
) : /* xnor $src1, $src2, $dst */
1665 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1666 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1667 #define FLD(f) abuf->fields.fmt_mulo.f
1668 int UNUSED written
= 0;
1669 IADDR UNUSED pc
= abuf
->addr
;
1670 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1673 SI opval
= INVSI (XORSI (* FLD (i_src1
), * FLD (i_src2
)));
1674 * FLD (i_dst
) = opval
;
1675 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1682 CASE (sem
, INSN_XNOR1
) : /* xnor $lit1, $src2, $dst */
1684 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1685 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1686 #define FLD(f) abuf->fields.fmt_mulo1.f
1687 int UNUSED written
= 0;
1688 IADDR UNUSED pc
= abuf
->addr
;
1689 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1692 SI opval
= INVSI (XORSI (FLD (f_src1
), * FLD (i_src2
)));
1693 * FLD (i_dst
) = opval
;
1694 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1701 CASE (sem
, INSN_XNOR2
) : /* xnor $src1, $lit2, $dst */
1703 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1704 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1705 #define FLD(f) abuf->fields.fmt_mulo2.f
1706 int UNUSED written
= 0;
1707 IADDR UNUSED pc
= abuf
->addr
;
1708 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1711 SI opval
= INVSI (XORSI (* FLD (i_src1
), FLD (f_src2
)));
1712 * FLD (i_dst
) = opval
;
1713 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1720 CASE (sem
, INSN_XNOR3
) : /* xnor $lit1, $lit2, $dst */
1722 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1723 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1724 #define FLD(f) abuf->fields.fmt_mulo3.f
1725 int UNUSED written
= 0;
1726 IADDR UNUSED pc
= abuf
->addr
;
1727 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1730 SI opval
= INVSI (XORSI (FLD (f_src1
), FLD (f_src2
)));
1731 * FLD (i_dst
) = opval
;
1732 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1739 CASE (sem
, INSN_NOT
) : /* not $src1, $src2, $dst */
1741 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1742 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1743 #define FLD(f) abuf->fields.fmt_not.f
1744 int UNUSED written
= 0;
1745 IADDR UNUSED pc
= abuf
->addr
;
1746 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1749 SI opval
= INVSI (* FLD (i_src1
));
1750 * FLD (i_dst
) = opval
;
1751 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1758 CASE (sem
, INSN_NOT1
) : /* not $lit1, $src2, $dst */
1760 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1761 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1762 #define FLD(f) abuf->fields.fmt_not1.f
1763 int UNUSED written
= 0;
1764 IADDR UNUSED pc
= abuf
->addr
;
1765 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1768 SI opval
= INVSI (FLD (f_src1
));
1769 * FLD (i_dst
) = opval
;
1770 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1777 CASE (sem
, INSN_NOT2
) : /* not $src1, $lit2, $dst */
1779 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1780 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1781 #define FLD(f) abuf->fields.fmt_not2.f
1782 int UNUSED written
= 0;
1783 IADDR UNUSED pc
= abuf
->addr
;
1784 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1787 SI opval
= INVSI (* FLD (i_src1
));
1788 * FLD (i_dst
) = opval
;
1789 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1796 CASE (sem
, INSN_NOT3
) : /* not $lit1, $lit2, $dst */
1798 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1799 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1800 #define FLD(f) abuf->fields.fmt_not3.f
1801 int UNUSED written
= 0;
1802 IADDR UNUSED pc
= abuf
->addr
;
1803 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1806 SI opval
= INVSI (FLD (f_src1
));
1807 * FLD (i_dst
) = opval
;
1808 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1815 CASE (sem
, INSN_ORNOT
) : /* ornot $src1, $src2, $dst */
1817 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1818 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1819 #define FLD(f) abuf->fields.fmt_mulo.f
1820 int UNUSED written
= 0;
1821 IADDR UNUSED pc
= abuf
->addr
;
1822 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1825 SI opval
= ORSI (* FLD (i_src2
), INVSI (* FLD (i_src1
)));
1826 * FLD (i_dst
) = opval
;
1827 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1834 CASE (sem
, INSN_ORNOT1
) : /* ornot $lit1, $src2, $dst */
1836 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1837 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1838 #define FLD(f) abuf->fields.fmt_mulo1.f
1839 int UNUSED written
= 0;
1840 IADDR UNUSED pc
= abuf
->addr
;
1841 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1844 SI opval
= ORSI (* FLD (i_src2
), INVSI (FLD (f_src1
)));
1845 * FLD (i_dst
) = opval
;
1846 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1853 CASE (sem
, INSN_ORNOT2
) : /* ornot $src1, $lit2, $dst */
1855 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1856 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1857 #define FLD(f) abuf->fields.fmt_mulo2.f
1858 int UNUSED written
= 0;
1859 IADDR UNUSED pc
= abuf
->addr
;
1860 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1863 SI opval
= ORSI (FLD (f_src2
), INVSI (* FLD (i_src1
)));
1864 * FLD (i_dst
) = opval
;
1865 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1872 CASE (sem
, INSN_ORNOT3
) : /* ornot $lit1, $lit2, $dst */
1874 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1875 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1876 #define FLD(f) abuf->fields.fmt_mulo3.f
1877 int UNUSED written
= 0;
1878 IADDR UNUSED pc
= abuf
->addr
;
1879 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1882 SI opval
= ORSI (FLD (f_src2
), INVSI (FLD (f_src1
)));
1883 * FLD (i_dst
) = opval
;
1884 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1891 CASE (sem
, INSN_CLRBIT
) : /* clrbit $src1, $src2, $dst */
1893 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1894 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1895 #define FLD(f) abuf->fields.fmt_notbit.f
1896 int UNUSED written
= 0;
1897 IADDR UNUSED pc
= abuf
->addr
;
1898 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1901 SI opval
= ANDSI (INVSI (SLLSI (1, * FLD (i_src1
))), * FLD (i_src2
));
1902 * FLD (i_dst
) = opval
;
1903 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1910 CASE (sem
, INSN_CLRBIT1
) : /* clrbit $lit1, $src2, $dst */
1912 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1913 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1914 #define FLD(f) abuf->fields.fmt_notbit1.f
1915 int UNUSED written
= 0;
1916 IADDR UNUSED pc
= abuf
->addr
;
1917 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1920 SI opval
= ANDSI (INVSI (SLLSI (1, FLD (f_src1
))), * FLD (i_src2
));
1921 * FLD (i_dst
) = opval
;
1922 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1929 CASE (sem
, INSN_CLRBIT2
) : /* clrbit $src1, $lit2, $dst */
1931 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1932 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1933 #define FLD(f) abuf->fields.fmt_notbit2.f
1934 int UNUSED written
= 0;
1935 IADDR UNUSED pc
= abuf
->addr
;
1936 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1939 SI opval
= ANDSI (INVSI (SLLSI (1, * FLD (i_src1
))), FLD (f_src2
));
1940 * FLD (i_dst
) = opval
;
1941 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1948 CASE (sem
, INSN_CLRBIT3
) : /* clrbit $lit1, $lit2, $dst */
1950 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1951 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1952 #define FLD(f) abuf->fields.fmt_notbit3.f
1953 int UNUSED written
= 0;
1954 IADDR UNUSED pc
= abuf
->addr
;
1955 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1958 SI opval
= ANDSI (INVSI (SLLSI (1, FLD (f_src1
))), FLD (f_src2
));
1959 * FLD (i_dst
) = opval
;
1960 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1967 CASE (sem
, INSN_SHLO
) : /* shlo $src1, $src2, $dst */
1969 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1970 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1971 #define FLD(f) abuf->fields.fmt_shlo.f
1972 int UNUSED written
= 0;
1973 IADDR UNUSED pc
= abuf
->addr
;
1974 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1977 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), * FLD (i_src1
)));
1978 * FLD (i_dst
) = opval
;
1979 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1986 CASE (sem
, INSN_SHLO1
) : /* shlo $lit1, $src2, $dst */
1988 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1989 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1990 #define FLD(f) abuf->fields.fmt_shlo1.f
1991 int UNUSED written
= 0;
1992 IADDR UNUSED pc
= abuf
->addr
;
1993 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1996 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), FLD (f_src1
)));
1997 * FLD (i_dst
) = opval
;
1998 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2005 CASE (sem
, INSN_SHLO2
) : /* shlo $src1, $lit2, $dst */
2007 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2008 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2009 #define FLD(f) abuf->fields.fmt_shlo2.f
2010 int UNUSED written
= 0;
2011 IADDR UNUSED pc
= abuf
->addr
;
2012 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2015 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), * FLD (i_src1
)));
2016 * FLD (i_dst
) = opval
;
2017 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2024 CASE (sem
, INSN_SHLO3
) : /* shlo $lit1, $lit2, $dst */
2026 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2027 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2028 #define FLD(f) abuf->fields.fmt_shlo3.f
2029 int UNUSED written
= 0;
2030 IADDR UNUSED pc
= abuf
->addr
;
2031 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2034 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), FLD (f_src1
)));
2035 * FLD (i_dst
) = opval
;
2036 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2043 CASE (sem
, INSN_SHRO
) : /* shro $src1, $src2, $dst */
2045 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2046 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2047 #define FLD(f) abuf->fields.fmt_shlo.f
2048 int UNUSED written
= 0;
2049 IADDR UNUSED pc
= abuf
->addr
;
2050 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2053 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SRLSI (* FLD (i_src2
), * FLD (i_src1
)));
2054 * FLD (i_dst
) = opval
;
2055 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2062 CASE (sem
, INSN_SHRO1
) : /* shro $lit1, $src2, $dst */
2064 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2065 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2066 #define FLD(f) abuf->fields.fmt_shlo1.f
2067 int UNUSED written
= 0;
2068 IADDR UNUSED pc
= abuf
->addr
;
2069 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2072 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SRLSI (* FLD (i_src2
), FLD (f_src1
)));
2073 * FLD (i_dst
) = opval
;
2074 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2081 CASE (sem
, INSN_SHRO2
) : /* shro $src1, $lit2, $dst */
2083 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2084 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2085 #define FLD(f) abuf->fields.fmt_shlo2.f
2086 int UNUSED written
= 0;
2087 IADDR UNUSED pc
= abuf
->addr
;
2088 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2091 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SRLSI (FLD (f_src2
), * FLD (i_src1
)));
2092 * FLD (i_dst
) = opval
;
2093 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2100 CASE (sem
, INSN_SHRO3
) : /* shro $lit1, $lit2, $dst */
2102 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2103 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2104 #define FLD(f) abuf->fields.fmt_shlo3.f
2105 int UNUSED written
= 0;
2106 IADDR UNUSED pc
= abuf
->addr
;
2107 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2110 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SRLSI (FLD (f_src2
), FLD (f_src1
)));
2111 * FLD (i_dst
) = opval
;
2112 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2119 CASE (sem
, INSN_SHLI
) : /* shli $src1, $src2, $dst */
2121 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2122 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2123 #define FLD(f) abuf->fields.fmt_shlo.f
2124 int UNUSED written
= 0;
2125 IADDR UNUSED pc
= abuf
->addr
;
2126 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2129 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), * FLD (i_src1
)));
2130 * FLD (i_dst
) = opval
;
2131 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2138 CASE (sem
, INSN_SHLI1
) : /* shli $lit1, $src2, $dst */
2140 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2141 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2142 #define FLD(f) abuf->fields.fmt_shlo1.f
2143 int UNUSED written
= 0;
2144 IADDR UNUSED pc
= abuf
->addr
;
2145 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2148 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), FLD (f_src1
)));
2149 * FLD (i_dst
) = opval
;
2150 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2157 CASE (sem
, INSN_SHLI2
) : /* shli $src1, $lit2, $dst */
2159 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2160 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2161 #define FLD(f) abuf->fields.fmt_shlo2.f
2162 int UNUSED written
= 0;
2163 IADDR UNUSED pc
= abuf
->addr
;
2164 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2167 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), * FLD (i_src1
)));
2168 * FLD (i_dst
) = opval
;
2169 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2176 CASE (sem
, INSN_SHLI3
) : /* shli $lit1, $lit2, $dst */
2178 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2179 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2180 #define FLD(f) abuf->fields.fmt_shlo3.f
2181 int UNUSED written
= 0;
2182 IADDR UNUSED pc
= abuf
->addr
;
2183 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2186 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), FLD (f_src1
)));
2187 * FLD (i_dst
) = opval
;
2188 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2195 CASE (sem
, INSN_SHRI
) : /* shri $src1, $src2, $dst */
2197 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2198 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2199 #define FLD(f) abuf->fields.fmt_shlo.f
2200 int UNUSED written
= 0;
2201 IADDR UNUSED pc
= abuf
->addr
;
2202 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2205 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (SRASI (* FLD (i_src2
), 31)) : (SRASI (* FLD (i_src2
), * FLD (i_src1
)));
2206 * FLD (i_dst
) = opval
;
2207 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2214 CASE (sem
, INSN_SHRI1
) : /* shri $lit1, $src2, $dst */
2216 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2217 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2218 #define FLD(f) abuf->fields.fmt_shlo1.f
2219 int UNUSED written
= 0;
2220 IADDR UNUSED pc
= abuf
->addr
;
2221 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2224 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (SRASI (* FLD (i_src2
), 31)) : (SRASI (* FLD (i_src2
), FLD (f_src1
)));
2225 * FLD (i_dst
) = opval
;
2226 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2233 CASE (sem
, INSN_SHRI2
) : /* shri $src1, $lit2, $dst */
2235 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2236 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2237 #define FLD(f) abuf->fields.fmt_shlo2.f
2238 int UNUSED written
= 0;
2239 IADDR UNUSED pc
= abuf
->addr
;
2240 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2243 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (SRASI (FLD (f_src2
), 31)) : (SRASI (FLD (f_src2
), * FLD (i_src1
)));
2244 * FLD (i_dst
) = opval
;
2245 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2252 CASE (sem
, INSN_SHRI3
) : /* shri $lit1, $lit2, $dst */
2254 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2255 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2256 #define FLD(f) abuf->fields.fmt_shlo3.f
2257 int UNUSED written
= 0;
2258 IADDR UNUSED pc
= abuf
->addr
;
2259 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2262 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (SRASI (FLD (f_src2
), 31)) : (SRASI (FLD (f_src2
), FLD (f_src1
)));
2263 * FLD (i_dst
) = opval
;
2264 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2271 CASE (sem
, INSN_EMUL
) : /* emul $src1, $src2, $dst */
2273 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2274 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2275 #define FLD(f) abuf->fields.fmt_emul.f
2276 int UNUSED written
= 0;
2277 IADDR UNUSED pc
= abuf
->addr
;
2278 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2283 tmp_temp
= MULDI (ZEXTSIDI (* FLD (i_src1
)), ZEXTSIDI (* FLD (i_src2
)));
2284 tmp_dregno
= FLD (f_srcdst
);
2286 SI opval
= TRUNCDISI (tmp_temp
);
2287 * FLD (i_dst
) = opval
;
2288 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2291 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2292 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2293 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2301 CASE (sem
, INSN_EMUL1
) : /* emul $lit1, $src2, $dst */
2303 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2304 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2305 #define FLD(f) abuf->fields.fmt_emul1.f
2306 int UNUSED written
= 0;
2307 IADDR UNUSED pc
= abuf
->addr
;
2308 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2313 tmp_temp
= MULDI (ZEXTSIDI (FLD (f_src1
)), ZEXTSIDI (* FLD (i_src2
)));
2314 tmp_dregno
= FLD (f_srcdst
);
2316 SI opval
= TRUNCDISI (tmp_temp
);
2317 * FLD (i_dst
) = opval
;
2318 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2321 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2322 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2323 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2331 CASE (sem
, INSN_EMUL2
) : /* emul $src1, $lit2, $dst */
2333 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2334 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2335 #define FLD(f) abuf->fields.fmt_emul2.f
2336 int UNUSED written
= 0;
2337 IADDR UNUSED pc
= abuf
->addr
;
2338 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2343 tmp_temp
= MULDI (ZEXTSIDI (* FLD (i_src1
)), ZEXTSIDI (FLD (f_src2
)));
2344 tmp_dregno
= FLD (f_srcdst
);
2346 SI opval
= TRUNCDISI (tmp_temp
);
2347 * FLD (i_dst
) = opval
;
2348 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2351 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2352 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2353 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2361 CASE (sem
, INSN_EMUL3
) : /* emul $lit1, $lit2, $dst */
2363 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2364 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2365 #define FLD(f) abuf->fields.fmt_emul3.f
2366 int UNUSED written
= 0;
2367 IADDR UNUSED pc
= abuf
->addr
;
2368 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2373 tmp_temp
= MULDI (ZEXTSIDI (FLD (f_src1
)), ZEXTSIDI (FLD (f_src2
)));
2374 tmp_dregno
= FLD (f_srcdst
);
2376 SI opval
= TRUNCDISI (tmp_temp
);
2377 * FLD (i_dst
) = opval
;
2378 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2381 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2382 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2383 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2391 CASE (sem
, INSN_MOV
) : /* mov $src1, $dst */
2393 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2394 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2395 #define FLD(f) abuf->fields.fmt_not2.f
2396 int UNUSED written
= 0;
2397 IADDR UNUSED pc
= abuf
->addr
;
2398 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2401 SI opval
= * FLD (i_src1
);
2402 * FLD (i_dst
) = opval
;
2403 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2410 CASE (sem
, INSN_MOV1
) : /* mov $lit1, $dst */
2412 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2413 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2414 #define FLD(f) abuf->fields.fmt_not3.f
2415 int UNUSED written
= 0;
2416 IADDR UNUSED pc
= abuf
->addr
;
2417 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2420 SI opval
= FLD (f_src1
);
2421 * FLD (i_dst
) = opval
;
2422 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2429 CASE (sem
, INSN_MOVL
) : /* movl $src1, $dst */
2431 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2432 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2433 #define FLD(f) abuf->fields.fmt_movl.f
2434 int UNUSED written
= 0;
2435 IADDR UNUSED pc
= abuf
->addr
;
2436 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2441 tmp_dregno
= FLD (f_srcdst
);
2442 tmp_sregno
= FLD (f_src1
);
2444 SI opval
= * FLD (i_src1
);
2445 * FLD (i_dst
) = opval
;
2446 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2449 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (1))]);
2450 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2451 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2459 CASE (sem
, INSN_MOVL1
) : /* movl $lit1, $dst */
2461 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2462 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2463 #define FLD(f) abuf->fields.fmt_movl1.f
2464 int UNUSED written
= 0;
2465 IADDR UNUSED pc
= abuf
->addr
;
2466 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2470 tmp_dregno
= FLD (f_srcdst
);
2472 SI opval
= FLD (f_src1
);
2473 * FLD (i_dst
) = opval
;
2474 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2478 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2479 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2487 CASE (sem
, INSN_MOVT
) : /* movt $src1, $dst */
2489 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2490 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2491 #define FLD(f) abuf->fields.fmt_movt.f
2492 int UNUSED written
= 0;
2493 IADDR UNUSED pc
= abuf
->addr
;
2494 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2499 tmp_dregno
= FLD (f_srcdst
);
2500 tmp_sregno
= FLD (f_src1
);
2502 SI opval
= * FLD (i_src1
);
2503 * FLD (i_dst
) = opval
;
2504 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2507 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (1))]);
2508 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2509 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2512 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (2))]);
2513 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2514 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
2522 CASE (sem
, INSN_MOVT1
) : /* movt $lit1, $dst */
2524 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2525 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2526 #define FLD(f) abuf->fields.fmt_movt1.f
2527 int UNUSED written
= 0;
2528 IADDR UNUSED pc
= abuf
->addr
;
2529 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2533 tmp_dregno
= FLD (f_srcdst
);
2535 SI opval
= FLD (f_src1
);
2536 * FLD (i_dst
) = opval
;
2537 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2541 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2542 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2546 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2547 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
2555 CASE (sem
, INSN_MOVQ
) : /* movq $src1, $dst */
2557 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2558 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2559 #define FLD(f) abuf->fields.fmt_movq.f
2560 int UNUSED written
= 0;
2561 IADDR UNUSED pc
= abuf
->addr
;
2562 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2567 tmp_dregno
= FLD (f_srcdst
);
2568 tmp_sregno
= FLD (f_src1
);
2570 SI opval
= * FLD (i_src1
);
2571 * FLD (i_dst
) = opval
;
2572 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2575 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (1))]);
2576 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2577 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2580 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (2))]);
2581 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2582 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
2585 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (3))]);
2586 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
2587 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
2595 CASE (sem
, INSN_MOVQ1
) : /* movq $lit1, $dst */
2597 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2598 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2599 #define FLD(f) abuf->fields.fmt_movq1.f
2600 int UNUSED written
= 0;
2601 IADDR UNUSED pc
= abuf
->addr
;
2602 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2606 tmp_dregno
= FLD (f_srcdst
);
2608 SI opval
= FLD (f_src1
);
2609 * FLD (i_dst
) = opval
;
2610 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2614 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2615 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2619 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2620 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
2624 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
2625 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
2633 CASE (sem
, INSN_MODPC
) : /* modpc $src1, $src2, $dst */
2635 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2636 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2637 #define FLD(f) abuf->fields.fmt_modpc.f
2638 int UNUSED written
= 0;
2639 IADDR UNUSED pc
= abuf
->addr
;
2640 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2643 SI opval
= * FLD (i_src2
);
2644 * FLD (i_dst
) = opval
;
2645 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2652 CASE (sem
, INSN_MODAC
) : /* modac $src1, $src2, $dst */
2654 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2655 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2656 #define FLD(f) abuf->fields.fmt_modpc.f
2657 int UNUSED written
= 0;
2658 IADDR UNUSED pc
= abuf
->addr
;
2659 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2662 SI opval
= * FLD (i_src2
);
2663 * FLD (i_dst
) = opval
;
2664 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2671 CASE (sem
, INSN_LDA_OFFSET
) : /* lda $offset, $dst */
2673 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2674 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2675 #define FLD(f) abuf->fields.fmt_lda_offset.f
2676 int UNUSED written
= 0;
2677 IADDR UNUSED pc
= abuf
->addr
;
2678 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2681 SI opval
= FLD (f_offset
);
2682 * FLD (i_dst
) = opval
;
2683 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2690 CASE (sem
, INSN_LDA_INDIRECT_OFFSET
) : /* lda $offset($abase), $dst */
2692 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2693 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2694 #define FLD(f) abuf->fields.fmt_lda_indirect_offset.f
2695 int UNUSED written
= 0;
2696 IADDR UNUSED pc
= abuf
->addr
;
2697 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2700 SI opval
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
2701 * FLD (i_dst
) = opval
;
2702 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2709 CASE (sem
, INSN_LDA_INDIRECT
) : /* lda ($abase), $dst */
2711 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2712 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2713 #define FLD(f) abuf->fields.fmt_lda_indirect.f
2714 int UNUSED written
= 0;
2715 IADDR UNUSED pc
= abuf
->addr
;
2716 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2719 SI opval
= * FLD (i_abase
);
2720 * FLD (i_dst
) = opval
;
2721 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2728 CASE (sem
, INSN_LDA_INDIRECT_INDEX
) : /* lda ($abase)[$index*S$scale], $dst */
2730 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2731 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2732 #define FLD(f) abuf->fields.fmt_lda_indirect_index.f
2733 int UNUSED written
= 0;
2734 IADDR UNUSED pc
= abuf
->addr
;
2735 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2738 SI opval
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
2739 * FLD (i_dst
) = opval
;
2740 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2747 CASE (sem
, INSN_LDA_DISP
) : /* lda $optdisp, $dst */
2749 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2750 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2751 #define FLD(f) abuf->fields.fmt_lda_disp.f
2752 int UNUSED written
= 0;
2753 IADDR UNUSED pc
= abuf
->addr
;
2754 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2757 SI opval
= FLD (f_optdisp
);
2758 * FLD (i_dst
) = opval
;
2759 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2766 CASE (sem
, INSN_LDA_INDIRECT_DISP
) : /* lda $optdisp($abase), $dst */
2768 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2769 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2770 #define FLD(f) abuf->fields.fmt_lda_indirect_disp.f
2771 int UNUSED written
= 0;
2772 IADDR UNUSED pc
= abuf
->addr
;
2773 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2776 SI opval
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
2777 * FLD (i_dst
) = opval
;
2778 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2785 CASE (sem
, INSN_LDA_INDEX_DISP
) : /* lda $optdisp[$index*S$scale], $dst */
2787 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2788 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2789 #define FLD(f) abuf->fields.fmt_lda_index_disp.f
2790 int UNUSED written
= 0;
2791 IADDR UNUSED pc
= abuf
->addr
;
2792 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2795 SI opval
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
2796 * FLD (i_dst
) = opval
;
2797 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2804 CASE (sem
, INSN_LDA_INDIRECT_INDEX_DISP
) : /* lda $optdisp($abase)[$index*S$scale], $dst */
2806 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2807 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2808 #define FLD(f) abuf->fields.fmt_lda_indirect_index_disp.f
2809 int UNUSED written
= 0;
2810 IADDR UNUSED pc
= abuf
->addr
;
2811 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2814 SI opval
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2815 * FLD (i_dst
) = opval
;
2816 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2823 CASE (sem
, INSN_LD_OFFSET
) : /* ld $offset, $dst */
2825 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2826 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2827 #define FLD(f) abuf->fields.fmt_ld_offset.f
2828 int UNUSED written
= 0;
2829 IADDR UNUSED pc
= abuf
->addr
;
2830 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2833 SI opval
= GETMEMSI (current_cpu
, pc
, FLD (f_offset
));
2834 * FLD (i_dst
) = opval
;
2835 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2842 CASE (sem
, INSN_LD_INDIRECT_OFFSET
) : /* ld $offset($abase), $dst */
2844 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2845 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2846 #define FLD(f) abuf->fields.fmt_ld_indirect_offset.f
2847 int UNUSED written
= 0;
2848 IADDR UNUSED pc
= abuf
->addr
;
2849 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2852 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
2853 * FLD (i_dst
) = opval
;
2854 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2861 CASE (sem
, INSN_LD_INDIRECT
) : /* ld ($abase), $dst */
2863 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2864 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2865 #define FLD(f) abuf->fields.fmt_ld_indirect.f
2866 int UNUSED written
= 0;
2867 IADDR UNUSED pc
= abuf
->addr
;
2868 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2871 SI opval
= GETMEMSI (current_cpu
, pc
, * FLD (i_abase
));
2872 * FLD (i_dst
) = opval
;
2873 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2880 CASE (sem
, INSN_LD_INDIRECT_INDEX
) : /* ld ($abase)[$index*S$scale], $dst */
2882 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2883 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2884 #define FLD(f) abuf->fields.fmt_ld_indirect_index.f
2885 int UNUSED written
= 0;
2886 IADDR UNUSED pc
= abuf
->addr
;
2887 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2890 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2891 * FLD (i_dst
) = opval
;
2892 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2899 CASE (sem
, INSN_LD_DISP
) : /* ld $optdisp, $dst */
2901 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2902 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2903 #define FLD(f) abuf->fields.fmt_ld_disp.f
2904 int UNUSED written
= 0;
2905 IADDR UNUSED pc
= abuf
->addr
;
2906 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2909 SI opval
= GETMEMSI (current_cpu
, pc
, FLD (f_optdisp
));
2910 * FLD (i_dst
) = opval
;
2911 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2918 CASE (sem
, INSN_LD_INDIRECT_DISP
) : /* ld $optdisp($abase), $dst */
2920 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2921 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2922 #define FLD(f) abuf->fields.fmt_ld_indirect_disp.f
2923 int UNUSED written
= 0;
2924 IADDR UNUSED pc
= abuf
->addr
;
2925 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2928 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
2929 * FLD (i_dst
) = opval
;
2930 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2937 CASE (sem
, INSN_LD_INDEX_DISP
) : /* ld $optdisp[$index*S$scale], $dst */
2939 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2940 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2941 #define FLD(f) abuf->fields.fmt_ld_index_disp.f
2942 int UNUSED written
= 0;
2943 IADDR UNUSED pc
= abuf
->addr
;
2944 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2947 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2948 * FLD (i_dst
) = opval
;
2949 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2956 CASE (sem
, INSN_LD_INDIRECT_INDEX_DISP
) : /* ld $optdisp($abase)[$index*S$scale], $dst */
2958 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2959 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2960 #define FLD(f) abuf->fields.fmt_ld_indirect_index_disp.f
2961 int UNUSED written
= 0;
2962 IADDR UNUSED pc
= abuf
->addr
;
2963 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2966 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
2967 * FLD (i_dst
) = opval
;
2968 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2975 CASE (sem
, INSN_LDOB_OFFSET
) : /* ldob $offset, $dst */
2977 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2978 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2979 #define FLD(f) abuf->fields.fmt_ldob_offset.f
2980 int UNUSED written
= 0;
2981 IADDR UNUSED pc
= abuf
->addr
;
2982 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2985 SI opval
= GETMEMUQI (current_cpu
, pc
, FLD (f_offset
));
2986 * FLD (i_dst
) = opval
;
2987 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2994 CASE (sem
, INSN_LDOB_INDIRECT_OFFSET
) : /* ldob $offset($abase), $dst */
2996 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2997 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2998 #define FLD(f) abuf->fields.fmt_ldob_indirect_offset.f
2999 int UNUSED written
= 0;
3000 IADDR UNUSED pc
= abuf
->addr
;
3001 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3004 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3005 * FLD (i_dst
) = opval
;
3006 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3013 CASE (sem
, INSN_LDOB_INDIRECT
) : /* ldob ($abase), $dst */
3015 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3016 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3017 #define FLD(f) abuf->fields.fmt_ldob_indirect.f
3018 int UNUSED written
= 0;
3019 IADDR UNUSED pc
= abuf
->addr
;
3020 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3023 SI opval
= GETMEMUQI (current_cpu
, pc
, * FLD (i_abase
));
3024 * FLD (i_dst
) = opval
;
3025 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3032 CASE (sem
, INSN_LDOB_INDIRECT_INDEX
) : /* ldob ($abase)[$index*S$scale], $dst */
3034 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3035 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3036 #define FLD(f) abuf->fields.fmt_ldob_indirect_index.f
3037 int UNUSED written
= 0;
3038 IADDR UNUSED pc
= abuf
->addr
;
3039 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3042 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3043 * FLD (i_dst
) = opval
;
3044 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3051 CASE (sem
, INSN_LDOB_DISP
) : /* ldob $optdisp, $dst */
3053 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3054 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3055 #define FLD(f) abuf->fields.fmt_ldob_disp.f
3056 int UNUSED written
= 0;
3057 IADDR UNUSED pc
= abuf
->addr
;
3058 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3061 SI opval
= GETMEMUQI (current_cpu
, pc
, FLD (f_optdisp
));
3062 * FLD (i_dst
) = opval
;
3063 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3070 CASE (sem
, INSN_LDOB_INDIRECT_DISP
) : /* ldob $optdisp($abase), $dst */
3072 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3073 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3074 #define FLD(f) abuf->fields.fmt_ldob_indirect_disp.f
3075 int UNUSED written
= 0;
3076 IADDR UNUSED pc
= abuf
->addr
;
3077 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3080 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3081 * FLD (i_dst
) = opval
;
3082 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3089 CASE (sem
, INSN_LDOB_INDEX_DISP
) : /* ldob $optdisp[$index*S$scale], $dst */
3091 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3092 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3093 #define FLD(f) abuf->fields.fmt_ldob_index_disp.f
3094 int UNUSED written
= 0;
3095 IADDR UNUSED pc
= abuf
->addr
;
3096 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3099 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3100 * FLD (i_dst
) = opval
;
3101 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3108 CASE (sem
, INSN_LDOB_INDIRECT_INDEX_DISP
) : /* ldob $optdisp($abase)[$index*S$scale], $dst */
3110 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3111 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3112 #define FLD(f) abuf->fields.fmt_ldob_indirect_index_disp.f
3113 int UNUSED written
= 0;
3114 IADDR UNUSED pc
= abuf
->addr
;
3115 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3118 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3119 * FLD (i_dst
) = opval
;
3120 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3127 CASE (sem
, INSN_LDOS_OFFSET
) : /* ldos $offset, $dst */
3129 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3130 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3131 #define FLD(f) abuf->fields.fmt_ldos_offset.f
3132 int UNUSED written
= 0;
3133 IADDR UNUSED pc
= abuf
->addr
;
3134 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3137 SI opval
= GETMEMUHI (current_cpu
, pc
, FLD (f_offset
));
3138 * FLD (i_dst
) = opval
;
3139 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3146 CASE (sem
, INSN_LDOS_INDIRECT_OFFSET
) : /* ldos $offset($abase), $dst */
3148 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3149 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3150 #define FLD(f) abuf->fields.fmt_ldos_indirect_offset.f
3151 int UNUSED written
= 0;
3152 IADDR UNUSED pc
= abuf
->addr
;
3153 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3156 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3157 * FLD (i_dst
) = opval
;
3158 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3165 CASE (sem
, INSN_LDOS_INDIRECT
) : /* ldos ($abase), $dst */
3167 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3168 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3169 #define FLD(f) abuf->fields.fmt_ldos_indirect.f
3170 int UNUSED written
= 0;
3171 IADDR UNUSED pc
= abuf
->addr
;
3172 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3175 SI opval
= GETMEMUHI (current_cpu
, pc
, * FLD (i_abase
));
3176 * FLD (i_dst
) = opval
;
3177 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3184 CASE (sem
, INSN_LDOS_INDIRECT_INDEX
) : /* ldos ($abase)[$index*S$scale], $dst */
3186 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3187 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3188 #define FLD(f) abuf->fields.fmt_ldos_indirect_index.f
3189 int UNUSED written
= 0;
3190 IADDR UNUSED pc
= abuf
->addr
;
3191 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3194 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3195 * FLD (i_dst
) = opval
;
3196 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3203 CASE (sem
, INSN_LDOS_DISP
) : /* ldos $optdisp, $dst */
3205 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3206 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3207 #define FLD(f) abuf->fields.fmt_ldos_disp.f
3208 int UNUSED written
= 0;
3209 IADDR UNUSED pc
= abuf
->addr
;
3210 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3213 SI opval
= GETMEMUHI (current_cpu
, pc
, FLD (f_optdisp
));
3214 * FLD (i_dst
) = opval
;
3215 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3222 CASE (sem
, INSN_LDOS_INDIRECT_DISP
) : /* ldos $optdisp($abase), $dst */
3224 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3225 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3226 #define FLD(f) abuf->fields.fmt_ldos_indirect_disp.f
3227 int UNUSED written
= 0;
3228 IADDR UNUSED pc
= abuf
->addr
;
3229 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3232 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3233 * FLD (i_dst
) = opval
;
3234 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3241 CASE (sem
, INSN_LDOS_INDEX_DISP
) : /* ldos $optdisp[$index*S$scale], $dst */
3243 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3244 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3245 #define FLD(f) abuf->fields.fmt_ldos_index_disp.f
3246 int UNUSED written
= 0;
3247 IADDR UNUSED pc
= abuf
->addr
;
3248 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3251 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3252 * FLD (i_dst
) = opval
;
3253 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3260 CASE (sem
, INSN_LDOS_INDIRECT_INDEX_DISP
) : /* ldos $optdisp($abase)[$index*S$scale], $dst */
3262 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3263 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3264 #define FLD(f) abuf->fields.fmt_ldos_indirect_index_disp.f
3265 int UNUSED written
= 0;
3266 IADDR UNUSED pc
= abuf
->addr
;
3267 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3270 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3271 * FLD (i_dst
) = opval
;
3272 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3279 CASE (sem
, INSN_LDIB_OFFSET
) : /* ldib $offset, $dst */
3281 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3282 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3283 #define FLD(f) abuf->fields.fmt_ldib_offset.f
3284 int UNUSED written
= 0;
3285 IADDR UNUSED pc
= abuf
->addr
;
3286 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3289 SI opval
= GETMEMQI (current_cpu
, pc
, FLD (f_offset
));
3290 * FLD (i_dst
) = opval
;
3291 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3298 CASE (sem
, INSN_LDIB_INDIRECT_OFFSET
) : /* ldib $offset($abase), $dst */
3300 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3301 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3302 #define FLD(f) abuf->fields.fmt_ldib_indirect_offset.f
3303 int UNUSED written
= 0;
3304 IADDR UNUSED pc
= abuf
->addr
;
3305 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3308 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3309 * FLD (i_dst
) = opval
;
3310 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3317 CASE (sem
, INSN_LDIB_INDIRECT
) : /* ldib ($abase), $dst */
3319 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3320 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3321 #define FLD(f) abuf->fields.fmt_ldib_indirect.f
3322 int UNUSED written
= 0;
3323 IADDR UNUSED pc
= abuf
->addr
;
3324 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3327 SI opval
= GETMEMQI (current_cpu
, pc
, * FLD (i_abase
));
3328 * FLD (i_dst
) = opval
;
3329 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3336 CASE (sem
, INSN_LDIB_INDIRECT_INDEX
) : /* ldib ($abase)[$index*S$scale], $dst */
3338 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3339 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3340 #define FLD(f) abuf->fields.fmt_ldib_indirect_index.f
3341 int UNUSED written
= 0;
3342 IADDR UNUSED pc
= abuf
->addr
;
3343 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3346 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3347 * FLD (i_dst
) = opval
;
3348 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3355 CASE (sem
, INSN_LDIB_DISP
) : /* ldib $optdisp, $dst */
3357 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3358 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3359 #define FLD(f) abuf->fields.fmt_ldib_disp.f
3360 int UNUSED written
= 0;
3361 IADDR UNUSED pc
= abuf
->addr
;
3362 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3365 SI opval
= GETMEMQI (current_cpu
, pc
, FLD (f_optdisp
));
3366 * FLD (i_dst
) = opval
;
3367 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3374 CASE (sem
, INSN_LDIB_INDIRECT_DISP
) : /* ldib $optdisp($abase), $dst */
3376 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3377 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3378 #define FLD(f) abuf->fields.fmt_ldib_indirect_disp.f
3379 int UNUSED written
= 0;
3380 IADDR UNUSED pc
= abuf
->addr
;
3381 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3384 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3385 * FLD (i_dst
) = opval
;
3386 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3393 CASE (sem
, INSN_LDIB_INDEX_DISP
) : /* ldib $optdisp[$index*S$scale], $dst */
3395 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3396 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3397 #define FLD(f) abuf->fields.fmt_ldib_index_disp.f
3398 int UNUSED written
= 0;
3399 IADDR UNUSED pc
= abuf
->addr
;
3400 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3403 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3404 * FLD (i_dst
) = opval
;
3405 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3412 CASE (sem
, INSN_LDIB_INDIRECT_INDEX_DISP
) : /* ldib $optdisp($abase)[$index*S$scale], $dst */
3414 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3415 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3416 #define FLD(f) abuf->fields.fmt_ldib_indirect_index_disp.f
3417 int UNUSED written
= 0;
3418 IADDR UNUSED pc
= abuf
->addr
;
3419 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3422 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3423 * FLD (i_dst
) = opval
;
3424 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3431 CASE (sem
, INSN_LDIS_OFFSET
) : /* ldis $offset, $dst */
3433 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3434 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3435 #define FLD(f) abuf->fields.fmt_ldis_offset.f
3436 int UNUSED written
= 0;
3437 IADDR UNUSED pc
= abuf
->addr
;
3438 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3441 SI opval
= GETMEMHI (current_cpu
, pc
, FLD (f_offset
));
3442 * FLD (i_dst
) = opval
;
3443 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3450 CASE (sem
, INSN_LDIS_INDIRECT_OFFSET
) : /* ldis $offset($abase), $dst */
3452 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3453 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3454 #define FLD(f) abuf->fields.fmt_ldis_indirect_offset.f
3455 int UNUSED written
= 0;
3456 IADDR UNUSED pc
= abuf
->addr
;
3457 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3460 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3461 * FLD (i_dst
) = opval
;
3462 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3469 CASE (sem
, INSN_LDIS_INDIRECT
) : /* ldis ($abase), $dst */
3471 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3472 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3473 #define FLD(f) abuf->fields.fmt_ldis_indirect.f
3474 int UNUSED written
= 0;
3475 IADDR UNUSED pc
= abuf
->addr
;
3476 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3479 SI opval
= GETMEMHI (current_cpu
, pc
, * FLD (i_abase
));
3480 * FLD (i_dst
) = opval
;
3481 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3488 CASE (sem
, INSN_LDIS_INDIRECT_INDEX
) : /* ldis ($abase)[$index*S$scale], $dst */
3490 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3491 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3492 #define FLD(f) abuf->fields.fmt_ldis_indirect_index.f
3493 int UNUSED written
= 0;
3494 IADDR UNUSED pc
= abuf
->addr
;
3495 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3498 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3499 * FLD (i_dst
) = opval
;
3500 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3507 CASE (sem
, INSN_LDIS_DISP
) : /* ldis $optdisp, $dst */
3509 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3510 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3511 #define FLD(f) abuf->fields.fmt_ldis_disp.f
3512 int UNUSED written
= 0;
3513 IADDR UNUSED pc
= abuf
->addr
;
3514 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3517 SI opval
= GETMEMHI (current_cpu
, pc
, FLD (f_optdisp
));
3518 * FLD (i_dst
) = opval
;
3519 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3526 CASE (sem
, INSN_LDIS_INDIRECT_DISP
) : /* ldis $optdisp($abase), $dst */
3528 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3529 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3530 #define FLD(f) abuf->fields.fmt_ldis_indirect_disp.f
3531 int UNUSED written
= 0;
3532 IADDR UNUSED pc
= abuf
->addr
;
3533 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3536 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3537 * FLD (i_dst
) = opval
;
3538 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3545 CASE (sem
, INSN_LDIS_INDEX_DISP
) : /* ldis $optdisp[$index*S$scale], $dst */
3547 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3548 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3549 #define FLD(f) abuf->fields.fmt_ldis_index_disp.f
3550 int UNUSED written
= 0;
3551 IADDR UNUSED pc
= abuf
->addr
;
3552 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3555 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3556 * FLD (i_dst
) = opval
;
3557 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3564 CASE (sem
, INSN_LDIS_INDIRECT_INDEX_DISP
) : /* ldis $optdisp($abase)[$index*S$scale], $dst */
3566 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3567 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3568 #define FLD(f) abuf->fields.fmt_ldis_indirect_index_disp.f
3569 int UNUSED written
= 0;
3570 IADDR UNUSED pc
= abuf
->addr
;
3571 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3574 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3575 * FLD (i_dst
) = opval
;
3576 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3583 CASE (sem
, INSN_LDL_OFFSET
) : /* ldl $offset, $dst */
3585 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3586 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3587 #define FLD(f) abuf->fields.fmt_ldl_offset.f
3588 int UNUSED written
= 0;
3589 IADDR UNUSED pc
= abuf
->addr
;
3590 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3595 tmp_dregno
= FLD (f_srcdst
);
3596 tmp_temp
= FLD (f_offset
);
3598 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3599 * FLD (i_dst
) = opval
;
3600 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3603 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3604 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3605 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3613 CASE (sem
, INSN_LDL_INDIRECT_OFFSET
) : /* ldl $offset($abase), $dst */
3615 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3616 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3617 #define FLD(f) abuf->fields.fmt_ldl_indirect_offset.f
3618 int UNUSED written
= 0;
3619 IADDR UNUSED pc
= abuf
->addr
;
3620 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3625 tmp_dregno
= FLD (f_srcdst
);
3626 tmp_temp
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
3628 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3629 * FLD (i_dst
) = opval
;
3630 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3633 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3634 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3635 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3643 CASE (sem
, INSN_LDL_INDIRECT
) : /* ldl ($abase), $dst */
3645 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3646 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3647 #define FLD(f) abuf->fields.fmt_ldl_indirect.f
3648 int UNUSED written
= 0;
3649 IADDR UNUSED pc
= abuf
->addr
;
3650 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3655 tmp_dregno
= FLD (f_srcdst
);
3656 tmp_temp
= * FLD (i_abase
);
3658 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3659 * FLD (i_dst
) = opval
;
3660 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3663 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3664 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3665 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3673 CASE (sem
, INSN_LDL_INDIRECT_INDEX
) : /* ldl ($abase)[$index*S$scale], $dst */
3675 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3676 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3677 #define FLD(f) abuf->fields.fmt_ldl_indirect_index.f
3678 int UNUSED written
= 0;
3679 IADDR UNUSED pc
= abuf
->addr
;
3680 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3685 tmp_dregno
= FLD (f_srcdst
);
3686 tmp_temp
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3688 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3689 * FLD (i_dst
) = opval
;
3690 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3693 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3694 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3695 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3703 CASE (sem
, INSN_LDL_DISP
) : /* ldl $optdisp, $dst */
3705 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3706 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3707 #define FLD(f) abuf->fields.fmt_ldl_disp.f
3708 int UNUSED written
= 0;
3709 IADDR UNUSED pc
= abuf
->addr
;
3710 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3715 tmp_dregno
= FLD (f_srcdst
);
3716 tmp_temp
= FLD (f_optdisp
);
3718 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3719 * FLD (i_dst
) = opval
;
3720 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3723 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3724 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3725 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3733 CASE (sem
, INSN_LDL_INDIRECT_DISP
) : /* ldl $optdisp($abase), $dst */
3735 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3736 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3737 #define FLD(f) abuf->fields.fmt_ldl_indirect_disp.f
3738 int UNUSED written
= 0;
3739 IADDR UNUSED pc
= abuf
->addr
;
3740 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3745 tmp_dregno
= FLD (f_srcdst
);
3746 tmp_temp
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
3748 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3749 * FLD (i_dst
) = opval
;
3750 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
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-1", 'x', opval
);
3763 CASE (sem
, INSN_LDL_INDEX_DISP
) : /* ldl $optdisp[$index*S$scale], $dst */
3765 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3766 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3767 #define FLD(f) abuf->fields.fmt_ldl_index_disp.f
3768 int UNUSED written
= 0;
3769 IADDR UNUSED pc
= abuf
->addr
;
3770 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3775 tmp_dregno
= FLD (f_srcdst
);
3776 tmp_temp
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3778 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3779 * FLD (i_dst
) = opval
;
3780 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3783 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3784 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3785 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3793 CASE (sem
, INSN_LDL_INDIRECT_INDEX_DISP
) : /* ldl $optdisp($abase)[$index*S$scale], $dst */
3795 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3796 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3797 #define FLD(f) abuf->fields.fmt_ldl_indirect_index_disp.f
3798 int UNUSED written
= 0;
3799 IADDR UNUSED pc
= abuf
->addr
;
3800 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3805 tmp_dregno
= FLD (f_srcdst
);
3806 tmp_temp
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3808 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3809 * FLD (i_dst
) = opval
;
3810 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3813 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3814 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3815 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3823 CASE (sem
, INSN_LDT_OFFSET
) : /* ldt $offset, $dst */
3825 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3826 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3827 #define FLD(f) abuf->fields.fmt_ldt_offset.f
3828 int UNUSED written
= 0;
3829 IADDR UNUSED pc
= abuf
->addr
;
3830 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3835 tmp_dregno
= FLD (f_srcdst
);
3836 tmp_temp
= FLD (f_offset
);
3838 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3839 * FLD (i_dst
) = opval
;
3840 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3843 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3844 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3845 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3848 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3849 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3850 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
3858 CASE (sem
, INSN_LDT_INDIRECT_OFFSET
) : /* ldt $offset($abase), $dst */
3860 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3861 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3862 #define FLD(f) abuf->fields.fmt_ldt_indirect_offset.f
3863 int UNUSED written
= 0;
3864 IADDR UNUSED pc
= abuf
->addr
;
3865 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3870 tmp_dregno
= FLD (f_srcdst
);
3871 tmp_temp
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
3873 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3874 * FLD (i_dst
) = opval
;
3875 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3878 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3879 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3880 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3883 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3884 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3885 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
3893 CASE (sem
, INSN_LDT_INDIRECT
) : /* ldt ($abase), $dst */
3895 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3896 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3897 #define FLD(f) abuf->fields.fmt_ldt_indirect.f
3898 int UNUSED written
= 0;
3899 IADDR UNUSED pc
= abuf
->addr
;
3900 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3905 tmp_dregno
= FLD (f_srcdst
);
3906 tmp_temp
= * FLD (i_abase
);
3908 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3909 * FLD (i_dst
) = opval
;
3910 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3913 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3914 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3915 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3918 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3919 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3920 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
3928 CASE (sem
, INSN_LDT_INDIRECT_INDEX
) : /* ldt ($abase)[$index*S$scale], $dst */
3930 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3931 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3932 #define FLD(f) abuf->fields.fmt_ldt_indirect_index.f
3933 int UNUSED written
= 0;
3934 IADDR UNUSED pc
= abuf
->addr
;
3935 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3940 tmp_dregno
= FLD (f_srcdst
);
3941 tmp_temp
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3943 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3944 * FLD (i_dst
) = opval
;
3945 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3948 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3949 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3950 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3953 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3954 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3955 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
3963 CASE (sem
, INSN_LDT_DISP
) : /* ldt $optdisp, $dst */
3965 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3966 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3967 #define FLD(f) abuf->fields.fmt_ldt_disp.f
3968 int UNUSED written
= 0;
3969 IADDR UNUSED pc
= abuf
->addr
;
3970 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3975 tmp_dregno
= FLD (f_srcdst
);
3976 tmp_temp
= FLD (f_optdisp
);
3978 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3979 * FLD (i_dst
) = opval
;
3980 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3983 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3984 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3985 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3988 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3989 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3990 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
3998 CASE (sem
, INSN_LDT_INDIRECT_DISP
) : /* ldt $optdisp($abase), $dst */
4000 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4001 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4002 #define FLD(f) abuf->fields.fmt_ldt_indirect_disp.f
4003 int UNUSED written
= 0;
4004 IADDR UNUSED pc
= abuf
->addr
;
4005 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4010 tmp_dregno
= FLD (f_srcdst
);
4011 tmp_temp
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
4013 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4014 * FLD (i_dst
) = opval
;
4015 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4018 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4019 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4020 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4023 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4024 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4025 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4033 CASE (sem
, INSN_LDT_INDEX_DISP
) : /* ldt $optdisp[$index*S$scale], $dst */
4035 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4036 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4037 #define FLD(f) abuf->fields.fmt_ldt_index_disp.f
4038 int UNUSED written
= 0;
4039 IADDR UNUSED pc
= abuf
->addr
;
4040 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4045 tmp_dregno
= FLD (f_srcdst
);
4046 tmp_temp
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
4048 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4049 * FLD (i_dst
) = opval
;
4050 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4053 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4054 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4055 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4058 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4059 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4060 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4068 CASE (sem
, INSN_LDT_INDIRECT_INDEX_DISP
) : /* ldt $optdisp($abase)[$index*S$scale], $dst */
4070 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4071 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4072 #define FLD(f) abuf->fields.fmt_ldt_indirect_index_disp.f
4073 int UNUSED written
= 0;
4074 IADDR UNUSED pc
= abuf
->addr
;
4075 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4080 tmp_dregno
= FLD (f_srcdst
);
4081 tmp_temp
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
4083 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4084 * FLD (i_dst
) = opval
;
4085 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4088 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4089 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4090 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4093 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4094 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4095 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4103 CASE (sem
, INSN_LDQ_OFFSET
) : /* ldq $offset, $dst */
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_offset.f
4108 int UNUSED written
= 0;
4109 IADDR UNUSED pc
= abuf
->addr
;
4110 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4115 tmp_dregno
= FLD (f_srcdst
);
4116 tmp_temp
= FLD (f_offset
);
4118 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4119 * FLD (i_dst
) = opval
;
4120 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
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-1", 'x', opval
);
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-2", 'x', opval
);
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-3", 'x', opval
);
4143 CASE (sem
, INSN_LDQ_INDIRECT_OFFSET
) : /* ldq $offset($abase), $dst */
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_offset.f
4148 int UNUSED written
= 0;
4149 IADDR UNUSED pc
= abuf
->addr
;
4150 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4155 tmp_dregno
= FLD (f_srcdst
);
4156 tmp_temp
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
4158 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4159 * FLD (i_dst
) = opval
;
4160 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
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-1", 'x', opval
);
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-2", 'x', opval
);
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-3", 'x', opval
);
4183 CASE (sem
, INSN_LDQ_INDIRECT
) : /* ldq ($abase), $dst */
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_indirect.f
4188 int UNUSED written
= 0;
4189 IADDR UNUSED pc
= abuf
->addr
;
4190 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4195 tmp_dregno
= FLD (f_srcdst
);
4196 tmp_temp
= * FLD (i_abase
);
4198 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4199 * FLD (i_dst
) = opval
;
4200 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
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-1", 'x', opval
);
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-2", 'x', opval
);
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-3", 'x', opval
);
4223 CASE (sem
, INSN_LDQ_INDIRECT_INDEX
) : /* ldq ($abase)[$index*S$scale], $dst */
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.f
4228 int UNUSED written
= 0;
4229 IADDR UNUSED pc
= abuf
->addr
;
4230 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4235 tmp_dregno
= FLD (f_srcdst
);
4236 tmp_temp
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
4238 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4239 * FLD (i_dst
) = opval
;
4240 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
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-1", 'x', opval
);
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-2", 'x', opval
);
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-3", 'x', opval
);
4263 CASE (sem
, INSN_LDQ_DISP
) : /* ldq $optdisp, $dst */
4265 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4266 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4267 #define FLD(f) abuf->fields.fmt_ldq_disp.f
4268 int UNUSED written
= 0;
4269 IADDR UNUSED pc
= abuf
->addr
;
4270 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4275 tmp_dregno
= FLD (f_srcdst
);
4276 tmp_temp
= FLD (f_optdisp
);
4278 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4279 * FLD (i_dst
) = opval
;
4280 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4283 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4284 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4285 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4288 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4289 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4290 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4293 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4294 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4295 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
4303 CASE (sem
, INSN_LDQ_INDIRECT_DISP
) : /* ldq $optdisp($abase), $dst */
4305 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4306 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4307 #define FLD(f) abuf->fields.fmt_ldq_indirect_disp.f
4308 int UNUSED written
= 0;
4309 IADDR UNUSED pc
= abuf
->addr
;
4310 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4315 tmp_dregno
= FLD (f_srcdst
);
4316 tmp_temp
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
4318 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4319 * FLD (i_dst
) = opval
;
4320 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4323 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4324 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4325 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4328 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4329 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4330 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4333 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4334 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4335 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
4343 CASE (sem
, INSN_LDQ_INDEX_DISP
) : /* ldq $optdisp[$index*S$scale], $dst */
4345 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4346 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4347 #define FLD(f) abuf->fields.fmt_ldq_index_disp.f
4348 int UNUSED written
= 0;
4349 IADDR UNUSED pc
= abuf
->addr
;
4350 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4355 tmp_dregno
= FLD (f_srcdst
);
4356 tmp_temp
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
4358 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4359 * FLD (i_dst
) = opval
;
4360 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4363 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4364 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4365 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4368 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4369 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4370 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4373 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4374 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4375 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
4383 CASE (sem
, INSN_LDQ_INDIRECT_INDEX_DISP
) : /* ldq $optdisp($abase)[$index*S$scale], $dst */
4385 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4386 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4387 #define FLD(f) abuf->fields.fmt_ldq_indirect_index_disp.f
4388 int UNUSED written
= 0;
4389 IADDR UNUSED pc
= abuf
->addr
;
4390 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4395 tmp_dregno
= FLD (f_srcdst
);
4396 tmp_temp
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
4398 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4399 * FLD (i_dst
) = opval
;
4400 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4403 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4404 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4405 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4408 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4409 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4410 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4413 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4414 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4415 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
4423 CASE (sem
, INSN_ST_OFFSET
) : /* st $st_src, $offset */
4425 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4426 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4427 #define FLD(f) abuf->fields.fmt_st_offset.f
4428 int UNUSED written
= 0;
4429 IADDR UNUSED pc
= abuf
->addr
;
4430 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4433 SI opval
= * FLD (i_st_src
);
4434 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
4435 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4442 CASE (sem
, INSN_ST_INDIRECT_OFFSET
) : /* st $st_src, $offset($abase) */
4444 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4445 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4446 #define FLD(f) abuf->fields.fmt_st_indirect_offset.f
4447 int UNUSED written
= 0;
4448 IADDR UNUSED pc
= abuf
->addr
;
4449 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4452 SI opval
= * FLD (i_st_src
);
4453 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4454 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4461 CASE (sem
, INSN_ST_INDIRECT
) : /* st $st_src, ($abase) */
4463 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4464 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4465 #define FLD(f) abuf->fields.fmt_st_indirect.f
4466 int UNUSED written
= 0;
4467 IADDR UNUSED pc
= abuf
->addr
;
4468 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4471 SI opval
= * FLD (i_st_src
);
4472 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4473 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4480 CASE (sem
, INSN_ST_INDIRECT_INDEX
) : /* st $st_src, ($abase)[$index*S$scale] */
4482 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4483 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4484 #define FLD(f) abuf->fields.fmt_st_indirect_index.f
4485 int UNUSED written
= 0;
4486 IADDR UNUSED pc
= abuf
->addr
;
4487 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4490 SI opval
= * FLD (i_st_src
);
4491 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4492 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4499 CASE (sem
, INSN_ST_DISP
) : /* st $st_src, $optdisp */
4501 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4502 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4503 #define FLD(f) abuf->fields.fmt_st_disp.f
4504 int UNUSED written
= 0;
4505 IADDR UNUSED pc
= abuf
->addr
;
4506 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4509 SI opval
= * FLD (i_st_src
);
4510 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4511 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4518 CASE (sem
, INSN_ST_INDIRECT_DISP
) : /* st $st_src, $optdisp($abase) */
4520 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4521 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4522 #define FLD(f) abuf->fields.fmt_st_indirect_disp.f
4523 int UNUSED written
= 0;
4524 IADDR UNUSED pc
= abuf
->addr
;
4525 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4528 SI opval
= * FLD (i_st_src
);
4529 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4530 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4537 CASE (sem
, INSN_ST_INDEX_DISP
) : /* st $st_src, $optdisp[$index*S$scale */
4539 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4540 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4541 #define FLD(f) abuf->fields.fmt_st_index_disp.f
4542 int UNUSED written
= 0;
4543 IADDR UNUSED pc
= abuf
->addr
;
4544 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4547 SI opval
= * FLD (i_st_src
);
4548 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4549 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4556 CASE (sem
, INSN_ST_INDIRECT_INDEX_DISP
) : /* st $st_src, $optdisp($abase)[$index*S$scale] */
4558 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4559 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4560 #define FLD(f) abuf->fields.fmt_st_indirect_index_disp.f
4561 int UNUSED written
= 0;
4562 IADDR UNUSED pc
= abuf
->addr
;
4563 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4566 SI opval
= * FLD (i_st_src
);
4567 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4568 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4575 CASE (sem
, INSN_STOB_OFFSET
) : /* stob $st_src, $offset */
4577 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4578 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4579 #define FLD(f) abuf->fields.fmt_stob_offset.f
4580 int UNUSED written
= 0;
4581 IADDR UNUSED pc
= abuf
->addr
;
4582 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4585 QI opval
= * FLD (i_st_src
);
4586 SETMEMQI (current_cpu
, pc
, FLD (f_offset
), opval
);
4587 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4594 CASE (sem
, INSN_STOB_INDIRECT_OFFSET
) : /* stob $st_src, $offset($abase) */
4596 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4597 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4598 #define FLD(f) abuf->fields.fmt_stob_indirect_offset.f
4599 int UNUSED written
= 0;
4600 IADDR UNUSED pc
= abuf
->addr
;
4601 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4604 QI opval
= * FLD (i_st_src
);
4605 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4606 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4613 CASE (sem
, INSN_STOB_INDIRECT
) : /* stob $st_src, ($abase) */
4615 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4616 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4617 #define FLD(f) abuf->fields.fmt_stob_indirect.f
4618 int UNUSED written
= 0;
4619 IADDR UNUSED pc
= abuf
->addr
;
4620 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4623 QI opval
= * FLD (i_st_src
);
4624 SETMEMQI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4625 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4632 CASE (sem
, INSN_STOB_INDIRECT_INDEX
) : /* stob $st_src, ($abase)[$index*S$scale] */
4634 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4635 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4636 #define FLD(f) abuf->fields.fmt_stob_indirect_index.f
4637 int UNUSED written
= 0;
4638 IADDR UNUSED pc
= abuf
->addr
;
4639 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4642 QI opval
= * FLD (i_st_src
);
4643 SETMEMQI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4644 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4651 CASE (sem
, INSN_STOB_DISP
) : /* stob $st_src, $optdisp */
4653 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4654 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4655 #define FLD(f) abuf->fields.fmt_stob_disp.f
4656 int UNUSED written
= 0;
4657 IADDR UNUSED pc
= abuf
->addr
;
4658 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4661 QI opval
= * FLD (i_st_src
);
4662 SETMEMQI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4663 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4670 CASE (sem
, INSN_STOB_INDIRECT_DISP
) : /* stob $st_src, $optdisp($abase) */
4672 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4673 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4674 #define FLD(f) abuf->fields.fmt_stob_indirect_disp.f
4675 int UNUSED written
= 0;
4676 IADDR UNUSED pc
= abuf
->addr
;
4677 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4680 QI opval
= * FLD (i_st_src
);
4681 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4682 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4689 CASE (sem
, INSN_STOB_INDEX_DISP
) : /* stob $st_src, $optdisp[$index*S$scale */
4691 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4692 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4693 #define FLD(f) abuf->fields.fmt_stob_index_disp.f
4694 int UNUSED written
= 0;
4695 IADDR UNUSED pc
= abuf
->addr
;
4696 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4699 QI opval
= * FLD (i_st_src
);
4700 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4701 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4708 CASE (sem
, INSN_STOB_INDIRECT_INDEX_DISP
) : /* stob $st_src, $optdisp($abase)[$index*S$scale] */
4710 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4711 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4712 #define FLD(f) abuf->fields.fmt_stob_indirect_index_disp.f
4713 int UNUSED written
= 0;
4714 IADDR UNUSED pc
= abuf
->addr
;
4715 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4718 QI opval
= * FLD (i_st_src
);
4719 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4720 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4727 CASE (sem
, INSN_STOS_OFFSET
) : /* stos $st_src, $offset */
4729 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4730 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4731 #define FLD(f) abuf->fields.fmt_stos_offset.f
4732 int UNUSED written
= 0;
4733 IADDR UNUSED pc
= abuf
->addr
;
4734 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4737 HI opval
= * FLD (i_st_src
);
4738 SETMEMHI (current_cpu
, pc
, FLD (f_offset
), opval
);
4739 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4746 CASE (sem
, INSN_STOS_INDIRECT_OFFSET
) : /* stos $st_src, $offset($abase) */
4748 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4749 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4750 #define FLD(f) abuf->fields.fmt_stos_indirect_offset.f
4751 int UNUSED written
= 0;
4752 IADDR UNUSED pc
= abuf
->addr
;
4753 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4756 HI opval
= * FLD (i_st_src
);
4757 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4758 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4765 CASE (sem
, INSN_STOS_INDIRECT
) : /* stos $st_src, ($abase) */
4767 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4768 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4769 #define FLD(f) abuf->fields.fmt_stos_indirect.f
4770 int UNUSED written
= 0;
4771 IADDR UNUSED pc
= abuf
->addr
;
4772 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4775 HI opval
= * FLD (i_st_src
);
4776 SETMEMHI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4777 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4784 CASE (sem
, INSN_STOS_INDIRECT_INDEX
) : /* stos $st_src, ($abase)[$index*S$scale] */
4786 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4787 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4788 #define FLD(f) abuf->fields.fmt_stos_indirect_index.f
4789 int UNUSED written
= 0;
4790 IADDR UNUSED pc
= abuf
->addr
;
4791 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4794 HI opval
= * FLD (i_st_src
);
4795 SETMEMHI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4796 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4803 CASE (sem
, INSN_STOS_DISP
) : /* stos $st_src, $optdisp */
4805 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4806 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4807 #define FLD(f) abuf->fields.fmt_stos_disp.f
4808 int UNUSED written
= 0;
4809 IADDR UNUSED pc
= abuf
->addr
;
4810 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4813 HI opval
= * FLD (i_st_src
);
4814 SETMEMHI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4815 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4822 CASE (sem
, INSN_STOS_INDIRECT_DISP
) : /* stos $st_src, $optdisp($abase) */
4824 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4825 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4826 #define FLD(f) abuf->fields.fmt_stos_indirect_disp.f
4827 int UNUSED written
= 0;
4828 IADDR UNUSED pc
= abuf
->addr
;
4829 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4832 HI opval
= * FLD (i_st_src
);
4833 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4834 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4841 CASE (sem
, INSN_STOS_INDEX_DISP
) : /* stos $st_src, $optdisp[$index*S$scale */
4843 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4844 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4845 #define FLD(f) abuf->fields.fmt_stos_index_disp.f
4846 int UNUSED written
= 0;
4847 IADDR UNUSED pc
= abuf
->addr
;
4848 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4851 HI opval
= * FLD (i_st_src
);
4852 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4853 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4860 CASE (sem
, INSN_STOS_INDIRECT_INDEX_DISP
) : /* stos $st_src, $optdisp($abase)[$index*S$scale] */
4862 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4863 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4864 #define FLD(f) abuf->fields.fmt_stos_indirect_index_disp.f
4865 int UNUSED written
= 0;
4866 IADDR UNUSED pc
= abuf
->addr
;
4867 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4870 HI opval
= * FLD (i_st_src
);
4871 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4872 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4879 CASE (sem
, INSN_STL_OFFSET
) : /* stl $st_src, $offset */
4881 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4882 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4883 #define FLD(f) abuf->fields.fmt_stl_offset.f
4884 int UNUSED written
= 0;
4885 IADDR UNUSED pc
= abuf
->addr
;
4886 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4890 tmp_sregno
= FLD (f_srcdst
);
4892 SI opval
= * FLD (i_st_src
);
4893 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
4894 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4897 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4898 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 4), opval
);
4899 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4907 CASE (sem
, INSN_STL_INDIRECT_OFFSET
) : /* stl $st_src, $offset($abase) */
4909 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4910 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4911 #define FLD(f) abuf->fields.fmt_stl_indirect_offset.f
4912 int UNUSED written
= 0;
4913 IADDR UNUSED pc
= abuf
->addr
;
4914 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4918 tmp_sregno
= FLD (f_srcdst
);
4920 SI opval
= * FLD (i_st_src
);
4921 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4922 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4925 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4926 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 4), opval
);
4927 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4935 CASE (sem
, INSN_STL_INDIRECT
) : /* stl $st_src, ($abase) */
4937 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4938 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4939 #define FLD(f) abuf->fields.fmt_stl_indirect.f
4940 int UNUSED written
= 0;
4941 IADDR UNUSED pc
= abuf
->addr
;
4942 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4946 tmp_sregno
= FLD (f_srcdst
);
4948 SI opval
= * FLD (i_st_src
);
4949 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4950 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4953 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4954 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 4), opval
);
4955 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4963 CASE (sem
, INSN_STL_INDIRECT_INDEX
) : /* stl $st_src, ($abase)[$index*S$scale] */
4965 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4966 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4967 #define FLD(f) abuf->fields.fmt_stl_indirect_index.f
4968 int UNUSED written
= 0;
4969 IADDR UNUSED pc
= abuf
->addr
;
4970 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4974 tmp_sregno
= FLD (f_srcdst
);
4976 SI opval
= * FLD (i_st_src
);
4977 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4978 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4981 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4982 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
4983 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4991 CASE (sem
, INSN_STL_DISP
) : /* stl $st_src, $optdisp */
4993 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4994 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4995 #define FLD(f) abuf->fields.fmt_stl_disp.f
4996 int UNUSED written
= 0;
4997 IADDR UNUSED pc
= abuf
->addr
;
4998 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5002 tmp_sregno
= FLD (f_srcdst
);
5004 SI opval
= * FLD (i_st_src
);
5005 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
5006 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5009 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5010 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 4), opval
);
5011 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5019 CASE (sem
, INSN_STL_INDIRECT_DISP
) : /* stl $st_src, $optdisp($abase) */
5021 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5022 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5023 #define FLD(f) abuf->fields.fmt_stl_indirect_disp.f
5024 int UNUSED written
= 0;
5025 IADDR UNUSED pc
= abuf
->addr
;
5026 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5030 tmp_sregno
= FLD (f_srcdst
);
5032 SI opval
= * FLD (i_st_src
);
5033 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
5034 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5037 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5038 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 4), opval
);
5039 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5047 CASE (sem
, INSN_STL_INDEX_DISP
) : /* stl $st_src, $optdisp[$index*S$scale */
5049 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5050 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5051 #define FLD(f) abuf->fields.fmt_stl_index_disp.f
5052 int UNUSED written
= 0;
5053 IADDR UNUSED pc
= abuf
->addr
;
5054 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5058 tmp_sregno
= FLD (f_srcdst
);
5060 SI opval
= * FLD (i_st_src
);
5061 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5062 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5065 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5066 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5067 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5075 CASE (sem
, INSN_STL_INDIRECT_INDEX_DISP
) : /* stl $st_src, $optdisp($abase)[$index*S$scale] */
5077 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5078 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5079 #define FLD(f) abuf->fields.fmt_stl_indirect_index_disp.f
5080 int UNUSED written
= 0;
5081 IADDR UNUSED pc
= abuf
->addr
;
5082 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5086 tmp_sregno
= FLD (f_srcdst
);
5088 SI opval
= * FLD (i_st_src
);
5089 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
5090 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5093 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5094 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 4), opval
);
5095 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5103 CASE (sem
, INSN_STT_OFFSET
) : /* stt $st_src, $offset */
5105 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5106 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5107 #define FLD(f) abuf->fields.fmt_stt_offset.f
5108 int UNUSED written
= 0;
5109 IADDR UNUSED pc
= abuf
->addr
;
5110 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5114 tmp_sregno
= FLD (f_srcdst
);
5116 SI opval
= * FLD (i_st_src
);
5117 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
5118 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5121 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5122 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 4), opval
);
5123 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5126 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5127 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 8), opval
);
5128 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5136 CASE (sem
, INSN_STT_INDIRECT_OFFSET
) : /* stt $st_src, $offset($abase) */
5138 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5139 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5140 #define FLD(f) abuf->fields.fmt_stt_indirect_offset.f
5141 int UNUSED written
= 0;
5142 IADDR UNUSED pc
= abuf
->addr
;
5143 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5147 tmp_sregno
= FLD (f_srcdst
);
5149 SI opval
= * FLD (i_st_src
);
5150 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
5151 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5154 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5155 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 4), opval
);
5156 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5159 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5160 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 8), opval
);
5161 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5169 CASE (sem
, INSN_STT_INDIRECT
) : /* stt $st_src, ($abase) */
5171 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5172 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5173 #define FLD(f) abuf->fields.fmt_stt_indirect.f
5174 int UNUSED written
= 0;
5175 IADDR UNUSED pc
= abuf
->addr
;
5176 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5180 tmp_sregno
= FLD (f_srcdst
);
5182 SI opval
= * FLD (i_st_src
);
5183 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
5184 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5187 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5188 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 4), opval
);
5189 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5192 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5193 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 8), opval
);
5194 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5202 CASE (sem
, INSN_STT_INDIRECT_INDEX
) : /* stt $st_src, ($abase)[$index*S$scale] */
5204 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5205 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5206 #define FLD(f) abuf->fields.fmt_stt_indirect_index.f
5207 int UNUSED written
= 0;
5208 IADDR UNUSED pc
= abuf
->addr
;
5209 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5213 tmp_sregno
= FLD (f_srcdst
);
5215 SI opval
= * FLD (i_st_src
);
5216 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5217 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5220 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5221 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5222 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5225 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5226 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5227 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5235 CASE (sem
, INSN_STT_DISP
) : /* stt $st_src, $optdisp */
5237 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5238 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5239 #define FLD(f) abuf->fields.fmt_stt_disp.f
5240 int UNUSED written
= 0;
5241 IADDR UNUSED pc
= abuf
->addr
;
5242 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5246 tmp_sregno
= FLD (f_srcdst
);
5248 SI opval
= * FLD (i_st_src
);
5249 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
5250 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5253 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5254 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 4), opval
);
5255 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5258 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5259 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 8), opval
);
5260 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5268 CASE (sem
, INSN_STT_INDIRECT_DISP
) : /* stt $st_src, $optdisp($abase) */
5270 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5271 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5272 #define FLD(f) abuf->fields.fmt_stt_indirect_disp.f
5273 int UNUSED written
= 0;
5274 IADDR UNUSED pc
= abuf
->addr
;
5275 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5279 tmp_sregno
= FLD (f_srcdst
);
5281 SI opval
= * FLD (i_st_src
);
5282 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
5283 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5286 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5287 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 4), opval
);
5288 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5291 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5292 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 8), opval
);
5293 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5301 CASE (sem
, INSN_STT_INDEX_DISP
) : /* stt $st_src, $optdisp[$index*S$scale */
5303 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5304 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5305 #define FLD(f) abuf->fields.fmt_stt_index_disp.f
5306 int UNUSED written
= 0;
5307 IADDR UNUSED pc
= abuf
->addr
;
5308 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5312 tmp_sregno
= FLD (f_srcdst
);
5314 SI opval
= * FLD (i_st_src
);
5315 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5316 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5319 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5320 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5321 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5324 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5325 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5326 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5334 CASE (sem
, INSN_STT_INDIRECT_INDEX_DISP
) : /* stt $st_src, $optdisp($abase)[$index*S$scale] */
5336 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5337 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5338 #define FLD(f) abuf->fields.fmt_stt_indirect_index_disp.f
5339 int UNUSED written
= 0;
5340 IADDR UNUSED pc
= abuf
->addr
;
5341 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5345 tmp_sregno
= FLD (f_srcdst
);
5347 SI opval
= * FLD (i_st_src
);
5348 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
5349 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5352 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5353 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 4), opval
);
5354 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5357 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5358 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 8), opval
);
5359 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5367 CASE (sem
, INSN_STQ_OFFSET
) : /* stq $st_src, $offset */
5369 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5370 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5371 #define FLD(f) abuf->fields.fmt_stq_offset.f
5372 int UNUSED written
= 0;
5373 IADDR UNUSED pc
= abuf
->addr
;
5374 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5378 tmp_sregno
= FLD (f_srcdst
);
5380 SI opval
= * FLD (i_st_src
);
5381 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
5382 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5385 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5386 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 4), opval
);
5387 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5390 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5391 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 8), opval
);
5392 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5395 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5396 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 12), opval
);
5397 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5405 CASE (sem
, INSN_STQ_INDIRECT_OFFSET
) : /* stq $st_src, $offset($abase) */
5407 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5408 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5409 #define FLD(f) abuf->fields.fmt_stq_indirect_offset.f
5410 int UNUSED written
= 0;
5411 IADDR UNUSED pc
= abuf
->addr
;
5412 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5416 tmp_sregno
= FLD (f_srcdst
);
5418 SI opval
= * FLD (i_st_src
);
5419 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
5420 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5423 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5424 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 4), opval
);
5425 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5428 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5429 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 8), opval
);
5430 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5433 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5434 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 12), opval
);
5435 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5443 CASE (sem
, INSN_STQ_INDIRECT
) : /* stq $st_src, ($abase) */
5445 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5446 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5447 #define FLD(f) abuf->fields.fmt_stq_indirect.f
5448 int UNUSED written
= 0;
5449 IADDR UNUSED pc
= abuf
->addr
;
5450 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5454 tmp_sregno
= FLD (f_srcdst
);
5456 SI opval
= * FLD (i_st_src
);
5457 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
5458 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5461 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5462 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 4), opval
);
5463 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5466 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5467 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 8), opval
);
5468 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5471 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5472 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 12), opval
);
5473 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5481 CASE (sem
, INSN_STQ_INDIRECT_INDEX
) : /* stq $st_src, ($abase)[$index*S$scale] */
5483 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5484 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5485 #define FLD(f) abuf->fields.fmt_stq_indirect_index.f
5486 int UNUSED written
= 0;
5487 IADDR UNUSED pc
= abuf
->addr
;
5488 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5492 tmp_sregno
= FLD (f_srcdst
);
5494 SI opval
= * FLD (i_st_src
);
5495 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5496 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5499 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5500 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5501 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5504 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5505 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5506 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5509 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5510 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 12), opval
);
5511 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5519 CASE (sem
, INSN_STQ_DISP
) : /* stq $st_src, $optdisp */
5521 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5522 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5523 #define FLD(f) abuf->fields.fmt_stq_disp.f
5524 int UNUSED written
= 0;
5525 IADDR UNUSED pc
= abuf
->addr
;
5526 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5530 tmp_sregno
= FLD (f_srcdst
);
5532 SI opval
= * FLD (i_st_src
);
5533 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
5534 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5537 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5538 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 4), opval
);
5539 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5542 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5543 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 8), opval
);
5544 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5547 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5548 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 12), opval
);
5549 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5557 CASE (sem
, INSN_STQ_INDIRECT_DISP
) : /* stq $st_src, $optdisp($abase) */
5559 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5560 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5561 #define FLD(f) abuf->fields.fmt_stq_indirect_disp.f
5562 int UNUSED written
= 0;
5563 IADDR UNUSED pc
= abuf
->addr
;
5564 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5568 tmp_sregno
= FLD (f_srcdst
);
5570 SI opval
= * FLD (i_st_src
);
5571 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
5572 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5575 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5576 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 4), opval
);
5577 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5580 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5581 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 8), opval
);
5582 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5585 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5586 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 12), opval
);
5587 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5595 CASE (sem
, INSN_STQ_INDEX_DISP
) : /* stq $st_src, $optdisp[$index*S$scale */
5597 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5598 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5599 #define FLD(f) abuf->fields.fmt_stq_index_disp.f
5600 int UNUSED written
= 0;
5601 IADDR UNUSED pc
= abuf
->addr
;
5602 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5606 tmp_sregno
= FLD (f_srcdst
);
5608 SI opval
= * FLD (i_st_src
);
5609 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5610 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5613 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5614 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5615 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5618 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5619 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5620 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5623 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5624 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 12), opval
);
5625 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5633 CASE (sem
, INSN_STQ_INDIRECT_INDEX_DISP
) : /* stq $st_src, $optdisp($abase)[$index*S$scale] */
5635 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5636 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5637 #define FLD(f) abuf->fields.fmt_stq_indirect_index_disp.f
5638 int UNUSED written
= 0;
5639 IADDR UNUSED pc
= abuf
->addr
;
5640 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5644 tmp_sregno
= FLD (f_srcdst
);
5646 SI opval
= * FLD (i_st_src
);
5647 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
5648 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5651 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5652 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 4), opval
);
5653 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5656 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5657 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 8), opval
);
5658 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5661 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5662 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 12), opval
);
5663 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5671 CASE (sem
, INSN_CMPOBE_REG
) : /* cmpobe $br_src1, $br_src2, $br_disp */
5673 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5674 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5675 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5676 int UNUSED written
= 0;
5677 IADDR UNUSED pc
= abuf
->addr
;
5679 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5681 if (EQSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5683 USI opval
= FLD (i_br_disp
);
5684 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5685 written
|= (1 << 3);
5686 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5690 abuf
->written
= written
;
5691 SEM_BRANCH_FINI (vpc
);
5696 CASE (sem
, INSN_CMPOBE_LIT
) : /* cmpobe $br_lit1, $br_src2, $br_disp */
5698 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5699 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5700 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5701 int UNUSED written
= 0;
5702 IADDR UNUSED pc
= abuf
->addr
;
5704 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5706 if (EQSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5708 USI opval
= FLD (i_br_disp
);
5709 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5710 written
|= (1 << 3);
5711 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5715 abuf
->written
= written
;
5716 SEM_BRANCH_FINI (vpc
);
5721 CASE (sem
, INSN_CMPOBNE_REG
) : /* cmpobne $br_src1, $br_src2, $br_disp */
5723 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5724 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5725 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5726 int UNUSED written
= 0;
5727 IADDR UNUSED pc
= abuf
->addr
;
5729 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5731 if (NESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5733 USI opval
= FLD (i_br_disp
);
5734 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5735 written
|= (1 << 3);
5736 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5740 abuf
->written
= written
;
5741 SEM_BRANCH_FINI (vpc
);
5746 CASE (sem
, INSN_CMPOBNE_LIT
) : /* cmpobne $br_lit1, $br_src2, $br_disp */
5748 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5749 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5750 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5751 int UNUSED written
= 0;
5752 IADDR UNUSED pc
= abuf
->addr
;
5754 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5756 if (NESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5758 USI opval
= FLD (i_br_disp
);
5759 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5760 written
|= (1 << 3);
5761 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5765 abuf
->written
= written
;
5766 SEM_BRANCH_FINI (vpc
);
5771 CASE (sem
, INSN_CMPOBL_REG
) : /* cmpobl $br_src1, $br_src2, $br_disp */
5773 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5774 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5775 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
5776 int UNUSED written
= 0;
5777 IADDR UNUSED pc
= abuf
->addr
;
5779 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5781 if (LTUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5783 USI opval
= FLD (i_br_disp
);
5784 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5785 written
|= (1 << 3);
5786 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5790 abuf
->written
= written
;
5791 SEM_BRANCH_FINI (vpc
);
5796 CASE (sem
, INSN_CMPOBL_LIT
) : /* cmpobl $br_lit1, $br_src2, $br_disp */
5798 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5799 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5800 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
5801 int UNUSED written
= 0;
5802 IADDR UNUSED pc
= abuf
->addr
;
5804 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5806 if (LTUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5808 USI opval
= FLD (i_br_disp
);
5809 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5810 written
|= (1 << 3);
5811 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5815 abuf
->written
= written
;
5816 SEM_BRANCH_FINI (vpc
);
5821 CASE (sem
, INSN_CMPOBLE_REG
) : /* cmpoble $br_src1, $br_src2, $br_disp */
5823 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5824 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5825 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
5826 int UNUSED written
= 0;
5827 IADDR UNUSED pc
= abuf
->addr
;
5829 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5831 if (LEUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5833 USI opval
= FLD (i_br_disp
);
5834 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5835 written
|= (1 << 3);
5836 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5840 abuf
->written
= written
;
5841 SEM_BRANCH_FINI (vpc
);
5846 CASE (sem
, INSN_CMPOBLE_LIT
) : /* cmpoble $br_lit1, $br_src2, $br_disp */
5848 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5849 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5850 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
5851 int UNUSED written
= 0;
5852 IADDR UNUSED pc
= abuf
->addr
;
5854 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5856 if (LEUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5858 USI opval
= FLD (i_br_disp
);
5859 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5860 written
|= (1 << 3);
5861 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5865 abuf
->written
= written
;
5866 SEM_BRANCH_FINI (vpc
);
5871 CASE (sem
, INSN_CMPOBG_REG
) : /* cmpobg $br_src1, $br_src2, $br_disp */
5873 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5874 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5875 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
5876 int UNUSED written
= 0;
5877 IADDR UNUSED pc
= abuf
->addr
;
5879 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5881 if (GTUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5883 USI opval
= FLD (i_br_disp
);
5884 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5885 written
|= (1 << 3);
5886 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5890 abuf
->written
= written
;
5891 SEM_BRANCH_FINI (vpc
);
5896 CASE (sem
, INSN_CMPOBG_LIT
) : /* cmpobg $br_lit1, $br_src2, $br_disp */
5898 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5899 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5900 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
5901 int UNUSED written
= 0;
5902 IADDR UNUSED pc
= abuf
->addr
;
5904 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5906 if (GTUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5908 USI opval
= FLD (i_br_disp
);
5909 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5910 written
|= (1 << 3);
5911 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5915 abuf
->written
= written
;
5916 SEM_BRANCH_FINI (vpc
);
5921 CASE (sem
, INSN_CMPOBGE_REG
) : /* cmpobge $br_src1, $br_src2, $br_disp */
5923 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5924 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5925 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
5926 int UNUSED written
= 0;
5927 IADDR UNUSED pc
= abuf
->addr
;
5929 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5931 if (GEUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5933 USI opval
= FLD (i_br_disp
);
5934 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5935 written
|= (1 << 3);
5936 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5940 abuf
->written
= written
;
5941 SEM_BRANCH_FINI (vpc
);
5946 CASE (sem
, INSN_CMPOBGE_LIT
) : /* cmpobge $br_lit1, $br_src2, $br_disp */
5948 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5949 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5950 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
5951 int UNUSED written
= 0;
5952 IADDR UNUSED pc
= abuf
->addr
;
5954 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5956 if (GEUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5958 USI opval
= FLD (i_br_disp
);
5959 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5960 written
|= (1 << 3);
5961 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5965 abuf
->written
= written
;
5966 SEM_BRANCH_FINI (vpc
);
5971 CASE (sem
, INSN_CMPIBE_REG
) : /* cmpibe $br_src1, $br_src2, $br_disp */
5973 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5974 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5975 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5976 int UNUSED written
= 0;
5977 IADDR UNUSED pc
= abuf
->addr
;
5979 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5981 if (EQSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5983 USI opval
= FLD (i_br_disp
);
5984 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5985 written
|= (1 << 3);
5986 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5990 abuf
->written
= written
;
5991 SEM_BRANCH_FINI (vpc
);
5996 CASE (sem
, INSN_CMPIBE_LIT
) : /* cmpibe $br_lit1, $br_src2, $br_disp */
5998 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5999 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6000 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6001 int UNUSED written
= 0;
6002 IADDR UNUSED pc
= abuf
->addr
;
6004 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6006 if (EQSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6008 USI opval
= FLD (i_br_disp
);
6009 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6010 written
|= (1 << 3);
6011 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6015 abuf
->written
= written
;
6016 SEM_BRANCH_FINI (vpc
);
6021 CASE (sem
, INSN_CMPIBNE_REG
) : /* cmpibne $br_src1, $br_src2, $br_disp */
6023 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6024 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6025 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
6026 int UNUSED written
= 0;
6027 IADDR UNUSED pc
= abuf
->addr
;
6029 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6031 if (NESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6033 USI opval
= FLD (i_br_disp
);
6034 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6035 written
|= (1 << 3);
6036 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6040 abuf
->written
= written
;
6041 SEM_BRANCH_FINI (vpc
);
6046 CASE (sem
, INSN_CMPIBNE_LIT
) : /* cmpibne $br_lit1, $br_src2, $br_disp */
6048 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6049 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6050 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6051 int UNUSED written
= 0;
6052 IADDR UNUSED pc
= abuf
->addr
;
6054 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6056 if (NESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6058 USI opval
= FLD (i_br_disp
);
6059 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6060 written
|= (1 << 3);
6061 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6065 abuf
->written
= written
;
6066 SEM_BRANCH_FINI (vpc
);
6071 CASE (sem
, INSN_CMPIBL_REG
) : /* cmpibl $br_src1, $br_src2, $br_disp */
6073 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6074 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6075 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
6076 int UNUSED written
= 0;
6077 IADDR UNUSED pc
= abuf
->addr
;
6079 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6081 if (LTSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6083 USI opval
= FLD (i_br_disp
);
6084 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6085 written
|= (1 << 3);
6086 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6090 abuf
->written
= written
;
6091 SEM_BRANCH_FINI (vpc
);
6096 CASE (sem
, INSN_CMPIBL_LIT
) : /* cmpibl $br_lit1, $br_src2, $br_disp */
6098 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6099 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6100 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6101 int UNUSED written
= 0;
6102 IADDR UNUSED pc
= abuf
->addr
;
6104 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6106 if (LTSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6108 USI opval
= FLD (i_br_disp
);
6109 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6110 written
|= (1 << 3);
6111 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6115 abuf
->written
= written
;
6116 SEM_BRANCH_FINI (vpc
);
6121 CASE (sem
, INSN_CMPIBLE_REG
) : /* cmpible $br_src1, $br_src2, $br_disp */
6123 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6124 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6125 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
6126 int UNUSED written
= 0;
6127 IADDR UNUSED pc
= abuf
->addr
;
6129 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6131 if (LESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6133 USI opval
= FLD (i_br_disp
);
6134 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6135 written
|= (1 << 3);
6136 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6140 abuf
->written
= written
;
6141 SEM_BRANCH_FINI (vpc
);
6146 CASE (sem
, INSN_CMPIBLE_LIT
) : /* cmpible $br_lit1, $br_src2, $br_disp */
6148 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6149 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6150 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6151 int UNUSED written
= 0;
6152 IADDR UNUSED pc
= abuf
->addr
;
6154 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6156 if (LESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6158 USI opval
= FLD (i_br_disp
);
6159 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6160 written
|= (1 << 3);
6161 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6165 abuf
->written
= written
;
6166 SEM_BRANCH_FINI (vpc
);
6171 CASE (sem
, INSN_CMPIBG_REG
) : /* cmpibg $br_src1, $br_src2, $br_disp */
6173 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6174 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6175 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
6176 int UNUSED written
= 0;
6177 IADDR UNUSED pc
= abuf
->addr
;
6179 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6181 if (GTSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6183 USI opval
= FLD (i_br_disp
);
6184 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6185 written
|= (1 << 3);
6186 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6190 abuf
->written
= written
;
6191 SEM_BRANCH_FINI (vpc
);
6196 CASE (sem
, INSN_CMPIBG_LIT
) : /* cmpibg $br_lit1, $br_src2, $br_disp */
6198 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6199 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6200 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6201 int UNUSED written
= 0;
6202 IADDR UNUSED pc
= abuf
->addr
;
6204 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6206 if (GTSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6208 USI opval
= FLD (i_br_disp
);
6209 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6210 written
|= (1 << 3);
6211 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6215 abuf
->written
= written
;
6216 SEM_BRANCH_FINI (vpc
);
6221 CASE (sem
, INSN_CMPIBGE_REG
) : /* cmpibge $br_src1, $br_src2, $br_disp */
6223 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6224 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6225 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
6226 int UNUSED written
= 0;
6227 IADDR UNUSED pc
= abuf
->addr
;
6229 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6231 if (GESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6233 USI opval
= FLD (i_br_disp
);
6234 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6235 written
|= (1 << 3);
6236 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6240 abuf
->written
= written
;
6241 SEM_BRANCH_FINI (vpc
);
6246 CASE (sem
, INSN_CMPIBGE_LIT
) : /* cmpibge $br_lit1, $br_src2, $br_disp */
6248 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6249 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6250 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6251 int UNUSED written
= 0;
6252 IADDR UNUSED pc
= abuf
->addr
;
6254 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6256 if (GESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6258 USI opval
= FLD (i_br_disp
);
6259 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6260 written
|= (1 << 3);
6261 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6265 abuf
->written
= written
;
6266 SEM_BRANCH_FINI (vpc
);
6271 CASE (sem
, INSN_BBC_REG
) : /* bbc $br_src1, $br_src2, $br_disp */
6273 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6274 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6275 #define FLD(f) abuf->fields.cti.fields.fmt_bbc_reg.f
6276 int UNUSED written
= 0;
6277 IADDR UNUSED pc
= abuf
->addr
;
6279 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6281 if (EQSI (ANDSI (SLLSI (1, * FLD (i_br_src1
)), * FLD (i_br_src2
)), 0)) {
6283 USI opval
= FLD (i_br_disp
);
6284 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6285 written
|= (1 << 3);
6286 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6290 abuf
->written
= written
;
6291 SEM_BRANCH_FINI (vpc
);
6296 CASE (sem
, INSN_BBC_LIT
) : /* bbc $br_lit1, $br_src2, $br_disp */
6298 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6299 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6300 #define FLD(f) abuf->fields.cti.fields.fmt_bbc_lit.f
6301 int UNUSED written
= 0;
6302 IADDR UNUSED pc
= abuf
->addr
;
6304 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6306 if (EQSI (ANDSI (SLLSI (1, FLD (f_br_src1
)), * FLD (i_br_src2
)), 0)) {
6308 USI opval
= FLD (i_br_disp
);
6309 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6310 written
|= (1 << 3);
6311 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6315 abuf
->written
= written
;
6316 SEM_BRANCH_FINI (vpc
);
6321 CASE (sem
, INSN_BBS_REG
) : /* bbs $br_src1, $br_src2, $br_disp */
6323 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6324 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6325 #define FLD(f) abuf->fields.cti.fields.fmt_bbc_reg.f
6326 int UNUSED written
= 0;
6327 IADDR UNUSED pc
= abuf
->addr
;
6329 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6331 if (NESI (ANDSI (SLLSI (1, * FLD (i_br_src1
)), * FLD (i_br_src2
)), 0)) {
6333 USI opval
= FLD (i_br_disp
);
6334 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6335 written
|= (1 << 3);
6336 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6340 abuf
->written
= written
;
6341 SEM_BRANCH_FINI (vpc
);
6346 CASE (sem
, INSN_BBS_LIT
) : /* bbs $br_lit1, $br_src2, $br_disp */
6348 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6349 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6350 #define FLD(f) abuf->fields.cti.fields.fmt_bbc_lit.f
6351 int UNUSED written
= 0;
6352 IADDR UNUSED pc
= abuf
->addr
;
6354 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6356 if (NESI (ANDSI (SLLSI (1, FLD (f_br_src1
)), * FLD (i_br_src2
)), 0)) {
6358 USI opval
= FLD (i_br_disp
);
6359 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6360 written
|= (1 << 3);
6361 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6365 abuf
->written
= written
;
6366 SEM_BRANCH_FINI (vpc
);
6371 CASE (sem
, INSN_CMPI
) : /* cmpi $src1, $src2 */
6373 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6374 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6375 #define FLD(f) abuf->fields.fmt_cmpi.f
6376 int UNUSED written
= 0;
6377 IADDR UNUSED pc
= abuf
->addr
;
6378 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6381 SI opval
= (LTSI (* FLD (i_src1
), * FLD (i_src2
))) ? (4) : (EQSI (* FLD (i_src1
), * FLD (i_src2
))) ? (2) : (1);
6383 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6390 CASE (sem
, INSN_CMPI1
) : /* cmpi $lit1, $src2 */
6392 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6393 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6394 #define FLD(f) abuf->fields.fmt_cmpi1.f
6395 int UNUSED written
= 0;
6396 IADDR UNUSED pc
= abuf
->addr
;
6397 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6400 SI opval
= (LTSI (FLD (f_src1
), * FLD (i_src2
))) ? (4) : (EQSI (FLD (f_src1
), * FLD (i_src2
))) ? (2) : (1);
6402 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6409 CASE (sem
, INSN_CMPI2
) : /* cmpi $src1, $lit2 */
6411 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6412 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6413 #define FLD(f) abuf->fields.fmt_cmpi2.f
6414 int UNUSED written
= 0;
6415 IADDR UNUSED pc
= abuf
->addr
;
6416 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6419 SI opval
= (LTSI (* FLD (i_src1
), FLD (f_src2
))) ? (4) : (EQSI (* FLD (i_src1
), FLD (f_src2
))) ? (2) : (1);
6421 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6428 CASE (sem
, INSN_CMPI3
) : /* cmpi $lit1, $lit2 */
6430 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6431 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6432 #define FLD(f) abuf->fields.fmt_cmpi3.f
6433 int UNUSED written
= 0;
6434 IADDR UNUSED pc
= abuf
->addr
;
6435 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6438 SI opval
= (LTSI (FLD (f_src1
), FLD (f_src2
))) ? (4) : (EQSI (FLD (f_src1
), FLD (f_src2
))) ? (2) : (1);
6440 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6447 CASE (sem
, INSN_CMPO
) : /* cmpo $src1, $src2 */
6449 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6450 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6451 #define FLD(f) abuf->fields.fmt_cmpo.f
6452 int UNUSED written
= 0;
6453 IADDR UNUSED pc
= abuf
->addr
;
6454 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6457 SI opval
= (LTUSI (* FLD (i_src1
), * FLD (i_src2
))) ? (4) : (EQSI (* FLD (i_src1
), * FLD (i_src2
))) ? (2) : (1);
6459 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6466 CASE (sem
, INSN_CMPO1
) : /* cmpo $lit1, $src2 */
6468 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6469 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6470 #define FLD(f) abuf->fields.fmt_cmpo1.f
6471 int UNUSED written
= 0;
6472 IADDR UNUSED pc
= abuf
->addr
;
6473 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6476 SI opval
= (LTUSI (FLD (f_src1
), * FLD (i_src2
))) ? (4) : (EQSI (FLD (f_src1
), * FLD (i_src2
))) ? (2) : (1);
6478 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6485 CASE (sem
, INSN_CMPO2
) : /* cmpo $src1, $lit2 */
6487 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6488 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6489 #define FLD(f) abuf->fields.fmt_cmpo2.f
6490 int UNUSED written
= 0;
6491 IADDR UNUSED pc
= abuf
->addr
;
6492 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6495 SI opval
= (LTUSI (* FLD (i_src1
), FLD (f_src2
))) ? (4) : (EQSI (* FLD (i_src1
), FLD (f_src2
))) ? (2) : (1);
6497 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6504 CASE (sem
, INSN_CMPO3
) : /* cmpo $lit1, $lit2 */
6506 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6507 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6508 #define FLD(f) abuf->fields.fmt_cmpo3.f
6509 int UNUSED written
= 0;
6510 IADDR UNUSED pc
= abuf
->addr
;
6511 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6514 SI opval
= (LTUSI (FLD (f_src1
), FLD (f_src2
))) ? (4) : (EQSI (FLD (f_src1
), FLD (f_src2
))) ? (2) : (1);
6516 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6523 CASE (sem
, INSN_TESTNO_REG
) : /* testno $br_src1 */
6525 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6526 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6527 #define FLD(f) abuf->fields.fmt_testno_reg.f
6528 int UNUSED written
= 0;
6529 IADDR UNUSED pc
= abuf
->addr
;
6530 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6533 SI opval
= EQSI (CPU (h_cc
), 0);
6534 * FLD (i_br_src1
) = opval
;
6535 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6542 CASE (sem
, INSN_TESTG_REG
) : /* testg $br_src1 */
6544 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6545 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6546 #define FLD(f) abuf->fields.fmt_testno_reg.f
6547 int UNUSED written
= 0;
6548 IADDR UNUSED pc
= abuf
->addr
;
6549 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6552 SI opval
= NESI (ANDSI (CPU (h_cc
), 1), 0);
6553 * FLD (i_br_src1
) = opval
;
6554 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6561 CASE (sem
, INSN_TESTE_REG
) : /* teste $br_src1 */
6563 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6564 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6565 #define FLD(f) abuf->fields.fmt_testno_reg.f
6566 int UNUSED written
= 0;
6567 IADDR UNUSED pc
= abuf
->addr
;
6568 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6571 SI opval
= NESI (ANDSI (CPU (h_cc
), 2), 0);
6572 * FLD (i_br_src1
) = opval
;
6573 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6580 CASE (sem
, INSN_TESTGE_REG
) : /* testge $br_src1 */
6582 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6583 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6584 #define FLD(f) abuf->fields.fmt_testno_reg.f
6585 int UNUSED written
= 0;
6586 IADDR UNUSED pc
= abuf
->addr
;
6587 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6590 SI opval
= NESI (ANDSI (CPU (h_cc
), 3), 0);
6591 * FLD (i_br_src1
) = opval
;
6592 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6599 CASE (sem
, INSN_TESTL_REG
) : /* testl $br_src1 */
6601 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6602 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6603 #define FLD(f) abuf->fields.fmt_testno_reg.f
6604 int UNUSED written
= 0;
6605 IADDR UNUSED pc
= abuf
->addr
;
6606 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6609 SI opval
= NESI (ANDSI (CPU (h_cc
), 4), 0);
6610 * FLD (i_br_src1
) = opval
;
6611 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6618 CASE (sem
, INSN_TESTNE_REG
) : /* testne $br_src1 */
6620 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6621 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6622 #define FLD(f) abuf->fields.fmt_testno_reg.f
6623 int UNUSED written
= 0;
6624 IADDR UNUSED pc
= abuf
->addr
;
6625 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6628 SI opval
= NESI (ANDSI (CPU (h_cc
), 5), 0);
6629 * FLD (i_br_src1
) = opval
;
6630 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6637 CASE (sem
, INSN_TESTLE_REG
) : /* testle $br_src1 */
6639 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6640 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6641 #define FLD(f) abuf->fields.fmt_testno_reg.f
6642 int UNUSED written
= 0;
6643 IADDR UNUSED pc
= abuf
->addr
;
6644 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6647 SI opval
= NESI (ANDSI (CPU (h_cc
), 6), 0);
6648 * FLD (i_br_src1
) = opval
;
6649 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6656 CASE (sem
, INSN_TESTO_REG
) : /* testo $br_src1 */
6658 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6659 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6660 #define FLD(f) abuf->fields.fmt_testno_reg.f
6661 int UNUSED written
= 0;
6662 IADDR UNUSED pc
= abuf
->addr
;
6663 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6666 SI opval
= NESI (ANDSI (CPU (h_cc
), 7), 0);
6667 * FLD (i_br_src1
) = opval
;
6668 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6675 CASE (sem
, INSN_BNO
) : /* bno $ctrl_disp */
6677 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6678 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6679 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6680 int UNUSED written
= 0;
6681 IADDR UNUSED pc
= abuf
->addr
;
6683 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6685 if (EQSI (CPU (h_cc
), 0)) {
6687 USI opval
= FLD (i_ctrl_disp
);
6688 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6689 written
|= (1 << 2);
6690 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6694 abuf
->written
= written
;
6695 SEM_BRANCH_FINI (vpc
);
6700 CASE (sem
, INSN_BG
) : /* bg $ctrl_disp */
6702 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6703 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6704 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6705 int UNUSED written
= 0;
6706 IADDR UNUSED pc
= abuf
->addr
;
6708 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6710 if (NESI (ANDSI (CPU (h_cc
), 1), 0)) {
6712 USI opval
= FLD (i_ctrl_disp
);
6713 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6714 written
|= (1 << 2);
6715 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6719 abuf
->written
= written
;
6720 SEM_BRANCH_FINI (vpc
);
6725 CASE (sem
, INSN_BE
) : /* be $ctrl_disp */
6727 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6728 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6729 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6730 int UNUSED written
= 0;
6731 IADDR UNUSED pc
= abuf
->addr
;
6733 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6735 if (NESI (ANDSI (CPU (h_cc
), 2), 0)) {
6737 USI opval
= FLD (i_ctrl_disp
);
6738 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6739 written
|= (1 << 2);
6740 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6744 abuf
->written
= written
;
6745 SEM_BRANCH_FINI (vpc
);
6750 CASE (sem
, INSN_BGE
) : /* bge $ctrl_disp */
6752 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6753 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6754 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6755 int UNUSED written
= 0;
6756 IADDR UNUSED pc
= abuf
->addr
;
6758 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6760 if (NESI (ANDSI (CPU (h_cc
), 3), 0)) {
6762 USI opval
= FLD (i_ctrl_disp
);
6763 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6764 written
|= (1 << 2);
6765 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6769 abuf
->written
= written
;
6770 SEM_BRANCH_FINI (vpc
);
6775 CASE (sem
, INSN_BL
) : /* bl $ctrl_disp */
6777 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6778 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6779 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6780 int UNUSED written
= 0;
6781 IADDR UNUSED pc
= abuf
->addr
;
6783 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6785 if (NESI (ANDSI (CPU (h_cc
), 4), 0)) {
6787 USI opval
= FLD (i_ctrl_disp
);
6788 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6789 written
|= (1 << 2);
6790 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6794 abuf
->written
= written
;
6795 SEM_BRANCH_FINI (vpc
);
6800 CASE (sem
, INSN_BNE
) : /* bne $ctrl_disp */
6802 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6803 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6804 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6805 int UNUSED written
= 0;
6806 IADDR UNUSED pc
= abuf
->addr
;
6808 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6810 if (NESI (ANDSI (CPU (h_cc
), 5), 0)) {
6812 USI opval
= FLD (i_ctrl_disp
);
6813 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6814 written
|= (1 << 2);
6815 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6819 abuf
->written
= written
;
6820 SEM_BRANCH_FINI (vpc
);
6825 CASE (sem
, INSN_BLE
) : /* ble $ctrl_disp */
6827 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6828 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6829 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6830 int UNUSED written
= 0;
6831 IADDR UNUSED pc
= abuf
->addr
;
6833 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6835 if (NESI (ANDSI (CPU (h_cc
), 6), 0)) {
6837 USI opval
= FLD (i_ctrl_disp
);
6838 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6839 written
|= (1 << 2);
6840 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6844 abuf
->written
= written
;
6845 SEM_BRANCH_FINI (vpc
);
6850 CASE (sem
, INSN_BO
) : /* bo $ctrl_disp */
6852 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6853 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6854 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6855 int UNUSED written
= 0;
6856 IADDR UNUSED pc
= abuf
->addr
;
6858 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6860 if (NESI (ANDSI (CPU (h_cc
), 7), 0)) {
6862 USI opval
= FLD (i_ctrl_disp
);
6863 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6864 written
|= (1 << 2);
6865 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6869 abuf
->written
= written
;
6870 SEM_BRANCH_FINI (vpc
);
6875 CASE (sem
, INSN_B
) : /* b $ctrl_disp */
6877 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6878 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6879 #define FLD(f) abuf->fields.cti.fields.fmt_b.f
6880 int UNUSED written
= 0;
6881 IADDR UNUSED pc
= abuf
->addr
;
6883 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6886 USI opval
= FLD (i_ctrl_disp
);
6887 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6888 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6891 SEM_BRANCH_FINI (vpc
);
6896 CASE (sem
, INSN_BX_INDIRECT_OFFSET
) : /* bx $offset($abase) */
6898 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6899 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6900 #define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect_offset.f
6901 int UNUSED written
= 0;
6902 IADDR UNUSED pc
= abuf
->addr
;
6904 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6907 USI opval
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
6908 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
6909 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6912 SEM_BRANCH_FINI (vpc
);
6917 CASE (sem
, INSN_BX_INDIRECT
) : /* bx ($abase) */
6919 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6920 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6921 #define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect.f
6922 int UNUSED written
= 0;
6923 IADDR UNUSED pc
= abuf
->addr
;
6925 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6928 USI opval
= * FLD (i_abase
);
6929 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
6930 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6933 SEM_BRANCH_FINI (vpc
);
6938 CASE (sem
, INSN_BX_INDIRECT_INDEX
) : /* bx ($abase)[$index*S$scale] */
6940 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6941 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6942 #define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect_index.f
6943 int UNUSED written
= 0;
6944 IADDR UNUSED pc
= abuf
->addr
;
6946 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6949 USI opval
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
6950 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
6951 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6954 SEM_BRANCH_FINI (vpc
);
6959 CASE (sem
, INSN_BX_DISP
) : /* bx $optdisp */
6961 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6962 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6963 #define FLD(f) abuf->fields.cti.fields.fmt_bx_disp.f
6964 int UNUSED written
= 0;
6965 IADDR UNUSED pc
= abuf
->addr
;
6967 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
6970 USI opval
= FLD (f_optdisp
);
6971 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6972 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6975 SEM_BRANCH_FINI (vpc
);
6980 CASE (sem
, INSN_BX_INDIRECT_DISP
) : /* bx $optdisp($abase) */
6982 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6983 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6984 #define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect_disp.f
6985 int UNUSED written
= 0;
6986 IADDR UNUSED pc
= abuf
->addr
;
6988 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
6991 USI opval
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
6992 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
6993 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6996 SEM_BRANCH_FINI (vpc
);
7001 CASE (sem
, INSN_CALLX_DISP
) : /* callx $optdisp */
7003 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7004 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7005 #define FLD(f) abuf->fields.cti.fields.fmt_callx_disp.f
7006 int UNUSED written
= 0;
7007 IADDR UNUSED pc
= abuf
->addr
;
7009 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
7013 tmp_temp
= ANDSI (ADDSI (CPU (h_gr
[((UINT
) 1)]), 63), INVSI (63));
7015 SI opval
= ADDSI (pc
, 8);
7016 CPU (h_gr
[((UINT
) 2)]) = opval
;
7017 TRACE_RESULT (current_cpu
, abuf
, "gr-2", 'x', opval
);
7019 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0), CPU (h_gr
[((UINT
) 0)]));
7020 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4), CPU (h_gr
[((UINT
) 1)]));
7021 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8), CPU (h_gr
[((UINT
) 2)]));
7022 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12), CPU (h_gr
[((UINT
) 3)]));
7023 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16), CPU (h_gr
[((UINT
) 4)]));
7024 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20), CPU (h_gr
[((UINT
) 5)]));
7025 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24), CPU (h_gr
[((UINT
) 6)]));
7026 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28), CPU (h_gr
[((UINT
) 7)]));
7027 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32), CPU (h_gr
[((UINT
) 8)]));
7028 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36), CPU (h_gr
[((UINT
) 9)]));
7029 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40), CPU (h_gr
[((UINT
) 10)]));
7030 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44), CPU (h_gr
[((UINT
) 11)]));
7031 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48), CPU (h_gr
[((UINT
) 12)]));
7032 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52), CPU (h_gr
[((UINT
) 13)]));
7033 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56), CPU (h_gr
[((UINT
) 14)]));
7034 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60), CPU (h_gr
[((UINT
) 15)]));
7036 USI opval
= FLD (f_optdisp
);
7037 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
7038 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7040 CPU (h_gr
[((UINT
) 0)]) = 0xdeadbeef;
7041 CPU (h_gr
[((UINT
) 1)]) = 0xdeadbeef;
7042 CPU (h_gr
[((UINT
) 2)]) = 0xdeadbeef;
7043 CPU (h_gr
[((UINT
) 3)]) = 0xdeadbeef;
7044 CPU (h_gr
[((UINT
) 4)]) = 0xdeadbeef;
7045 CPU (h_gr
[((UINT
) 5)]) = 0xdeadbeef;
7046 CPU (h_gr
[((UINT
) 6)]) = 0xdeadbeef;
7047 CPU (h_gr
[((UINT
) 7)]) = 0xdeadbeef;
7048 CPU (h_gr
[((UINT
) 8)]) = 0xdeadbeef;
7049 CPU (h_gr
[((UINT
) 9)]) = 0xdeadbeef;
7050 CPU (h_gr
[((UINT
) 10)]) = 0xdeadbeef;
7051 CPU (h_gr
[((UINT
) 11)]) = 0xdeadbeef;
7052 CPU (h_gr
[((UINT
) 12)]) = 0xdeadbeef;
7053 CPU (h_gr
[((UINT
) 13)]) = 0xdeadbeef;
7054 CPU (h_gr
[((UINT
) 14)]) = 0xdeadbeef;
7055 CPU (h_gr
[((UINT
) 15)]) = 0xdeadbeef;
7057 SI opval
= CPU (h_gr
[((UINT
) 31)]);
7058 CPU (h_gr
[((UINT
) 0)]) = opval
;
7059 TRACE_RESULT (current_cpu
, abuf
, "gr-0", 'x', opval
);
7062 SI opval
= tmp_temp
;
7063 CPU (h_gr
[((UINT
) 31)]) = opval
;
7064 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7067 SI opval
= ADDSI (tmp_temp
, 64);
7068 CPU (h_gr
[((UINT
) 1)]) = opval
;
7069 TRACE_RESULT (current_cpu
, abuf
, "gr-1", 'x', opval
);
7073 SEM_BRANCH_FINI (vpc
);
7078 CASE (sem
, INSN_CALLX_INDIRECT
) : /* callx ($abase) */
7080 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7081 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7082 #define FLD(f) abuf->fields.cti.fields.fmt_callx_indirect.f
7083 int UNUSED written
= 0;
7084 IADDR UNUSED pc
= abuf
->addr
;
7086 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7090 tmp_temp
= ANDSI (ADDSI (CPU (h_gr
[((UINT
) 1)]), 63), INVSI (63));
7092 SI opval
= ADDSI (pc
, 4);
7093 CPU (h_gr
[((UINT
) 2)]) = opval
;
7094 TRACE_RESULT (current_cpu
, abuf
, "gr-2", 'x', opval
);
7096 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0), CPU (h_gr
[((UINT
) 0)]));
7097 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4), CPU (h_gr
[((UINT
) 1)]));
7098 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8), CPU (h_gr
[((UINT
) 2)]));
7099 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12), CPU (h_gr
[((UINT
) 3)]));
7100 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16), CPU (h_gr
[((UINT
) 4)]));
7101 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20), CPU (h_gr
[((UINT
) 5)]));
7102 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24), CPU (h_gr
[((UINT
) 6)]));
7103 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28), CPU (h_gr
[((UINT
) 7)]));
7104 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32), CPU (h_gr
[((UINT
) 8)]));
7105 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36), CPU (h_gr
[((UINT
) 9)]));
7106 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40), CPU (h_gr
[((UINT
) 10)]));
7107 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44), CPU (h_gr
[((UINT
) 11)]));
7108 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48), CPU (h_gr
[((UINT
) 12)]));
7109 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52), CPU (h_gr
[((UINT
) 13)]));
7110 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56), CPU (h_gr
[((UINT
) 14)]));
7111 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60), CPU (h_gr
[((UINT
) 15)]));
7113 USI opval
= * FLD (i_abase
);
7114 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7115 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7117 CPU (h_gr
[((UINT
) 0)]) = 0xdeadbeef;
7118 CPU (h_gr
[((UINT
) 1)]) = 0xdeadbeef;
7119 CPU (h_gr
[((UINT
) 2)]) = 0xdeadbeef;
7120 CPU (h_gr
[((UINT
) 3)]) = 0xdeadbeef;
7121 CPU (h_gr
[((UINT
) 4)]) = 0xdeadbeef;
7122 CPU (h_gr
[((UINT
) 5)]) = 0xdeadbeef;
7123 CPU (h_gr
[((UINT
) 6)]) = 0xdeadbeef;
7124 CPU (h_gr
[((UINT
) 7)]) = 0xdeadbeef;
7125 CPU (h_gr
[((UINT
) 8)]) = 0xdeadbeef;
7126 CPU (h_gr
[((UINT
) 9)]) = 0xdeadbeef;
7127 CPU (h_gr
[((UINT
) 10)]) = 0xdeadbeef;
7128 CPU (h_gr
[((UINT
) 11)]) = 0xdeadbeef;
7129 CPU (h_gr
[((UINT
) 12)]) = 0xdeadbeef;
7130 CPU (h_gr
[((UINT
) 13)]) = 0xdeadbeef;
7131 CPU (h_gr
[((UINT
) 14)]) = 0xdeadbeef;
7132 CPU (h_gr
[((UINT
) 15)]) = 0xdeadbeef;
7134 SI opval
= CPU (h_gr
[((UINT
) 31)]);
7135 CPU (h_gr
[((UINT
) 0)]) = opval
;
7136 TRACE_RESULT (current_cpu
, abuf
, "gr-0", 'x', opval
);
7139 SI opval
= tmp_temp
;
7140 CPU (h_gr
[((UINT
) 31)]) = opval
;
7141 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7144 SI opval
= ADDSI (tmp_temp
, 64);
7145 CPU (h_gr
[((UINT
) 1)]) = opval
;
7146 TRACE_RESULT (current_cpu
, abuf
, "gr-1", 'x', opval
);
7150 SEM_BRANCH_FINI (vpc
);
7155 CASE (sem
, INSN_CALLX_INDIRECT_OFFSET
) : /* callx $offset($abase) */
7157 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7158 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7159 #define FLD(f) abuf->fields.cti.fields.fmt_callx_indirect_offset.f
7160 int UNUSED written
= 0;
7161 IADDR UNUSED pc
= abuf
->addr
;
7163 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7167 tmp_temp
= ANDSI (ADDSI (CPU (h_gr
[((UINT
) 1)]), 63), INVSI (63));
7169 SI opval
= ADDSI (pc
, 4);
7170 CPU (h_gr
[((UINT
) 2)]) = opval
;
7171 TRACE_RESULT (current_cpu
, abuf
, "gr-2", 'x', opval
);
7173 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0), CPU (h_gr
[((UINT
) 0)]));
7174 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4), CPU (h_gr
[((UINT
) 1)]));
7175 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8), CPU (h_gr
[((UINT
) 2)]));
7176 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12), CPU (h_gr
[((UINT
) 3)]));
7177 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16), CPU (h_gr
[((UINT
) 4)]));
7178 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20), CPU (h_gr
[((UINT
) 5)]));
7179 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24), CPU (h_gr
[((UINT
) 6)]));
7180 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28), CPU (h_gr
[((UINT
) 7)]));
7181 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32), CPU (h_gr
[((UINT
) 8)]));
7182 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36), CPU (h_gr
[((UINT
) 9)]));
7183 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40), CPU (h_gr
[((UINT
) 10)]));
7184 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44), CPU (h_gr
[((UINT
) 11)]));
7185 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48), CPU (h_gr
[((UINT
) 12)]));
7186 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52), CPU (h_gr
[((UINT
) 13)]));
7187 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56), CPU (h_gr
[((UINT
) 14)]));
7188 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60), CPU (h_gr
[((UINT
) 15)]));
7190 USI opval
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
7191 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7192 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7194 CPU (h_gr
[((UINT
) 0)]) = 0xdeadbeef;
7195 CPU (h_gr
[((UINT
) 1)]) = 0xdeadbeef;
7196 CPU (h_gr
[((UINT
) 2)]) = 0xdeadbeef;
7197 CPU (h_gr
[((UINT
) 3)]) = 0xdeadbeef;
7198 CPU (h_gr
[((UINT
) 4)]) = 0xdeadbeef;
7199 CPU (h_gr
[((UINT
) 5)]) = 0xdeadbeef;
7200 CPU (h_gr
[((UINT
) 6)]) = 0xdeadbeef;
7201 CPU (h_gr
[((UINT
) 7)]) = 0xdeadbeef;
7202 CPU (h_gr
[((UINT
) 8)]) = 0xdeadbeef;
7203 CPU (h_gr
[((UINT
) 9)]) = 0xdeadbeef;
7204 CPU (h_gr
[((UINT
) 10)]) = 0xdeadbeef;
7205 CPU (h_gr
[((UINT
) 11)]) = 0xdeadbeef;
7206 CPU (h_gr
[((UINT
) 12)]) = 0xdeadbeef;
7207 CPU (h_gr
[((UINT
) 13)]) = 0xdeadbeef;
7208 CPU (h_gr
[((UINT
) 14)]) = 0xdeadbeef;
7209 CPU (h_gr
[((UINT
) 15)]) = 0xdeadbeef;
7211 SI opval
= CPU (h_gr
[((UINT
) 31)]);
7212 CPU (h_gr
[((UINT
) 0)]) = opval
;
7213 TRACE_RESULT (current_cpu
, abuf
, "gr-0", 'x', opval
);
7216 SI opval
= tmp_temp
;
7217 CPU (h_gr
[((UINT
) 31)]) = opval
;
7218 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7221 SI opval
= ADDSI (tmp_temp
, 64);
7222 CPU (h_gr
[((UINT
) 1)]) = opval
;
7223 TRACE_RESULT (current_cpu
, abuf
, "gr-1", 'x', opval
);
7227 SEM_BRANCH_FINI (vpc
);
7232 CASE (sem
, INSN_RET
) : /* ret */
7234 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7235 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7236 #define FLD(f) abuf->fields.cti.fields.fmt_ret.f
7237 int UNUSED written
= 0;
7238 IADDR UNUSED pc
= abuf
->addr
;
7240 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7244 SI opval
= CPU (h_gr
[((UINT
) 0)]);
7245 CPU (h_gr
[((UINT
) 31)]) = opval
;
7246 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7248 CPU (h_gr
[((UINT
) 0)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0));
7249 CPU (h_gr
[((UINT
) 1)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4));
7250 CPU (h_gr
[((UINT
) 2)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8));
7251 CPU (h_gr
[((UINT
) 3)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12));
7252 CPU (h_gr
[((UINT
) 4)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16));
7253 CPU (h_gr
[((UINT
) 5)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20));
7254 CPU (h_gr
[((UINT
) 6)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24));
7255 CPU (h_gr
[((UINT
) 7)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28));
7256 CPU (h_gr
[((UINT
) 8)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32));
7257 CPU (h_gr
[((UINT
) 9)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36));
7258 CPU (h_gr
[((UINT
) 10)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40));
7259 CPU (h_gr
[((UINT
) 11)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44));
7260 CPU (h_gr
[((UINT
) 12)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48));
7261 CPU (h_gr
[((UINT
) 13)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52));
7262 CPU (h_gr
[((UINT
) 14)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56));
7263 CPU (h_gr
[((UINT
) 15)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60));
7265 USI opval
= CPU (h_gr
[((UINT
) 2)]);
7266 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7267 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7271 SEM_BRANCH_FINI (vpc
);
7276 CASE (sem
, INSN_CALLS
) : /* calls $src1 */
7278 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7279 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7280 #define FLD(f) abuf->fields.cti.fields.fmt_calls.f
7281 int UNUSED written
= 0;
7282 IADDR UNUSED pc
= abuf
->addr
;
7284 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7287 SI opval
= i960_trap (current_cpu
, pc
, * FLD (i_src1
));
7288 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7289 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7292 SEM_BRANCH_FINI (vpc
);
7297 CASE (sem
, INSN_FMARK
) : /* fmark */
7299 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7300 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7301 #define FLD(f) abuf->fields.cti.fields.fmt_fmark.f
7302 int UNUSED written
= 0;
7303 IADDR UNUSED pc
= abuf
->addr
;
7305 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7308 SI opval
= i960_breakpoint (current_cpu
, pc
);
7309 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7310 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7313 SEM_BRANCH_FINI (vpc
);
7318 CASE (sem
, INSN_FLUSHREG
) : /* flushreg */
7320 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7321 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7322 #define FLD(f) abuf->fields.fmt_flushreg.f
7323 int UNUSED written
= 0;
7324 IADDR UNUSED pc
= abuf
->addr
;
7325 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7327 do { } while (0); /*nop*/
7335 ENDSWITCH (sem
) /* End of semantic switch. */
7337 /* At this point `vpc' contains the next insn to execute. */
7340 #undef DEFINE_SWITCH
7341 #endif /* DEFINE_SWITCH */