1 /* Simulator instruction semantics for i960base.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
7 This file is part of the GNU Simulators.
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
27 /* The labels have the case they have because the enum of insn types
28 is all uppercase and in the non-stdc case the insn symbol is built
29 into the enum name. */
35 { I960BASE_INSN_X_INVALID
, && case_sem_INSN_X_INVALID
},
36 { I960BASE_INSN_X_AFTER
, && case_sem_INSN_X_AFTER
},
37 { I960BASE_INSN_X_BEFORE
, && case_sem_INSN_X_BEFORE
},
38 { I960BASE_INSN_X_CTI_CHAIN
, && case_sem_INSN_X_CTI_CHAIN
},
39 { I960BASE_INSN_X_CHAIN
, && case_sem_INSN_X_CHAIN
},
40 { I960BASE_INSN_X_BEGIN
, && case_sem_INSN_X_BEGIN
},
41 { I960BASE_INSN_MULO
, && case_sem_INSN_MULO
},
42 { I960BASE_INSN_MULO1
, && case_sem_INSN_MULO1
},
43 { I960BASE_INSN_MULO2
, && case_sem_INSN_MULO2
},
44 { I960BASE_INSN_MULO3
, && case_sem_INSN_MULO3
},
45 { I960BASE_INSN_REMO
, && case_sem_INSN_REMO
},
46 { I960BASE_INSN_REMO1
, && case_sem_INSN_REMO1
},
47 { I960BASE_INSN_REMO2
, && case_sem_INSN_REMO2
},
48 { I960BASE_INSN_REMO3
, && case_sem_INSN_REMO3
},
49 { I960BASE_INSN_DIVO
, && case_sem_INSN_DIVO
},
50 { I960BASE_INSN_DIVO1
, && case_sem_INSN_DIVO1
},
51 { I960BASE_INSN_DIVO2
, && case_sem_INSN_DIVO2
},
52 { I960BASE_INSN_DIVO3
, && case_sem_INSN_DIVO3
},
53 { I960BASE_INSN_REMI
, && case_sem_INSN_REMI
},
54 { I960BASE_INSN_REMI1
, && case_sem_INSN_REMI1
},
55 { I960BASE_INSN_REMI2
, && case_sem_INSN_REMI2
},
56 { I960BASE_INSN_REMI3
, && case_sem_INSN_REMI3
},
57 { I960BASE_INSN_DIVI
, && case_sem_INSN_DIVI
},
58 { I960BASE_INSN_DIVI1
, && case_sem_INSN_DIVI1
},
59 { I960BASE_INSN_DIVI2
, && case_sem_INSN_DIVI2
},
60 { I960BASE_INSN_DIVI3
, && case_sem_INSN_DIVI3
},
61 { I960BASE_INSN_ADDO
, && case_sem_INSN_ADDO
},
62 { I960BASE_INSN_ADDO1
, && case_sem_INSN_ADDO1
},
63 { I960BASE_INSN_ADDO2
, && case_sem_INSN_ADDO2
},
64 { I960BASE_INSN_ADDO3
, && case_sem_INSN_ADDO3
},
65 { I960BASE_INSN_SUBO
, && case_sem_INSN_SUBO
},
66 { I960BASE_INSN_SUBO1
, && case_sem_INSN_SUBO1
},
67 { I960BASE_INSN_SUBO2
, && case_sem_INSN_SUBO2
},
68 { I960BASE_INSN_SUBO3
, && case_sem_INSN_SUBO3
},
69 { I960BASE_INSN_NOTBIT
, && case_sem_INSN_NOTBIT
},
70 { I960BASE_INSN_NOTBIT1
, && case_sem_INSN_NOTBIT1
},
71 { I960BASE_INSN_NOTBIT2
, && case_sem_INSN_NOTBIT2
},
72 { I960BASE_INSN_NOTBIT3
, && case_sem_INSN_NOTBIT3
},
73 { I960BASE_INSN_AND
, && case_sem_INSN_AND
},
74 { I960BASE_INSN_AND1
, && case_sem_INSN_AND1
},
75 { I960BASE_INSN_AND2
, && case_sem_INSN_AND2
},
76 { I960BASE_INSN_AND3
, && case_sem_INSN_AND3
},
77 { I960BASE_INSN_ANDNOT
, && case_sem_INSN_ANDNOT
},
78 { I960BASE_INSN_ANDNOT1
, && case_sem_INSN_ANDNOT1
},
79 { I960BASE_INSN_ANDNOT2
, && case_sem_INSN_ANDNOT2
},
80 { I960BASE_INSN_ANDNOT3
, && case_sem_INSN_ANDNOT3
},
81 { I960BASE_INSN_SETBIT
, && case_sem_INSN_SETBIT
},
82 { I960BASE_INSN_SETBIT1
, && case_sem_INSN_SETBIT1
},
83 { I960BASE_INSN_SETBIT2
, && case_sem_INSN_SETBIT2
},
84 { I960BASE_INSN_SETBIT3
, && case_sem_INSN_SETBIT3
},
85 { I960BASE_INSN_NOTAND
, && case_sem_INSN_NOTAND
},
86 { I960BASE_INSN_NOTAND1
, && case_sem_INSN_NOTAND1
},
87 { I960BASE_INSN_NOTAND2
, && case_sem_INSN_NOTAND2
},
88 { I960BASE_INSN_NOTAND3
, && case_sem_INSN_NOTAND3
},
89 { I960BASE_INSN_XOR
, && case_sem_INSN_XOR
},
90 { I960BASE_INSN_XOR1
, && case_sem_INSN_XOR1
},
91 { I960BASE_INSN_XOR2
, && case_sem_INSN_XOR2
},
92 { I960BASE_INSN_XOR3
, && case_sem_INSN_XOR3
},
93 { I960BASE_INSN_OR
, && case_sem_INSN_OR
},
94 { I960BASE_INSN_OR1
, && case_sem_INSN_OR1
},
95 { I960BASE_INSN_OR2
, && case_sem_INSN_OR2
},
96 { I960BASE_INSN_OR3
, && case_sem_INSN_OR3
},
97 { I960BASE_INSN_NOR
, && case_sem_INSN_NOR
},
98 { I960BASE_INSN_NOR1
, && case_sem_INSN_NOR1
},
99 { I960BASE_INSN_NOR2
, && case_sem_INSN_NOR2
},
100 { I960BASE_INSN_NOR3
, && case_sem_INSN_NOR3
},
101 { I960BASE_INSN_XNOR
, && case_sem_INSN_XNOR
},
102 { I960BASE_INSN_XNOR1
, && case_sem_INSN_XNOR1
},
103 { I960BASE_INSN_XNOR2
, && case_sem_INSN_XNOR2
},
104 { I960BASE_INSN_XNOR3
, && case_sem_INSN_XNOR3
},
105 { I960BASE_INSN_NOT
, && case_sem_INSN_NOT
},
106 { I960BASE_INSN_NOT1
, && case_sem_INSN_NOT1
},
107 { I960BASE_INSN_NOT2
, && case_sem_INSN_NOT2
},
108 { I960BASE_INSN_NOT3
, && case_sem_INSN_NOT3
},
109 { I960BASE_INSN_ORNOT
, && case_sem_INSN_ORNOT
},
110 { I960BASE_INSN_ORNOT1
, && case_sem_INSN_ORNOT1
},
111 { I960BASE_INSN_ORNOT2
, && case_sem_INSN_ORNOT2
},
112 { I960BASE_INSN_ORNOT3
, && case_sem_INSN_ORNOT3
},
113 { I960BASE_INSN_CLRBIT
, && case_sem_INSN_CLRBIT
},
114 { I960BASE_INSN_CLRBIT1
, && case_sem_INSN_CLRBIT1
},
115 { I960BASE_INSN_CLRBIT2
, && case_sem_INSN_CLRBIT2
},
116 { I960BASE_INSN_CLRBIT3
, && case_sem_INSN_CLRBIT3
},
117 { I960BASE_INSN_SHLO
, && case_sem_INSN_SHLO
},
118 { I960BASE_INSN_SHLO1
, && case_sem_INSN_SHLO1
},
119 { I960BASE_INSN_SHLO2
, && case_sem_INSN_SHLO2
},
120 { I960BASE_INSN_SHLO3
, && case_sem_INSN_SHLO3
},
121 { I960BASE_INSN_SHRO
, && case_sem_INSN_SHRO
},
122 { I960BASE_INSN_SHRO1
, && case_sem_INSN_SHRO1
},
123 { I960BASE_INSN_SHRO2
, && case_sem_INSN_SHRO2
},
124 { I960BASE_INSN_SHRO3
, && case_sem_INSN_SHRO3
},
125 { I960BASE_INSN_SHLI
, && case_sem_INSN_SHLI
},
126 { I960BASE_INSN_SHLI1
, && case_sem_INSN_SHLI1
},
127 { I960BASE_INSN_SHLI2
, && case_sem_INSN_SHLI2
},
128 { I960BASE_INSN_SHLI3
, && case_sem_INSN_SHLI3
},
129 { I960BASE_INSN_SHRI
, && case_sem_INSN_SHRI
},
130 { I960BASE_INSN_SHRI1
, && case_sem_INSN_SHRI1
},
131 { I960BASE_INSN_SHRI2
, && case_sem_INSN_SHRI2
},
132 { I960BASE_INSN_SHRI3
, && case_sem_INSN_SHRI3
},
133 { I960BASE_INSN_EMUL
, && case_sem_INSN_EMUL
},
134 { I960BASE_INSN_EMUL1
, && case_sem_INSN_EMUL1
},
135 { I960BASE_INSN_EMUL2
, && case_sem_INSN_EMUL2
},
136 { I960BASE_INSN_EMUL3
, && case_sem_INSN_EMUL3
},
137 { I960BASE_INSN_MOV
, && case_sem_INSN_MOV
},
138 { I960BASE_INSN_MOV1
, && case_sem_INSN_MOV1
},
139 { I960BASE_INSN_MOVL
, && case_sem_INSN_MOVL
},
140 { I960BASE_INSN_MOVL1
, && case_sem_INSN_MOVL1
},
141 { I960BASE_INSN_MOVT
, && case_sem_INSN_MOVT
},
142 { I960BASE_INSN_MOVT1
, && case_sem_INSN_MOVT1
},
143 { I960BASE_INSN_MOVQ
, && case_sem_INSN_MOVQ
},
144 { I960BASE_INSN_MOVQ1
, && case_sem_INSN_MOVQ1
},
145 { I960BASE_INSN_MODPC
, && case_sem_INSN_MODPC
},
146 { I960BASE_INSN_MODAC
, && case_sem_INSN_MODAC
},
147 { I960BASE_INSN_LDA_OFFSET
, && case_sem_INSN_LDA_OFFSET
},
148 { I960BASE_INSN_LDA_INDIRECT_OFFSET
, && case_sem_INSN_LDA_INDIRECT_OFFSET
},
149 { I960BASE_INSN_LDA_INDIRECT
, && case_sem_INSN_LDA_INDIRECT
},
150 { I960BASE_INSN_LDA_INDIRECT_INDEX
, && case_sem_INSN_LDA_INDIRECT_INDEX
},
151 { I960BASE_INSN_LDA_DISP
, && case_sem_INSN_LDA_DISP
},
152 { I960BASE_INSN_LDA_INDIRECT_DISP
, && case_sem_INSN_LDA_INDIRECT_DISP
},
153 { I960BASE_INSN_LDA_INDEX_DISP
, && case_sem_INSN_LDA_INDEX_DISP
},
154 { I960BASE_INSN_LDA_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDA_INDIRECT_INDEX_DISP
},
155 { I960BASE_INSN_LD_OFFSET
, && case_sem_INSN_LD_OFFSET
},
156 { I960BASE_INSN_LD_INDIRECT_OFFSET
, && case_sem_INSN_LD_INDIRECT_OFFSET
},
157 { I960BASE_INSN_LD_INDIRECT
, && case_sem_INSN_LD_INDIRECT
},
158 { I960BASE_INSN_LD_INDIRECT_INDEX
, && case_sem_INSN_LD_INDIRECT_INDEX
},
159 { I960BASE_INSN_LD_DISP
, && case_sem_INSN_LD_DISP
},
160 { I960BASE_INSN_LD_INDIRECT_DISP
, && case_sem_INSN_LD_INDIRECT_DISP
},
161 { I960BASE_INSN_LD_INDEX_DISP
, && case_sem_INSN_LD_INDEX_DISP
},
162 { I960BASE_INSN_LD_INDIRECT_INDEX_DISP
, && case_sem_INSN_LD_INDIRECT_INDEX_DISP
},
163 { I960BASE_INSN_LDOB_OFFSET
, && case_sem_INSN_LDOB_OFFSET
},
164 { I960BASE_INSN_LDOB_INDIRECT_OFFSET
, && case_sem_INSN_LDOB_INDIRECT_OFFSET
},
165 { I960BASE_INSN_LDOB_INDIRECT
, && case_sem_INSN_LDOB_INDIRECT
},
166 { I960BASE_INSN_LDOB_INDIRECT_INDEX
, && case_sem_INSN_LDOB_INDIRECT_INDEX
},
167 { I960BASE_INSN_LDOB_DISP
, && case_sem_INSN_LDOB_DISP
},
168 { I960BASE_INSN_LDOB_INDIRECT_DISP
, && case_sem_INSN_LDOB_INDIRECT_DISP
},
169 { I960BASE_INSN_LDOB_INDEX_DISP
, && case_sem_INSN_LDOB_INDEX_DISP
},
170 { I960BASE_INSN_LDOB_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDOB_INDIRECT_INDEX_DISP
},
171 { I960BASE_INSN_LDOS_OFFSET
, && case_sem_INSN_LDOS_OFFSET
},
172 { I960BASE_INSN_LDOS_INDIRECT_OFFSET
, && case_sem_INSN_LDOS_INDIRECT_OFFSET
},
173 { I960BASE_INSN_LDOS_INDIRECT
, && case_sem_INSN_LDOS_INDIRECT
},
174 { I960BASE_INSN_LDOS_INDIRECT_INDEX
, && case_sem_INSN_LDOS_INDIRECT_INDEX
},
175 { I960BASE_INSN_LDOS_DISP
, && case_sem_INSN_LDOS_DISP
},
176 { I960BASE_INSN_LDOS_INDIRECT_DISP
, && case_sem_INSN_LDOS_INDIRECT_DISP
},
177 { I960BASE_INSN_LDOS_INDEX_DISP
, && case_sem_INSN_LDOS_INDEX_DISP
},
178 { I960BASE_INSN_LDOS_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDOS_INDIRECT_INDEX_DISP
},
179 { I960BASE_INSN_LDIB_OFFSET
, && case_sem_INSN_LDIB_OFFSET
},
180 { I960BASE_INSN_LDIB_INDIRECT_OFFSET
, && case_sem_INSN_LDIB_INDIRECT_OFFSET
},
181 { I960BASE_INSN_LDIB_INDIRECT
, && case_sem_INSN_LDIB_INDIRECT
},
182 { I960BASE_INSN_LDIB_INDIRECT_INDEX
, && case_sem_INSN_LDIB_INDIRECT_INDEX
},
183 { I960BASE_INSN_LDIB_DISP
, && case_sem_INSN_LDIB_DISP
},
184 { I960BASE_INSN_LDIB_INDIRECT_DISP
, && case_sem_INSN_LDIB_INDIRECT_DISP
},
185 { I960BASE_INSN_LDIB_INDEX_DISP
, && case_sem_INSN_LDIB_INDEX_DISP
},
186 { I960BASE_INSN_LDIB_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDIB_INDIRECT_INDEX_DISP
},
187 { I960BASE_INSN_LDIS_OFFSET
, && case_sem_INSN_LDIS_OFFSET
},
188 { I960BASE_INSN_LDIS_INDIRECT_OFFSET
, && case_sem_INSN_LDIS_INDIRECT_OFFSET
},
189 { I960BASE_INSN_LDIS_INDIRECT
, && case_sem_INSN_LDIS_INDIRECT
},
190 { I960BASE_INSN_LDIS_INDIRECT_INDEX
, && case_sem_INSN_LDIS_INDIRECT_INDEX
},
191 { I960BASE_INSN_LDIS_DISP
, && case_sem_INSN_LDIS_DISP
},
192 { I960BASE_INSN_LDIS_INDIRECT_DISP
, && case_sem_INSN_LDIS_INDIRECT_DISP
},
193 { I960BASE_INSN_LDIS_INDEX_DISP
, && case_sem_INSN_LDIS_INDEX_DISP
},
194 { I960BASE_INSN_LDIS_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDIS_INDIRECT_INDEX_DISP
},
195 { I960BASE_INSN_LDL_OFFSET
, && case_sem_INSN_LDL_OFFSET
},
196 { I960BASE_INSN_LDL_INDIRECT_OFFSET
, && case_sem_INSN_LDL_INDIRECT_OFFSET
},
197 { I960BASE_INSN_LDL_INDIRECT
, && case_sem_INSN_LDL_INDIRECT
},
198 { I960BASE_INSN_LDL_INDIRECT_INDEX
, && case_sem_INSN_LDL_INDIRECT_INDEX
},
199 { I960BASE_INSN_LDL_DISP
, && case_sem_INSN_LDL_DISP
},
200 { I960BASE_INSN_LDL_INDIRECT_DISP
, && case_sem_INSN_LDL_INDIRECT_DISP
},
201 { I960BASE_INSN_LDL_INDEX_DISP
, && case_sem_INSN_LDL_INDEX_DISP
},
202 { I960BASE_INSN_LDL_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDL_INDIRECT_INDEX_DISP
},
203 { I960BASE_INSN_LDT_OFFSET
, && case_sem_INSN_LDT_OFFSET
},
204 { I960BASE_INSN_LDT_INDIRECT_OFFSET
, && case_sem_INSN_LDT_INDIRECT_OFFSET
},
205 { I960BASE_INSN_LDT_INDIRECT
, && case_sem_INSN_LDT_INDIRECT
},
206 { I960BASE_INSN_LDT_INDIRECT_INDEX
, && case_sem_INSN_LDT_INDIRECT_INDEX
},
207 { I960BASE_INSN_LDT_DISP
, && case_sem_INSN_LDT_DISP
},
208 { I960BASE_INSN_LDT_INDIRECT_DISP
, && case_sem_INSN_LDT_INDIRECT_DISP
},
209 { I960BASE_INSN_LDT_INDEX_DISP
, && case_sem_INSN_LDT_INDEX_DISP
},
210 { I960BASE_INSN_LDT_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDT_INDIRECT_INDEX_DISP
},
211 { I960BASE_INSN_LDQ_OFFSET
, && case_sem_INSN_LDQ_OFFSET
},
212 { I960BASE_INSN_LDQ_INDIRECT_OFFSET
, && case_sem_INSN_LDQ_INDIRECT_OFFSET
},
213 { I960BASE_INSN_LDQ_INDIRECT
, && case_sem_INSN_LDQ_INDIRECT
},
214 { I960BASE_INSN_LDQ_INDIRECT_INDEX
, && case_sem_INSN_LDQ_INDIRECT_INDEX
},
215 { I960BASE_INSN_LDQ_DISP
, && case_sem_INSN_LDQ_DISP
},
216 { I960BASE_INSN_LDQ_INDIRECT_DISP
, && case_sem_INSN_LDQ_INDIRECT_DISP
},
217 { I960BASE_INSN_LDQ_INDEX_DISP
, && case_sem_INSN_LDQ_INDEX_DISP
},
218 { I960BASE_INSN_LDQ_INDIRECT_INDEX_DISP
, && case_sem_INSN_LDQ_INDIRECT_INDEX_DISP
},
219 { I960BASE_INSN_ST_OFFSET
, && case_sem_INSN_ST_OFFSET
},
220 { I960BASE_INSN_ST_INDIRECT_OFFSET
, && case_sem_INSN_ST_INDIRECT_OFFSET
},
221 { I960BASE_INSN_ST_INDIRECT
, && case_sem_INSN_ST_INDIRECT
},
222 { I960BASE_INSN_ST_INDIRECT_INDEX
, && case_sem_INSN_ST_INDIRECT_INDEX
},
223 { I960BASE_INSN_ST_DISP
, && case_sem_INSN_ST_DISP
},
224 { I960BASE_INSN_ST_INDIRECT_DISP
, && case_sem_INSN_ST_INDIRECT_DISP
},
225 { I960BASE_INSN_ST_INDEX_DISP
, && case_sem_INSN_ST_INDEX_DISP
},
226 { I960BASE_INSN_ST_INDIRECT_INDEX_DISP
, && case_sem_INSN_ST_INDIRECT_INDEX_DISP
},
227 { I960BASE_INSN_STOB_OFFSET
, && case_sem_INSN_STOB_OFFSET
},
228 { I960BASE_INSN_STOB_INDIRECT_OFFSET
, && case_sem_INSN_STOB_INDIRECT_OFFSET
},
229 { I960BASE_INSN_STOB_INDIRECT
, && case_sem_INSN_STOB_INDIRECT
},
230 { I960BASE_INSN_STOB_INDIRECT_INDEX
, && case_sem_INSN_STOB_INDIRECT_INDEX
},
231 { I960BASE_INSN_STOB_DISP
, && case_sem_INSN_STOB_DISP
},
232 { I960BASE_INSN_STOB_INDIRECT_DISP
, && case_sem_INSN_STOB_INDIRECT_DISP
},
233 { I960BASE_INSN_STOB_INDEX_DISP
, && case_sem_INSN_STOB_INDEX_DISP
},
234 { I960BASE_INSN_STOB_INDIRECT_INDEX_DISP
, && case_sem_INSN_STOB_INDIRECT_INDEX_DISP
},
235 { I960BASE_INSN_STOS_OFFSET
, && case_sem_INSN_STOS_OFFSET
},
236 { I960BASE_INSN_STOS_INDIRECT_OFFSET
, && case_sem_INSN_STOS_INDIRECT_OFFSET
},
237 { I960BASE_INSN_STOS_INDIRECT
, && case_sem_INSN_STOS_INDIRECT
},
238 { I960BASE_INSN_STOS_INDIRECT_INDEX
, && case_sem_INSN_STOS_INDIRECT_INDEX
},
239 { I960BASE_INSN_STOS_DISP
, && case_sem_INSN_STOS_DISP
},
240 { I960BASE_INSN_STOS_INDIRECT_DISP
, && case_sem_INSN_STOS_INDIRECT_DISP
},
241 { I960BASE_INSN_STOS_INDEX_DISP
, && case_sem_INSN_STOS_INDEX_DISP
},
242 { I960BASE_INSN_STOS_INDIRECT_INDEX_DISP
, && case_sem_INSN_STOS_INDIRECT_INDEX_DISP
},
243 { I960BASE_INSN_STL_OFFSET
, && case_sem_INSN_STL_OFFSET
},
244 { I960BASE_INSN_STL_INDIRECT_OFFSET
, && case_sem_INSN_STL_INDIRECT_OFFSET
},
245 { I960BASE_INSN_STL_INDIRECT
, && case_sem_INSN_STL_INDIRECT
},
246 { I960BASE_INSN_STL_INDIRECT_INDEX
, && case_sem_INSN_STL_INDIRECT_INDEX
},
247 { I960BASE_INSN_STL_DISP
, && case_sem_INSN_STL_DISP
},
248 { I960BASE_INSN_STL_INDIRECT_DISP
, && case_sem_INSN_STL_INDIRECT_DISP
},
249 { I960BASE_INSN_STL_INDEX_DISP
, && case_sem_INSN_STL_INDEX_DISP
},
250 { I960BASE_INSN_STL_INDIRECT_INDEX_DISP
, && case_sem_INSN_STL_INDIRECT_INDEX_DISP
},
251 { I960BASE_INSN_STT_OFFSET
, && case_sem_INSN_STT_OFFSET
},
252 { I960BASE_INSN_STT_INDIRECT_OFFSET
, && case_sem_INSN_STT_INDIRECT_OFFSET
},
253 { I960BASE_INSN_STT_INDIRECT
, && case_sem_INSN_STT_INDIRECT
},
254 { I960BASE_INSN_STT_INDIRECT_INDEX
, && case_sem_INSN_STT_INDIRECT_INDEX
},
255 { I960BASE_INSN_STT_DISP
, && case_sem_INSN_STT_DISP
},
256 { I960BASE_INSN_STT_INDIRECT_DISP
, && case_sem_INSN_STT_INDIRECT_DISP
},
257 { I960BASE_INSN_STT_INDEX_DISP
, && case_sem_INSN_STT_INDEX_DISP
},
258 { I960BASE_INSN_STT_INDIRECT_INDEX_DISP
, && case_sem_INSN_STT_INDIRECT_INDEX_DISP
},
259 { I960BASE_INSN_STQ_OFFSET
, && case_sem_INSN_STQ_OFFSET
},
260 { I960BASE_INSN_STQ_INDIRECT_OFFSET
, && case_sem_INSN_STQ_INDIRECT_OFFSET
},
261 { I960BASE_INSN_STQ_INDIRECT
, && case_sem_INSN_STQ_INDIRECT
},
262 { I960BASE_INSN_STQ_INDIRECT_INDEX
, && case_sem_INSN_STQ_INDIRECT_INDEX
},
263 { I960BASE_INSN_STQ_DISP
, && case_sem_INSN_STQ_DISP
},
264 { I960BASE_INSN_STQ_INDIRECT_DISP
, && case_sem_INSN_STQ_INDIRECT_DISP
},
265 { I960BASE_INSN_STQ_INDEX_DISP
, && case_sem_INSN_STQ_INDEX_DISP
},
266 { I960BASE_INSN_STQ_INDIRECT_INDEX_DISP
, && case_sem_INSN_STQ_INDIRECT_INDEX_DISP
},
267 { I960BASE_INSN_CMPOBE_REG
, && case_sem_INSN_CMPOBE_REG
},
268 { I960BASE_INSN_CMPOBE_LIT
, && case_sem_INSN_CMPOBE_LIT
},
269 { I960BASE_INSN_CMPOBNE_REG
, && case_sem_INSN_CMPOBNE_REG
},
270 { I960BASE_INSN_CMPOBNE_LIT
, && case_sem_INSN_CMPOBNE_LIT
},
271 { I960BASE_INSN_CMPOBL_REG
, && case_sem_INSN_CMPOBL_REG
},
272 { I960BASE_INSN_CMPOBL_LIT
, && case_sem_INSN_CMPOBL_LIT
},
273 { I960BASE_INSN_CMPOBLE_REG
, && case_sem_INSN_CMPOBLE_REG
},
274 { I960BASE_INSN_CMPOBLE_LIT
, && case_sem_INSN_CMPOBLE_LIT
},
275 { I960BASE_INSN_CMPOBG_REG
, && case_sem_INSN_CMPOBG_REG
},
276 { I960BASE_INSN_CMPOBG_LIT
, && case_sem_INSN_CMPOBG_LIT
},
277 { I960BASE_INSN_CMPOBGE_REG
, && case_sem_INSN_CMPOBGE_REG
},
278 { I960BASE_INSN_CMPOBGE_LIT
, && case_sem_INSN_CMPOBGE_LIT
},
279 { I960BASE_INSN_CMPIBE_REG
, && case_sem_INSN_CMPIBE_REG
},
280 { I960BASE_INSN_CMPIBE_LIT
, && case_sem_INSN_CMPIBE_LIT
},
281 { I960BASE_INSN_CMPIBNE_REG
, && case_sem_INSN_CMPIBNE_REG
},
282 { I960BASE_INSN_CMPIBNE_LIT
, && case_sem_INSN_CMPIBNE_LIT
},
283 { I960BASE_INSN_CMPIBL_REG
, && case_sem_INSN_CMPIBL_REG
},
284 { I960BASE_INSN_CMPIBL_LIT
, && case_sem_INSN_CMPIBL_LIT
},
285 { I960BASE_INSN_CMPIBLE_REG
, && case_sem_INSN_CMPIBLE_REG
},
286 { I960BASE_INSN_CMPIBLE_LIT
, && case_sem_INSN_CMPIBLE_LIT
},
287 { I960BASE_INSN_CMPIBG_REG
, && case_sem_INSN_CMPIBG_REG
},
288 { I960BASE_INSN_CMPIBG_LIT
, && case_sem_INSN_CMPIBG_LIT
},
289 { I960BASE_INSN_CMPIBGE_REG
, && case_sem_INSN_CMPIBGE_REG
},
290 { I960BASE_INSN_CMPIBGE_LIT
, && case_sem_INSN_CMPIBGE_LIT
},
291 { I960BASE_INSN_BBC_REG
, && case_sem_INSN_BBC_REG
},
292 { I960BASE_INSN_BBC_LIT
, && case_sem_INSN_BBC_LIT
},
293 { I960BASE_INSN_BBS_REG
, && case_sem_INSN_BBS_REG
},
294 { I960BASE_INSN_BBS_LIT
, && case_sem_INSN_BBS_LIT
},
295 { I960BASE_INSN_CMPI
, && case_sem_INSN_CMPI
},
296 { I960BASE_INSN_CMPI1
, && case_sem_INSN_CMPI1
},
297 { I960BASE_INSN_CMPI2
, && case_sem_INSN_CMPI2
},
298 { I960BASE_INSN_CMPI3
, && case_sem_INSN_CMPI3
},
299 { I960BASE_INSN_CMPO
, && case_sem_INSN_CMPO
},
300 { I960BASE_INSN_CMPO1
, && case_sem_INSN_CMPO1
},
301 { I960BASE_INSN_CMPO2
, && case_sem_INSN_CMPO2
},
302 { I960BASE_INSN_CMPO3
, && case_sem_INSN_CMPO3
},
303 { I960BASE_INSN_TESTNO_REG
, && case_sem_INSN_TESTNO_REG
},
304 { I960BASE_INSN_TESTG_REG
, && case_sem_INSN_TESTG_REG
},
305 { I960BASE_INSN_TESTE_REG
, && case_sem_INSN_TESTE_REG
},
306 { I960BASE_INSN_TESTGE_REG
, && case_sem_INSN_TESTGE_REG
},
307 { I960BASE_INSN_TESTL_REG
, && case_sem_INSN_TESTL_REG
},
308 { I960BASE_INSN_TESTNE_REG
, && case_sem_INSN_TESTNE_REG
},
309 { I960BASE_INSN_TESTLE_REG
, && case_sem_INSN_TESTLE_REG
},
310 { I960BASE_INSN_TESTO_REG
, && case_sem_INSN_TESTO_REG
},
311 { I960BASE_INSN_BNO
, && case_sem_INSN_BNO
},
312 { I960BASE_INSN_BG
, && case_sem_INSN_BG
},
313 { I960BASE_INSN_BE
, && case_sem_INSN_BE
},
314 { I960BASE_INSN_BGE
, && case_sem_INSN_BGE
},
315 { I960BASE_INSN_BL
, && case_sem_INSN_BL
},
316 { I960BASE_INSN_BNE
, && case_sem_INSN_BNE
},
317 { I960BASE_INSN_BLE
, && case_sem_INSN_BLE
},
318 { I960BASE_INSN_BO
, && case_sem_INSN_BO
},
319 { I960BASE_INSN_B
, && case_sem_INSN_B
},
320 { I960BASE_INSN_BX_INDIRECT_OFFSET
, && case_sem_INSN_BX_INDIRECT_OFFSET
},
321 { I960BASE_INSN_BX_INDIRECT
, && case_sem_INSN_BX_INDIRECT
},
322 { I960BASE_INSN_BX_INDIRECT_INDEX
, && case_sem_INSN_BX_INDIRECT_INDEX
},
323 { I960BASE_INSN_BX_DISP
, && case_sem_INSN_BX_DISP
},
324 { I960BASE_INSN_BX_INDIRECT_DISP
, && case_sem_INSN_BX_INDIRECT_DISP
},
325 { I960BASE_INSN_CALLX_DISP
, && case_sem_INSN_CALLX_DISP
},
326 { I960BASE_INSN_CALLX_INDIRECT
, && case_sem_INSN_CALLX_INDIRECT
},
327 { I960BASE_INSN_CALLX_INDIRECT_OFFSET
, && case_sem_INSN_CALLX_INDIRECT_OFFSET
},
328 { I960BASE_INSN_RET
, && case_sem_INSN_RET
},
329 { I960BASE_INSN_CALLS
, && case_sem_INSN_CALLS
},
330 { I960BASE_INSN_FMARK
, && case_sem_INSN_FMARK
},
331 { I960BASE_INSN_FLUSHREG
, && case_sem_INSN_FLUSHREG
},
336 for (i
= 0; labels
[i
].label
!= 0; ++i
)
339 CPU_IDESC (current_cpu
) [labels
[i
].index
].sem_fast_lab
= labels
[i
].label
;
341 CPU_IDESC (current_cpu
) [labels
[i
].index
].sem_full_lab
= labels
[i
].label
;
346 #endif /* DEFINE_LABELS */
350 /* If hyper-fast [well not unnecessarily slow] execution is selected, turn
351 off frills like tracing and profiling. */
352 /* FIXME: A better way would be to have TRACE_RESULT check for something
353 that can cause it to be optimized out. Another way would be to emit
354 special handlers into the instruction "stream". */
358 #define TRACE_RESULT(cpu, abuf, name, type, val)
362 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
368 /* Branch to next handler without going around main loop. */
369 #define NEXT(vpc) goto * SEM_ARGBUF (vpc) -> semantic.sem_case
370 SWITCH (sem
, SEM_ARGBUF (vpc
) -> semantic
.sem_case
)
372 #else /* ! WITH_SCACHE_PBB */
374 #define NEXT(vpc) BREAK (sem)
377 SWITCH (sem
, SEM_ARGBUF (sc
) -> idesc
->sem_fast_lab
)
379 SWITCH (sem
, SEM_ARGBUF (sc
) -> idesc
->sem_full_lab
)
382 SWITCH (sem
, SEM_ARGBUF (sc
) -> idesc
->num
)
385 #endif /* ! WITH_SCACHE_PBB */
389 CASE (sem
, INSN_X_INVALID
) : /* --invalid-- */
391 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
392 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
393 #define FLD(f) abuf->fields.fmt_empty.f
394 int UNUSED written
= 0;
395 IADDR UNUSED pc
= abuf
->addr
;
396 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
400 /* Update the recorded pc in the cpu state struct. */
403 sim_engine_invalid_insn (current_cpu
, pc
);
404 sim_io_error (CPU_STATE (current_cpu
), "invalid insn not handled\n");
412 CASE (sem
, INSN_X_AFTER
) : /* --after-- */
414 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
415 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
416 #define FLD(f) abuf->fields.fmt_empty.f
417 int UNUSED written
= 0;
418 IADDR UNUSED pc
= abuf
->addr
;
419 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
422 #if WITH_SCACHE_PBB_I960BASE
423 i960base_pbb_after (current_cpu
, sem_arg
);
431 CASE (sem
, INSN_X_BEFORE
) : /* --before-- */
433 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
434 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
435 #define FLD(f) abuf->fields.fmt_empty.f
436 int UNUSED written
= 0;
437 IADDR UNUSED pc
= abuf
->addr
;
438 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
441 #if WITH_SCACHE_PBB_I960BASE
442 i960base_pbb_before (current_cpu
, sem_arg
);
450 CASE (sem
, INSN_X_CTI_CHAIN
) : /* --cti-chain-- */
452 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
453 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
454 #define FLD(f) abuf->fields.fmt_empty.f
455 int UNUSED written
= 0;
456 IADDR UNUSED pc
= abuf
->addr
;
457 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
460 #if WITH_SCACHE_PBB_I960BASE
462 vpc
= i960base_pbb_cti_chain (current_cpu
, sem_arg
,
463 pbb_br_type
, pbb_br_npc
);
466 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
467 vpc
= i960base_pbb_cti_chain (current_cpu
, sem_arg
,
468 CPU_PBB_BR_TYPE (current_cpu
),
469 CPU_PBB_BR_NPC (current_cpu
));
478 CASE (sem
, INSN_X_CHAIN
) : /* --chain-- */
480 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
481 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
482 #define FLD(f) abuf->fields.fmt_empty.f
483 int UNUSED written
= 0;
484 IADDR UNUSED pc
= abuf
->addr
;
485 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
488 #if WITH_SCACHE_PBB_I960BASE
489 vpc
= i960base_pbb_chain (current_cpu
, sem_arg
);
500 CASE (sem
, INSN_X_BEGIN
) : /* --begin-- */
502 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
503 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
504 #define FLD(f) abuf->fields.fmt_empty.f
505 int UNUSED written
= 0;
506 IADDR UNUSED pc
= abuf
->addr
;
507 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
510 #if WITH_SCACHE_PBB_I960BASE
512 /* In the switch case FAST_P is a constant, allowing several optimizations
513 in any called inline functions. */
514 vpc
= i960base_pbb_begin (current_cpu
, FAST_P
);
516 vpc
= i960base_pbb_begin (current_cpu
, STATE_RUN_FAST_P (CPU_STATE (current_cpu
)));
525 CASE (sem
, INSN_MULO
) : /* mulo $src1, $src2, $dst */
527 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
528 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
529 #define FLD(f) abuf->fields.sfmt_emul.f
530 int UNUSED written
= 0;
531 IADDR UNUSED pc
= abuf
->addr
;
532 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
535 SI opval
= MULSI (* FLD (i_src1
), * FLD (i_src2
));
536 * FLD (i_dst
) = opval
;
537 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
544 CASE (sem
, INSN_MULO1
) : /* mulo $lit1, $src2, $dst */
546 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
547 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
548 #define FLD(f) abuf->fields.sfmt_emul1.f
549 int UNUSED written
= 0;
550 IADDR UNUSED pc
= abuf
->addr
;
551 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
554 SI opval
= MULSI (FLD (f_src1
), * FLD (i_src2
));
555 * FLD (i_dst
) = opval
;
556 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
563 CASE (sem
, INSN_MULO2
) : /* mulo $src1, $lit2, $dst */
565 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
566 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
567 #define FLD(f) abuf->fields.sfmt_emul2.f
568 int UNUSED written
= 0;
569 IADDR UNUSED pc
= abuf
->addr
;
570 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
573 SI opval
= MULSI (* FLD (i_src1
), FLD (f_src2
));
574 * FLD (i_dst
) = opval
;
575 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
582 CASE (sem
, INSN_MULO3
) : /* mulo $lit1, $lit2, $dst */
584 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
585 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
586 #define FLD(f) abuf->fields.sfmt_emul3.f
587 int UNUSED written
= 0;
588 IADDR UNUSED pc
= abuf
->addr
;
589 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
592 SI opval
= MULSI (FLD (f_src1
), FLD (f_src2
));
593 * FLD (i_dst
) = opval
;
594 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
601 CASE (sem
, INSN_REMO
) : /* remo $src1, $src2, $dst */
603 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
604 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
605 #define FLD(f) abuf->fields.sfmt_emul.f
606 int UNUSED written
= 0;
607 IADDR UNUSED pc
= abuf
->addr
;
608 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
611 SI opval
= UMODSI (* FLD (i_src2
), * FLD (i_src1
));
612 * FLD (i_dst
) = opval
;
613 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
620 CASE (sem
, INSN_REMO1
) : /* remo $lit1, $src2, $dst */
622 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
623 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
624 #define FLD(f) abuf->fields.sfmt_emul1.f
625 int UNUSED written
= 0;
626 IADDR UNUSED pc
= abuf
->addr
;
627 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
630 SI opval
= UMODSI (* FLD (i_src2
), FLD (f_src1
));
631 * FLD (i_dst
) = opval
;
632 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
639 CASE (sem
, INSN_REMO2
) : /* remo $src1, $lit2, $dst */
641 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
642 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
643 #define FLD(f) abuf->fields.sfmt_emul2.f
644 int UNUSED written
= 0;
645 IADDR UNUSED pc
= abuf
->addr
;
646 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
649 SI opval
= UMODSI (FLD (f_src2
), * FLD (i_src1
));
650 * FLD (i_dst
) = opval
;
651 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
658 CASE (sem
, INSN_REMO3
) : /* remo $lit1, $lit2, $dst */
660 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
661 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
662 #define FLD(f) abuf->fields.sfmt_emul3.f
663 int UNUSED written
= 0;
664 IADDR UNUSED pc
= abuf
->addr
;
665 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
668 SI opval
= UMODSI (FLD (f_src2
), FLD (f_src1
));
669 * FLD (i_dst
) = opval
;
670 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
677 CASE (sem
, INSN_DIVO
) : /* divo $src1, $src2, $dst */
679 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
680 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
681 #define FLD(f) abuf->fields.sfmt_emul.f
682 int UNUSED written
= 0;
683 IADDR UNUSED pc
= abuf
->addr
;
684 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
687 SI opval
= UDIVSI (* FLD (i_src2
), * FLD (i_src1
));
688 * FLD (i_dst
) = opval
;
689 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
696 CASE (sem
, INSN_DIVO1
) : /* divo $lit1, $src2, $dst */
698 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
699 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
700 #define FLD(f) abuf->fields.sfmt_emul1.f
701 int UNUSED written
= 0;
702 IADDR UNUSED pc
= abuf
->addr
;
703 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
706 SI opval
= UDIVSI (* FLD (i_src2
), FLD (f_src1
));
707 * FLD (i_dst
) = opval
;
708 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
715 CASE (sem
, INSN_DIVO2
) : /* divo $src1, $lit2, $dst */
717 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
718 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
719 #define FLD(f) abuf->fields.sfmt_emul2.f
720 int UNUSED written
= 0;
721 IADDR UNUSED pc
= abuf
->addr
;
722 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
725 SI opval
= UDIVSI (FLD (f_src2
), * FLD (i_src1
));
726 * FLD (i_dst
) = opval
;
727 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
734 CASE (sem
, INSN_DIVO3
) : /* divo $lit1, $lit2, $dst */
736 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
737 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
738 #define FLD(f) abuf->fields.sfmt_emul3.f
739 int UNUSED written
= 0;
740 IADDR UNUSED pc
= abuf
->addr
;
741 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
744 SI opval
= UDIVSI (FLD (f_src2
), FLD (f_src1
));
745 * FLD (i_dst
) = opval
;
746 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
753 CASE (sem
, INSN_REMI
) : /* remi $src1, $src2, $dst */
755 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
756 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
757 #define FLD(f) abuf->fields.sfmt_emul.f
758 int UNUSED written
= 0;
759 IADDR UNUSED pc
= abuf
->addr
;
760 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
763 SI opval
= MODSI (* FLD (i_src2
), * FLD (i_src1
));
764 * FLD (i_dst
) = opval
;
765 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
772 CASE (sem
, INSN_REMI1
) : /* remi $lit1, $src2, $dst */
774 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
775 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
776 #define FLD(f) abuf->fields.sfmt_emul1.f
777 int UNUSED written
= 0;
778 IADDR UNUSED pc
= abuf
->addr
;
779 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
782 SI opval
= MODSI (* FLD (i_src2
), FLD (f_src1
));
783 * FLD (i_dst
) = opval
;
784 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
791 CASE (sem
, INSN_REMI2
) : /* remi $src1, $lit2, $dst */
793 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
794 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
795 #define FLD(f) abuf->fields.sfmt_emul2.f
796 int UNUSED written
= 0;
797 IADDR UNUSED pc
= abuf
->addr
;
798 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
801 SI opval
= MODSI (FLD (f_src2
), * FLD (i_src1
));
802 * FLD (i_dst
) = opval
;
803 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
810 CASE (sem
, INSN_REMI3
) : /* remi $lit1, $lit2, $dst */
812 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
813 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
814 #define FLD(f) abuf->fields.sfmt_emul3.f
815 int UNUSED written
= 0;
816 IADDR UNUSED pc
= abuf
->addr
;
817 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
820 SI opval
= MODSI (FLD (f_src2
), FLD (f_src1
));
821 * FLD (i_dst
) = opval
;
822 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
829 CASE (sem
, INSN_DIVI
) : /* divi $src1, $src2, $dst */
831 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
832 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
833 #define FLD(f) abuf->fields.sfmt_emul.f
834 int UNUSED written
= 0;
835 IADDR UNUSED pc
= abuf
->addr
;
836 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
839 SI opval
= DIVSI (* FLD (i_src2
), * FLD (i_src1
));
840 * FLD (i_dst
) = opval
;
841 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
848 CASE (sem
, INSN_DIVI1
) : /* divi $lit1, $src2, $dst */
850 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
851 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
852 #define FLD(f) abuf->fields.sfmt_emul1.f
853 int UNUSED written
= 0;
854 IADDR UNUSED pc
= abuf
->addr
;
855 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
858 SI opval
= DIVSI (* FLD (i_src2
), FLD (f_src1
));
859 * FLD (i_dst
) = opval
;
860 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
867 CASE (sem
, INSN_DIVI2
) : /* divi $src1, $lit2, $dst */
869 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
870 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
871 #define FLD(f) abuf->fields.sfmt_emul2.f
872 int UNUSED written
= 0;
873 IADDR UNUSED pc
= abuf
->addr
;
874 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
877 SI opval
= DIVSI (FLD (f_src2
), * FLD (i_src1
));
878 * FLD (i_dst
) = opval
;
879 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
886 CASE (sem
, INSN_DIVI3
) : /* divi $lit1, $lit2, $dst */
888 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
889 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
890 #define FLD(f) abuf->fields.sfmt_emul3.f
891 int UNUSED written
= 0;
892 IADDR UNUSED pc
= abuf
->addr
;
893 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
896 SI opval
= DIVSI (FLD (f_src2
), FLD (f_src1
));
897 * FLD (i_dst
) = opval
;
898 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
905 CASE (sem
, INSN_ADDO
) : /* addo $src1, $src2, $dst */
907 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
908 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
909 #define FLD(f) abuf->fields.sfmt_emul.f
910 int UNUSED written
= 0;
911 IADDR UNUSED pc
= abuf
->addr
;
912 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
915 SI opval
= ADDSI (* FLD (i_src1
), * FLD (i_src2
));
916 * FLD (i_dst
) = opval
;
917 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
924 CASE (sem
, INSN_ADDO1
) : /* addo $lit1, $src2, $dst */
926 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
927 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
928 #define FLD(f) abuf->fields.sfmt_emul1.f
929 int UNUSED written
= 0;
930 IADDR UNUSED pc
= abuf
->addr
;
931 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
934 SI opval
= ADDSI (FLD (f_src1
), * FLD (i_src2
));
935 * FLD (i_dst
) = opval
;
936 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
943 CASE (sem
, INSN_ADDO2
) : /* addo $src1, $lit2, $dst */
945 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
946 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
947 #define FLD(f) abuf->fields.sfmt_emul2.f
948 int UNUSED written
= 0;
949 IADDR UNUSED pc
= abuf
->addr
;
950 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
953 SI opval
= ADDSI (* FLD (i_src1
), FLD (f_src2
));
954 * FLD (i_dst
) = opval
;
955 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
962 CASE (sem
, INSN_ADDO3
) : /* addo $lit1, $lit2, $dst */
964 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
965 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
966 #define FLD(f) abuf->fields.sfmt_emul3.f
967 int UNUSED written
= 0;
968 IADDR UNUSED pc
= abuf
->addr
;
969 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
972 SI opval
= ADDSI (FLD (f_src1
), FLD (f_src2
));
973 * FLD (i_dst
) = opval
;
974 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
981 CASE (sem
, INSN_SUBO
) : /* subo $src1, $src2, $dst */
983 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
984 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
985 #define FLD(f) abuf->fields.sfmt_emul.f
986 int UNUSED written
= 0;
987 IADDR UNUSED pc
= abuf
->addr
;
988 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
991 SI opval
= SUBSI (* FLD (i_src2
), * FLD (i_src1
));
992 * FLD (i_dst
) = opval
;
993 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1000 CASE (sem
, INSN_SUBO1
) : /* subo $lit1, $src2, $dst */
1002 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1003 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1004 #define FLD(f) abuf->fields.sfmt_emul1.f
1005 int UNUSED written
= 0;
1006 IADDR UNUSED pc
= abuf
->addr
;
1007 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1010 SI opval
= SUBSI (* FLD (i_src2
), FLD (f_src1
));
1011 * FLD (i_dst
) = opval
;
1012 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1019 CASE (sem
, INSN_SUBO2
) : /* subo $src1, $lit2, $dst */
1021 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1022 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1023 #define FLD(f) abuf->fields.sfmt_emul2.f
1024 int UNUSED written
= 0;
1025 IADDR UNUSED pc
= abuf
->addr
;
1026 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1029 SI opval
= SUBSI (FLD (f_src2
), * FLD (i_src1
));
1030 * FLD (i_dst
) = opval
;
1031 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1038 CASE (sem
, INSN_SUBO3
) : /* subo $lit1, $lit2, $dst */
1040 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1041 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1042 #define FLD(f) abuf->fields.sfmt_emul3.f
1043 int UNUSED written
= 0;
1044 IADDR UNUSED pc
= abuf
->addr
;
1045 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1048 SI opval
= SUBSI (FLD (f_src2
), FLD (f_src1
));
1049 * FLD (i_dst
) = opval
;
1050 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1057 CASE (sem
, INSN_NOTBIT
) : /* notbit $src1, $src2, $dst */
1059 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1060 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1061 #define FLD(f) abuf->fields.sfmt_emul.f
1062 int UNUSED written
= 0;
1063 IADDR UNUSED pc
= abuf
->addr
;
1064 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1067 SI opval
= XORSI (SLLSI (1, * FLD (i_src1
)), * FLD (i_src2
));
1068 * FLD (i_dst
) = opval
;
1069 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1076 CASE (sem
, INSN_NOTBIT1
) : /* notbit $lit1, $src2, $dst */
1078 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1079 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1080 #define FLD(f) abuf->fields.sfmt_emul1.f
1081 int UNUSED written
= 0;
1082 IADDR UNUSED pc
= abuf
->addr
;
1083 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1086 SI opval
= XORSI (SLLSI (1, FLD (f_src1
)), * FLD (i_src2
));
1087 * FLD (i_dst
) = opval
;
1088 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1095 CASE (sem
, INSN_NOTBIT2
) : /* notbit $src1, $lit2, $dst */
1097 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1098 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1099 #define FLD(f) abuf->fields.sfmt_emul2.f
1100 int UNUSED written
= 0;
1101 IADDR UNUSED pc
= abuf
->addr
;
1102 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1105 SI opval
= XORSI (SLLSI (1, * FLD (i_src1
)), FLD (f_src2
));
1106 * FLD (i_dst
) = opval
;
1107 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1114 CASE (sem
, INSN_NOTBIT3
) : /* notbit $lit1, $lit2, $dst */
1116 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1117 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1118 #define FLD(f) abuf->fields.sfmt_emul3.f
1119 int UNUSED written
= 0;
1120 IADDR UNUSED pc
= abuf
->addr
;
1121 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1124 SI opval
= XORSI (SLLSI (1, FLD (f_src1
)), FLD (f_src2
));
1125 * FLD (i_dst
) = opval
;
1126 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1133 CASE (sem
, INSN_AND
) : /* and $src1, $src2, $dst */
1135 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1136 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1137 #define FLD(f) abuf->fields.sfmt_emul.f
1138 int UNUSED written
= 0;
1139 IADDR UNUSED pc
= abuf
->addr
;
1140 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1143 SI opval
= ANDSI (* FLD (i_src1
), * FLD (i_src2
));
1144 * FLD (i_dst
) = opval
;
1145 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1152 CASE (sem
, INSN_AND1
) : /* and $lit1, $src2, $dst */
1154 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1155 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1156 #define FLD(f) abuf->fields.sfmt_emul1.f
1157 int UNUSED written
= 0;
1158 IADDR UNUSED pc
= abuf
->addr
;
1159 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1162 SI opval
= ANDSI (FLD (f_src1
), * FLD (i_src2
));
1163 * FLD (i_dst
) = opval
;
1164 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1171 CASE (sem
, INSN_AND2
) : /* and $src1, $lit2, $dst */
1173 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1174 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1175 #define FLD(f) abuf->fields.sfmt_emul2.f
1176 int UNUSED written
= 0;
1177 IADDR UNUSED pc
= abuf
->addr
;
1178 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1181 SI opval
= ANDSI (* FLD (i_src1
), FLD (f_src2
));
1182 * FLD (i_dst
) = opval
;
1183 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1190 CASE (sem
, INSN_AND3
) : /* and $lit1, $lit2, $dst */
1192 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1193 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1194 #define FLD(f) abuf->fields.sfmt_emul3.f
1195 int UNUSED written
= 0;
1196 IADDR UNUSED pc
= abuf
->addr
;
1197 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1200 SI opval
= ANDSI (FLD (f_src1
), FLD (f_src2
));
1201 * FLD (i_dst
) = opval
;
1202 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1209 CASE (sem
, INSN_ANDNOT
) : /* andnot $src1, $src2, $dst */
1211 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1212 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1213 #define FLD(f) abuf->fields.sfmt_emul.f
1214 int UNUSED written
= 0;
1215 IADDR UNUSED pc
= abuf
->addr
;
1216 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1219 SI opval
= ANDSI (* FLD (i_src2
), INVSI (* FLD (i_src1
)));
1220 * FLD (i_dst
) = opval
;
1221 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1228 CASE (sem
, INSN_ANDNOT1
) : /* andnot $lit1, $src2, $dst */
1230 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1231 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1232 #define FLD(f) abuf->fields.sfmt_emul1.f
1233 int UNUSED written
= 0;
1234 IADDR UNUSED pc
= abuf
->addr
;
1235 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1238 SI opval
= ANDSI (* FLD (i_src2
), INVSI (FLD (f_src1
)));
1239 * FLD (i_dst
) = opval
;
1240 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1247 CASE (sem
, INSN_ANDNOT2
) : /* andnot $src1, $lit2, $dst */
1249 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1250 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1251 #define FLD(f) abuf->fields.sfmt_emul2.f
1252 int UNUSED written
= 0;
1253 IADDR UNUSED pc
= abuf
->addr
;
1254 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1257 SI opval
= ANDSI (FLD (f_src2
), INVSI (* FLD (i_src1
)));
1258 * FLD (i_dst
) = opval
;
1259 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1266 CASE (sem
, INSN_ANDNOT3
) : /* andnot $lit1, $lit2, $dst */
1268 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1269 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1270 #define FLD(f) abuf->fields.sfmt_emul3.f
1271 int UNUSED written
= 0;
1272 IADDR UNUSED pc
= abuf
->addr
;
1273 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1276 SI opval
= ANDSI (FLD (f_src2
), INVSI (FLD (f_src1
)));
1277 * FLD (i_dst
) = opval
;
1278 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1285 CASE (sem
, INSN_SETBIT
) : /* setbit $src1, $src2, $dst */
1287 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1288 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1289 #define FLD(f) abuf->fields.sfmt_emul.f
1290 int UNUSED written
= 0;
1291 IADDR UNUSED pc
= abuf
->addr
;
1292 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1295 SI opval
= ORSI (SLLSI (1, * FLD (i_src1
)), * FLD (i_src2
));
1296 * FLD (i_dst
) = opval
;
1297 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1304 CASE (sem
, INSN_SETBIT1
) : /* setbit $lit1, $src2, $dst */
1306 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1307 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1308 #define FLD(f) abuf->fields.sfmt_emul1.f
1309 int UNUSED written
= 0;
1310 IADDR UNUSED pc
= abuf
->addr
;
1311 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1314 SI opval
= ORSI (SLLSI (1, FLD (f_src1
)), * FLD (i_src2
));
1315 * FLD (i_dst
) = opval
;
1316 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1323 CASE (sem
, INSN_SETBIT2
) : /* setbit $src1, $lit2, $dst */
1325 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1326 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1327 #define FLD(f) abuf->fields.sfmt_emul2.f
1328 int UNUSED written
= 0;
1329 IADDR UNUSED pc
= abuf
->addr
;
1330 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1333 SI opval
= ORSI (SLLSI (1, * FLD (i_src1
)), FLD (f_src2
));
1334 * FLD (i_dst
) = opval
;
1335 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1342 CASE (sem
, INSN_SETBIT3
) : /* setbit $lit1, $lit2, $dst */
1344 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1345 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1346 #define FLD(f) abuf->fields.sfmt_emul3.f
1347 int UNUSED written
= 0;
1348 IADDR UNUSED pc
= abuf
->addr
;
1349 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1352 SI opval
= ORSI (SLLSI (1, FLD (f_src1
)), FLD (f_src2
));
1353 * FLD (i_dst
) = opval
;
1354 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1361 CASE (sem
, INSN_NOTAND
) : /* notand $src1, $src2, $dst */
1363 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1364 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1365 #define FLD(f) abuf->fields.sfmt_emul.f
1366 int UNUSED written
= 0;
1367 IADDR UNUSED pc
= abuf
->addr
;
1368 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1371 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), * FLD (i_src1
));
1372 * FLD (i_dst
) = opval
;
1373 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1380 CASE (sem
, INSN_NOTAND1
) : /* notand $lit1, $src2, $dst */
1382 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1383 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1384 #define FLD(f) abuf->fields.sfmt_emul1.f
1385 int UNUSED written
= 0;
1386 IADDR UNUSED pc
= abuf
->addr
;
1387 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1390 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), FLD (f_src1
));
1391 * FLD (i_dst
) = opval
;
1392 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1399 CASE (sem
, INSN_NOTAND2
) : /* notand $src1, $lit2, $dst */
1401 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1402 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1403 #define FLD(f) abuf->fields.sfmt_emul2.f
1404 int UNUSED written
= 0;
1405 IADDR UNUSED pc
= abuf
->addr
;
1406 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1409 SI opval
= ANDSI (INVSI (FLD (f_src2
)), * FLD (i_src1
));
1410 * FLD (i_dst
) = opval
;
1411 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1418 CASE (sem
, INSN_NOTAND3
) : /* notand $lit1, $lit2, $dst */
1420 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1421 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1422 #define FLD(f) abuf->fields.sfmt_emul3.f
1423 int UNUSED written
= 0;
1424 IADDR UNUSED pc
= abuf
->addr
;
1425 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1428 SI opval
= ANDSI (INVSI (FLD (f_src2
)), FLD (f_src1
));
1429 * FLD (i_dst
) = opval
;
1430 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1437 CASE (sem
, INSN_XOR
) : /* xor $src1, $src2, $dst */
1439 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1440 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1441 #define FLD(f) abuf->fields.sfmt_emul.f
1442 int UNUSED written
= 0;
1443 IADDR UNUSED pc
= abuf
->addr
;
1444 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1447 SI opval
= XORSI (* FLD (i_src1
), * FLD (i_src2
));
1448 * FLD (i_dst
) = opval
;
1449 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1456 CASE (sem
, INSN_XOR1
) : /* xor $lit1, $src2, $dst */
1458 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1459 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1460 #define FLD(f) abuf->fields.sfmt_emul1.f
1461 int UNUSED written
= 0;
1462 IADDR UNUSED pc
= abuf
->addr
;
1463 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1466 SI opval
= XORSI (FLD (f_src1
), * FLD (i_src2
));
1467 * FLD (i_dst
) = opval
;
1468 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1475 CASE (sem
, INSN_XOR2
) : /* xor $src1, $lit2, $dst */
1477 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1478 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1479 #define FLD(f) abuf->fields.sfmt_emul2.f
1480 int UNUSED written
= 0;
1481 IADDR UNUSED pc
= abuf
->addr
;
1482 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1485 SI opval
= XORSI (* FLD (i_src1
), FLD (f_src2
));
1486 * FLD (i_dst
) = opval
;
1487 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1494 CASE (sem
, INSN_XOR3
) : /* xor $lit1, $lit2, $dst */
1496 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1497 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1498 #define FLD(f) abuf->fields.sfmt_emul3.f
1499 int UNUSED written
= 0;
1500 IADDR UNUSED pc
= abuf
->addr
;
1501 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1504 SI opval
= XORSI (FLD (f_src1
), FLD (f_src2
));
1505 * FLD (i_dst
) = opval
;
1506 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1513 CASE (sem
, INSN_OR
) : /* or $src1, $src2, $dst */
1515 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1516 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1517 #define FLD(f) abuf->fields.sfmt_emul.f
1518 int UNUSED written
= 0;
1519 IADDR UNUSED pc
= abuf
->addr
;
1520 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1523 SI opval
= ORSI (* FLD (i_src1
), * FLD (i_src2
));
1524 * FLD (i_dst
) = opval
;
1525 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1532 CASE (sem
, INSN_OR1
) : /* or $lit1, $src2, $dst */
1534 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1535 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1536 #define FLD(f) abuf->fields.sfmt_emul1.f
1537 int UNUSED written
= 0;
1538 IADDR UNUSED pc
= abuf
->addr
;
1539 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1542 SI opval
= ORSI (FLD (f_src1
), * FLD (i_src2
));
1543 * FLD (i_dst
) = opval
;
1544 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1551 CASE (sem
, INSN_OR2
) : /* or $src1, $lit2, $dst */
1553 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1554 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1555 #define FLD(f) abuf->fields.sfmt_emul2.f
1556 int UNUSED written
= 0;
1557 IADDR UNUSED pc
= abuf
->addr
;
1558 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1561 SI opval
= ORSI (* FLD (i_src1
), FLD (f_src2
));
1562 * FLD (i_dst
) = opval
;
1563 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1570 CASE (sem
, INSN_OR3
) : /* or $lit1, $lit2, $dst */
1572 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1573 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1574 #define FLD(f) abuf->fields.sfmt_emul3.f
1575 int UNUSED written
= 0;
1576 IADDR UNUSED pc
= abuf
->addr
;
1577 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1580 SI opval
= ORSI (FLD (f_src1
), FLD (f_src2
));
1581 * FLD (i_dst
) = opval
;
1582 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1589 CASE (sem
, INSN_NOR
) : /* nor $src1, $src2, $dst */
1591 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1592 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1593 #define FLD(f) abuf->fields.sfmt_emul.f
1594 int UNUSED written
= 0;
1595 IADDR UNUSED pc
= abuf
->addr
;
1596 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1599 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), INVSI (* FLD (i_src1
)));
1600 * FLD (i_dst
) = opval
;
1601 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1608 CASE (sem
, INSN_NOR1
) : /* nor $lit1, $src2, $dst */
1610 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1611 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1612 #define FLD(f) abuf->fields.sfmt_emul1.f
1613 int UNUSED written
= 0;
1614 IADDR UNUSED pc
= abuf
->addr
;
1615 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1618 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), INVSI (FLD (f_src1
)));
1619 * FLD (i_dst
) = opval
;
1620 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1627 CASE (sem
, INSN_NOR2
) : /* nor $src1, $lit2, $dst */
1629 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1630 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1631 #define FLD(f) abuf->fields.sfmt_emul2.f
1632 int UNUSED written
= 0;
1633 IADDR UNUSED pc
= abuf
->addr
;
1634 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1637 SI opval
= ANDSI (INVSI (FLD (f_src2
)), INVSI (* FLD (i_src1
)));
1638 * FLD (i_dst
) = opval
;
1639 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1646 CASE (sem
, INSN_NOR3
) : /* nor $lit1, $lit2, $dst */
1648 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1649 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1650 #define FLD(f) abuf->fields.sfmt_emul3.f
1651 int UNUSED written
= 0;
1652 IADDR UNUSED pc
= abuf
->addr
;
1653 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1656 SI opval
= ANDSI (INVSI (FLD (f_src2
)), INVSI (FLD (f_src1
)));
1657 * FLD (i_dst
) = opval
;
1658 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1665 CASE (sem
, INSN_XNOR
) : /* xnor $src1, $src2, $dst */
1667 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1668 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1669 #define FLD(f) abuf->fields.sfmt_emul.f
1670 int UNUSED written
= 0;
1671 IADDR UNUSED pc
= abuf
->addr
;
1672 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1675 SI opval
= INVSI (XORSI (* FLD (i_src1
), * FLD (i_src2
)));
1676 * FLD (i_dst
) = opval
;
1677 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1684 CASE (sem
, INSN_XNOR1
) : /* xnor $lit1, $src2, $dst */
1686 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1687 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1688 #define FLD(f) abuf->fields.sfmt_emul1.f
1689 int UNUSED written
= 0;
1690 IADDR UNUSED pc
= abuf
->addr
;
1691 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1694 SI opval
= INVSI (XORSI (FLD (f_src1
), * FLD (i_src2
)));
1695 * FLD (i_dst
) = opval
;
1696 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1703 CASE (sem
, INSN_XNOR2
) : /* xnor $src1, $lit2, $dst */
1705 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1706 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1707 #define FLD(f) abuf->fields.sfmt_emul2.f
1708 int UNUSED written
= 0;
1709 IADDR UNUSED pc
= abuf
->addr
;
1710 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1713 SI opval
= INVSI (XORSI (* FLD (i_src1
), FLD (f_src2
)));
1714 * FLD (i_dst
) = opval
;
1715 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1722 CASE (sem
, INSN_XNOR3
) : /* xnor $lit1, $lit2, $dst */
1724 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1725 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1726 #define FLD(f) abuf->fields.sfmt_emul3.f
1727 int UNUSED written
= 0;
1728 IADDR UNUSED pc
= abuf
->addr
;
1729 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1732 SI opval
= INVSI (XORSI (FLD (f_src1
), FLD (f_src2
)));
1733 * FLD (i_dst
) = opval
;
1734 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1741 CASE (sem
, INSN_NOT
) : /* not $src1, $src2, $dst */
1743 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1744 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1745 #define FLD(f) abuf->fields.sfmt_emul2.f
1746 int UNUSED written
= 0;
1747 IADDR UNUSED pc
= abuf
->addr
;
1748 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1751 SI opval
= INVSI (* FLD (i_src1
));
1752 * FLD (i_dst
) = opval
;
1753 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1760 CASE (sem
, INSN_NOT1
) : /* not $lit1, $src2, $dst */
1762 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1763 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1764 #define FLD(f) abuf->fields.sfmt_emul3.f
1765 int UNUSED written
= 0;
1766 IADDR UNUSED pc
= abuf
->addr
;
1767 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1770 SI opval
= INVSI (FLD (f_src1
));
1771 * FLD (i_dst
) = opval
;
1772 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1779 CASE (sem
, INSN_NOT2
) : /* not $src1, $lit2, $dst */
1781 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1782 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1783 #define FLD(f) abuf->fields.sfmt_emul2.f
1784 int UNUSED written
= 0;
1785 IADDR UNUSED pc
= abuf
->addr
;
1786 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1789 SI opval
= INVSI (* FLD (i_src1
));
1790 * FLD (i_dst
) = opval
;
1791 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1798 CASE (sem
, INSN_NOT3
) : /* not $lit1, $lit2, $dst */
1800 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1801 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1802 #define FLD(f) abuf->fields.sfmt_emul3.f
1803 int UNUSED written
= 0;
1804 IADDR UNUSED pc
= abuf
->addr
;
1805 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1808 SI opval
= INVSI (FLD (f_src1
));
1809 * FLD (i_dst
) = opval
;
1810 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1817 CASE (sem
, INSN_ORNOT
) : /* ornot $src1, $src2, $dst */
1819 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1820 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1821 #define FLD(f) abuf->fields.sfmt_emul.f
1822 int UNUSED written
= 0;
1823 IADDR UNUSED pc
= abuf
->addr
;
1824 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1827 SI opval
= ORSI (* FLD (i_src2
), INVSI (* FLD (i_src1
)));
1828 * FLD (i_dst
) = opval
;
1829 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1836 CASE (sem
, INSN_ORNOT1
) : /* ornot $lit1, $src2, $dst */
1838 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1839 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1840 #define FLD(f) abuf->fields.sfmt_emul1.f
1841 int UNUSED written
= 0;
1842 IADDR UNUSED pc
= abuf
->addr
;
1843 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1846 SI opval
= ORSI (* FLD (i_src2
), INVSI (FLD (f_src1
)));
1847 * FLD (i_dst
) = opval
;
1848 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1855 CASE (sem
, INSN_ORNOT2
) : /* ornot $src1, $lit2, $dst */
1857 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1858 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1859 #define FLD(f) abuf->fields.sfmt_emul2.f
1860 int UNUSED written
= 0;
1861 IADDR UNUSED pc
= abuf
->addr
;
1862 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1865 SI opval
= ORSI (FLD (f_src2
), INVSI (* FLD (i_src1
)));
1866 * FLD (i_dst
) = opval
;
1867 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1874 CASE (sem
, INSN_ORNOT3
) : /* ornot $lit1, $lit2, $dst */
1876 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1877 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1878 #define FLD(f) abuf->fields.sfmt_emul3.f
1879 int UNUSED written
= 0;
1880 IADDR UNUSED pc
= abuf
->addr
;
1881 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1884 SI opval
= ORSI (FLD (f_src2
), INVSI (FLD (f_src1
)));
1885 * FLD (i_dst
) = opval
;
1886 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1893 CASE (sem
, INSN_CLRBIT
) : /* clrbit $src1, $src2, $dst */
1895 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1896 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1897 #define FLD(f) abuf->fields.sfmt_emul.f
1898 int UNUSED written
= 0;
1899 IADDR UNUSED pc
= abuf
->addr
;
1900 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1903 SI opval
= ANDSI (INVSI (SLLSI (1, * FLD (i_src1
))), * FLD (i_src2
));
1904 * FLD (i_dst
) = opval
;
1905 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1912 CASE (sem
, INSN_CLRBIT1
) : /* clrbit $lit1, $src2, $dst */
1914 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1915 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1916 #define FLD(f) abuf->fields.sfmt_emul1.f
1917 int UNUSED written
= 0;
1918 IADDR UNUSED pc
= abuf
->addr
;
1919 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1922 SI opval
= ANDSI (INVSI (SLLSI (1, FLD (f_src1
))), * FLD (i_src2
));
1923 * FLD (i_dst
) = opval
;
1924 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1931 CASE (sem
, INSN_CLRBIT2
) : /* clrbit $src1, $lit2, $dst */
1933 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1934 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1935 #define FLD(f) abuf->fields.sfmt_emul2.f
1936 int UNUSED written
= 0;
1937 IADDR UNUSED pc
= abuf
->addr
;
1938 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1941 SI opval
= ANDSI (INVSI (SLLSI (1, * FLD (i_src1
))), FLD (f_src2
));
1942 * FLD (i_dst
) = opval
;
1943 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1950 CASE (sem
, INSN_CLRBIT3
) : /* clrbit $lit1, $lit2, $dst */
1952 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1953 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1954 #define FLD(f) abuf->fields.sfmt_emul3.f
1955 int UNUSED written
= 0;
1956 IADDR UNUSED pc
= abuf
->addr
;
1957 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1960 SI opval
= ANDSI (INVSI (SLLSI (1, FLD (f_src1
))), FLD (f_src2
));
1961 * FLD (i_dst
) = opval
;
1962 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1969 CASE (sem
, INSN_SHLO
) : /* shlo $src1, $src2, $dst */
1971 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1972 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1973 #define FLD(f) abuf->fields.sfmt_emul.f
1974 int UNUSED written
= 0;
1975 IADDR UNUSED pc
= abuf
->addr
;
1976 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1979 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), * FLD (i_src1
)));
1980 * FLD (i_dst
) = opval
;
1981 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1988 CASE (sem
, INSN_SHLO1
) : /* shlo $lit1, $src2, $dst */
1990 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
1991 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1992 #define FLD(f) abuf->fields.sfmt_emul1.f
1993 int UNUSED written
= 0;
1994 IADDR UNUSED pc
= abuf
->addr
;
1995 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1998 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), FLD (f_src1
)));
1999 * FLD (i_dst
) = opval
;
2000 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2007 CASE (sem
, INSN_SHLO2
) : /* shlo $src1, $lit2, $dst */
2009 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2010 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2011 #define FLD(f) abuf->fields.sfmt_emul2.f
2012 int UNUSED written
= 0;
2013 IADDR UNUSED pc
= abuf
->addr
;
2014 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2017 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), * FLD (i_src1
)));
2018 * FLD (i_dst
) = opval
;
2019 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2026 CASE (sem
, INSN_SHLO3
) : /* shlo $lit1, $lit2, $dst */
2028 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2029 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2030 #define FLD(f) abuf->fields.sfmt_emul3.f
2031 int UNUSED written
= 0;
2032 IADDR UNUSED pc
= abuf
->addr
;
2033 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2036 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), FLD (f_src1
)));
2037 * FLD (i_dst
) = opval
;
2038 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2045 CASE (sem
, INSN_SHRO
) : /* shro $src1, $src2, $dst */
2047 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2048 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2049 #define FLD(f) abuf->fields.sfmt_emul.f
2050 int UNUSED written
= 0;
2051 IADDR UNUSED pc
= abuf
->addr
;
2052 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2055 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SRLSI (* FLD (i_src2
), * FLD (i_src1
)));
2056 * FLD (i_dst
) = opval
;
2057 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2064 CASE (sem
, INSN_SHRO1
) : /* shro $lit1, $src2, $dst */
2066 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2067 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2068 #define FLD(f) abuf->fields.sfmt_emul1.f
2069 int UNUSED written
= 0;
2070 IADDR UNUSED pc
= abuf
->addr
;
2071 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2074 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SRLSI (* FLD (i_src2
), FLD (f_src1
)));
2075 * FLD (i_dst
) = opval
;
2076 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2083 CASE (sem
, INSN_SHRO2
) : /* shro $src1, $lit2, $dst */
2085 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2086 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2087 #define FLD(f) abuf->fields.sfmt_emul2.f
2088 int UNUSED written
= 0;
2089 IADDR UNUSED pc
= abuf
->addr
;
2090 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2093 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SRLSI (FLD (f_src2
), * FLD (i_src1
)));
2094 * FLD (i_dst
) = opval
;
2095 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2102 CASE (sem
, INSN_SHRO3
) : /* shro $lit1, $lit2, $dst */
2104 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2105 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2106 #define FLD(f) abuf->fields.sfmt_emul3.f
2107 int UNUSED written
= 0;
2108 IADDR UNUSED pc
= abuf
->addr
;
2109 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2112 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SRLSI (FLD (f_src2
), FLD (f_src1
)));
2113 * FLD (i_dst
) = opval
;
2114 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2121 CASE (sem
, INSN_SHLI
) : /* shli $src1, $src2, $dst */
2123 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2124 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2125 #define FLD(f) abuf->fields.sfmt_emul.f
2126 int UNUSED written
= 0;
2127 IADDR UNUSED pc
= abuf
->addr
;
2128 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2131 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), * FLD (i_src1
)));
2132 * FLD (i_dst
) = opval
;
2133 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2140 CASE (sem
, INSN_SHLI1
) : /* shli $lit1, $src2, $dst */
2142 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2143 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2144 #define FLD(f) abuf->fields.sfmt_emul1.f
2145 int UNUSED written
= 0;
2146 IADDR UNUSED pc
= abuf
->addr
;
2147 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2150 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), FLD (f_src1
)));
2151 * FLD (i_dst
) = opval
;
2152 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2159 CASE (sem
, INSN_SHLI2
) : /* shli $src1, $lit2, $dst */
2161 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2162 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2163 #define FLD(f) abuf->fields.sfmt_emul2.f
2164 int UNUSED written
= 0;
2165 IADDR UNUSED pc
= abuf
->addr
;
2166 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2169 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), * FLD (i_src1
)));
2170 * FLD (i_dst
) = opval
;
2171 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2178 CASE (sem
, INSN_SHLI3
) : /* shli $lit1, $lit2, $dst */
2180 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2181 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2182 #define FLD(f) abuf->fields.sfmt_emul3.f
2183 int UNUSED written
= 0;
2184 IADDR UNUSED pc
= abuf
->addr
;
2185 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2188 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), FLD (f_src1
)));
2189 * FLD (i_dst
) = opval
;
2190 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2197 CASE (sem
, INSN_SHRI
) : /* shri $src1, $src2, $dst */
2199 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2200 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2201 #define FLD(f) abuf->fields.sfmt_emul.f
2202 int UNUSED written
= 0;
2203 IADDR UNUSED pc
= abuf
->addr
;
2204 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2207 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (SRASI (* FLD (i_src2
), 31)) : (SRASI (* FLD (i_src2
), * FLD (i_src1
)));
2208 * FLD (i_dst
) = opval
;
2209 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2216 CASE (sem
, INSN_SHRI1
) : /* shri $lit1, $src2, $dst */
2218 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2219 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2220 #define FLD(f) abuf->fields.sfmt_emul1.f
2221 int UNUSED written
= 0;
2222 IADDR UNUSED pc
= abuf
->addr
;
2223 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2226 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (SRASI (* FLD (i_src2
), 31)) : (SRASI (* FLD (i_src2
), FLD (f_src1
)));
2227 * FLD (i_dst
) = opval
;
2228 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2235 CASE (sem
, INSN_SHRI2
) : /* shri $src1, $lit2, $dst */
2237 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2238 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2239 #define FLD(f) abuf->fields.sfmt_emul2.f
2240 int UNUSED written
= 0;
2241 IADDR UNUSED pc
= abuf
->addr
;
2242 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2245 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (SRASI (FLD (f_src2
), 31)) : (SRASI (FLD (f_src2
), * FLD (i_src1
)));
2246 * FLD (i_dst
) = opval
;
2247 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2254 CASE (sem
, INSN_SHRI3
) : /* shri $lit1, $lit2, $dst */
2256 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2257 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2258 #define FLD(f) abuf->fields.sfmt_emul3.f
2259 int UNUSED written
= 0;
2260 IADDR UNUSED pc
= abuf
->addr
;
2261 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2264 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (SRASI (FLD (f_src2
), 31)) : (SRASI (FLD (f_src2
), FLD (f_src1
)));
2265 * FLD (i_dst
) = opval
;
2266 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2273 CASE (sem
, INSN_EMUL
) : /* emul $src1, $src2, $dst */
2275 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2276 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2277 #define FLD(f) abuf->fields.sfmt_emul.f
2278 int UNUSED written
= 0;
2279 IADDR UNUSED pc
= abuf
->addr
;
2280 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2285 tmp_temp
= MULDI (ZEXTSIDI (* FLD (i_src1
)), ZEXTSIDI (* FLD (i_src2
)));
2286 tmp_dregno
= FLD (f_srcdst
);
2288 SI opval
= TRUNCDISI (tmp_temp
);
2289 * FLD (i_dst
) = opval
;
2290 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2293 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2294 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2295 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2303 CASE (sem
, INSN_EMUL1
) : /* emul $lit1, $src2, $dst */
2305 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2306 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2307 #define FLD(f) abuf->fields.sfmt_emul1.f
2308 int UNUSED written
= 0;
2309 IADDR UNUSED pc
= abuf
->addr
;
2310 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2315 tmp_temp
= MULDI (ZEXTSIDI (FLD (f_src1
)), ZEXTSIDI (* FLD (i_src2
)));
2316 tmp_dregno
= FLD (f_srcdst
);
2318 SI opval
= TRUNCDISI (tmp_temp
);
2319 * FLD (i_dst
) = opval
;
2320 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2323 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2324 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2325 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2333 CASE (sem
, INSN_EMUL2
) : /* emul $src1, $lit2, $dst */
2335 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2336 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2337 #define FLD(f) abuf->fields.sfmt_emul2.f
2338 int UNUSED written
= 0;
2339 IADDR UNUSED pc
= abuf
->addr
;
2340 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2345 tmp_temp
= MULDI (ZEXTSIDI (* FLD (i_src1
)), ZEXTSIDI (FLD (f_src2
)));
2346 tmp_dregno
= FLD (f_srcdst
);
2348 SI opval
= TRUNCDISI (tmp_temp
);
2349 * FLD (i_dst
) = opval
;
2350 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2353 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2354 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2355 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2363 CASE (sem
, INSN_EMUL3
) : /* emul $lit1, $lit2, $dst */
2365 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2366 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2367 #define FLD(f) abuf->fields.sfmt_emul3.f
2368 int UNUSED written
= 0;
2369 IADDR UNUSED pc
= abuf
->addr
;
2370 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2375 tmp_temp
= MULDI (ZEXTSIDI (FLD (f_src1
)), ZEXTSIDI (FLD (f_src2
)));
2376 tmp_dregno
= FLD (f_srcdst
);
2378 SI opval
= TRUNCDISI (tmp_temp
);
2379 * FLD (i_dst
) = opval
;
2380 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2383 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2384 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2385 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2393 CASE (sem
, INSN_MOV
) : /* mov $src1, $dst */
2395 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2396 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2397 #define FLD(f) abuf->fields.sfmt_emul2.f
2398 int UNUSED written
= 0;
2399 IADDR UNUSED pc
= abuf
->addr
;
2400 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2403 SI opval
= * FLD (i_src1
);
2404 * FLD (i_dst
) = opval
;
2405 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2412 CASE (sem
, INSN_MOV1
) : /* mov $lit1, $dst */
2414 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2415 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2416 #define FLD(f) abuf->fields.sfmt_emul3.f
2417 int UNUSED written
= 0;
2418 IADDR UNUSED pc
= abuf
->addr
;
2419 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2422 SI opval
= FLD (f_src1
);
2423 * FLD (i_dst
) = opval
;
2424 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2431 CASE (sem
, INSN_MOVL
) : /* movl $src1, $dst */
2433 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2434 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2435 #define FLD(f) abuf->fields.sfmt_movq.f
2436 int UNUSED written
= 0;
2437 IADDR UNUSED pc
= abuf
->addr
;
2438 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2443 tmp_dregno
= FLD (f_srcdst
);
2444 tmp_sregno
= FLD (f_src1
);
2446 SI opval
= * FLD (i_src1
);
2447 * FLD (i_dst
) = opval
;
2448 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2451 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (1))]);
2452 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2453 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2461 CASE (sem
, INSN_MOVL1
) : /* movl $lit1, $dst */
2463 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2464 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2465 #define FLD(f) abuf->fields.sfmt_emul3.f
2466 int UNUSED written
= 0;
2467 IADDR UNUSED pc
= abuf
->addr
;
2468 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2472 tmp_dregno
= FLD (f_srcdst
);
2474 SI opval
= FLD (f_src1
);
2475 * FLD (i_dst
) = opval
;
2476 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2480 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2481 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2489 CASE (sem
, INSN_MOVT
) : /* movt $src1, $dst */
2491 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2492 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2493 #define FLD(f) abuf->fields.sfmt_movq.f
2494 int UNUSED written
= 0;
2495 IADDR UNUSED pc
= abuf
->addr
;
2496 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2501 tmp_dregno
= FLD (f_srcdst
);
2502 tmp_sregno
= FLD (f_src1
);
2504 SI opval
= * FLD (i_src1
);
2505 * FLD (i_dst
) = opval
;
2506 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2509 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (1))]);
2510 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2511 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2514 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (2))]);
2515 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2516 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
2524 CASE (sem
, INSN_MOVT1
) : /* movt $lit1, $dst */
2526 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2527 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2528 #define FLD(f) abuf->fields.sfmt_movq.f
2529 int UNUSED written
= 0;
2530 IADDR UNUSED pc
= abuf
->addr
;
2531 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2535 tmp_dregno
= FLD (f_srcdst
);
2537 SI opval
= FLD (f_src1
);
2538 * FLD (i_dst
) = opval
;
2539 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2543 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2544 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2548 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2549 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
2557 CASE (sem
, INSN_MOVQ
) : /* movq $src1, $dst */
2559 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2560 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2561 #define FLD(f) abuf->fields.sfmt_movq.f
2562 int UNUSED written
= 0;
2563 IADDR UNUSED pc
= abuf
->addr
;
2564 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2569 tmp_dregno
= FLD (f_srcdst
);
2570 tmp_sregno
= FLD (f_src1
);
2572 SI opval
= * FLD (i_src1
);
2573 * FLD (i_dst
) = opval
;
2574 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2577 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (1))]);
2578 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2579 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2582 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (2))]);
2583 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2584 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
2587 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (3))]);
2588 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
2589 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
2597 CASE (sem
, INSN_MOVQ1
) : /* movq $lit1, $dst */
2599 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2600 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2601 #define FLD(f) abuf->fields.sfmt_movq.f
2602 int UNUSED written
= 0;
2603 IADDR UNUSED pc
= abuf
->addr
;
2604 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2608 tmp_dregno
= FLD (f_srcdst
);
2610 SI opval
= FLD (f_src1
);
2611 * FLD (i_dst
) = opval
;
2612 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2616 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2617 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
2621 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2622 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
2626 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
2627 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
2635 CASE (sem
, INSN_MODPC
) : /* modpc $src1, $src2, $dst */
2637 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2638 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2639 #define FLD(f) abuf->fields.sfmt_emul1.f
2640 int UNUSED written
= 0;
2641 IADDR UNUSED pc
= abuf
->addr
;
2642 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2645 SI opval
= * FLD (i_src2
);
2646 * FLD (i_dst
) = opval
;
2647 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2654 CASE (sem
, INSN_MODAC
) : /* modac $src1, $src2, $dst */
2656 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2657 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2658 #define FLD(f) abuf->fields.sfmt_emul1.f
2659 int UNUSED written
= 0;
2660 IADDR UNUSED pc
= abuf
->addr
;
2661 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2664 SI opval
= * FLD (i_src2
);
2665 * FLD (i_dst
) = opval
;
2666 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2673 CASE (sem
, INSN_LDA_OFFSET
) : /* lda $offset, $dst */
2675 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2676 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2677 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2678 int UNUSED written
= 0;
2679 IADDR UNUSED pc
= abuf
->addr
;
2680 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2683 SI opval
= FLD (f_offset
);
2684 * FLD (i_dst
) = opval
;
2685 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2692 CASE (sem
, INSN_LDA_INDIRECT_OFFSET
) : /* lda $offset($abase), $dst */
2694 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2695 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2696 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2697 int UNUSED written
= 0;
2698 IADDR UNUSED pc
= abuf
->addr
;
2699 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2702 SI opval
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
2703 * FLD (i_dst
) = opval
;
2704 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2711 CASE (sem
, INSN_LDA_INDIRECT
) : /* lda ($abase), $dst */
2713 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2714 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2715 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2716 int UNUSED written
= 0;
2717 IADDR UNUSED pc
= abuf
->addr
;
2718 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2721 SI opval
= * FLD (i_abase
);
2722 * FLD (i_dst
) = opval
;
2723 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2730 CASE (sem
, INSN_LDA_INDIRECT_INDEX
) : /* lda ($abase)[$index*S$scale], $dst */
2732 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2733 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2734 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2735 int UNUSED written
= 0;
2736 IADDR UNUSED pc
= abuf
->addr
;
2737 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2740 SI opval
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
2741 * FLD (i_dst
) = opval
;
2742 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2749 CASE (sem
, INSN_LDA_DISP
) : /* lda $optdisp, $dst */
2751 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2752 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2753 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2754 int UNUSED written
= 0;
2755 IADDR UNUSED pc
= abuf
->addr
;
2756 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2759 SI opval
= FLD (f_optdisp
);
2760 * FLD (i_dst
) = opval
;
2761 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2768 CASE (sem
, INSN_LDA_INDIRECT_DISP
) : /* lda $optdisp($abase), $dst */
2770 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2771 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2772 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2773 int UNUSED written
= 0;
2774 IADDR UNUSED pc
= abuf
->addr
;
2775 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2778 SI opval
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
2779 * FLD (i_dst
) = opval
;
2780 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2787 CASE (sem
, INSN_LDA_INDEX_DISP
) : /* lda $optdisp[$index*S$scale], $dst */
2789 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2790 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2791 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2792 int UNUSED written
= 0;
2793 IADDR UNUSED pc
= abuf
->addr
;
2794 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2797 SI opval
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
2798 * FLD (i_dst
) = opval
;
2799 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2806 CASE (sem
, INSN_LDA_INDIRECT_INDEX_DISP
) : /* lda $optdisp($abase)[$index*S$scale], $dst */
2808 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2809 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2810 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2811 int UNUSED written
= 0;
2812 IADDR UNUSED pc
= abuf
->addr
;
2813 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2816 SI opval
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2817 * FLD (i_dst
) = opval
;
2818 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2825 CASE (sem
, INSN_LD_OFFSET
) : /* ld $offset, $dst */
2827 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2828 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2829 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2830 int UNUSED written
= 0;
2831 IADDR UNUSED pc
= abuf
->addr
;
2832 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2835 SI opval
= GETMEMSI (current_cpu
, pc
, FLD (f_offset
));
2836 * FLD (i_dst
) = opval
;
2837 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2844 CASE (sem
, INSN_LD_INDIRECT_OFFSET
) : /* ld $offset($abase), $dst */
2846 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2847 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2848 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2849 int UNUSED written
= 0;
2850 IADDR UNUSED pc
= abuf
->addr
;
2851 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2854 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
2855 * FLD (i_dst
) = opval
;
2856 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2863 CASE (sem
, INSN_LD_INDIRECT
) : /* ld ($abase), $dst */
2865 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2866 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2867 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2868 int UNUSED written
= 0;
2869 IADDR UNUSED pc
= abuf
->addr
;
2870 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2873 SI opval
= GETMEMSI (current_cpu
, pc
, * FLD (i_abase
));
2874 * FLD (i_dst
) = opval
;
2875 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2882 CASE (sem
, INSN_LD_INDIRECT_INDEX
) : /* ld ($abase)[$index*S$scale], $dst */
2884 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2885 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2886 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2887 int UNUSED written
= 0;
2888 IADDR UNUSED pc
= abuf
->addr
;
2889 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2892 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2893 * FLD (i_dst
) = opval
;
2894 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2901 CASE (sem
, INSN_LD_DISP
) : /* ld $optdisp, $dst */
2903 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2904 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2905 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2906 int UNUSED written
= 0;
2907 IADDR UNUSED pc
= abuf
->addr
;
2908 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2911 SI opval
= GETMEMSI (current_cpu
, pc
, FLD (f_optdisp
));
2912 * FLD (i_dst
) = opval
;
2913 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2920 CASE (sem
, INSN_LD_INDIRECT_DISP
) : /* ld $optdisp($abase), $dst */
2922 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2923 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2924 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2925 int UNUSED written
= 0;
2926 IADDR UNUSED pc
= abuf
->addr
;
2927 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2930 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
2931 * FLD (i_dst
) = opval
;
2932 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2939 CASE (sem
, INSN_LD_INDEX_DISP
) : /* ld $optdisp[$index*S$scale], $dst */
2941 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2942 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2943 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2944 int UNUSED written
= 0;
2945 IADDR UNUSED pc
= abuf
->addr
;
2946 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2949 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2950 * FLD (i_dst
) = opval
;
2951 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2958 CASE (sem
, INSN_LD_INDIRECT_INDEX_DISP
) : /* ld $optdisp($abase)[$index*S$scale], $dst */
2960 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2961 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2962 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2963 int UNUSED written
= 0;
2964 IADDR UNUSED pc
= abuf
->addr
;
2965 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2968 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
2969 * FLD (i_dst
) = opval
;
2970 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2977 CASE (sem
, INSN_LDOB_OFFSET
) : /* ldob $offset, $dst */
2979 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2980 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2981 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2982 int UNUSED written
= 0;
2983 IADDR UNUSED pc
= abuf
->addr
;
2984 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2987 SI opval
= GETMEMUQI (current_cpu
, pc
, FLD (f_offset
));
2988 * FLD (i_dst
) = opval
;
2989 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2996 CASE (sem
, INSN_LDOB_INDIRECT_OFFSET
) : /* ldob $offset($abase), $dst */
2998 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
2999 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3000 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3001 int UNUSED written
= 0;
3002 IADDR UNUSED pc
= abuf
->addr
;
3003 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3006 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3007 * FLD (i_dst
) = opval
;
3008 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3015 CASE (sem
, INSN_LDOB_INDIRECT
) : /* ldob ($abase), $dst */
3017 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3018 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3019 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3020 int UNUSED written
= 0;
3021 IADDR UNUSED pc
= abuf
->addr
;
3022 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3025 SI opval
= GETMEMUQI (current_cpu
, pc
, * FLD (i_abase
));
3026 * FLD (i_dst
) = opval
;
3027 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3034 CASE (sem
, INSN_LDOB_INDIRECT_INDEX
) : /* ldob ($abase)[$index*S$scale], $dst */
3036 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3037 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3038 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3039 int UNUSED written
= 0;
3040 IADDR UNUSED pc
= abuf
->addr
;
3041 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3044 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3045 * FLD (i_dst
) = opval
;
3046 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3053 CASE (sem
, INSN_LDOB_DISP
) : /* ldob $optdisp, $dst */
3055 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3056 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3057 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3058 int UNUSED written
= 0;
3059 IADDR UNUSED pc
= abuf
->addr
;
3060 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3063 SI opval
= GETMEMUQI (current_cpu
, pc
, FLD (f_optdisp
));
3064 * FLD (i_dst
) = opval
;
3065 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3072 CASE (sem
, INSN_LDOB_INDIRECT_DISP
) : /* ldob $optdisp($abase), $dst */
3074 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3075 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3076 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3077 int UNUSED written
= 0;
3078 IADDR UNUSED pc
= abuf
->addr
;
3079 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3082 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3083 * FLD (i_dst
) = opval
;
3084 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3091 CASE (sem
, INSN_LDOB_INDEX_DISP
) : /* ldob $optdisp[$index*S$scale], $dst */
3093 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3094 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3095 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3096 int UNUSED written
= 0;
3097 IADDR UNUSED pc
= abuf
->addr
;
3098 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3101 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3102 * FLD (i_dst
) = opval
;
3103 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3110 CASE (sem
, INSN_LDOB_INDIRECT_INDEX_DISP
) : /* ldob $optdisp($abase)[$index*S$scale], $dst */
3112 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3113 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3114 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3115 int UNUSED written
= 0;
3116 IADDR UNUSED pc
= abuf
->addr
;
3117 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3120 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3121 * FLD (i_dst
) = opval
;
3122 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3129 CASE (sem
, INSN_LDOS_OFFSET
) : /* ldos $offset, $dst */
3131 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3132 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3133 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3134 int UNUSED written
= 0;
3135 IADDR UNUSED pc
= abuf
->addr
;
3136 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3139 SI opval
= GETMEMUHI (current_cpu
, pc
, FLD (f_offset
));
3140 * FLD (i_dst
) = opval
;
3141 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3148 CASE (sem
, INSN_LDOS_INDIRECT_OFFSET
) : /* ldos $offset($abase), $dst */
3150 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3151 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3152 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3153 int UNUSED written
= 0;
3154 IADDR UNUSED pc
= abuf
->addr
;
3155 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3158 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3159 * FLD (i_dst
) = opval
;
3160 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3167 CASE (sem
, INSN_LDOS_INDIRECT
) : /* ldos ($abase), $dst */
3169 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3170 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3171 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3172 int UNUSED written
= 0;
3173 IADDR UNUSED pc
= abuf
->addr
;
3174 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3177 SI opval
= GETMEMUHI (current_cpu
, pc
, * FLD (i_abase
));
3178 * FLD (i_dst
) = opval
;
3179 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3186 CASE (sem
, INSN_LDOS_INDIRECT_INDEX
) : /* ldos ($abase)[$index*S$scale], $dst */
3188 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3189 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3190 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3191 int UNUSED written
= 0;
3192 IADDR UNUSED pc
= abuf
->addr
;
3193 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3196 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3197 * FLD (i_dst
) = opval
;
3198 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3205 CASE (sem
, INSN_LDOS_DISP
) : /* ldos $optdisp, $dst */
3207 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3208 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3209 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3210 int UNUSED written
= 0;
3211 IADDR UNUSED pc
= abuf
->addr
;
3212 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3215 SI opval
= GETMEMUHI (current_cpu
, pc
, FLD (f_optdisp
));
3216 * FLD (i_dst
) = opval
;
3217 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3224 CASE (sem
, INSN_LDOS_INDIRECT_DISP
) : /* ldos $optdisp($abase), $dst */
3226 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3227 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3228 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3229 int UNUSED written
= 0;
3230 IADDR UNUSED pc
= abuf
->addr
;
3231 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3234 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3235 * FLD (i_dst
) = opval
;
3236 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3243 CASE (sem
, INSN_LDOS_INDEX_DISP
) : /* ldos $optdisp[$index*S$scale], $dst */
3245 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3246 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3247 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3248 int UNUSED written
= 0;
3249 IADDR UNUSED pc
= abuf
->addr
;
3250 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3253 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3254 * FLD (i_dst
) = opval
;
3255 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3262 CASE (sem
, INSN_LDOS_INDIRECT_INDEX_DISP
) : /* ldos $optdisp($abase)[$index*S$scale], $dst */
3264 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3265 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3266 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3267 int UNUSED written
= 0;
3268 IADDR UNUSED pc
= abuf
->addr
;
3269 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3272 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3273 * FLD (i_dst
) = opval
;
3274 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3281 CASE (sem
, INSN_LDIB_OFFSET
) : /* ldib $offset, $dst */
3283 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3284 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3285 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3286 int UNUSED written
= 0;
3287 IADDR UNUSED pc
= abuf
->addr
;
3288 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3291 SI opval
= GETMEMQI (current_cpu
, pc
, FLD (f_offset
));
3292 * FLD (i_dst
) = opval
;
3293 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3300 CASE (sem
, INSN_LDIB_INDIRECT_OFFSET
) : /* ldib $offset($abase), $dst */
3302 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3303 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3304 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3305 int UNUSED written
= 0;
3306 IADDR UNUSED pc
= abuf
->addr
;
3307 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3310 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3311 * FLD (i_dst
) = opval
;
3312 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3319 CASE (sem
, INSN_LDIB_INDIRECT
) : /* ldib ($abase), $dst */
3321 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3322 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3323 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3324 int UNUSED written
= 0;
3325 IADDR UNUSED pc
= abuf
->addr
;
3326 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3329 SI opval
= GETMEMQI (current_cpu
, pc
, * FLD (i_abase
));
3330 * FLD (i_dst
) = opval
;
3331 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3338 CASE (sem
, INSN_LDIB_INDIRECT_INDEX
) : /* ldib ($abase)[$index*S$scale], $dst */
3340 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3341 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3342 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3343 int UNUSED written
= 0;
3344 IADDR UNUSED pc
= abuf
->addr
;
3345 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3348 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3349 * FLD (i_dst
) = opval
;
3350 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3357 CASE (sem
, INSN_LDIB_DISP
) : /* ldib $optdisp, $dst */
3359 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3360 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3361 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3362 int UNUSED written
= 0;
3363 IADDR UNUSED pc
= abuf
->addr
;
3364 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3367 SI opval
= GETMEMQI (current_cpu
, pc
, FLD (f_optdisp
));
3368 * FLD (i_dst
) = opval
;
3369 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3376 CASE (sem
, INSN_LDIB_INDIRECT_DISP
) : /* ldib $optdisp($abase), $dst */
3378 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3379 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3380 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3381 int UNUSED written
= 0;
3382 IADDR UNUSED pc
= abuf
->addr
;
3383 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3386 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3387 * FLD (i_dst
) = opval
;
3388 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3395 CASE (sem
, INSN_LDIB_INDEX_DISP
) : /* ldib $optdisp[$index*S$scale], $dst */
3397 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3398 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3399 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3400 int UNUSED written
= 0;
3401 IADDR UNUSED pc
= abuf
->addr
;
3402 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3405 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3406 * FLD (i_dst
) = opval
;
3407 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3414 CASE (sem
, INSN_LDIB_INDIRECT_INDEX_DISP
) : /* ldib $optdisp($abase)[$index*S$scale], $dst */
3416 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3417 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3418 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3419 int UNUSED written
= 0;
3420 IADDR UNUSED pc
= abuf
->addr
;
3421 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3424 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3425 * FLD (i_dst
) = opval
;
3426 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3433 CASE (sem
, INSN_LDIS_OFFSET
) : /* ldis $offset, $dst */
3435 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3436 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3437 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3438 int UNUSED written
= 0;
3439 IADDR UNUSED pc
= abuf
->addr
;
3440 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3443 SI opval
= GETMEMHI (current_cpu
, pc
, FLD (f_offset
));
3444 * FLD (i_dst
) = opval
;
3445 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3452 CASE (sem
, INSN_LDIS_INDIRECT_OFFSET
) : /* ldis $offset($abase), $dst */
3454 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3455 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3456 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3457 int UNUSED written
= 0;
3458 IADDR UNUSED pc
= abuf
->addr
;
3459 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3462 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3463 * FLD (i_dst
) = opval
;
3464 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3471 CASE (sem
, INSN_LDIS_INDIRECT
) : /* ldis ($abase), $dst */
3473 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3474 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3475 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3476 int UNUSED written
= 0;
3477 IADDR UNUSED pc
= abuf
->addr
;
3478 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3481 SI opval
= GETMEMHI (current_cpu
, pc
, * FLD (i_abase
));
3482 * FLD (i_dst
) = opval
;
3483 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3490 CASE (sem
, INSN_LDIS_INDIRECT_INDEX
) : /* ldis ($abase)[$index*S$scale], $dst */
3492 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3493 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3494 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3495 int UNUSED written
= 0;
3496 IADDR UNUSED pc
= abuf
->addr
;
3497 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3500 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3501 * FLD (i_dst
) = opval
;
3502 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3509 CASE (sem
, INSN_LDIS_DISP
) : /* ldis $optdisp, $dst */
3511 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3512 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3513 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3514 int UNUSED written
= 0;
3515 IADDR UNUSED pc
= abuf
->addr
;
3516 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3519 SI opval
= GETMEMHI (current_cpu
, pc
, FLD (f_optdisp
));
3520 * FLD (i_dst
) = opval
;
3521 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3528 CASE (sem
, INSN_LDIS_INDIRECT_DISP
) : /* ldis $optdisp($abase), $dst */
3530 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3531 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3532 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3533 int UNUSED written
= 0;
3534 IADDR UNUSED pc
= abuf
->addr
;
3535 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3538 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3539 * FLD (i_dst
) = opval
;
3540 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3547 CASE (sem
, INSN_LDIS_INDEX_DISP
) : /* ldis $optdisp[$index*S$scale], $dst */
3549 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3550 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3551 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3552 int UNUSED written
= 0;
3553 IADDR UNUSED pc
= abuf
->addr
;
3554 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3557 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3558 * FLD (i_dst
) = opval
;
3559 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3566 CASE (sem
, INSN_LDIS_INDIRECT_INDEX_DISP
) : /* ldis $optdisp($abase)[$index*S$scale], $dst */
3568 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3569 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3570 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3571 int UNUSED written
= 0;
3572 IADDR UNUSED pc
= abuf
->addr
;
3573 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3576 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3577 * FLD (i_dst
) = opval
;
3578 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3585 CASE (sem
, INSN_LDL_OFFSET
) : /* ldl $offset, $dst */
3587 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3588 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3589 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3590 int UNUSED written
= 0;
3591 IADDR UNUSED pc
= abuf
->addr
;
3592 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3597 tmp_dregno
= FLD (f_srcdst
);
3598 tmp_temp
= FLD (f_offset
);
3600 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3601 * FLD (i_dst
) = opval
;
3602 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3605 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3606 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3607 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3615 CASE (sem
, INSN_LDL_INDIRECT_OFFSET
) : /* ldl $offset($abase), $dst */
3617 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3618 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3619 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3620 int UNUSED written
= 0;
3621 IADDR UNUSED pc
= abuf
->addr
;
3622 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3627 tmp_dregno
= FLD (f_srcdst
);
3628 tmp_temp
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
3630 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3631 * FLD (i_dst
) = opval
;
3632 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3635 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3636 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3637 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3645 CASE (sem
, INSN_LDL_INDIRECT
) : /* ldl ($abase), $dst */
3647 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3648 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3649 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3650 int UNUSED written
= 0;
3651 IADDR UNUSED pc
= abuf
->addr
;
3652 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3657 tmp_dregno
= FLD (f_srcdst
);
3658 tmp_temp
= * FLD (i_abase
);
3660 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3661 * FLD (i_dst
) = opval
;
3662 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3665 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3666 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3667 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3675 CASE (sem
, INSN_LDL_INDIRECT_INDEX
) : /* ldl ($abase)[$index*S$scale], $dst */
3677 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3678 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3679 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3680 int UNUSED written
= 0;
3681 IADDR UNUSED pc
= abuf
->addr
;
3682 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3687 tmp_dregno
= FLD (f_srcdst
);
3688 tmp_temp
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3690 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3691 * FLD (i_dst
) = opval
;
3692 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3695 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3696 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3697 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3705 CASE (sem
, INSN_LDL_DISP
) : /* ldl $optdisp, $dst */
3707 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3708 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3709 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3710 int UNUSED written
= 0;
3711 IADDR UNUSED pc
= abuf
->addr
;
3712 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3717 tmp_dregno
= FLD (f_srcdst
);
3718 tmp_temp
= FLD (f_optdisp
);
3720 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3721 * FLD (i_dst
) = opval
;
3722 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3725 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3726 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3727 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3735 CASE (sem
, INSN_LDL_INDIRECT_DISP
) : /* ldl $optdisp($abase), $dst */
3737 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3738 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3739 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3740 int UNUSED written
= 0;
3741 IADDR UNUSED pc
= abuf
->addr
;
3742 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3747 tmp_dregno
= FLD (f_srcdst
);
3748 tmp_temp
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
3750 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3751 * FLD (i_dst
) = opval
;
3752 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3755 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3756 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3757 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3765 CASE (sem
, INSN_LDL_INDEX_DISP
) : /* ldl $optdisp[$index*S$scale], $dst */
3767 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3768 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3769 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3770 int UNUSED written
= 0;
3771 IADDR UNUSED pc
= abuf
->addr
;
3772 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3777 tmp_dregno
= FLD (f_srcdst
);
3778 tmp_temp
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3780 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3781 * FLD (i_dst
) = opval
;
3782 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3785 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3786 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3787 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3795 CASE (sem
, INSN_LDL_INDIRECT_INDEX_DISP
) : /* ldl $optdisp($abase)[$index*S$scale], $dst */
3797 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3798 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3799 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3800 int UNUSED written
= 0;
3801 IADDR UNUSED pc
= abuf
->addr
;
3802 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3807 tmp_dregno
= FLD (f_srcdst
);
3808 tmp_temp
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3810 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3811 * FLD (i_dst
) = opval
;
3812 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3815 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3816 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3817 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3825 CASE (sem
, INSN_LDT_OFFSET
) : /* ldt $offset, $dst */
3827 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3828 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3829 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3830 int UNUSED written
= 0;
3831 IADDR UNUSED pc
= abuf
->addr
;
3832 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3837 tmp_dregno
= FLD (f_srcdst
);
3838 tmp_temp
= FLD (f_offset
);
3840 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3841 * FLD (i_dst
) = opval
;
3842 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3845 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3846 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3847 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3850 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3851 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3852 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
3860 CASE (sem
, INSN_LDT_INDIRECT_OFFSET
) : /* ldt $offset($abase), $dst */
3862 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3863 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3864 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3865 int UNUSED written
= 0;
3866 IADDR UNUSED pc
= abuf
->addr
;
3867 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3872 tmp_dregno
= FLD (f_srcdst
);
3873 tmp_temp
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
3875 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3876 * FLD (i_dst
) = opval
;
3877 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3880 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3881 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3882 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3885 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3886 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3887 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
3895 CASE (sem
, INSN_LDT_INDIRECT
) : /* ldt ($abase), $dst */
3897 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3898 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3899 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3900 int UNUSED written
= 0;
3901 IADDR UNUSED pc
= abuf
->addr
;
3902 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3907 tmp_dregno
= FLD (f_srcdst
);
3908 tmp_temp
= * FLD (i_abase
);
3910 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3911 * FLD (i_dst
) = opval
;
3912 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3915 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3916 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3917 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3920 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3921 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3922 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
3930 CASE (sem
, INSN_LDT_INDIRECT_INDEX
) : /* ldt ($abase)[$index*S$scale], $dst */
3932 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3933 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3934 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3935 int UNUSED written
= 0;
3936 IADDR UNUSED pc
= abuf
->addr
;
3937 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3942 tmp_dregno
= FLD (f_srcdst
);
3943 tmp_temp
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3945 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3946 * FLD (i_dst
) = opval
;
3947 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3950 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3951 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3952 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3955 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3956 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3957 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
3965 CASE (sem
, INSN_LDT_DISP
) : /* ldt $optdisp, $dst */
3967 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
3968 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3969 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3970 int UNUSED written
= 0;
3971 IADDR UNUSED pc
= abuf
->addr
;
3972 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3977 tmp_dregno
= FLD (f_srcdst
);
3978 tmp_temp
= FLD (f_optdisp
);
3980 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3981 * FLD (i_dst
) = opval
;
3982 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3985 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3986 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3987 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
3990 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3991 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3992 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4000 CASE (sem
, INSN_LDT_INDIRECT_DISP
) : /* ldt $optdisp($abase), $dst */
4002 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4003 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4004 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4005 int UNUSED written
= 0;
4006 IADDR UNUSED pc
= abuf
->addr
;
4007 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4012 tmp_dregno
= FLD (f_srcdst
);
4013 tmp_temp
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
4015 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4016 * FLD (i_dst
) = opval
;
4017 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4020 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4021 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4022 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4025 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4026 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4027 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4035 CASE (sem
, INSN_LDT_INDEX_DISP
) : /* ldt $optdisp[$index*S$scale], $dst */
4037 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4038 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4039 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4040 int UNUSED written
= 0;
4041 IADDR UNUSED pc
= abuf
->addr
;
4042 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4047 tmp_dregno
= FLD (f_srcdst
);
4048 tmp_temp
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
4050 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4051 * FLD (i_dst
) = opval
;
4052 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4055 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4056 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4057 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4060 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4061 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4062 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4070 CASE (sem
, INSN_LDT_INDIRECT_INDEX_DISP
) : /* ldt $optdisp($abase)[$index*S$scale], $dst */
4072 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4073 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4074 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4075 int UNUSED written
= 0;
4076 IADDR UNUSED pc
= abuf
->addr
;
4077 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4082 tmp_dregno
= FLD (f_srcdst
);
4083 tmp_temp
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
4085 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4086 * FLD (i_dst
) = opval
;
4087 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4090 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4091 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4092 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4095 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4096 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4097 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4105 CASE (sem
, INSN_LDQ_OFFSET
) : /* ldq $offset, $dst */
4107 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4108 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4109 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
4110 int UNUSED written
= 0;
4111 IADDR UNUSED pc
= abuf
->addr
;
4112 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4117 tmp_dregno
= FLD (f_srcdst
);
4118 tmp_temp
= FLD (f_offset
);
4120 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4121 * FLD (i_dst
) = opval
;
4122 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4125 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4126 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4127 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4130 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4131 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4132 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4135 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4136 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4137 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
4145 CASE (sem
, INSN_LDQ_INDIRECT_OFFSET
) : /* ldq $offset($abase), $dst */
4147 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4148 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4149 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
4150 int UNUSED written
= 0;
4151 IADDR UNUSED pc
= abuf
->addr
;
4152 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4157 tmp_dregno
= FLD (f_srcdst
);
4158 tmp_temp
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
4160 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4161 * FLD (i_dst
) = opval
;
4162 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4165 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4166 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4167 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4170 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4171 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4172 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4175 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4176 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4177 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
4185 CASE (sem
, INSN_LDQ_INDIRECT
) : /* ldq ($abase), $dst */
4187 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4188 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4189 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
4190 int UNUSED written
= 0;
4191 IADDR UNUSED pc
= abuf
->addr
;
4192 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4197 tmp_dregno
= FLD (f_srcdst
);
4198 tmp_temp
= * FLD (i_abase
);
4200 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4201 * FLD (i_dst
) = opval
;
4202 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4205 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4206 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4207 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4210 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4211 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4212 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4215 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4216 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4217 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
4225 CASE (sem
, INSN_LDQ_INDIRECT_INDEX
) : /* ldq ($abase)[$index*S$scale], $dst */
4227 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4228 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4229 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4230 int UNUSED written
= 0;
4231 IADDR UNUSED pc
= abuf
->addr
;
4232 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4237 tmp_dregno
= FLD (f_srcdst
);
4238 tmp_temp
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
4240 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4241 * FLD (i_dst
) = opval
;
4242 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4245 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4246 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4247 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4250 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4251 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4252 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4255 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4256 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4257 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
4265 CASE (sem
, INSN_LDQ_DISP
) : /* ldq $optdisp, $dst */
4267 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4268 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4269 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4270 int UNUSED written
= 0;
4271 IADDR UNUSED pc
= abuf
->addr
;
4272 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4277 tmp_dregno
= FLD (f_srcdst
);
4278 tmp_temp
= FLD (f_optdisp
);
4280 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4281 * FLD (i_dst
) = opval
;
4282 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4285 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4286 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4287 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4290 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4291 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4292 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4295 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4296 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4297 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
4305 CASE (sem
, INSN_LDQ_INDIRECT_DISP
) : /* ldq $optdisp($abase), $dst */
4307 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4308 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4309 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4310 int UNUSED written
= 0;
4311 IADDR UNUSED pc
= abuf
->addr
;
4312 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4317 tmp_dregno
= FLD (f_srcdst
);
4318 tmp_temp
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
4320 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4321 * FLD (i_dst
) = opval
;
4322 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4325 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4326 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4327 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4330 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4331 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4332 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4335 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4336 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4337 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
4345 CASE (sem
, INSN_LDQ_INDEX_DISP
) : /* ldq $optdisp[$index*S$scale], $dst */
4347 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4348 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4349 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4350 int UNUSED written
= 0;
4351 IADDR UNUSED pc
= abuf
->addr
;
4352 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4357 tmp_dregno
= FLD (f_srcdst
);
4358 tmp_temp
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
4360 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4361 * FLD (i_dst
) = opval
;
4362 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4365 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4366 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4367 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4370 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4371 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4372 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4375 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4376 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4377 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
4385 CASE (sem
, INSN_LDQ_INDIRECT_INDEX_DISP
) : /* ldq $optdisp($abase)[$index*S$scale], $dst */
4387 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4388 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4389 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4390 int UNUSED written
= 0;
4391 IADDR UNUSED pc
= abuf
->addr
;
4392 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4397 tmp_dregno
= FLD (f_srcdst
);
4398 tmp_temp
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
4400 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4401 * FLD (i_dst
) = opval
;
4402 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4405 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4406 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4407 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-1", 'x', opval
);
4410 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4411 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4412 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-2", 'x', opval
);
4415 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4416 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4417 TRACE_RESULT (current_cpu
, abuf
, "gr-add:-VM-index-of-dst-3", 'x', opval
);
4425 CASE (sem
, INSN_ST_OFFSET
) : /* st $st_src, $offset */
4427 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4428 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4429 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4430 int UNUSED written
= 0;
4431 IADDR UNUSED pc
= abuf
->addr
;
4432 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4435 SI opval
= * FLD (i_st_src
);
4436 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
4437 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4444 CASE (sem
, INSN_ST_INDIRECT_OFFSET
) : /* st $st_src, $offset($abase) */
4446 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4447 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4448 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4449 int UNUSED written
= 0;
4450 IADDR UNUSED pc
= abuf
->addr
;
4451 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4454 SI opval
= * FLD (i_st_src
);
4455 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4456 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4463 CASE (sem
, INSN_ST_INDIRECT
) : /* st $st_src, ($abase) */
4465 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4466 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4467 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4468 int UNUSED written
= 0;
4469 IADDR UNUSED pc
= abuf
->addr
;
4470 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4473 SI opval
= * FLD (i_st_src
);
4474 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4475 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4482 CASE (sem
, INSN_ST_INDIRECT_INDEX
) : /* st $st_src, ($abase)[$index*S$scale] */
4484 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4485 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4486 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4487 int UNUSED written
= 0;
4488 IADDR UNUSED pc
= abuf
->addr
;
4489 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4492 SI opval
= * FLD (i_st_src
);
4493 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4494 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4501 CASE (sem
, INSN_ST_DISP
) : /* st $st_src, $optdisp */
4503 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4504 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4505 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4506 int UNUSED written
= 0;
4507 IADDR UNUSED pc
= abuf
->addr
;
4508 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4511 SI opval
= * FLD (i_st_src
);
4512 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4513 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4520 CASE (sem
, INSN_ST_INDIRECT_DISP
) : /* st $st_src, $optdisp($abase) */
4522 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4523 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4524 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4525 int UNUSED written
= 0;
4526 IADDR UNUSED pc
= abuf
->addr
;
4527 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4530 SI opval
= * FLD (i_st_src
);
4531 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4532 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4539 CASE (sem
, INSN_ST_INDEX_DISP
) : /* st $st_src, $optdisp[$index*S$scale */
4541 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4542 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4543 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4544 int UNUSED written
= 0;
4545 IADDR UNUSED pc
= abuf
->addr
;
4546 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4549 SI opval
= * FLD (i_st_src
);
4550 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4551 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4558 CASE (sem
, INSN_ST_INDIRECT_INDEX_DISP
) : /* st $st_src, $optdisp($abase)[$index*S$scale] */
4560 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4561 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4562 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4563 int UNUSED written
= 0;
4564 IADDR UNUSED pc
= abuf
->addr
;
4565 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4568 SI opval
= * FLD (i_st_src
);
4569 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4570 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4577 CASE (sem
, INSN_STOB_OFFSET
) : /* stob $st_src, $offset */
4579 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4580 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4581 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4582 int UNUSED written
= 0;
4583 IADDR UNUSED pc
= abuf
->addr
;
4584 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4587 QI opval
= * FLD (i_st_src
);
4588 SETMEMQI (current_cpu
, pc
, FLD (f_offset
), opval
);
4589 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4596 CASE (sem
, INSN_STOB_INDIRECT_OFFSET
) : /* stob $st_src, $offset($abase) */
4598 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4599 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4600 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4601 int UNUSED written
= 0;
4602 IADDR UNUSED pc
= abuf
->addr
;
4603 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4606 QI opval
= * FLD (i_st_src
);
4607 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4608 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4615 CASE (sem
, INSN_STOB_INDIRECT
) : /* stob $st_src, ($abase) */
4617 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4618 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4619 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4620 int UNUSED written
= 0;
4621 IADDR UNUSED pc
= abuf
->addr
;
4622 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4625 QI opval
= * FLD (i_st_src
);
4626 SETMEMQI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4627 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4634 CASE (sem
, INSN_STOB_INDIRECT_INDEX
) : /* stob $st_src, ($abase)[$index*S$scale] */
4636 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4637 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4638 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4639 int UNUSED written
= 0;
4640 IADDR UNUSED pc
= abuf
->addr
;
4641 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4644 QI opval
= * FLD (i_st_src
);
4645 SETMEMQI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4646 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4653 CASE (sem
, INSN_STOB_DISP
) : /* stob $st_src, $optdisp */
4655 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4656 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4657 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4658 int UNUSED written
= 0;
4659 IADDR UNUSED pc
= abuf
->addr
;
4660 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4663 QI opval
= * FLD (i_st_src
);
4664 SETMEMQI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4665 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4672 CASE (sem
, INSN_STOB_INDIRECT_DISP
) : /* stob $st_src, $optdisp($abase) */
4674 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4675 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4676 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4677 int UNUSED written
= 0;
4678 IADDR UNUSED pc
= abuf
->addr
;
4679 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4682 QI opval
= * FLD (i_st_src
);
4683 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4684 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4691 CASE (sem
, INSN_STOB_INDEX_DISP
) : /* stob $st_src, $optdisp[$index*S$scale */
4693 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4694 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4695 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4696 int UNUSED written
= 0;
4697 IADDR UNUSED pc
= abuf
->addr
;
4698 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4701 QI opval
= * FLD (i_st_src
);
4702 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4703 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4710 CASE (sem
, INSN_STOB_INDIRECT_INDEX_DISP
) : /* stob $st_src, $optdisp($abase)[$index*S$scale] */
4712 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4713 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4714 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4715 int UNUSED written
= 0;
4716 IADDR UNUSED pc
= abuf
->addr
;
4717 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4720 QI opval
= * FLD (i_st_src
);
4721 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4722 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4729 CASE (sem
, INSN_STOS_OFFSET
) : /* stos $st_src, $offset */
4731 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4732 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4733 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4734 int UNUSED written
= 0;
4735 IADDR UNUSED pc
= abuf
->addr
;
4736 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4739 HI opval
= * FLD (i_st_src
);
4740 SETMEMHI (current_cpu
, pc
, FLD (f_offset
), opval
);
4741 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4748 CASE (sem
, INSN_STOS_INDIRECT_OFFSET
) : /* stos $st_src, $offset($abase) */
4750 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4751 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4752 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4753 int UNUSED written
= 0;
4754 IADDR UNUSED pc
= abuf
->addr
;
4755 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4758 HI opval
= * FLD (i_st_src
);
4759 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4760 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4767 CASE (sem
, INSN_STOS_INDIRECT
) : /* stos $st_src, ($abase) */
4769 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4770 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4771 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4772 int UNUSED written
= 0;
4773 IADDR UNUSED pc
= abuf
->addr
;
4774 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4777 HI opval
= * FLD (i_st_src
);
4778 SETMEMHI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4779 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4786 CASE (sem
, INSN_STOS_INDIRECT_INDEX
) : /* stos $st_src, ($abase)[$index*S$scale] */
4788 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4789 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4790 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4791 int UNUSED written
= 0;
4792 IADDR UNUSED pc
= abuf
->addr
;
4793 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4796 HI opval
= * FLD (i_st_src
);
4797 SETMEMHI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4798 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4805 CASE (sem
, INSN_STOS_DISP
) : /* stos $st_src, $optdisp */
4807 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4808 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4809 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4810 int UNUSED written
= 0;
4811 IADDR UNUSED pc
= abuf
->addr
;
4812 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4815 HI opval
= * FLD (i_st_src
);
4816 SETMEMHI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4817 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4824 CASE (sem
, INSN_STOS_INDIRECT_DISP
) : /* stos $st_src, $optdisp($abase) */
4826 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4827 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4828 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4829 int UNUSED written
= 0;
4830 IADDR UNUSED pc
= abuf
->addr
;
4831 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4834 HI opval
= * FLD (i_st_src
);
4835 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4836 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4843 CASE (sem
, INSN_STOS_INDEX_DISP
) : /* stos $st_src, $optdisp[$index*S$scale */
4845 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4846 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4847 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4848 int UNUSED written
= 0;
4849 IADDR UNUSED pc
= abuf
->addr
;
4850 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4853 HI opval
= * FLD (i_st_src
);
4854 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4855 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4862 CASE (sem
, INSN_STOS_INDIRECT_INDEX_DISP
) : /* stos $st_src, $optdisp($abase)[$index*S$scale] */
4864 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4865 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4866 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4867 int UNUSED written
= 0;
4868 IADDR UNUSED pc
= abuf
->addr
;
4869 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4872 HI opval
= * FLD (i_st_src
);
4873 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4874 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4881 CASE (sem
, INSN_STL_OFFSET
) : /* stl $st_src, $offset */
4883 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4884 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4885 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4886 int UNUSED written
= 0;
4887 IADDR UNUSED pc
= abuf
->addr
;
4888 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4892 tmp_sregno
= FLD (f_srcdst
);
4894 SI opval
= * FLD (i_st_src
);
4895 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
4896 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4899 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4900 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 4), opval
);
4901 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4909 CASE (sem
, INSN_STL_INDIRECT_OFFSET
) : /* stl $st_src, $offset($abase) */
4911 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4912 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4913 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4914 int UNUSED written
= 0;
4915 IADDR UNUSED pc
= abuf
->addr
;
4916 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4920 tmp_sregno
= FLD (f_srcdst
);
4922 SI opval
= * FLD (i_st_src
);
4923 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4924 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4927 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4928 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 4), opval
);
4929 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4937 CASE (sem
, INSN_STL_INDIRECT
) : /* stl $st_src, ($abase) */
4939 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4940 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4941 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4942 int UNUSED written
= 0;
4943 IADDR UNUSED pc
= abuf
->addr
;
4944 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4948 tmp_sregno
= FLD (f_srcdst
);
4950 SI opval
= * FLD (i_st_src
);
4951 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4952 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4955 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4956 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 4), opval
);
4957 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4965 CASE (sem
, INSN_STL_INDIRECT_INDEX
) : /* stl $st_src, ($abase)[$index*S$scale] */
4967 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4968 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4969 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4970 int UNUSED written
= 0;
4971 IADDR UNUSED pc
= abuf
->addr
;
4972 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4976 tmp_sregno
= FLD (f_srcdst
);
4978 SI opval
= * FLD (i_st_src
);
4979 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4980 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4983 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4984 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
4985 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4993 CASE (sem
, INSN_STL_DISP
) : /* stl $st_src, $optdisp */
4995 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
4996 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4997 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4998 int UNUSED written
= 0;
4999 IADDR UNUSED pc
= abuf
->addr
;
5000 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5004 tmp_sregno
= FLD (f_srcdst
);
5006 SI opval
= * FLD (i_st_src
);
5007 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
5008 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5011 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5012 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 4), opval
);
5013 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5021 CASE (sem
, INSN_STL_INDIRECT_DISP
) : /* stl $st_src, $optdisp($abase) */
5023 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5024 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5025 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5026 int UNUSED written
= 0;
5027 IADDR UNUSED pc
= abuf
->addr
;
5028 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5032 tmp_sregno
= FLD (f_srcdst
);
5034 SI opval
= * FLD (i_st_src
);
5035 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
5036 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5039 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5040 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 4), opval
);
5041 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5049 CASE (sem
, INSN_STL_INDEX_DISP
) : /* stl $st_src, $optdisp[$index*S$scale */
5051 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5052 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5053 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5054 int UNUSED written
= 0;
5055 IADDR UNUSED pc
= abuf
->addr
;
5056 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5060 tmp_sregno
= FLD (f_srcdst
);
5062 SI opval
= * FLD (i_st_src
);
5063 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5064 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5067 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5068 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5069 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5077 CASE (sem
, INSN_STL_INDIRECT_INDEX_DISP
) : /* stl $st_src, $optdisp($abase)[$index*S$scale] */
5079 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5080 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5081 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5082 int UNUSED written
= 0;
5083 IADDR UNUSED pc
= abuf
->addr
;
5084 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5088 tmp_sregno
= FLD (f_srcdst
);
5090 SI opval
= * FLD (i_st_src
);
5091 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
5092 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5095 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5096 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 4), opval
);
5097 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5105 CASE (sem
, INSN_STT_OFFSET
) : /* stt $st_src, $offset */
5107 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5108 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5109 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5110 int UNUSED written
= 0;
5111 IADDR UNUSED pc
= abuf
->addr
;
5112 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5116 tmp_sregno
= FLD (f_srcdst
);
5118 SI opval
= * FLD (i_st_src
);
5119 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
5120 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5123 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5124 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 4), opval
);
5125 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5128 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5129 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 8), opval
);
5130 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5138 CASE (sem
, INSN_STT_INDIRECT_OFFSET
) : /* stt $st_src, $offset($abase) */
5140 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5141 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5142 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5143 int UNUSED written
= 0;
5144 IADDR UNUSED pc
= abuf
->addr
;
5145 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5149 tmp_sregno
= FLD (f_srcdst
);
5151 SI opval
= * FLD (i_st_src
);
5152 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
5153 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5156 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5157 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 4), opval
);
5158 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5161 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5162 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 8), opval
);
5163 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5171 CASE (sem
, INSN_STT_INDIRECT
) : /* stt $st_src, ($abase) */
5173 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5174 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5175 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5176 int UNUSED written
= 0;
5177 IADDR UNUSED pc
= abuf
->addr
;
5178 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5182 tmp_sregno
= FLD (f_srcdst
);
5184 SI opval
= * FLD (i_st_src
);
5185 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
5186 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5189 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5190 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 4), opval
);
5191 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5194 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5195 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 8), opval
);
5196 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5204 CASE (sem
, INSN_STT_INDIRECT_INDEX
) : /* stt $st_src, ($abase)[$index*S$scale] */
5206 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5207 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5208 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5209 int UNUSED written
= 0;
5210 IADDR UNUSED pc
= abuf
->addr
;
5211 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5215 tmp_sregno
= FLD (f_srcdst
);
5217 SI opval
= * FLD (i_st_src
);
5218 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5219 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5222 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5223 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5224 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5227 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5228 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5229 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5237 CASE (sem
, INSN_STT_DISP
) : /* stt $st_src, $optdisp */
5239 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5240 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5241 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5242 int UNUSED written
= 0;
5243 IADDR UNUSED pc
= abuf
->addr
;
5244 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5248 tmp_sregno
= FLD (f_srcdst
);
5250 SI opval
= * FLD (i_st_src
);
5251 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
5252 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5255 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5256 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 4), opval
);
5257 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5260 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5261 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 8), opval
);
5262 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5270 CASE (sem
, INSN_STT_INDIRECT_DISP
) : /* stt $st_src, $optdisp($abase) */
5272 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5273 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5274 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5275 int UNUSED written
= 0;
5276 IADDR UNUSED pc
= abuf
->addr
;
5277 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5281 tmp_sregno
= FLD (f_srcdst
);
5283 SI opval
= * FLD (i_st_src
);
5284 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
5285 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5288 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5289 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 4), opval
);
5290 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5293 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5294 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 8), opval
);
5295 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5303 CASE (sem
, INSN_STT_INDEX_DISP
) : /* stt $st_src, $optdisp[$index*S$scale */
5305 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5306 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5307 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5308 int UNUSED written
= 0;
5309 IADDR UNUSED pc
= abuf
->addr
;
5310 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5314 tmp_sregno
= FLD (f_srcdst
);
5316 SI opval
= * FLD (i_st_src
);
5317 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5318 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5321 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5322 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5323 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5326 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5327 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5328 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5336 CASE (sem
, INSN_STT_INDIRECT_INDEX_DISP
) : /* stt $st_src, $optdisp($abase)[$index*S$scale] */
5338 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5339 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5340 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5341 int UNUSED written
= 0;
5342 IADDR UNUSED pc
= abuf
->addr
;
5343 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5347 tmp_sregno
= FLD (f_srcdst
);
5349 SI opval
= * FLD (i_st_src
);
5350 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
5351 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5354 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5355 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 4), opval
);
5356 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5359 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5360 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 8), opval
);
5361 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5369 CASE (sem
, INSN_STQ_OFFSET
) : /* stq $st_src, $offset */
5371 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5372 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5373 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5374 int UNUSED written
= 0;
5375 IADDR UNUSED pc
= abuf
->addr
;
5376 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5380 tmp_sregno
= FLD (f_srcdst
);
5382 SI opval
= * FLD (i_st_src
);
5383 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
5384 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5387 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5388 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 4), opval
);
5389 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5392 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5393 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 8), opval
);
5394 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5397 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5398 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 12), opval
);
5399 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5407 CASE (sem
, INSN_STQ_INDIRECT_OFFSET
) : /* stq $st_src, $offset($abase) */
5409 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5410 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5411 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5412 int UNUSED written
= 0;
5413 IADDR UNUSED pc
= abuf
->addr
;
5414 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5418 tmp_sregno
= FLD (f_srcdst
);
5420 SI opval
= * FLD (i_st_src
);
5421 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
5422 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5425 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5426 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 4), opval
);
5427 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5430 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5431 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 8), opval
);
5432 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5435 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5436 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 12), opval
);
5437 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5445 CASE (sem
, INSN_STQ_INDIRECT
) : /* stq $st_src, ($abase) */
5447 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5448 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5449 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5450 int UNUSED written
= 0;
5451 IADDR UNUSED pc
= abuf
->addr
;
5452 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5456 tmp_sregno
= FLD (f_srcdst
);
5458 SI opval
= * FLD (i_st_src
);
5459 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
5460 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5463 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5464 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 4), opval
);
5465 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5468 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5469 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 8), opval
);
5470 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5473 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5474 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 12), opval
);
5475 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5483 CASE (sem
, INSN_STQ_INDIRECT_INDEX
) : /* stq $st_src, ($abase)[$index*S$scale] */
5485 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5486 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5487 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5488 int UNUSED written
= 0;
5489 IADDR UNUSED pc
= abuf
->addr
;
5490 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5494 tmp_sregno
= FLD (f_srcdst
);
5496 SI opval
= * FLD (i_st_src
);
5497 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5498 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5501 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5502 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5503 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5506 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5507 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5508 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5511 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5512 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 12), opval
);
5513 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5521 CASE (sem
, INSN_STQ_DISP
) : /* stq $st_src, $optdisp */
5523 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5524 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5525 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5526 int UNUSED written
= 0;
5527 IADDR UNUSED pc
= abuf
->addr
;
5528 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5532 tmp_sregno
= FLD (f_srcdst
);
5534 SI opval
= * FLD (i_st_src
);
5535 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
5536 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5539 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5540 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 4), opval
);
5541 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5544 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5545 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 8), opval
);
5546 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5549 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5550 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 12), opval
);
5551 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5559 CASE (sem
, INSN_STQ_INDIRECT_DISP
) : /* stq $st_src, $optdisp($abase) */
5561 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5562 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5563 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5564 int UNUSED written
= 0;
5565 IADDR UNUSED pc
= abuf
->addr
;
5566 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5570 tmp_sregno
= FLD (f_srcdst
);
5572 SI opval
= * FLD (i_st_src
);
5573 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
5574 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5577 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5578 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 4), opval
);
5579 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5582 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5583 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 8), opval
);
5584 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5587 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5588 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 12), opval
);
5589 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5597 CASE (sem
, INSN_STQ_INDEX_DISP
) : /* stq $st_src, $optdisp[$index*S$scale */
5599 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5600 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5601 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5602 int UNUSED written
= 0;
5603 IADDR UNUSED pc
= abuf
->addr
;
5604 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5608 tmp_sregno
= FLD (f_srcdst
);
5610 SI opval
= * FLD (i_st_src
);
5611 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5612 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5615 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5616 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5617 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5620 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5621 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5622 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5625 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5626 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 12), opval
);
5627 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5635 CASE (sem
, INSN_STQ_INDIRECT_INDEX_DISP
) : /* stq $st_src, $optdisp($abase)[$index*S$scale] */
5637 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5638 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5639 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5640 int UNUSED written
= 0;
5641 IADDR UNUSED pc
= abuf
->addr
;
5642 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5646 tmp_sregno
= FLD (f_srcdst
);
5648 SI opval
= * FLD (i_st_src
);
5649 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
5650 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5653 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5654 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 4), opval
);
5655 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5658 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5659 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 8), opval
);
5660 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5663 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5664 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 12), opval
);
5665 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5673 CASE (sem
, INSN_CMPOBE_REG
) : /* cmpobe $br_src1, $br_src2, $br_disp */
5675 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5676 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5677 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
5678 int UNUSED written
= 0;
5679 IADDR UNUSED pc
= abuf
->addr
;
5681 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5683 if (EQSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5685 USI opval
= FLD (i_br_disp
);
5686 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5687 written
|= (1 << 3);
5688 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5692 abuf
->written
= written
;
5693 SEM_BRANCH_FINI (vpc
);
5698 CASE (sem
, INSN_CMPOBE_LIT
) : /* cmpobe $br_lit1, $br_src2, $br_disp */
5700 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5701 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5702 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
5703 int UNUSED written
= 0;
5704 IADDR UNUSED pc
= abuf
->addr
;
5706 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5708 if (EQSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5710 USI opval
= FLD (i_br_disp
);
5711 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5712 written
|= (1 << 3);
5713 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5717 abuf
->written
= written
;
5718 SEM_BRANCH_FINI (vpc
);
5723 CASE (sem
, INSN_CMPOBNE_REG
) : /* cmpobne $br_src1, $br_src2, $br_disp */
5725 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5726 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5727 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
5728 int UNUSED written
= 0;
5729 IADDR UNUSED pc
= abuf
->addr
;
5731 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5733 if (NESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5735 USI opval
= FLD (i_br_disp
);
5736 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5737 written
|= (1 << 3);
5738 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5742 abuf
->written
= written
;
5743 SEM_BRANCH_FINI (vpc
);
5748 CASE (sem
, INSN_CMPOBNE_LIT
) : /* cmpobne $br_lit1, $br_src2, $br_disp */
5750 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5751 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5752 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
5753 int UNUSED written
= 0;
5754 IADDR UNUSED pc
= abuf
->addr
;
5756 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5758 if (NESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5760 USI opval
= FLD (i_br_disp
);
5761 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5762 written
|= (1 << 3);
5763 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5767 abuf
->written
= written
;
5768 SEM_BRANCH_FINI (vpc
);
5773 CASE (sem
, INSN_CMPOBL_REG
) : /* cmpobl $br_src1, $br_src2, $br_disp */
5775 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5776 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5777 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
5778 int UNUSED written
= 0;
5779 IADDR UNUSED pc
= abuf
->addr
;
5781 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5783 if (LTUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5785 USI opval
= FLD (i_br_disp
);
5786 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5787 written
|= (1 << 3);
5788 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5792 abuf
->written
= written
;
5793 SEM_BRANCH_FINI (vpc
);
5798 CASE (sem
, INSN_CMPOBL_LIT
) : /* cmpobl $br_lit1, $br_src2, $br_disp */
5800 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5801 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5802 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
5803 int UNUSED written
= 0;
5804 IADDR UNUSED pc
= abuf
->addr
;
5806 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5808 if (LTUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5810 USI opval
= FLD (i_br_disp
);
5811 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5812 written
|= (1 << 3);
5813 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5817 abuf
->written
= written
;
5818 SEM_BRANCH_FINI (vpc
);
5823 CASE (sem
, INSN_CMPOBLE_REG
) : /* cmpoble $br_src1, $br_src2, $br_disp */
5825 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5826 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5827 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
5828 int UNUSED written
= 0;
5829 IADDR UNUSED pc
= abuf
->addr
;
5831 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5833 if (LEUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5835 USI opval
= FLD (i_br_disp
);
5836 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5837 written
|= (1 << 3);
5838 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5842 abuf
->written
= written
;
5843 SEM_BRANCH_FINI (vpc
);
5848 CASE (sem
, INSN_CMPOBLE_LIT
) : /* cmpoble $br_lit1, $br_src2, $br_disp */
5850 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5851 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5852 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
5853 int UNUSED written
= 0;
5854 IADDR UNUSED pc
= abuf
->addr
;
5856 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5858 if (LEUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5860 USI opval
= FLD (i_br_disp
);
5861 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5862 written
|= (1 << 3);
5863 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5867 abuf
->written
= written
;
5868 SEM_BRANCH_FINI (vpc
);
5873 CASE (sem
, INSN_CMPOBG_REG
) : /* cmpobg $br_src1, $br_src2, $br_disp */
5875 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5876 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5877 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
5878 int UNUSED written
= 0;
5879 IADDR UNUSED pc
= abuf
->addr
;
5881 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5883 if (GTUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5885 USI opval
= FLD (i_br_disp
);
5886 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5887 written
|= (1 << 3);
5888 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5892 abuf
->written
= written
;
5893 SEM_BRANCH_FINI (vpc
);
5898 CASE (sem
, INSN_CMPOBG_LIT
) : /* cmpobg $br_lit1, $br_src2, $br_disp */
5900 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5901 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5902 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
5903 int UNUSED written
= 0;
5904 IADDR UNUSED pc
= abuf
->addr
;
5906 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5908 if (GTUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5910 USI opval
= FLD (i_br_disp
);
5911 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5912 written
|= (1 << 3);
5913 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5917 abuf
->written
= written
;
5918 SEM_BRANCH_FINI (vpc
);
5923 CASE (sem
, INSN_CMPOBGE_REG
) : /* cmpobge $br_src1, $br_src2, $br_disp */
5925 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5926 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5927 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
5928 int UNUSED written
= 0;
5929 IADDR UNUSED pc
= abuf
->addr
;
5931 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5933 if (GEUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5935 USI opval
= FLD (i_br_disp
);
5936 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5937 written
|= (1 << 3);
5938 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5942 abuf
->written
= written
;
5943 SEM_BRANCH_FINI (vpc
);
5948 CASE (sem
, INSN_CMPOBGE_LIT
) : /* cmpobge $br_lit1, $br_src2, $br_disp */
5950 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5951 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5952 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
5953 int UNUSED written
= 0;
5954 IADDR UNUSED pc
= abuf
->addr
;
5956 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5958 if (GEUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5960 USI opval
= FLD (i_br_disp
);
5961 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5962 written
|= (1 << 3);
5963 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5967 abuf
->written
= written
;
5968 SEM_BRANCH_FINI (vpc
);
5973 CASE (sem
, INSN_CMPIBE_REG
) : /* cmpibe $br_src1, $br_src2, $br_disp */
5975 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
5976 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5977 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
5978 int UNUSED written
= 0;
5979 IADDR UNUSED pc
= abuf
->addr
;
5981 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5983 if (EQSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5985 USI opval
= FLD (i_br_disp
);
5986 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5987 written
|= (1 << 3);
5988 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5992 abuf
->written
= written
;
5993 SEM_BRANCH_FINI (vpc
);
5998 CASE (sem
, INSN_CMPIBE_LIT
) : /* cmpibe $br_lit1, $br_src2, $br_disp */
6000 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6001 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6002 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6003 int UNUSED written
= 0;
6004 IADDR UNUSED pc
= abuf
->addr
;
6006 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6008 if (EQSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6010 USI opval
= FLD (i_br_disp
);
6011 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6012 written
|= (1 << 3);
6013 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6017 abuf
->written
= written
;
6018 SEM_BRANCH_FINI (vpc
);
6023 CASE (sem
, INSN_CMPIBNE_REG
) : /* cmpibne $br_src1, $br_src2, $br_disp */
6025 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6026 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6027 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6028 int UNUSED written
= 0;
6029 IADDR UNUSED pc
= abuf
->addr
;
6031 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6033 if (NESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6035 USI opval
= FLD (i_br_disp
);
6036 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6037 written
|= (1 << 3);
6038 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6042 abuf
->written
= written
;
6043 SEM_BRANCH_FINI (vpc
);
6048 CASE (sem
, INSN_CMPIBNE_LIT
) : /* cmpibne $br_lit1, $br_src2, $br_disp */
6050 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6051 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6052 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6053 int UNUSED written
= 0;
6054 IADDR UNUSED pc
= abuf
->addr
;
6056 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6058 if (NESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6060 USI opval
= FLD (i_br_disp
);
6061 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6062 written
|= (1 << 3);
6063 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6067 abuf
->written
= written
;
6068 SEM_BRANCH_FINI (vpc
);
6073 CASE (sem
, INSN_CMPIBL_REG
) : /* cmpibl $br_src1, $br_src2, $br_disp */
6075 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6076 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6077 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6078 int UNUSED written
= 0;
6079 IADDR UNUSED pc
= abuf
->addr
;
6081 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6083 if (LTSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6085 USI opval
= FLD (i_br_disp
);
6086 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6087 written
|= (1 << 3);
6088 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6092 abuf
->written
= written
;
6093 SEM_BRANCH_FINI (vpc
);
6098 CASE (sem
, INSN_CMPIBL_LIT
) : /* cmpibl $br_lit1, $br_src2, $br_disp */
6100 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6101 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6102 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6103 int UNUSED written
= 0;
6104 IADDR UNUSED pc
= abuf
->addr
;
6106 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6108 if (LTSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6110 USI opval
= FLD (i_br_disp
);
6111 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6112 written
|= (1 << 3);
6113 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6117 abuf
->written
= written
;
6118 SEM_BRANCH_FINI (vpc
);
6123 CASE (sem
, INSN_CMPIBLE_REG
) : /* cmpible $br_src1, $br_src2, $br_disp */
6125 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6126 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6127 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6128 int UNUSED written
= 0;
6129 IADDR UNUSED pc
= abuf
->addr
;
6131 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6133 if (LESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6135 USI opval
= FLD (i_br_disp
);
6136 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6137 written
|= (1 << 3);
6138 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6142 abuf
->written
= written
;
6143 SEM_BRANCH_FINI (vpc
);
6148 CASE (sem
, INSN_CMPIBLE_LIT
) : /* cmpible $br_lit1, $br_src2, $br_disp */
6150 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6151 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6152 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6153 int UNUSED written
= 0;
6154 IADDR UNUSED pc
= abuf
->addr
;
6156 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6158 if (LESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6160 USI opval
= FLD (i_br_disp
);
6161 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6162 written
|= (1 << 3);
6163 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6167 abuf
->written
= written
;
6168 SEM_BRANCH_FINI (vpc
);
6173 CASE (sem
, INSN_CMPIBG_REG
) : /* cmpibg $br_src1, $br_src2, $br_disp */
6175 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6176 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6177 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6178 int UNUSED written
= 0;
6179 IADDR UNUSED pc
= abuf
->addr
;
6181 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6183 if (GTSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6185 USI opval
= FLD (i_br_disp
);
6186 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6187 written
|= (1 << 3);
6188 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6192 abuf
->written
= written
;
6193 SEM_BRANCH_FINI (vpc
);
6198 CASE (sem
, INSN_CMPIBG_LIT
) : /* cmpibg $br_lit1, $br_src2, $br_disp */
6200 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6201 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6202 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6203 int UNUSED written
= 0;
6204 IADDR UNUSED pc
= abuf
->addr
;
6206 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6208 if (GTSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6210 USI opval
= FLD (i_br_disp
);
6211 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6212 written
|= (1 << 3);
6213 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6217 abuf
->written
= written
;
6218 SEM_BRANCH_FINI (vpc
);
6223 CASE (sem
, INSN_CMPIBGE_REG
) : /* cmpibge $br_src1, $br_src2, $br_disp */
6225 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6226 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6227 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6228 int UNUSED written
= 0;
6229 IADDR UNUSED pc
= abuf
->addr
;
6231 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6233 if (GESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6235 USI opval
= FLD (i_br_disp
);
6236 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6237 written
|= (1 << 3);
6238 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6242 abuf
->written
= written
;
6243 SEM_BRANCH_FINI (vpc
);
6248 CASE (sem
, INSN_CMPIBGE_LIT
) : /* cmpibge $br_lit1, $br_src2, $br_disp */
6250 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6251 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6252 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6253 int UNUSED written
= 0;
6254 IADDR UNUSED pc
= abuf
->addr
;
6256 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6258 if (GESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6260 USI opval
= FLD (i_br_disp
);
6261 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6262 written
|= (1 << 3);
6263 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6267 abuf
->written
= written
;
6268 SEM_BRANCH_FINI (vpc
);
6273 CASE (sem
, INSN_BBC_REG
) : /* bbc $br_src1, $br_src2, $br_disp */
6275 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6276 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6277 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6278 int UNUSED written
= 0;
6279 IADDR UNUSED pc
= abuf
->addr
;
6281 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6283 if (EQSI (ANDSI (SLLSI (1, * FLD (i_br_src1
)), * FLD (i_br_src2
)), 0)) {
6285 USI opval
= FLD (i_br_disp
);
6286 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6287 written
|= (1 << 3);
6288 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6292 abuf
->written
= written
;
6293 SEM_BRANCH_FINI (vpc
);
6298 CASE (sem
, INSN_BBC_LIT
) : /* bbc $br_lit1, $br_src2, $br_disp */
6300 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6301 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6302 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6303 int UNUSED written
= 0;
6304 IADDR UNUSED pc
= abuf
->addr
;
6306 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6308 if (EQSI (ANDSI (SLLSI (1, FLD (f_br_src1
)), * FLD (i_br_src2
)), 0)) {
6310 USI opval
= FLD (i_br_disp
);
6311 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6312 written
|= (1 << 3);
6313 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6317 abuf
->written
= written
;
6318 SEM_BRANCH_FINI (vpc
);
6323 CASE (sem
, INSN_BBS_REG
) : /* bbs $br_src1, $br_src2, $br_disp */
6325 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6326 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6327 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6328 int UNUSED written
= 0;
6329 IADDR UNUSED pc
= abuf
->addr
;
6331 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6333 if (NESI (ANDSI (SLLSI (1, * FLD (i_br_src1
)), * FLD (i_br_src2
)), 0)) {
6335 USI opval
= FLD (i_br_disp
);
6336 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6337 written
|= (1 << 3);
6338 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6342 abuf
->written
= written
;
6343 SEM_BRANCH_FINI (vpc
);
6348 CASE (sem
, INSN_BBS_LIT
) : /* bbs $br_lit1, $br_src2, $br_disp */
6350 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6351 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6352 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6353 int UNUSED written
= 0;
6354 IADDR UNUSED pc
= abuf
->addr
;
6356 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6358 if (NESI (ANDSI (SLLSI (1, FLD (f_br_src1
)), * FLD (i_br_src2
)), 0)) {
6360 USI opval
= FLD (i_br_disp
);
6361 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6362 written
|= (1 << 3);
6363 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6367 abuf
->written
= written
;
6368 SEM_BRANCH_FINI (vpc
);
6373 CASE (sem
, INSN_CMPI
) : /* cmpi $src1, $src2 */
6375 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6376 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6377 #define FLD(f) abuf->fields.sfmt_emul.f
6378 int UNUSED written
= 0;
6379 IADDR UNUSED pc
= abuf
->addr
;
6380 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6383 SI opval
= (LTSI (* FLD (i_src1
), * FLD (i_src2
))) ? (4) : (EQSI (* FLD (i_src1
), * FLD (i_src2
))) ? (2) : (1);
6385 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6392 CASE (sem
, INSN_CMPI1
) : /* cmpi $lit1, $src2 */
6394 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6395 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6396 #define FLD(f) abuf->fields.sfmt_emul1.f
6397 int UNUSED written
= 0;
6398 IADDR UNUSED pc
= abuf
->addr
;
6399 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6402 SI opval
= (LTSI (FLD (f_src1
), * FLD (i_src2
))) ? (4) : (EQSI (FLD (f_src1
), * FLD (i_src2
))) ? (2) : (1);
6404 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6411 CASE (sem
, INSN_CMPI2
) : /* cmpi $src1, $lit2 */
6413 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6414 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6415 #define FLD(f) abuf->fields.sfmt_emul2.f
6416 int UNUSED written
= 0;
6417 IADDR UNUSED pc
= abuf
->addr
;
6418 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6421 SI opval
= (LTSI (* FLD (i_src1
), FLD (f_src2
))) ? (4) : (EQSI (* FLD (i_src1
), FLD (f_src2
))) ? (2) : (1);
6423 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6430 CASE (sem
, INSN_CMPI3
) : /* cmpi $lit1, $lit2 */
6432 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6433 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6434 #define FLD(f) abuf->fields.sfmt_emul3.f
6435 int UNUSED written
= 0;
6436 IADDR UNUSED pc
= abuf
->addr
;
6437 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6440 SI opval
= (LTSI (FLD (f_src1
), FLD (f_src2
))) ? (4) : (EQSI (FLD (f_src1
), FLD (f_src2
))) ? (2) : (1);
6442 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6449 CASE (sem
, INSN_CMPO
) : /* cmpo $src1, $src2 */
6451 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6452 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6453 #define FLD(f) abuf->fields.sfmt_emul.f
6454 int UNUSED written
= 0;
6455 IADDR UNUSED pc
= abuf
->addr
;
6456 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6459 SI opval
= (LTUSI (* FLD (i_src1
), * FLD (i_src2
))) ? (4) : (EQSI (* FLD (i_src1
), * FLD (i_src2
))) ? (2) : (1);
6461 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6468 CASE (sem
, INSN_CMPO1
) : /* cmpo $lit1, $src2 */
6470 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6471 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6472 #define FLD(f) abuf->fields.sfmt_emul1.f
6473 int UNUSED written
= 0;
6474 IADDR UNUSED pc
= abuf
->addr
;
6475 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6478 SI opval
= (LTUSI (FLD (f_src1
), * FLD (i_src2
))) ? (4) : (EQSI (FLD (f_src1
), * FLD (i_src2
))) ? (2) : (1);
6480 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6487 CASE (sem
, INSN_CMPO2
) : /* cmpo $src1, $lit2 */
6489 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6490 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6491 #define FLD(f) abuf->fields.sfmt_emul2.f
6492 int UNUSED written
= 0;
6493 IADDR UNUSED pc
= abuf
->addr
;
6494 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6497 SI opval
= (LTUSI (* FLD (i_src1
), FLD (f_src2
))) ? (4) : (EQSI (* FLD (i_src1
), FLD (f_src2
))) ? (2) : (1);
6499 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6506 CASE (sem
, INSN_CMPO3
) : /* cmpo $lit1, $lit2 */
6508 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6509 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6510 #define FLD(f) abuf->fields.sfmt_emul3.f
6511 int UNUSED written
= 0;
6512 IADDR UNUSED pc
= abuf
->addr
;
6513 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6516 SI opval
= (LTUSI (FLD (f_src1
), FLD (f_src2
))) ? (4) : (EQSI (FLD (f_src1
), FLD (f_src2
))) ? (2) : (1);
6518 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6525 CASE (sem
, INSN_TESTNO_REG
) : /* testno $br_src1 */
6527 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6528 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6529 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6530 int UNUSED written
= 0;
6531 IADDR UNUSED pc
= abuf
->addr
;
6532 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6535 SI opval
= EQSI (CPU (h_cc
), 0);
6536 * FLD (i_br_src1
) = opval
;
6537 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6544 CASE (sem
, INSN_TESTG_REG
) : /* testg $br_src1 */
6546 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6547 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6548 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6549 int UNUSED written
= 0;
6550 IADDR UNUSED pc
= abuf
->addr
;
6551 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6554 SI opval
= NESI (ANDSI (CPU (h_cc
), 1), 0);
6555 * FLD (i_br_src1
) = opval
;
6556 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6563 CASE (sem
, INSN_TESTE_REG
) : /* teste $br_src1 */
6565 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6566 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6567 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6568 int UNUSED written
= 0;
6569 IADDR UNUSED pc
= abuf
->addr
;
6570 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6573 SI opval
= NESI (ANDSI (CPU (h_cc
), 2), 0);
6574 * FLD (i_br_src1
) = opval
;
6575 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6582 CASE (sem
, INSN_TESTGE_REG
) : /* testge $br_src1 */
6584 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6585 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6586 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6587 int UNUSED written
= 0;
6588 IADDR UNUSED pc
= abuf
->addr
;
6589 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6592 SI opval
= NESI (ANDSI (CPU (h_cc
), 3), 0);
6593 * FLD (i_br_src1
) = opval
;
6594 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6601 CASE (sem
, INSN_TESTL_REG
) : /* testl $br_src1 */
6603 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6604 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6605 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6606 int UNUSED written
= 0;
6607 IADDR UNUSED pc
= abuf
->addr
;
6608 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6611 SI opval
= NESI (ANDSI (CPU (h_cc
), 4), 0);
6612 * FLD (i_br_src1
) = opval
;
6613 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6620 CASE (sem
, INSN_TESTNE_REG
) : /* testne $br_src1 */
6622 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6623 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6624 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6625 int UNUSED written
= 0;
6626 IADDR UNUSED pc
= abuf
->addr
;
6627 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6630 SI opval
= NESI (ANDSI (CPU (h_cc
), 5), 0);
6631 * FLD (i_br_src1
) = opval
;
6632 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6639 CASE (sem
, INSN_TESTLE_REG
) : /* testle $br_src1 */
6641 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6642 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6643 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6644 int UNUSED written
= 0;
6645 IADDR UNUSED pc
= abuf
->addr
;
6646 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6649 SI opval
= NESI (ANDSI (CPU (h_cc
), 6), 0);
6650 * FLD (i_br_src1
) = opval
;
6651 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6658 CASE (sem
, INSN_TESTO_REG
) : /* testo $br_src1 */
6660 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6661 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6662 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6663 int UNUSED written
= 0;
6664 IADDR UNUSED pc
= abuf
->addr
;
6665 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6668 SI opval
= NESI (ANDSI (CPU (h_cc
), 7), 0);
6669 * FLD (i_br_src1
) = opval
;
6670 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6677 CASE (sem
, INSN_BNO
) : /* bno $ctrl_disp */
6679 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6680 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6681 #define FLD(f) abuf->fields.sfmt_bno.f
6682 int UNUSED written
= 0;
6683 IADDR UNUSED pc
= abuf
->addr
;
6685 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6687 if (EQSI (CPU (h_cc
), 0)) {
6689 USI opval
= FLD (i_ctrl_disp
);
6690 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6691 written
|= (1 << 2);
6692 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6696 abuf
->written
= written
;
6697 SEM_BRANCH_FINI (vpc
);
6702 CASE (sem
, INSN_BG
) : /* bg $ctrl_disp */
6704 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6705 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6706 #define FLD(f) abuf->fields.sfmt_bno.f
6707 int UNUSED written
= 0;
6708 IADDR UNUSED pc
= abuf
->addr
;
6710 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6712 if (NESI (ANDSI (CPU (h_cc
), 1), 0)) {
6714 USI opval
= FLD (i_ctrl_disp
);
6715 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6716 written
|= (1 << 2);
6717 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6721 abuf
->written
= written
;
6722 SEM_BRANCH_FINI (vpc
);
6727 CASE (sem
, INSN_BE
) : /* be $ctrl_disp */
6729 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6730 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6731 #define FLD(f) abuf->fields.sfmt_bno.f
6732 int UNUSED written
= 0;
6733 IADDR UNUSED pc
= abuf
->addr
;
6735 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6737 if (NESI (ANDSI (CPU (h_cc
), 2), 0)) {
6739 USI opval
= FLD (i_ctrl_disp
);
6740 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6741 written
|= (1 << 2);
6742 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6746 abuf
->written
= written
;
6747 SEM_BRANCH_FINI (vpc
);
6752 CASE (sem
, INSN_BGE
) : /* bge $ctrl_disp */
6754 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6755 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6756 #define FLD(f) abuf->fields.sfmt_bno.f
6757 int UNUSED written
= 0;
6758 IADDR UNUSED pc
= abuf
->addr
;
6760 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6762 if (NESI (ANDSI (CPU (h_cc
), 3), 0)) {
6764 USI opval
= FLD (i_ctrl_disp
);
6765 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6766 written
|= (1 << 2);
6767 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6771 abuf
->written
= written
;
6772 SEM_BRANCH_FINI (vpc
);
6777 CASE (sem
, INSN_BL
) : /* bl $ctrl_disp */
6779 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6780 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6781 #define FLD(f) abuf->fields.sfmt_bno.f
6782 int UNUSED written
= 0;
6783 IADDR UNUSED pc
= abuf
->addr
;
6785 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6787 if (NESI (ANDSI (CPU (h_cc
), 4), 0)) {
6789 USI opval
= FLD (i_ctrl_disp
);
6790 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6791 written
|= (1 << 2);
6792 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6796 abuf
->written
= written
;
6797 SEM_BRANCH_FINI (vpc
);
6802 CASE (sem
, INSN_BNE
) : /* bne $ctrl_disp */
6804 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6805 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6806 #define FLD(f) abuf->fields.sfmt_bno.f
6807 int UNUSED written
= 0;
6808 IADDR UNUSED pc
= abuf
->addr
;
6810 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6812 if (NESI (ANDSI (CPU (h_cc
), 5), 0)) {
6814 USI opval
= FLD (i_ctrl_disp
);
6815 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6816 written
|= (1 << 2);
6817 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6821 abuf
->written
= written
;
6822 SEM_BRANCH_FINI (vpc
);
6827 CASE (sem
, INSN_BLE
) : /* ble $ctrl_disp */
6829 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6830 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6831 #define FLD(f) abuf->fields.sfmt_bno.f
6832 int UNUSED written
= 0;
6833 IADDR UNUSED pc
= abuf
->addr
;
6835 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6837 if (NESI (ANDSI (CPU (h_cc
), 6), 0)) {
6839 USI opval
= FLD (i_ctrl_disp
);
6840 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6841 written
|= (1 << 2);
6842 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6846 abuf
->written
= written
;
6847 SEM_BRANCH_FINI (vpc
);
6852 CASE (sem
, INSN_BO
) : /* bo $ctrl_disp */
6854 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6855 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6856 #define FLD(f) abuf->fields.sfmt_bno.f
6857 int UNUSED written
= 0;
6858 IADDR UNUSED pc
= abuf
->addr
;
6860 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6862 if (NESI (ANDSI (CPU (h_cc
), 7), 0)) {
6864 USI opval
= FLD (i_ctrl_disp
);
6865 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6866 written
|= (1 << 2);
6867 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6871 abuf
->written
= written
;
6872 SEM_BRANCH_FINI (vpc
);
6877 CASE (sem
, INSN_B
) : /* b $ctrl_disp */
6879 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6880 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6881 #define FLD(f) abuf->fields.sfmt_bno.f
6882 int UNUSED written
= 0;
6883 IADDR UNUSED pc
= abuf
->addr
;
6885 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6888 USI opval
= FLD (i_ctrl_disp
);
6889 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6890 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6893 SEM_BRANCH_FINI (vpc
);
6898 CASE (sem
, INSN_BX_INDIRECT_OFFSET
) : /* bx $offset($abase) */
6900 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6901 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6902 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
6903 int UNUSED written
= 0;
6904 IADDR UNUSED pc
= abuf
->addr
;
6906 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6909 USI opval
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
6910 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
6911 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6914 SEM_BRANCH_FINI (vpc
);
6919 CASE (sem
, INSN_BX_INDIRECT
) : /* bx ($abase) */
6921 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6922 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6923 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
6924 int UNUSED written
= 0;
6925 IADDR UNUSED pc
= abuf
->addr
;
6927 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6930 USI opval
= * FLD (i_abase
);
6931 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
6932 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6935 SEM_BRANCH_FINI (vpc
);
6940 CASE (sem
, INSN_BX_INDIRECT_INDEX
) : /* bx ($abase)[$index*S$scale] */
6942 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6943 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6944 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
6945 int UNUSED written
= 0;
6946 IADDR UNUSED pc
= abuf
->addr
;
6948 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6951 USI opval
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
6952 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
6953 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6956 SEM_BRANCH_FINI (vpc
);
6961 CASE (sem
, INSN_BX_DISP
) : /* bx $optdisp */
6963 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6964 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6965 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
6966 int UNUSED written
= 0;
6967 IADDR UNUSED pc
= abuf
->addr
;
6969 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
6972 USI opval
= FLD (f_optdisp
);
6973 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6974 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6977 SEM_BRANCH_FINI (vpc
);
6982 CASE (sem
, INSN_BX_INDIRECT_DISP
) : /* bx $optdisp($abase) */
6984 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
6985 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6986 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
6987 int UNUSED written
= 0;
6988 IADDR UNUSED pc
= abuf
->addr
;
6990 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
6993 USI opval
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
6994 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
6995 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6998 SEM_BRANCH_FINI (vpc
);
7003 CASE (sem
, INSN_CALLX_DISP
) : /* callx $optdisp */
7005 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7006 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7007 #define FLD(f) abuf->fields.sfmt_callx_disp.f
7008 int UNUSED written
= 0;
7009 IADDR UNUSED pc
= abuf
->addr
;
7011 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
7015 tmp_temp
= ANDSI (ADDSI (CPU (h_gr
[((UINT
) 1)]), 63), INVSI (63));
7017 SI opval
= ADDSI (pc
, 8);
7018 CPU (h_gr
[((UINT
) 2)]) = opval
;
7019 TRACE_RESULT (current_cpu
, abuf
, "gr-2", 'x', opval
);
7021 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0), CPU (h_gr
[((UINT
) 0)]));
7022 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4), CPU (h_gr
[((UINT
) 1)]));
7023 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8), CPU (h_gr
[((UINT
) 2)]));
7024 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12), CPU (h_gr
[((UINT
) 3)]));
7025 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16), CPU (h_gr
[((UINT
) 4)]));
7026 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20), CPU (h_gr
[((UINT
) 5)]));
7027 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24), CPU (h_gr
[((UINT
) 6)]));
7028 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28), CPU (h_gr
[((UINT
) 7)]));
7029 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32), CPU (h_gr
[((UINT
) 8)]));
7030 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36), CPU (h_gr
[((UINT
) 9)]));
7031 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40), CPU (h_gr
[((UINT
) 10)]));
7032 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44), CPU (h_gr
[((UINT
) 11)]));
7033 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48), CPU (h_gr
[((UINT
) 12)]));
7034 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52), CPU (h_gr
[((UINT
) 13)]));
7035 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56), CPU (h_gr
[((UINT
) 14)]));
7036 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60), CPU (h_gr
[((UINT
) 15)]));
7038 USI opval
= FLD (f_optdisp
);
7039 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
7040 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7042 CPU (h_gr
[((UINT
) 0)]) = 0xdeadbeef;
7043 CPU (h_gr
[((UINT
) 1)]) = 0xdeadbeef;
7044 CPU (h_gr
[((UINT
) 2)]) = 0xdeadbeef;
7045 CPU (h_gr
[((UINT
) 3)]) = 0xdeadbeef;
7046 CPU (h_gr
[((UINT
) 4)]) = 0xdeadbeef;
7047 CPU (h_gr
[((UINT
) 5)]) = 0xdeadbeef;
7048 CPU (h_gr
[((UINT
) 6)]) = 0xdeadbeef;
7049 CPU (h_gr
[((UINT
) 7)]) = 0xdeadbeef;
7050 CPU (h_gr
[((UINT
) 8)]) = 0xdeadbeef;
7051 CPU (h_gr
[((UINT
) 9)]) = 0xdeadbeef;
7052 CPU (h_gr
[((UINT
) 10)]) = 0xdeadbeef;
7053 CPU (h_gr
[((UINT
) 11)]) = 0xdeadbeef;
7054 CPU (h_gr
[((UINT
) 12)]) = 0xdeadbeef;
7055 CPU (h_gr
[((UINT
) 13)]) = 0xdeadbeef;
7056 CPU (h_gr
[((UINT
) 14)]) = 0xdeadbeef;
7057 CPU (h_gr
[((UINT
) 15)]) = 0xdeadbeef;
7059 SI opval
= CPU (h_gr
[((UINT
) 31)]);
7060 CPU (h_gr
[((UINT
) 0)]) = opval
;
7061 TRACE_RESULT (current_cpu
, abuf
, "gr-0", 'x', opval
);
7064 SI opval
= tmp_temp
;
7065 CPU (h_gr
[((UINT
) 31)]) = opval
;
7066 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7069 SI opval
= ADDSI (tmp_temp
, 64);
7070 CPU (h_gr
[((UINT
) 1)]) = opval
;
7071 TRACE_RESULT (current_cpu
, abuf
, "gr-1", 'x', opval
);
7075 SEM_BRANCH_FINI (vpc
);
7080 CASE (sem
, INSN_CALLX_INDIRECT
) : /* callx ($abase) */
7082 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7083 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7084 #define FLD(f) abuf->fields.sfmt_callx_indirect_offset.f
7085 int UNUSED written
= 0;
7086 IADDR UNUSED pc
= abuf
->addr
;
7088 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7092 tmp_temp
= ANDSI (ADDSI (CPU (h_gr
[((UINT
) 1)]), 63), INVSI (63));
7094 SI opval
= ADDSI (pc
, 4);
7095 CPU (h_gr
[((UINT
) 2)]) = opval
;
7096 TRACE_RESULT (current_cpu
, abuf
, "gr-2", 'x', opval
);
7098 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0), CPU (h_gr
[((UINT
) 0)]));
7099 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4), CPU (h_gr
[((UINT
) 1)]));
7100 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8), CPU (h_gr
[((UINT
) 2)]));
7101 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12), CPU (h_gr
[((UINT
) 3)]));
7102 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16), CPU (h_gr
[((UINT
) 4)]));
7103 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20), CPU (h_gr
[((UINT
) 5)]));
7104 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24), CPU (h_gr
[((UINT
) 6)]));
7105 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28), CPU (h_gr
[((UINT
) 7)]));
7106 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32), CPU (h_gr
[((UINT
) 8)]));
7107 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36), CPU (h_gr
[((UINT
) 9)]));
7108 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40), CPU (h_gr
[((UINT
) 10)]));
7109 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44), CPU (h_gr
[((UINT
) 11)]));
7110 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48), CPU (h_gr
[((UINT
) 12)]));
7111 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52), CPU (h_gr
[((UINT
) 13)]));
7112 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56), CPU (h_gr
[((UINT
) 14)]));
7113 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60), CPU (h_gr
[((UINT
) 15)]));
7115 USI opval
= * FLD (i_abase
);
7116 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7117 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7119 CPU (h_gr
[((UINT
) 0)]) = 0xdeadbeef;
7120 CPU (h_gr
[((UINT
) 1)]) = 0xdeadbeef;
7121 CPU (h_gr
[((UINT
) 2)]) = 0xdeadbeef;
7122 CPU (h_gr
[((UINT
) 3)]) = 0xdeadbeef;
7123 CPU (h_gr
[((UINT
) 4)]) = 0xdeadbeef;
7124 CPU (h_gr
[((UINT
) 5)]) = 0xdeadbeef;
7125 CPU (h_gr
[((UINT
) 6)]) = 0xdeadbeef;
7126 CPU (h_gr
[((UINT
) 7)]) = 0xdeadbeef;
7127 CPU (h_gr
[((UINT
) 8)]) = 0xdeadbeef;
7128 CPU (h_gr
[((UINT
) 9)]) = 0xdeadbeef;
7129 CPU (h_gr
[((UINT
) 10)]) = 0xdeadbeef;
7130 CPU (h_gr
[((UINT
) 11)]) = 0xdeadbeef;
7131 CPU (h_gr
[((UINT
) 12)]) = 0xdeadbeef;
7132 CPU (h_gr
[((UINT
) 13)]) = 0xdeadbeef;
7133 CPU (h_gr
[((UINT
) 14)]) = 0xdeadbeef;
7134 CPU (h_gr
[((UINT
) 15)]) = 0xdeadbeef;
7136 SI opval
= CPU (h_gr
[((UINT
) 31)]);
7137 CPU (h_gr
[((UINT
) 0)]) = opval
;
7138 TRACE_RESULT (current_cpu
, abuf
, "gr-0", 'x', opval
);
7141 SI opval
= tmp_temp
;
7142 CPU (h_gr
[((UINT
) 31)]) = opval
;
7143 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7146 SI opval
= ADDSI (tmp_temp
, 64);
7147 CPU (h_gr
[((UINT
) 1)]) = opval
;
7148 TRACE_RESULT (current_cpu
, abuf
, "gr-1", 'x', opval
);
7152 SEM_BRANCH_FINI (vpc
);
7157 CASE (sem
, INSN_CALLX_INDIRECT_OFFSET
) : /* callx $offset($abase) */
7159 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7160 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7161 #define FLD(f) abuf->fields.sfmt_callx_indirect_offset.f
7162 int UNUSED written
= 0;
7163 IADDR UNUSED pc
= abuf
->addr
;
7165 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7169 tmp_temp
= ANDSI (ADDSI (CPU (h_gr
[((UINT
) 1)]), 63), INVSI (63));
7171 SI opval
= ADDSI (pc
, 4);
7172 CPU (h_gr
[((UINT
) 2)]) = opval
;
7173 TRACE_RESULT (current_cpu
, abuf
, "gr-2", 'x', opval
);
7175 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0), CPU (h_gr
[((UINT
) 0)]));
7176 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4), CPU (h_gr
[((UINT
) 1)]));
7177 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8), CPU (h_gr
[((UINT
) 2)]));
7178 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12), CPU (h_gr
[((UINT
) 3)]));
7179 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16), CPU (h_gr
[((UINT
) 4)]));
7180 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20), CPU (h_gr
[((UINT
) 5)]));
7181 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24), CPU (h_gr
[((UINT
) 6)]));
7182 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28), CPU (h_gr
[((UINT
) 7)]));
7183 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32), CPU (h_gr
[((UINT
) 8)]));
7184 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36), CPU (h_gr
[((UINT
) 9)]));
7185 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40), CPU (h_gr
[((UINT
) 10)]));
7186 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44), CPU (h_gr
[((UINT
) 11)]));
7187 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48), CPU (h_gr
[((UINT
) 12)]));
7188 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52), CPU (h_gr
[((UINT
) 13)]));
7189 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56), CPU (h_gr
[((UINT
) 14)]));
7190 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60), CPU (h_gr
[((UINT
) 15)]));
7192 USI opval
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
7193 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7194 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7196 CPU (h_gr
[((UINT
) 0)]) = 0xdeadbeef;
7197 CPU (h_gr
[((UINT
) 1)]) = 0xdeadbeef;
7198 CPU (h_gr
[((UINT
) 2)]) = 0xdeadbeef;
7199 CPU (h_gr
[((UINT
) 3)]) = 0xdeadbeef;
7200 CPU (h_gr
[((UINT
) 4)]) = 0xdeadbeef;
7201 CPU (h_gr
[((UINT
) 5)]) = 0xdeadbeef;
7202 CPU (h_gr
[((UINT
) 6)]) = 0xdeadbeef;
7203 CPU (h_gr
[((UINT
) 7)]) = 0xdeadbeef;
7204 CPU (h_gr
[((UINT
) 8)]) = 0xdeadbeef;
7205 CPU (h_gr
[((UINT
) 9)]) = 0xdeadbeef;
7206 CPU (h_gr
[((UINT
) 10)]) = 0xdeadbeef;
7207 CPU (h_gr
[((UINT
) 11)]) = 0xdeadbeef;
7208 CPU (h_gr
[((UINT
) 12)]) = 0xdeadbeef;
7209 CPU (h_gr
[((UINT
) 13)]) = 0xdeadbeef;
7210 CPU (h_gr
[((UINT
) 14)]) = 0xdeadbeef;
7211 CPU (h_gr
[((UINT
) 15)]) = 0xdeadbeef;
7213 SI opval
= CPU (h_gr
[((UINT
) 31)]);
7214 CPU (h_gr
[((UINT
) 0)]) = opval
;
7215 TRACE_RESULT (current_cpu
, abuf
, "gr-0", 'x', opval
);
7218 SI opval
= tmp_temp
;
7219 CPU (h_gr
[((UINT
) 31)]) = opval
;
7220 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7223 SI opval
= ADDSI (tmp_temp
, 64);
7224 CPU (h_gr
[((UINT
) 1)]) = opval
;
7225 TRACE_RESULT (current_cpu
, abuf
, "gr-1", 'x', opval
);
7229 SEM_BRANCH_FINI (vpc
);
7234 CASE (sem
, INSN_RET
) : /* ret */
7236 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7237 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7238 #define FLD(f) abuf->fields.sfmt_callx_disp.f
7239 int UNUSED written
= 0;
7240 IADDR UNUSED pc
= abuf
->addr
;
7242 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7246 SI opval
= CPU (h_gr
[((UINT
) 0)]);
7247 CPU (h_gr
[((UINT
) 31)]) = opval
;
7248 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7250 CPU (h_gr
[((UINT
) 0)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0));
7251 CPU (h_gr
[((UINT
) 1)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4));
7252 CPU (h_gr
[((UINT
) 2)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8));
7253 CPU (h_gr
[((UINT
) 3)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12));
7254 CPU (h_gr
[((UINT
) 4)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16));
7255 CPU (h_gr
[((UINT
) 5)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20));
7256 CPU (h_gr
[((UINT
) 6)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24));
7257 CPU (h_gr
[((UINT
) 7)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28));
7258 CPU (h_gr
[((UINT
) 8)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32));
7259 CPU (h_gr
[((UINT
) 9)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36));
7260 CPU (h_gr
[((UINT
) 10)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40));
7261 CPU (h_gr
[((UINT
) 11)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44));
7262 CPU (h_gr
[((UINT
) 12)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48));
7263 CPU (h_gr
[((UINT
) 13)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52));
7264 CPU (h_gr
[((UINT
) 14)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56));
7265 CPU (h_gr
[((UINT
) 15)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60));
7267 USI opval
= CPU (h_gr
[((UINT
) 2)]);
7268 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7269 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7273 SEM_BRANCH_FINI (vpc
);
7278 CASE (sem
, INSN_CALLS
) : /* calls $src1 */
7280 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7281 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7282 #define FLD(f) abuf->fields.sfmt_emul2.f
7283 int UNUSED written
= 0;
7284 IADDR UNUSED pc
= abuf
->addr
;
7286 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7289 SI opval
= i960_trap (current_cpu
, pc
, * FLD (i_src1
));
7290 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7291 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7294 SEM_BRANCH_FINI (vpc
);
7299 CASE (sem
, INSN_FMARK
) : /* fmark */
7301 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7302 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7303 #define FLD(f) abuf->fields.fmt_empty.f
7304 int UNUSED written
= 0;
7305 IADDR UNUSED pc
= abuf
->addr
;
7307 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7310 SI opval
= i960_breakpoint (current_cpu
, pc
);
7311 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7312 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7315 SEM_BRANCH_FINI (vpc
);
7320 CASE (sem
, INSN_FLUSHREG
) : /* flushreg */
7322 SEM_ARG sem_arg
= SEM_SEM_ARG (vpc
, sc
);
7323 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7324 #define FLD(f) abuf->fields.fmt_empty.f
7325 int UNUSED written
= 0;
7326 IADDR UNUSED pc
= abuf
->addr
;
7327 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7329 do { } while (0); /*nop*/
7337 ENDSWITCH (sem
) /* End of semantic switch. */
7339 /* At this point `vpc' contains the next insn to execute. */
7342 #undef DEFINE_SWITCH
7343 #endif /* DEFINE_SWITCH */