Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(61)

Side by Side Diff: src/trusted/validator_arm/gen/arm32_decode.cc

Issue 9960043: Finish separation of testing from sel_ldr validation. Also, automate (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright 2012 The Native Client Authors. All rights reserved. 2 * Copyright 2012 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can 3 * Use of this source code is governed by a BSD-style license that can
4 * be found in the LICENSE file. 4 * be found in the LICENSE file.
5 */ 5 */
6 6
7 /* 7 /*
8 * DO NOT EDIT: GENERATED CODE 8 * DO NOT EDIT: GENERATED CODE
9 */ 9 */
10 10
11 #include "native_client/src/trusted/validator_arm/gen/arm32_decode.h" 11 #include "native_client/src/trusted/validator_arm/gen/arm32_decode.h"
12 12
13 #include <stdio.h> 13 #include <stdio.h>
14 14
15 namespace nacl_arm_dec { 15 namespace nacl_arm_dec {
16 16
17 /* 17 /*
18 * Prototypes for static table-matching functions.
19 */
20 static inline const ClassDecoder &decode_ARMv7(
21 const Instruction insn, const Arm32DecoderState *state);
22
23 static inline const ClassDecoder &decode_dp_misc(
24 const Instruction insn, const Arm32DecoderState *state);
25
26 static inline const ClassDecoder &decode_dp_reg(
27 const Instruction insn, const Arm32DecoderState *state);
28
29 static inline const ClassDecoder &decode_dp_reg_shifted(
30 const Instruction insn, const Arm32DecoderState *state);
31
32 static inline const ClassDecoder &decode_dp_immed(
33 const Instruction insn, const Arm32DecoderState *state);
34
35 static inline const ClassDecoder &decode_mult(
36 const Instruction insn, const Arm32DecoderState *state);
37
38 static inline const ClassDecoder &decode_sat_add_sub(
39 const Instruction insn, const Arm32DecoderState *state);
40
41 static inline const ClassDecoder &decode_half_mult(
42 const Instruction insn, const Arm32DecoderState *state);
43
44 static inline const ClassDecoder &decode_extra_load_store(
45 const Instruction insn, const Arm32DecoderState *state);
46
47 static inline const ClassDecoder &decode_sync(
48 const Instruction insn, const Arm32DecoderState *state);
49
50 static inline const ClassDecoder &decode_msr_and_hints(
51 const Instruction insn, const Arm32DecoderState *state);
52
53 static inline const ClassDecoder &decode_misc(
54 const Instruction insn, const Arm32DecoderState *state);
55
56 static inline const ClassDecoder &decode_load_store_word_byte(
57 const Instruction insn, const Arm32DecoderState *state);
58
59 static inline const ClassDecoder &decode_media(
60 const Instruction insn, const Arm32DecoderState *state);
61
62 static inline const ClassDecoder &decode_parallel_add_sub(
63 const Instruction insn, const Arm32DecoderState *state);
64
65 static inline const ClassDecoder &decode_pack_sat_rev(
66 const Instruction insn, const Arm32DecoderState *state);
67
68 static inline const ClassDecoder &decode_signed_mult(
69 const Instruction insn, const Arm32DecoderState *state);
70
71 static inline const ClassDecoder &decode_branch_block_xfer(
72 const Instruction insn, const Arm32DecoderState *state);
73
74 static inline const ClassDecoder &decode_super_cop(
75 const Instruction insn, const Arm32DecoderState *state);
76
77 static inline const ClassDecoder &decode_unconditional(
78 const Instruction insn, const Arm32DecoderState *state);
79
80 static inline const ClassDecoder &decode_misc_hints_simd(
81 const Instruction insn, const Arm32DecoderState *state);
82
83 static inline const ClassDecoder &decode_simd_dp(
84 const Instruction insn, const Arm32DecoderState *state);
85
86 static inline const ClassDecoder &decode_simd_dp_3same(
87 const Instruction insn, const Arm32DecoderState *state);
88
89 static inline const ClassDecoder &decode_simd_dp_3diff(
90 const Instruction insn, const Arm32DecoderState *state);
91
92 static inline const ClassDecoder &decode_simd_dp_2scalar(
93 const Instruction insn, const Arm32DecoderState *state);
94
95 static inline const ClassDecoder &decode_simd_dp_2shift(
96 const Instruction insn, const Arm32DecoderState *state);
97
98 static inline const ClassDecoder &decode_simd_dp_2misc(
99 const Instruction insn, const Arm32DecoderState *state);
100
101 static inline const ClassDecoder &decode_simd_dp_1imm(
102 const Instruction insn, const Arm32DecoderState *state);
103
104 static inline const ClassDecoder &decode_simd_load_store(
105 const Instruction insn, const Arm32DecoderState *state);
106
107 static inline const ClassDecoder &decode_simd_load_store_l0(
108 const Instruction insn, const Arm32DecoderState *state);
109
110 static inline const ClassDecoder &decode_simd_load_store_l1(
111 const Instruction insn, const Arm32DecoderState *state);
112
113 /*
114 * Table-matching function implementations. 18 * Table-matching function implementations.
115 */ 19 */
116 20
117 /* 21 /*
118 * Implementation of table ARMv7. 22 * Implementation of table ARMv7.
119 * Specified by: See Section A5.1. 23 * Specified by: See Section A5.1.
120 */ 24 */
121 static inline const ClassDecoder &decode_ARMv7( 25 const ClassDecoder &Arm32DecoderState::decode_ARMv7(const Instruction insn) cons t {
robertm 2012/04/11 01:28:43 move & to left
Karl 2012/04/16 23:18:10 Done.
122 const Instruction insn, const Arm32DecoderState *state) {
123 if (((insn & 0xF0000000) != 0xF0000000) && ((insn & 0x0E000000) == 0x04000000) && (true)) { 26 if (((insn & 0xF0000000) != 0xF0000000) && ((insn & 0x0E000000) == 0x04000000) && (true)) {
124 return decode_load_store_word_byte(insn, state); 27 return decode_load_store_word_byte(insn);
125 } 28 }
126 29
127 if (((insn & 0xF0000000) != 0xF0000000) && ((insn & 0x0E000000) == 0x06000000) && ((insn & 0x00000010) == 0x00000000)) { 30 if (((insn & 0xF0000000) != 0xF0000000) && ((insn & 0x0E000000) == 0x06000000) && ((insn & 0x00000010) == 0x00000000)) {
128 return decode_load_store_word_byte(insn, state); 31 return decode_load_store_word_byte(insn);
129 } 32 }
130 33
131 if (((insn & 0xF0000000) != 0xF0000000) && ((insn & 0x0E000000) == 0x06000000) && ((insn & 0x00000010) == 0x00000010)) { 34 if (((insn & 0xF0000000) != 0xF0000000) && ((insn & 0x0E000000) == 0x06000000) && ((insn & 0x00000010) == 0x00000010)) {
132 return decode_media(insn, state); 35 return decode_media(insn);
133 } 36 }
134 37
135 if (((insn & 0xF0000000) != 0xF0000000) && ((insn & 0x0C000000) == 0x00000000) && (true)) { 38 if (((insn & 0xF0000000) != 0xF0000000) && ((insn & 0x0C000000) == 0x00000000) && (true)) {
136 return decode_dp_misc(insn, state); 39 return decode_dp_misc(insn);
137 } 40 }
138 41
139 if (((insn & 0xF0000000) != 0xF0000000) && ((insn & 0x0C000000) == 0x08000000) && (true)) { 42 if (((insn & 0xF0000000) != 0xF0000000) && ((insn & 0x0C000000) == 0x08000000) && (true)) {
140 return decode_branch_block_xfer(insn, state); 43 return decode_branch_block_xfer(insn);
141 } 44 }
142 45
143 if (((insn & 0xF0000000) != 0xF0000000) && ((insn & 0x0C000000) == 0x0C000000) && (true)) { 46 if (((insn & 0xF0000000) != 0xF0000000) && ((insn & 0x0C000000) == 0x0C000000) && (true)) {
144 return decode_super_cop(insn, state); 47 return decode_super_cop(insn);
145 } 48 }
146 49
147 if (((insn & 0xF0000000) == 0xF0000000) && (true) && (true)) { 50 if (((insn & 0xF0000000) == 0xF0000000) && (true) && (true)) {
148 return decode_unconditional(insn, state); 51 return decode_unconditional(insn);
149 } 52 }
150 53
151 // Catch any attempt to fall through... 54 // Catch any attempt to fall through...
152 fprintf(stderr, "TABLE IS INCOMPLETE: ARMv7 could not parse %08X",insn.bits(31 ,0)); 55 fprintf(stderr, "TABLE IS INCOMPLETE: ARMv7 could not parse %08X",insn.bits(31 ,0));
153 return state->Forbidden_instance_; 56 return Forbidden_instance_;
154 } 57 }
58
155 59
156 /* 60 /*
157 * Implementation of table dp_misc. 61 * Implementation of table dp_misc.
158 * Specified by: See Section A5.2. 62 * Specified by: See Section A5.2.
159 */ 63 */
160 static inline const ClassDecoder &decode_dp_misc( 64 const ClassDecoder &Arm32DecoderState::decode_dp_misc(const Instruction insn) co nst {
161 const Instruction insn, const Arm32DecoderState *state) {
162 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01900000) != 0x01000000) && ((insn & 0x00000090) == 0x00000010)) { 65 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01900000) != 0x01000000) && ((insn & 0x00000090) == 0x00000010)) {
163 return decode_dp_reg_shifted(insn, state); 66 return decode_dp_reg_shifted(insn);
164 } 67 }
165 68
166 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01900000) != 0x01000000) && ((insn & 0x00000010) == 0x00000000)) { 69 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01900000) != 0x01000000) && ((insn & 0x00000010) == 0x00000000)) {
167 return decode_dp_reg(insn, state); 70 return decode_dp_reg(insn);
168 } 71 }
169 72
170 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01900000) == 0x01000000) && ((insn & 0x00000090) == 0x00000080)) { 73 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01900000) == 0x01000000) && ((insn & 0x00000090) == 0x00000080)) {
171 return decode_half_mult(insn, state); 74 return decode_half_mult(insn);
172 } 75 }
173 76
174 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01900000) == 0x01000000) && ((insn & 0x00000080) == 0x00000000)) { 77 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01900000) == 0x01000000) && ((insn & 0x00000080) == 0x00000000)) {
175 return decode_misc(insn, state); 78 return decode_misc(insn);
176 } 79 }
177 80
178 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01200000) != 0x00200000) && ((insn & 0x000000F0) == 0x000000B0)) { 81 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01200000) != 0x00200000) && ((insn & 0x000000F0) == 0x000000B0)) {
179 return decode_extra_load_store(insn, state); 82 return decode_extra_load_store(insn);
180 } 83 }
181 84
182 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01200000) != 0x00200000) && ((insn & 0x000000D0) == 0x000000D0)) { 85 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01200000) != 0x00200000) && ((insn & 0x000000D0) == 0x000000D0)) {
183 return decode_extra_load_store(insn, state); 86 return decode_extra_load_store(insn);
184 } 87 }
185 88
186 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01200000) == 0x00200000) && ((insn & 0x000000F0) == 0x000000B0)) { 89 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01200000) == 0x00200000) && ((insn & 0x000000F0) == 0x000000B0)) {
187 return state->Forbidden_instance_; 90 return Forbidden_instance_;
188 } 91 }
189 92
190 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01200000) == 0x00200000) && ((insn & 0x000000D0) == 0x000000D0)) { 93 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01200000) == 0x00200000) && ((insn & 0x000000D0) == 0x000000D0)) {
191 return state->Forbidden_instance_; 94 return Forbidden_instance_;
192 } 95 }
193 96
194 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01000000) == 0x00000000) && ((insn & 0x000000F0) == 0x00000090)) { 97 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01000000) == 0x00000000) && ((insn & 0x000000F0) == 0x00000090)) {
195 return decode_mult(insn, state); 98 return decode_mult(insn);
196 } 99 }
197 100
198 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01000000) == 0x01000000) && ((insn & 0x000000F0) == 0x00000090)) { 101 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01000000) == 0x01000000) && ((insn & 0x000000F0) == 0x00000090)) {
199 return decode_sync(insn, state); 102 return decode_sync(insn);
200 } 103 }
201 104
202 if (((insn & 0x02000000) == 0x02000000) && ((insn & 0x01B00000) == 0x01000000) && (true)) { 105 if (((insn & 0x02000000) == 0x02000000) && ((insn & 0x01B00000) == 0x01000000) && (true)) {
203 return state->DataProc_instance_; 106 return DataProc_instance_;
204 } 107 }
205 108
206 if (((insn & 0x02000000) == 0x02000000) && ((insn & 0x01B00000) == 0x01200000) && (true)) { 109 if (((insn & 0x02000000) == 0x02000000) && ((insn & 0x01B00000) == 0x01200000) && (true)) {
207 return decode_msr_and_hints(insn, state); 110 return decode_msr_and_hints(insn);
208 } 111 }
209 112
210 if (((insn & 0x02000000) == 0x02000000) && ((insn & 0x01900000) != 0x01000000) && (true)) { 113 if (((insn & 0x02000000) == 0x02000000) && ((insn & 0x01900000) != 0x01000000) && (true)) {
211 return decode_dp_immed(insn, state); 114 return decode_dp_immed(insn);
212 } 115 }
213 116
214 // Catch any attempt to fall through... 117 // Catch any attempt to fall through...
215 fprintf(stderr, "TABLE IS INCOMPLETE: dp_misc could not parse %08X",insn.bits( 31,0)); 118 fprintf(stderr, "TABLE IS INCOMPLETE: dp_misc could not parse %08X",insn.bits( 31,0));
216 return state->Forbidden_instance_; 119 return Forbidden_instance_;
217 } 120 }
121
218 122
219 /* 123 /*
220 * Implementation of table dp_reg. 124 * Implementation of table dp_reg.
221 * Specified by: See Section A5.2.1. 125 * Specified by: See Section A5.2.1.
222 */ 126 */
223 static inline const ClassDecoder &decode_dp_reg( 127 const ClassDecoder &Arm32DecoderState::decode_dp_reg(const Instruction insn) con st {
224 const Instruction insn, const Arm32DecoderState *state) {
225 if (((insn & 0x01900000) == 0x01100000)) { 128 if (((insn & 0x01900000) == 0x01100000)) {
226 return state->Test_instance_; 129 return Test_instance_;
227 } 130 }
228 131
229 if (((insn & 0x01800000) == 0x01800000)) { 132 if (((insn & 0x01800000) == 0x01800000)) {
230 return state->DataProc_instance_; 133 return DataProc_instance_;
231 } 134 }
232 135
233 if (((insn & 0x01000000) == 0x00000000)) { 136 if (((insn & 0x01000000) == 0x00000000)) {
234 return state->DataProc_instance_; 137 return DataProc_instance_;
235 } 138 }
236 139
237 // Catch any attempt to fall through... 140 // Catch any attempt to fall through...
238 fprintf(stderr, "TABLE IS INCOMPLETE: dp_reg could not parse %08X",insn.bits(3 1,0)); 141 fprintf(stderr, "TABLE IS INCOMPLETE: dp_reg could not parse %08X",insn.bits(3 1,0));
239 return state->Forbidden_instance_; 142 return Forbidden_instance_;
240 } 143 }
144
241 145
242 /* 146 /*
243 * Implementation of table dp_reg_shifted. 147 * Implementation of table dp_reg_shifted.
244 * Specified by: See Section A5.2.2. 148 * Specified by: See Section A5.2.2.
245 */ 149 */
246 static inline const ClassDecoder &decode_dp_reg_shifted( 150 const ClassDecoder &Arm32DecoderState::decode_dp_reg_shifted(const Instruction i nsn) const {
247 const Instruction insn, const Arm32DecoderState *state) {
248 if (((insn & 0x01E00000) == 0x01A00000)) { 151 if (((insn & 0x01E00000) == 0x01A00000)) {
249 return state->DataProc_instance_; 152 return DataProc_instance_;
250 } 153 }
251 154
252 if (((insn & 0x01E00000) == 0x01E00000)) { 155 if (((insn & 0x01E00000) == 0x01E00000)) {
253 return state->Unary3RegisterShiftedOp_instance_; 156 return Unary3RegisterShiftedOp_instance_;
254 } 157 }
255 158
256 if (((insn & 0x01900000) == 0x01100000)) { 159 if (((insn & 0x01900000) == 0x01100000)) {
257 return state->Binary3RegisterShiftedTest_instance_; 160 return Binary3RegisterShiftedTest_instance_;
258 } 161 }
259 162
260 if (((insn & 0x01A00000) == 0x01800000)) { 163 if (((insn & 0x01A00000) == 0x01800000)) {
261 return state->Binary4RegisterShiftedOp_instance_; 164 return Binary4RegisterShiftedOp_instance_;
262 } 165 }
263 166
264 if (((insn & 0x01000000) == 0x00000000)) { 167 if (((insn & 0x01000000) == 0x00000000)) {
265 return state->Binary4RegisterShiftedOp_instance_; 168 return Binary4RegisterShiftedOp_instance_;
266 } 169 }
267 170
268 // Catch any attempt to fall through... 171 // Catch any attempt to fall through...
269 fprintf(stderr, "TABLE IS INCOMPLETE: dp_reg_shifted could not parse %08X",ins n.bits(31,0)); 172 fprintf(stderr, "TABLE IS INCOMPLETE: dp_reg_shifted could not parse %08X",ins n.bits(31,0));
270 return state->Forbidden_instance_; 173 return Forbidden_instance_;
271 } 174 }
175
272 176
273 /* 177 /*
274 * Implementation of table dp_immed. 178 * Implementation of table dp_immed.
275 * Specified by: See Section A5.2.3. 179 * Specified by: See Section A5.2.3.
276 */ 180 */
277 static inline const ClassDecoder &decode_dp_immed( 181 const ClassDecoder &Arm32DecoderState::decode_dp_immed(const Instruction insn) c onst {
278 const Instruction insn, const Arm32DecoderState *state) {
279 if (((insn & 0x01F00000) == 0x01100000)) { 182 if (((insn & 0x01F00000) == 0x01100000)) {
280 return state->TestImmediate_instance_; 183 return TestImmediate_instance_;
281 } 184 }
282 185
283 if (((insn & 0x01F00000) == 0x01500000)) { 186 if (((insn & 0x01F00000) == 0x01500000)) {
284 return state->Test_instance_; 187 return Test_instance_;
285 } 188 }
286 189
287 if (((insn & 0x01B00000) == 0x01300000)) { 190 if (((insn & 0x01B00000) == 0x01300000)) {
288 return state->Test_instance_; 191 return Test_instance_;
289 } 192 }
290 193
291 if (((insn & 0x01E00000) == 0x01C00000)) { 194 if (((insn & 0x01E00000) == 0x01C00000)) {
292 return state->ImmediateBic_instance_; 195 return ImmediateBic_instance_;
293 } 196 }
294 197
295 if (((insn & 0x01E00000) == 0x01E00000)) { 198 if (((insn & 0x01E00000) == 0x01E00000)) {
296 return state->DataProc_instance_; 199 return DataProc_instance_;
297 } 200 }
298 201
299 if (((insn & 0x01C00000) == 0x00000000)) { 202 if (((insn & 0x01C00000) == 0x00000000)) {
300 return state->DataProc_instance_; 203 return DataProc_instance_;
301 } 204 }
302 205
303 if (((insn & 0x00C00000) == 0x00800000)) { 206 if (((insn & 0x00C00000) == 0x00800000)) {
304 return state->DataProc_instance_; 207 return DataProc_instance_;
305 } 208 }
306 209
307 if (((insn & 0x01400000) == 0x00400000)) { 210 if (((insn & 0x01400000) == 0x00400000)) {
308 return state->DataProc_instance_; 211 return DataProc_instance_;
309 } 212 }
310 213
311 // Catch any attempt to fall through... 214 // Catch any attempt to fall through...
312 fprintf(stderr, "TABLE IS INCOMPLETE: dp_immed could not parse %08X",insn.bits (31,0)); 215 fprintf(stderr, "TABLE IS INCOMPLETE: dp_immed could not parse %08X",insn.bits (31,0));
313 return state->Forbidden_instance_; 216 return Forbidden_instance_;
314 } 217 }
218
315 219
316 /* 220 /*
317 * Implementation of table mult. 221 * Implementation of table mult.
318 * Specified by: See Section A5.2.5. 222 * Specified by: See Section A5.2.5.
319 */ 223 */
320 static inline const ClassDecoder &decode_mult( 224 const ClassDecoder &Arm32DecoderState::decode_mult(const Instruction insn) const {
321 const Instruction insn, const Arm32DecoderState *state) {
322 if (((insn & 0x00F00000) == 0x00400000)) { 225 if (((insn & 0x00F00000) == 0x00400000)) {
323 return state->LongMultiply_instance_; 226 return LongMultiply_instance_;
324 } 227 }
325 228
326 if (((insn & 0x00F00000) == 0x00600000)) { 229 if (((insn & 0x00F00000) == 0x00600000)) {
327 return state->Multiply_instance_; 230 return Multiply_instance_;
328 } 231 }
329 232
330 if (((insn & 0x00D00000) == 0x00500000)) { 233 if (((insn & 0x00D00000) == 0x00500000)) {
331 return state->Undefined_instance_; 234 return Undefined_instance_;
332 } 235 }
333 236
334 if (((insn & 0x00C00000) == 0x00000000)) { 237 if (((insn & 0x00C00000) == 0x00000000)) {
335 return state->Multiply_instance_; 238 return Multiply_instance_;
336 } 239 }
337 240
338 if (((insn & 0x00800000) == 0x00800000)) { 241 if (((insn & 0x00800000) == 0x00800000)) {
339 return state->LongMultiply_instance_; 242 return LongMultiply_instance_;
340 } 243 }
341 244
342 // Catch any attempt to fall through... 245 // Catch any attempt to fall through...
343 fprintf(stderr, "TABLE IS INCOMPLETE: mult could not parse %08X",insn.bits(31, 0)); 246 fprintf(stderr, "TABLE IS INCOMPLETE: mult could not parse %08X",insn.bits(31, 0));
344 return state->Forbidden_instance_; 247 return Forbidden_instance_;
345 } 248 }
249
346 250
347 /* 251 /*
348 * Implementation of table sat_add_sub. 252 * Implementation of table sat_add_sub.
349 * Specified by: See Section A5.2.6. 253 * Specified by: See Section A5.2.6.
350 */ 254 */
351 static inline const ClassDecoder &decode_sat_add_sub( 255 const ClassDecoder &Arm32DecoderState::decode_sat_add_sub(const Instruction insn ) const {
352 const Instruction insn, const Arm32DecoderState *state) {
353 if ((true)) { 256 if ((true)) {
354 return state->SatAddSub_instance_; 257 return SatAddSub_instance_;
355 } 258 }
356 259
357 // Catch any attempt to fall through... 260 // Catch any attempt to fall through...
358 fprintf(stderr, "TABLE IS INCOMPLETE: sat_add_sub could not parse %08X",insn.b its(31,0)); 261 fprintf(stderr, "TABLE IS INCOMPLETE: sat_add_sub could not parse %08X",insn.b its(31,0));
359 return state->Forbidden_instance_; 262 return Forbidden_instance_;
360 } 263 }
264
361 265
362 /* 266 /*
363 * Implementation of table half_mult. 267 * Implementation of table half_mult.
364 * Specified by: See Section A5.2.7. 268 * Specified by: See Section A5.2.7.
365 */ 269 */
366 static inline const ClassDecoder &decode_half_mult( 270 const ClassDecoder &Arm32DecoderState::decode_half_mult(const Instruction insn) const {
367 const Instruction insn, const Arm32DecoderState *state) {
368 if (((insn & 0x00600000) == 0x00400000)) { 271 if (((insn & 0x00600000) == 0x00400000)) {
369 return state->LongMultiply_instance_; 272 return LongMultiply_instance_;
370 } 273 }
371 274
372 if (((insn & 0x00600000) == 0x00600000)) { 275 if (((insn & 0x00600000) == 0x00600000)) {
373 return state->Multiply_instance_; 276 return Multiply_instance_;
374 } 277 }
375 278
376 if (((insn & 0x00400000) == 0x00000000)) { 279 if (((insn & 0x00400000) == 0x00000000)) {
377 return state->Multiply_instance_; 280 return Multiply_instance_;
378 } 281 }
379 282
380 // Catch any attempt to fall through... 283 // Catch any attempt to fall through...
381 fprintf(stderr, "TABLE IS INCOMPLETE: half_mult could not parse %08X",insn.bit s(31,0)); 284 fprintf(stderr, "TABLE IS INCOMPLETE: half_mult could not parse %08X",insn.bit s(31,0));
382 return state->Forbidden_instance_; 285 return Forbidden_instance_;
383 } 286 }
287
384 288
385 /* 289 /*
386 * Implementation of table extra_load_store. 290 * Implementation of table extra_load_store.
387 * Specified by: See Section A5.2.8. 291 * Specified by: See Section A5.2.8.
388 */ 292 */
389 static inline const ClassDecoder &decode_extra_load_store( 293 const ClassDecoder &Arm32DecoderState::decode_extra_load_store(const Instruction insn) const {
390 const Instruction insn, const Arm32DecoderState *state) {
391 if (((insn & 0x00000060) == 0x00000040) && ((insn & 0x00500000) == 0x00000000) ) { 294 if (((insn & 0x00000060) == 0x00000040) && ((insn & 0x00500000) == 0x00000000) ) {
392 return state->LoadDoubleR_instance_; 295 return LoadDoubleR_instance_;
393 } 296 }
394 297
395 if (((insn & 0x00000060) == 0x00000040) && ((insn & 0x00500000) == 0x00100000) ) { 298 if (((insn & 0x00000060) == 0x00000040) && ((insn & 0x00500000) == 0x00100000) ) {
396 return state->LoadRegister_instance_; 299 return LoadRegister_instance_;
397 } 300 }
398 301
399 if (((insn & 0x00000060) == 0x00000040) && ((insn & 0x00500000) == 0x00400000) ) { 302 if (((insn & 0x00000060) == 0x00000040) && ((insn & 0x00500000) == 0x00400000) ) {
400 return state->LoadDoubleI_instance_; 303 return LoadDoubleI_instance_;
401 } 304 }
402 305
403 if (((insn & 0x00000060) == 0x00000040) && ((insn & 0x00500000) == 0x00500000) ) { 306 if (((insn & 0x00000060) == 0x00000040) && ((insn & 0x00500000) == 0x00500000) ) {
404 return state->LoadImmediate_instance_; 307 return LoadImmediate_instance_;
405 } 308 }
406 309
407 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00500000) == 0x00000000) ) { 310 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00500000) == 0x00000000) ) {
408 return state->StoreRegister_instance_; 311 return StoreRegister_instance_;
409 } 312 }
410 313
411 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00500000) == 0x00100000) ) { 314 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00500000) == 0x00100000) ) {
412 return state->LoadRegister_instance_; 315 return LoadRegister_instance_;
413 } 316 }
414 317
415 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00500000) == 0x00400000) ) { 318 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00500000) == 0x00400000) ) {
416 return state->StoreImmediate_instance_; 319 return StoreImmediate_instance_;
417 } 320 }
418 321
419 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00500000) == 0x00500000) ) { 322 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00500000) == 0x00500000) ) {
420 return state->LoadImmediate_instance_; 323 return LoadImmediate_instance_;
421 } 324 }
422 325
423 // Catch any attempt to fall through... 326 // Catch any attempt to fall through...
424 fprintf(stderr, "TABLE IS INCOMPLETE: extra_load_store could not parse %08X",i nsn.bits(31,0)); 327 fprintf(stderr, "TABLE IS INCOMPLETE: extra_load_store could not parse %08X",i nsn.bits(31,0));
425 return state->Forbidden_instance_; 328 return Forbidden_instance_;
426 } 329 }
330
427 331
428 /* 332 /*
429 * Implementation of table sync. 333 * Implementation of table sync.
430 * Specified by: See Section A5.2.10. 334 * Specified by: See Section A5.2.10.
431 */ 335 */
432 static inline const ClassDecoder &decode_sync( 336 const ClassDecoder &Arm32DecoderState::decode_sync(const Instruction insn) const {
433 const Instruction insn, const Arm32DecoderState *state) {
434 if (((insn & 0x00F00000) == 0x00800000)) { 337 if (((insn & 0x00F00000) == 0x00800000)) {
435 return state->StoreExclusive_instance_; 338 return StoreExclusive_instance_;
436 } 339 }
437 340
438 if (((insn & 0x00F00000) == 0x00900000)) { 341 if (((insn & 0x00F00000) == 0x00900000)) {
439 return state->LoadExclusive_instance_; 342 return LoadExclusive_instance_;
440 } 343 }
441 344
442 if (((insn & 0x00F00000) == 0x00B00000)) { 345 if (((insn & 0x00F00000) == 0x00B00000)) {
443 return state->LoadDoubleExclusive_instance_; 346 return LoadDoubleExclusive_instance_;
444 } 347 }
445 348
446 if (((insn & 0x00F00000) == 0x00C00000)) { 349 if (((insn & 0x00F00000) == 0x00C00000)) {
447 return state->StoreExclusive_instance_; 350 return StoreExclusive_instance_;
448 } 351 }
449 352
450 if (((insn & 0x00B00000) == 0x00000000)) { 353 if (((insn & 0x00B00000) == 0x00000000)) {
451 return state->Deprecated_instance_; 354 return Deprecated_instance_;
452 } 355 }
453 356
454 if (((insn & 0x00B00000) == 0x00A00000)) { 357 if (((insn & 0x00B00000) == 0x00A00000)) {
455 return state->StoreExclusive_instance_; 358 return StoreExclusive_instance_;
456 } 359 }
457 360
458 if (((insn & 0x00D00000) == 0x00D00000)) { 361 if (((insn & 0x00D00000) == 0x00D00000)) {
459 return state->LoadExclusive_instance_; 362 return LoadExclusive_instance_;
460 } 363 }
461 364
462 if ((true)) { 365 if ((true)) {
463 return state->Undefined_instance_; 366 return Undefined_instance_;
464 } 367 }
465 368
466 // Catch any attempt to fall through... 369 // Catch any attempt to fall through...
467 fprintf(stderr, "TABLE IS INCOMPLETE: sync could not parse %08X",insn.bits(31, 0)); 370 fprintf(stderr, "TABLE IS INCOMPLETE: sync could not parse %08X",insn.bits(31, 0));
468 return state->Forbidden_instance_; 371 return Forbidden_instance_;
469 } 372 }
373
470 374
471 /* 375 /*
472 * Implementation of table msr_and_hints. 376 * Implementation of table msr_and_hints.
473 * Specified by: See Section A5.2.11. 377 * Specified by: See Section A5.2.11.
474 */ 378 */
475 static inline const ClassDecoder &decode_msr_and_hints( 379 const ClassDecoder &Arm32DecoderState::decode_msr_and_hints(const Instruction in sn) const {
476 const Instruction insn, const Arm32DecoderState *state) {
477 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x000F0000) == 0x00000000) && ((insn & 0x000000FF) == 0x00000000)) { 380 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x000F0000) == 0x00000000) && ((insn & 0x000000FF) == 0x00000000)) {
478 return state->EffectiveNoOp_instance_; 381 return EffectiveNoOp_instance_;
479 } 382 }
480 383
481 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x000F0000) == 0x00000000) && ((insn & 0x000000FF) == 0x00000002)) { 384 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x000F0000) == 0x00000000) && ((insn & 0x000000FF) == 0x00000002)) {
482 return state->EffectiveNoOp_instance_; 385 return EffectiveNoOp_instance_;
483 } 386 }
484 387
485 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x000F0000) == 0x00000000) && ((insn & 0x000000FF) == 0x00000004)) { 388 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x000F0000) == 0x00000000) && ((insn & 0x000000FF) == 0x00000004)) {
486 return state->EffectiveNoOp_instance_; 389 return EffectiveNoOp_instance_;
487 } 390 }
488 391
489 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x000F0000) == 0x00000000) && ((insn & 0x000000FD) == 0x00000001)) { 392 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x000F0000) == 0x00000000) && ((insn & 0x000000FD) == 0x00000001)) {
490 return state->EffectiveNoOp_instance_; 393 return EffectiveNoOp_instance_;
491 } 394 }
492 395
493 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x000F0000) == 0x00000000) && ((insn & 0x000000F0) == 0x000000F0)) { 396 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x000F0000) == 0x00000000) && ((insn & 0x000000F0) == 0x000000F0)) {
494 return state->EffectiveNoOp_instance_; 397 return EffectiveNoOp_instance_;
495 } 398 }
496 399
497 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x000F0000) == 0x00040000) && (true)) { 400 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x000F0000) == 0x00040000) && (true)) {
498 return state->MoveToStatusRegister_instance_; 401 return MoveToStatusRegister_instance_;
499 } 402 }
500 403
501 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x000B0000) == 0x00080000) && (true)) { 404 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x000B0000) == 0x00080000) && (true)) {
502 return state->MoveToStatusRegister_instance_; 405 return MoveToStatusRegister_instance_;
503 } 406 }
504 407
505 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x00030000) == 0x00010000) && (true)) { 408 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x00030000) == 0x00010000) && (true)) {
506 return state->Forbidden_instance_; 409 return Forbidden_instance_;
507 } 410 }
508 411
509 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x00020000) == 0x00020000) && (true)) { 412 if (((insn & 0x00400000) == 0x00000000) && ((insn & 0x00020000) == 0x00020000) && (true)) {
510 return state->Forbidden_instance_; 413 return Forbidden_instance_;
511 } 414 }
512 415
513 if (((insn & 0x00400000) == 0x00400000) && (true) && (true)) { 416 if (((insn & 0x00400000) == 0x00400000) && (true) && (true)) {
514 return state->Forbidden_instance_; 417 return Forbidden_instance_;
515 } 418 }
516 419
517 if ((true) && (true) && (true)) { 420 if ((true) && (true) && (true)) {
518 return state->Forbidden_instance_; 421 return Forbidden_instance_;
519 } 422 }
520 423
521 // Catch any attempt to fall through... 424 // Catch any attempt to fall through...
522 fprintf(stderr, "TABLE IS INCOMPLETE: msr_and_hints could not parse %08X",insn .bits(31,0)); 425 fprintf(stderr, "TABLE IS INCOMPLETE: msr_and_hints could not parse %08X",insn .bits(31,0));
523 return state->Forbidden_instance_; 426 return Forbidden_instance_;
524 } 427 }
428
525 429
526 /* 430 /*
527 * Implementation of table misc. 431 * Implementation of table misc.
528 * Specified by: See Section A5.2.12. 432 * Specified by: See Section A5.2.12.
529 */ 433 */
530 static inline const ClassDecoder &decode_misc( 434 const ClassDecoder &Arm32DecoderState::decode_misc(const Instruction insn) const {
531 const Instruction insn, const Arm32DecoderState *state) {
532 if (((insn & 0x00000070) == 0x00000000) && ((insn & 0x00600000) == 0x00200000) && ((insn & 0x00030000) == 0x00000000)) { 435 if (((insn & 0x00000070) == 0x00000000) && ((insn & 0x00600000) == 0x00200000) && ((insn & 0x00030000) == 0x00000000)) {
533 return state->MoveToStatusRegister_instance_; 436 return MoveToStatusRegister_instance_;
534 } 437 }
535 438
536 if (((insn & 0x00000070) == 0x00000000) && ((insn & 0x00600000) == 0x00200000) && ((insn & 0x00030000) == 0x00010000)) { 439 if (((insn & 0x00000070) == 0x00000000) && ((insn & 0x00600000) == 0x00200000) && ((insn & 0x00030000) == 0x00010000)) {
537 return state->Forbidden_instance_; 440 return Forbidden_instance_;
538 } 441 }
539 442
540 if (((insn & 0x00000070) == 0x00000000) && ((insn & 0x00600000) == 0x00200000) && ((insn & 0x00020000) == 0x00020000)) { 443 if (((insn & 0x00000070) == 0x00000000) && ((insn & 0x00600000) == 0x00200000) && ((insn & 0x00020000) == 0x00020000)) {
541 return state->Forbidden_instance_; 444 return Forbidden_instance_;
542 } 445 }
543 446
544 if (((insn & 0x00000070) == 0x00000000) && ((insn & 0x00600000) == 0x00600000) && (true)) { 447 if (((insn & 0x00000070) == 0x00000000) && ((insn & 0x00600000) == 0x00600000) && (true)) {
545 return state->Forbidden_instance_; 448 return Forbidden_instance_;
546 } 449 }
547 450
548 if (((insn & 0x00000070) == 0x00000000) && ((insn & 0x00200000) == 0x00000000) && (true)) { 451 if (((insn & 0x00000070) == 0x00000000) && ((insn & 0x00200000) == 0x00000000) && (true)) {
549 return state->DataProc_instance_; 452 return DataProc_instance_;
550 } 453 }
551 454
552 if (((insn & 0x00000070) == 0x00000010) && ((insn & 0x00600000) == 0x00200000) && (true)) { 455 if (((insn & 0x00000070) == 0x00000010) && ((insn & 0x00600000) == 0x00200000) && (true)) {
553 return state->BxBlx_instance_; 456 return BxBlx_instance_;
554 } 457 }
555 458
556 if (((insn & 0x00000070) == 0x00000010) && ((insn & 0x00600000) == 0x00600000) && (true)) { 459 if (((insn & 0x00000070) == 0x00000010) && ((insn & 0x00600000) == 0x00600000) && (true)) {
557 return state->DataProc_instance_; 460 return DataProc_instance_;
558 } 461 }
559 462
560 if (((insn & 0x00000070) == 0x00000020) && ((insn & 0x00600000) == 0x00200000) && (true)) { 463 if (((insn & 0x00000070) == 0x00000020) && ((insn & 0x00600000) == 0x00200000) && (true)) {
561 return state->Forbidden_instance_; 464 return Forbidden_instance_;
562 } 465 }
563 466
564 if (((insn & 0x00000070) == 0x00000030) && ((insn & 0x00600000) == 0x00200000) && (true)) { 467 if (((insn & 0x00000070) == 0x00000030) && ((insn & 0x00600000) == 0x00200000) && (true)) {
565 return state->BxBlx_instance_; 468 return BxBlx_instance_;
566 } 469 }
567 470
568 if (((insn & 0x00000070) == 0x00000050) && (true) && (true)) { 471 if (((insn & 0x00000070) == 0x00000050) && (true) && (true)) {
569 return decode_sat_add_sub(insn, state); 472 return decode_sat_add_sub(insn);
570 } 473 }
571 474
572 if (((insn & 0x00000070) == 0x00000070) && ((insn & 0x00600000) == 0x00200000) && (true)) { 475 if (((insn & 0x00000070) == 0x00000070) && ((insn & 0x00600000) == 0x00200000) && (true)) {
573 return state->Breakpoint_instance_; 476 return Breakpoint_instance_;
574 } 477 }
575 478
576 if (((insn & 0x00000070) == 0x00000070) && ((insn & 0x00600000) == 0x00600000) && (true)) { 479 if (((insn & 0x00000070) == 0x00000070) && ((insn & 0x00600000) == 0x00600000) && (true)) {
577 return state->Forbidden_instance_; 480 return Forbidden_instance_;
578 } 481 }
579 482
580 if ((true) && (true) && (true)) { 483 if ((true) && (true) && (true)) {
581 return state->Undefined_instance_; 484 return Undefined_instance_;
582 } 485 }
583 486
584 // Catch any attempt to fall through... 487 // Catch any attempt to fall through...
585 fprintf(stderr, "TABLE IS INCOMPLETE: misc could not parse %08X",insn.bits(31, 0)); 488 fprintf(stderr, "TABLE IS INCOMPLETE: misc could not parse %08X",insn.bits(31, 0));
586 return state->Forbidden_instance_; 489 return Forbidden_instance_;
587 } 490 }
491
588 492
589 /* 493 /*
590 * Implementation of table load_store_word_byte. 494 * Implementation of table load_store_word_byte.
591 * Specified by: See Section A5.3. 495 * Specified by: See Section A5.3.
592 */ 496 */
593 static inline const ClassDecoder &decode_load_store_word_byte( 497 const ClassDecoder &Arm32DecoderState::decode_load_store_word_byte(const Instruc tion insn) const {
594 const Instruction insn, const Arm32DecoderState *state) {
595 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01200000) == 0x00200000) && (true)) { 498 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x01200000) == 0x00200000) && (true)) {
596 return state->Forbidden_instance_; 499 return Forbidden_instance_;
597 } 500 }
598 501
599 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x00100000) == 0x00000000) && (true)) { 502 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x00100000) == 0x00000000) && (true)) {
600 return state->StoreImmediate_instance_; 503 return StoreImmediate_instance_;
601 } 504 }
602 505
603 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x00100000) == 0x00100000) && (true)) { 506 if (((insn & 0x02000000) == 0x00000000) && ((insn & 0x00100000) == 0x00100000) && (true)) {
604 return state->LoadImmediate_instance_; 507 return LoadImmediate_instance_;
605 } 508 }
606 509
607 if (((insn & 0x02000000) == 0x02000000) && ((insn & 0x01200000) == 0x00200000) && ((insn & 0x00000010) == 0x00000000)) { 510 if (((insn & 0x02000000) == 0x02000000) && ((insn & 0x01200000) == 0x00200000) && ((insn & 0x00000010) == 0x00000000)) {
608 return state->Forbidden_instance_; 511 return Forbidden_instance_;
609 } 512 }
610 513
611 if (((insn & 0x02000000) == 0x02000000) && ((insn & 0x00100000) == 0x00000000) && ((insn & 0x00000010) == 0x00000000)) { 514 if (((insn & 0x02000000) == 0x02000000) && ((insn & 0x00100000) == 0x00000000) && ((insn & 0x00000010) == 0x00000000)) {
612 return state->StoreRegister_instance_; 515 return StoreRegister_instance_;
613 } 516 }
614 517
615 if (((insn & 0x02000000) == 0x02000000) && ((insn & 0x00100000) == 0x00100000) && ((insn & 0x00000010) == 0x00000000)) { 518 if (((insn & 0x02000000) == 0x02000000) && ((insn & 0x00100000) == 0x00100000) && ((insn & 0x00000010) == 0x00000000)) {
616 return state->LoadRegister_instance_; 519 return LoadRegister_instance_;
617 } 520 }
618 521
619 // Catch any attempt to fall through... 522 // Catch any attempt to fall through...
620 fprintf(stderr, "TABLE IS INCOMPLETE: load_store_word_byte could not parse %08 X",insn.bits(31,0)); 523 fprintf(stderr, "TABLE IS INCOMPLETE: load_store_word_byte could not parse %08 X",insn.bits(31,0));
621 return state->Forbidden_instance_; 524 return Forbidden_instance_;
622 } 525 }
526
623 527
624 /* 528 /*
625 * Implementation of table media. 529 * Implementation of table media.
626 * Specified by: See Section A5.4. 530 * Specified by: See Section A5.4.
627 */ 531 */
628 static inline const ClassDecoder &decode_media( 532 const ClassDecoder &Arm32DecoderState::decode_media(const Instruction insn) cons t {
629 const Instruction insn, const Arm32DecoderState *state) {
630 if (((insn & 0x01F00000) == 0x01800000) && ((insn & 0x000000E0) == 0x00000000) ) { 533 if (((insn & 0x01F00000) == 0x01800000) && ((insn & 0x000000E0) == 0x00000000) ) {
631 return state->Multiply_instance_; 534 return Multiply_instance_;
632 } 535 }
633 536
634 if (((insn & 0x01F00000) == 0x01F00000) && ((insn & 0x000000E0) == 0x000000E0) ) { 537 if (((insn & 0x01F00000) == 0x01F00000) && ((insn & 0x000000E0) == 0x000000E0) ) {
635 return state->Roadblock_instance_; 538 return Roadblock_instance_;
636 } 539 }
637 540
638 if (((insn & 0x01E00000) == 0x01C00000) && ((insn & 0x00000060) == 0x00000000) ) { 541 if (((insn & 0x01E00000) == 0x01C00000) && ((insn & 0x00000060) == 0x00000000) ) {
639 return state->DataProc_instance_; 542 return DataProc_instance_;
640 } 543 }
641 544
642 if (((insn & 0x01A00000) == 0x01A00000) && ((insn & 0x00000060) == 0x00000040) ) { 545 if (((insn & 0x01A00000) == 0x01A00000) && ((insn & 0x00000060) == 0x00000040) ) {
643 return state->DataProc_instance_; 546 return DataProc_instance_;
644 } 547 }
645 548
646 if (((insn & 0x01800000) == 0x00000000) && (true)) { 549 if (((insn & 0x01800000) == 0x00000000) && (true)) {
647 return decode_parallel_add_sub(insn, state); 550 return decode_parallel_add_sub(insn);
648 } 551 }
649 552
650 if (((insn & 0x01800000) == 0x00800000) && (true)) { 553 if (((insn & 0x01800000) == 0x00800000) && (true)) {
651 return decode_pack_sat_rev(insn, state); 554 return decode_pack_sat_rev(insn);
652 } 555 }
653 556
654 if (((insn & 0x01800000) == 0x01000000) && (true)) { 557 if (((insn & 0x01800000) == 0x01000000) && (true)) {
655 return decode_signed_mult(insn, state); 558 return decode_signed_mult(insn);
656 } 559 }
657 560
658 if ((true) && (true)) { 561 if ((true) && (true)) {
659 return state->Undefined_instance_; 562 return Undefined_instance_;
660 } 563 }
661 564
662 // Catch any attempt to fall through... 565 // Catch any attempt to fall through...
663 fprintf(stderr, "TABLE IS INCOMPLETE: media could not parse %08X",insn.bits(31 ,0)); 566 fprintf(stderr, "TABLE IS INCOMPLETE: media could not parse %08X",insn.bits(31 ,0));
664 return state->Forbidden_instance_; 567 return Forbidden_instance_;
665 } 568 }
569
666 570
667 /* 571 /*
668 * Implementation of table parallel_add_sub. 572 * Implementation of table parallel_add_sub.
669 * Specified by: See Sections A5.4.1, A5.4.2. 573 * Specified by: See Sections A5.4.1, A5.4.2.
670 */ 574 */
671 static inline const ClassDecoder &decode_parallel_add_sub( 575 const ClassDecoder &Arm32DecoderState::decode_parallel_add_sub(const Instruction insn) const {
672 const Instruction insn, const Arm32DecoderState *state) {
673 if (((insn & 0x00300000) == 0x00200000) && ((insn & 0x000000E0) == 0x00000080) ) { 576 if (((insn & 0x00300000) == 0x00200000) && ((insn & 0x000000E0) == 0x00000080) ) {
674 return state->DataProc_instance_; 577 return DataProc_instance_;
675 } 578 }
676 579
677 if (((insn & 0x00300000) == 0x00200000) && ((insn & 0x000000E0) == 0x000000E0) ) { 580 if (((insn & 0x00300000) == 0x00200000) && ((insn & 0x000000E0) == 0x000000E0) ) {
678 return state->DataProc_instance_; 581 return DataProc_instance_;
679 } 582 }
680 583
681 if (((insn & 0x00300000) == 0x00200000) && ((insn & 0x00000080) == 0x00000000) ) { 584 if (((insn & 0x00300000) == 0x00200000) && ((insn & 0x00000080) == 0x00000000) ) {
682 return state->DataProc_instance_; 585 return DataProc_instance_;
683 } 586 }
684 587
685 if (((insn & 0x00100000) == 0x00100000) && ((insn & 0x000000E0) == 0x00000080) ) { 588 if (((insn & 0x00100000) == 0x00100000) && ((insn & 0x000000E0) == 0x00000080) ) {
686 return state->DataProc_instance_; 589 return DataProc_instance_;
687 } 590 }
688 591
689 if (((insn & 0x00100000) == 0x00100000) && ((insn & 0x000000E0) == 0x000000E0) ) { 592 if (((insn & 0x00100000) == 0x00100000) && ((insn & 0x000000E0) == 0x000000E0) ) {
690 return state->DataProc_instance_; 593 return DataProc_instance_;
691 } 594 }
692 595
693 if (((insn & 0x00100000) == 0x00100000) && ((insn & 0x00000080) == 0x00000000) ) { 596 if (((insn & 0x00100000) == 0x00100000) && ((insn & 0x00000080) == 0x00000000) ) {
694 return state->DataProc_instance_; 597 return DataProc_instance_;
695 } 598 }
696 599
697 if ((true) && (true)) { 600 if ((true) && (true)) {
698 return state->Undefined_instance_; 601 return Undefined_instance_;
699 } 602 }
700 603
701 // Catch any attempt to fall through... 604 // Catch any attempt to fall through...
702 fprintf(stderr, "TABLE IS INCOMPLETE: parallel_add_sub could not parse %08X",i nsn.bits(31,0)); 605 fprintf(stderr, "TABLE IS INCOMPLETE: parallel_add_sub could not parse %08X",i nsn.bits(31,0));
703 return state->Forbidden_instance_; 606 return Forbidden_instance_;
704 } 607 }
608
705 609
706 /* 610 /*
707 * Implementation of table pack_sat_rev. 611 * Implementation of table pack_sat_rev.
708 * Specified by: See Section A5.4.3. 612 * Specified by: See Section A5.4.3.
709 */ 613 */
710 static inline const ClassDecoder &decode_pack_sat_rev( 614 const ClassDecoder &Arm32DecoderState::decode_pack_sat_rev(const Instruction ins n) const {
711 const Instruction insn, const Arm32DecoderState *state) {
712 if (((insn & 0x00700000) == 0x00000000) && ((insn & 0x000000E0) == 0x000000A0) ) { 615 if (((insn & 0x00700000) == 0x00000000) && ((insn & 0x000000E0) == 0x000000A0) ) {
713 return state->PackSatRev_instance_; 616 return PackSatRev_instance_;
714 } 617 }
715 618
716 if (((insn & 0x00700000) == 0x00000000) && ((insn & 0x00000020) == 0x00000000) ) { 619 if (((insn & 0x00700000) == 0x00000000) && ((insn & 0x00000020) == 0x00000000) ) {
717 return state->PackSatRev_instance_; 620 return PackSatRev_instance_;
718 } 621 }
719 622
720 if (((insn & 0x00700000) == 0x00400000) && ((insn & 0x000000E0) == 0x00000060) ) { 623 if (((insn & 0x00700000) == 0x00400000) && ((insn & 0x000000E0) == 0x00000060) ) {
721 return state->PackSatRev_instance_; 624 return PackSatRev_instance_;
722 } 625 }
723 626
724 if (((insn & 0x00700000) == 0x00600000) && ((insn & 0x000000A0) == 0x00000020) ) { 627 if (((insn & 0x00700000) == 0x00600000) && ((insn & 0x000000A0) == 0x00000020) ) {
725 return state->PackSatRev_instance_; 628 return PackSatRev_instance_;
726 } 629 }
727 630
728 if (((insn & 0x00700000) == 0x00700000) && ((insn & 0x000000E0) == 0x00000020) ) { 631 if (((insn & 0x00700000) == 0x00700000) && ((insn & 0x000000E0) == 0x00000020) ) {
729 return state->PackSatRev_instance_; 632 return PackSatRev_instance_;
730 } 633 }
731 634
732 if (((insn & 0x00300000) == 0x00300000) && ((insn & 0x000000E0) == 0x00000060) ) { 635 if (((insn & 0x00300000) == 0x00300000) && ((insn & 0x000000E0) == 0x00000060) ) {
733 return state->PackSatRev_instance_; 636 return PackSatRev_instance_;
734 } 637 }
735 638
736 if (((insn & 0x00300000) == 0x00300000) && ((insn & 0x000000E0) == 0x000000A0) ) { 639 if (((insn & 0x00300000) == 0x00300000) && ((insn & 0x000000E0) == 0x000000A0) ) {
737 return state->PackSatRev_instance_; 640 return PackSatRev_instance_;
738 } 641 }
739 642
740 if (((insn & 0x00500000) == 0x00000000) && ((insn & 0x000000E0) == 0x00000060) ) { 643 if (((insn & 0x00500000) == 0x00000000) && ((insn & 0x000000E0) == 0x00000060) ) {
741 return state->PackSatRev_instance_; 644 return PackSatRev_instance_;
742 } 645 }
743 646
744 if (((insn & 0x00600000) == 0x00200000) && ((insn & 0x000000E0) == 0x00000020) ) { 647 if (((insn & 0x00600000) == 0x00200000) && ((insn & 0x000000E0) == 0x00000020) ) {
745 return state->PackSatRev_instance_; 648 return PackSatRev_instance_;
746 } 649 }
747 650
748 if (((insn & 0x00200000) == 0x00200000) && ((insn & 0x00000020) == 0x00000000) ) { 651 if (((insn & 0x00200000) == 0x00200000) && ((insn & 0x00000020) == 0x00000000) ) {
749 return state->PackSatRev_instance_; 652 return PackSatRev_instance_;
750 } 653 }
751 654
752 if ((true) && (true)) { 655 if ((true) && (true)) {
753 return state->Undefined_instance_; 656 return Undefined_instance_;
754 } 657 }
755 658
756 // Catch any attempt to fall through... 659 // Catch any attempt to fall through...
757 fprintf(stderr, "TABLE IS INCOMPLETE: pack_sat_rev could not parse %08X",insn. bits(31,0)); 660 fprintf(stderr, "TABLE IS INCOMPLETE: pack_sat_rev could not parse %08X",insn. bits(31,0));
758 return state->Forbidden_instance_; 661 return Forbidden_instance_;
759 } 662 }
663
760 664
761 /* 665 /*
762 * Implementation of table signed_mult. 666 * Implementation of table signed_mult.
763 * Specified by: See Section A5.4.4. 667 * Specified by: See Section A5.4.4.
764 */ 668 */
765 static inline const ClassDecoder &decode_signed_mult( 669 const ClassDecoder &Arm32DecoderState::decode_signed_mult(const Instruction insn ) const {
766 const Instruction insn, const Arm32DecoderState *state) {
767 if (((insn & 0x00700000) == 0x00000000) && ((insn & 0x000000C0) == 0x00000040) && ((insn & 0x0000F000) != 0x0000F000)) { 670 if (((insn & 0x00700000) == 0x00000000) && ((insn & 0x000000C0) == 0x00000040) && ((insn & 0x0000F000) != 0x0000F000)) {
768 return state->Multiply_instance_; 671 return Multiply_instance_;
769 } 672 }
770 673
771 if (((insn & 0x00700000) == 0x00000000) && ((insn & 0x00000080) == 0x00000000) && (true)) { 674 if (((insn & 0x00700000) == 0x00000000) && ((insn & 0x00000080) == 0x00000000) && (true)) {
772 return state->Multiply_instance_; 675 return Multiply_instance_;
773 } 676 }
774 677
775 if (((insn & 0x00700000) == 0x00400000) && ((insn & 0x00000080) == 0x00000000) && (true)) { 678 if (((insn & 0x00700000) == 0x00400000) && ((insn & 0x00000080) == 0x00000000) && (true)) {
776 return state->LongMultiply_instance_; 679 return LongMultiply_instance_;
777 } 680 }
778 681
779 if (((insn & 0x00700000) == 0x00500000) && ((insn & 0x000000C0) == 0x00000000) && (true)) { 682 if (((insn & 0x00700000) == 0x00500000) && ((insn & 0x000000C0) == 0x00000000) && (true)) {
780 return state->Multiply_instance_; 683 return Multiply_instance_;
781 } 684 }
782 685
783 if (((insn & 0x00700000) == 0x00500000) && ((insn & 0x000000C0) == 0x000000C0) && (true)) { 686 if (((insn & 0x00700000) == 0x00500000) && ((insn & 0x000000C0) == 0x000000C0) && (true)) {
784 return state->Multiply_instance_; 687 return Multiply_instance_;
785 } 688 }
786 689
787 if ((true) && (true) && (true)) { 690 if ((true) && (true) && (true)) {
788 return state->Undefined_instance_; 691 return Undefined_instance_;
789 } 692 }
790 693
791 // Catch any attempt to fall through... 694 // Catch any attempt to fall through...
792 fprintf(stderr, "TABLE IS INCOMPLETE: signed_mult could not parse %08X",insn.b its(31,0)); 695 fprintf(stderr, "TABLE IS INCOMPLETE: signed_mult could not parse %08X",insn.b its(31,0));
793 return state->Forbidden_instance_; 696 return Forbidden_instance_;
794 } 697 }
698
795 699
796 /* 700 /*
797 * Implementation of table branch_block_xfer. 701 * Implementation of table branch_block_xfer.
798 * Specified by: See Section A5.5. 702 * Specified by: See Section A5.5.
799 */ 703 */
800 static inline const ClassDecoder &decode_branch_block_xfer( 704 const ClassDecoder &Arm32DecoderState::decode_branch_block_xfer(const Instructio n insn) const {
801 const Instruction insn, const Arm32DecoderState *state) {
802 if (((insn & 0x02500000) == 0x00000000)) { 705 if (((insn & 0x02500000) == 0x00000000)) {
803 return state->StoreImmediate_instance_; 706 return StoreImmediate_instance_;
804 } 707 }
805 708
806 if (((insn & 0x02500000) == 0x00100000)) { 709 if (((insn & 0x02500000) == 0x00100000)) {
807 return state->LoadMultiple_instance_; 710 return LoadMultiple_instance_;
808 } 711 }
809 712
810 if (((insn & 0x02400000) == 0x00400000)) { 713 if (((insn & 0x02400000) == 0x00400000)) {
811 return state->Forbidden_instance_; 714 return Forbidden_instance_;
812 } 715 }
813 716
814 if (((insn & 0x02000000) == 0x02000000)) { 717 if (((insn & 0x02000000) == 0x02000000)) {
815 return state->Branch_instance_; 718 return Branch_instance_;
816 } 719 }
817 720
818 // Catch any attempt to fall through... 721 // Catch any attempt to fall through...
819 fprintf(stderr, "TABLE IS INCOMPLETE: branch_block_xfer could not parse %08X", insn.bits(31,0)); 722 fprintf(stderr, "TABLE IS INCOMPLETE: branch_block_xfer could not parse %08X", insn.bits(31,0));
820 return state->Forbidden_instance_; 723 return Forbidden_instance_;
821 } 724 }
725
822 726
823 /* 727 /*
824 * Implementation of table super_cop. 728 * Implementation of table super_cop.
825 * Specified by: See Section A5.6. 729 * Specified by: See Section A5.6.
826 */ 730 */
827 static inline const ClassDecoder &decode_super_cop( 731 const ClassDecoder &Arm32DecoderState::decode_super_cop(const Instruction insn) const {
828 const Instruction insn, const Arm32DecoderState *state) {
829 if (((insn & 0x03F00000) == 0x00400000) && (true)) { 732 if (((insn & 0x03F00000) == 0x00400000) && (true)) {
830 return state->CoprocessorOp_instance_; 733 return CoprocessorOp_instance_;
831 } 734 }
832 735
833 if (((insn & 0x03F00000) == 0x00500000) && (true)) { 736 if (((insn & 0x03F00000) == 0x00500000) && (true)) {
834 return state->MoveDoubleFromCoprocessor_instance_; 737 return MoveDoubleFromCoprocessor_instance_;
835 } 738 }
836 739
837 if (((insn & 0x03E00000) == 0x00000000) && (true)) { 740 if (((insn & 0x03E00000) == 0x00000000) && (true)) {
838 return state->Undefined_instance_; 741 return Undefined_instance_;
839 } 742 }
840 743
841 if (((insn & 0x03100000) == 0x02000000) && ((insn & 0x00000010) == 0x00000010) ) { 744 if (((insn & 0x03100000) == 0x02000000) && ((insn & 0x00000010) == 0x00000010) ) {
842 return state->CoprocessorOp_instance_; 745 return CoprocessorOp_instance_;
843 } 746 }
844 747
845 if (((insn & 0x03100000) == 0x02100000) && ((insn & 0x00000010) == 0x00000010) ) { 748 if (((insn & 0x03100000) == 0x02100000) && ((insn & 0x00000010) == 0x00000010) ) {
846 return state->MoveFromCoprocessor_instance_; 749 return MoveFromCoprocessor_instance_;
847 } 750 }
848 751
849 if (((insn & 0x02100000) == 0x00000000) && (true)) { 752 if (((insn & 0x02100000) == 0x00000000) && (true)) {
850 return state->StoreCoprocessor_instance_; 753 return StoreCoprocessor_instance_;
851 } 754 }
852 755
853 if (((insn & 0x02100000) == 0x00100000) && (true)) { 756 if (((insn & 0x02100000) == 0x00100000) && (true)) {
854 return state->LoadCoprocessor_instance_; 757 return LoadCoprocessor_instance_;
855 } 758 }
856 759
857 if (((insn & 0x03000000) == 0x02000000) && ((insn & 0x00000010) == 0x00000000) ) { 760 if (((insn & 0x03000000) == 0x02000000) && ((insn & 0x00000010) == 0x00000000) ) {
858 return state->CoprocessorOp_instance_; 761 return CoprocessorOp_instance_;
859 } 762 }
860 763
861 if (((insn & 0x03000000) == 0x03000000) && (true)) { 764 if (((insn & 0x03000000) == 0x03000000) && (true)) {
862 return state->Forbidden_instance_; 765 return Forbidden_instance_;
863 } 766 }
864 767
865 // Catch any attempt to fall through... 768 // Catch any attempt to fall through...
866 fprintf(stderr, "TABLE IS INCOMPLETE: super_cop could not parse %08X",insn.bit s(31,0)); 769 fprintf(stderr, "TABLE IS INCOMPLETE: super_cop could not parse %08X",insn.bit s(31,0));
867 return state->Forbidden_instance_; 770 return Forbidden_instance_;
868 } 771 }
772
869 773
870 /* 774 /*
871 * Implementation of table unconditional. 775 * Implementation of table unconditional.
872 * Specified by: See Section A5.7. 776 * Specified by: See Section A5.7.
873 */ 777 */
874 static inline const ClassDecoder &decode_unconditional( 778 const ClassDecoder &Arm32DecoderState::decode_unconditional(const Instruction in sn) const {
875 const Instruction insn, const Arm32DecoderState *state) {
876 if (((insn & 0x0FF00000) == 0x0C400000) && (true) && (true)) { 779 if (((insn & 0x0FF00000) == 0x0C400000) && (true) && (true)) {
877 return state->CoprocessorOp_instance_; 780 return CoprocessorOp_instance_;
878 } 781 }
879 782
880 if (((insn & 0x0FF00000) == 0x0C500000) && (true) && (true)) { 783 if (((insn & 0x0FF00000) == 0x0C500000) && (true) && (true)) {
881 return state->MoveDoubleFromCoprocessor_instance_; 784 return MoveDoubleFromCoprocessor_instance_;
882 } 785 }
883 786
884 if (((insn & 0x0FB00000) == 0x0C200000) && (true) && (true)) { 787 if (((insn & 0x0FB00000) == 0x0C200000) && (true) && (true)) {
885 return state->StoreCoprocessor_instance_; 788 return StoreCoprocessor_instance_;
886 } 789 }
887 790
888 if (((insn & 0x0FB00000) == 0x0C300000) && (true) && ((insn & 0x000F0000) != 0 x000F0000)) { 791 if (((insn & 0x0FB00000) == 0x0C300000) && (true) && ((insn & 0x000F0000) != 0 x000F0000)) {
889 return state->LoadCoprocessor_instance_; 792 return LoadCoprocessor_instance_;
890 } 793 }
891 794
892 if (((insn & 0x0F900000) == 0x0C800000) && (true) && (true)) { 795 if (((insn & 0x0F900000) == 0x0C800000) && (true) && (true)) {
893 return state->StoreCoprocessor_instance_; 796 return StoreCoprocessor_instance_;
894 } 797 }
895 798
896 if (((insn & 0x0F900000) == 0x0C900000) && (true) && ((insn & 0x000F0000) == 0 x000F0000)) { 799 if (((insn & 0x0F900000) == 0x0C900000) && (true) && ((insn & 0x000F0000) == 0 x000F0000)) {
897 return state->LoadCoprocessor_instance_; 800 return LoadCoprocessor_instance_;
898 } 801 }
899 802
900 if (((insn & 0x0E500000) == 0x08100000) && (true) && (true)) { 803 if (((insn & 0x0E500000) == 0x08100000) && (true) && (true)) {
901 return state->Forbidden_instance_; 804 return Forbidden_instance_;
902 } 805 }
903 806
904 if (((insn & 0x0E500000) == 0x08400000) && (true) && (true)) { 807 if (((insn & 0x0E500000) == 0x08400000) && (true) && (true)) {
905 return state->Forbidden_instance_; 808 return Forbidden_instance_;
906 } 809 }
907 810
908 if (((insn & 0x0F100000) == 0x0D000000) && (true) && (true)) { 811 if (((insn & 0x0F100000) == 0x0D000000) && (true) && (true)) {
909 return state->StoreCoprocessor_instance_; 812 return StoreCoprocessor_instance_;
910 } 813 }
911 814
912 if (((insn & 0x0F100000) == 0x0D100000) && (true) && ((insn & 0x000F0000) == 0 x000F0000)) { 815 if (((insn & 0x0F100000) == 0x0D100000) && (true) && ((insn & 0x000F0000) == 0 x000F0000)) {
913 return state->LoadCoprocessor_instance_; 816 return LoadCoprocessor_instance_;
914 } 817 }
915 818
916 if (((insn & 0x0F100000) == 0x0E000000) && ((insn & 0x00000010) == 0x00000010) && (true)) { 819 if (((insn & 0x0F100000) == 0x0E000000) && ((insn & 0x00000010) == 0x00000010) && (true)) {
917 return state->CoprocessorOp_instance_; 820 return CoprocessorOp_instance_;
918 } 821 }
919 822
920 if (((insn & 0x0F100000) == 0x0E100000) && ((insn & 0x00000010) == 0x00000010) && (true)) { 823 if (((insn & 0x0F100000) == 0x0E100000) && ((insn & 0x00000010) == 0x00000010) && (true)) {
921 return state->MoveFromCoprocessor_instance_; 824 return MoveFromCoprocessor_instance_;
922 } 825 }
923 826
924 if (((insn & 0x0F000000) == 0x0E000000) && ((insn & 0x00000010) == 0x00000000) && (true)) { 827 if (((insn & 0x0F000000) == 0x0E000000) && ((insn & 0x00000010) == 0x00000000) && (true)) {
925 return state->CoprocessorOp_instance_; 828 return CoprocessorOp_instance_;
926 } 829 }
927 830
928 if (((insn & 0x0E000000) == 0x0A000000) && (true) && (true)) { 831 if (((insn & 0x0E000000) == 0x0A000000) && (true) && (true)) {
929 return state->Forbidden_instance_; 832 return Forbidden_instance_;
930 } 833 }
931 834
932 if (((insn & 0x08000000) == 0x00000000) && (true) && (true)) { 835 if (((insn & 0x08000000) == 0x00000000) && (true) && (true)) {
933 return decode_misc_hints_simd(insn, state); 836 return decode_misc_hints_simd(insn);
934 } 837 }
935 838
936 if ((true) && (true) && (true)) { 839 if ((true) && (true) && (true)) {
937 return state->Undefined_instance_; 840 return Undefined_instance_;
938 } 841 }
939 842
940 // Catch any attempt to fall through... 843 // Catch any attempt to fall through...
941 fprintf(stderr, "TABLE IS INCOMPLETE: unconditional could not parse %08X",insn .bits(31,0)); 844 fprintf(stderr, "TABLE IS INCOMPLETE: unconditional could not parse %08X",insn .bits(31,0));
942 return state->Forbidden_instance_; 845 return Forbidden_instance_;
943 } 846 }
847
944 848
945 /* 849 /*
946 * Implementation of table misc_hints_simd. 850 * Implementation of table misc_hints_simd.
947 * Specified by: See Section A5.7.1. 851 * Specified by: See Section A5.7.1.
948 */ 852 */
949 static inline const ClassDecoder &decode_misc_hints_simd( 853 const ClassDecoder &Arm32DecoderState::decode_misc_hints_simd(const Instruction insn) const {
950 const Instruction insn, const Arm32DecoderState *state) {
951 if (((insn & 0x07F00000) == 0x01000000) && ((insn & 0x000000F0) == 0x00000000) && ((insn & 0x00010000) == 0x00010000)) { 854 if (((insn & 0x07F00000) == 0x01000000) && ((insn & 0x000000F0) == 0x00000000) && ((insn & 0x00010000) == 0x00010000)) {
952 return state->Forbidden_instance_; 855 return Forbidden_instance_;
953 } 856 }
954 857
955 if (((insn & 0x07F00000) == 0x01000000) && ((insn & 0x00000020) == 0x00000000) && ((insn & 0x00010000) == 0x00000000)) { 858 if (((insn & 0x07F00000) == 0x01000000) && ((insn & 0x00000020) == 0x00000000) && ((insn & 0x00010000) == 0x00000000)) {
956 return state->Forbidden_instance_; 859 return Forbidden_instance_;
957 } 860 }
958 861
959 if (((insn & 0x07F00000) == 0x05700000) && ((insn & 0x000000F0) == 0x00000010) && (true)) { 862 if (((insn & 0x07F00000) == 0x05700000) && ((insn & 0x000000F0) == 0x00000010) && (true)) {
960 return state->EffectiveNoOp_instance_; 863 return EffectiveNoOp_instance_;
961 } 864 }
962 865
963 if (((insn & 0x07F00000) == 0x05700000) && ((insn & 0x000000F0) == 0x00000050) && (true)) { 866 if (((insn & 0x07F00000) == 0x05700000) && ((insn & 0x000000F0) == 0x00000050) && (true)) {
964 return state->EffectiveNoOp_instance_; 867 return EffectiveNoOp_instance_;
965 } 868 }
966 869
967 if (((insn & 0x07F00000) == 0x05700000) && ((insn & 0x000000D0) == 0x00000040) && (true)) { 870 if (((insn & 0x07F00000) == 0x05700000) && ((insn & 0x000000D0) == 0x00000040) && (true)) {
968 return state->EffectiveNoOp_instance_; 871 return EffectiveNoOp_instance_;
969 } 872 }
970 873
971 if (((insn & 0x07700000) == 0x04100000) && (true) && (true)) { 874 if (((insn & 0x07700000) == 0x04100000) && (true) && (true)) {
972 return state->EffectiveNoOp_instance_; 875 return EffectiveNoOp_instance_;
973 } 876 }
974 877
975 if (((insn & 0x07700000) == 0x04500000) && (true) && (true)) { 878 if (((insn & 0x07700000) == 0x04500000) && (true) && (true)) {
976 return state->EffectiveNoOp_instance_; 879 return EffectiveNoOp_instance_;
977 } 880 }
978 881
979 if (((insn & 0x07700000) == 0x05100000) && (true) && ((insn & 0x000F0000) != 0 x000F0000)) { 882 if (((insn & 0x07700000) == 0x05100000) && (true) && ((insn & 0x000F0000) != 0 x000F0000)) {
980 return state->EffectiveNoOp_instance_; 883 return EffectiveNoOp_instance_;
981 } 884 }
982 885
983 if (((insn & 0x07700000) == 0x05100000) && (true) && ((insn & 0x000F0000) == 0 x000F0000)) { 886 if (((insn & 0x07700000) == 0x05100000) && (true) && ((insn & 0x000F0000) == 0 x000F0000)) {
984 return state->Unpredictable_instance_; 887 return Unpredictable_instance_;
985 } 888 }
986 889
987 if (((insn & 0x07700000) == 0x05500000) && (true) && (true)) { 890 if (((insn & 0x07700000) == 0x05500000) && (true) && (true)) {
988 return state->EffectiveNoOp_instance_; 891 return EffectiveNoOp_instance_;
989 } 892 }
990 893
991 if (((insn & 0x07700000) == 0x06500000) && ((insn & 0x00000010) == 0x00000000) && (true)) { 894 if (((insn & 0x07700000) == 0x06500000) && ((insn & 0x00000010) == 0x00000000) && (true)) {
992 return state->EffectiveNoOp_instance_; 895 return EffectiveNoOp_instance_;
993 } 896 }
994 897
995 if (((insn & 0x07700000) == 0x07500000) && ((insn & 0x00000010) == 0x00000000) && (true)) { 898 if (((insn & 0x07700000) == 0x07500000) && ((insn & 0x00000010) == 0x00000000) && (true)) {
996 return state->EffectiveNoOp_instance_; 899 return EffectiveNoOp_instance_;
997 } 900 }
998 901
999 if (((insn & 0x06700000) == 0x06100000) && ((insn & 0x00000010) == 0x00000000) && (true)) { 902 if (((insn & 0x06700000) == 0x06100000) && ((insn & 0x00000010) == 0x00000000) && (true)) {
1000 return state->EffectiveNoOp_instance_; 903 return EffectiveNoOp_instance_;
1001 } 904 }
1002 905
1003 if (((insn & 0x06300000) == 0x04300000) && (true) && (true)) { 906 if (((insn & 0x06300000) == 0x04300000) && (true) && (true)) {
1004 return state->Unpredictable_instance_; 907 return Unpredictable_instance_;
1005 } 908 }
1006 909
1007 if (((insn & 0x06300000) == 0x06300000) && ((insn & 0x00000010) == 0x00000000) && (true)) { 910 if (((insn & 0x06300000) == 0x06300000) && ((insn & 0x00000010) == 0x00000000) && (true)) {
1008 return state->Unpredictable_instance_; 911 return Unpredictable_instance_;
1009 } 912 }
1010 913
1011 if (((insn & 0x07100000) == 0x04000000) && (true) && (true)) { 914 if (((insn & 0x07100000) == 0x04000000) && (true) && (true)) {
1012 return decode_simd_load_store(insn, state); 915 return decode_simd_load_store(insn);
1013 } 916 }
1014 917
1015 if (((insn & 0x06000000) == 0x02000000) && (true) && (true)) { 918 if (((insn & 0x06000000) == 0x02000000) && (true) && (true)) {
1016 return decode_simd_dp(insn, state); 919 return decode_simd_dp(insn);
1017 } 920 }
1018 921
1019 if ((true) && (true) && (true)) { 922 if ((true) && (true) && (true)) {
1020 return state->Undefined_instance_; 923 return Undefined_instance_;
1021 } 924 }
1022 925
1023 // Catch any attempt to fall through... 926 // Catch any attempt to fall through...
1024 fprintf(stderr, "TABLE IS INCOMPLETE: misc_hints_simd could not parse %08X",in sn.bits(31,0)); 927 fprintf(stderr, "TABLE IS INCOMPLETE: misc_hints_simd could not parse %08X",in sn.bits(31,0));
1025 return state->Forbidden_instance_; 928 return Forbidden_instance_;
1026 } 929 }
930
1027 931
1028 /* 932 /*
1029 * Implementation of table simd_dp. 933 * Implementation of table simd_dp.
1030 * Specified by: See Section A7.4. 934 * Specified by: See Section A7.4.
1031 */ 935 */
1032 static inline const ClassDecoder &decode_simd_dp( 936 const ClassDecoder &Arm32DecoderState::decode_simd_dp(const Instruction insn) co nst {
1033 const Instruction insn, const Arm32DecoderState *state) {
1034 if (((insn & 0x01000000) == 0x00000000) && ((insn & 0x00B00000) == 0x00B00000) && (true) && ((insn & 0x00000010) == 0x00000000)) { 937 if (((insn & 0x01000000) == 0x00000000) && ((insn & 0x00B00000) == 0x00B00000) && (true) && ((insn & 0x00000010) == 0x00000000)) {
1035 return state->EffectiveNoOp_instance_; 938 return EffectiveNoOp_instance_;
1036 } 939 }
1037 940
1038 if (((insn & 0x01000000) == 0x01000000) && ((insn & 0x00B00000) == 0x00B00000) && ((insn & 0x00000F00) == 0x00000C00) && ((insn & 0x00000090) == 0x00000000)) { 941 if (((insn & 0x01000000) == 0x01000000) && ((insn & 0x00B00000) == 0x00B00000) && ((insn & 0x00000F00) == 0x00000C00) && ((insn & 0x00000090) == 0x00000000)) {
1039 return state->EffectiveNoOp_instance_; 942 return EffectiveNoOp_instance_;
1040 } 943 }
1041 944
1042 if (((insn & 0x01000000) == 0x01000000) && ((insn & 0x00B00000) == 0x00B00000) && ((insn & 0x00000C00) == 0x00000800) && ((insn & 0x00000010) == 0x00000000)) { 945 if (((insn & 0x01000000) == 0x01000000) && ((insn & 0x00B00000) == 0x00B00000) && ((insn & 0x00000C00) == 0x00000800) && ((insn & 0x00000010) == 0x00000000)) {
1043 return state->EffectiveNoOp_instance_; 946 return EffectiveNoOp_instance_;
1044 } 947 }
1045 948
1046 if (((insn & 0x01000000) == 0x01000000) && ((insn & 0x00B00000) == 0x00B00000) && ((insn & 0x00000800) == 0x00000000) && ((insn & 0x00000010) == 0x00000000)) { 949 if (((insn & 0x01000000) == 0x01000000) && ((insn & 0x00B00000) == 0x00B00000) && ((insn & 0x00000800) == 0x00000000) && ((insn & 0x00000010) == 0x00000000)) {
1047 return decode_simd_dp_2misc(insn, state); 950 return decode_simd_dp_2misc(insn);
1048 } 951 }
1049 952
1050 if ((true) && ((insn & 0x00B80000) == 0x00800000) && (true) && ((insn & 0x0000 0090) == 0x00000010)) { 953 if ((true) && ((insn & 0x00B80000) == 0x00800000) && (true) && ((insn & 0x0000 0090) == 0x00000010)) {
1051 return decode_simd_dp_1imm(insn, state); 954 return decode_simd_dp_1imm(insn);
1052 } 955 }
1053 956
1054 if ((true) && ((insn & 0x00B80000) == 0x00880000) && (true) && ((insn & 0x0000 0090) == 0x00000010)) { 957 if ((true) && ((insn & 0x00B80000) == 0x00880000) && (true) && ((insn & 0x0000 0090) == 0x00000010)) {
1055 return decode_simd_dp_2shift(insn, state); 958 return decode_simd_dp_2shift(insn);
1056 } 959 }
1057 960
1058 if ((true) && ((insn & 0x00B00000) == 0x00900000) && (true) && ((insn & 0x0000 0090) == 0x00000010)) { 961 if ((true) && ((insn & 0x00B00000) == 0x00900000) && (true) && ((insn & 0x0000 0090) == 0x00000010)) {
1059 return decode_simd_dp_2shift(insn, state); 962 return decode_simd_dp_2shift(insn);
1060 } 963 }
1061 964
1062 if ((true) && ((insn & 0x00B00000) == 0x00A00000) && (true) && ((insn & 0x0000 0050) == 0x00000000)) { 965 if ((true) && ((insn & 0x00B00000) == 0x00A00000) && (true) && ((insn & 0x0000 0050) == 0x00000000)) {
1063 return decode_simd_dp_3diff(insn, state); 966 return decode_simd_dp_3diff(insn);
1064 } 967 }
1065 968
1066 if ((true) && ((insn & 0x00B00000) == 0x00A00000) && (true) && ((insn & 0x0000 0050) == 0x00000040)) { 969 if ((true) && ((insn & 0x00B00000) == 0x00A00000) && (true) && ((insn & 0x0000 0050) == 0x00000040)) {
1067 return decode_simd_dp_2scalar(insn, state); 970 return decode_simd_dp_2scalar(insn);
1068 } 971 }
1069 972
1070 if ((true) && ((insn & 0x00A00000) == 0x00800000) && (true) && ((insn & 0x0000 0050) == 0x00000000)) { 973 if ((true) && ((insn & 0x00A00000) == 0x00800000) && (true) && ((insn & 0x0000 0050) == 0x00000000)) {
1071 return decode_simd_dp_3diff(insn, state); 974 return decode_simd_dp_3diff(insn);
1072 } 975 }
1073 976
1074 if ((true) && ((insn & 0x00A00000) == 0x00800000) && (true) && ((insn & 0x0000 0050) == 0x00000040)) { 977 if ((true) && ((insn & 0x00A00000) == 0x00800000) && (true) && ((insn & 0x0000 0050) == 0x00000040)) {
1075 return decode_simd_dp_2scalar(insn, state); 978 return decode_simd_dp_2scalar(insn);
1076 } 979 }
1077 980
1078 if ((true) && ((insn & 0x00A00000) == 0x00A00000) && (true) && ((insn & 0x0000 0090) == 0x00000010)) { 981 if ((true) && ((insn & 0x00A00000) == 0x00A00000) && (true) && ((insn & 0x0000 0090) == 0x00000010)) {
1079 return decode_simd_dp_2shift(insn, state); 982 return decode_simd_dp_2shift(insn);
1080 } 983 }
1081 984
1082 if ((true) && ((insn & 0x00800000) == 0x00000000) && (true) && (true)) { 985 if ((true) && ((insn & 0x00800000) == 0x00000000) && (true) && (true)) {
1083 return decode_simd_dp_3same(insn, state); 986 return decode_simd_dp_3same(insn);
1084 } 987 }
1085 988
1086 if ((true) && ((insn & 0x00800000) == 0x00800000) && (true) && ((insn & 0x0000 0090) == 0x00000090)) { 989 if ((true) && ((insn & 0x00800000) == 0x00800000) && (true) && ((insn & 0x0000 0090) == 0x00000090)) {
1087 return decode_simd_dp_2shift(insn, state); 990 return decode_simd_dp_2shift(insn);
1088 } 991 }
1089 992
1090 if ((true) && (true) && (true) && (true)) { 993 if ((true) && (true) && (true) && (true)) {
1091 return state->Undefined_instance_; 994 return Undefined_instance_;
1092 } 995 }
1093 996
1094 // Catch any attempt to fall through... 997 // Catch any attempt to fall through...
1095 fprintf(stderr, "TABLE IS INCOMPLETE: simd_dp could not parse %08X",insn.bits( 31,0)); 998 fprintf(stderr, "TABLE IS INCOMPLETE: simd_dp could not parse %08X",insn.bits( 31,0));
1096 return state->Forbidden_instance_; 999 return Forbidden_instance_;
1097 } 1000 }
1001
1098 1002
1099 /* 1003 /*
1100 * Implementation of table simd_dp_3same. 1004 * Implementation of table simd_dp_3same.
1101 * Specified by: See Section A7.4.1. 1005 * Specified by: See Section A7.4.1.
1102 */ 1006 */
1103 static inline const ClassDecoder &decode_simd_dp_3same( 1007 const ClassDecoder &Arm32DecoderState::decode_simd_dp_3same(const Instruction in sn) const {
1104 const Instruction insn, const Arm32DecoderState *state) {
1105 if (((insn & 0x00000F00) == 0x00000100) && ((insn & 0x00000010) == 0x00000010) && (true) && (true)) { 1008 if (((insn & 0x00000F00) == 0x00000100) && ((insn & 0x00000010) == 0x00000010) && (true) && (true)) {
1106 return state->EffectiveNoOp_instance_; 1009 return EffectiveNoOp_instance_;
1107 } 1010 }
1108 1011
1109 if (((insn & 0x00000F00) == 0x00000500) && (true) && (true) && (true)) { 1012 if (((insn & 0x00000F00) == 0x00000500) && (true) && (true) && (true)) {
1110 return state->EffectiveNoOp_instance_; 1013 return EffectiveNoOp_instance_;
1111 } 1014 }
1112 1015
1113 if (((insn & 0x00000F00) == 0x00000900) && (true) && (true) && (true)) { 1016 if (((insn & 0x00000F00) == 0x00000900) && (true) && (true) && (true)) {
1114 return state->EffectiveNoOp_instance_; 1017 return EffectiveNoOp_instance_;
1115 } 1018 }
1116 1019
1117 if (((insn & 0x00000F00) == 0x00000B00) && ((insn & 0x00000010) == 0x00000000) && (true) && (true)) { 1020 if (((insn & 0x00000F00) == 0x00000B00) && ((insn & 0x00000010) == 0x00000000) && (true) && (true)) {
1118 return state->EffectiveNoOp_instance_; 1021 return EffectiveNoOp_instance_;
1119 } 1022 }
1120 1023
1121 if (((insn & 0x00000F00) == 0x00000D00) && ((insn & 0x00000010) == 0x00000000) && ((insn & 0x01000000) == 0x01000000) && (true)) { 1024 if (((insn & 0x00000F00) == 0x00000D00) && ((insn & 0x00000010) == 0x00000000) && ((insn & 0x01000000) == 0x01000000) && (true)) {
1122 return state->EffectiveNoOp_instance_; 1025 return EffectiveNoOp_instance_;
1123 } 1026 }
1124 1027
1125 if (((insn & 0x00000F00) == 0x00000D00) && ((insn & 0x00000010) == 0x00000010) && ((insn & 0x01000000) == 0x01000000) && ((insn & 0x00200000) == 0x00000000)) { 1028 if (((insn & 0x00000F00) == 0x00000D00) && ((insn & 0x00000010) == 0x00000010) && ((insn & 0x01000000) == 0x01000000) && ((insn & 0x00200000) == 0x00000000)) {
1126 return state->EffectiveNoOp_instance_; 1029 return EffectiveNoOp_instance_;
1127 } 1030 }
1128 1031
1129 if (((insn & 0x00000F00) == 0x00000D00) && (true) && ((insn & 0x01000000) == 0 x00000000) && (true)) { 1032 if (((insn & 0x00000F00) == 0x00000D00) && (true) && ((insn & 0x01000000) == 0 x00000000) && (true)) {
1130 return state->EffectiveNoOp_instance_; 1033 return EffectiveNoOp_instance_;
1131 } 1034 }
1132 1035
1133 if (((insn & 0x00000F00) == 0x00000E00) && ((insn & 0x00000010) == 0x00000000) && ((insn & 0x01000000) == 0x01000000) && ((insn & 0x00200000) == 0x00200000)) { 1036 if (((insn & 0x00000F00) == 0x00000E00) && ((insn & 0x00000010) == 0x00000000) && ((insn & 0x01000000) == 0x01000000) && ((insn & 0x00200000) == 0x00200000)) {
1134 return state->EffectiveNoOp_instance_; 1037 return EffectiveNoOp_instance_;
1135 } 1038 }
1136 1039
1137 if (((insn & 0x00000F00) == 0x00000E00) && ((insn & 0x00000010) == 0x00000000) && (true) && ((insn & 0x00200000) == 0x00000000)) { 1040 if (((insn & 0x00000F00) == 0x00000E00) && ((insn & 0x00000010) == 0x00000000) && (true) && ((insn & 0x00200000) == 0x00000000)) {
1138 return state->EffectiveNoOp_instance_; 1041 return EffectiveNoOp_instance_;
1139 } 1042 }
1140 1043
1141 if (((insn & 0x00000F00) == 0x00000E00) && ((insn & 0x00000010) == 0x00000010) && ((insn & 0x01000000) == 0x01000000) && (true)) { 1044 if (((insn & 0x00000F00) == 0x00000E00) && ((insn & 0x00000010) == 0x00000010) && ((insn & 0x01000000) == 0x01000000) && (true)) {
1142 return state->EffectiveNoOp_instance_; 1045 return EffectiveNoOp_instance_;
1143 } 1046 }
1144 1047
1145 if (((insn & 0x00000700) == 0x00000700) && ((insn & 0x00000010) == 0x00000000) && (true) && (true)) { 1048 if (((insn & 0x00000700) == 0x00000700) && ((insn & 0x00000010) == 0x00000000) && (true) && (true)) {
1146 return state->EffectiveNoOp_instance_; 1049 return EffectiveNoOp_instance_;
1147 } 1050 }
1148 1051
1149 if (((insn & 0x00000B00) == 0x00000300) && ((insn & 0x00000010) == 0x00000010) && (true) && (true)) { 1052 if (((insn & 0x00000B00) == 0x00000300) && ((insn & 0x00000010) == 0x00000010) && (true) && (true)) {
1150 return state->EffectiveNoOp_instance_; 1053 return EffectiveNoOp_instance_;
1151 } 1054 }
1152 1055
1153 if (((insn & 0x00000B00) == 0x00000B00) && ((insn & 0x00000010) == 0x00000010) && ((insn & 0x01000000) == 0x00000000) && (true)) { 1056 if (((insn & 0x00000B00) == 0x00000B00) && ((insn & 0x00000010) == 0x00000010) && ((insn & 0x01000000) == 0x00000000) && (true)) {
1154 return state->EffectiveNoOp_instance_; 1057 return EffectiveNoOp_instance_;
1155 } 1058 }
1156 1059
1157 if (((insn & 0x00000D00) == 0x00000100) && ((insn & 0x00000010) == 0x00000000) && (true) && (true)) { 1060 if (((insn & 0x00000D00) == 0x00000100) && ((insn & 0x00000010) == 0x00000000) && (true) && (true)) {
1158 return state->EffectiveNoOp_instance_; 1061 return EffectiveNoOp_instance_;
1159 } 1062 }
1160 1063
1161 if (((insn & 0x00000D00) == 0x00000800) && (true) && (true) && (true)) { 1064 if (((insn & 0x00000D00) == 0x00000800) && (true) && (true) && (true)) {
1162 return state->EffectiveNoOp_instance_; 1065 return EffectiveNoOp_instance_;
1163 } 1066 }
1164 1067
1165 if (((insn & 0x00000900) == 0x00000000) && (true) && (true) && (true)) { 1068 if (((insn & 0x00000900) == 0x00000000) && (true) && (true) && (true)) {
1166 return state->EffectiveNoOp_instance_; 1069 return EffectiveNoOp_instance_;
1167 } 1070 }
1168 1071
1169 if ((true) && (true) && (true) && (true)) { 1072 if ((true) && (true) && (true) && (true)) {
1170 return state->Undefined_instance_; 1073 return Undefined_instance_;
1171 } 1074 }
1172 1075
1173 // Catch any attempt to fall through... 1076 // Catch any attempt to fall through...
1174 fprintf(stderr, "TABLE IS INCOMPLETE: simd_dp_3same could not parse %08X",insn .bits(31,0)); 1077 fprintf(stderr, "TABLE IS INCOMPLETE: simd_dp_3same could not parse %08X",insn .bits(31,0));
1175 return state->Forbidden_instance_; 1078 return Forbidden_instance_;
1176 } 1079 }
1080
1177 1081
1178 /* 1082 /*
1179 * Implementation of table simd_dp_3diff. 1083 * Implementation of table simd_dp_3diff.
1180 * Specified by: See Section A7.4.2. 1084 * Specified by: See Section A7.4.2.
1181 */ 1085 */
1182 static inline const ClassDecoder &decode_simd_dp_3diff( 1086 const ClassDecoder &Arm32DecoderState::decode_simd_dp_3diff(const Instruction in sn) const {
1183 const Instruction insn, const Arm32DecoderState *state) {
1184 if (((insn & 0x00000F00) == 0x00000D00) && ((insn & 0x01000000) == 0x00000000) ) { 1087 if (((insn & 0x00000F00) == 0x00000D00) && ((insn & 0x01000000) == 0x00000000) ) {
1185 return state->EffectiveNoOp_instance_; 1088 return EffectiveNoOp_instance_;
1186 } 1089 }
1187 1090
1188 if (((insn & 0x00000D00) == 0x00000900) && ((insn & 0x01000000) == 0x00000000) ) { 1091 if (((insn & 0x00000D00) == 0x00000900) && ((insn & 0x01000000) == 0x00000000) ) {
1189 return state->EffectiveNoOp_instance_; 1092 return EffectiveNoOp_instance_;
1190 } 1093 }
1191 1094
1192 if (((insn & 0x00000900) == 0x00000800) && (true)) { 1095 if (((insn & 0x00000900) == 0x00000800) && (true)) {
1193 return state->EffectiveNoOp_instance_; 1096 return EffectiveNoOp_instance_;
1194 } 1097 }
1195 1098
1196 if (((insn & 0x00000800) == 0x00000000) && (true)) { 1099 if (((insn & 0x00000800) == 0x00000000) && (true)) {
1197 return state->EffectiveNoOp_instance_; 1100 return EffectiveNoOp_instance_;
1198 } 1101 }
1199 1102
1200 if ((true) && (true)) { 1103 if ((true) && (true)) {
1201 return state->Undefined_instance_; 1104 return Undefined_instance_;
1202 } 1105 }
1203 1106
1204 // Catch any attempt to fall through... 1107 // Catch any attempt to fall through...
1205 fprintf(stderr, "TABLE IS INCOMPLETE: simd_dp_3diff could not parse %08X",insn .bits(31,0)); 1108 fprintf(stderr, "TABLE IS INCOMPLETE: simd_dp_3diff could not parse %08X",insn .bits(31,0));
1206 return state->Forbidden_instance_; 1109 return Forbidden_instance_;
1207 } 1110 }
1111
1208 1112
1209 /* 1113 /*
1210 * Implementation of table simd_dp_2scalar. 1114 * Implementation of table simd_dp_2scalar.
1211 * Specified by: See Section A7.4.3. 1115 * Specified by: See Section A7.4.3.
1212 */ 1116 */
1213 static inline const ClassDecoder &decode_simd_dp_2scalar( 1117 const ClassDecoder &Arm32DecoderState::decode_simd_dp_2scalar(const Instruction insn) const {
1214 const Instruction insn, const Arm32DecoderState *state) {
1215 if (((insn & 0x00000F00) == 0x00000A00) && (true)) { 1118 if (((insn & 0x00000F00) == 0x00000A00) && (true)) {
1216 return state->EffectiveNoOp_instance_; 1119 return EffectiveNoOp_instance_;
1217 } 1120 }
1218 1121
1219 if (((insn & 0x00000F00) == 0x00000B00) && ((insn & 0x01000000) == 0x00000000) ) { 1122 if (((insn & 0x00000F00) == 0x00000B00) && ((insn & 0x01000000) == 0x00000000) ) {
1220 return state->EffectiveNoOp_instance_; 1123 return EffectiveNoOp_instance_;
1221 } 1124 }
1222 1125
1223 if (((insn & 0x00000B00) == 0x00000200) && (true)) { 1126 if (((insn & 0x00000B00) == 0x00000200) && (true)) {
1224 return state->EffectiveNoOp_instance_; 1127 return EffectiveNoOp_instance_;
1225 } 1128 }
1226 1129
1227 if (((insn & 0x00000B00) == 0x00000300) && ((insn & 0x01000000) == 0x00000000) ) { 1130 if (((insn & 0x00000B00) == 0x00000300) && ((insn & 0x01000000) == 0x00000000) ) {
1228 return state->EffectiveNoOp_instance_; 1131 return EffectiveNoOp_instance_;
1229 } 1132 }
1230 1133
1231 if (((insn & 0x00000200) == 0x00000000) && (true)) { 1134 if (((insn & 0x00000200) == 0x00000000) && (true)) {
1232 return state->EffectiveNoOp_instance_; 1135 return EffectiveNoOp_instance_;
1233 } 1136 }
1234 1137
1235 if ((true) && (true)) { 1138 if ((true) && (true)) {
1236 return state->Undefined_instance_; 1139 return Undefined_instance_;
1237 } 1140 }
1238 1141
1239 // Catch any attempt to fall through... 1142 // Catch any attempt to fall through...
1240 fprintf(stderr, "TABLE IS INCOMPLETE: simd_dp_2scalar could not parse %08X",in sn.bits(31,0)); 1143 fprintf(stderr, "TABLE IS INCOMPLETE: simd_dp_2scalar could not parse %08X",in sn.bits(31,0));
1241 return state->Forbidden_instance_; 1144 return Forbidden_instance_;
1242 } 1145 }
1146
1243 1147
1244 /* 1148 /*
1245 * Implementation of table simd_dp_2shift. 1149 * Implementation of table simd_dp_2shift.
1246 * Specified by: See Section A7.4.4. 1150 * Specified by: See Section A7.4.4.
1247 */ 1151 */
1248 static inline const ClassDecoder &decode_simd_dp_2shift( 1152 const ClassDecoder &Arm32DecoderState::decode_simd_dp_2shift(const Instruction i nsn) const {
1249 const Instruction insn, const Arm32DecoderState *state) {
1250 if (((insn & 0x00000F00) == 0x00000500) && ((insn & 0x01000000) == 0x00000000) && (true) && (true)) { 1153 if (((insn & 0x00000F00) == 0x00000500) && ((insn & 0x01000000) == 0x00000000) && (true) && (true)) {
1251 return state->EffectiveNoOp_instance_; 1154 return EffectiveNoOp_instance_;
1252 } 1155 }
1253 1156
1254 if (((insn & 0x00000F00) == 0x00000800) && ((insn & 0x01000000) == 0x00000000) && ((insn & 0x00000040) == 0x00000000) && ((insn & 0x00000080) == 0x00000000)) { 1157 if (((insn & 0x00000F00) == 0x00000800) && ((insn & 0x01000000) == 0x00000000) && ((insn & 0x00000040) == 0x00000000) && ((insn & 0x00000080) == 0x00000000)) {
1255 return state->EffectiveNoOp_instance_; 1158 return EffectiveNoOp_instance_;
1256 } 1159 }
1257 1160
1258 if (((insn & 0x00000F00) == 0x00000800) && ((insn & 0x01000000) == 0x01000000) && ((insn & 0x00000040) == 0x00000000) && (true)) { 1161 if (((insn & 0x00000F00) == 0x00000800) && ((insn & 0x01000000) == 0x01000000) && ((insn & 0x00000040) == 0x00000000) && (true)) {
1259 return state->EffectiveNoOp_instance_; 1162 return EffectiveNoOp_instance_;
1260 } 1163 }
1261 1164
1262 if (((insn & 0x00000F00) == 0x00000800) && (true) && ((insn & 0x00000040) == 0 x00000040) && (true)) { 1165 if (((insn & 0x00000F00) == 0x00000800) && (true) && ((insn & 0x00000040) == 0 x00000040) && (true)) {
1263 return state->EffectiveNoOp_instance_; 1166 return EffectiveNoOp_instance_;
1264 } 1167 }
1265 1168
1266 if (((insn & 0x00000F00) == 0x00000900) && (true) && (true) && (true)) { 1169 if (((insn & 0x00000F00) == 0x00000900) && (true) && (true) && (true)) {
1267 return state->EffectiveNoOp_instance_; 1170 return EffectiveNoOp_instance_;
1268 } 1171 }
1269 1172
1270 if (((insn & 0x00000F00) == 0x00000A00) && (true) && ((insn & 0x00000040) == 0 x00000000) && (true)) { 1173 if (((insn & 0x00000F00) == 0x00000A00) && (true) && ((insn & 0x00000040) == 0 x00000000) && (true)) {
1271 return state->EffectiveNoOp_instance_; 1174 return EffectiveNoOp_instance_;
1272 } 1175 }
1273 1176
1274 if (((insn & 0x00000E00) == 0x00000400) && ((insn & 0x01000000) == 0x01000000) && (true) && (true)) { 1177 if (((insn & 0x00000E00) == 0x00000400) && ((insn & 0x01000000) == 0x01000000) && (true) && (true)) {
1275 return state->EffectiveNoOp_instance_; 1178 return EffectiveNoOp_instance_;
1276 } 1179 }
1277 1180
1278 if (((insn & 0x00000600) == 0x00000600) && (true) && (true) && (true)) { 1181 if (((insn & 0x00000600) == 0x00000600) && (true) && (true) && (true)) {
1279 return state->EffectiveNoOp_instance_; 1182 return EffectiveNoOp_instance_;
1280 } 1183 }
1281 1184
1282 if (((insn & 0x00000C00) == 0x00000000) && (true) && (true) && (true)) { 1185 if (((insn & 0x00000C00) == 0x00000000) && (true) && (true) && (true)) {
1283 return state->EffectiveNoOp_instance_; 1186 return EffectiveNoOp_instance_;
1284 } 1187 }
1285 1188
1286 if ((true) && (true) && (true) && (true)) { 1189 if ((true) && (true) && (true) && (true)) {
1287 return state->Undefined_instance_; 1190 return Undefined_instance_;
1288 } 1191 }
1289 1192
1290 // Catch any attempt to fall through... 1193 // Catch any attempt to fall through...
1291 fprintf(stderr, "TABLE IS INCOMPLETE: simd_dp_2shift could not parse %08X",ins n.bits(31,0)); 1194 fprintf(stderr, "TABLE IS INCOMPLETE: simd_dp_2shift could not parse %08X",ins n.bits(31,0));
1292 return state->Forbidden_instance_; 1195 return Forbidden_instance_;
1293 } 1196 }
1197
1294 1198
1295 /* 1199 /*
1296 * Implementation of table simd_dp_2misc. 1200 * Implementation of table simd_dp_2misc.
1297 * Specified by: See Section A7.4.5. 1201 * Specified by: See Section A7.4.5.
1298 */ 1202 */
1299 static inline const ClassDecoder &decode_simd_dp_2misc( 1203 const ClassDecoder &Arm32DecoderState::decode_simd_dp_2misc(const Instruction in sn) const {
1300 const Instruction insn, const Arm32DecoderState *state) {
1301 if (((insn & 0x00030000) == 0x00000000) && ((insn & 0x00000780) == 0x00000700) ) { 1204 if (((insn & 0x00030000) == 0x00000000) && ((insn & 0x00000780) == 0x00000700) ) {
1302 return state->EffectiveNoOp_instance_; 1205 return EffectiveNoOp_instance_;
1303 } 1206 }
1304 1207
1305 if (((insn & 0x00030000) == 0x00000000) && ((insn & 0x00000380) == 0x00000100) ) { 1208 if (((insn & 0x00030000) == 0x00000000) && ((insn & 0x00000380) == 0x00000100) ) {
1306 return state->EffectiveNoOp_instance_; 1209 return EffectiveNoOp_instance_;
1307 } 1210 }
1308 1211
1309 if (((insn & 0x00030000) == 0x00000000) && ((insn & 0x00000580) == 0x00000580) ) { 1212 if (((insn & 0x00030000) == 0x00000000) && ((insn & 0x00000580) == 0x00000580) ) {
1310 return state->EffectiveNoOp_instance_; 1213 return EffectiveNoOp_instance_;
1311 } 1214 }
1312 1215
1313 if (((insn & 0x00030000) == 0x00000000) && ((insn & 0x00000100) == 0x00000000) ) { 1216 if (((insn & 0x00030000) == 0x00000000) && ((insn & 0x00000100) == 0x00000000) ) {
1314 return state->EffectiveNoOp_instance_; 1217 return EffectiveNoOp_instance_;
1315 } 1218 }
1316 1219
1317 if (((insn & 0x00030000) == 0x00010000) && ((insn & 0x00000380) == 0x00000380) ) { 1220 if (((insn & 0x00030000) == 0x00010000) && ((insn & 0x00000380) == 0x00000380) ) {
1318 return state->EffectiveNoOp_instance_; 1221 return EffectiveNoOp_instance_;
1319 } 1222 }
1320 1223
1321 if (((insn & 0x00030000) == 0x00010000) && ((insn & 0x00000280) == 0x00000200) ) { 1224 if (((insn & 0x00030000) == 0x00010000) && ((insn & 0x00000280) == 0x00000200) ) {
1322 return state->EffectiveNoOp_instance_; 1225 return EffectiveNoOp_instance_;
1323 } 1226 }
1324 1227
1325 if (((insn & 0x00030000) == 0x00010000) && ((insn & 0x00000200) == 0x00000000) ) { 1228 if (((insn & 0x00030000) == 0x00010000) && ((insn & 0x00000200) == 0x00000000) ) {
1326 return state->EffectiveNoOp_instance_; 1229 return EffectiveNoOp_instance_;
1327 } 1230 }
1328 1231
1329 if (((insn & 0x00030000) == 0x00020000) && ((insn & 0x000007C0) == 0x00000300) ) { 1232 if (((insn & 0x00030000) == 0x00020000) && ((insn & 0x000007C0) == 0x00000300) ) {
1330 return state->EffectiveNoOp_instance_; 1233 return EffectiveNoOp_instance_;
1331 } 1234 }
1332 1235
1333 if (((insn & 0x00030000) == 0x00020000) && ((insn & 0x000006C0) == 0x00000600) ) { 1236 if (((insn & 0x00030000) == 0x00020000) && ((insn & 0x000006C0) == 0x00000600) ) {
1334 return state->EffectiveNoOp_instance_; 1237 return EffectiveNoOp_instance_;
1335 } 1238 }
1336 1239
1337 if (((insn & 0x00030000) == 0x00020000) && ((insn & 0x00000700) == 0x00000200) ) { 1240 if (((insn & 0x00030000) == 0x00020000) && ((insn & 0x00000700) == 0x00000200) ) {
1338 return state->EffectiveNoOp_instance_; 1241 return EffectiveNoOp_instance_;
1339 } 1242 }
1340 1243
1341 if (((insn & 0x00030000) == 0x00020000) && ((insn & 0x00000600) == 0x00000000) ) { 1244 if (((insn & 0x00030000) == 0x00020000) && ((insn & 0x00000600) == 0x00000000) ) {
1342 return state->EffectiveNoOp_instance_; 1245 return EffectiveNoOp_instance_;
1343 } 1246 }
1344 1247
1345 if (((insn & 0x00030000) == 0x00030000) && ((insn & 0x00000400) == 0x00000400) ) { 1248 if (((insn & 0x00030000) == 0x00030000) && ((insn & 0x00000400) == 0x00000400) ) {
1346 return state->EffectiveNoOp_instance_; 1249 return EffectiveNoOp_instance_;
1347 } 1250 }
1348 1251
1349 if ((true) && (true)) { 1252 if ((true) && (true)) {
1350 return state->Undefined_instance_; 1253 return Undefined_instance_;
1351 } 1254 }
1352 1255
1353 // Catch any attempt to fall through... 1256 // Catch any attempt to fall through...
1354 fprintf(stderr, "TABLE IS INCOMPLETE: simd_dp_2misc could not parse %08X",insn .bits(31,0)); 1257 fprintf(stderr, "TABLE IS INCOMPLETE: simd_dp_2misc could not parse %08X",insn .bits(31,0));
1355 return state->Forbidden_instance_; 1258 return Forbidden_instance_;
1356 } 1259 }
1260
1357 1261
1358 /* 1262 /*
1359 * Implementation of table simd_dp_1imm. 1263 * Implementation of table simd_dp_1imm.
1360 * Specified by: See Section A7.4.6. 1264 * Specified by: See Section A7.4.6.
1361 */ 1265 */
1362 static inline const ClassDecoder &decode_simd_dp_1imm( 1266 const ClassDecoder &Arm32DecoderState::decode_simd_dp_1imm(const Instruction ins n) const {
1363 const Instruction insn, const Arm32DecoderState *state) {
1364 if (((insn & 0x00000020) == 0x00000000) && (true)) { 1267 if (((insn & 0x00000020) == 0x00000000) && (true)) {
1365 return state->EffectiveNoOp_instance_; 1268 return EffectiveNoOp_instance_;
1366 } 1269 }
1367 1270
1368 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00000F00) == 0x00000E00) ) { 1271 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00000F00) == 0x00000E00) ) {
1369 return state->EffectiveNoOp_instance_; 1272 return EffectiveNoOp_instance_;
1370 } 1273 }
1371 1274
1372 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00000F00) == 0x00000F00) ) { 1275 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00000F00) == 0x00000F00) ) {
1373 return state->Undefined_instance_; 1276 return Undefined_instance_;
1374 } 1277 }
1375 1278
1376 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00000E00) == 0x00000C00) ) { 1279 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00000E00) == 0x00000C00) ) {
1377 return state->EffectiveNoOp_instance_; 1280 return EffectiveNoOp_instance_;
1378 } 1281 }
1379 1282
1380 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00000C00) == 0x00000800) ) { 1283 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00000C00) == 0x00000800) ) {
1381 return state->EffectiveNoOp_instance_; 1284 return EffectiveNoOp_instance_;
1382 } 1285 }
1383 1286
1384 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00000800) == 0x00000000) ) { 1287 if (((insn & 0x00000020) == 0x00000020) && ((insn & 0x00000800) == 0x00000000) ) {
1385 return state->EffectiveNoOp_instance_; 1288 return EffectiveNoOp_instance_;
1386 } 1289 }
1387 1290
1388 // Catch any attempt to fall through... 1291 // Catch any attempt to fall through...
1389 fprintf(stderr, "TABLE IS INCOMPLETE: simd_dp_1imm could not parse %08X",insn. bits(31,0)); 1292 fprintf(stderr, "TABLE IS INCOMPLETE: simd_dp_1imm could not parse %08X",insn. bits(31,0));
1390 return state->Forbidden_instance_; 1293 return Forbidden_instance_;
1391 } 1294 }
1295
1392 1296
1393 /* 1297 /*
1394 * Implementation of table simd_load_store. 1298 * Implementation of table simd_load_store.
1395 * Specified by: See Section A7.7. 1299 * Specified by: See Section A7.7.
1396 */ 1300 */
1397 static inline const ClassDecoder &decode_simd_load_store( 1301 const ClassDecoder &Arm32DecoderState::decode_simd_load_store(const Instruction insn) const {
1398 const Instruction insn, const Arm32DecoderState *state) {
1399 if (((insn & 0x00200000) == 0x00000000)) { 1302 if (((insn & 0x00200000) == 0x00000000)) {
1400 return decode_simd_load_store_l0(insn, state); 1303 return decode_simd_load_store_l0(insn);
1401 } 1304 }
1402 1305
1403 if (((insn & 0x00200000) == 0x00200000)) { 1306 if (((insn & 0x00200000) == 0x00200000)) {
1404 return decode_simd_load_store_l1(insn, state); 1307 return decode_simd_load_store_l1(insn);
1405 } 1308 }
1406 1309
1407 // Catch any attempt to fall through... 1310 // Catch any attempt to fall through...
1408 fprintf(stderr, "TABLE IS INCOMPLETE: simd_load_store could not parse %08X",in sn.bits(31,0)); 1311 fprintf(stderr, "TABLE IS INCOMPLETE: simd_load_store could not parse %08X",in sn.bits(31,0));
1409 return state->Forbidden_instance_; 1312 return Forbidden_instance_;
1410 } 1313 }
1314
1411 1315
1412 /* 1316 /*
1413 * Implementation of table simd_load_store_l0. 1317 * Implementation of table simd_load_store_l0.
1414 * Specified by: See Section A7.7, Table A7-20. 1318 * Specified by: See Section A7.7, Table A7-20.
1415 */ 1319 */
1416 static inline const ClassDecoder &decode_simd_load_store_l0( 1320 const ClassDecoder &Arm32DecoderState::decode_simd_load_store_l0(const Instructi on insn) const {
1417 const Instruction insn, const Arm32DecoderState *state) {
1418 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000F00) == 0x00000300) ) { 1321 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000F00) == 0x00000300) ) {
1419 return state->VectorStore_instance_; 1322 return VectorStore_instance_;
1420 } 1323 }
1421 1324
1422 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000700) == 0x00000200) ) { 1325 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000700) == 0x00000200) ) {
1423 return state->VectorStore_instance_; 1326 return VectorStore_instance_;
1424 } 1327 }
1425 1328
1426 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000600) == 0x00000000) ) { 1329 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000600) == 0x00000000) ) {
1427 return state->VectorStore_instance_; 1330 return VectorStore_instance_;
1428 } 1331 }
1429 1332
1430 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000C00) == 0x00000400) ) { 1333 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000C00) == 0x00000400) ) {
1431 return state->VectorStore_instance_; 1334 return VectorStore_instance_;
1432 } 1335 }
1433 1336
1434 if (((insn & 0x00800000) == 0x00800000) && ((insn & 0x00000C00) == 0x00000800) ) { 1337 if (((insn & 0x00800000) == 0x00800000) && ((insn & 0x00000C00) == 0x00000800) ) {
1435 return state->VectorStore_instance_; 1338 return VectorStore_instance_;
1436 } 1339 }
1437 1340
1438 if (((insn & 0x00800000) == 0x00800000) && ((insn & 0x00000800) == 0x00000000) ) { 1341 if (((insn & 0x00800000) == 0x00800000) && ((insn & 0x00000800) == 0x00000000) ) {
1439 return state->VectorStore_instance_; 1342 return VectorStore_instance_;
1440 } 1343 }
1441 1344
1442 if ((true) && (true)) { 1345 if ((true) && (true)) {
1443 return state->Undefined_instance_; 1346 return Undefined_instance_;
1444 } 1347 }
1445 1348
1446 // Catch any attempt to fall through... 1349 // Catch any attempt to fall through...
1447 fprintf(stderr, "TABLE IS INCOMPLETE: simd_load_store_l0 could not parse %08X" ,insn.bits(31,0)); 1350 fprintf(stderr, "TABLE IS INCOMPLETE: simd_load_store_l0 could not parse %08X" ,insn.bits(31,0));
1448 return state->Forbidden_instance_; 1351 return Forbidden_instance_;
1449 } 1352 }
1353
1450 1354
1451 /* 1355 /*
1452 * Implementation of table simd_load_store_l1. 1356 * Implementation of table simd_load_store_l1.
1453 * Specified by: See Section A7.7, Table A7-21. 1357 * Specified by: See Section A7.7, Table A7-21.
1454 */ 1358 */
1455 static inline const ClassDecoder &decode_simd_load_store_l1( 1359 const ClassDecoder &Arm32DecoderState::decode_simd_load_store_l1(const Instructi on insn) const {
1456 const Instruction insn, const Arm32DecoderState *state) {
1457 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000F00) == 0x00000300) ) { 1360 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000F00) == 0x00000300) ) {
1458 return state->VectorLoad_instance_; 1361 return VectorLoad_instance_;
1459 } 1362 }
1460 1363
1461 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000700) == 0x00000200) ) { 1364 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000700) == 0x00000200) ) {
1462 return state->VectorLoad_instance_; 1365 return VectorLoad_instance_;
1463 } 1366 }
1464 1367
1465 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000600) == 0x00000000) ) { 1368 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000600) == 0x00000000) ) {
1466 return state->VectorLoad_instance_; 1369 return VectorLoad_instance_;
1467 } 1370 }
1468 1371
1469 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000C00) == 0x00000400) ) { 1372 if (((insn & 0x00800000) == 0x00000000) && ((insn & 0x00000C00) == 0x00000400) ) {
1470 return state->VectorLoad_instance_; 1373 return VectorLoad_instance_;
1471 } 1374 }
1472 1375
1473 if (((insn & 0x00800000) == 0x00800000) && (true)) { 1376 if (((insn & 0x00800000) == 0x00800000) && (true)) {
1474 return state->VectorLoad_instance_; 1377 return VectorLoad_instance_;
1475 } 1378 }
1476 1379
1477 if ((true) && (true)) { 1380 if ((true) && (true)) {
1478 return state->Undefined_instance_; 1381 return Undefined_instance_;
1479 } 1382 }
1480 1383
1481 // Catch any attempt to fall through... 1384 // Catch any attempt to fall through...
1482 fprintf(stderr, "TABLE IS INCOMPLETE: simd_load_store_l1 could not parse %08X" ,insn.bits(31,0)); 1385 fprintf(stderr, "TABLE IS INCOMPLETE: simd_load_store_l1 could not parse %08X" ,insn.bits(31,0));
1483 return state->Forbidden_instance_; 1386 return Forbidden_instance_;
1484 } 1387 }
1485 1388
1486 Arm32DecoderState::Arm32DecoderState() : 1389 Arm32DecoderState::Arm32DecoderState() :
1487 DecoderState() 1390 DecoderState()
1488 , CoprocessorOp_instance_() 1391 , CoprocessorOp_instance_()
1392 , MoveToStatusRegister_instance_()
1489 , ImmediateBic_instance_() 1393 , ImmediateBic_instance_()
1490 , LoadMultiple_instance_() 1394 , LoadMultiple_instance_()
1491 , LoadCoprocessor_instance_() 1395 , LoadCoprocessor_instance_()
1492 , LoadDoubleExclusive_instance_() 1396 , LongMultiply_instance_()
1493 , Branch_instance_() 1397 , Branch_instance_()
1494 , Test_instance_() 1398 , Test_instance_()
1495 , StoreRegister_instance_() 1399 , StoreRegister_instance_()
1496 , MoveDoubleFromCoprocessor_instance_() 1400 , LoadRegister_instance_()
1497 , TestImmediate_instance_() 1401 , TestImmediate_instance_()
1498 , BxBlx_instance_() 1402 , VectorLoad_instance_()
1499 , EffectiveNoOp_instance_() 1403 , EffectiveNoOp_instance_()
1500 , LongMultiply_instance_() 1404 , LoadDoubleExclusive_instance_()
1501 , Binary4RegisterShiftedOp_instance_() 1405 , Binary4RegisterShiftedOp_instance_()
1502 , Breakpoint_instance_() 1406 , Breakpoint_instance_()
1503 , Multiply_instance_() 1407 , Multiply_instance_()
1504 , PackSatRev_instance_() 1408 , PackSatRev_instance_()
1505 , LoadExclusive_instance_() 1409 , LoadExclusive_instance_()
1506 , VectorStore_instance_() 1410 , VectorStore_instance_()
1507 , Unary3RegisterShiftedOp_instance_() 1411 , Unary3RegisterShiftedOp_instance_()
1508 , Undefined_instance_() 1412 , Undefined_instance_()
1509 , DataProc_instance_() 1413 , DataProc_instance_()
1510 , Deprecated_instance_() 1414 , Deprecated_instance_()
1511 , LoadImmediate_instance_() 1415 , LoadImmediate_instance_()
1512 , StoreCoprocessor_instance_() 1416 , StoreCoprocessor_instance_()
1513 , Roadblock_instance_() 1417 , Roadblock_instance_()
1514 , LoadDoubleR_instance_() 1418 , MoveFromCoprocessor_instance_()
1515 , StoreExclusive_instance_() 1419 , StoreExclusive_instance_()
1516 , StoreImmediate_instance_() 1420 , StoreImmediate_instance_()
1517 , MoveFromCoprocessor_instance_() 1421 , MoveDoubleFromCoprocessor_instance_()
1518 , LoadRegister_instance_() 1422 , SatAddSub_instance_()
1519 , LoadDoubleI_instance_() 1423 , LoadDoubleI_instance_()
1520 , Binary3RegisterShiftedTest_instance_() 1424 , Binary3RegisterShiftedTest_instance_()
1521 , Unpredictable_instance_() 1425 , Unpredictable_instance_()
1522 , Forbidden_instance_() 1426 , Forbidden_instance_()
1523 , VectorLoad_instance_() 1427 , BxBlx_instance_()
1524 , MoveToStatusRegister_instance_() 1428 , LoadDoubleR_instance_()
1525 , SatAddSub_instance_()
1526 { 1429 {
1527 } 1430 }
1528 1431
1529 Arm32DecoderState::~Arm32DecoderState() { 1432 Arm32DecoderState::~Arm32DecoderState() {
1530 } 1433 }
1531 1434
1532 const ClassDecoder &Arm32DecoderState::decode(const Instruction insn) const { 1435 const ClassDecoder &Arm32DecoderState::decode(const Instruction insn) const {
1533 return decode_ARMv7(insn, this); 1436 return decode_ARMv7(insn);
1534 } 1437 }
1535 1438
1536 } // namespace 1439 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698