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_NOT
, && case_sem_INSN_NOT
},
102 { I960BASE_INSN_NOT1
, && case_sem_INSN_NOT1
},
103 { I960BASE_INSN_NOT2
, && case_sem_INSN_NOT2
},
104 { I960BASE_INSN_NOT3
, && case_sem_INSN_NOT3
},
105 { I960BASE_INSN_CLRBIT
, && case_sem_INSN_CLRBIT
},
106 { I960BASE_INSN_CLRBIT1
, && case_sem_INSN_CLRBIT1
},
107 { I960BASE_INSN_CLRBIT2
, && case_sem_INSN_CLRBIT2
},
108 { I960BASE_INSN_CLRBIT3
, && case_sem_INSN_CLRBIT3
},
109 { I960BASE_INSN_SHLO
, && case_sem_INSN_SHLO
},
110 { I960BASE_INSN_SHLO1
, && case_sem_INSN_SHLO1
},
111 { I960BASE_INSN_SHLO2
, && case_sem_INSN_SHLO2
},
112 { I960BASE_INSN_SHLO3
, && case_sem_INSN_SHLO3
},
113 { I960BASE_INSN_SHRO
, && case_sem_INSN_SHRO
},
114 { I960BASE_INSN_SHRO1
, && case_sem_INSN_SHRO1
},
115 { I960BASE_INSN_SHRO2
, && case_sem_INSN_SHRO2
},
116 { I960BASE_INSN_SHRO3
, && case_sem_INSN_SHRO3
},
117 { I960BASE_INSN_SHLI
, && case_sem_INSN_SHLI
},
118 { I960BASE_INSN_SHLI1
, && case_sem_INSN_SHLI1
},
119 { I960BASE_INSN_SHLI2
, && case_sem_INSN_SHLI2
},
120 { I960BASE_INSN_SHLI3
, && case_sem_INSN_SHLI3
},
121 { I960BASE_INSN_SHRI
, && case_sem_INSN_SHRI
},
122 { I960BASE_INSN_SHRI1
, && case_sem_INSN_SHRI1
},
123 { I960BASE_INSN_SHRI2
, && case_sem_INSN_SHRI2
},
124 { I960BASE_INSN_SHRI3
, && case_sem_INSN_SHRI3
},
125 { I960BASE_INSN_EMUL
, && case_sem_INSN_EMUL
},
126 { I960BASE_INSN_EMUL1
, && case_sem_INSN_EMUL1
},
127 { I960BASE_INSN_EMUL2
, && case_sem_INSN_EMUL2
},
128 { I960BASE_INSN_EMUL3
, && case_sem_INSN_EMUL3
},
129 { I960BASE_INSN_MOV
, && case_sem_INSN_MOV
},
130 { I960BASE_INSN_MOV1
, && case_sem_INSN_MOV1
},
131 { I960BASE_INSN_MOVL
, && case_sem_INSN_MOVL
},
132 { I960BASE_INSN_MOVL1
, && case_sem_INSN_MOVL1
},
133 { I960BASE_INSN_MOVT
, && case_sem_INSN_MOVT
},
134 { I960BASE_INSN_MOVT1
, && case_sem_INSN_MOVT1
},
135 { I960BASE_INSN_MOVQ
, && case_sem_INSN_MOVQ
},
136 { I960BASE_INSN_MOVQ1
, && case_sem_INSN_MOVQ1
},
137 { I960BASE_INSN_MODPC
, && case_sem_INSN_MODPC
},
138 { I960BASE_INSN_MODAC
, && case_sem_INSN_MODAC
},
139 { I960BASE_INSN_LDA_OFFSET
, && case_sem_INSN_LDA_OFFSET
},
140 { I960BASE_INSN_LDA_INDIRECT_OFFSET
, && case_sem_INSN_LDA_INDIRECT_OFFSET
},
141 { I960BASE_INSN_LDA_INDIRECT
, && case_sem_INSN_LDA_INDIRECT
},
142 { I960BASE_INSN_LDA_INDIRECT_INDEX
, && case_sem_INSN_LDA_INDIRECT_INDEX
},
143 { I960BASE_INSN_LDA_DISP
, && case_sem_INSN_LDA_DISP
},
144 { I960BASE_INSN_LDA_INDIRECT_DISP
, && case_sem_INSN_LDA_INDIRECT_DISP
},
145 { I960BASE_INSN_LDA_INDEX_DISP
, && case_sem_INSN_LDA_INDEX_DISP
},
146 { I960BASE_INSN_LDA_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDA_INDIRECT_INDEX_DISP
},
147 { I960BASE_INSN_LD_OFFSET
, && case_sem_INSN_LD_OFFSET
},
148 { I960BASE_INSN_LD_INDIRECT_OFFSET
, && case_sem_INSN_LD_INDIRECT_OFFSET
},
149 { I960BASE_INSN_LD_INDIRECT
, && case_sem_INSN_LD_INDIRECT
},
150 { I960BASE_INSN_LD_INDIRECT_INDEX
, && case_sem_INSN_LD_INDIRECT_INDEX
},
151 { I960BASE_INSN_LD_DISP
, && case_sem_INSN_LD_DISP
},
152 { I960BASE_INSN_LD_INDIRECT_DISP
, && case_sem_INSN_LD_INDIRECT_DISP
},
153 { I960BASE_INSN_LD_INDEX_DISP
, && case_sem_INSN_LD_INDEX_DISP
},
154 { I960BASE_INSN_LD_INDIRECT_INDEX_DISP
, && case_sem_INSN_LD_INDIRECT_INDEX_DISP
},
155 { I960BASE_INSN_LDOB_OFFSET
, && case_sem_INSN_LDOB_OFFSET
},
156 { I960BASE_INSN_LDOB_INDIRECT_OFFSET
, && case_sem_INSN_LDOB_INDIRECT_OFFSET
},
157 { I960BASE_INSN_LDOB_INDIRECT
, && case_sem_INSN_LDOB_INDIRECT
},
158 { I960BASE_INSN_LDOB_INDIRECT_INDEX
, && case_sem_INSN_LDOB_INDIRECT_INDEX
},
159 { I960BASE_INSN_LDOB_DISP
, && case_sem_INSN_LDOB_DISP
},
160 { I960BASE_INSN_LDOB_INDIRECT_DISP
, && case_sem_INSN_LDOB_INDIRECT_DISP
},
161 { I960BASE_INSN_LDOB_INDEX_DISP
, && case_sem_INSN_LDOB_INDEX_DISP
},
162 { I960BASE_INSN_LDOB_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDOB_INDIRECT_INDEX_DISP
},
163 { I960BASE_INSN_LDOS_OFFSET
, && case_sem_INSN_LDOS_OFFSET
},
164 { I960BASE_INSN_LDOS_INDIRECT_OFFSET
, && case_sem_INSN_LDOS_INDIRECT_OFFSET
},
165 { I960BASE_INSN_LDOS_INDIRECT
, && case_sem_INSN_LDOS_INDIRECT
},
166 { I960BASE_INSN_LDOS_INDIRECT_INDEX
, && case_sem_INSN_LDOS_INDIRECT_INDEX
},
167 { I960BASE_INSN_LDOS_DISP
, && case_sem_INSN_LDOS_DISP
},
168 { I960BASE_INSN_LDOS_INDIRECT_DISP
, && case_sem_INSN_LDOS_INDIRECT_DISP
},
169 { I960BASE_INSN_LDOS_INDEX_DISP
, && case_sem_INSN_LDOS_INDEX_DISP
},
170 { I960BASE_INSN_LDOS_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDOS_INDIRECT_INDEX_DISP
},
171 { I960BASE_INSN_LDIB_OFFSET
, && case_sem_INSN_LDIB_OFFSET
},
172 { I960BASE_INSN_LDIB_INDIRECT_OFFSET
, && case_sem_INSN_LDIB_INDIRECT_OFFSET
},
173 { I960BASE_INSN_LDIB_INDIRECT
, && case_sem_INSN_LDIB_INDIRECT
},
174 { I960BASE_INSN_LDIB_INDIRECT_INDEX
, && case_sem_INSN_LDIB_INDIRECT_INDEX
},
175 { I960BASE_INSN_LDIB_DISP
, && case_sem_INSN_LDIB_DISP
},
176 { I960BASE_INSN_LDIB_INDIRECT_DISP
, && case_sem_INSN_LDIB_INDIRECT_DISP
},
177 { I960BASE_INSN_LDIB_INDEX_DISP
, && case_sem_INSN_LDIB_INDEX_DISP
},
178 { I960BASE_INSN_LDIB_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDIB_INDIRECT_INDEX_DISP
},
179 { I960BASE_INSN_LDIS_OFFSET
, && case_sem_INSN_LDIS_OFFSET
},
180 { I960BASE_INSN_LDIS_INDIRECT_OFFSET
, && case_sem_INSN_LDIS_INDIRECT_OFFSET
},
181 { I960BASE_INSN_LDIS_INDIRECT
, && case_sem_INSN_LDIS_INDIRECT
},
182 { I960BASE_INSN_LDIS_INDIRECT_INDEX
, && case_sem_INSN_LDIS_INDIRECT_INDEX
},
183 { I960BASE_INSN_LDIS_DISP
, && case_sem_INSN_LDIS_DISP
},
184 { I960BASE_INSN_LDIS_INDIRECT_DISP
, && case_sem_INSN_LDIS_INDIRECT_DISP
},
185 { I960BASE_INSN_LDIS_INDEX_DISP
, && case_sem_INSN_LDIS_INDEX_DISP
},
186 { I960BASE_INSN_LDIS_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDIS_INDIRECT_INDEX_DISP
},
187 { I960BASE_INSN_LDL_OFFSET
, && case_sem_INSN_LDL_OFFSET
},
188 { I960BASE_INSN_LDL_INDIRECT_OFFSET
, && case_sem_INSN_LDL_INDIRECT_OFFSET
},
189 { I960BASE_INSN_LDL_INDIRECT
, && case_sem_INSN_LDL_INDIRECT
},
190 { I960BASE_INSN_LDL_INDIRECT_INDEX
, && case_sem_INSN_LDL_INDIRECT_INDEX
},
191 { I960BASE_INSN_LDL_DISP
, && case_sem_INSN_LDL_DISP
},
192 { I960BASE_INSN_LDL_INDIRECT_DISP
, && case_sem_INSN_LDL_INDIRECT_DISP
},
193 { I960BASE_INSN_LDL_INDEX_DISP
, && case_sem_INSN_LDL_INDEX_DISP
},
194 { I960BASE_INSN_LDL_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDL_INDIRECT_INDEX_DISP
},
195 { I960BASE_INSN_LDT_OFFSET
, && case_sem_INSN_LDT_OFFSET
},
196 { I960BASE_INSN_LDT_INDIRECT_OFFSET
, && case_sem_INSN_LDT_INDIRECT_OFFSET
},
197 { I960BASE_INSN_LDT_INDIRECT
, && case_sem_INSN_LDT_INDIRECT
},
198 { I960BASE_INSN_LDT_INDIRECT_INDEX
, && case_sem_INSN_LDT_INDIRECT_INDEX
},
199 { I960BASE_INSN_LDT_DISP
, && case_sem_INSN_LDT_DISP
},
200 { I960BASE_INSN_LDT_INDIRECT_DISP
, && case_sem_INSN_LDT_INDIRECT_DISP
},
201 { I960BASE_INSN_LDT_INDEX_DISP
, && case_sem_INSN_LDT_INDEX_DISP
},
202 { I960BASE_INSN_LDT_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDT_INDIRECT_INDEX_DISP
},
203 { I960BASE_INSN_LDQ_OFFSET
, && case_sem_INSN_LDQ_OFFSET
},
204 { I960BASE_INSN_LDQ_INDIRECT_OFFSET
, && case_sem_INSN_LDQ_INDIRECT_OFFSET
},
205 { I960BASE_INSN_LDQ_INDIRECT
, && case_sem_INSN_LDQ_INDIRECT
},
206 { I960BASE_INSN_LDQ_INDIRECT_INDEX
, && case_sem_INSN_LDQ_INDIRECT_INDEX
},
207 { I960BASE_INSN_LDQ_DISP
, && case_sem_INSN_LDQ_DISP
},
208 { I960BASE_INSN_LDQ_INDIRECT_DISP
, && case_sem_INSN_LDQ_INDIRECT_DISP
},
209 { I960BASE_INSN_LDQ_INDEX_DISP
, && case_sem_INSN_LDQ_INDEX_DISP
},
210 { I960BASE_INSN_LDQ_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDQ_INDIRECT_INDEX_DISP
},
211 { I960BASE_INSN_ST_OFFSET
, && case_sem_INSN_ST_OFFSET
},
212 { I960BASE_INSN_ST_INDIRECT_OFFSET
, && case_sem_INSN_ST_INDIRECT_OFFSET
},
213 { I960BASE_INSN_ST_INDIRECT
, && case_sem_INSN_ST_INDIRECT
},
214 { I960BASE_INSN_ST_INDIRECT_INDEX
, && case_sem_INSN_ST_INDIRECT_INDEX
},
215 { I960BASE_INSN_ST_DISP
, && case_sem_INSN_ST_DISP
},
216 { I960BASE_INSN_ST_INDIRECT_DISP
, && case_sem_INSN_ST_INDIRECT_DISP
},
217 { I960BASE_INSN_ST_INDEX_DISP
, && case_sem_INSN_ST_INDEX_DISP
},
218 { I960BASE_INSN_ST_INDIRECT_INDEX_DISP
, && case_sem_INSN_ST_INDIRECT_INDEX_DISP
},
219 { I960BASE_INSN_STOB_OFFSET
, && case_sem_INSN_STOB_OFFSET
},
220 { I960BASE_INSN_STOB_INDIRECT_OFFSET
, && case_sem_INSN_STOB_INDIRECT_OFFSET
},
221 { I960BASE_INSN_STOB_INDIRECT
, && case_sem_INSN_STOB_INDIRECT
},
222 { I960BASE_INSN_STOB_INDIRECT_INDEX
, && case_sem_INSN_STOB_INDIRECT_INDEX
},
223 { I960BASE_INSN_STOB_DISP
, && case_sem_INSN_STOB_DISP
},
224 { I960BASE_INSN_STOB_INDIRECT_DISP
, && case_sem_INSN_STOB_INDIRECT_DISP
},
225 { I960BASE_INSN_STOB_INDEX_DISP
, && case_sem_INSN_STOB_INDEX_DISP
},
226 { I960BASE_INSN_STOB_INDIRECT_INDEX_DISP
, && case_sem_INSN_STOB_INDIRECT_INDEX_DISP
},
227 { I960BASE_INSN_STOS_OFFSET
, && case_sem_INSN_STOS_OFFSET
},
228 { I960BASE_INSN_STOS_INDIRECT_OFFSET
, && case_sem_INSN_STOS_INDIRECT_OFFSET
},
229 { I960BASE_INSN_STOS_INDIRECT
, && case_sem_INSN_STOS_INDIRECT
},
230 { I960BASE_INSN_STOS_INDIRECT_INDEX
, && case_sem_INSN_STOS_INDIRECT_INDEX
},
231 { I960BASE_INSN_STOS_DISP
, && case_sem_INSN_STOS_DISP
},
232 { I960BASE_INSN_STOS_INDIRECT_DISP
, && case_sem_INSN_STOS_INDIRECT_DISP
},
233 { I960BASE_INSN_STOS_INDEX_DISP
, && case_sem_INSN_STOS_INDEX_DISP
},
234 { I960BASE_INSN_STOS_INDIRECT_INDEX_DISP
, && case_sem_INSN_STOS_INDIRECT_INDEX_DISP
},
235 { I960BASE_INSN_STL_OFFSET
, && case_sem_INSN_STL_OFFSET
},
236 { I960BASE_INSN_STL_INDIRECT_OFFSET
, && case_sem_INSN_STL_INDIRECT_OFFSET
},
237 { I960BASE_INSN_STL_INDIRECT
, && case_sem_INSN_STL_INDIRECT
},
238 { I960BASE_INSN_STL_INDIRECT_INDEX
, && case_sem_INSN_STL_INDIRECT_INDEX
},
239 { I960BASE_INSN_STL_DISP
, && case_sem_INSN_STL_DISP
},
240 { I960BASE_INSN_STL_INDIRECT_DISP
, && case_sem_INSN_STL_INDIRECT_DISP
},
241 { I960BASE_INSN_STL_INDEX_DISP
, && case_sem_INSN_STL_INDEX_DISP
},
242 { I960BASE_INSN_STL_INDIRECT_INDEX_DISP
, && case_sem_INSN_STL_INDIRECT_INDEX_DISP
},
243 { I960BASE_INSN_STT_OFFSET
, && case_sem_INSN_STT_OFFSET
},
244 { I960BASE_INSN_STT_INDIRECT_OFFSET
, && case_sem_INSN_STT_INDIRECT_OFFSET
},
245 { I960BASE_INSN_STT_INDIRECT
, && case_sem_INSN_STT_INDIRECT
},
246 { I960BASE_INSN_STT_INDIRECT_INDEX
, && case_sem_INSN_STT_INDIRECT_INDEX
},
247 { I960BASE_INSN_STT_DISP
, && case_sem_INSN_STT_DISP
},
248 { I960BASE_INSN_STT_INDIRECT_DISP
, && case_sem_INSN_STT_INDIRECT_DISP
},
249 { I960BASE_INSN_STT_INDEX_DISP
, && case_sem_INSN_STT_INDEX_DISP
},
250 { I960BASE_INSN_STT_INDIRECT_INDEX_DISP
, && case_sem_INSN_STT_INDIRECT_INDEX_DISP
},
251 { I960BASE_INSN_STQ_OFFSET
, && case_sem_INSN_STQ_OFFSET
},
252 { I960BASE_INSN_STQ_INDIRECT_OFFSET
, && case_sem_INSN_STQ_INDIRECT_OFFSET
},
253 { I960BASE_INSN_STQ_INDIRECT
, && case_sem_INSN_STQ_INDIRECT
},
254 { I960BASE_INSN_STQ_INDIRECT_INDEX
, && case_sem_INSN_STQ_INDIRECT_INDEX
},
255 { I960BASE_INSN_STQ_DISP
, && case_sem_INSN_STQ_DISP
},
256 { I960BASE_INSN_STQ_INDIRECT_DISP
, && case_sem_INSN_STQ_INDIRECT_DISP
},
257 { I960BASE_INSN_STQ_INDEX_DISP
, && case_sem_INSN_STQ_INDEX_DISP
},
258 { I960BASE_INSN_STQ_INDIRECT_INDEX_DISP
, && case_sem_INSN_STQ_INDIRECT_INDEX_DISP
},
259 { I960BASE_INSN_CMPOBE_REG
, && case_sem_INSN_CMPOBE_REG
},
260 { I960BASE_INSN_CMPOBE_LIT
, && case_sem_INSN_CMPOBE_LIT
},
261 { I960BASE_INSN_CMPOBNE_REG
, && case_sem_INSN_CMPOBNE_REG
},
262 { I960BASE_INSN_CMPOBNE_LIT
, && case_sem_INSN_CMPOBNE_LIT
},
263 { I960BASE_INSN_CMPOBL_REG
, && case_sem_INSN_CMPOBL_REG
},
264 { I960BASE_INSN_CMPOBL_LIT
, && case_sem_INSN_CMPOBL_LIT
},
265 { I960BASE_INSN_CMPOBLE_REG
, && case_sem_INSN_CMPOBLE_REG
},
266 { I960BASE_INSN_CMPOBLE_LIT
, && case_sem_INSN_CMPOBLE_LIT
},
267 { I960BASE_INSN_CMPOBG_REG
, && case_sem_INSN_CMPOBG_REG
},
268 { I960BASE_INSN_CMPOBG_LIT
, && case_sem_INSN_CMPOBG_LIT
},
269 { I960BASE_INSN_CMPOBGE_REG
, && case_sem_INSN_CMPOBGE_REG
},
270 { I960BASE_INSN_CMPOBGE_LIT
, && case_sem_INSN_CMPOBGE_LIT
},
271 { I960BASE_INSN_CMPIBE_REG
, && case_sem_INSN_CMPIBE_REG
},
272 { I960BASE_INSN_CMPIBE_LIT
, && case_sem_INSN_CMPIBE_LIT
},
273 { I960BASE_INSN_CMPIBNE_REG
, && case_sem_INSN_CMPIBNE_REG
},
274 { I960BASE_INSN_CMPIBNE_LIT
, && case_sem_INSN_CMPIBNE_LIT
},
275 { I960BASE_INSN_CMPIBL_REG
, && case_sem_INSN_CMPIBL_REG
},
276 { I960BASE_INSN_CMPIBL_LIT
, && case_sem_INSN_CMPIBL_LIT
},
277 { I960BASE_INSN_CMPIBLE_REG
, && case_sem_INSN_CMPIBLE_REG
},
278 { I960BASE_INSN_CMPIBLE_LIT
, && case_sem_INSN_CMPIBLE_LIT
},
279 { I960BASE_INSN_CMPIBG_REG
, && case_sem_INSN_CMPIBG_REG
},
280 { I960BASE_INSN_CMPIBG_LIT
, && case_sem_INSN_CMPIBG_LIT
},
281 { I960BASE_INSN_CMPIBGE_REG
, && case_sem_INSN_CMPIBGE_REG
},
282 { I960BASE_INSN_CMPIBGE_LIT
, && case_sem_INSN_CMPIBGE_LIT
},
283 { I960BASE_INSN_BBC_REG
, && case_sem_INSN_BBC_REG
},
284 { I960BASE_INSN_BBC_LIT
, && case_sem_INSN_BBC_LIT
},
285 { I960BASE_INSN_BBS_REG
, && case_sem_INSN_BBS_REG
},
286 { I960BASE_INSN_BBS_LIT
, && case_sem_INSN_BBS_LIT
},
287 { I960BASE_INSN_CMPI
, && case_sem_INSN_CMPI
},
288 { I960BASE_INSN_CMPI1
, && case_sem_INSN_CMPI1
},
289 { I960BASE_INSN_CMPI2
, && case_sem_INSN_CMPI2
},
290 { I960BASE_INSN_CMPI3
, && case_sem_INSN_CMPI3
},
291 { I960BASE_INSN_CMPO
, && case_sem_INSN_CMPO
},
292 { I960BASE_INSN_CMPO1
, && case_sem_INSN_CMPO1
},
293 { I960BASE_INSN_CMPO2
, && case_sem_INSN_CMPO2
},
294 { I960BASE_INSN_CMPO3
, && case_sem_INSN_CMPO3
},
295 { I960BASE_INSN_TESTNO_REG
, && case_sem_INSN_TESTNO_REG
},
296 { I960BASE_INSN_TESTG_REG
, && case_sem_INSN_TESTG_REG
},
297 { I960BASE_INSN_TESTE_REG
, && case_sem_INSN_TESTE_REG
},
298 { I960BASE_INSN_TESTGE_REG
, && case_sem_INSN_TESTGE_REG
},
299 { I960BASE_INSN_TESTL_REG
, && case_sem_INSN_TESTL_REG
},
300 { I960BASE_INSN_TESTNE_REG
, && case_sem_INSN_TESTNE_REG
},
301 { I960BASE_INSN_TESTLE_REG
, && case_sem_INSN_TESTLE_REG
},
302 { I960BASE_INSN_TESTO_REG
, && case_sem_INSN_TESTO_REG
},
303 { I960BASE_INSN_BNO
, && case_sem_INSN_BNO
},
304 { I960BASE_INSN_BG
, && case_sem_INSN_BG
},
305 { I960BASE_INSN_BE
, && case_sem_INSN_BE
},
306 { I960BASE_INSN_BGE
, && case_sem_INSN_BGE
},
307 { I960BASE_INSN_BL
, && case_sem_INSN_BL
},
308 { I960BASE_INSN_BNE
, && case_sem_INSN_BNE
},
309 { I960BASE_INSN_BLE
, && case_sem_INSN_BLE
},
310 { I960BASE_INSN_BO
, && case_sem_INSN_BO
},
311 { I960BASE_INSN_B
, && case_sem_INSN_B
},
312 { I960BASE_INSN_BX_INDIRECT_OFFSET
, && case_sem_INSN_BX_INDIRECT_OFFSET
},
313 { I960BASE_INSN_BX_INDIRECT
, && case_sem_INSN_BX_INDIRECT
},
314 { I960BASE_INSN_BX_INDIRECT_INDEX
, && case_sem_INSN_BX_INDIRECT_INDEX
},
315 { I960BASE_INSN_BX_DISP
, && case_sem_INSN_BX_DISP
},
316 { I960BASE_INSN_BX_INDIRECT_DISP
, && case_sem_INSN_BX_INDIRECT_DISP
},
317 { I960BASE_INSN_CALLX_DISP
, && case_sem_INSN_CALLX_DISP
},
318 { I960BASE_INSN_CALLX_INDIRECT
, && case_sem_INSN_CALLX_INDIRECT
},
319 { I960BASE_INSN_CALLX_INDIRECT_OFFSET
, && case_sem_INSN_CALLX_INDIRECT_OFFSET
},
320 { I960BASE_INSN_RET
, && case_sem_INSN_RET
},
321 { I960BASE_INSN_CALLS
, && case_sem_INSN_CALLS
},
322 { I960BASE_INSN_FMARK
, && case_sem_INSN_FMARK
},
323 { I960BASE_INSN_FLUSHREG
, && case_sem_INSN_FLUSHREG
},
328 for (i
= 0; labels
[i
].label
!= 0; ++i
)
330 CPU_IDESC (current_cpu
) [labels
[i
].index
].sem_fast_lab
= labels
[i
].label
;
332 CPU_IDESC (current_cpu
) [labels
[i
].index
].sem_full_lab
= labels
[i
].label
;
336 #endif /* DEFINE_LABELS */
340 /* If hyper-fast [well not unnecessarily slow] execution is selected, turn
341 off frills like tracing and profiling. */
342 /* FIXME: A better way would be to have TRACE_RESULT check for something
343 that can cause it to be optimized out. Another way would be to emit
344 special handlers into the instruction "stream". */
348 #define TRACE_RESULT(cpu, abuf, name, type, val)
352 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
358 /* Branch to next handler without going around main loop. */
359 #define NEXT(vpc) goto * SEM_ARGBUF (vpc) -> semantic.sem_case
360 SWITCH (sem
, SEM_ARGBUF (vpc
) -> semantic
.sem_case
)
362 #else /* ! WITH_SCACHE_PBB */
364 #define NEXT(vpc) BREAK (sem)
367 SWITCH (sem
, SEM_ARGBUF (sc
) -> idesc
->sem_fast_lab
)
369 SWITCH (sem
, SEM_ARGBUF (sc
) -> idesc
->sem_full_lab
)
372 SWITCH (sem
, SEM_ARGBUF (sc
) -> idesc
->num
)
375 #endif /* ! WITH_SCACHE_PBB */
379 CASE (sem
, INSN_X_INVALID
) : /* --invalid-- */
381 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
382 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
383 #define FLD(f) abuf->fields.fmt_empty.f
384 int UNUSED written
= 0;
385 IADDR UNUSED pc
= abuf
->addr
;
386 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
390 /* Update the recorded pc in the cpu state struct. */
393 sim_engine_invalid_insn (current_cpu
, pc
);
394 sim_io_error (CPU_STATE (current_cpu
), "invalid insn not handled\n");
402 CASE (sem
, INSN_X_AFTER
) : /* --after-- */
404 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
405 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
406 #define FLD(f) abuf->fields.fmt_empty.f
407 int UNUSED written
= 0;
408 IADDR UNUSED pc
= abuf
->addr
;
409 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
412 #if WITH_SCACHE_PBB_I960BASE
413 i960base_pbb_after (current_cpu
, sem_arg
);
421 CASE (sem
, INSN_X_BEFORE
) : /* --before-- */
423 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
424 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
425 #define FLD(f) abuf->fields.fmt_empty.f
426 int UNUSED written
= 0;
427 IADDR UNUSED pc
= abuf
->addr
;
428 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
431 #if WITH_SCACHE_PBB_I960BASE
432 i960base_pbb_before (current_cpu
, sem_arg
);
440 CASE (sem
, INSN_X_CTI_CHAIN
) : /* --cti-chain-- */
442 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
443 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
444 #define FLD(f) abuf->fields.fmt_empty.f
445 int UNUSED written
= 0;
446 IADDR UNUSED pc
= abuf
->addr
;
447 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
450 #if WITH_SCACHE_PBB_I960BASE
452 vpc
= i960base_pbb_cti_chain (current_cpu
, sem_arg
,
453 pbb_br_npc_ptr
, pbb_br_npc
);
456 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
457 vpc
= i960base_pbb_cti_chain (current_cpu
, sem_arg
,
458 CPU_PBB_BR_NPC_PTR (current_cpu
),
459 CPU_PBB_BR_NPC (current_cpu
));
468 CASE (sem
, INSN_X_CHAIN
) : /* --chain-- */
470 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
471 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
472 #define FLD(f) abuf->fields.fmt_empty.f
473 int UNUSED written
= 0;
474 IADDR UNUSED pc
= abuf
->addr
;
475 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
478 #if WITH_SCACHE_PBB_I960BASE
479 vpc
= i960base_pbb_chain (current_cpu
, sem_arg
);
490 CASE (sem
, INSN_X_BEGIN
) : /* --begin-- */
492 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
493 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
494 #define FLD(f) abuf->fields.fmt_empty.f
495 int UNUSED written
= 0;
496 IADDR UNUSED pc
= abuf
->addr
;
497 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
500 #if WITH_SCACHE_PBB_I960BASE
502 /* In the switch case FAST_P is a constant, allowing several optimizations
503 in any called inline functions. */
504 vpc
= i960base_pbb_begin (current_cpu
, FAST_P
);
506 vpc
= i960base_pbb_begin (current_cpu
, STATE_RUN_FAST_P (CPU_STATE (current_cpu
)));
515 CASE (sem
, INSN_MULO
) : /* mulo $src1, $src2, $dst */
517 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
518 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
519 #define FLD(f) abuf->fields.fmt_mulo.f
520 int UNUSED written
= 0;
521 IADDR UNUSED pc
= abuf
->addr
;
522 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
525 SI opval
= MULSI (* FLD (i_src1
), * FLD (i_src2
));
526 * FLD (i_dst
) = opval
;
527 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
534 CASE (sem
, INSN_MULO1
) : /* mulo $lit1, $src2, $dst */
536 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
537 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
538 #define FLD(f) abuf->fields.fmt_mulo1.f
539 int UNUSED written
= 0;
540 IADDR UNUSED pc
= abuf
->addr
;
541 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
544 SI opval
= MULSI (FLD (f_src1
), * FLD (i_src2
));
545 * FLD (i_dst
) = opval
;
546 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
553 CASE (sem
, INSN_MULO2
) : /* mulo $src1, $lit2, $dst */
555 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
556 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
557 #define FLD(f) abuf->fields.fmt_mulo2.f
558 int UNUSED written
= 0;
559 IADDR UNUSED pc
= abuf
->addr
;
560 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
563 SI opval
= MULSI (* FLD (i_src1
), FLD (f_src2
));
564 * FLD (i_dst
) = opval
;
565 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
572 CASE (sem
, INSN_MULO3
) : /* mulo $lit1, $lit2, $dst */
574 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
575 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
576 #define FLD(f) abuf->fields.fmt_mulo3.f
577 int UNUSED written
= 0;
578 IADDR UNUSED pc
= abuf
->addr
;
579 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
582 SI opval
= MULSI (FLD (f_src1
), FLD (f_src2
));
583 * FLD (i_dst
) = opval
;
584 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
591 CASE (sem
, INSN_REMO
) : /* remo $src1, $src2, $dst */
593 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
594 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
595 #define FLD(f) abuf->fields.fmt_mulo.f
596 int UNUSED written
= 0;
597 IADDR UNUSED pc
= abuf
->addr
;
598 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
601 SI opval
= UMODSI (* FLD (i_src2
), * FLD (i_src1
));
602 * FLD (i_dst
) = opval
;
603 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
610 CASE (sem
, INSN_REMO1
) : /* remo $lit1, $src2, $dst */
612 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
613 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
614 #define FLD(f) abuf->fields.fmt_mulo1.f
615 int UNUSED written
= 0;
616 IADDR UNUSED pc
= abuf
->addr
;
617 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
620 SI opval
= UMODSI (* FLD (i_src2
), FLD (f_src1
));
621 * FLD (i_dst
) = opval
;
622 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
629 CASE (sem
, INSN_REMO2
) : /* remo $src1, $lit2, $dst */
631 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
632 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
633 #define FLD(f) abuf->fields.fmt_mulo2.f
634 int UNUSED written
= 0;
635 IADDR UNUSED pc
= abuf
->addr
;
636 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
639 SI opval
= UMODSI (FLD (f_src2
), * FLD (i_src1
));
640 * FLD (i_dst
) = opval
;
641 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
648 CASE (sem
, INSN_REMO3
) : /* remo $lit1, $lit2, $dst */
650 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
651 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
652 #define FLD(f) abuf->fields.fmt_mulo3.f
653 int UNUSED written
= 0;
654 IADDR UNUSED pc
= abuf
->addr
;
655 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
658 SI opval
= UMODSI (FLD (f_src2
), FLD (f_src1
));
659 * FLD (i_dst
) = opval
;
660 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
667 CASE (sem
, INSN_DIVO
) : /* divo $src1, $src2, $dst */
669 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
670 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
671 #define FLD(f) abuf->fields.fmt_mulo.f
672 int UNUSED written
= 0;
673 IADDR UNUSED pc
= abuf
->addr
;
674 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
677 SI opval
= UDIVSI (* FLD (i_src2
), * FLD (i_src1
));
678 * FLD (i_dst
) = opval
;
679 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
686 CASE (sem
, INSN_DIVO1
) : /* divo $lit1, $src2, $dst */
688 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
689 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
690 #define FLD(f) abuf->fields.fmt_mulo1.f
691 int UNUSED written
= 0;
692 IADDR UNUSED pc
= abuf
->addr
;
693 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
696 SI opval
= UDIVSI (* FLD (i_src2
), FLD (f_src1
));
697 * FLD (i_dst
) = opval
;
698 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
705 CASE (sem
, INSN_DIVO2
) : /* divo $src1, $lit2, $dst */
707 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
708 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
709 #define FLD(f) abuf->fields.fmt_mulo2.f
710 int UNUSED written
= 0;
711 IADDR UNUSED pc
= abuf
->addr
;
712 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
715 SI opval
= UDIVSI (FLD (f_src2
), * FLD (i_src1
));
716 * FLD (i_dst
) = opval
;
717 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
724 CASE (sem
, INSN_DIVO3
) : /* divo $lit1, $lit2, $dst */
726 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
727 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
728 #define FLD(f) abuf->fields.fmt_mulo3.f
729 int UNUSED written
= 0;
730 IADDR UNUSED pc
= abuf
->addr
;
731 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
734 SI opval
= UDIVSI (FLD (f_src2
), FLD (f_src1
));
735 * FLD (i_dst
) = opval
;
736 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
743 CASE (sem
, INSN_REMI
) : /* remi $src1, $src2, $dst */
745 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
746 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
747 #define FLD(f) abuf->fields.fmt_mulo.f
748 int UNUSED written
= 0;
749 IADDR UNUSED pc
= abuf
->addr
;
750 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
753 SI opval
= MODSI (* FLD (i_src2
), * FLD (i_src1
));
754 * FLD (i_dst
) = opval
;
755 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
762 CASE (sem
, INSN_REMI1
) : /* remi $lit1, $src2, $dst */
764 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
765 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
766 #define FLD(f) abuf->fields.fmt_mulo1.f
767 int UNUSED written
= 0;
768 IADDR UNUSED pc
= abuf
->addr
;
769 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
772 SI opval
= MODSI (* FLD (i_src2
), FLD (f_src1
));
773 * FLD (i_dst
) = opval
;
774 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
781 CASE (sem
, INSN_REMI2
) : /* remi $src1, $lit2, $dst */
783 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
784 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
785 #define FLD(f) abuf->fields.fmt_mulo2.f
786 int UNUSED written
= 0;
787 IADDR UNUSED pc
= abuf
->addr
;
788 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
791 SI opval
= MODSI (FLD (f_src2
), * FLD (i_src1
));
792 * FLD (i_dst
) = opval
;
793 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
800 CASE (sem
, INSN_REMI3
) : /* remi $lit1, $lit2, $dst */
802 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
803 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
804 #define FLD(f) abuf->fields.fmt_mulo3.f
805 int UNUSED written
= 0;
806 IADDR UNUSED pc
= abuf
->addr
;
807 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
810 SI opval
= MODSI (FLD (f_src2
), FLD (f_src1
));
811 * FLD (i_dst
) = opval
;
812 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
819 CASE (sem
, INSN_DIVI
) : /* divi $src1, $src2, $dst */
821 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
822 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
823 #define FLD(f) abuf->fields.fmt_mulo.f
824 int UNUSED written
= 0;
825 IADDR UNUSED pc
= abuf
->addr
;
826 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
829 SI opval
= DIVSI (* FLD (i_src2
), * FLD (i_src1
));
830 * FLD (i_dst
) = opval
;
831 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
838 CASE (sem
, INSN_DIVI1
) : /* divi $lit1, $src2, $dst */
840 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
841 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
842 #define FLD(f) abuf->fields.fmt_mulo1.f
843 int UNUSED written
= 0;
844 IADDR UNUSED pc
= abuf
->addr
;
845 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
848 SI opval
= DIVSI (* FLD (i_src2
), FLD (f_src1
));
849 * FLD (i_dst
) = opval
;
850 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
857 CASE (sem
, INSN_DIVI2
) : /* divi $src1, $lit2, $dst */
859 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
860 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
861 #define FLD(f) abuf->fields.fmt_mulo2.f
862 int UNUSED written
= 0;
863 IADDR UNUSED pc
= abuf
->addr
;
864 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
867 SI opval
= DIVSI (FLD (f_src2
), * FLD (i_src1
));
868 * FLD (i_dst
) = opval
;
869 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
876 CASE (sem
, INSN_DIVI3
) : /* divi $lit1, $lit2, $dst */
878 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
879 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
880 #define FLD(f) abuf->fields.fmt_mulo3.f
881 int UNUSED written
= 0;
882 IADDR UNUSED pc
= abuf
->addr
;
883 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
886 SI opval
= DIVSI (FLD (f_src2
), FLD (f_src1
));
887 * FLD (i_dst
) = opval
;
888 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
895 CASE (sem
, INSN_ADDO
) : /* addo $src1, $src2, $dst */
897 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
898 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
899 #define FLD(f) abuf->fields.fmt_mulo.f
900 int UNUSED written
= 0;
901 IADDR UNUSED pc
= abuf
->addr
;
902 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
905 SI opval
= ADDSI (* FLD (i_src1
), * FLD (i_src2
));
906 * FLD (i_dst
) = opval
;
907 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
914 CASE (sem
, INSN_ADDO1
) : /* addo $lit1, $src2, $dst */
916 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
917 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
918 #define FLD(f) abuf->fields.fmt_mulo1.f
919 int UNUSED written
= 0;
920 IADDR UNUSED pc
= abuf
->addr
;
921 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
924 SI opval
= ADDSI (FLD (f_src1
), * FLD (i_src2
));
925 * FLD (i_dst
) = opval
;
926 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
933 CASE (sem
, INSN_ADDO2
) : /* addo $src1, $lit2, $dst */
935 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
936 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
937 #define FLD(f) abuf->fields.fmt_mulo2.f
938 int UNUSED written
= 0;
939 IADDR UNUSED pc
= abuf
->addr
;
940 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
943 SI opval
= ADDSI (* FLD (i_src1
), FLD (f_src2
));
944 * FLD (i_dst
) = opval
;
945 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
952 CASE (sem
, INSN_ADDO3
) : /* addo $lit1, $lit2, $dst */
954 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
955 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
956 #define FLD(f) abuf->fields.fmt_mulo3.f
957 int UNUSED written
= 0;
958 IADDR UNUSED pc
= abuf
->addr
;
959 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
962 SI opval
= ADDSI (FLD (f_src1
), FLD (f_src2
));
963 * FLD (i_dst
) = opval
;
964 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
971 CASE (sem
, INSN_SUBO
) : /* subo $src1, $src2, $dst */
973 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
974 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
975 #define FLD(f) abuf->fields.fmt_mulo.f
976 int UNUSED written
= 0;
977 IADDR UNUSED pc
= abuf
->addr
;
978 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
981 SI opval
= SUBSI (* FLD (i_src2
), * FLD (i_src1
));
982 * FLD (i_dst
) = opval
;
983 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
990 CASE (sem
, INSN_SUBO1
) : /* subo $lit1, $src2, $dst */
992 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
993 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
994 #define FLD(f) abuf->fields.fmt_mulo1.f
995 int UNUSED written
= 0;
996 IADDR UNUSED pc
= abuf
->addr
;
997 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1000 SI opval
= SUBSI (* FLD (i_src2
), FLD (f_src1
));
1001 * FLD (i_dst
) = opval
;
1002 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1009 CASE (sem
, INSN_SUBO2
) : /* subo $src1, $lit2, $dst */
1011 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1012 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1013 #define FLD(f) abuf->fields.fmt_mulo2.f
1014 int UNUSED written
= 0;
1015 IADDR UNUSED pc
= abuf
->addr
;
1016 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1019 SI opval
= SUBSI (FLD (f_src2
), * FLD (i_src1
));
1020 * FLD (i_dst
) = opval
;
1021 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1028 CASE (sem
, INSN_SUBO3
) : /* subo $lit1, $lit2, $dst */
1030 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1031 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1032 #define FLD(f) abuf->fields.fmt_mulo3.f
1033 int UNUSED written
= 0;
1034 IADDR UNUSED pc
= abuf
->addr
;
1035 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1038 SI opval
= SUBSI (FLD (f_src2
), FLD (f_src1
));
1039 * FLD (i_dst
) = opval
;
1040 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1047 CASE (sem
, INSN_NOTBIT
) : /* notbit $src1, $src2, $dst */
1049 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1050 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1051 #define FLD(f) abuf->fields.fmt_notbit.f
1052 int UNUSED written
= 0;
1053 IADDR UNUSED pc
= abuf
->addr
;
1054 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1057 SI opval
= XORSI (SLLSI (1, * FLD (i_src1
)), * FLD (i_src2
));
1058 * FLD (i_dst
) = opval
;
1059 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1066 CASE (sem
, INSN_NOTBIT1
) : /* notbit $lit1, $src2, $dst */
1068 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1069 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1070 #define FLD(f) abuf->fields.fmt_notbit1.f
1071 int UNUSED written
= 0;
1072 IADDR UNUSED pc
= abuf
->addr
;
1073 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1076 SI opval
= XORSI (SLLSI (1, FLD (f_src1
)), * FLD (i_src2
));
1077 * FLD (i_dst
) = opval
;
1078 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1085 CASE (sem
, INSN_NOTBIT2
) : /* notbit $src1, $lit2, $dst */
1087 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1088 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1089 #define FLD(f) abuf->fields.fmt_notbit2.f
1090 int UNUSED written
= 0;
1091 IADDR UNUSED pc
= abuf
->addr
;
1092 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1095 SI opval
= XORSI (SLLSI (1, * FLD (i_src1
)), FLD (f_src2
));
1096 * FLD (i_dst
) = opval
;
1097 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1104 CASE (sem
, INSN_NOTBIT3
) : /* notbit $lit1, $lit2, $dst */
1106 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1107 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1108 #define FLD(f) abuf->fields.fmt_notbit3.f
1109 int UNUSED written
= 0;
1110 IADDR UNUSED pc
= abuf
->addr
;
1111 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1114 SI opval
= XORSI (SLLSI (1, FLD (f_src1
)), FLD (f_src2
));
1115 * FLD (i_dst
) = opval
;
1116 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1123 CASE (sem
, INSN_AND
) : /* and $src1, $src2, $dst */
1125 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1126 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1127 #define FLD(f) abuf->fields.fmt_mulo.f
1128 int UNUSED written
= 0;
1129 IADDR UNUSED pc
= abuf
->addr
;
1130 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1133 SI opval
= ANDSI (* FLD (i_src1
), * FLD (i_src2
));
1134 * FLD (i_dst
) = opval
;
1135 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1142 CASE (sem
, INSN_AND1
) : /* and $lit1, $src2, $dst */
1144 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1145 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1146 #define FLD(f) abuf->fields.fmt_mulo1.f
1147 int UNUSED written
= 0;
1148 IADDR UNUSED pc
= abuf
->addr
;
1149 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1152 SI opval
= ANDSI (FLD (f_src1
), * FLD (i_src2
));
1153 * FLD (i_dst
) = opval
;
1154 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1161 CASE (sem
, INSN_AND2
) : /* and $src1, $lit2, $dst */
1163 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1164 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1165 #define FLD(f) abuf->fields.fmt_mulo2.f
1166 int UNUSED written
= 0;
1167 IADDR UNUSED pc
= abuf
->addr
;
1168 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1171 SI opval
= ANDSI (* FLD (i_src1
), FLD (f_src2
));
1172 * FLD (i_dst
) = opval
;
1173 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1180 CASE (sem
, INSN_AND3
) : /* and $lit1, $lit2, $dst */
1182 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1183 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1184 #define FLD(f) abuf->fields.fmt_mulo3.f
1185 int UNUSED written
= 0;
1186 IADDR UNUSED pc
= abuf
->addr
;
1187 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1190 SI opval
= ANDSI (FLD (f_src1
), FLD (f_src2
));
1191 * FLD (i_dst
) = opval
;
1192 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1199 CASE (sem
, INSN_ANDNOT
) : /* andnot $src1, $src2, $dst */
1201 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1202 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1203 #define FLD(f) abuf->fields.fmt_mulo.f
1204 int UNUSED written
= 0;
1205 IADDR UNUSED pc
= abuf
->addr
;
1206 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1209 SI opval
= ANDSI (* FLD (i_src2
), INVSI (* FLD (i_src1
)));
1210 * FLD (i_dst
) = opval
;
1211 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1218 CASE (sem
, INSN_ANDNOT1
) : /* andnot $lit1, $src2, $dst */
1220 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1221 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1222 #define FLD(f) abuf->fields.fmt_mulo1.f
1223 int UNUSED written
= 0;
1224 IADDR UNUSED pc
= abuf
->addr
;
1225 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1228 SI opval
= ANDSI (* FLD (i_src2
), INVSI (FLD (f_src1
)));
1229 * FLD (i_dst
) = opval
;
1230 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1237 CASE (sem
, INSN_ANDNOT2
) : /* andnot $src1, $lit2, $dst */
1239 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1240 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1241 #define FLD(f) abuf->fields.fmt_mulo2.f
1242 int UNUSED written
= 0;
1243 IADDR UNUSED pc
= abuf
->addr
;
1244 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1247 SI opval
= ANDSI (FLD (f_src2
), INVSI (* FLD (i_src1
)));
1248 * FLD (i_dst
) = opval
;
1249 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1256 CASE (sem
, INSN_ANDNOT3
) : /* andnot $lit1, $lit2, $dst */
1258 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1259 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1260 #define FLD(f) abuf->fields.fmt_mulo3.f
1261 int UNUSED written
= 0;
1262 IADDR UNUSED pc
= abuf
->addr
;
1263 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1266 SI opval
= ANDSI (FLD (f_src2
), INVSI (FLD (f_src1
)));
1267 * FLD (i_dst
) = opval
;
1268 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1275 CASE (sem
, INSN_SETBIT
) : /* setbit $src1, $src2, $dst */
1277 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1278 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1279 #define FLD(f) abuf->fields.fmt_notbit.f
1280 int UNUSED written
= 0;
1281 IADDR UNUSED pc
= abuf
->addr
;
1282 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1285 SI opval
= ORSI (SLLSI (1, * FLD (i_src1
)), * FLD (i_src2
));
1286 * FLD (i_dst
) = opval
;
1287 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1294 CASE (sem
, INSN_SETBIT1
) : /* setbit $lit1, $src2, $dst */
1296 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1297 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1298 #define FLD(f) abuf->fields.fmt_notbit1.f
1299 int UNUSED written
= 0;
1300 IADDR UNUSED pc
= abuf
->addr
;
1301 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1304 SI opval
= ORSI (SLLSI (1, FLD (f_src1
)), * FLD (i_src2
));
1305 * FLD (i_dst
) = opval
;
1306 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1313 CASE (sem
, INSN_SETBIT2
) : /* setbit $src1, $lit2, $dst */
1315 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1316 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1317 #define FLD(f) abuf->fields.fmt_notbit2.f
1318 int UNUSED written
= 0;
1319 IADDR UNUSED pc
= abuf
->addr
;
1320 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1323 SI opval
= ORSI (SLLSI (1, * FLD (i_src1
)), FLD (f_src2
));
1324 * FLD (i_dst
) = opval
;
1325 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1332 CASE (sem
, INSN_SETBIT3
) : /* setbit $lit1, $lit2, $dst */
1334 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1335 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1336 #define FLD(f) abuf->fields.fmt_notbit3.f
1337 int UNUSED written
= 0;
1338 IADDR UNUSED pc
= abuf
->addr
;
1339 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1342 SI opval
= ORSI (SLLSI (1, FLD (f_src1
)), FLD (f_src2
));
1343 * FLD (i_dst
) = opval
;
1344 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1351 CASE (sem
, INSN_NOTAND
) : /* notand $src1, $src2, $dst */
1353 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1354 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1355 #define FLD(f) abuf->fields.fmt_mulo.f
1356 int UNUSED written
= 0;
1357 IADDR UNUSED pc
= abuf
->addr
;
1358 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1361 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), * FLD (i_src1
));
1362 * FLD (i_dst
) = opval
;
1363 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1370 CASE (sem
, INSN_NOTAND1
) : /* notand $lit1, $src2, $dst */
1372 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1373 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1374 #define FLD(f) abuf->fields.fmt_mulo1.f
1375 int UNUSED written
= 0;
1376 IADDR UNUSED pc
= abuf
->addr
;
1377 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1380 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), FLD (f_src1
));
1381 * FLD (i_dst
) = opval
;
1382 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1389 CASE (sem
, INSN_NOTAND2
) : /* notand $src1, $lit2, $dst */
1391 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1392 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1393 #define FLD(f) abuf->fields.fmt_mulo2.f
1394 int UNUSED written
= 0;
1395 IADDR UNUSED pc
= abuf
->addr
;
1396 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1399 SI opval
= ANDSI (INVSI (FLD (f_src2
)), * FLD (i_src1
));
1400 * FLD (i_dst
) = opval
;
1401 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1408 CASE (sem
, INSN_NOTAND3
) : /* notand $lit1, $lit2, $dst */
1410 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1411 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1412 #define FLD(f) abuf->fields.fmt_mulo3.f
1413 int UNUSED written
= 0;
1414 IADDR UNUSED pc
= abuf
->addr
;
1415 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1418 SI opval
= ANDSI (INVSI (FLD (f_src2
)), FLD (f_src1
));
1419 * FLD (i_dst
) = opval
;
1420 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1427 CASE (sem
, INSN_XOR
) : /* xor $src1, $src2, $dst */
1429 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1430 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1431 #define FLD(f) abuf->fields.fmt_mulo.f
1432 int UNUSED written
= 0;
1433 IADDR UNUSED pc
= abuf
->addr
;
1434 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1437 SI opval
= XORSI (* FLD (i_src1
), * FLD (i_src2
));
1438 * FLD (i_dst
) = opval
;
1439 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1446 CASE (sem
, INSN_XOR1
) : /* xor $lit1, $src2, $dst */
1448 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1449 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1450 #define FLD(f) abuf->fields.fmt_mulo1.f
1451 int UNUSED written
= 0;
1452 IADDR UNUSED pc
= abuf
->addr
;
1453 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1456 SI opval
= XORSI (FLD (f_src1
), * FLD (i_src2
));
1457 * FLD (i_dst
) = opval
;
1458 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1465 CASE (sem
, INSN_XOR2
) : /* xor $src1, $lit2, $dst */
1467 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1468 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1469 #define FLD(f) abuf->fields.fmt_mulo2.f
1470 int UNUSED written
= 0;
1471 IADDR UNUSED pc
= abuf
->addr
;
1472 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1475 SI opval
= XORSI (* FLD (i_src1
), FLD (f_src2
));
1476 * FLD (i_dst
) = opval
;
1477 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1484 CASE (sem
, INSN_XOR3
) : /* xor $lit1, $lit2, $dst */
1486 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1487 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1488 #define FLD(f) abuf->fields.fmt_mulo3.f
1489 int UNUSED written
= 0;
1490 IADDR UNUSED pc
= abuf
->addr
;
1491 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1494 SI opval
= XORSI (FLD (f_src1
), FLD (f_src2
));
1495 * FLD (i_dst
) = opval
;
1496 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1503 CASE (sem
, INSN_OR
) : /* or $src1, $src2, $dst */
1505 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1506 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1507 #define FLD(f) abuf->fields.fmt_mulo.f
1508 int UNUSED written
= 0;
1509 IADDR UNUSED pc
= abuf
->addr
;
1510 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1513 SI opval
= ORSI (* FLD (i_src1
), * FLD (i_src2
));
1514 * FLD (i_dst
) = opval
;
1515 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1522 CASE (sem
, INSN_OR1
) : /* or $lit1, $src2, $dst */
1524 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1525 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1526 #define FLD(f) abuf->fields.fmt_mulo1.f
1527 int UNUSED written
= 0;
1528 IADDR UNUSED pc
= abuf
->addr
;
1529 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1532 SI opval
= ORSI (FLD (f_src1
), * FLD (i_src2
));
1533 * FLD (i_dst
) = opval
;
1534 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1541 CASE (sem
, INSN_OR2
) : /* or $src1, $lit2, $dst */
1543 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1544 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1545 #define FLD(f) abuf->fields.fmt_mulo2.f
1546 int UNUSED written
= 0;
1547 IADDR UNUSED pc
= abuf
->addr
;
1548 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1551 SI opval
= ORSI (* FLD (i_src1
), FLD (f_src2
));
1552 * FLD (i_dst
) = opval
;
1553 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1560 CASE (sem
, INSN_OR3
) : /* or $lit1, $lit2, $dst */
1562 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1563 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1564 #define FLD(f) abuf->fields.fmt_mulo3.f
1565 int UNUSED written
= 0;
1566 IADDR UNUSED pc
= abuf
->addr
;
1567 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1570 SI opval
= ORSI (FLD (f_src1
), FLD (f_src2
));
1571 * FLD (i_dst
) = opval
;
1572 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1579 CASE (sem
, INSN_NOR
) : /* nor $src1, $src2, $dst */
1581 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1582 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1583 #define FLD(f) abuf->fields.fmt_mulo.f
1584 int UNUSED written
= 0;
1585 IADDR UNUSED pc
= abuf
->addr
;
1586 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1589 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), INVSI (* FLD (i_src1
)));
1590 * FLD (i_dst
) = opval
;
1591 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1598 CASE (sem
, INSN_NOR1
) : /* nor $lit1, $src2, $dst */
1600 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1601 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1602 #define FLD(f) abuf->fields.fmt_mulo1.f
1603 int UNUSED written
= 0;
1604 IADDR UNUSED pc
= abuf
->addr
;
1605 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1608 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), INVSI (FLD (f_src1
)));
1609 * FLD (i_dst
) = opval
;
1610 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1617 CASE (sem
, INSN_NOR2
) : /* nor $src1, $lit2, $dst */
1619 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1620 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1621 #define FLD(f) abuf->fields.fmt_mulo2.f
1622 int UNUSED written
= 0;
1623 IADDR UNUSED pc
= abuf
->addr
;
1624 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1627 SI opval
= ANDSI (INVSI (FLD (f_src2
)), INVSI (* FLD (i_src1
)));
1628 * FLD (i_dst
) = opval
;
1629 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1636 CASE (sem
, INSN_NOR3
) : /* nor $lit1, $lit2, $dst */
1638 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1639 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1640 #define FLD(f) abuf->fields.fmt_mulo3.f
1641 int UNUSED written
= 0;
1642 IADDR UNUSED pc
= abuf
->addr
;
1643 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1646 SI opval
= ANDSI (INVSI (FLD (f_src2
)), INVSI (FLD (f_src1
)));
1647 * FLD (i_dst
) = opval
;
1648 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1655 CASE (sem
, INSN_NOT
) : /* not $src1, $src2, $dst */
1657 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1658 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1659 #define FLD(f) abuf->fields.fmt_not.f
1660 int UNUSED written
= 0;
1661 IADDR UNUSED pc
= abuf
->addr
;
1662 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1665 SI opval
= INVSI (* FLD (i_src1
));
1666 * FLD (i_dst
) = opval
;
1667 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1674 CASE (sem
, INSN_NOT1
) : /* not $lit1, $src2, $dst */
1676 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1677 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1678 #define FLD(f) abuf->fields.fmt_not1.f
1679 int UNUSED written
= 0;
1680 IADDR UNUSED pc
= abuf
->addr
;
1681 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1684 SI opval
= INVSI (FLD (f_src1
));
1685 * FLD (i_dst
) = opval
;
1686 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1693 CASE (sem
, INSN_NOT2
) : /* not $src1, $lit2, $dst */
1695 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1696 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1697 #define FLD(f) abuf->fields.fmt_not2.f
1698 int UNUSED written
= 0;
1699 IADDR UNUSED pc
= abuf
->addr
;
1700 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1703 SI opval
= INVSI (* FLD (i_src1
));
1704 * FLD (i_dst
) = opval
;
1705 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1712 CASE (sem
, INSN_NOT3
) : /* not $lit1, $lit2, $dst */
1714 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1715 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1716 #define FLD(f) abuf->fields.fmt_not3.f
1717 int UNUSED written
= 0;
1718 IADDR UNUSED pc
= abuf
->addr
;
1719 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1722 SI opval
= INVSI (FLD (f_src1
));
1723 * FLD (i_dst
) = opval
;
1724 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1731 CASE (sem
, INSN_CLRBIT
) : /* clrbit $src1, $src2, $dst */
1733 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1734 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1735 #define FLD(f) abuf->fields.fmt_notbit.f
1736 int UNUSED written
= 0;
1737 IADDR UNUSED pc
= abuf
->addr
;
1738 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1741 SI opval
= ANDSI (INVSI (SLLSI (1, * FLD (i_src1
))), * FLD (i_src2
));
1742 * FLD (i_dst
) = opval
;
1743 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1750 CASE (sem
, INSN_CLRBIT1
) : /* clrbit $lit1, $src2, $dst */
1752 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1753 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1754 #define FLD(f) abuf->fields.fmt_notbit1.f
1755 int UNUSED written
= 0;
1756 IADDR UNUSED pc
= abuf
->addr
;
1757 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1760 SI opval
= ANDSI (INVSI (SLLSI (1, FLD (f_src1
))), * FLD (i_src2
));
1761 * FLD (i_dst
) = opval
;
1762 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1769 CASE (sem
, INSN_CLRBIT2
) : /* clrbit $src1, $lit2, $dst */
1771 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1772 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1773 #define FLD(f) abuf->fields.fmt_notbit2.f
1774 int UNUSED written
= 0;
1775 IADDR UNUSED pc
= abuf
->addr
;
1776 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1779 SI opval
= ANDSI (INVSI (SLLSI (1, * FLD (i_src1
))), FLD (f_src2
));
1780 * FLD (i_dst
) = opval
;
1781 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1788 CASE (sem
, INSN_CLRBIT3
) : /* clrbit $lit1, $lit2, $dst */
1790 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1791 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1792 #define FLD(f) abuf->fields.fmt_notbit3.f
1793 int UNUSED written
= 0;
1794 IADDR UNUSED pc
= abuf
->addr
;
1795 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1798 SI opval
= ANDSI (INVSI (SLLSI (1, FLD (f_src1
))), FLD (f_src2
));
1799 * FLD (i_dst
) = opval
;
1800 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1807 CASE (sem
, INSN_SHLO
) : /* shlo $src1, $src2, $dst */
1809 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1810 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1811 #define FLD(f) abuf->fields.fmt_notbit.f
1812 int UNUSED written
= 0;
1813 IADDR UNUSED pc
= abuf
->addr
;
1814 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1817 SI opval
= SLLSI (* FLD (i_src2
), * FLD (i_src1
));
1818 * FLD (i_dst
) = opval
;
1819 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1826 CASE (sem
, INSN_SHLO1
) : /* shlo $lit1, $src2, $dst */
1828 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1829 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1830 #define FLD(f) abuf->fields.fmt_notbit1.f
1831 int UNUSED written
= 0;
1832 IADDR UNUSED pc
= abuf
->addr
;
1833 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1836 SI opval
= SLLSI (* FLD (i_src2
), FLD (f_src1
));
1837 * FLD (i_dst
) = opval
;
1838 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1845 CASE (sem
, INSN_SHLO2
) : /* shlo $src1, $lit2, $dst */
1847 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1848 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1849 #define FLD(f) abuf->fields.fmt_notbit2.f
1850 int UNUSED written
= 0;
1851 IADDR UNUSED pc
= abuf
->addr
;
1852 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1855 SI opval
= SLLSI (FLD (f_src2
), * FLD (i_src1
));
1856 * FLD (i_dst
) = opval
;
1857 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1864 CASE (sem
, INSN_SHLO3
) : /* shlo $lit1, $lit2, $dst */
1866 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1867 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1868 #define FLD(f) abuf->fields.fmt_notbit3.f
1869 int UNUSED written
= 0;
1870 IADDR UNUSED pc
= abuf
->addr
;
1871 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1874 SI opval
= SLLSI (FLD (f_src2
), FLD (f_src1
));
1875 * FLD (i_dst
) = opval
;
1876 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1883 CASE (sem
, INSN_SHRO
) : /* shro $src1, $src2, $dst */
1885 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1886 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1887 #define FLD(f) abuf->fields.fmt_notbit.f
1888 int UNUSED written
= 0;
1889 IADDR UNUSED pc
= abuf
->addr
;
1890 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1893 SI opval
= SRLSI (* FLD (i_src2
), * FLD (i_src1
));
1894 * FLD (i_dst
) = opval
;
1895 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1902 CASE (sem
, INSN_SHRO1
) : /* shro $lit1, $src2, $dst */
1904 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1905 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1906 #define FLD(f) abuf->fields.fmt_notbit1.f
1907 int UNUSED written
= 0;
1908 IADDR UNUSED pc
= abuf
->addr
;
1909 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1912 SI opval
= SRLSI (* FLD (i_src2
), FLD (f_src1
));
1913 * FLD (i_dst
) = opval
;
1914 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1921 CASE (sem
, INSN_SHRO2
) : /* shro $src1, $lit2, $dst */
1923 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1924 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1925 #define FLD(f) abuf->fields.fmt_notbit2.f
1926 int UNUSED written
= 0;
1927 IADDR UNUSED pc
= abuf
->addr
;
1928 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1931 SI opval
= SRLSI (FLD (f_src2
), * FLD (i_src1
));
1932 * FLD (i_dst
) = opval
;
1933 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1940 CASE (sem
, INSN_SHRO3
) : /* shro $lit1, $lit2, $dst */
1942 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1943 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1944 #define FLD(f) abuf->fields.fmt_notbit3.f
1945 int UNUSED written
= 0;
1946 IADDR UNUSED pc
= abuf
->addr
;
1947 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1950 SI opval
= SRLSI (FLD (f_src2
), FLD (f_src1
));
1951 * FLD (i_dst
) = opval
;
1952 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1959 CASE (sem
, INSN_SHLI
) : /* shli $src1, $src2, $dst */
1961 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1962 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1963 #define FLD(f) abuf->fields.fmt_notbit.f
1964 int UNUSED written
= 0;
1965 IADDR UNUSED pc
= abuf
->addr
;
1966 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1969 SI opval
= SLLSI (* FLD (i_src2
), * FLD (i_src1
));
1970 * FLD (i_dst
) = opval
;
1971 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1978 CASE (sem
, INSN_SHLI1
) : /* shli $lit1, $src2, $dst */
1980 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1981 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1982 #define FLD(f) abuf->fields.fmt_notbit1.f
1983 int UNUSED written
= 0;
1984 IADDR UNUSED pc
= abuf
->addr
;
1985 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1988 SI opval
= SLLSI (* FLD (i_src2
), FLD (f_src1
));
1989 * FLD (i_dst
) = opval
;
1990 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1997 CASE (sem
, INSN_SHLI2
) : /* shli $src1, $lit2, $dst */
1999 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2000 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2001 #define FLD(f) abuf->fields.fmt_notbit2.f
2002 int UNUSED written
= 0;
2003 IADDR UNUSED pc
= abuf
->addr
;
2004 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2007 SI opval
= SLLSI (FLD (f_src2
), * FLD (i_src1
));
2008 * FLD (i_dst
) = opval
;
2009 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2016 CASE (sem
, INSN_SHLI3
) : /* shli $lit1, $lit2, $dst */
2018 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2019 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2020 #define FLD(f) abuf->fields.fmt_notbit3.f
2021 int UNUSED written
= 0;
2022 IADDR UNUSED pc
= abuf
->addr
;
2023 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2026 SI opval
= SLLSI (FLD (f_src2
), FLD (f_src1
));
2027 * FLD (i_dst
) = opval
;
2028 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2035 CASE (sem
, INSN_SHRI
) : /* shri $src1, $src2, $dst */
2037 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2038 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2039 #define FLD(f) abuf->fields.fmt_notbit.f
2040 int UNUSED written
= 0;
2041 IADDR UNUSED pc
= abuf
->addr
;
2042 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2045 SI opval
= SRASI (* FLD (i_src2
), * FLD (i_src1
));
2046 * FLD (i_dst
) = opval
;
2047 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2054 CASE (sem
, INSN_SHRI1
) : /* shri $lit1, $src2, $dst */
2056 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2057 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2058 #define FLD(f) abuf->fields.fmt_notbit1.f
2059 int UNUSED written
= 0;
2060 IADDR UNUSED pc
= abuf
->addr
;
2061 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2064 SI opval
= SRASI (* FLD (i_src2
), FLD (f_src1
));
2065 * FLD (i_dst
) = opval
;
2066 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2073 CASE (sem
, INSN_SHRI2
) : /* shri $src1, $lit2, $dst */
2075 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2076 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2077 #define FLD(f) abuf->fields.fmt_notbit2.f
2078 int UNUSED written
= 0;
2079 IADDR UNUSED pc
= abuf
->addr
;
2080 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2083 SI opval
= SRASI (FLD (f_src2
), * FLD (i_src1
));
2084 * FLD (i_dst
) = opval
;
2085 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2092 CASE (sem
, INSN_SHRI3
) : /* shri $lit1, $lit2, $dst */
2094 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2095 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2096 #define FLD(f) abuf->fields.fmt_notbit3.f
2097 int UNUSED written
= 0;
2098 IADDR UNUSED pc
= abuf
->addr
;
2099 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2102 SI opval
= SRASI (FLD (f_src2
), FLD (f_src1
));
2103 * FLD (i_dst
) = opval
;
2104 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2111 CASE (sem
, INSN_EMUL
) : /* emul $src1, $src2, $dst */
2113 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2114 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2115 #define FLD(f) abuf->fields.fmt_emul.f
2116 int UNUSED written
= 0;
2117 IADDR UNUSED pc
= abuf
->addr
;
2118 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2123 tmp_temp
= MULDI (ZEXTSIDI (* FLD (i_src1
)), ZEXTSIDI (* FLD (i_src2
)));
2124 tmp_dregno
= FLD (f_srcdst
);
2126 SI opval
= TRUNCDISI (tmp_temp
);
2127 * FLD (i_dst
) = opval
;
2128 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2131 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2132 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2133 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
2141 CASE (sem
, INSN_EMUL1
) : /* emul $lit1, $src2, $dst */
2143 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2144 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2145 #define FLD(f) abuf->fields.fmt_emul1.f
2146 int UNUSED written
= 0;
2147 IADDR UNUSED pc
= abuf
->addr
;
2148 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2153 tmp_temp
= MULDI (ZEXTSIDI (FLD (f_src1
)), ZEXTSIDI (* FLD (i_src2
)));
2154 tmp_dregno
= FLD (f_srcdst
);
2156 SI opval
= TRUNCDISI (tmp_temp
);
2157 * FLD (i_dst
) = opval
;
2158 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2161 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2162 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2163 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
2171 CASE (sem
, INSN_EMUL2
) : /* emul $src1, $lit2, $dst */
2173 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2174 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2175 #define FLD(f) abuf->fields.fmt_emul2.f
2176 int UNUSED written
= 0;
2177 IADDR UNUSED pc
= abuf
->addr
;
2178 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2183 tmp_temp
= MULDI (ZEXTSIDI (* FLD (i_src1
)), ZEXTSIDI (FLD (f_src2
)));
2184 tmp_dregno
= FLD (f_srcdst
);
2186 SI opval
= TRUNCDISI (tmp_temp
);
2187 * FLD (i_dst
) = opval
;
2188 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2191 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2192 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2193 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
2201 CASE (sem
, INSN_EMUL3
) : /* emul $lit1, $lit2, $dst */
2203 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2204 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2205 #define FLD(f) abuf->fields.fmt_emul3.f
2206 int UNUSED written
= 0;
2207 IADDR UNUSED pc
= abuf
->addr
;
2208 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2213 tmp_temp
= MULDI (ZEXTSIDI (FLD (f_src1
)), ZEXTSIDI (FLD (f_src2
)));
2214 tmp_dregno
= FLD (f_srcdst
);
2216 SI opval
= TRUNCDISI (tmp_temp
);
2217 * FLD (i_dst
) = opval
;
2218 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2221 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2222 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2223 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
2231 CASE (sem
, INSN_MOV
) : /* mov $src1, $dst */
2233 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2234 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2235 #define FLD(f) abuf->fields.fmt_not2.f
2236 int UNUSED written
= 0;
2237 IADDR UNUSED pc
= abuf
->addr
;
2238 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2241 SI opval
= * FLD (i_src1
);
2242 * FLD (i_dst
) = opval
;
2243 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2250 CASE (sem
, INSN_MOV1
) : /* mov $lit1, $dst */
2252 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2253 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2254 #define FLD(f) abuf->fields.fmt_not3.f
2255 int UNUSED written
= 0;
2256 IADDR UNUSED pc
= abuf
->addr
;
2257 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2260 SI opval
= FLD (f_src1
);
2261 * FLD (i_dst
) = opval
;
2262 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2269 CASE (sem
, INSN_MOVL
) : /* movl $src1, $dst */
2271 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2272 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2273 #define FLD(f) abuf->fields.fmt_movl.f
2274 int UNUSED written
= 0;
2275 IADDR UNUSED pc
= abuf
->addr
;
2276 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2281 tmp_dregno
= FLD (f_srcdst
);
2282 tmp_sregno
= FLD (f_src1
);
2284 SI opval
= * FLD (i_src1
);
2285 * FLD (i_dst
) = opval
;
2286 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2289 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (1))]);
2290 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2291 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
2299 CASE (sem
, INSN_MOVL1
) : /* movl $lit1, $dst */
2301 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2302 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2303 #define FLD(f) abuf->fields.fmt_movl1.f
2304 int UNUSED written
= 0;
2305 IADDR UNUSED pc
= abuf
->addr
;
2306 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2310 tmp_dregno
= FLD (f_srcdst
);
2312 SI opval
= FLD (f_src1
);
2313 * FLD (i_dst
) = opval
;
2314 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2318 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2319 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
2327 CASE (sem
, INSN_MOVT
) : /* movt $src1, $dst */
2329 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2330 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2331 #define FLD(f) abuf->fields.fmt_movt.f
2332 int UNUSED written
= 0;
2333 IADDR UNUSED pc
= abuf
->addr
;
2334 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2339 tmp_dregno
= FLD (f_srcdst
);
2340 tmp_sregno
= FLD (f_src1
);
2342 SI opval
= * FLD (i_src1
);
2343 * FLD (i_dst
) = opval
;
2344 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2347 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (1))]);
2348 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2349 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
2352 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (2))]);
2353 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2354 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
2362 CASE (sem
, INSN_MOVT1
) : /* movt $lit1, $dst */
2364 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2365 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2366 #define FLD(f) abuf->fields.fmt_movt1.f
2367 int UNUSED written
= 0;
2368 IADDR UNUSED pc
= abuf
->addr
;
2369 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2373 tmp_dregno
= FLD (f_srcdst
);
2375 SI opval
= FLD (f_src1
);
2376 * FLD (i_dst
) = opval
;
2377 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2381 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2382 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
2386 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2387 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
2395 CASE (sem
, INSN_MOVQ
) : /* movq $src1, $dst */
2397 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2398 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2399 #define FLD(f) abuf->fields.fmt_movq.f
2400 int UNUSED written
= 0;
2401 IADDR UNUSED pc
= abuf
->addr
;
2402 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2407 tmp_dregno
= FLD (f_srcdst
);
2408 tmp_sregno
= FLD (f_src1
);
2410 SI opval
= * FLD (i_src1
);
2411 * FLD (i_dst
) = opval
;
2412 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2415 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (1))]);
2416 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2417 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
2420 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (2))]);
2421 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2422 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
2425 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (3))]);
2426 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
2427 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval
);
2435 CASE (sem
, INSN_MOVQ1
) : /* movq $lit1, $dst */
2437 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2438 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2439 #define FLD(f) abuf->fields.fmt_movq1.f
2440 int UNUSED written
= 0;
2441 IADDR UNUSED pc
= abuf
->addr
;
2442 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2446 tmp_dregno
= FLD (f_srcdst
);
2448 SI opval
= FLD (f_src1
);
2449 * FLD (i_dst
) = opval
;
2450 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2454 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2455 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
2459 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2460 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
2464 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
2465 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval
);
2473 CASE (sem
, INSN_MODPC
) : /* modpc $src1, $src2, $dst */
2475 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2476 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2477 #define FLD(f) abuf->fields.fmt_modpc.f
2478 int UNUSED written
= 0;
2479 IADDR UNUSED pc
= abuf
->addr
;
2480 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2483 SI opval
= * FLD (i_src2
);
2484 * FLD (i_dst
) = opval
;
2485 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2492 CASE (sem
, INSN_MODAC
) : /* modac $src1, $src2, $dst */
2494 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2495 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2496 #define FLD(f) abuf->fields.fmt_modpc.f
2497 int UNUSED written
= 0;
2498 IADDR UNUSED pc
= abuf
->addr
;
2499 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2502 SI opval
= * FLD (i_src2
);
2503 * FLD (i_dst
) = opval
;
2504 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2511 CASE (sem
, INSN_LDA_OFFSET
) : /* lda $offset, $dst */
2513 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2514 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2515 #define FLD(f) abuf->fields.fmt_lda_offset.f
2516 int UNUSED written
= 0;
2517 IADDR UNUSED pc
= abuf
->addr
;
2518 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2521 SI opval
= FLD (f_offset
);
2522 * FLD (i_dst
) = opval
;
2523 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2530 CASE (sem
, INSN_LDA_INDIRECT_OFFSET
) : /* lda $offset($abase), $dst */
2532 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2533 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2534 #define FLD(f) abuf->fields.fmt_lda_indirect_offset.f
2535 int UNUSED written
= 0;
2536 IADDR UNUSED pc
= abuf
->addr
;
2537 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2540 SI opval
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
2541 * FLD (i_dst
) = opval
;
2542 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2549 CASE (sem
, INSN_LDA_INDIRECT
) : /* lda ($abase), $dst */
2551 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2552 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2553 #define FLD(f) abuf->fields.fmt_lda_indirect.f
2554 int UNUSED written
= 0;
2555 IADDR UNUSED pc
= abuf
->addr
;
2556 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2559 SI opval
= * FLD (i_abase
);
2560 * FLD (i_dst
) = opval
;
2561 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2568 CASE (sem
, INSN_LDA_INDIRECT_INDEX
) : /* lda ($abase)[$index*S$scale], $dst */
2570 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2571 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2572 #define FLD(f) abuf->fields.fmt_lda_indirect_index.f
2573 int UNUSED written
= 0;
2574 IADDR UNUSED pc
= abuf
->addr
;
2575 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2578 SI opval
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
2579 * FLD (i_dst
) = opval
;
2580 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2587 CASE (sem
, INSN_LDA_DISP
) : /* lda $optdisp, $dst */
2589 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2590 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2591 #define FLD(f) abuf->fields.fmt_lda_disp.f
2592 int UNUSED written
= 0;
2593 IADDR UNUSED pc
= abuf
->addr
;
2594 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2597 SI opval
= FLD (f_optdisp
);
2598 * FLD (i_dst
) = opval
;
2599 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2606 CASE (sem
, INSN_LDA_INDIRECT_DISP
) : /* lda $optdisp($abase), $dst */
2608 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2609 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2610 #define FLD(f) abuf->fields.fmt_lda_indirect_disp.f
2611 int UNUSED written
= 0;
2612 IADDR UNUSED pc
= abuf
->addr
;
2613 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2616 SI opval
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
2617 * FLD (i_dst
) = opval
;
2618 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2625 CASE (sem
, INSN_LDA_INDEX_DISP
) : /* lda $optdisp[$index*S$scale], $dst */
2627 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2628 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2629 #define FLD(f) abuf->fields.fmt_lda_index_disp.f
2630 int UNUSED written
= 0;
2631 IADDR UNUSED pc
= abuf
->addr
;
2632 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2635 SI opval
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
2636 * FLD (i_dst
) = opval
;
2637 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2644 CASE (sem
, INSN_LDA_INDIRECT_INDEX_DISP
) : /* lda $optdisp($abase)[$index*S$scale], $dst */
2646 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2647 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2648 #define FLD(f) abuf->fields.fmt_lda_indirect_index_disp.f
2649 int UNUSED written
= 0;
2650 IADDR UNUSED pc
= abuf
->addr
;
2651 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2654 SI opval
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2655 * FLD (i_dst
) = opval
;
2656 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2663 CASE (sem
, INSN_LD_OFFSET
) : /* ld $offset, $dst */
2665 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2666 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2667 #define FLD(f) abuf->fields.fmt_ld_offset.f
2668 int UNUSED written
= 0;
2669 IADDR UNUSED pc
= abuf
->addr
;
2670 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2673 SI opval
= GETMEMSI (current_cpu
, pc
, FLD (f_offset
));
2674 * FLD (i_dst
) = opval
;
2675 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2682 CASE (sem
, INSN_LD_INDIRECT_OFFSET
) : /* ld $offset($abase), $dst */
2684 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2685 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2686 #define FLD(f) abuf->fields.fmt_ld_indirect_offset.f
2687 int UNUSED written
= 0;
2688 IADDR UNUSED pc
= abuf
->addr
;
2689 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2692 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
2693 * FLD (i_dst
) = opval
;
2694 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2701 CASE (sem
, INSN_LD_INDIRECT
) : /* ld ($abase), $dst */
2703 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2704 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2705 #define FLD(f) abuf->fields.fmt_ld_indirect.f
2706 int UNUSED written
= 0;
2707 IADDR UNUSED pc
= abuf
->addr
;
2708 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2711 SI opval
= GETMEMSI (current_cpu
, pc
, * FLD (i_abase
));
2712 * FLD (i_dst
) = opval
;
2713 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2720 CASE (sem
, INSN_LD_INDIRECT_INDEX
) : /* ld ($abase)[$index*S$scale], $dst */
2722 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2723 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2724 #define FLD(f) abuf->fields.fmt_ld_indirect_index.f
2725 int UNUSED written
= 0;
2726 IADDR UNUSED pc
= abuf
->addr
;
2727 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2730 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2731 * FLD (i_dst
) = opval
;
2732 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2739 CASE (sem
, INSN_LD_DISP
) : /* ld $optdisp, $dst */
2741 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2742 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2743 #define FLD(f) abuf->fields.fmt_ld_disp.f
2744 int UNUSED written
= 0;
2745 IADDR UNUSED pc
= abuf
->addr
;
2746 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2749 SI opval
= GETMEMSI (current_cpu
, pc
, FLD (f_optdisp
));
2750 * FLD (i_dst
) = opval
;
2751 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2758 CASE (sem
, INSN_LD_INDIRECT_DISP
) : /* ld $optdisp($abase), $dst */
2760 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2761 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2762 #define FLD(f) abuf->fields.fmt_ld_indirect_disp.f
2763 int UNUSED written
= 0;
2764 IADDR UNUSED pc
= abuf
->addr
;
2765 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2768 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
2769 * FLD (i_dst
) = opval
;
2770 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2777 CASE (sem
, INSN_LD_INDEX_DISP
) : /* ld $optdisp[$index*S$scale], $dst */
2779 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2780 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2781 #define FLD(f) abuf->fields.fmt_ld_index_disp.f
2782 int UNUSED written
= 0;
2783 IADDR UNUSED pc
= abuf
->addr
;
2784 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2787 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2788 * FLD (i_dst
) = opval
;
2789 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2796 CASE (sem
, INSN_LD_INDIRECT_INDEX_DISP
) : /* ld $optdisp($abase)[$index*S$scale], $dst */
2798 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2799 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2800 #define FLD(f) abuf->fields.fmt_ld_indirect_index_disp.f
2801 int UNUSED written
= 0;
2802 IADDR UNUSED pc
= abuf
->addr
;
2803 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2806 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
2807 * FLD (i_dst
) = opval
;
2808 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2815 CASE (sem
, INSN_LDOB_OFFSET
) : /* ldob $offset, $dst */
2817 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2818 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2819 #define FLD(f) abuf->fields.fmt_ldob_offset.f
2820 int UNUSED written
= 0;
2821 IADDR UNUSED pc
= abuf
->addr
;
2822 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2825 SI opval
= GETMEMUQI (current_cpu
, pc
, FLD (f_offset
));
2826 * FLD (i_dst
) = opval
;
2827 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2834 CASE (sem
, INSN_LDOB_INDIRECT_OFFSET
) : /* ldob $offset($abase), $dst */
2836 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2837 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2838 #define FLD(f) abuf->fields.fmt_ldob_indirect_offset.f
2839 int UNUSED written
= 0;
2840 IADDR UNUSED pc
= abuf
->addr
;
2841 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2844 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
2845 * FLD (i_dst
) = opval
;
2846 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2853 CASE (sem
, INSN_LDOB_INDIRECT
) : /* ldob ($abase), $dst */
2855 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2856 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2857 #define FLD(f) abuf->fields.fmt_ldob_indirect.f
2858 int UNUSED written
= 0;
2859 IADDR UNUSED pc
= abuf
->addr
;
2860 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2863 SI opval
= GETMEMUQI (current_cpu
, pc
, * FLD (i_abase
));
2864 * FLD (i_dst
) = opval
;
2865 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2872 CASE (sem
, INSN_LDOB_INDIRECT_INDEX
) : /* ldob ($abase)[$index*S$scale], $dst */
2874 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2875 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2876 #define FLD(f) abuf->fields.fmt_ldob_indirect_index.f
2877 int UNUSED written
= 0;
2878 IADDR UNUSED pc
= abuf
->addr
;
2879 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2882 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2883 * FLD (i_dst
) = opval
;
2884 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2891 CASE (sem
, INSN_LDOB_DISP
) : /* ldob $optdisp, $dst */
2893 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2894 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2895 #define FLD(f) abuf->fields.fmt_ldob_disp.f
2896 int UNUSED written
= 0;
2897 IADDR UNUSED pc
= abuf
->addr
;
2898 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2901 SI opval
= GETMEMUQI (current_cpu
, pc
, FLD (f_optdisp
));
2902 * FLD (i_dst
) = opval
;
2903 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2910 CASE (sem
, INSN_LDOB_INDIRECT_DISP
) : /* ldob $optdisp($abase), $dst */
2912 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2913 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2914 #define FLD(f) abuf->fields.fmt_ldob_indirect_disp.f
2915 int UNUSED written
= 0;
2916 IADDR UNUSED pc
= abuf
->addr
;
2917 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2920 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
2921 * FLD (i_dst
) = opval
;
2922 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2929 CASE (sem
, INSN_LDOB_INDEX_DISP
) : /* ldob $optdisp[$index*S$scale], $dst */
2931 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2932 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2933 #define FLD(f) abuf->fields.fmt_ldob_index_disp.f
2934 int UNUSED written
= 0;
2935 IADDR UNUSED pc
= abuf
->addr
;
2936 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2939 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2940 * FLD (i_dst
) = opval
;
2941 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2948 CASE (sem
, INSN_LDOB_INDIRECT_INDEX_DISP
) : /* ldob $optdisp($abase)[$index*S$scale], $dst */
2950 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2951 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2952 #define FLD(f) abuf->fields.fmt_ldob_indirect_index_disp.f
2953 int UNUSED written
= 0;
2954 IADDR UNUSED pc
= abuf
->addr
;
2955 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2958 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
2959 * FLD (i_dst
) = opval
;
2960 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2967 CASE (sem
, INSN_LDOS_OFFSET
) : /* ldos $offset, $dst */
2969 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2970 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2971 #define FLD(f) abuf->fields.fmt_ldos_offset.f
2972 int UNUSED written
= 0;
2973 IADDR UNUSED pc
= abuf
->addr
;
2974 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2977 SI opval
= GETMEMUHI (current_cpu
, pc
, FLD (f_offset
));
2978 * FLD (i_dst
) = opval
;
2979 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2986 CASE (sem
, INSN_LDOS_INDIRECT_OFFSET
) : /* ldos $offset($abase), $dst */
2988 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2989 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2990 #define FLD(f) abuf->fields.fmt_ldos_indirect_offset.f
2991 int UNUSED written
= 0;
2992 IADDR UNUSED pc
= abuf
->addr
;
2993 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2996 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
2997 * FLD (i_dst
) = opval
;
2998 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3005 CASE (sem
, INSN_LDOS_INDIRECT
) : /* ldos ($abase), $dst */
3007 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3008 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3009 #define FLD(f) abuf->fields.fmt_ldos_indirect.f
3010 int UNUSED written
= 0;
3011 IADDR UNUSED pc
= abuf
->addr
;
3012 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3015 SI opval
= GETMEMUHI (current_cpu
, pc
, * FLD (i_abase
));
3016 * FLD (i_dst
) = opval
;
3017 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3024 CASE (sem
, INSN_LDOS_INDIRECT_INDEX
) : /* ldos ($abase)[$index*S$scale], $dst */
3026 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3027 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3028 #define FLD(f) abuf->fields.fmt_ldos_indirect_index.f
3029 int UNUSED written
= 0;
3030 IADDR UNUSED pc
= abuf
->addr
;
3031 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3034 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3035 * FLD (i_dst
) = opval
;
3036 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3043 CASE (sem
, INSN_LDOS_DISP
) : /* ldos $optdisp, $dst */
3045 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3046 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3047 #define FLD(f) abuf->fields.fmt_ldos_disp.f
3048 int UNUSED written
= 0;
3049 IADDR UNUSED pc
= abuf
->addr
;
3050 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3053 SI opval
= GETMEMUHI (current_cpu
, pc
, FLD (f_optdisp
));
3054 * FLD (i_dst
) = opval
;
3055 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3062 CASE (sem
, INSN_LDOS_INDIRECT_DISP
) : /* ldos $optdisp($abase), $dst */
3064 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3065 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3066 #define FLD(f) abuf->fields.fmt_ldos_indirect_disp.f
3067 int UNUSED written
= 0;
3068 IADDR UNUSED pc
= abuf
->addr
;
3069 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3072 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3073 * FLD (i_dst
) = opval
;
3074 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3081 CASE (sem
, INSN_LDOS_INDEX_DISP
) : /* ldos $optdisp[$index*S$scale], $dst */
3083 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3084 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3085 #define FLD(f) abuf->fields.fmt_ldos_index_disp.f
3086 int UNUSED written
= 0;
3087 IADDR UNUSED pc
= abuf
->addr
;
3088 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3091 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3092 * FLD (i_dst
) = opval
;
3093 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3100 CASE (sem
, INSN_LDOS_INDIRECT_INDEX_DISP
) : /* ldos $optdisp($abase)[$index*S$scale], $dst */
3102 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3103 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3104 #define FLD(f) abuf->fields.fmt_ldos_indirect_index_disp.f
3105 int UNUSED written
= 0;
3106 IADDR UNUSED pc
= abuf
->addr
;
3107 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3110 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3111 * FLD (i_dst
) = opval
;
3112 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3119 CASE (sem
, INSN_LDIB_OFFSET
) : /* ldib $offset, $dst */
3121 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3122 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3123 #define FLD(f) abuf->fields.fmt_ldib_offset.f
3124 int UNUSED written
= 0;
3125 IADDR UNUSED pc
= abuf
->addr
;
3126 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3129 SI opval
= GETMEMQI (current_cpu
, pc
, FLD (f_offset
));
3130 * FLD (i_dst
) = opval
;
3131 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3138 CASE (sem
, INSN_LDIB_INDIRECT_OFFSET
) : /* ldib $offset($abase), $dst */
3140 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3141 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3142 #define FLD(f) abuf->fields.fmt_ldib_indirect_offset.f
3143 int UNUSED written
= 0;
3144 IADDR UNUSED pc
= abuf
->addr
;
3145 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3148 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3149 * FLD (i_dst
) = opval
;
3150 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3157 CASE (sem
, INSN_LDIB_INDIRECT
) : /* ldib ($abase), $dst */
3159 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3160 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3161 #define FLD(f) abuf->fields.fmt_ldib_indirect.f
3162 int UNUSED written
= 0;
3163 IADDR UNUSED pc
= abuf
->addr
;
3164 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3167 SI opval
= GETMEMQI (current_cpu
, pc
, * FLD (i_abase
));
3168 * FLD (i_dst
) = opval
;
3169 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3176 CASE (sem
, INSN_LDIB_INDIRECT_INDEX
) : /* ldib ($abase)[$index*S$scale], $dst */
3178 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3179 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3180 #define FLD(f) abuf->fields.fmt_ldib_indirect_index.f
3181 int UNUSED written
= 0;
3182 IADDR UNUSED pc
= abuf
->addr
;
3183 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3186 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3187 * FLD (i_dst
) = opval
;
3188 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3195 CASE (sem
, INSN_LDIB_DISP
) : /* ldib $optdisp, $dst */
3197 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3198 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3199 #define FLD(f) abuf->fields.fmt_ldib_disp.f
3200 int UNUSED written
= 0;
3201 IADDR UNUSED pc
= abuf
->addr
;
3202 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3205 SI opval
= GETMEMQI (current_cpu
, pc
, FLD (f_optdisp
));
3206 * FLD (i_dst
) = opval
;
3207 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3214 CASE (sem
, INSN_LDIB_INDIRECT_DISP
) : /* ldib $optdisp($abase), $dst */
3216 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3217 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3218 #define FLD(f) abuf->fields.fmt_ldib_indirect_disp.f
3219 int UNUSED written
= 0;
3220 IADDR UNUSED pc
= abuf
->addr
;
3221 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3224 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3225 * FLD (i_dst
) = opval
;
3226 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3233 CASE (sem
, INSN_LDIB_INDEX_DISP
) : /* ldib $optdisp[$index*S$scale], $dst */
3235 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3236 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3237 #define FLD(f) abuf->fields.fmt_ldib_index_disp.f
3238 int UNUSED written
= 0;
3239 IADDR UNUSED pc
= abuf
->addr
;
3240 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3243 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3244 * FLD (i_dst
) = opval
;
3245 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3252 CASE (sem
, INSN_LDIB_INDIRECT_INDEX_DISP
) : /* ldib $optdisp($abase)[$index*S$scale], $dst */
3254 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3255 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3256 #define FLD(f) abuf->fields.fmt_ldib_indirect_index_disp.f
3257 int UNUSED written
= 0;
3258 IADDR UNUSED pc
= abuf
->addr
;
3259 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3262 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3263 * FLD (i_dst
) = opval
;
3264 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3271 CASE (sem
, INSN_LDIS_OFFSET
) : /* ldis $offset, $dst */
3273 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3274 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3275 #define FLD(f) abuf->fields.fmt_ldis_offset.f
3276 int UNUSED written
= 0;
3277 IADDR UNUSED pc
= abuf
->addr
;
3278 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3281 SI opval
= GETMEMHI (current_cpu
, pc
, FLD (f_offset
));
3282 * FLD (i_dst
) = opval
;
3283 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3290 CASE (sem
, INSN_LDIS_INDIRECT_OFFSET
) : /* ldis $offset($abase), $dst */
3292 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3293 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3294 #define FLD(f) abuf->fields.fmt_ldis_indirect_offset.f
3295 int UNUSED written
= 0;
3296 IADDR UNUSED pc
= abuf
->addr
;
3297 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3300 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3301 * FLD (i_dst
) = opval
;
3302 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3309 CASE (sem
, INSN_LDIS_INDIRECT
) : /* ldis ($abase), $dst */
3311 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3312 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3313 #define FLD(f) abuf->fields.fmt_ldis_indirect.f
3314 int UNUSED written
= 0;
3315 IADDR UNUSED pc
= abuf
->addr
;
3316 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3319 SI opval
= GETMEMHI (current_cpu
, pc
, * FLD (i_abase
));
3320 * FLD (i_dst
) = opval
;
3321 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3328 CASE (sem
, INSN_LDIS_INDIRECT_INDEX
) : /* ldis ($abase)[$index*S$scale], $dst */
3330 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3331 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3332 #define FLD(f) abuf->fields.fmt_ldis_indirect_index.f
3333 int UNUSED written
= 0;
3334 IADDR UNUSED pc
= abuf
->addr
;
3335 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3338 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3339 * FLD (i_dst
) = opval
;
3340 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3347 CASE (sem
, INSN_LDIS_DISP
) : /* ldis $optdisp, $dst */
3349 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3350 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3351 #define FLD(f) abuf->fields.fmt_ldis_disp.f
3352 int UNUSED written
= 0;
3353 IADDR UNUSED pc
= abuf
->addr
;
3354 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3357 SI opval
= GETMEMHI (current_cpu
, pc
, FLD (f_optdisp
));
3358 * FLD (i_dst
) = opval
;
3359 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3366 CASE (sem
, INSN_LDIS_INDIRECT_DISP
) : /* ldis $optdisp($abase), $dst */
3368 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3369 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3370 #define FLD(f) abuf->fields.fmt_ldis_indirect_disp.f
3371 int UNUSED written
= 0;
3372 IADDR UNUSED pc
= abuf
->addr
;
3373 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3376 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3377 * FLD (i_dst
) = opval
;
3378 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3385 CASE (sem
, INSN_LDIS_INDEX_DISP
) : /* ldis $optdisp[$index*S$scale], $dst */
3387 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3388 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3389 #define FLD(f) abuf->fields.fmt_ldis_index_disp.f
3390 int UNUSED written
= 0;
3391 IADDR UNUSED pc
= abuf
->addr
;
3392 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3395 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3396 * FLD (i_dst
) = opval
;
3397 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3404 CASE (sem
, INSN_LDIS_INDIRECT_INDEX_DISP
) : /* ldis $optdisp($abase)[$index*S$scale], $dst */
3406 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3407 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3408 #define FLD(f) abuf->fields.fmt_ldis_indirect_index_disp.f
3409 int UNUSED written
= 0;
3410 IADDR UNUSED pc
= abuf
->addr
;
3411 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3414 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3415 * FLD (i_dst
) = opval
;
3416 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3423 CASE (sem
, INSN_LDL_OFFSET
) : /* ldl $offset, $dst */
3425 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3426 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3427 #define FLD(f) abuf->fields.fmt_ldl_offset.f
3428 int UNUSED written
= 0;
3429 IADDR UNUSED pc
= abuf
->addr
;
3430 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3435 tmp_dregno
= FLD (f_srcdst
);
3436 tmp_temp
= FLD (f_offset
);
3438 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3439 * FLD (i_dst
) = opval
;
3440 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3443 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3444 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3445 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3453 CASE (sem
, INSN_LDL_INDIRECT_OFFSET
) : /* ldl $offset($abase), $dst */
3455 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3456 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3457 #define FLD(f) abuf->fields.fmt_ldl_indirect_offset.f
3458 int UNUSED written
= 0;
3459 IADDR UNUSED pc
= abuf
->addr
;
3460 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3465 tmp_dregno
= FLD (f_srcdst
);
3466 tmp_temp
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
3468 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3469 * FLD (i_dst
) = opval
;
3470 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3473 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3474 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3475 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3483 CASE (sem
, INSN_LDL_INDIRECT
) : /* ldl ($abase), $dst */
3485 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3486 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3487 #define FLD(f) abuf->fields.fmt_ldl_indirect.f
3488 int UNUSED written
= 0;
3489 IADDR UNUSED pc
= abuf
->addr
;
3490 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3495 tmp_dregno
= FLD (f_srcdst
);
3496 tmp_temp
= * FLD (i_abase
);
3498 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3499 * FLD (i_dst
) = opval
;
3500 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3503 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3504 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3505 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3513 CASE (sem
, INSN_LDL_INDIRECT_INDEX
) : /* ldl ($abase)[$index*S$scale], $dst */
3515 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3516 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3517 #define FLD(f) abuf->fields.fmt_ldl_indirect_index.f
3518 int UNUSED written
= 0;
3519 IADDR UNUSED pc
= abuf
->addr
;
3520 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3525 tmp_dregno
= FLD (f_srcdst
);
3526 tmp_temp
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3528 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3529 * FLD (i_dst
) = opval
;
3530 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3533 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3534 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3535 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3543 CASE (sem
, INSN_LDL_DISP
) : /* ldl $optdisp, $dst */
3545 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3546 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3547 #define FLD(f) abuf->fields.fmt_ldl_disp.f
3548 int UNUSED written
= 0;
3549 IADDR UNUSED pc
= abuf
->addr
;
3550 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3555 tmp_dregno
= FLD (f_srcdst
);
3556 tmp_temp
= FLD (f_optdisp
);
3558 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3559 * FLD (i_dst
) = opval
;
3560 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3563 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3564 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3565 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3573 CASE (sem
, INSN_LDL_INDIRECT_DISP
) : /* ldl $optdisp($abase), $dst */
3575 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3576 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3577 #define FLD(f) abuf->fields.fmt_ldl_indirect_disp.f
3578 int UNUSED written
= 0;
3579 IADDR UNUSED pc
= abuf
->addr
;
3580 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3585 tmp_dregno
= FLD (f_srcdst
);
3586 tmp_temp
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
3588 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3589 * FLD (i_dst
) = opval
;
3590 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3593 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3594 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3595 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3603 CASE (sem
, INSN_LDL_INDEX_DISP
) : /* ldl $optdisp[$index*S$scale], $dst */
3605 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3606 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3607 #define FLD(f) abuf->fields.fmt_ldl_index_disp.f
3608 int UNUSED written
= 0;
3609 IADDR UNUSED pc
= abuf
->addr
;
3610 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3615 tmp_dregno
= FLD (f_srcdst
);
3616 tmp_temp
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3618 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3619 * FLD (i_dst
) = opval
;
3620 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3623 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3624 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3625 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3633 CASE (sem
, INSN_LDL_INDIRECT_INDEX_DISP
) : /* ldl $optdisp($abase)[$index*S$scale], $dst */
3635 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3636 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3637 #define FLD(f) abuf->fields.fmt_ldl_indirect_index_disp.f
3638 int UNUSED written
= 0;
3639 IADDR UNUSED pc
= abuf
->addr
;
3640 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3645 tmp_dregno
= FLD (f_srcdst
);
3646 tmp_temp
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3648 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3649 * FLD (i_dst
) = opval
;
3650 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3653 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3654 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3655 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3663 CASE (sem
, INSN_LDT_OFFSET
) : /* ldt $offset, $dst */
3665 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3666 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3667 #define FLD(f) abuf->fields.fmt_ldt_offset.f
3668 int UNUSED written
= 0;
3669 IADDR UNUSED pc
= abuf
->addr
;
3670 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3675 tmp_dregno
= FLD (f_srcdst
);
3676 tmp_temp
= FLD (f_offset
);
3678 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3679 * FLD (i_dst
) = opval
;
3680 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3683 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3684 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3685 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3688 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3689 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3690 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
3698 CASE (sem
, INSN_LDT_INDIRECT_OFFSET
) : /* ldt $offset($abase), $dst */
3700 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3701 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3702 #define FLD(f) abuf->fields.fmt_ldt_indirect_offset.f
3703 int UNUSED written
= 0;
3704 IADDR UNUSED pc
= abuf
->addr
;
3705 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3710 tmp_dregno
= FLD (f_srcdst
);
3711 tmp_temp
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
3713 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3714 * FLD (i_dst
) = opval
;
3715 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3718 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3719 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3720 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3723 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3724 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3725 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
3733 CASE (sem
, INSN_LDT_INDIRECT
) : /* ldt ($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_ldt_indirect.f
3738 int UNUSED written
= 0;
3739 IADDR UNUSED pc
= abuf
->addr
;
3740 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3745 tmp_dregno
= FLD (f_srcdst
);
3746 tmp_temp
= * 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-const:-WI-1", 'x', opval
);
3758 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3759 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3760 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
3768 CASE (sem
, INSN_LDT_INDIRECT_INDEX
) : /* ldt ($abase)[$index*S$scale], $dst */
3770 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3771 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3772 #define FLD(f) abuf->fields.fmt_ldt_indirect_index.f
3773 int UNUSED written
= 0;
3774 IADDR UNUSED pc
= abuf
->addr
;
3775 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3780 tmp_dregno
= FLD (f_srcdst
);
3781 tmp_temp
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3783 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3784 * FLD (i_dst
) = opval
;
3785 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3788 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3789 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3790 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3793 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3794 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3795 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
3803 CASE (sem
, INSN_LDT_DISP
) : /* ldt $optdisp, $dst */
3805 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3806 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3807 #define FLD(f) abuf->fields.fmt_ldt_disp.f
3808 int UNUSED written
= 0;
3809 IADDR UNUSED pc
= abuf
->addr
;
3810 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3815 tmp_dregno
= FLD (f_srcdst
);
3816 tmp_temp
= FLD (f_optdisp
);
3818 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3819 * FLD (i_dst
) = opval
;
3820 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3823 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3824 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3825 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3828 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3829 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3830 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
3838 CASE (sem
, INSN_LDT_INDIRECT_DISP
) : /* ldt $optdisp($abase), $dst */
3840 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3841 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3842 #define FLD(f) abuf->fields.fmt_ldt_indirect_disp.f
3843 int UNUSED written
= 0;
3844 IADDR UNUSED pc
= abuf
->addr
;
3845 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3850 tmp_dregno
= FLD (f_srcdst
);
3851 tmp_temp
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
3853 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3854 * FLD (i_dst
) = opval
;
3855 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3858 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3859 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3860 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3863 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3864 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3865 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
3873 CASE (sem
, INSN_LDT_INDEX_DISP
) : /* ldt $optdisp[$index*S$scale], $dst */
3875 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3876 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3877 #define FLD(f) abuf->fields.fmt_ldt_index_disp.f
3878 int UNUSED written
= 0;
3879 IADDR UNUSED pc
= abuf
->addr
;
3880 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3885 tmp_dregno
= FLD (f_srcdst
);
3886 tmp_temp
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3888 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3889 * FLD (i_dst
) = opval
;
3890 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3893 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3894 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3895 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3898 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3899 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3900 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
3908 CASE (sem
, INSN_LDT_INDIRECT_INDEX_DISP
) : /* ldt $optdisp($abase)[$index*S$scale], $dst */
3910 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3911 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3912 #define FLD(f) abuf->fields.fmt_ldt_indirect_index_disp.f
3913 int UNUSED written
= 0;
3914 IADDR UNUSED pc
= abuf
->addr
;
3915 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3920 tmp_dregno
= FLD (f_srcdst
);
3921 tmp_temp
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3923 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3924 * FLD (i_dst
) = opval
;
3925 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3928 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3929 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3930 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3933 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3934 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3935 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
3943 CASE (sem
, INSN_LDQ_OFFSET
) : /* ldq $offset, $dst */
3945 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3946 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3947 #define FLD(f) abuf->fields.fmt_ldq_offset.f
3948 int UNUSED written
= 0;
3949 IADDR UNUSED pc
= abuf
->addr
;
3950 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3955 tmp_dregno
= FLD (f_srcdst
);
3956 tmp_temp
= FLD (f_offset
);
3958 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3959 * FLD (i_dst
) = opval
;
3960 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3963 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3964 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3965 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
3968 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3969 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3970 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
3973 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
3974 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
3975 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval
);
3983 CASE (sem
, INSN_LDQ_INDIRECT_OFFSET
) : /* ldq $offset($abase), $dst */
3985 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3986 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3987 #define FLD(f) abuf->fields.fmt_ldq_indirect_offset.f
3988 int UNUSED written
= 0;
3989 IADDR UNUSED pc
= abuf
->addr
;
3990 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3995 tmp_dregno
= FLD (f_srcdst
);
3996 tmp_temp
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
3998 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3999 * FLD (i_dst
) = opval
;
4000 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4003 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4004 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4005 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
4008 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4009 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4010 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
4013 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4014 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4015 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval
);
4023 CASE (sem
, INSN_LDQ_INDIRECT
) : /* ldq ($abase), $dst */
4025 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4026 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4027 #define FLD(f) abuf->fields.fmt_ldq_indirect.f
4028 int UNUSED written
= 0;
4029 IADDR UNUSED pc
= abuf
->addr
;
4030 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4035 tmp_dregno
= FLD (f_srcdst
);
4036 tmp_temp
= * FLD (i_abase
);
4038 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4039 * FLD (i_dst
) = opval
;
4040 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4043 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4044 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4045 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
4048 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4049 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4050 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
4053 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4054 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4055 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval
);
4063 CASE (sem
, INSN_LDQ_INDIRECT_INDEX
) : /* ldq ($abase)[$index*S$scale], $dst */
4065 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4066 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4067 #define FLD(f) abuf->fields.fmt_ldq_indirect_index.f
4068 int UNUSED written
= 0;
4069 IADDR UNUSED pc
= abuf
->addr
;
4070 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4075 tmp_dregno
= FLD (f_srcdst
);
4076 tmp_temp
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
4078 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4079 * FLD (i_dst
) = opval
;
4080 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4083 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4084 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4085 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-1", 'x', opval
);
4088 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4089 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4090 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-2", 'x', opval
);
4093 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4094 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4095 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-const:-WI-3", 'x', opval
);
4103 CASE (sem
, INSN_LDQ_DISP
) : /* ldq $optdisp, $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_disp.f
4108 int UNUSED written
= 0;
4109 IADDR UNUSED pc
= abuf
->addr
;
4110 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4115 tmp_dregno
= FLD (f_srcdst
);
4116 tmp_temp
= FLD (f_optdisp
);
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-const:-WI-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-const:-WI-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-const:-WI-3", 'x', opval
);
4143 CASE (sem
, INSN_LDQ_INDIRECT_DISP
) : /* ldq $optdisp($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_disp.f
4148 int UNUSED written
= 0;
4149 IADDR UNUSED pc
= abuf
->addr
;
4150 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4155 tmp_dregno
= FLD (f_srcdst
);
4156 tmp_temp
= ADDSI (FLD (f_optdisp
), * 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-const:-WI-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-const:-WI-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-const:-WI-3", 'x', opval
);
4183 CASE (sem
, INSN_LDQ_INDEX_DISP
) : /* ldq $optdisp[$index*S$scale], $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_index_disp.f
4188 int UNUSED written
= 0;
4189 IADDR UNUSED pc
= abuf
->addr
;
4190 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4195 tmp_dregno
= FLD (f_srcdst
);
4196 tmp_temp
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
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-const:-WI-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-const:-WI-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-const:-WI-3", 'x', opval
);
4223 CASE (sem
, INSN_LDQ_INDIRECT_INDEX_DISP
) : /* ldq $optdisp($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_disp.f
4228 int UNUSED written
= 0;
4229 IADDR UNUSED pc
= abuf
->addr
;
4230 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4235 tmp_dregno
= FLD (f_srcdst
);
4236 tmp_temp
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
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-const:-WI-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-const:-WI-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-const:-WI-3", 'x', opval
);
4263 CASE (sem
, INSN_ST_OFFSET
) : /* st $st_src, $offset */
4265 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4266 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4267 #define FLD(f) abuf->fields.fmt_st_offset.f
4268 int UNUSED written
= 0;
4269 IADDR UNUSED pc
= abuf
->addr
;
4270 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4273 SI opval
= * FLD (i_st_src
);
4274 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
4275 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4282 CASE (sem
, INSN_ST_INDIRECT_OFFSET
) : /* st $st_src, $offset($abase) */
4284 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4285 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4286 #define FLD(f) abuf->fields.fmt_st_indirect_offset.f
4287 int UNUSED written
= 0;
4288 IADDR UNUSED pc
= abuf
->addr
;
4289 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4292 SI opval
= * FLD (i_st_src
);
4293 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4294 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4301 CASE (sem
, INSN_ST_INDIRECT
) : /* st $st_src, ($abase) */
4303 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4304 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4305 #define FLD(f) abuf->fields.fmt_st_indirect.f
4306 int UNUSED written
= 0;
4307 IADDR UNUSED pc
= abuf
->addr
;
4308 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4311 SI opval
= * FLD (i_st_src
);
4312 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4313 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4320 CASE (sem
, INSN_ST_INDIRECT_INDEX
) : /* st $st_src, ($abase)[$index*S$scale] */
4322 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4323 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4324 #define FLD(f) abuf->fields.fmt_st_indirect_index.f
4325 int UNUSED written
= 0;
4326 IADDR UNUSED pc
= abuf
->addr
;
4327 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4330 SI opval
= * FLD (i_st_src
);
4331 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4332 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4339 CASE (sem
, INSN_ST_DISP
) : /* st $st_src, $optdisp */
4341 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4342 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4343 #define FLD(f) abuf->fields.fmt_st_disp.f
4344 int UNUSED written
= 0;
4345 IADDR UNUSED pc
= abuf
->addr
;
4346 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4349 SI opval
= * FLD (i_st_src
);
4350 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4351 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4358 CASE (sem
, INSN_ST_INDIRECT_DISP
) : /* st $st_src, $optdisp($abase) */
4360 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4361 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4362 #define FLD(f) abuf->fields.fmt_st_indirect_disp.f
4363 int UNUSED written
= 0;
4364 IADDR UNUSED pc
= abuf
->addr
;
4365 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4368 SI opval
= * FLD (i_st_src
);
4369 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4370 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4377 CASE (sem
, INSN_ST_INDEX_DISP
) : /* st $st_src, $optdisp[$index*S$scale */
4379 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4380 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4381 #define FLD(f) abuf->fields.fmt_st_index_disp.f
4382 int UNUSED written
= 0;
4383 IADDR UNUSED pc
= abuf
->addr
;
4384 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4387 SI opval
= * FLD (i_st_src
);
4388 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4389 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4396 CASE (sem
, INSN_ST_INDIRECT_INDEX_DISP
) : /* st $st_src, $optdisp($abase)[$index*S$scale] */
4398 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4399 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4400 #define FLD(f) abuf->fields.fmt_st_indirect_index_disp.f
4401 int UNUSED written
= 0;
4402 IADDR UNUSED pc
= abuf
->addr
;
4403 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4406 SI opval
= * FLD (i_st_src
);
4407 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4408 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4415 CASE (sem
, INSN_STOB_OFFSET
) : /* stob $st_src, $offset */
4417 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4418 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4419 #define FLD(f) abuf->fields.fmt_stob_offset.f
4420 int UNUSED written
= 0;
4421 IADDR UNUSED pc
= abuf
->addr
;
4422 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4425 QI opval
= * FLD (i_st_src
);
4426 SETMEMQI (current_cpu
, pc
, FLD (f_offset
), opval
);
4427 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4434 CASE (sem
, INSN_STOB_INDIRECT_OFFSET
) : /* stob $st_src, $offset($abase) */
4436 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4437 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4438 #define FLD(f) abuf->fields.fmt_stob_indirect_offset.f
4439 int UNUSED written
= 0;
4440 IADDR UNUSED pc
= abuf
->addr
;
4441 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4444 QI opval
= * FLD (i_st_src
);
4445 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4446 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4453 CASE (sem
, INSN_STOB_INDIRECT
) : /* stob $st_src, ($abase) */
4455 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4456 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4457 #define FLD(f) abuf->fields.fmt_stob_indirect.f
4458 int UNUSED written
= 0;
4459 IADDR UNUSED pc
= abuf
->addr
;
4460 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4463 QI opval
= * FLD (i_st_src
);
4464 SETMEMQI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4465 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4472 CASE (sem
, INSN_STOB_INDIRECT_INDEX
) : /* stob $st_src, ($abase)[$index*S$scale] */
4474 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4475 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4476 #define FLD(f) abuf->fields.fmt_stob_indirect_index.f
4477 int UNUSED written
= 0;
4478 IADDR UNUSED pc
= abuf
->addr
;
4479 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4482 QI opval
= * FLD (i_st_src
);
4483 SETMEMQI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4484 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4491 CASE (sem
, INSN_STOB_DISP
) : /* stob $st_src, $optdisp */
4493 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4494 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4495 #define FLD(f) abuf->fields.fmt_stob_disp.f
4496 int UNUSED written
= 0;
4497 IADDR UNUSED pc
= abuf
->addr
;
4498 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4501 QI opval
= * FLD (i_st_src
);
4502 SETMEMQI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4503 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4510 CASE (sem
, INSN_STOB_INDIRECT_DISP
) : /* stob $st_src, $optdisp($abase) */
4512 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4513 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4514 #define FLD(f) abuf->fields.fmt_stob_indirect_disp.f
4515 int UNUSED written
= 0;
4516 IADDR UNUSED pc
= abuf
->addr
;
4517 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4520 QI opval
= * FLD (i_st_src
);
4521 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4522 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4529 CASE (sem
, INSN_STOB_INDEX_DISP
) : /* stob $st_src, $optdisp[$index*S$scale */
4531 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4532 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4533 #define FLD(f) abuf->fields.fmt_stob_index_disp.f
4534 int UNUSED written
= 0;
4535 IADDR UNUSED pc
= abuf
->addr
;
4536 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4539 QI opval
= * FLD (i_st_src
);
4540 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4541 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4548 CASE (sem
, INSN_STOB_INDIRECT_INDEX_DISP
) : /* stob $st_src, $optdisp($abase)[$index*S$scale] */
4550 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4551 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4552 #define FLD(f) abuf->fields.fmt_stob_indirect_index_disp.f
4553 int UNUSED written
= 0;
4554 IADDR UNUSED pc
= abuf
->addr
;
4555 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4558 QI opval
= * FLD (i_st_src
);
4559 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4560 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4567 CASE (sem
, INSN_STOS_OFFSET
) : /* stos $st_src, $offset */
4569 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4570 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4571 #define FLD(f) abuf->fields.fmt_stos_offset.f
4572 int UNUSED written
= 0;
4573 IADDR UNUSED pc
= abuf
->addr
;
4574 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4577 HI opval
= * FLD (i_st_src
);
4578 SETMEMHI (current_cpu
, pc
, FLD (f_offset
), opval
);
4579 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4586 CASE (sem
, INSN_STOS_INDIRECT_OFFSET
) : /* stos $st_src, $offset($abase) */
4588 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4589 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4590 #define FLD(f) abuf->fields.fmt_stos_indirect_offset.f
4591 int UNUSED written
= 0;
4592 IADDR UNUSED pc
= abuf
->addr
;
4593 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4596 HI opval
= * FLD (i_st_src
);
4597 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4598 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4605 CASE (sem
, INSN_STOS_INDIRECT
) : /* stos $st_src, ($abase) */
4607 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4608 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4609 #define FLD(f) abuf->fields.fmt_stos_indirect.f
4610 int UNUSED written
= 0;
4611 IADDR UNUSED pc
= abuf
->addr
;
4612 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4615 HI opval
= * FLD (i_st_src
);
4616 SETMEMHI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4617 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4624 CASE (sem
, INSN_STOS_INDIRECT_INDEX
) : /* stos $st_src, ($abase)[$index*S$scale] */
4626 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4627 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4628 #define FLD(f) abuf->fields.fmt_stos_indirect_index.f
4629 int UNUSED written
= 0;
4630 IADDR UNUSED pc
= abuf
->addr
;
4631 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4634 HI opval
= * FLD (i_st_src
);
4635 SETMEMHI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4636 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4643 CASE (sem
, INSN_STOS_DISP
) : /* stos $st_src, $optdisp */
4645 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4646 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4647 #define FLD(f) abuf->fields.fmt_stos_disp.f
4648 int UNUSED written
= 0;
4649 IADDR UNUSED pc
= abuf
->addr
;
4650 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4653 HI opval
= * FLD (i_st_src
);
4654 SETMEMHI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4655 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4662 CASE (sem
, INSN_STOS_INDIRECT_DISP
) : /* stos $st_src, $optdisp($abase) */
4664 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4665 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4666 #define FLD(f) abuf->fields.fmt_stos_indirect_disp.f
4667 int UNUSED written
= 0;
4668 IADDR UNUSED pc
= abuf
->addr
;
4669 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4672 HI opval
= * FLD (i_st_src
);
4673 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4674 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4681 CASE (sem
, INSN_STOS_INDEX_DISP
) : /* stos $st_src, $optdisp[$index*S$scale */
4683 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4684 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4685 #define FLD(f) abuf->fields.fmt_stos_index_disp.f
4686 int UNUSED written
= 0;
4687 IADDR UNUSED pc
= abuf
->addr
;
4688 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4691 HI opval
= * FLD (i_st_src
);
4692 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4693 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4700 CASE (sem
, INSN_STOS_INDIRECT_INDEX_DISP
) : /* stos $st_src, $optdisp($abase)[$index*S$scale] */
4702 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4703 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4704 #define FLD(f) abuf->fields.fmt_stos_indirect_index_disp.f
4705 int UNUSED written
= 0;
4706 IADDR UNUSED pc
= abuf
->addr
;
4707 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4710 HI opval
= * FLD (i_st_src
);
4711 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4712 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4719 CASE (sem
, INSN_STL_OFFSET
) : /* stl $st_src, $offset */
4721 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4722 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4723 #define FLD(f) abuf->fields.fmt_stl_offset.f
4724 int UNUSED written
= 0;
4725 IADDR UNUSED pc
= abuf
->addr
;
4726 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4730 tmp_sregno
= FLD (f_srcdst
);
4732 SI opval
= * FLD (i_st_src
);
4733 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
4734 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4737 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4738 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 4), opval
);
4739 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4747 CASE (sem
, INSN_STL_INDIRECT_OFFSET
) : /* stl $st_src, $offset($abase) */
4749 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4750 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4751 #define FLD(f) abuf->fields.fmt_stl_indirect_offset.f
4752 int UNUSED written
= 0;
4753 IADDR UNUSED pc
= abuf
->addr
;
4754 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4758 tmp_sregno
= FLD (f_srcdst
);
4760 SI opval
= * FLD (i_st_src
);
4761 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4762 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4765 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4766 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 4), opval
);
4767 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4775 CASE (sem
, INSN_STL_INDIRECT
) : /* stl $st_src, ($abase) */
4777 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4778 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4779 #define FLD(f) abuf->fields.fmt_stl_indirect.f
4780 int UNUSED written
= 0;
4781 IADDR UNUSED pc
= abuf
->addr
;
4782 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4786 tmp_sregno
= FLD (f_srcdst
);
4788 SI opval
= * FLD (i_st_src
);
4789 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4790 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4793 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4794 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 4), opval
);
4795 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4803 CASE (sem
, INSN_STL_INDIRECT_INDEX
) : /* stl $st_src, ($abase)[$index*S$scale] */
4805 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4806 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4807 #define FLD(f) abuf->fields.fmt_stl_indirect_index.f
4808 int UNUSED written
= 0;
4809 IADDR UNUSED pc
= abuf
->addr
;
4810 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4814 tmp_sregno
= FLD (f_srcdst
);
4816 SI opval
= * FLD (i_st_src
);
4817 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4818 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4821 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4822 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
4823 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4831 CASE (sem
, INSN_STL_DISP
) : /* stl $st_src, $optdisp */
4833 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4834 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4835 #define FLD(f) abuf->fields.fmt_stl_disp.f
4836 int UNUSED written
= 0;
4837 IADDR UNUSED pc
= abuf
->addr
;
4838 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4842 tmp_sregno
= FLD (f_srcdst
);
4844 SI opval
= * FLD (i_st_src
);
4845 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4846 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4849 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4850 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 4), opval
);
4851 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4859 CASE (sem
, INSN_STL_INDIRECT_DISP
) : /* stl $st_src, $optdisp($abase) */
4861 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4862 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4863 #define FLD(f) abuf->fields.fmt_stl_indirect_disp.f
4864 int UNUSED written
= 0;
4865 IADDR UNUSED pc
= abuf
->addr
;
4866 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4870 tmp_sregno
= FLD (f_srcdst
);
4872 SI opval
= * FLD (i_st_src
);
4873 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4874 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4877 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4878 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 4), opval
);
4879 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4887 CASE (sem
, INSN_STL_INDEX_DISP
) : /* stl $st_src, $optdisp[$index*S$scale */
4889 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4890 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4891 #define FLD(f) abuf->fields.fmt_stl_index_disp.f
4892 int UNUSED written
= 0;
4893 IADDR UNUSED pc
= abuf
->addr
;
4894 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4898 tmp_sregno
= FLD (f_srcdst
);
4900 SI opval
= * FLD (i_st_src
);
4901 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4902 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4905 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4906 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
4907 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4915 CASE (sem
, INSN_STL_INDIRECT_INDEX_DISP
) : /* stl $st_src, $optdisp($abase)[$index*S$scale] */
4917 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4918 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4919 #define FLD(f) abuf->fields.fmt_stl_indirect_index_disp.f
4920 int UNUSED written
= 0;
4921 IADDR UNUSED pc
= abuf
->addr
;
4922 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4926 tmp_sregno
= FLD (f_srcdst
);
4928 SI opval
= * FLD (i_st_src
);
4929 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4930 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4933 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4934 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 4), opval
);
4935 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4943 CASE (sem
, INSN_STT_OFFSET
) : /* stt $st_src, $offset */
4945 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4946 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4947 #define FLD(f) abuf->fields.fmt_stt_offset.f
4948 int UNUSED written
= 0;
4949 IADDR UNUSED pc
= abuf
->addr
;
4950 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4954 tmp_sregno
= FLD (f_srcdst
);
4956 SI opval
= * FLD (i_st_src
);
4957 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
4958 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4961 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4962 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 4), opval
);
4963 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4966 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
4967 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 8), opval
);
4968 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4976 CASE (sem
, INSN_STT_INDIRECT_OFFSET
) : /* stt $st_src, $offset($abase) */
4978 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4979 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4980 #define FLD(f) abuf->fields.fmt_stt_indirect_offset.f
4981 int UNUSED written
= 0;
4982 IADDR UNUSED pc
= abuf
->addr
;
4983 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4987 tmp_sregno
= FLD (f_srcdst
);
4989 SI opval
= * FLD (i_st_src
);
4990 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4991 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4994 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4995 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 4), opval
);
4996 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4999 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5000 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 8), opval
);
5001 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5009 CASE (sem
, INSN_STT_INDIRECT
) : /* stt $st_src, ($abase) */
5011 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5012 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5013 #define FLD(f) abuf->fields.fmt_stt_indirect.f
5014 int UNUSED written
= 0;
5015 IADDR UNUSED pc
= abuf
->addr
;
5016 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5020 tmp_sregno
= FLD (f_srcdst
);
5022 SI opval
= * FLD (i_st_src
);
5023 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
5024 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5027 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5028 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 4), opval
);
5029 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5032 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5033 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 8), opval
);
5034 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5042 CASE (sem
, INSN_STT_INDIRECT_INDEX
) : /* stt $st_src, ($abase)[$index*S$scale] */
5044 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5045 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5046 #define FLD(f) abuf->fields.fmt_stt_indirect_index.f
5047 int UNUSED written
= 0;
5048 IADDR UNUSED pc
= abuf
->addr
;
5049 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5053 tmp_sregno
= FLD (f_srcdst
);
5055 SI opval
= * FLD (i_st_src
);
5056 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5057 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5060 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5061 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5062 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5065 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5066 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5067 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5075 CASE (sem
, INSN_STT_DISP
) : /* stt $st_src, $optdisp */
5077 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5078 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5079 #define FLD(f) abuf->fields.fmt_stt_disp.f
5080 int UNUSED written
= 0;
5081 IADDR UNUSED pc
= abuf
->addr
;
5082 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5086 tmp_sregno
= FLD (f_srcdst
);
5088 SI opval
= * FLD (i_st_src
);
5089 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
5090 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5093 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5094 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 4), opval
);
5095 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5098 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5099 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 8), opval
);
5100 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5108 CASE (sem
, INSN_STT_INDIRECT_DISP
) : /* stt $st_src, $optdisp($abase) */
5110 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5111 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5112 #define FLD(f) abuf->fields.fmt_stt_indirect_disp.f
5113 int UNUSED written
= 0;
5114 IADDR UNUSED pc
= abuf
->addr
;
5115 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5119 tmp_sregno
= FLD (f_srcdst
);
5121 SI opval
= * FLD (i_st_src
);
5122 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
5123 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5126 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5127 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 4), opval
);
5128 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5131 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5132 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 8), opval
);
5133 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5141 CASE (sem
, INSN_STT_INDEX_DISP
) : /* stt $st_src, $optdisp[$index*S$scale */
5143 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5144 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5145 #define FLD(f) abuf->fields.fmt_stt_index_disp.f
5146 int UNUSED written
= 0;
5147 IADDR UNUSED pc
= abuf
->addr
;
5148 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5152 tmp_sregno
= FLD (f_srcdst
);
5154 SI opval
= * FLD (i_st_src
);
5155 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5156 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5159 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5160 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5161 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5164 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5165 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5166 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5174 CASE (sem
, INSN_STT_INDIRECT_INDEX_DISP
) : /* stt $st_src, $optdisp($abase)[$index*S$scale] */
5176 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5177 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5178 #define FLD(f) abuf->fields.fmt_stt_indirect_index_disp.f
5179 int UNUSED written
= 0;
5180 IADDR UNUSED pc
= abuf
->addr
;
5181 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5185 tmp_sregno
= FLD (f_srcdst
);
5187 SI opval
= * FLD (i_st_src
);
5188 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
5189 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5192 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5193 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 4), opval
);
5194 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5197 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5198 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 8), opval
);
5199 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5207 CASE (sem
, INSN_STQ_OFFSET
) : /* stq $st_src, $offset */
5209 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5210 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5211 #define FLD(f) abuf->fields.fmt_stq_offset.f
5212 int UNUSED written
= 0;
5213 IADDR UNUSED pc
= abuf
->addr
;
5214 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5218 tmp_sregno
= FLD (f_srcdst
);
5220 SI opval
= * FLD (i_st_src
);
5221 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
5222 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5225 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5226 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 4), opval
);
5227 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5230 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5231 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 8), opval
);
5232 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5235 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5236 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 12), opval
);
5237 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5245 CASE (sem
, INSN_STQ_INDIRECT_OFFSET
) : /* stq $st_src, $offset($abase) */
5247 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5248 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5249 #define FLD(f) abuf->fields.fmt_stq_indirect_offset.f
5250 int UNUSED written
= 0;
5251 IADDR UNUSED pc
= abuf
->addr
;
5252 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5256 tmp_sregno
= FLD (f_srcdst
);
5258 SI opval
= * FLD (i_st_src
);
5259 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
5260 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5263 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5264 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 4), opval
);
5265 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5268 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5269 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 8), opval
);
5270 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5273 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5274 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 12), opval
);
5275 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5283 CASE (sem
, INSN_STQ_INDIRECT
) : /* stq $st_src, ($abase) */
5285 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5286 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5287 #define FLD(f) abuf->fields.fmt_stq_indirect.f
5288 int UNUSED written
= 0;
5289 IADDR UNUSED pc
= abuf
->addr
;
5290 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5294 tmp_sregno
= FLD (f_srcdst
);
5296 SI opval
= * FLD (i_st_src
);
5297 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
5298 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5301 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5302 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 4), opval
);
5303 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5306 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5307 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 8), opval
);
5308 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5311 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5312 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 12), opval
);
5313 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5321 CASE (sem
, INSN_STQ_INDIRECT_INDEX
) : /* stq $st_src, ($abase)[$index*S$scale] */
5323 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5324 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5325 #define FLD(f) abuf->fields.fmt_stq_indirect_index.f
5326 int UNUSED written
= 0;
5327 IADDR UNUSED pc
= abuf
->addr
;
5328 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5332 tmp_sregno
= FLD (f_srcdst
);
5334 SI opval
= * FLD (i_st_src
);
5335 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5336 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5339 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5340 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5341 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5344 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5345 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5346 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5349 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5350 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 12), opval
);
5351 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5359 CASE (sem
, INSN_STQ_DISP
) : /* stq $st_src, $optdisp */
5361 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5362 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5363 #define FLD(f) abuf->fields.fmt_stq_disp.f
5364 int UNUSED written
= 0;
5365 IADDR UNUSED pc
= abuf
->addr
;
5366 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5370 tmp_sregno
= FLD (f_srcdst
);
5372 SI opval
= * FLD (i_st_src
);
5373 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
5374 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5377 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5378 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 4), opval
);
5379 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5382 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5383 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 8), opval
);
5384 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5387 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5388 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 12), opval
);
5389 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5397 CASE (sem
, INSN_STQ_INDIRECT_DISP
) : /* stq $st_src, $optdisp($abase) */
5399 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5400 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5401 #define FLD(f) abuf->fields.fmt_stq_indirect_disp.f
5402 int UNUSED written
= 0;
5403 IADDR UNUSED pc
= abuf
->addr
;
5404 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5408 tmp_sregno
= FLD (f_srcdst
);
5410 SI opval
= * FLD (i_st_src
);
5411 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
5412 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5415 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5416 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 4), opval
);
5417 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5420 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5421 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 8), opval
);
5422 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5425 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5426 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 12), opval
);
5427 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5435 CASE (sem
, INSN_STQ_INDEX_DISP
) : /* stq $st_src, $optdisp[$index*S$scale */
5437 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5438 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5439 #define FLD(f) abuf->fields.fmt_stq_index_disp.f
5440 int UNUSED written
= 0;
5441 IADDR UNUSED pc
= abuf
->addr
;
5442 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5446 tmp_sregno
= FLD (f_srcdst
);
5448 SI opval
= * FLD (i_st_src
);
5449 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5450 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5453 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5454 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5455 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5458 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5459 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5460 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5463 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5464 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 12), opval
);
5465 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5473 CASE (sem
, INSN_STQ_INDIRECT_INDEX_DISP
) : /* stq $st_src, $optdisp($abase)[$index*S$scale] */
5475 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5476 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5477 #define FLD(f) abuf->fields.fmt_stq_indirect_index_disp.f
5478 int UNUSED written
= 0;
5479 IADDR UNUSED pc
= abuf
->addr
;
5480 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5484 tmp_sregno
= FLD (f_srcdst
);
5486 SI opval
= * FLD (i_st_src
);
5487 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
5488 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5491 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5492 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 4), opval
);
5493 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5496 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5497 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 8), opval
);
5498 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5501 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5502 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 12), opval
);
5503 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5511 CASE (sem
, INSN_CMPOBE_REG
) : /* cmpobe $br_src1, $br_src2, $br_disp */
5513 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5514 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5515 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5516 int UNUSED written
= 0;
5517 IADDR UNUSED pc
= abuf
->addr
;
5519 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5521 if (EQSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5523 USI opval
= FLD (i_br_disp
);
5524 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5525 written
|= (1 << 3);
5526 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5530 abuf
->written
= written
;
5531 SEM_BRANCH_FINI (vpc
);
5536 CASE (sem
, INSN_CMPOBE_LIT
) : /* cmpobe $br_lit1, $br_src2, $br_disp */
5538 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5539 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5540 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5541 int UNUSED written
= 0;
5542 IADDR UNUSED pc
= abuf
->addr
;
5544 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5546 if (EQSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5548 USI opval
= FLD (i_br_disp
);
5549 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5550 written
|= (1 << 3);
5551 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5555 abuf
->written
= written
;
5556 SEM_BRANCH_FINI (vpc
);
5561 CASE (sem
, INSN_CMPOBNE_REG
) : /* cmpobne $br_src1, $br_src2, $br_disp */
5563 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5564 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5565 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5566 int UNUSED written
= 0;
5567 IADDR UNUSED pc
= abuf
->addr
;
5569 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5571 if (NESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5573 USI opval
= FLD (i_br_disp
);
5574 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5575 written
|= (1 << 3);
5576 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5580 abuf
->written
= written
;
5581 SEM_BRANCH_FINI (vpc
);
5586 CASE (sem
, INSN_CMPOBNE_LIT
) : /* cmpobne $br_lit1, $br_src2, $br_disp */
5588 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5589 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5590 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5591 int UNUSED written
= 0;
5592 IADDR UNUSED pc
= abuf
->addr
;
5594 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5596 if (NESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5598 USI opval
= FLD (i_br_disp
);
5599 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5600 written
|= (1 << 3);
5601 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5605 abuf
->written
= written
;
5606 SEM_BRANCH_FINI (vpc
);
5611 CASE (sem
, INSN_CMPOBL_REG
) : /* cmpobl $br_src1, $br_src2, $br_disp */
5613 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5614 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5615 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
5616 int UNUSED written
= 0;
5617 IADDR UNUSED pc
= abuf
->addr
;
5619 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5621 if (LTUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5623 USI opval
= FLD (i_br_disp
);
5624 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5625 written
|= (1 << 3);
5626 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5630 abuf
->written
= written
;
5631 SEM_BRANCH_FINI (vpc
);
5636 CASE (sem
, INSN_CMPOBL_LIT
) : /* cmpobl $br_lit1, $br_src2, $br_disp */
5638 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5639 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5640 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
5641 int UNUSED written
= 0;
5642 IADDR UNUSED pc
= abuf
->addr
;
5644 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5646 if (LTUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5648 USI opval
= FLD (i_br_disp
);
5649 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5650 written
|= (1 << 3);
5651 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5655 abuf
->written
= written
;
5656 SEM_BRANCH_FINI (vpc
);
5661 CASE (sem
, INSN_CMPOBLE_REG
) : /* cmpoble $br_src1, $br_src2, $br_disp */
5663 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5664 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5665 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
5666 int UNUSED written
= 0;
5667 IADDR UNUSED pc
= abuf
->addr
;
5669 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5671 if (LEUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5673 USI opval
= FLD (i_br_disp
);
5674 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5675 written
|= (1 << 3);
5676 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5680 abuf
->written
= written
;
5681 SEM_BRANCH_FINI (vpc
);
5686 CASE (sem
, INSN_CMPOBLE_LIT
) : /* cmpoble $br_lit1, $br_src2, $br_disp */
5688 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5689 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5690 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
5691 int UNUSED written
= 0;
5692 IADDR UNUSED pc
= abuf
->addr
;
5694 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5696 if (LEUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5698 USI opval
= FLD (i_br_disp
);
5699 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5700 written
|= (1 << 3);
5701 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5705 abuf
->written
= written
;
5706 SEM_BRANCH_FINI (vpc
);
5711 CASE (sem
, INSN_CMPOBG_REG
) : /* cmpobg $br_src1, $br_src2, $br_disp */
5713 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5714 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5715 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
5716 int UNUSED written
= 0;
5717 IADDR UNUSED pc
= abuf
->addr
;
5719 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5721 if (GTUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5723 USI opval
= FLD (i_br_disp
);
5724 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5725 written
|= (1 << 3);
5726 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5730 abuf
->written
= written
;
5731 SEM_BRANCH_FINI (vpc
);
5736 CASE (sem
, INSN_CMPOBG_LIT
) : /* cmpobg $br_lit1, $br_src2, $br_disp */
5738 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5739 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5740 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
5741 int UNUSED written
= 0;
5742 IADDR UNUSED pc
= abuf
->addr
;
5744 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5746 if (GTUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5748 USI opval
= FLD (i_br_disp
);
5749 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5750 written
|= (1 << 3);
5751 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5755 abuf
->written
= written
;
5756 SEM_BRANCH_FINI (vpc
);
5761 CASE (sem
, INSN_CMPOBGE_REG
) : /* cmpobge $br_src1, $br_src2, $br_disp */
5763 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5764 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5765 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
5766 int UNUSED written
= 0;
5767 IADDR UNUSED pc
= abuf
->addr
;
5769 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5771 if (GEUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5773 USI opval
= FLD (i_br_disp
);
5774 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5775 written
|= (1 << 3);
5776 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5780 abuf
->written
= written
;
5781 SEM_BRANCH_FINI (vpc
);
5786 CASE (sem
, INSN_CMPOBGE_LIT
) : /* cmpobge $br_lit1, $br_src2, $br_disp */
5788 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5789 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5790 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
5791 int UNUSED written
= 0;
5792 IADDR UNUSED pc
= abuf
->addr
;
5794 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5796 if (GEUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5798 USI opval
= FLD (i_br_disp
);
5799 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5800 written
|= (1 << 3);
5801 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5805 abuf
->written
= written
;
5806 SEM_BRANCH_FINI (vpc
);
5811 CASE (sem
, INSN_CMPIBE_REG
) : /* cmpibe $br_src1, $br_src2, $br_disp */
5813 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5814 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5815 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5816 int UNUSED written
= 0;
5817 IADDR UNUSED pc
= abuf
->addr
;
5819 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5821 if (EQSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5823 USI opval
= FLD (i_br_disp
);
5824 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5825 written
|= (1 << 3);
5826 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5830 abuf
->written
= written
;
5831 SEM_BRANCH_FINI (vpc
);
5836 CASE (sem
, INSN_CMPIBE_LIT
) : /* cmpibe $br_lit1, $br_src2, $br_disp */
5838 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5839 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5840 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5841 int UNUSED written
= 0;
5842 IADDR UNUSED pc
= abuf
->addr
;
5844 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5846 if (EQSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5848 USI opval
= FLD (i_br_disp
);
5849 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5850 written
|= (1 << 3);
5851 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5855 abuf
->written
= written
;
5856 SEM_BRANCH_FINI (vpc
);
5861 CASE (sem
, INSN_CMPIBNE_REG
) : /* cmpibne $br_src1, $br_src2, $br_disp */
5863 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5864 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5865 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5866 int UNUSED written
= 0;
5867 IADDR UNUSED pc
= abuf
->addr
;
5869 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5871 if (NESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5873 USI opval
= FLD (i_br_disp
);
5874 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5875 written
|= (1 << 3);
5876 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5880 abuf
->written
= written
;
5881 SEM_BRANCH_FINI (vpc
);
5886 CASE (sem
, INSN_CMPIBNE_LIT
) : /* cmpibne $br_lit1, $br_src2, $br_disp */
5888 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5889 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5890 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5891 int UNUSED written
= 0;
5892 IADDR UNUSED pc
= abuf
->addr
;
5894 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5896 if (NESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5898 USI opval
= FLD (i_br_disp
);
5899 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5900 written
|= (1 << 3);
5901 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5905 abuf
->written
= written
;
5906 SEM_BRANCH_FINI (vpc
);
5911 CASE (sem
, INSN_CMPIBL_REG
) : /* cmpibl $br_src1, $br_src2, $br_disp */
5913 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5914 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5915 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5916 int UNUSED written
= 0;
5917 IADDR UNUSED pc
= abuf
->addr
;
5919 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5921 if (LTSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5923 USI opval
= FLD (i_br_disp
);
5924 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5925 written
|= (1 << 3);
5926 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5930 abuf
->written
= written
;
5931 SEM_BRANCH_FINI (vpc
);
5936 CASE (sem
, INSN_CMPIBL_LIT
) : /* cmpibl $br_lit1, $br_src2, $br_disp */
5938 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5939 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5940 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5941 int UNUSED written
= 0;
5942 IADDR UNUSED pc
= abuf
->addr
;
5944 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5946 if (LTSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5948 USI opval
= FLD (i_br_disp
);
5949 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5950 written
|= (1 << 3);
5951 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5955 abuf
->written
= written
;
5956 SEM_BRANCH_FINI (vpc
);
5961 CASE (sem
, INSN_CMPIBLE_REG
) : /* cmpible $br_src1, $br_src2, $br_disp */
5963 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5964 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5965 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5966 int UNUSED written
= 0;
5967 IADDR UNUSED pc
= abuf
->addr
;
5969 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5971 if (LESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5973 USI opval
= FLD (i_br_disp
);
5974 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
5975 written
|= (1 << 3);
5976 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5980 abuf
->written
= written
;
5981 SEM_BRANCH_FINI (vpc
);
5986 CASE (sem
, INSN_CMPIBLE_LIT
) : /* cmpible $br_lit1, $br_src2, $br_disp */
5988 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5989 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5990 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5991 int UNUSED written
= 0;
5992 IADDR UNUSED pc
= abuf
->addr
;
5994 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5996 if (LESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5998 USI opval
= FLD (i_br_disp
);
5999 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6000 written
|= (1 << 3);
6001 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6005 abuf
->written
= written
;
6006 SEM_BRANCH_FINI (vpc
);
6011 CASE (sem
, INSN_CMPIBG_REG
) : /* cmpibg $br_src1, $br_src2, $br_disp */
6013 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6014 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6015 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
6016 int UNUSED written
= 0;
6017 IADDR UNUSED pc
= abuf
->addr
;
6019 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6021 if (GTSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6023 USI opval
= FLD (i_br_disp
);
6024 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6025 written
|= (1 << 3);
6026 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6030 abuf
->written
= written
;
6031 SEM_BRANCH_FINI (vpc
);
6036 CASE (sem
, INSN_CMPIBG_LIT
) : /* cmpibg $br_lit1, $br_src2, $br_disp */
6038 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6039 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6040 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6041 int UNUSED written
= 0;
6042 IADDR UNUSED pc
= abuf
->addr
;
6044 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6046 if (GTSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6048 USI opval
= FLD (i_br_disp
);
6049 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6050 written
|= (1 << 3);
6051 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6055 abuf
->written
= written
;
6056 SEM_BRANCH_FINI (vpc
);
6061 CASE (sem
, INSN_CMPIBGE_REG
) : /* cmpibge $br_src1, $br_src2, $br_disp */
6063 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6064 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6065 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
6066 int UNUSED written
= 0;
6067 IADDR UNUSED pc
= abuf
->addr
;
6069 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6071 if (GESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6073 USI opval
= FLD (i_br_disp
);
6074 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6075 written
|= (1 << 3);
6076 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6080 abuf
->written
= written
;
6081 SEM_BRANCH_FINI (vpc
);
6086 CASE (sem
, INSN_CMPIBGE_LIT
) : /* cmpibge $br_lit1, $br_src2, $br_disp */
6088 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6089 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6090 #define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6091 int UNUSED written
= 0;
6092 IADDR UNUSED pc
= abuf
->addr
;
6094 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6096 if (GESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6098 USI opval
= FLD (i_br_disp
);
6099 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6100 written
|= (1 << 3);
6101 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6105 abuf
->written
= written
;
6106 SEM_BRANCH_FINI (vpc
);
6111 CASE (sem
, INSN_BBC_REG
) : /* bbc $br_src1, $br_src2, $br_disp */
6113 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6114 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6115 #define FLD(f) abuf->fields.cti.fields.fmt_bbc_reg.f
6116 int UNUSED written
= 0;
6117 IADDR UNUSED pc
= abuf
->addr
;
6119 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6121 if (EQSI (ANDSI (SLLSI (1, * FLD (i_br_src1
)), * FLD (i_br_src2
)), 0)) {
6123 USI opval
= FLD (i_br_disp
);
6124 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6125 written
|= (1 << 3);
6126 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6130 abuf
->written
= written
;
6131 SEM_BRANCH_FINI (vpc
);
6136 CASE (sem
, INSN_BBC_LIT
) : /* bbc $br_lit1, $br_src2, $br_disp */
6138 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6139 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6140 #define FLD(f) abuf->fields.cti.fields.fmt_bbc_lit.f
6141 int UNUSED written
= 0;
6142 IADDR UNUSED pc
= abuf
->addr
;
6144 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6146 if (EQSI (ANDSI (SLLSI (1, FLD (f_br_src1
)), * FLD (i_br_src2
)), 0)) {
6148 USI opval
= FLD (i_br_disp
);
6149 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6150 written
|= (1 << 3);
6151 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6155 abuf
->written
= written
;
6156 SEM_BRANCH_FINI (vpc
);
6161 CASE (sem
, INSN_BBS_REG
) : /* bbs $br_src1, $br_src2, $br_disp */
6163 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6164 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6165 #define FLD(f) abuf->fields.cti.fields.fmt_bbc_reg.f
6166 int UNUSED written
= 0;
6167 IADDR UNUSED pc
= abuf
->addr
;
6169 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6171 if (NESI (ANDSI (SLLSI (1, * FLD (i_br_src1
)), * FLD (i_br_src2
)), 0)) {
6173 USI opval
= FLD (i_br_disp
);
6174 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6175 written
|= (1 << 3);
6176 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6180 abuf
->written
= written
;
6181 SEM_BRANCH_FINI (vpc
);
6186 CASE (sem
, INSN_BBS_LIT
) : /* bbs $br_lit1, $br_src2, $br_disp */
6188 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6189 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6190 #define FLD(f) abuf->fields.cti.fields.fmt_bbc_lit.f
6191 int UNUSED written
= 0;
6192 IADDR UNUSED pc
= abuf
->addr
;
6194 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6196 if (NESI (ANDSI (SLLSI (1, FLD (f_br_src1
)), * FLD (i_br_src2
)), 0)) {
6198 USI opval
= FLD (i_br_disp
);
6199 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6200 written
|= (1 << 3);
6201 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6205 abuf
->written
= written
;
6206 SEM_BRANCH_FINI (vpc
);
6211 CASE (sem
, INSN_CMPI
) : /* cmpi $src1, $src2 */
6213 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6214 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6215 #define FLD(f) abuf->fields.fmt_cmpi.f
6216 int UNUSED written
= 0;
6217 IADDR UNUSED pc
= abuf
->addr
;
6218 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6221 SI opval
= (LTSI (* FLD (i_src1
), * FLD (i_src2
))) ? (4) : (EQSI (* FLD (i_src1
), * FLD (i_src2
))) ? (2) : (1);
6223 TRACE_RESULT (current_cpu
, abuf
, "cc-0", 'x', opval
);
6230 CASE (sem
, INSN_CMPI1
) : /* cmpi $lit1, $src2 */
6232 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6233 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6234 #define FLD(f) abuf->fields.fmt_cmpi1.f
6235 int UNUSED written
= 0;
6236 IADDR UNUSED pc
= abuf
->addr
;
6237 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6240 SI opval
= (LTSI (FLD (f_src1
), * FLD (i_src2
))) ? (4) : (EQSI (FLD (f_src1
), * FLD (i_src2
))) ? (2) : (1);
6242 TRACE_RESULT (current_cpu
, abuf
, "cc-0", 'x', opval
);
6249 CASE (sem
, INSN_CMPI2
) : /* cmpi $src1, $lit2 */
6251 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6252 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6253 #define FLD(f) abuf->fields.fmt_cmpi2.f
6254 int UNUSED written
= 0;
6255 IADDR UNUSED pc
= abuf
->addr
;
6256 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6259 SI opval
= (LTSI (* FLD (i_src1
), FLD (f_src2
))) ? (4) : (EQSI (* FLD (i_src1
), FLD (f_src2
))) ? (2) : (1);
6261 TRACE_RESULT (current_cpu
, abuf
, "cc-0", 'x', opval
);
6268 CASE (sem
, INSN_CMPI3
) : /* cmpi $lit1, $lit2 */
6270 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6271 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6272 #define FLD(f) abuf->fields.fmt_cmpi3.f
6273 int UNUSED written
= 0;
6274 IADDR UNUSED pc
= abuf
->addr
;
6275 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6278 SI opval
= (LTSI (FLD (f_src1
), FLD (f_src2
))) ? (4) : (EQSI (FLD (f_src1
), FLD (f_src2
))) ? (2) : (1);
6280 TRACE_RESULT (current_cpu
, abuf
, "cc-0", 'x', opval
);
6287 CASE (sem
, INSN_CMPO
) : /* cmpo $src1, $src2 */
6289 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6290 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6291 #define FLD(f) abuf->fields.fmt_cmpo.f
6292 int UNUSED written
= 0;
6293 IADDR UNUSED pc
= abuf
->addr
;
6294 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6297 SI opval
= (LTUSI (* FLD (i_src1
), * FLD (i_src2
))) ? (4) : (EQSI (* FLD (i_src1
), * FLD (i_src2
))) ? (2) : (1);
6299 TRACE_RESULT (current_cpu
, abuf
, "cc-0", 'x', opval
);
6306 CASE (sem
, INSN_CMPO1
) : /* cmpo $lit1, $src2 */
6308 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6309 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6310 #define FLD(f) abuf->fields.fmt_cmpo1.f
6311 int UNUSED written
= 0;
6312 IADDR UNUSED pc
= abuf
->addr
;
6313 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6316 SI opval
= (LTUSI (FLD (f_src1
), * FLD (i_src2
))) ? (4) : (EQSI (FLD (f_src1
), * FLD (i_src2
))) ? (2) : (1);
6318 TRACE_RESULT (current_cpu
, abuf
, "cc-0", 'x', opval
);
6325 CASE (sem
, INSN_CMPO2
) : /* cmpo $src1, $lit2 */
6327 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6328 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6329 #define FLD(f) abuf->fields.fmt_cmpo2.f
6330 int UNUSED written
= 0;
6331 IADDR UNUSED pc
= abuf
->addr
;
6332 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6335 SI opval
= (LTUSI (* FLD (i_src1
), FLD (f_src2
))) ? (4) : (EQSI (* FLD (i_src1
), FLD (f_src2
))) ? (2) : (1);
6337 TRACE_RESULT (current_cpu
, abuf
, "cc-0", 'x', opval
);
6344 CASE (sem
, INSN_CMPO3
) : /* cmpo $lit1, $lit2 */
6346 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6347 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6348 #define FLD(f) abuf->fields.fmt_cmpo3.f
6349 int UNUSED written
= 0;
6350 IADDR UNUSED pc
= abuf
->addr
;
6351 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6354 SI opval
= (LTUSI (FLD (f_src1
), FLD (f_src2
))) ? (4) : (EQSI (FLD (f_src1
), FLD (f_src2
))) ? (2) : (1);
6356 TRACE_RESULT (current_cpu
, abuf
, "cc-0", 'x', opval
);
6363 CASE (sem
, INSN_TESTNO_REG
) : /* testno $br_src1 */
6365 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6366 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6367 #define FLD(f) abuf->fields.fmt_testno_reg.f
6368 int UNUSED written
= 0;
6369 IADDR UNUSED pc
= abuf
->addr
;
6370 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6373 SI opval
= EQSI (CPU (h_cc
), 0);
6374 * FLD (i_br_src1
) = opval
;
6375 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6382 CASE (sem
, INSN_TESTG_REG
) : /* testg $br_src1 */
6384 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6385 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6386 #define FLD(f) abuf->fields.fmt_testno_reg.f
6387 int UNUSED written
= 0;
6388 IADDR UNUSED pc
= abuf
->addr
;
6389 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6392 SI opval
= NESI (ANDSI (CPU (h_cc
), 1), 0);
6393 * FLD (i_br_src1
) = opval
;
6394 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6401 CASE (sem
, INSN_TESTE_REG
) : /* teste $br_src1 */
6403 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6404 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6405 #define FLD(f) abuf->fields.fmt_testno_reg.f
6406 int UNUSED written
= 0;
6407 IADDR UNUSED pc
= abuf
->addr
;
6408 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6411 SI opval
= NESI (ANDSI (CPU (h_cc
), 2), 0);
6412 * FLD (i_br_src1
) = opval
;
6413 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6420 CASE (sem
, INSN_TESTGE_REG
) : /* testge $br_src1 */
6422 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6423 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6424 #define FLD(f) abuf->fields.fmt_testno_reg.f
6425 int UNUSED written
= 0;
6426 IADDR UNUSED pc
= abuf
->addr
;
6427 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6430 SI opval
= NESI (ANDSI (CPU (h_cc
), 3), 0);
6431 * FLD (i_br_src1
) = opval
;
6432 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6439 CASE (sem
, INSN_TESTL_REG
) : /* testl $br_src1 */
6441 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6442 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6443 #define FLD(f) abuf->fields.fmt_testno_reg.f
6444 int UNUSED written
= 0;
6445 IADDR UNUSED pc
= abuf
->addr
;
6446 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6449 SI opval
= NESI (ANDSI (CPU (h_cc
), 4), 0);
6450 * FLD (i_br_src1
) = opval
;
6451 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6458 CASE (sem
, INSN_TESTNE_REG
) : /* testne $br_src1 */
6460 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6461 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6462 #define FLD(f) abuf->fields.fmt_testno_reg.f
6463 int UNUSED written
= 0;
6464 IADDR UNUSED pc
= abuf
->addr
;
6465 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6468 SI opval
= NESI (ANDSI (CPU (h_cc
), 5), 0);
6469 * FLD (i_br_src1
) = opval
;
6470 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6477 CASE (sem
, INSN_TESTLE_REG
) : /* testle $br_src1 */
6479 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6480 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6481 #define FLD(f) abuf->fields.fmt_testno_reg.f
6482 int UNUSED written
= 0;
6483 IADDR UNUSED pc
= abuf
->addr
;
6484 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6487 SI opval
= NESI (ANDSI (CPU (h_cc
), 6), 0);
6488 * FLD (i_br_src1
) = opval
;
6489 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6496 CASE (sem
, INSN_TESTO_REG
) : /* testo $br_src1 */
6498 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6499 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6500 #define FLD(f) abuf->fields.fmt_testno_reg.f
6501 int UNUSED written
= 0;
6502 IADDR UNUSED pc
= abuf
->addr
;
6503 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6506 SI opval
= NESI (ANDSI (CPU (h_cc
), 7), 0);
6507 * FLD (i_br_src1
) = opval
;
6508 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6515 CASE (sem
, INSN_BNO
) : /* bno $ctrl_disp */
6517 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6518 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6519 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6520 int UNUSED written
= 0;
6521 IADDR UNUSED pc
= abuf
->addr
;
6523 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6525 if (EQSI (CPU (h_cc
), 0)) {
6527 USI opval
= FLD (i_ctrl_disp
);
6528 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6529 written
|= (1 << 2);
6530 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6534 abuf
->written
= written
;
6535 SEM_BRANCH_FINI (vpc
);
6540 CASE (sem
, INSN_BG
) : /* bg $ctrl_disp */
6542 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6543 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6544 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6545 int UNUSED written
= 0;
6546 IADDR UNUSED pc
= abuf
->addr
;
6548 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6550 if (NESI (ANDSI (CPU (h_cc
), 1), 0)) {
6552 USI opval
= FLD (i_ctrl_disp
);
6553 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6554 written
|= (1 << 2);
6555 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6559 abuf
->written
= written
;
6560 SEM_BRANCH_FINI (vpc
);
6565 CASE (sem
, INSN_BE
) : /* be $ctrl_disp */
6567 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6568 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6569 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6570 int UNUSED written
= 0;
6571 IADDR UNUSED pc
= abuf
->addr
;
6573 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6575 if (NESI (ANDSI (CPU (h_cc
), 2), 0)) {
6577 USI opval
= FLD (i_ctrl_disp
);
6578 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6579 written
|= (1 << 2);
6580 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6584 abuf
->written
= written
;
6585 SEM_BRANCH_FINI (vpc
);
6590 CASE (sem
, INSN_BGE
) : /* bge $ctrl_disp */
6592 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6593 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6594 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6595 int UNUSED written
= 0;
6596 IADDR UNUSED pc
= abuf
->addr
;
6598 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6600 if (NESI (ANDSI (CPU (h_cc
), 3), 0)) {
6602 USI opval
= FLD (i_ctrl_disp
);
6603 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6604 written
|= (1 << 2);
6605 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6609 abuf
->written
= written
;
6610 SEM_BRANCH_FINI (vpc
);
6615 CASE (sem
, INSN_BL
) : /* bl $ctrl_disp */
6617 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6618 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6619 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6620 int UNUSED written
= 0;
6621 IADDR UNUSED pc
= abuf
->addr
;
6623 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6625 if (NESI (ANDSI (CPU (h_cc
), 4), 0)) {
6627 USI opval
= FLD (i_ctrl_disp
);
6628 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6629 written
|= (1 << 2);
6630 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6634 abuf
->written
= written
;
6635 SEM_BRANCH_FINI (vpc
);
6640 CASE (sem
, INSN_BNE
) : /* bne $ctrl_disp */
6642 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6643 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6644 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6645 int UNUSED written
= 0;
6646 IADDR UNUSED pc
= abuf
->addr
;
6648 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6650 if (NESI (ANDSI (CPU (h_cc
), 5), 0)) {
6652 USI opval
= FLD (i_ctrl_disp
);
6653 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6654 written
|= (1 << 2);
6655 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6659 abuf
->written
= written
;
6660 SEM_BRANCH_FINI (vpc
);
6665 CASE (sem
, INSN_BLE
) : /* ble $ctrl_disp */
6667 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6668 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6669 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6670 int UNUSED written
= 0;
6671 IADDR UNUSED pc
= abuf
->addr
;
6673 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6675 if (NESI (ANDSI (CPU (h_cc
), 6), 0)) {
6677 USI opval
= FLD (i_ctrl_disp
);
6678 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6679 written
|= (1 << 2);
6680 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6684 abuf
->written
= written
;
6685 SEM_BRANCH_FINI (vpc
);
6690 CASE (sem
, INSN_BO
) : /* bo $ctrl_disp */
6692 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6693 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6694 #define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6695 int UNUSED written
= 0;
6696 IADDR UNUSED pc
= abuf
->addr
;
6698 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6700 if (NESI (ANDSI (CPU (h_cc
), 7), 0)) {
6702 USI opval
= FLD (i_ctrl_disp
);
6703 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6704 written
|= (1 << 2);
6705 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6709 abuf
->written
= written
;
6710 SEM_BRANCH_FINI (vpc
);
6715 CASE (sem
, INSN_B
) : /* b $ctrl_disp */
6717 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6718 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6719 #define FLD(f) abuf->fields.cti.fields.fmt_b.f
6720 int UNUSED written
= 0;
6721 IADDR UNUSED pc
= abuf
->addr
;
6723 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6726 USI opval
= FLD (i_ctrl_disp
);
6727 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6728 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6731 SEM_BRANCH_FINI (vpc
);
6736 CASE (sem
, INSN_BX_INDIRECT_OFFSET
) : /* bx $offset($abase) */
6738 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6739 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6740 #define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect_offset.f
6741 int UNUSED written
= 0;
6742 IADDR UNUSED pc
= abuf
->addr
;
6744 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6747 USI opval
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
6748 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
6749 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6752 SEM_BRANCH_FINI (vpc
);
6757 CASE (sem
, INSN_BX_INDIRECT
) : /* bx ($abase) */
6759 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6760 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6761 #define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect.f
6762 int UNUSED written
= 0;
6763 IADDR UNUSED pc
= abuf
->addr
;
6765 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6768 USI opval
= * FLD (i_abase
);
6769 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
6770 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6773 SEM_BRANCH_FINI (vpc
);
6778 CASE (sem
, INSN_BX_INDIRECT_INDEX
) : /* bx ($abase)[$index*S$scale] */
6780 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6781 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6782 #define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect_index.f
6783 int UNUSED written
= 0;
6784 IADDR UNUSED pc
= abuf
->addr
;
6786 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6789 USI opval
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
6790 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
6791 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6794 SEM_BRANCH_FINI (vpc
);
6799 CASE (sem
, INSN_BX_DISP
) : /* bx $optdisp */
6801 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6802 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6803 #define FLD(f) abuf->fields.cti.fields.fmt_bx_disp.f
6804 int UNUSED written
= 0;
6805 IADDR UNUSED pc
= abuf
->addr
;
6807 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
6810 USI opval
= FLD (f_optdisp
);
6811 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6812 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6815 SEM_BRANCH_FINI (vpc
);
6820 CASE (sem
, INSN_BX_INDIRECT_DISP
) : /* bx $optdisp($abase) */
6822 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6823 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6824 #define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect_disp.f
6825 int UNUSED written
= 0;
6826 IADDR UNUSED pc
= abuf
->addr
;
6828 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
6831 USI opval
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
6832 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
6833 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6836 SEM_BRANCH_FINI (vpc
);
6841 CASE (sem
, INSN_CALLX_DISP
) : /* callx $optdisp */
6843 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6844 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6845 #define FLD(f) abuf->fields.cti.fields.fmt_callx_disp.f
6846 int UNUSED written
= 0;
6847 IADDR UNUSED pc
= abuf
->addr
;
6849 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
6853 tmp_temp
= ANDSI (ADDSI (CPU (h_gr
[((UINT
) 1)]), 63), INVSI (63));
6855 SI opval
= ADDSI (pc
, 8);
6856 CPU (h_gr
[((UINT
) 2)]) = opval
;
6857 TRACE_RESULT (current_cpu
, abuf
, "gr-2", 'x', opval
);
6859 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0), CPU (h_gr
[((UINT
) 0)]));
6860 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4), CPU (h_gr
[((UINT
) 1)]));
6861 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8), CPU (h_gr
[((UINT
) 2)]));
6862 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12), CPU (h_gr
[((UINT
) 3)]));
6863 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16), CPU (h_gr
[((UINT
) 4)]));
6864 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20), CPU (h_gr
[((UINT
) 5)]));
6865 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24), CPU (h_gr
[((UINT
) 6)]));
6866 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28), CPU (h_gr
[((UINT
) 7)]));
6867 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32), CPU (h_gr
[((UINT
) 8)]));
6868 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36), CPU (h_gr
[((UINT
) 9)]));
6869 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40), CPU (h_gr
[((UINT
) 10)]));
6870 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44), CPU (h_gr
[((UINT
) 11)]));
6871 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48), CPU (h_gr
[((UINT
) 12)]));
6872 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52), CPU (h_gr
[((UINT
) 13)]));
6873 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56), CPU (h_gr
[((UINT
) 14)]));
6874 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60), CPU (h_gr
[((UINT
) 15)]));
6876 USI opval
= FLD (f_optdisp
);
6877 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
, SEM_BRANCH_ADDR_CACHE (sem_arg
));
6878 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6880 CPU (h_gr
[((UINT
) 0)]) = 0xdeadbeef;
6881 CPU (h_gr
[((UINT
) 1)]) = 0xdeadbeef;
6882 CPU (h_gr
[((UINT
) 2)]) = 0xdeadbeef;
6883 CPU (h_gr
[((UINT
) 3)]) = 0xdeadbeef;
6884 CPU (h_gr
[((UINT
) 4)]) = 0xdeadbeef;
6885 CPU (h_gr
[((UINT
) 5)]) = 0xdeadbeef;
6886 CPU (h_gr
[((UINT
) 6)]) = 0xdeadbeef;
6887 CPU (h_gr
[((UINT
) 7)]) = 0xdeadbeef;
6888 CPU (h_gr
[((UINT
) 8)]) = 0xdeadbeef;
6889 CPU (h_gr
[((UINT
) 9)]) = 0xdeadbeef;
6890 CPU (h_gr
[((UINT
) 10)]) = 0xdeadbeef;
6891 CPU (h_gr
[((UINT
) 11)]) = 0xdeadbeef;
6892 CPU (h_gr
[((UINT
) 12)]) = 0xdeadbeef;
6893 CPU (h_gr
[((UINT
) 13)]) = 0xdeadbeef;
6894 CPU (h_gr
[((UINT
) 14)]) = 0xdeadbeef;
6895 CPU (h_gr
[((UINT
) 15)]) = 0xdeadbeef;
6897 SI opval
= CPU (h_gr
[((UINT
) 31)]);
6898 CPU (h_gr
[((UINT
) 0)]) = opval
;
6899 TRACE_RESULT (current_cpu
, abuf
, "gr-0", 'x', opval
);
6902 SI opval
= tmp_temp
;
6903 CPU (h_gr
[((UINT
) 31)]) = opval
;
6904 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
6907 SI opval
= ADDSI (tmp_temp
, 64);
6908 CPU (h_gr
[((UINT
) 1)]) = opval
;
6909 TRACE_RESULT (current_cpu
, abuf
, "gr-1", 'x', opval
);
6913 SEM_BRANCH_FINI (vpc
);
6918 CASE (sem
, INSN_CALLX_INDIRECT
) : /* callx ($abase) */
6920 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6921 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6922 #define FLD(f) abuf->fields.cti.fields.fmt_callx_indirect.f
6923 int UNUSED written
= 0;
6924 IADDR UNUSED pc
= abuf
->addr
;
6926 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6930 tmp_temp
= ANDSI (ADDSI (CPU (h_gr
[((UINT
) 1)]), 63), INVSI (63));
6932 SI opval
= ADDSI (pc
, 4);
6933 CPU (h_gr
[((UINT
) 2)]) = opval
;
6934 TRACE_RESULT (current_cpu
, abuf
, "gr-2", 'x', opval
);
6936 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0), CPU (h_gr
[((UINT
) 0)]));
6937 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4), CPU (h_gr
[((UINT
) 1)]));
6938 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8), CPU (h_gr
[((UINT
) 2)]));
6939 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12), CPU (h_gr
[((UINT
) 3)]));
6940 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16), CPU (h_gr
[((UINT
) 4)]));
6941 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20), CPU (h_gr
[((UINT
) 5)]));
6942 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24), CPU (h_gr
[((UINT
) 6)]));
6943 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28), CPU (h_gr
[((UINT
) 7)]));
6944 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32), CPU (h_gr
[((UINT
) 8)]));
6945 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36), CPU (h_gr
[((UINT
) 9)]));
6946 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40), CPU (h_gr
[((UINT
) 10)]));
6947 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44), CPU (h_gr
[((UINT
) 11)]));
6948 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48), CPU (h_gr
[((UINT
) 12)]));
6949 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52), CPU (h_gr
[((UINT
) 13)]));
6950 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56), CPU (h_gr
[((UINT
) 14)]));
6951 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60), CPU (h_gr
[((UINT
) 15)]));
6953 USI opval
= * FLD (i_abase
);
6954 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
6955 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6957 CPU (h_gr
[((UINT
) 0)]) = 0xdeadbeef;
6958 CPU (h_gr
[((UINT
) 1)]) = 0xdeadbeef;
6959 CPU (h_gr
[((UINT
) 2)]) = 0xdeadbeef;
6960 CPU (h_gr
[((UINT
) 3)]) = 0xdeadbeef;
6961 CPU (h_gr
[((UINT
) 4)]) = 0xdeadbeef;
6962 CPU (h_gr
[((UINT
) 5)]) = 0xdeadbeef;
6963 CPU (h_gr
[((UINT
) 6)]) = 0xdeadbeef;
6964 CPU (h_gr
[((UINT
) 7)]) = 0xdeadbeef;
6965 CPU (h_gr
[((UINT
) 8)]) = 0xdeadbeef;
6966 CPU (h_gr
[((UINT
) 9)]) = 0xdeadbeef;
6967 CPU (h_gr
[((UINT
) 10)]) = 0xdeadbeef;
6968 CPU (h_gr
[((UINT
) 11)]) = 0xdeadbeef;
6969 CPU (h_gr
[((UINT
) 12)]) = 0xdeadbeef;
6970 CPU (h_gr
[((UINT
) 13)]) = 0xdeadbeef;
6971 CPU (h_gr
[((UINT
) 14)]) = 0xdeadbeef;
6972 CPU (h_gr
[((UINT
) 15)]) = 0xdeadbeef;
6974 SI opval
= CPU (h_gr
[((UINT
) 31)]);
6975 CPU (h_gr
[((UINT
) 0)]) = opval
;
6976 TRACE_RESULT (current_cpu
, abuf
, "gr-0", 'x', opval
);
6979 SI opval
= tmp_temp
;
6980 CPU (h_gr
[((UINT
) 31)]) = opval
;
6981 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
6984 SI opval
= ADDSI (tmp_temp
, 64);
6985 CPU (h_gr
[((UINT
) 1)]) = opval
;
6986 TRACE_RESULT (current_cpu
, abuf
, "gr-1", 'x', opval
);
6990 SEM_BRANCH_FINI (vpc
);
6995 CASE (sem
, INSN_CALLX_INDIRECT_OFFSET
) : /* callx $offset($abase) */
6997 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6998 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6999 #define FLD(f) abuf->fields.cti.fields.fmt_callx_indirect_offset.f
7000 int UNUSED written
= 0;
7001 IADDR UNUSED pc
= abuf
->addr
;
7003 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7007 tmp_temp
= ANDSI (ADDSI (CPU (h_gr
[((UINT
) 1)]), 63), INVSI (63));
7009 SI opval
= ADDSI (pc
, 4);
7010 CPU (h_gr
[((UINT
) 2)]) = opval
;
7011 TRACE_RESULT (current_cpu
, abuf
, "gr-2", 'x', opval
);
7013 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0), CPU (h_gr
[((UINT
) 0)]));
7014 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4), CPU (h_gr
[((UINT
) 1)]));
7015 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8), CPU (h_gr
[((UINT
) 2)]));
7016 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12), CPU (h_gr
[((UINT
) 3)]));
7017 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16), CPU (h_gr
[((UINT
) 4)]));
7018 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20), CPU (h_gr
[((UINT
) 5)]));
7019 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24), CPU (h_gr
[((UINT
) 6)]));
7020 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28), CPU (h_gr
[((UINT
) 7)]));
7021 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32), CPU (h_gr
[((UINT
) 8)]));
7022 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36), CPU (h_gr
[((UINT
) 9)]));
7023 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40), CPU (h_gr
[((UINT
) 10)]));
7024 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44), CPU (h_gr
[((UINT
) 11)]));
7025 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48), CPU (h_gr
[((UINT
) 12)]));
7026 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52), CPU (h_gr
[((UINT
) 13)]));
7027 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56), CPU (h_gr
[((UINT
) 14)]));
7028 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60), CPU (h_gr
[((UINT
) 15)]));
7030 USI opval
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
7031 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7032 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7034 CPU (h_gr
[((UINT
) 0)]) = 0xdeadbeef;
7035 CPU (h_gr
[((UINT
) 1)]) = 0xdeadbeef;
7036 CPU (h_gr
[((UINT
) 2)]) = 0xdeadbeef;
7037 CPU (h_gr
[((UINT
) 3)]) = 0xdeadbeef;
7038 CPU (h_gr
[((UINT
) 4)]) = 0xdeadbeef;
7039 CPU (h_gr
[((UINT
) 5)]) = 0xdeadbeef;
7040 CPU (h_gr
[((UINT
) 6)]) = 0xdeadbeef;
7041 CPU (h_gr
[((UINT
) 7)]) = 0xdeadbeef;
7042 CPU (h_gr
[((UINT
) 8)]) = 0xdeadbeef;
7043 CPU (h_gr
[((UINT
) 9)]) = 0xdeadbeef;
7044 CPU (h_gr
[((UINT
) 10)]) = 0xdeadbeef;
7045 CPU (h_gr
[((UINT
) 11)]) = 0xdeadbeef;
7046 CPU (h_gr
[((UINT
) 12)]) = 0xdeadbeef;
7047 CPU (h_gr
[((UINT
) 13)]) = 0xdeadbeef;
7048 CPU (h_gr
[((UINT
) 14)]) = 0xdeadbeef;
7049 CPU (h_gr
[((UINT
) 15)]) = 0xdeadbeef;
7051 SI opval
= CPU (h_gr
[((UINT
) 31)]);
7052 CPU (h_gr
[((UINT
) 0)]) = opval
;
7053 TRACE_RESULT (current_cpu
, abuf
, "gr-0", 'x', opval
);
7056 SI opval
= tmp_temp
;
7057 CPU (h_gr
[((UINT
) 31)]) = opval
;
7058 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7061 SI opval
= ADDSI (tmp_temp
, 64);
7062 CPU (h_gr
[((UINT
) 1)]) = opval
;
7063 TRACE_RESULT (current_cpu
, abuf
, "gr-1", 'x', opval
);
7067 SEM_BRANCH_FINI (vpc
);
7072 CASE (sem
, INSN_RET
) : /* ret */
7074 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7075 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7076 #define FLD(f) abuf->fields.cti.fields.fmt_ret.f
7077 int UNUSED written
= 0;
7078 IADDR UNUSED pc
= abuf
->addr
;
7080 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7084 SI opval
= CPU (h_gr
[((UINT
) 0)]);
7085 CPU (h_gr
[((UINT
) 31)]) = opval
;
7086 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7088 CPU (h_gr
[((UINT
) 0)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0));
7089 CPU (h_gr
[((UINT
) 1)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4));
7090 CPU (h_gr
[((UINT
) 2)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8));
7091 CPU (h_gr
[((UINT
) 3)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12));
7092 CPU (h_gr
[((UINT
) 4)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16));
7093 CPU (h_gr
[((UINT
) 5)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20));
7094 CPU (h_gr
[((UINT
) 6)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24));
7095 CPU (h_gr
[((UINT
) 7)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28));
7096 CPU (h_gr
[((UINT
) 8)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32));
7097 CPU (h_gr
[((UINT
) 9)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36));
7098 CPU (h_gr
[((UINT
) 10)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40));
7099 CPU (h_gr
[((UINT
) 11)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44));
7100 CPU (h_gr
[((UINT
) 12)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48));
7101 CPU (h_gr
[((UINT
) 13)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52));
7102 CPU (h_gr
[((UINT
) 14)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56));
7103 CPU (h_gr
[((UINT
) 15)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60));
7105 USI opval
= CPU (h_gr
[((UINT
) 2)]);
7106 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7107 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7111 SEM_BRANCH_FINI (vpc
);
7116 CASE (sem
, INSN_CALLS
) : /* calls $src1 */
7118 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7119 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7120 #define FLD(f) abuf->fields.cti.fields.fmt_calls.f
7121 int UNUSED written
= 0;
7122 IADDR UNUSED pc
= abuf
->addr
;
7124 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7127 SI opval
= i960_trap (current_cpu
, pc
, * FLD (i_src1
));
7128 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7129 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7132 SEM_BRANCH_FINI (vpc
);
7137 CASE (sem
, INSN_FMARK
) : /* fmark */
7139 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7140 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7141 #define FLD(f) abuf->fields.cti.fields.fmt_fmark.f
7142 int UNUSED written
= 0;
7143 IADDR UNUSED pc
= abuf
->addr
;
7145 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7148 SI opval
= i960_breakpoint (current_cpu
, pc
);
7149 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7150 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7153 SEM_BRANCH_FINI (vpc
);
7158 CASE (sem
, INSN_FLUSHREG
) : /* flushreg */
7160 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7161 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7162 #define FLD(f) abuf->fields.fmt_flushreg.f
7163 int UNUSED written
= 0;
7164 IADDR UNUSED pc
= abuf
->addr
;
7165 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7167 do { } while (0); /*nop*/
7175 ENDSWITCH (sem
) /* End of semantic switch. */
7177 /* At this point `vpc' contains the next insn to execute. */
7180 #undef DEFINE_SWITCH
7181 #endif /* DEFINE_SWITCH */