1 : /*
2 : * Copyright 2013 The Native Client Authors. All rights reserved.
3 : * Use of this source code is governed by a BSD-style license that can
4 : * be found in the LICENSE file.
5 : */
6 :
7 : // DO NOT EDIT: GENERATED CODE
8 :
9 :
10 : #include "native_client/src/trusted/validator_arm/gen/arm32_decode.h"
11 :
12 : namespace nacl_arm_dec {
13 :
14 :
15 : Arm32DecoderState::Arm32DecoderState() : DecoderState()
16 : , Actual_ADC_immediate_cccc0010101snnnnddddiiiiiiiiiiii_case_1_instance_()
17 : , Actual_ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_1_instance_()
18 : , Actual_ADC_register_shifted_register_cccc0000101snnnnddddssss0tt1mmmm_case_1_instance_()
19 : , Actual_ADD_immediate_cccc0010100snnnnddddiiiiiiiiiiii_case_1_instance_()
20 : , Actual_ADR_A1_cccc001010001111ddddiiiiiiiiiiii_case_1_instance_()
21 : , Actual_ASR_immediate_cccc0001101s0000ddddiiiii100mmmm_case_1_instance_()
22 : , Actual_ASR_register_cccc0001101s0000ddddmmmm0101nnnn_case_1_instance_()
23 : , Actual_BFC_cccc0111110mmmmmddddlllll0011111_case_1_instance_()
24 : , Actual_BFI_cccc0111110mmmmmddddlllll001nnnn_case_1_instance_()
25 : , Actual_BIC_immediate_cccc0011110snnnnddddiiiiiiiiiiii_case_1_instance_()
26 : , Actual_BKPT_cccc00010010iiiiiiiiiiii0111iiii_case_1_instance_()
27 : , Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_()
28 : , Actual_BLX_register_cccc000100101111111111110011mmmm_case_1_instance_()
29 : , Actual_BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_()
30 : , Actual_B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_()
31 : , Actual_Bx_cccc000100101111111111110001mmmm_case_1_instance_()
32 : , Actual_CLZ_cccc000101101111dddd11110001mmmm_case_1_instance_()
33 : , Actual_CMN_immediate_cccc00110111nnnn0000iiiiiiiiiiii_case_1_instance_()
34 : , Actual_CMN_register_cccc00010111nnnn0000iiiiitt0mmmm_case_1_instance_()
35 : , Actual_CMN_register_shifted_register_cccc00010111nnnn0000ssss0tt1mmmm_case_1_instance_()
36 : , Actual_CVT_between_half_precision_and_single_precision_111100111d11ss10dddd011p00m0mmmm_case_1_instance_()
37 : , Actual_DMB_1111010101111111111100000101xxxx_case_1_instance_()
38 : , Actual_ISB_1111010101111111111100000110xxxx_case_1_instance_()
39 : , Actual_LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_1_instance_()
40 : , Actual_LDRB_immediate_cccc010pu1w1nnnnttttiiiiiiiiiiii_case_1_instance_()
41 : , Actual_LDRB_literal_cccc0101u1011111ttttiiiiiiiiiiii_case_1_instance_()
42 : , Actual_LDRB_register_cccc011pu1w1nnnnttttiiiiitt0mmmm_case_1_instance_()
43 : , Actual_LDRD_immediate_cccc000pu1w0nnnnttttiiii1101iiii_case_1_instance_()
44 : , Actual_LDRD_literal_cccc0001u1001111ttttiiii1101iiii_case_1_instance_()
45 : , Actual_LDRD_register_cccc000pu0w0nnnntttt00001101mmmm_case_1_instance_()
46 : , Actual_LDREXB_cccc00011101nnnntttt111110011111_case_1_instance_()
47 : , Actual_LDREXD_cccc00011011nnnntttt111110011111_case_1_instance_()
48 : , Actual_LDRH_immediate_cccc000pu1w1nnnnttttiiii1011iiii_case_1_instance_()
49 : , Actual_LDRH_literal_cccc000pu1w11111ttttiiii1011iiii_case_1_instance_()
50 : , Actual_LDRH_register_cccc000pu0w1nnnntttt00001011mmmm_case_1_instance_()
51 : , Actual_LDR_immediate_cccc010pu0w1nnnnttttiiiiiiiiiiii_case_1_instance_()
52 : , Actual_LDR_literal_cccc0101u0011111ttttiiiiiiiiiiii_case_1_instance_()
53 : , Actual_LDR_register_cccc011pu0w1nnnnttttiiiiitt0mmmm_case_1_instance_()
54 : , Actual_LSL_immediate_cccc0001101s0000ddddiiiii000mmmm_case_1_instance_()
55 : , Actual_MCR_cccc1110ooo0nnnnttttccccooo1mmmm_case_1_instance_()
56 : , Actual_MLA_A1_cccc0000001sddddaaaammmm1001nnnn_case_1_instance_()
57 : , Actual_MLS_A1_cccc00000110ddddaaaammmm1001nnnn_case_1_instance_()
58 : , Actual_MOVE_scalar_to_ARM_core_register_cccc1110iii1nnnntttt1011nii10000_case_1_instance_()
59 : , Actual_MOVT_cccc00110100iiiiddddiiiiiiiiiiii_case_1_instance_()
60 : , Actual_MOV_immediate_A1_cccc0011101s0000ddddiiiiiiiiiiii_case_1_instance_()
61 : , Actual_MRS_cccc00010r001111dddd000000000000_case_1_instance_()
62 : , Actual_MSR_immediate_cccc00110010mm001111iiiiiiiiiiii_case_1_instance_()
63 : , Actual_MSR_register_cccc00010010mm00111100000000nnnn_case_1_instance_()
64 : , Actual_MUL_A1_cccc0000000sdddd0000mmmm1001nnnn_case_1_instance_()
65 : , Actual_NOP_cccc0011001000001111000000000000_case_1_instance_()
66 : , Actual_NOT_IMPLEMENTED_case_1_instance_()
67 : , Actual_ORR_immediate_cccc0011100snnnnddddiiiiiiiiiiii_case_1_instance_()
68 : , Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_()
69 : , Actual_PLD_PLDW_immediate_11110101ur01nnnn1111iiiiiiiiiiii_case_1_instance_()
70 : , Actual_PLD_PLDW_register_11110111u001nnnn1111iiiiitt0mmmm_case_1_instance_()
71 : , Actual_PLD_literal_11110101u10111111111iiiiiiiiiiii_case_1_instance_()
72 : , Actual_PLI_immediate_literal_11110100u101nnnn1111iiiiiiiiiiii_case_1_instance_()
73 : , Actual_PLI_register_11110110u101nnnn1111iiiiitt0mmmm_case_1_instance_()
74 : , Actual_SBFX_cccc0111101wwwwwddddlllll101nnnn_case_1_instance_()
75 : , Actual_SDIV_cccc01110001dddd1111mmmm0001nnnn_case_1_instance_()
76 : , Actual_SMLAD_cccc01110000ddddaaaammmm00m1nnnn_case_1_instance_()
77 : , Actual_SMLALBB_SMLALBT_SMLALTB_SMLALTT_cccc00010100hhhhllllmmmm1xx0nnnn_case_1_instance_()
78 : , Actual_SMLALD_cccc01110100hhhhllllmmmm00m1nnnn_case_1_instance_()
79 : , Actual_SMLAL_A1_cccc0000111shhhhllllmmmm1001nnnn_case_1_instance_()
80 : , Actual_SMULBB_SMULBT_SMULTB_SMULTT_cccc00010110dddd0000mmmm1xx0nnnn_case_1_instance_()
81 : , Actual_SMULL_A1_cccc0000110shhhhllllmmmm1001nnnn_case_1_instance_()
82 : , Actual_STMDA_STMED_cccc100000w0nnnnrrrrrrrrrrrrrrrr_case_1_instance_()
83 : , Actual_STRB_immediate_cccc010pu1w0nnnnttttiiiiiiiiiiii_case_1_instance_()
84 : , Actual_STRB_register_cccc011pu1w0nnnnttttiiiiitt0mmmm_case_1_instance_()
85 : , Actual_STRD_immediate_cccc000pu1w0nnnnttttiiii1111iiii_case_1_instance_()
86 : , Actual_STRD_register_cccc000pu0w0nnnntttt00001111mmmm_case_1_instance_()
87 : , Actual_STREXB_cccc00011100nnnndddd11111001tttt_case_1_instance_()
88 : , Actual_STREXD_cccc00011010nnnndddd11111001tttt_case_1_instance_()
89 : , Actual_STRH_immediate_cccc000pu1w0nnnnttttiiii1011iiii_case_1_instance_()
90 : , Actual_STRH_register_cccc000pu0w0nnnntttt00001011mmmm_case_1_instance_()
91 : , Actual_STR_immediate_cccc010pu0w0nnnnttttiiiiiiiiiiii_case_1_instance_()
92 : , Actual_STR_register_cccc011pd0w0nnnnttttiiiiitt0mmmm_case_1_instance_()
93 : , Actual_SWP_SWPB_cccc00010b00nnnntttt00001001tttt_case_1_instance_()
94 : , Actual_SXTAB16_cccc01101000nnnnddddrr000111mmmm_case_1_instance_()
95 : , Actual_TST_immediate_cccc00110001nnnn0000iiiiiiiiiiii_case_1_instance_()
96 : , Actual_UDF_cccc01111111iiiiiiiiiiii1111iiii_case_1_instance_()
97 : , Actual_Unnamed_11110100xx11xxxxxxxxxxxxxxxxxxxx_case_1_instance_()
98 : , Actual_Unnamed_case_1_instance_()
99 : , Actual_VABAL_A2_1111001u1dssnnnndddd0101n0m0mmmm_case_1_instance_()
100 : , Actual_VABA_1111001u0dssnnnndddd0111nqm1mmmm_case_1_instance_()
101 : , Actual_VABD_floating_point_111100110d1snnnndddd1101nqm0mmmm_case_1_instance_()
102 : , Actual_VABS_A1_111100111d11ss01dddd0f110qm0mmmm_case_1_instance_()
103 : , Actual_VABS_A1_111100111d11ss01dddd0f110qm0mmmm_case_2_instance_()
104 : , Actual_VABS_cccc11101d110000dddd101s11m0mmmm_case_1_instance_()
105 : , Actual_VADDHN_111100101dssnnnndddd0100n0m0mmmm_case_1_instance_()
106 : , Actual_VADDL_VADDW_1111001u1dssnnnndddd000pn0m0mmmm_case_1_instance_()
107 : , Actual_VADD_floating_point_cccc11100d11nnnndddd101sn0m0mmmm_case_1_instance_()
108 : , Actual_VADD_integer_111100100dssnnnndddd1000nqm0mmmm_case_1_instance_()
109 : , Actual_VBIC_immediate_1111001i1d000mmmddddcccc0q11mmmm_case_1_instance_()
110 : , Actual_VCNT_111100111d11ss00dddd01010qm0mmmm_case_1_instance_()
111 : , Actual_VCVT_VCVTR_between_floating_point_and_integer_Floating_point_cccc11101d111ooodddd101sp1m0mmmm_case_1_instance_()
112 : , Actual_VCVT_between_floating_point_and_fixed_point_1111001u1diiiiiidddd111p0qm1mmmm_case_1_instance_()
113 : , Actual_VCVT_between_floating_point_and_fixed_point_Floating_point_cccc11101d111o1udddd101fx1i0iiii_case_1_instance_()
114 : , Actual_VDUP_ARM_core_register_cccc11101bq0ddddtttt1011d0e10000_case_1_instance_()
115 : , Actual_VDUP_scalar_111100111d11iiiidddd11000qm0mmmm_case_1_instance_()
116 : , Actual_VEXT_111100101d11nnnnddddiiiinqm0mmmm_case_1_instance_()
117 : , Actual_VLD1_multiple_single_elements_111101000d10nnnnddddttttssaammmm_case_1_instance_()
118 : , Actual_VLD1_single_element_to_all_lanes_111101001d10nnnndddd1100sstammmm_case_1_instance_()
119 : , Actual_VLD1_single_element_to_one_lane_111101001d10nnnnddddss00aaaammmm_case_1_instance_()
120 : , Actual_VLD2_multiple_2_element_structures_111101000d10nnnnddddttttssaammmm_case_1_instance_()
121 : , Actual_VLD2_single_2_element_structure_to_all_lanes_111101001d10nnnndddd1101sstammmm_case_1_instance_()
122 : , Actual_VLD2_single_2_element_structure_to_one_lane_111101001d10nnnnddddss01aaaammmm_case_1_instance_()
123 : , Actual_VLD3_multiple_3_element_structures_111101000d10nnnnddddttttssaammmm_case_1_instance_()
124 : , Actual_VLD3_single_3_element_structure_to_all_lanes_111101001d10nnnndddd1110sstammmm_case_1_instance_()
125 : , Actual_VLD3_single_3_element_structure_to_one_lane_111101001d10nnnnddddss10aaaammmm_case_1_instance_()
126 : , Actual_VLD4_multiple_4_element_structures_111101000d10nnnnddddttttssaammmm_case_1_instance_()
127 : , Actual_VLD4_single_4_element_structure_to_all_lanes_111101001d10nnnndddd1111sstammmm_case_1_instance_()
128 : , Actual_VLD4_single_4_element_structure_to_one_lane_111101001d10nnnnddddss11aaaammmm_case_1_instance_()
129 : , Actual_VLDM_cccc110pudw1nnnndddd1010iiiiiiii_case_1_instance_()
130 : , Actual_VLDM_cccc110pudw1nnnndddd1011iiiiiiii_case_1_instance_()
131 : , Actual_VLDR_cccc1101ud01nnnndddd1010iiiiiiii_case_1_instance_()
132 : , Actual_VMLAL_by_scalar_A2_1111001u1dssnnnndddd0p10n1m0mmmm_case_1_instance_()
133 : , Actual_VMLA_by_scalar_A1_1111001q1dssnnnndddd0p0fn1m0mmmm_case_1_instance_()
134 : , Actual_VMLA_by_scalar_A1_1111001q1dssnnnndddd0p0fn1m0mmmm_case_2_instance_()
135 : , Actual_VMOVN_111100111d11ss10dddd001000m0mmmm_case_1_instance_()
136 : , Actual_VMOV_ARM_core_register_to_scalar_cccc11100ii0ddddtttt1011dii10000_case_1_instance_()
137 : , Actual_VMOV_between_ARM_core_register_and_single_precision_register_cccc1110000onnnntttt1010n0010000_case_1_instance_()
138 : , Actual_VMOV_between_two_ARM_core_registers_and_a_doubleword_extension_register_cccc1100010otttttttt101100m1mmmm_case_1_instance_()
139 : , Actual_VMOV_between_two_ARM_core_registers_and_two_single_precision_registers_cccc1100010otttttttt101000m1mmmm_case_1_instance_()
140 : , Actual_VMOV_immediate_A1_1111001m1d000mmmddddcccc0qp1mmmm_case_1_instance_()
141 : , Actual_VMRS_cccc111011110001tttt101000010000_case_1_instance_()
142 : , Actual_VMSR_cccc111011100001tttt101000010000_case_1_instance_()
143 : , Actual_VMULL_polynomial_A2_1111001u1dssnnnndddd11p0n0m0mmmm_case_1_instance_()
144 : , Actual_VMUL_polynomial_A1_1111001u0dssnnnndddd1001nqm1mmmm_case_1_instance_()
145 : , Actual_VMVN_immediate_1111001i1d000mmmddddcccc0q11mmmm_case_1_instance_()
146 : , Actual_VPADD_floating_point_111100110d0snnnndddd1101nqm0mmmm_case_1_instance_()
147 : , Actual_VPADD_integer_111100100dssnnnndddd1011n0m1mmmm_case_1_instance_()
148 : , Actual_VPOP_cccc11001d111101dddd1010iiiiiiii_case_1_instance_()
149 : , Actual_VPOP_cccc11001d111101dddd1011iiiiiiii_case_1_instance_()
150 : , Actual_VQDMLAL_VQDMLSL_A1_111100101dssnnnndddd10p1n0m0mmmm_case_1_instance_()
151 : , Actual_VQDMULH_A1_111100100dssnnnndddd1011nqm0mmmm_case_1_instance_()
152 : , Actual_VQMOVN_111100111d11ss10dddd0010ppm0mmmm_case_1_instance_()
153 : , Actual_VQRSHRN_1111001u1diiiiiidddd100p01m1mmmm_case_1_instance_()
154 : , Actual_VQSHL_VQSHLU_immediate_1111001u1diiiiiidddd011plqm1mmmm_case_1_instance_()
155 : , Actual_VREV16_111100111d11ss00dddd000ppqm0mmmm_case_1_instance_()
156 : , Actual_VRSHRN_111100101diiiiiidddd100001m1mmmm_case_1_instance_()
157 : , Actual_VRSHR_1111001u1diiiiiidddd0010lqm1mmmm_case_1_instance_()
158 : , Actual_VSHLL_A1_or_VMOVL_1111001u1diiiiiidddd101000m1mmmm_case_1_instance_()
159 : , Actual_VSHLL_A2_111100111d11ss10dddd001100m0mmmm_case_1_instance_()
160 : , Actual_VSTM_cccc110pudw0nnnndddd1010iiiiiiii_case_1_instance_()
161 : , Actual_VSTM_cccc110pudw0nnnndddd1011iiiiiiii_case_1_instance_()
162 : , Actual_VSTR_cccc1101ud00nnnndddd1010iiiiiiii_case_1_instance_()
163 : , Actual_VSWP_111100111d11ss10dddd00000qm0mmmm_case_1_instance_()
164 : , Actual_VTBL_VTBX_111100111d11nnnndddd10ccnpm0mmmm_case_1_instance_()
165 : , Actual_VTRN_111100111d11ss10dddd00001qm0mmmm_case_1_instance_()
166 : , Actual_VUZP_111100111d11ss10dddd00010qm0mmmm_case_1_instance_()
167 0 : {}
168 :
169 : // Implementation of table: ARMv7.
170 : // Specified by: See Section A5.1
171 : const ClassDecoder& Arm32DecoderState::decode_ARMv7(
172 : const Instruction inst) const
173 0 : {
174 : if ((inst.Bits() & 0xF0000000) !=
175 : 0xF0000000 /* cond(31:28)=~1111 */ &&
176 : (inst.Bits() & 0x0E000000) ==
177 0 : 0x04000000 /* op1(27:25)=010 */) {
178 0 : return decode_load_store_word_and_unsigned_byte(inst);
179 : }
180 :
181 : if ((inst.Bits() & 0xF0000000) !=
182 : 0xF0000000 /* cond(31:28)=~1111 */ &&
183 : (inst.Bits() & 0x0E000000) ==
184 : 0x06000000 /* op1(27:25)=011 */ &&
185 : (inst.Bits() & 0x00000010) ==
186 0 : 0x00000000 /* op(4)=0 */) {
187 0 : return decode_load_store_word_and_unsigned_byte(inst);
188 : }
189 :
190 : if ((inst.Bits() & 0xF0000000) !=
191 : 0xF0000000 /* cond(31:28)=~1111 */ &&
192 : (inst.Bits() & 0x0E000000) ==
193 : 0x06000000 /* op1(27:25)=011 */ &&
194 : (inst.Bits() & 0x00000010) ==
195 0 : 0x00000010 /* op(4)=1 */) {
196 0 : return decode_media_instructions(inst);
197 : }
198 :
199 : if ((inst.Bits() & 0xF0000000) !=
200 : 0xF0000000 /* cond(31:28)=~1111 */ &&
201 : (inst.Bits() & 0x0C000000) ==
202 0 : 0x00000000 /* op1(27:25)=00x */) {
203 0 : return decode_data_processing_and_miscellaneous_instructions(inst);
204 : }
205 :
206 : if ((inst.Bits() & 0xF0000000) !=
207 : 0xF0000000 /* cond(31:28)=~1111 */ &&
208 : (inst.Bits() & 0x0C000000) ==
209 0 : 0x08000000 /* op1(27:25)=10x */) {
210 0 : return decode_branch_branch_with_link_and_block_data_transfer(inst);
211 : }
212 :
213 : if ((inst.Bits() & 0xF0000000) !=
214 : 0xF0000000 /* cond(31:28)=~1111 */ &&
215 : (inst.Bits() & 0x0C000000) ==
216 0 : 0x0C000000 /* op1(27:25)=11x */) {
217 0 : return decode_coprocessor_instructions_and_supervisor_call(inst);
218 : }
219 :
220 : if ((inst.Bits() & 0xF0000000) ==
221 0 : 0xF0000000 /* cond(31:28)=1111 */) {
222 0 : return decode_unconditional_instructions(inst);
223 : }
224 :
225 : // Catch any attempt to fall though ...
226 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
227 0 : }
228 :
229 : // Implementation of table: advanced_simd_data_processing_instructions.
230 : // Specified by: See Section A7.4
231 : const ClassDecoder& Arm32DecoderState::decode_advanced_simd_data_processing_instructions(
232 : const Instruction inst) const
233 0 : {
234 : if ((inst.Bits() & 0x00B80000) ==
235 : 0x00800000 /* A(23:19)=1x000 */ &&
236 : (inst.Bits() & 0x00000090) ==
237 0 : 0x00000010 /* C(7:4)=0xx1 */) {
238 0 : return decode_simd_dp_1imm(inst);
239 : }
240 :
241 : if ((inst.Bits() & 0x00B80000) ==
242 : 0x00880000 /* A(23:19)=1x001 */ &&
243 : (inst.Bits() & 0x00000090) ==
244 0 : 0x00000010 /* C(7:4)=0xx1 */) {
245 0 : return decode_simd_dp_2shift(inst);
246 : }
247 :
248 : if ((inst.Bits() & 0x00B00000) ==
249 : 0x00900000 /* A(23:19)=1x01x */ &&
250 : (inst.Bits() & 0x00000090) ==
251 0 : 0x00000010 /* C(7:4)=0xx1 */) {
252 0 : return decode_simd_dp_2shift(inst);
253 : }
254 :
255 : if ((inst.Bits() & 0x00B00000) ==
256 : 0x00A00000 /* A(23:19)=1x10x */ &&
257 : (inst.Bits() & 0x00000050) ==
258 0 : 0x00000000 /* C(7:4)=x0x0 */) {
259 0 : return decode_simd_dp_3diff(inst);
260 : }
261 :
262 : if ((inst.Bits() & 0x00B00000) ==
263 : 0x00A00000 /* A(23:19)=1x10x */ &&
264 : (inst.Bits() & 0x00000050) ==
265 0 : 0x00000040 /* C(7:4)=x1x0 */) {
266 0 : return decode_simd_dp_2scalar(inst);
267 : }
268 :
269 : if ((inst.Bits() & 0x00A00000) ==
270 : 0x00800000 /* A(23:19)=1x0xx */ &&
271 : (inst.Bits() & 0x00000050) ==
272 0 : 0x00000000 /* C(7:4)=x0x0 */) {
273 0 : return decode_simd_dp_3diff(inst);
274 : }
275 :
276 : if ((inst.Bits() & 0x00A00000) ==
277 : 0x00800000 /* A(23:19)=1x0xx */ &&
278 : (inst.Bits() & 0x00000050) ==
279 0 : 0x00000040 /* C(7:4)=x1x0 */) {
280 0 : return decode_simd_dp_2scalar(inst);
281 : }
282 :
283 : if ((inst.Bits() & 0x00A00000) ==
284 : 0x00A00000 /* A(23:19)=1x1xx */ &&
285 : (inst.Bits() & 0x00000090) ==
286 0 : 0x00000010 /* C(7:4)=0xx1 */) {
287 0 : return decode_simd_dp_2shift(inst);
288 : }
289 :
290 : if ((inst.Bits() & 0x00800000) ==
291 0 : 0x00000000 /* A(23:19)=0xxxx */) {
292 0 : return decode_simd_dp_3same(inst);
293 : }
294 :
295 : if ((inst.Bits() & 0x00800000) ==
296 : 0x00800000 /* A(23:19)=1xxxx */ &&
297 : (inst.Bits() & 0x00000090) ==
298 0 : 0x00000090 /* C(7:4)=1xx1 */) {
299 0 : return decode_simd_dp_2shift(inst);
300 : }
301 :
302 : if ((inst.Bits() & 0x01000000) ==
303 : 0x00000000 /* U(24)=0 */ &&
304 : (inst.Bits() & 0x00B00000) ==
305 : 0x00B00000 /* A(23:19)=1x11x */ &&
306 : (inst.Bits() & 0x00000010) ==
307 0 : 0x00000000 /* C(7:4)=xxx0 */) {
308 0 : return Actual_VEXT_111100101d11nnnnddddiiiinqm0mmmm_case_1_instance_;
309 : }
310 :
311 : if ((inst.Bits() & 0x01000000) ==
312 : 0x01000000 /* U(24)=1 */ &&
313 : (inst.Bits() & 0x00B00000) ==
314 : 0x00B00000 /* A(23:19)=1x11x */ &&
315 : (inst.Bits() & 0x00000F00) ==
316 : 0x00000C00 /* B(11:8)=1100 */ &&
317 : (inst.Bits() & 0x00000090) ==
318 0 : 0x00000000 /* C(7:4)=0xx0 */) {
319 0 : return Actual_VDUP_scalar_111100111d11iiiidddd11000qm0mmmm_case_1_instance_;
320 : }
321 :
322 : if ((inst.Bits() & 0x01000000) ==
323 : 0x01000000 /* U(24)=1 */ &&
324 : (inst.Bits() & 0x00B00000) ==
325 : 0x00B00000 /* A(23:19)=1x11x */ &&
326 : (inst.Bits() & 0x00000C00) ==
327 : 0x00000800 /* B(11:8)=10xx */ &&
328 : (inst.Bits() & 0x00000010) ==
329 0 : 0x00000000 /* C(7:4)=xxx0 */) {
330 0 : return Actual_VTBL_VTBX_111100111d11nnnndddd10ccnpm0mmmm_case_1_instance_;
331 : }
332 :
333 : if ((inst.Bits() & 0x01000000) ==
334 : 0x01000000 /* U(24)=1 */ &&
335 : (inst.Bits() & 0x00B00000) ==
336 : 0x00B00000 /* A(23:19)=1x11x */ &&
337 : (inst.Bits() & 0x00000800) ==
338 : 0x00000000 /* B(11:8)=0xxx */ &&
339 : (inst.Bits() & 0x00000010) ==
340 0 : 0x00000000 /* C(7:4)=xxx0 */) {
341 0 : return decode_simd_dp_2misc(inst);
342 : }
343 :
344 0 : if (true) {
345 0 : return Actual_Unnamed_case_1_instance_;
346 : }
347 :
348 : // Catch any attempt to fall though ...
349 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
350 0 : }
351 :
352 : // Implementation of table: advanced_simd_element_or_structure_load_store_instructions.
353 : // Specified by: See Section A7.7
354 : const ClassDecoder& Arm32DecoderState::decode_advanced_simd_element_or_structure_load_store_instructions(
355 : const Instruction inst) const
356 0 : {
357 : UNREFERENCED_PARAMETER(inst);
358 : if ((inst.Bits() & 0x00200000) ==
359 : 0x00200000 /* L(21)=1 */ &&
360 : (inst.Bits() & 0x00800000) ==
361 : 0x00800000 /* A(23)=1 */ &&
362 : (inst.Bits() & 0x00000F00) ==
363 0 : 0x00000C00 /* B(11:8)=1100 */) {
364 0 : return Actual_VLD1_single_element_to_all_lanes_111101001d10nnnndddd1100sstammmm_case_1_instance_;
365 : }
366 :
367 : if ((inst.Bits() & 0x00200000) ==
368 : 0x00200000 /* L(21)=1 */ &&
369 : (inst.Bits() & 0x00800000) ==
370 : 0x00800000 /* A(23)=1 */ &&
371 : (inst.Bits() & 0x00000F00) ==
372 0 : 0x00000D00 /* B(11:8)=1101 */) {
373 0 : return Actual_VLD2_single_2_element_structure_to_all_lanes_111101001d10nnnndddd1101sstammmm_case_1_instance_;
374 : }
375 :
376 : if ((inst.Bits() & 0x00200000) ==
377 : 0x00200000 /* L(21)=1 */ &&
378 : (inst.Bits() & 0x00800000) ==
379 : 0x00800000 /* A(23)=1 */ &&
380 : (inst.Bits() & 0x00000F00) ==
381 0 : 0x00000E00 /* B(11:8)=1110 */) {
382 0 : return Actual_VLD3_single_3_element_structure_to_all_lanes_111101001d10nnnndddd1110sstammmm_case_1_instance_;
383 : }
384 :
385 : if ((inst.Bits() & 0x00200000) ==
386 : 0x00200000 /* L(21)=1 */ &&
387 : (inst.Bits() & 0x00800000) ==
388 : 0x00800000 /* A(23)=1 */ &&
389 : (inst.Bits() & 0x00000F00) ==
390 0 : 0x00000F00 /* B(11:8)=1111 */) {
391 0 : return Actual_VLD4_single_4_element_structure_to_all_lanes_111101001d10nnnndddd1111sstammmm_case_1_instance_;
392 : }
393 :
394 : if ((inst.Bits() & 0x00800000) ==
395 : 0x00000000 /* A(23)=0 */ &&
396 : (inst.Bits() & 0x00000F00) ==
397 0 : 0x00000300 /* B(11:8)=0011 */) {
398 0 : return Actual_VLD2_multiple_2_element_structures_111101000d10nnnnddddttttssaammmm_case_1_instance_;
399 : }
400 :
401 : if ((inst.Bits() & 0x00800000) ==
402 : 0x00000000 /* A(23)=0 */ &&
403 : (inst.Bits() & 0x00000700) ==
404 0 : 0x00000200 /* B(11:8)=x010 */) {
405 0 : return Actual_VLD1_multiple_single_elements_111101000d10nnnnddddttttssaammmm_case_1_instance_;
406 : }
407 :
408 : if ((inst.Bits() & 0x00800000) ==
409 : 0x00000000 /* A(23)=0 */ &&
410 : (inst.Bits() & 0x00000E00) ==
411 0 : 0x00000000 /* B(11:8)=000x */) {
412 0 : return Actual_VLD4_multiple_4_element_structures_111101000d10nnnnddddttttssaammmm_case_1_instance_;
413 : }
414 :
415 : if ((inst.Bits() & 0x00800000) ==
416 : 0x00000000 /* A(23)=0 */ &&
417 : (inst.Bits() & 0x00000E00) ==
418 0 : 0x00000400 /* B(11:8)=010x */) {
419 0 : return Actual_VLD3_multiple_3_element_structures_111101000d10nnnnddddttttssaammmm_case_1_instance_;
420 : }
421 :
422 : if ((inst.Bits() & 0x00800000) ==
423 : 0x00000000 /* A(23)=0 */ &&
424 : (inst.Bits() & 0x00000E00) ==
425 0 : 0x00000600 /* B(11:8)=011x */) {
426 0 : return Actual_VLD1_multiple_single_elements_111101000d10nnnnddddttttssaammmm_case_1_instance_;
427 : }
428 :
429 : if ((inst.Bits() & 0x00800000) ==
430 : 0x00000000 /* A(23)=0 */ &&
431 : (inst.Bits() & 0x00000E00) ==
432 0 : 0x00000800 /* B(11:8)=100x */) {
433 0 : return Actual_VLD2_multiple_2_element_structures_111101000d10nnnnddddttttssaammmm_case_1_instance_;
434 : }
435 :
436 : if ((inst.Bits() & 0x00800000) ==
437 : 0x00800000 /* A(23)=1 */ &&
438 : (inst.Bits() & 0x00000F00) ==
439 0 : 0x00000800 /* B(11:8)=1000 */) {
440 0 : return Actual_VLD1_single_element_to_one_lane_111101001d10nnnnddddss00aaaammmm_case_1_instance_;
441 : }
442 :
443 : if ((inst.Bits() & 0x00800000) ==
444 : 0x00800000 /* A(23)=1 */ &&
445 : (inst.Bits() & 0x00000F00) ==
446 0 : 0x00000900 /* B(11:8)=1001 */) {
447 0 : return Actual_VLD2_single_2_element_structure_to_one_lane_111101001d10nnnnddddss01aaaammmm_case_1_instance_;
448 : }
449 :
450 : if ((inst.Bits() & 0x00800000) ==
451 : 0x00800000 /* A(23)=1 */ &&
452 : (inst.Bits() & 0x00000F00) ==
453 0 : 0x00000A00 /* B(11:8)=1010 */) {
454 0 : return Actual_VLD3_single_3_element_structure_to_one_lane_111101001d10nnnnddddss10aaaammmm_case_1_instance_;
455 : }
456 :
457 : if ((inst.Bits() & 0x00800000) ==
458 : 0x00800000 /* A(23)=1 */ &&
459 : (inst.Bits() & 0x00000F00) ==
460 0 : 0x00000B00 /* B(11:8)=1011 */) {
461 0 : return Actual_VLD4_single_4_element_structure_to_one_lane_111101001d10nnnnddddss11aaaammmm_case_1_instance_;
462 : }
463 :
464 : if ((inst.Bits() & 0x00800000) ==
465 : 0x00800000 /* A(23)=1 */ &&
466 : (inst.Bits() & 0x00000B00) ==
467 0 : 0x00000000 /* B(11:8)=0x00 */) {
468 0 : return Actual_VLD1_single_element_to_one_lane_111101001d10nnnnddddss00aaaammmm_case_1_instance_;
469 : }
470 :
471 : if ((inst.Bits() & 0x00800000) ==
472 : 0x00800000 /* A(23)=1 */ &&
473 : (inst.Bits() & 0x00000B00) ==
474 0 : 0x00000100 /* B(11:8)=0x01 */) {
475 0 : return Actual_VLD2_single_2_element_structure_to_one_lane_111101001d10nnnnddddss01aaaammmm_case_1_instance_;
476 : }
477 :
478 : if ((inst.Bits() & 0x00800000) ==
479 : 0x00800000 /* A(23)=1 */ &&
480 : (inst.Bits() & 0x00000B00) ==
481 0 : 0x00000200 /* B(11:8)=0x10 */) {
482 0 : return Actual_VLD3_single_3_element_structure_to_one_lane_111101001d10nnnnddddss10aaaammmm_case_1_instance_;
483 : }
484 :
485 : if ((inst.Bits() & 0x00800000) ==
486 : 0x00800000 /* A(23)=1 */ &&
487 : (inst.Bits() & 0x00000B00) ==
488 0 : 0x00000300 /* B(11:8)=0x11 */) {
489 0 : return Actual_VLD4_single_4_element_structure_to_one_lane_111101001d10nnnnddddss11aaaammmm_case_1_instance_;
490 : }
491 :
492 0 : if (true) {
493 0 : return Actual_Unnamed_case_1_instance_;
494 : }
495 :
496 : // Catch any attempt to fall though ...
497 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
498 0 : }
499 :
500 : // Implementation of table: branch_branch_with_link_and_block_data_transfer.
501 : // Specified by: See Section A5.5
502 : const ClassDecoder& Arm32DecoderState::decode_branch_branch_with_link_and_block_data_transfer(
503 : const Instruction inst) const
504 0 : {
505 : UNREFERENCED_PARAMETER(inst);
506 : if ((inst.Bits() & 0x02500000) ==
507 0 : 0x00000000 /* op(25:20)=0xx0x0 */) {
508 0 : return Actual_STMDA_STMED_cccc100000w0nnnnrrrrrrrrrrrrrrrr_case_1_instance_;
509 : }
510 :
511 : if ((inst.Bits() & 0x02500000) ==
512 0 : 0x00100000 /* op(25:20)=0xx0x1 */) {
513 0 : return Actual_LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_1_instance_;
514 : }
515 :
516 : if ((inst.Bits() & 0x02500000) ==
517 : 0x00400000 /* op(25:20)=0xx1x0 */ &&
518 : (inst.Bits() & 0x00200000) ==
519 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxx0xxxxxxxxxxxxxxxxxxxxx */) {
520 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
521 : }
522 :
523 : if ((inst.Bits() & 0x02500000) ==
524 : 0x00500000 /* op(25:20)=0xx1x1 */ &&
525 : (inst.Bits() & 0x00008000) ==
526 : 0x00000000 /* R(15)=0 */ &&
527 : (inst.Bits() & 0x00200000) ==
528 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxx0xxxxxxxxxxxxxxxxxxxxx */) {
529 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
530 : }
531 :
532 : if ((inst.Bits() & 0x02500000) ==
533 : 0x00500000 /* op(25:20)=0xx1x1 */ &&
534 : (inst.Bits() & 0x00008000) ==
535 0 : 0x00008000 /* R(15)=1 */) {
536 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
537 : }
538 :
539 : if ((inst.Bits() & 0x03000000) ==
540 0 : 0x02000000 /* op(25:20)=10xxxx */) {
541 0 : return Actual_B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
542 : }
543 :
544 : if ((inst.Bits() & 0x03000000) ==
545 0 : 0x03000000 /* op(25:20)=11xxxx */) {
546 0 : return Actual_BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
547 : }
548 :
549 : // Catch any attempt to fall though ...
550 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
551 0 : }
552 :
553 : // Implementation of table: coprocessor_instructions_and_supervisor_call.
554 : // Specified by: See Section A5.6
555 : const ClassDecoder& Arm32DecoderState::decode_coprocessor_instructions_and_supervisor_call(
556 : const Instruction inst) const
557 0 : {
558 : if ((inst.Bits() & 0x03E00000) ==
559 0 : 0x00000000 /* op1(25:20)=00000x */) {
560 0 : return Actual_Unnamed_case_1_instance_;
561 : }
562 :
563 : if ((inst.Bits() & 0x00000E00) !=
564 : 0x00000A00 /* coproc(11:8)=~101x */ &&
565 : (inst.Bits() & 0x03E00000) ==
566 0 : 0x00400000 /* op1(25:20)=00010x */) {
567 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
568 : }
569 :
570 : if ((inst.Bits() & 0x00000E00) !=
571 : 0x00000A00 /* coproc(11:8)=~101x */ &&
572 : (inst.Bits() & 0x03100000) ==
573 : 0x02000000 /* op1(25:20)=10xxx0 */ &&
574 : (inst.Bits() & 0x00000010) ==
575 0 : 0x00000010 /* op(4)=1 */) {
576 0 : return Actual_MCR_cccc1110ooo0nnnnttttccccooo1mmmm_case_1_instance_;
577 : }
578 :
579 : if ((inst.Bits() & 0x00000E00) !=
580 : 0x00000A00 /* coproc(11:8)=~101x */ &&
581 : (inst.Bits() & 0x03100000) ==
582 : 0x02100000 /* op1(25:20)=10xxx1 */ &&
583 : (inst.Bits() & 0x00000010) ==
584 0 : 0x00000010 /* op(4)=1 */) {
585 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
586 : }
587 :
588 : if ((inst.Bits() & 0x00000E00) !=
589 : 0x00000A00 /* coproc(11:8)=~101x */ &&
590 : (inst.Bits() & 0x02100000) ==
591 : 0x00000000 /* op1(25:20)=0xxxx0 */ &&
592 : (inst.Bits() & 0x03B00000) !=
593 0 : 0x00000000 /* op1_repeated(25:20)=~000x00 */) {
594 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
595 : }
596 :
597 : if ((inst.Bits() & 0x00000E00) !=
598 : 0x00000A00 /* coproc(11:8)=~101x */ &&
599 : (inst.Bits() & 0x02100000) ==
600 : 0x00100000 /* op1(25:20)=0xxxx1 */ &&
601 : (inst.Bits() & 0x03B00000) !=
602 0 : 0x00100000 /* op1_repeated(25:20)=~000x01 */) {
603 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
604 : }
605 :
606 : if ((inst.Bits() & 0x00000E00) !=
607 : 0x00000A00 /* coproc(11:8)=~101x */ &&
608 : (inst.Bits() & 0x03000000) ==
609 : 0x02000000 /* op1(25:20)=10xxxx */ &&
610 : (inst.Bits() & 0x00000010) ==
611 0 : 0x00000000 /* op(4)=0 */) {
612 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
613 : }
614 :
615 : if ((inst.Bits() & 0x00000E00) ==
616 : 0x00000A00 /* coproc(11:8)=101x */ &&
617 : (inst.Bits() & 0x03E00000) ==
618 0 : 0x00400000 /* op1(25:20)=00010x */) {
619 0 : return decode_transfer_between_arm_core_and_extension_registers_64_bit(inst);
620 : }
621 :
622 : if ((inst.Bits() & 0x00000E00) ==
623 : 0x00000A00 /* coproc(11:8)=101x */ &&
624 : (inst.Bits() & 0x03000000) ==
625 : 0x02000000 /* op1(25:20)=10xxxx */ &&
626 : (inst.Bits() & 0x00000010) ==
627 0 : 0x00000000 /* op(4)=0 */) {
628 0 : return decode_floating_point_data_processing_instructions(inst);
629 : }
630 :
631 : if ((inst.Bits() & 0x00000E00) ==
632 : 0x00000A00 /* coproc(11:8)=101x */ &&
633 : (inst.Bits() & 0x03000000) ==
634 : 0x02000000 /* op1(25:20)=10xxxx */ &&
635 : (inst.Bits() & 0x00000010) ==
636 0 : 0x00000010 /* op(4)=1 */) {
637 0 : return decode_transfer_between_arm_core_and_extension_register_8_16_and_32_bit(inst);
638 : }
639 :
640 : if ((inst.Bits() & 0x00000E00) ==
641 : 0x00000A00 /* coproc(11:8)=101x */ &&
642 : (inst.Bits() & 0x02000000) ==
643 : 0x00000000 /* op1(25:20)=0xxxxx */ &&
644 : (inst.Bits() & 0x03A00000) !=
645 0 : 0x00000000 /* op1_repeated(25:20)=~000x0x */) {
646 0 : return decode_extension_register_load_store_instructions(inst);
647 : }
648 :
649 : if ((inst.Bits() & 0x03000000) ==
650 0 : 0x03000000 /* op1(25:20)=11xxxx */) {
651 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
652 : }
653 :
654 : // Catch any attempt to fall though ...
655 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
656 0 : }
657 :
658 : // Implementation of table: data_processing_and_miscellaneous_instructions.
659 : // Specified by: See Section A5.2
660 : const ClassDecoder& Arm32DecoderState::decode_data_processing_and_miscellaneous_instructions(
661 : const Instruction inst) const
662 0 : {
663 : if ((inst.Bits() & 0x02000000) ==
664 : 0x00000000 /* op(25)=0 */ &&
665 : (inst.Bits() & 0x01900000) !=
666 : 0x01000000 /* op1(24:20)=~10xx0 */ &&
667 : (inst.Bits() & 0x00000090) ==
668 0 : 0x00000010 /* op2(7:4)=0xx1 */) {
669 0 : return decode_data_processing_register_shifted_register(inst);
670 : }
671 :
672 : if ((inst.Bits() & 0x02000000) ==
673 : 0x00000000 /* op(25)=0 */ &&
674 : (inst.Bits() & 0x01900000) !=
675 : 0x01000000 /* op1(24:20)=~10xx0 */ &&
676 : (inst.Bits() & 0x00000010) ==
677 0 : 0x00000000 /* op2(7:4)=xxx0 */) {
678 0 : return decode_data_processing_register(inst);
679 : }
680 :
681 : if ((inst.Bits() & 0x02000000) ==
682 : 0x00000000 /* op(25)=0 */ &&
683 : (inst.Bits() & 0x01900000) ==
684 : 0x01000000 /* op1(24:20)=10xx0 */ &&
685 : (inst.Bits() & 0x00000090) ==
686 0 : 0x00000080 /* op2(7:4)=1xx0 */) {
687 0 : return decode_halfword_multiply_and_multiply_accumulate(inst);
688 : }
689 :
690 : if ((inst.Bits() & 0x02000000) ==
691 : 0x00000000 /* op(25)=0 */ &&
692 : (inst.Bits() & 0x01900000) ==
693 : 0x01000000 /* op1(24:20)=10xx0 */ &&
694 : (inst.Bits() & 0x00000080) ==
695 0 : 0x00000000 /* op2(7:4)=0xxx */) {
696 0 : return decode_miscellaneous_instructions(inst);
697 : }
698 :
699 : if ((inst.Bits() & 0x02000000) ==
700 : 0x00000000 /* op(25)=0 */ &&
701 : (inst.Bits() & 0x01200000) !=
702 : 0x00200000 /* op1(24:20)=~0xx1x */ &&
703 : (inst.Bits() & 0x000000F0) ==
704 0 : 0x000000B0 /* op2(7:4)=1011 */) {
705 0 : return decode_extra_load_store_instructions(inst);
706 : }
707 :
708 : if ((inst.Bits() & 0x02000000) ==
709 : 0x00000000 /* op(25)=0 */ &&
710 : (inst.Bits() & 0x01200000) !=
711 : 0x00200000 /* op1(24:20)=~0xx1x */ &&
712 : (inst.Bits() & 0x000000D0) ==
713 0 : 0x000000D0 /* op2(7:4)=11x1 */) {
714 0 : return decode_extra_load_store_instructions(inst);
715 : }
716 :
717 : if ((inst.Bits() & 0x02000000) ==
718 : 0x00000000 /* op(25)=0 */ &&
719 : (inst.Bits() & 0x01200000) ==
720 : 0x00200000 /* op1(24:20)=0xx1x */ &&
721 : (inst.Bits() & 0x000000F0) ==
722 0 : 0x000000B0 /* op2(7:4)=1011 */) {
723 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
724 : }
725 :
726 : if ((inst.Bits() & 0x02000000) ==
727 : 0x00000000 /* op(25)=0 */ &&
728 : (inst.Bits() & 0x01200000) ==
729 : 0x00200000 /* op1(24:20)=0xx1x */ &&
730 : (inst.Bits() & 0x000000D0) ==
731 0 : 0x000000D0 /* op2(7:4)=11x1 */) {
732 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
733 : }
734 :
735 : if ((inst.Bits() & 0x02000000) ==
736 : 0x00000000 /* op(25)=0 */ &&
737 : (inst.Bits() & 0x01000000) ==
738 : 0x00000000 /* op1(24:20)=0xxxx */ &&
739 : (inst.Bits() & 0x000000F0) ==
740 0 : 0x00000090 /* op2(7:4)=1001 */) {
741 0 : return decode_multiply_and_multiply_accumulate(inst);
742 : }
743 :
744 : if ((inst.Bits() & 0x02000000) ==
745 : 0x00000000 /* op(25)=0 */ &&
746 : (inst.Bits() & 0x01000000) ==
747 : 0x01000000 /* op1(24:20)=1xxxx */ &&
748 : (inst.Bits() & 0x000000F0) ==
749 0 : 0x00000090 /* op2(7:4)=1001 */) {
750 0 : return decode_synchronization_primitives(inst);
751 : }
752 :
753 : if ((inst.Bits() & 0x02000000) ==
754 : 0x02000000 /* op(25)=1 */ &&
755 : (inst.Bits() & 0x01B00000) ==
756 0 : 0x01000000 /* op1(24:20)=10x00 */) {
757 0 : return Actual_MOVT_cccc00110100iiiiddddiiiiiiiiiiii_case_1_instance_;
758 : }
759 :
760 : if ((inst.Bits() & 0x02000000) ==
761 : 0x02000000 /* op(25)=1 */ &&
762 : (inst.Bits() & 0x01B00000) ==
763 0 : 0x01200000 /* op1(24:20)=10x10 */) {
764 0 : return decode_msr_immediate_and_hints(inst);
765 : }
766 :
767 : if ((inst.Bits() & 0x02000000) ==
768 : 0x02000000 /* op(25)=1 */ &&
769 : (inst.Bits() & 0x01900000) !=
770 0 : 0x01000000 /* op1(24:20)=~10xx0 */) {
771 0 : return decode_data_processing_immediate(inst);
772 : }
773 :
774 : // Catch any attempt to fall though ...
775 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
776 0 : }
777 :
778 : // Implementation of table: data_processing_immediate.
779 : // Specified by: See Section A5.2.3
780 : const ClassDecoder& Arm32DecoderState::decode_data_processing_immediate(
781 : const Instruction inst) const
782 0 : {
783 : UNREFERENCED_PARAMETER(inst);
784 : if ((inst.Bits() & 0x01F00000) ==
785 : 0x01100000 /* op(24:20)=10001 */ &&
786 : (inst.Bits() & 0x0000F000) ==
787 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx0000xxxxxxxxxxxx */) {
788 0 : return Actual_TST_immediate_cccc00110001nnnn0000iiiiiiiiiiii_case_1_instance_;
789 : }
790 :
791 : if ((inst.Bits() & 0x01F00000) ==
792 : 0x01500000 /* op(24:20)=10101 */ &&
793 : (inst.Bits() & 0x0000F000) ==
794 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx0000xxxxxxxxxxxx */) {
795 0 : return Actual_CMN_immediate_cccc00110111nnnn0000iiiiiiiiiiii_case_1_instance_;
796 : }
797 :
798 : if ((inst.Bits() & 0x01B00000) ==
799 : 0x01300000 /* op(24:20)=10x11 */ &&
800 : (inst.Bits() & 0x0000F000) ==
801 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx0000xxxxxxxxxxxx */) {
802 0 : return Actual_CMN_immediate_cccc00110111nnnn0000iiiiiiiiiiii_case_1_instance_;
803 : }
804 :
805 : if ((inst.Bits() & 0x01E00000) ==
806 : 0x00400000 /* op(24:20)=0010x */ &&
807 : (inst.Bits() & 0x000F0000) !=
808 0 : 0x000F0000 /* Rn(19:16)=~1111 */) {
809 0 : return Actual_ADD_immediate_cccc0010100snnnnddddiiiiiiiiiiii_case_1_instance_;
810 : }
811 :
812 : if ((inst.Bits() & 0x01E00000) ==
813 : 0x00400000 /* op(24:20)=0010x */ &&
814 : (inst.Bits() & 0x000F0000) ==
815 0 : 0x000F0000 /* Rn(19:16)=1111 */) {
816 0 : return Actual_ADR_A1_cccc001010001111ddddiiiiiiiiiiii_case_1_instance_;
817 : }
818 :
819 : if ((inst.Bits() & 0x01E00000) ==
820 : 0x00800000 /* op(24:20)=0100x */ &&
821 : (inst.Bits() & 0x000F0000) !=
822 0 : 0x000F0000 /* Rn(19:16)=~1111 */) {
823 0 : return Actual_ADD_immediate_cccc0010100snnnnddddiiiiiiiiiiii_case_1_instance_;
824 : }
825 :
826 : if ((inst.Bits() & 0x01E00000) ==
827 : 0x00800000 /* op(24:20)=0100x */ &&
828 : (inst.Bits() & 0x000F0000) ==
829 0 : 0x000F0000 /* Rn(19:16)=1111 */) {
830 0 : return Actual_ADR_A1_cccc001010001111ddddiiiiiiiiiiii_case_1_instance_;
831 : }
832 :
833 : if ((inst.Bits() & 0x01E00000) ==
834 0 : 0x00A00000 /* op(24:20)=0101x */) {
835 0 : return Actual_ADC_immediate_cccc0010101snnnnddddiiiiiiiiiiii_case_1_instance_;
836 : }
837 :
838 : if ((inst.Bits() & 0x01E00000) ==
839 0 : 0x00C00000 /* op(24:20)=0110x */) {
840 0 : return Actual_ADC_immediate_cccc0010101snnnnddddiiiiiiiiiiii_case_1_instance_;
841 : }
842 :
843 : if ((inst.Bits() & 0x01E00000) ==
844 0 : 0x01800000 /* op(24:20)=1100x */) {
845 0 : return Actual_ORR_immediate_cccc0011100snnnnddddiiiiiiiiiiii_case_1_instance_;
846 : }
847 :
848 : if ((inst.Bits() & 0x01E00000) ==
849 0 : 0x01C00000 /* op(24:20)=1110x */) {
850 0 : return Actual_BIC_immediate_cccc0011110snnnnddddiiiiiiiiiiii_case_1_instance_;
851 : }
852 :
853 : if ((inst.Bits() & 0x01600000) ==
854 0 : 0x00600000 /* op(24:20)=0x11x */) {
855 0 : return Actual_ADC_immediate_cccc0010101snnnnddddiiiiiiiiiiii_case_1_instance_;
856 : }
857 :
858 : if ((inst.Bits() & 0x01A00000) ==
859 : 0x01A00000 /* op(24:20)=11x1x */ &&
860 : (inst.Bits() & 0x000F0000) ==
861 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx */) {
862 0 : return Actual_MOV_immediate_A1_cccc0011101s0000ddddiiiiiiiiiiii_case_1_instance_;
863 : }
864 :
865 : if ((inst.Bits() & 0x01C00000) ==
866 0 : 0x00000000 /* op(24:20)=000xx */) {
867 0 : return Actual_ADC_immediate_cccc0010101snnnnddddiiiiiiiiiiii_case_1_instance_;
868 : }
869 :
870 : // Catch any attempt to fall though ...
871 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
872 0 : }
873 :
874 : // Implementation of table: data_processing_register.
875 : // Specified by: See Section A5.2.1
876 : const ClassDecoder& Arm32DecoderState::decode_data_processing_register(
877 : const Instruction inst) const
878 0 : {
879 : UNREFERENCED_PARAMETER(inst);
880 : if ((inst.Bits() & 0x01E00000) ==
881 : 0x01A00000 /* op1(24:20)=1101x */ &&
882 : (inst.Bits() & 0x00000F80) !=
883 : 0x00000000 /* op2(11:7)=~00000 */ &&
884 : (inst.Bits() & 0x00000060) ==
885 : 0x00000000 /* op3(6:5)=00 */ &&
886 : (inst.Bits() & 0x000F0000) ==
887 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx */) {
888 0 : return Actual_LSL_immediate_cccc0001101s0000ddddiiiii000mmmm_case_1_instance_;
889 : }
890 :
891 : if ((inst.Bits() & 0x01E00000) ==
892 : 0x01A00000 /* op1(24:20)=1101x */ &&
893 : (inst.Bits() & 0x00000F80) !=
894 : 0x00000000 /* op2(11:7)=~00000 */ &&
895 : (inst.Bits() & 0x00000060) ==
896 : 0x00000060 /* op3(6:5)=11 */ &&
897 : (inst.Bits() & 0x000F0000) ==
898 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx */) {
899 0 : return Actual_LSL_immediate_cccc0001101s0000ddddiiiii000mmmm_case_1_instance_;
900 : }
901 :
902 : if ((inst.Bits() & 0x01E00000) ==
903 : 0x01A00000 /* op1(24:20)=1101x */ &&
904 : (inst.Bits() & 0x00000F80) ==
905 : 0x00000000 /* op2(11:7)=00000 */ &&
906 : (inst.Bits() & 0x00000060) ==
907 : 0x00000000 /* op3(6:5)=00 */ &&
908 : (inst.Bits() & 0x000F0000) ==
909 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx */) {
910 0 : return Actual_ASR_immediate_cccc0001101s0000ddddiiiii100mmmm_case_1_instance_;
911 : }
912 :
913 : if ((inst.Bits() & 0x01E00000) ==
914 : 0x01A00000 /* op1(24:20)=1101x */ &&
915 : (inst.Bits() & 0x00000F80) ==
916 : 0x00000000 /* op2(11:7)=00000 */ &&
917 : (inst.Bits() & 0x00000060) ==
918 : 0x00000060 /* op3(6:5)=11 */ &&
919 : (inst.Bits() & 0x000F0000) ==
920 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx */) {
921 0 : return Actual_ASR_immediate_cccc0001101s0000ddddiiiii100mmmm_case_1_instance_;
922 : }
923 :
924 : if ((inst.Bits() & 0x01E00000) ==
925 : 0x01A00000 /* op1(24:20)=1101x */ &&
926 : (inst.Bits() & 0x00000060) ==
927 : 0x00000020 /* op3(6:5)=01 */ &&
928 : (inst.Bits() & 0x000F0000) ==
929 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx */) {
930 0 : return Actual_ASR_immediate_cccc0001101s0000ddddiiiii100mmmm_case_1_instance_;
931 : }
932 :
933 : if ((inst.Bits() & 0x01E00000) ==
934 : 0x01A00000 /* op1(24:20)=1101x */ &&
935 : (inst.Bits() & 0x00000060) ==
936 : 0x00000040 /* op3(6:5)=10 */ &&
937 : (inst.Bits() & 0x000F0000) ==
938 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx */) {
939 0 : return Actual_ASR_immediate_cccc0001101s0000ddddiiiii100mmmm_case_1_instance_;
940 : }
941 :
942 : if ((inst.Bits() & 0x01E00000) ==
943 : 0x01E00000 /* op1(24:20)=1111x */ &&
944 : (inst.Bits() & 0x000F0000) ==
945 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx */) {
946 0 : return Actual_ASR_immediate_cccc0001101s0000ddddiiiii100mmmm_case_1_instance_;
947 : }
948 :
949 : if ((inst.Bits() & 0x01900000) ==
950 : 0x01100000 /* op1(24:20)=10xx1 */ &&
951 : (inst.Bits() & 0x0000F000) ==
952 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx0000xxxxxxxxxxxx */) {
953 0 : return Actual_CMN_register_cccc00010111nnnn0000iiiiitt0mmmm_case_1_instance_;
954 : }
955 :
956 : if ((inst.Bits() & 0x01A00000) ==
957 0 : 0x01800000 /* op1(24:20)=11x0x */) {
958 0 : return Actual_ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_1_instance_;
959 : }
960 :
961 : if ((inst.Bits() & 0x01000000) ==
962 0 : 0x00000000 /* op1(24:20)=0xxxx */) {
963 0 : return Actual_ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_1_instance_;
964 : }
965 :
966 : // Catch any attempt to fall though ...
967 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
968 0 : }
969 :
970 : // Implementation of table: data_processing_register_shifted_register.
971 : // Specified by: See Section A5.2.2
972 : const ClassDecoder& Arm32DecoderState::decode_data_processing_register_shifted_register(
973 : const Instruction inst) const
974 0 : {
975 : UNREFERENCED_PARAMETER(inst);
976 : if ((inst.Bits() & 0x01900000) ==
977 : 0x01100000 /* op1(24:20)=10xx1 */ &&
978 : (inst.Bits() & 0x0000F000) ==
979 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx0000xxxxxxxxxxxx */) {
980 0 : return Actual_CMN_register_shifted_register_cccc00010111nnnn0000ssss0tt1mmmm_case_1_instance_;
981 : }
982 :
983 : if ((inst.Bits() & 0x01A00000) ==
984 0 : 0x01800000 /* op1(24:20)=11x0x */) {
985 0 : return Actual_ADC_register_shifted_register_cccc0000101snnnnddddssss0tt1mmmm_case_1_instance_;
986 : }
987 :
988 : if ((inst.Bits() & 0x01A00000) ==
989 : 0x01A00000 /* op1(24:20)=11x1x */ &&
990 : (inst.Bits() & 0x000F0000) ==
991 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx */) {
992 0 : return Actual_ASR_register_cccc0001101s0000ddddmmmm0101nnnn_case_1_instance_;
993 : }
994 :
995 : if ((inst.Bits() & 0x01000000) ==
996 0 : 0x00000000 /* op1(24:20)=0xxxx */) {
997 0 : return Actual_ADC_register_shifted_register_cccc0000101snnnnddddssss0tt1mmmm_case_1_instance_;
998 : }
999 :
1000 : // Catch any attempt to fall though ...
1001 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
1002 0 : }
1003 :
1004 : // Implementation of table: extension_register_load_store_instructions.
1005 : // Specified by: A7.6
1006 : const ClassDecoder& Arm32DecoderState::decode_extension_register_load_store_instructions(
1007 : const Instruction inst) const
1008 0 : {
1009 : if ((inst.Bits() & 0x01B00000) ==
1010 : 0x00900000 /* opcode(24:20)=01x01 */ &&
1011 : (inst.Bits() & 0x00000100) ==
1012 0 : 0x00000000 /* S(8)=0 */) {
1013 0 : return Actual_VLDM_cccc110pudw1nnnndddd1010iiiiiiii_case_1_instance_;
1014 : }
1015 :
1016 : if ((inst.Bits() & 0x01B00000) ==
1017 : 0x00900000 /* opcode(24:20)=01x01 */ &&
1018 : (inst.Bits() & 0x00000100) ==
1019 0 : 0x00000100 /* S(8)=1 */) {
1020 0 : return Actual_VLDM_cccc110pudw1nnnndddd1011iiiiiiii_case_1_instance_;
1021 : }
1022 :
1023 : if ((inst.Bits() & 0x01B00000) ==
1024 : 0x00B00000 /* opcode(24:20)=01x11 */ &&
1025 : (inst.Bits() & 0x000F0000) !=
1026 : 0x000D0000 /* Rn(19:16)=~1101 */ &&
1027 : (inst.Bits() & 0x00000100) ==
1028 0 : 0x00000000 /* S(8)=0 */) {
1029 0 : return Actual_VLDM_cccc110pudw1nnnndddd1010iiiiiiii_case_1_instance_;
1030 : }
1031 :
1032 : if ((inst.Bits() & 0x01B00000) ==
1033 : 0x00B00000 /* opcode(24:20)=01x11 */ &&
1034 : (inst.Bits() & 0x000F0000) !=
1035 : 0x000D0000 /* Rn(19:16)=~1101 */ &&
1036 : (inst.Bits() & 0x00000100) ==
1037 0 : 0x00000100 /* S(8)=1 */) {
1038 0 : return Actual_VLDM_cccc110pudw1nnnndddd1011iiiiiiii_case_1_instance_;
1039 : }
1040 :
1041 : if ((inst.Bits() & 0x01B00000) ==
1042 : 0x00B00000 /* opcode(24:20)=01x11 */ &&
1043 : (inst.Bits() & 0x000F0000) ==
1044 : 0x000D0000 /* Rn(19:16)=1101 */ &&
1045 : (inst.Bits() & 0x00000100) ==
1046 0 : 0x00000000 /* S(8)=0 */) {
1047 0 : return Actual_VPOP_cccc11001d111101dddd1010iiiiiiii_case_1_instance_;
1048 : }
1049 :
1050 : if ((inst.Bits() & 0x01B00000) ==
1051 : 0x00B00000 /* opcode(24:20)=01x11 */ &&
1052 : (inst.Bits() & 0x000F0000) ==
1053 : 0x000D0000 /* Rn(19:16)=1101 */ &&
1054 : (inst.Bits() & 0x00000100) ==
1055 0 : 0x00000100 /* S(8)=1 */) {
1056 0 : return Actual_VPOP_cccc11001d111101dddd1011iiiiiiii_case_1_instance_;
1057 : }
1058 :
1059 : if ((inst.Bits() & 0x01B00000) ==
1060 : 0x01200000 /* opcode(24:20)=10x10 */ &&
1061 : (inst.Bits() & 0x000F0000) !=
1062 : 0x000D0000 /* Rn(19:16)=~1101 */ &&
1063 : (inst.Bits() & 0x00000100) ==
1064 0 : 0x00000000 /* S(8)=0 */) {
1065 0 : return Actual_VSTM_cccc110pudw0nnnndddd1010iiiiiiii_case_1_instance_;
1066 : }
1067 :
1068 : if ((inst.Bits() & 0x01B00000) ==
1069 : 0x01200000 /* opcode(24:20)=10x10 */ &&
1070 : (inst.Bits() & 0x000F0000) !=
1071 : 0x000D0000 /* Rn(19:16)=~1101 */ &&
1072 : (inst.Bits() & 0x00000100) ==
1073 0 : 0x00000100 /* S(8)=1 */) {
1074 0 : return Actual_VSTM_cccc110pudw0nnnndddd1011iiiiiiii_case_1_instance_;
1075 : }
1076 :
1077 : if ((inst.Bits() & 0x01B00000) ==
1078 : 0x01200000 /* opcode(24:20)=10x10 */ &&
1079 : (inst.Bits() & 0x000F0000) ==
1080 : 0x000D0000 /* Rn(19:16)=1101 */ &&
1081 : (inst.Bits() & 0x00000100) ==
1082 0 : 0x00000000 /* S(8)=0 */) {
1083 0 : return Actual_VPOP_cccc11001d111101dddd1010iiiiiiii_case_1_instance_;
1084 : }
1085 :
1086 : if ((inst.Bits() & 0x01B00000) ==
1087 : 0x01200000 /* opcode(24:20)=10x10 */ &&
1088 : (inst.Bits() & 0x000F0000) ==
1089 : 0x000D0000 /* Rn(19:16)=1101 */ &&
1090 : (inst.Bits() & 0x00000100) ==
1091 0 : 0x00000100 /* S(8)=1 */) {
1092 0 : return Actual_VPOP_cccc11001d111101dddd1011iiiiiiii_case_1_instance_;
1093 : }
1094 :
1095 : if ((inst.Bits() & 0x01B00000) ==
1096 : 0x01300000 /* opcode(24:20)=10x11 */ &&
1097 : (inst.Bits() & 0x00000100) ==
1098 0 : 0x00000000 /* S(8)=0 */) {
1099 0 : return Actual_VLDM_cccc110pudw1nnnndddd1010iiiiiiii_case_1_instance_;
1100 : }
1101 :
1102 : if ((inst.Bits() & 0x01B00000) ==
1103 : 0x01300000 /* opcode(24:20)=10x11 */ &&
1104 : (inst.Bits() & 0x00000100) ==
1105 0 : 0x00000100 /* S(8)=1 */) {
1106 0 : return Actual_VLDM_cccc110pudw1nnnndddd1011iiiiiiii_case_1_instance_;
1107 : }
1108 :
1109 : if ((inst.Bits() & 0x01E00000) ==
1110 0 : 0x00400000 /* opcode(24:20)=0010x */) {
1111 0 : return decode_transfer_between_arm_core_and_extension_registers_64_bit(inst);
1112 : }
1113 :
1114 : if ((inst.Bits() & 0x01300000) ==
1115 0 : 0x01000000 /* opcode(24:20)=1xx00 */) {
1116 0 : return Actual_VSTR_cccc1101ud00nnnndddd1010iiiiiiii_case_1_instance_;
1117 : }
1118 :
1119 : if ((inst.Bits() & 0x01300000) ==
1120 0 : 0x01100000 /* opcode(24:20)=1xx01 */) {
1121 0 : return Actual_VLDR_cccc1101ud01nnnndddd1010iiiiiiii_case_1_instance_;
1122 : }
1123 :
1124 : if ((inst.Bits() & 0x01900000) ==
1125 : 0x00800000 /* opcode(24:20)=01xx0 */ &&
1126 : (inst.Bits() & 0x00000100) ==
1127 0 : 0x00000000 /* S(8)=0 */) {
1128 0 : return Actual_VSTM_cccc110pudw0nnnndddd1010iiiiiiii_case_1_instance_;
1129 : }
1130 :
1131 : if ((inst.Bits() & 0x01900000) ==
1132 : 0x00800000 /* opcode(24:20)=01xx0 */ &&
1133 : (inst.Bits() & 0x00000100) ==
1134 0 : 0x00000100 /* S(8)=1 */) {
1135 0 : return Actual_VSTM_cccc110pudw0nnnndddd1011iiiiiiii_case_1_instance_;
1136 : }
1137 :
1138 : // Catch any attempt to fall though ...
1139 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
1140 0 : }
1141 :
1142 : // Implementation of table: extra_load_store_instructions.
1143 : // Specified by: See Section A5.2.8
1144 : const ClassDecoder& Arm32DecoderState::decode_extra_load_store_instructions(
1145 : const Instruction inst) const
1146 0 : {
1147 : UNREFERENCED_PARAMETER(inst);
1148 : if ((inst.Bits() & 0x00000060) ==
1149 : 0x00000020 /* op2(6:5)=01 */ &&
1150 : (inst.Bits() & 0x00500000) ==
1151 : 0x00000000 /* op1(24:20)=xx0x0 */ &&
1152 : (inst.Bits() & 0x00000F00) ==
1153 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx0000xxxxxxxx */) {
1154 0 : return Actual_STRH_register_cccc000pu0w0nnnntttt00001011mmmm_case_1_instance_;
1155 : }
1156 :
1157 : if ((inst.Bits() & 0x00000060) ==
1158 : 0x00000020 /* op2(6:5)=01 */ &&
1159 : (inst.Bits() & 0x00500000) ==
1160 0 : 0x00400000 /* op1(24:20)=xx1x0 */) {
1161 0 : return Actual_STRH_immediate_cccc000pu1w0nnnnttttiiii1011iiii_case_1_instance_;
1162 : }
1163 :
1164 : if ((inst.Bits() & 0x00000060) ==
1165 : 0x00000020 /* op2(6:5)=01 */ &&
1166 : (inst.Bits() & 0x00500000) ==
1167 : 0x00500000 /* op1(24:20)=xx1x1 */ &&
1168 : (inst.Bits() & 0x000F0000) ==
1169 0 : 0x000F0000 /* Rn(19:16)=1111 */) {
1170 0 : return Actual_LDRH_literal_cccc000pu1w11111ttttiiii1011iiii_case_1_instance_;
1171 : }
1172 :
1173 : if ((inst.Bits() & 0x00000060) ==
1174 : 0x00000040 /* op2(6:5)=10 */ &&
1175 : (inst.Bits() & 0x00500000) ==
1176 : 0x00000000 /* op1(24:20)=xx0x0 */ &&
1177 : (inst.Bits() & 0x00000F00) ==
1178 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx0000xxxxxxxx */) {
1179 0 : return Actual_LDRD_register_cccc000pu0w0nnnntttt00001101mmmm_case_1_instance_;
1180 : }
1181 :
1182 : if ((inst.Bits() & 0x00000060) ==
1183 : 0x00000040 /* op2(6:5)=10 */ &&
1184 : (inst.Bits() & 0x00500000) ==
1185 : 0x00100000 /* op1(24:20)=xx0x1 */ &&
1186 : (inst.Bits() & 0x00000F00) ==
1187 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx0000xxxxxxxx */) {
1188 0 : return Actual_LDRH_register_cccc000pu0w1nnnntttt00001011mmmm_case_1_instance_;
1189 : }
1190 :
1191 : if ((inst.Bits() & 0x00000060) ==
1192 : 0x00000040 /* op2(6:5)=10 */ &&
1193 : (inst.Bits() & 0x00500000) ==
1194 : 0x00400000 /* op1(24:20)=xx1x0 */ &&
1195 : (inst.Bits() & 0x000F0000) !=
1196 0 : 0x000F0000 /* Rn(19:16)=~1111 */) {
1197 0 : return Actual_LDRD_immediate_cccc000pu1w0nnnnttttiiii1101iiii_case_1_instance_;
1198 : }
1199 :
1200 : if ((inst.Bits() & 0x00000060) ==
1201 : 0x00000040 /* op2(6:5)=10 */ &&
1202 : (inst.Bits() & 0x00500000) ==
1203 : 0x00400000 /* op1(24:20)=xx1x0 */ &&
1204 : (inst.Bits() & 0x000F0000) ==
1205 : 0x000F0000 /* Rn(19:16)=1111 */ &&
1206 : (inst.Bits() & 0x01200000) ==
1207 0 : 0x01000000 /* $pattern(31:0)=xxxxxxx1xx0xxxxxxxxxxxxxxxxxxxxx */) {
1208 0 : return Actual_LDRD_literal_cccc0001u1001111ttttiiii1101iiii_case_1_instance_;
1209 : }
1210 :
1211 : if ((inst.Bits() & 0x00000060) ==
1212 : 0x00000040 /* op2(6:5)=10 */ &&
1213 : (inst.Bits() & 0x00500000) ==
1214 : 0x00500000 /* op1(24:20)=xx1x1 */ &&
1215 : (inst.Bits() & 0x000F0000) !=
1216 0 : 0x000F0000 /* Rn(19:16)=~1111 */) {
1217 0 : return Actual_LDRH_immediate_cccc000pu1w1nnnnttttiiii1011iiii_case_1_instance_;
1218 : }
1219 :
1220 : if ((inst.Bits() & 0x00000060) ==
1221 : 0x00000060 /* op2(6:5)=11 */ &&
1222 : (inst.Bits() & 0x00500000) ==
1223 : 0x00000000 /* op1(24:20)=xx0x0 */ &&
1224 : (inst.Bits() & 0x00000F00) ==
1225 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx0000xxxxxxxx */) {
1226 0 : return Actual_STRD_register_cccc000pu0w0nnnntttt00001111mmmm_case_1_instance_;
1227 : }
1228 :
1229 : if ((inst.Bits() & 0x00000060) ==
1230 : 0x00000060 /* op2(6:5)=11 */ &&
1231 : (inst.Bits() & 0x00500000) ==
1232 0 : 0x00400000 /* op1(24:20)=xx1x0 */) {
1233 0 : return Actual_STRD_immediate_cccc000pu1w0nnnnttttiiii1111iiii_case_1_instance_;
1234 : }
1235 :
1236 : if ((inst.Bits() & 0x00000020) ==
1237 : 0x00000020 /* op2(6:5)=x1 */ &&
1238 : (inst.Bits() & 0x00500000) ==
1239 : 0x00100000 /* op1(24:20)=xx0x1 */ &&
1240 : (inst.Bits() & 0x00000F00) ==
1241 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx0000xxxxxxxx */) {
1242 0 : return Actual_LDRH_register_cccc000pu0w1nnnntttt00001011mmmm_case_1_instance_;
1243 : }
1244 :
1245 : if ((inst.Bits() & 0x00000020) ==
1246 : 0x00000020 /* op2(6:5)=x1 */ &&
1247 : (inst.Bits() & 0x00500000) ==
1248 : 0x00500000 /* op1(24:20)=xx1x1 */ &&
1249 : (inst.Bits() & 0x000F0000) !=
1250 0 : 0x000F0000 /* Rn(19:16)=~1111 */) {
1251 0 : return Actual_LDRH_immediate_cccc000pu1w1nnnnttttiiii1011iiii_case_1_instance_;
1252 : }
1253 :
1254 : if ((inst.Bits() & 0x00000040) ==
1255 : 0x00000040 /* op2(6:5)=1x */ &&
1256 : (inst.Bits() & 0x00500000) ==
1257 : 0x00500000 /* op1(24:20)=xx1x1 */ &&
1258 : (inst.Bits() & 0x000F0000) ==
1259 : 0x000F0000 /* Rn(19:16)=1111 */ &&
1260 : (inst.Bits() & 0x01200000) ==
1261 0 : 0x01000000 /* $pattern(31:0)=xxxxxxx1xx0xxxxxxxxxxxxxxxxxxxxx */) {
1262 0 : return Actual_LDRH_literal_cccc000pu1w11111ttttiiii1011iiii_case_1_instance_;
1263 : }
1264 :
1265 : // Catch any attempt to fall though ...
1266 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
1267 0 : }
1268 :
1269 : // Implementation of table: floating_point_data_processing_instructions.
1270 : // Specified by: A7.5 Table A7 - 16
1271 : const ClassDecoder& Arm32DecoderState::decode_floating_point_data_processing_instructions(
1272 : const Instruction inst) const
1273 0 : {
1274 : if ((inst.Bits() & 0x00B00000) ==
1275 0 : 0x00300000 /* opc1(23:20)=0x11 */) {
1276 0 : return Actual_VADD_floating_point_cccc11100d11nnnndddd101sn0m0mmmm_case_1_instance_;
1277 : }
1278 :
1279 : if ((inst.Bits() & 0x00B00000) ==
1280 : 0x00800000 /* opc1(23:20)=1x00 */ &&
1281 : (inst.Bits() & 0x00000040) ==
1282 0 : 0x00000000 /* opc3(7:6)=x0 */) {
1283 0 : return Actual_VADD_floating_point_cccc11100d11nnnndddd101sn0m0mmmm_case_1_instance_;
1284 : }
1285 :
1286 : if ((inst.Bits() & 0x00B00000) ==
1287 0 : 0x00900000 /* opc1(23:20)=1x01 */) {
1288 0 : return Actual_VADD_floating_point_cccc11100d11nnnndddd101sn0m0mmmm_case_1_instance_;
1289 : }
1290 :
1291 : if ((inst.Bits() & 0x00B00000) ==
1292 0 : 0x00B00000 /* opc1(23:20)=1x11 */) {
1293 0 : return decode_other_floating_point_data_processing_instructions(inst);
1294 : }
1295 :
1296 : if ((inst.Bits() & 0x00300000) ==
1297 0 : 0x00200000 /* opc1(23:20)=xx10 */) {
1298 0 : return Actual_VADD_floating_point_cccc11100d11nnnndddd101sn0m0mmmm_case_1_instance_;
1299 : }
1300 :
1301 : if ((inst.Bits() & 0x00A00000) ==
1302 0 : 0x00000000 /* opc1(23:20)=0x0x */) {
1303 0 : return Actual_VADD_floating_point_cccc11100d11nnnndddd101sn0m0mmmm_case_1_instance_;
1304 : }
1305 :
1306 : // Catch any attempt to fall though ...
1307 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
1308 0 : }
1309 :
1310 : // Implementation of table: halfword_multiply_and_multiply_accumulate.
1311 : // Specified by: See Section A5.2.7
1312 : const ClassDecoder& Arm32DecoderState::decode_halfword_multiply_and_multiply_accumulate(
1313 : const Instruction inst) const
1314 0 : {
1315 : UNREFERENCED_PARAMETER(inst);
1316 : if ((inst.Bits() & 0x00600000) ==
1317 0 : 0x00000000 /* op1(22:21)=00 */) {
1318 0 : return Actual_MLS_A1_cccc00000110ddddaaaammmm1001nnnn_case_1_instance_;
1319 : }
1320 :
1321 : if ((inst.Bits() & 0x00600000) ==
1322 : 0x00200000 /* op1(22:21)=01 */ &&
1323 : (inst.Bits() & 0x00000020) ==
1324 0 : 0x00000000 /* op(5)=0 */) {
1325 0 : return Actual_MLS_A1_cccc00000110ddddaaaammmm1001nnnn_case_1_instance_;
1326 : }
1327 :
1328 : if ((inst.Bits() & 0x00600000) ==
1329 : 0x00200000 /* op1(22:21)=01 */ &&
1330 : (inst.Bits() & 0x00000020) ==
1331 : 0x00000020 /* op(5)=1 */ &&
1332 : (inst.Bits() & 0x0000F000) ==
1333 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx0000xxxxxxxxxxxx */) {
1334 0 : return Actual_SMULBB_SMULBT_SMULTB_SMULTT_cccc00010110dddd0000mmmm1xx0nnnn_case_1_instance_;
1335 : }
1336 :
1337 : if ((inst.Bits() & 0x00600000) ==
1338 0 : 0x00400000 /* op1(22:21)=10 */) {
1339 0 : return Actual_SMLALBB_SMLALBT_SMLALTB_SMLALTT_cccc00010100hhhhllllmmmm1xx0nnnn_case_1_instance_;
1340 : }
1341 :
1342 : if ((inst.Bits() & 0x00600000) ==
1343 : 0x00600000 /* op1(22:21)=11 */ &&
1344 : (inst.Bits() & 0x0000F000) ==
1345 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx0000xxxxxxxxxxxx */) {
1346 0 : return Actual_SMULBB_SMULBT_SMULTB_SMULTT_cccc00010110dddd0000mmmm1xx0nnnn_case_1_instance_;
1347 : }
1348 :
1349 : // Catch any attempt to fall though ...
1350 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
1351 0 : }
1352 :
1353 : // Implementation of table: load_store_word_and_unsigned_byte.
1354 : // Specified by: See Section A5.3
1355 : const ClassDecoder& Arm32DecoderState::decode_load_store_word_and_unsigned_byte(
1356 : const Instruction inst) const
1357 0 : {
1358 : UNREFERENCED_PARAMETER(inst);
1359 : if ((inst.Bits() & 0x02000000) ==
1360 : 0x00000000 /* A(25)=0 */ &&
1361 : (inst.Bits() & 0x00500000) ==
1362 : 0x00000000 /* op1(24:20)=xx0x0 */ &&
1363 : (inst.Bits() & 0x01700000) !=
1364 0 : 0x00200000 /* op1_repeated(24:20)=~0x010 */) {
1365 0 : return Actual_STR_immediate_cccc010pu0w0nnnnttttiiiiiiiiiiii_case_1_instance_;
1366 : }
1367 :
1368 : if ((inst.Bits() & 0x02000000) ==
1369 : 0x00000000 /* A(25)=0 */ &&
1370 : (inst.Bits() & 0x00500000) ==
1371 : 0x00100000 /* op1(24:20)=xx0x1 */ &&
1372 : (inst.Bits() & 0x000F0000) !=
1373 : 0x000F0000 /* Rn(19:16)=~1111 */ &&
1374 : (inst.Bits() & 0x01700000) !=
1375 0 : 0x00300000 /* op1_repeated(24:20)=~0x011 */) {
1376 0 : return Actual_LDR_immediate_cccc010pu0w1nnnnttttiiiiiiiiiiii_case_1_instance_;
1377 : }
1378 :
1379 : if ((inst.Bits() & 0x02000000) ==
1380 : 0x00000000 /* A(25)=0 */ &&
1381 : (inst.Bits() & 0x00500000) ==
1382 : 0x00100000 /* op1(24:20)=xx0x1 */ &&
1383 : (inst.Bits() & 0x000F0000) ==
1384 : 0x000F0000 /* Rn(19:16)=1111 */ &&
1385 : (inst.Bits() & 0x01700000) !=
1386 : 0x00300000 /* op1_repeated(24:20)=~0x011 */ &&
1387 : (inst.Bits() & 0x01200000) ==
1388 0 : 0x01000000 /* $pattern(31:0)=xxxxxxx1xx0xxxxxxxxxxxxxxxxxxxxx */) {
1389 0 : return Actual_LDR_literal_cccc0101u0011111ttttiiiiiiiiiiii_case_1_instance_;
1390 : }
1391 :
1392 : if ((inst.Bits() & 0x02000000) ==
1393 : 0x00000000 /* A(25)=0 */ &&
1394 : (inst.Bits() & 0x00500000) ==
1395 : 0x00400000 /* op1(24:20)=xx1x0 */ &&
1396 : (inst.Bits() & 0x01700000) !=
1397 0 : 0x00600000 /* op1_repeated(24:20)=~0x110 */) {
1398 0 : return Actual_STRB_immediate_cccc010pu1w0nnnnttttiiiiiiiiiiii_case_1_instance_;
1399 : }
1400 :
1401 : if ((inst.Bits() & 0x02000000) ==
1402 : 0x00000000 /* A(25)=0 */ &&
1403 : (inst.Bits() & 0x00500000) ==
1404 : 0x00500000 /* op1(24:20)=xx1x1 */ &&
1405 : (inst.Bits() & 0x000F0000) !=
1406 : 0x000F0000 /* Rn(19:16)=~1111 */ &&
1407 : (inst.Bits() & 0x01700000) !=
1408 0 : 0x00700000 /* op1_repeated(24:20)=~0x111 */) {
1409 0 : return Actual_LDRB_immediate_cccc010pu1w1nnnnttttiiiiiiiiiiii_case_1_instance_;
1410 : }
1411 :
1412 : if ((inst.Bits() & 0x02000000) ==
1413 : 0x00000000 /* A(25)=0 */ &&
1414 : (inst.Bits() & 0x00500000) ==
1415 : 0x00500000 /* op1(24:20)=xx1x1 */ &&
1416 : (inst.Bits() & 0x000F0000) ==
1417 : 0x000F0000 /* Rn(19:16)=1111 */ &&
1418 : (inst.Bits() & 0x01700000) !=
1419 : 0x00700000 /* op1_repeated(24:20)=~0x111 */ &&
1420 : (inst.Bits() & 0x01200000) ==
1421 0 : 0x01000000 /* $pattern(31:0)=xxxxxxx1xx0xxxxxxxxxxxxxxxxxxxxx */) {
1422 0 : return Actual_LDRB_literal_cccc0101u1011111ttttiiiiiiiiiiii_case_1_instance_;
1423 : }
1424 :
1425 : if ((inst.Bits() & 0x02000000) ==
1426 : 0x00000000 /* A(25)=0 */ &&
1427 : (inst.Bits() & 0x01200000) ==
1428 0 : 0x00200000 /* op1(24:20)=0xx1x */) {
1429 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1430 : }
1431 :
1432 : if ((inst.Bits() & 0x02000000) ==
1433 : 0x02000000 /* A(25)=1 */ &&
1434 : (inst.Bits() & 0x00500000) ==
1435 : 0x00000000 /* op1(24:20)=xx0x0 */ &&
1436 : (inst.Bits() & 0x00000010) ==
1437 : 0x00000000 /* B(4)=0 */ &&
1438 : (inst.Bits() & 0x01700000) !=
1439 0 : 0x00200000 /* op1_repeated(24:20)=~0x010 */) {
1440 0 : return Actual_STR_register_cccc011pd0w0nnnnttttiiiiitt0mmmm_case_1_instance_;
1441 : }
1442 :
1443 : if ((inst.Bits() & 0x02000000) ==
1444 : 0x02000000 /* A(25)=1 */ &&
1445 : (inst.Bits() & 0x00500000) ==
1446 : 0x00100000 /* op1(24:20)=xx0x1 */ &&
1447 : (inst.Bits() & 0x00000010) ==
1448 : 0x00000000 /* B(4)=0 */ &&
1449 : (inst.Bits() & 0x01700000) !=
1450 0 : 0x00300000 /* op1_repeated(24:20)=~0x011 */) {
1451 0 : return Actual_LDR_register_cccc011pu0w1nnnnttttiiiiitt0mmmm_case_1_instance_;
1452 : }
1453 :
1454 : if ((inst.Bits() & 0x02000000) ==
1455 : 0x02000000 /* A(25)=1 */ &&
1456 : (inst.Bits() & 0x00500000) ==
1457 : 0x00400000 /* op1(24:20)=xx1x0 */ &&
1458 : (inst.Bits() & 0x00000010) ==
1459 : 0x00000000 /* B(4)=0 */ &&
1460 : (inst.Bits() & 0x01700000) !=
1461 0 : 0x00600000 /* op1_repeated(24:20)=~0x110 */) {
1462 0 : return Actual_STRB_register_cccc011pu1w0nnnnttttiiiiitt0mmmm_case_1_instance_;
1463 : }
1464 :
1465 : if ((inst.Bits() & 0x02000000) ==
1466 : 0x02000000 /* A(25)=1 */ &&
1467 : (inst.Bits() & 0x00500000) ==
1468 : 0x00500000 /* op1(24:20)=xx1x1 */ &&
1469 : (inst.Bits() & 0x00000010) ==
1470 : 0x00000000 /* B(4)=0 */ &&
1471 : (inst.Bits() & 0x01700000) !=
1472 0 : 0x00700000 /* op1_repeated(24:20)=~0x111 */) {
1473 0 : return Actual_LDRB_register_cccc011pu1w1nnnnttttiiiiitt0mmmm_case_1_instance_;
1474 : }
1475 :
1476 : if ((inst.Bits() & 0x02000000) ==
1477 : 0x02000000 /* A(25)=1 */ &&
1478 : (inst.Bits() & 0x01200000) ==
1479 : 0x00200000 /* op1(24:20)=0xx1x */ &&
1480 : (inst.Bits() & 0x00000010) ==
1481 0 : 0x00000000 /* B(4)=0 */) {
1482 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1483 : }
1484 :
1485 : // Catch any attempt to fall though ...
1486 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
1487 0 : }
1488 :
1489 : // Implementation of table: media_instructions.
1490 : // Specified by: See Section A5.4
1491 : const ClassDecoder& Arm32DecoderState::decode_media_instructions(
1492 : const Instruction inst) const
1493 0 : {
1494 : if ((inst.Bits() & 0x01F00000) ==
1495 : 0x01800000 /* op1(24:20)=11000 */ &&
1496 : (inst.Bits() & 0x000000E0) ==
1497 : 0x00000000 /* op2(7:5)=000 */ &&
1498 : (inst.Bits() & 0x0000F000) !=
1499 0 : 0x0000F000 /* Rd(15:12)=~1111 */) {
1500 0 : return Actual_SMLAD_cccc01110000ddddaaaammmm00m1nnnn_case_1_instance_;
1501 : }
1502 :
1503 : if ((inst.Bits() & 0x01F00000) ==
1504 : 0x01800000 /* op1(24:20)=11000 */ &&
1505 : (inst.Bits() & 0x000000E0) ==
1506 : 0x00000000 /* op2(7:5)=000 */ &&
1507 : (inst.Bits() & 0x0000F000) ==
1508 0 : 0x0000F000 /* Rd(15:12)=1111 */) {
1509 0 : return Actual_SMULBB_SMULBT_SMULTB_SMULTT_cccc00010110dddd0000mmmm1xx0nnnn_case_1_instance_;
1510 : }
1511 :
1512 : if ((inst.Bits() & 0x01F00000) ==
1513 : 0x01F00000 /* op1(24:20)=11111 */ &&
1514 : (inst.Bits() & 0x000000E0) ==
1515 0 : 0x000000E0 /* op2(7:5)=111 */) {
1516 0 : return Actual_UDF_cccc01111111iiiiiiiiiiii1111iiii_case_1_instance_;
1517 : }
1518 :
1519 : if ((inst.Bits() & 0x01E00000) ==
1520 : 0x01C00000 /* op1(24:20)=1110x */ &&
1521 : (inst.Bits() & 0x00000060) ==
1522 : 0x00000000 /* op2(7:5)=x00 */ &&
1523 : (inst.Bits() & 0x0000000F) !=
1524 0 : 0x0000000F /* Rn(3:0)=~1111 */) {
1525 0 : return Actual_BFI_cccc0111110mmmmmddddlllll001nnnn_case_1_instance_;
1526 : }
1527 :
1528 : if ((inst.Bits() & 0x01E00000) ==
1529 : 0x01C00000 /* op1(24:20)=1110x */ &&
1530 : (inst.Bits() & 0x00000060) ==
1531 : 0x00000000 /* op2(7:5)=x00 */ &&
1532 : (inst.Bits() & 0x0000000F) ==
1533 0 : 0x0000000F /* Rn(3:0)=1111 */) {
1534 0 : return Actual_BFC_cccc0111110mmmmmddddlllll0011111_case_1_instance_;
1535 : }
1536 :
1537 : if ((inst.Bits() & 0x01A00000) ==
1538 : 0x01A00000 /* op1(24:20)=11x1x */ &&
1539 : (inst.Bits() & 0x00000060) ==
1540 0 : 0x00000040 /* op2(7:5)=x10 */) {
1541 0 : return Actual_SBFX_cccc0111101wwwwwddddlllll101nnnn_case_1_instance_;
1542 : }
1543 :
1544 : if ((inst.Bits() & 0x01C00000) ==
1545 0 : 0x00000000 /* op1(24:20)=000xx */) {
1546 0 : return decode_parallel_addition_and_subtraction_signed(inst);
1547 : }
1548 :
1549 : if ((inst.Bits() & 0x01C00000) ==
1550 0 : 0x00400000 /* op1(24:20)=001xx */) {
1551 0 : return decode_parallel_addition_and_subtraction_unsigned(inst);
1552 : }
1553 :
1554 : if ((inst.Bits() & 0x01800000) ==
1555 0 : 0x00800000 /* op1(24:20)=01xxx */) {
1556 0 : return decode_packing_unpacking_saturation_and_reversal(inst);
1557 : }
1558 :
1559 : if ((inst.Bits() & 0x01800000) ==
1560 0 : 0x01000000 /* op1(24:20)=10xxx */) {
1561 0 : return decode_signed_multiply_signed_and_unsigned_divide(inst);
1562 : }
1563 :
1564 0 : if (true) {
1565 0 : return Actual_Unnamed_case_1_instance_;
1566 : }
1567 :
1568 : // Catch any attempt to fall though ...
1569 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
1570 0 : }
1571 :
1572 : // Implementation of table: memory_hints_advanced_simd_instructions_and_miscellaneous_instructions.
1573 : // Specified by: See Section A5.7.1
1574 : const ClassDecoder& Arm32DecoderState::decode_memory_hints_advanced_simd_instructions_and_miscellaneous_instructions(
1575 : const Instruction inst) const
1576 0 : {
1577 : if ((inst.Bits() & 0x07F00000) ==
1578 : 0x01000000 /* op1(26:20)=0010000 */ &&
1579 : (inst.Bits() & 0x000000F0) ==
1580 : 0x00000000 /* op2(7:4)=0000 */ &&
1581 : (inst.Bits() & 0x00010000) ==
1582 : 0x00010000 /* Rn(19:16)=xxx1 */ &&
1583 : (inst.Bits() & 0x000EFD0F) ==
1584 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxx000x000000x0xxxx0000 */) {
1585 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1586 : }
1587 :
1588 : if ((inst.Bits() & 0x07F00000) ==
1589 : 0x01000000 /* op1(26:20)=0010000 */ &&
1590 : (inst.Bits() & 0x00000020) ==
1591 : 0x00000000 /* op2(7:4)=xx0x */ &&
1592 : (inst.Bits() & 0x00010000) ==
1593 : 0x00000000 /* Rn(19:16)=xxx0 */ &&
1594 : (inst.Bits() & 0x0000FE00) ==
1595 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx0000000xxxxxxxxx */) {
1596 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1597 : }
1598 :
1599 : if ((inst.Bits() & 0x07F00000) ==
1600 0 : 0x05300000 /* op1(26:20)=1010011 */) {
1601 0 : return Actual_Unnamed_11110100xx11xxxxxxxxxxxxxxxxxxxx_case_1_instance_;
1602 : }
1603 :
1604 : if ((inst.Bits() & 0x07F00000) ==
1605 : 0x05700000 /* op1(26:20)=1010111 */ &&
1606 : (inst.Bits() & 0x000000F0) ==
1607 0 : 0x00000000 /* op2(7:4)=0000 */) {
1608 0 : return Actual_Unnamed_11110100xx11xxxxxxxxxxxxxxxxxxxx_case_1_instance_;
1609 : }
1610 :
1611 : if ((inst.Bits() & 0x07F00000) ==
1612 : 0x05700000 /* op1(26:20)=1010111 */ &&
1613 : (inst.Bits() & 0x000000F0) ==
1614 : 0x00000010 /* op2(7:4)=0001 */ &&
1615 : (inst.Bits() & 0x000FFF0F) ==
1616 0 : 0x000FF00F /* $pattern(31:0)=xxxxxxxxxxxx111111110000xxxx1111 */) {
1617 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1618 : }
1619 :
1620 : if ((inst.Bits() & 0x07F00000) ==
1621 : 0x05700000 /* op1(26:20)=1010111 */ &&
1622 : (inst.Bits() & 0x000000F0) ==
1623 : 0x00000060 /* op2(7:4)=0110 */ &&
1624 : (inst.Bits() & 0x000FFF00) ==
1625 0 : 0x000FF000 /* $pattern(31:0)=xxxxxxxxxxxx111111110000xxxxxxxx */) {
1626 0 : return Actual_ISB_1111010101111111111100000110xxxx_case_1_instance_;
1627 : }
1628 :
1629 : if ((inst.Bits() & 0x07F00000) ==
1630 : 0x05700000 /* op1(26:20)=1010111 */ &&
1631 : (inst.Bits() & 0x000000F0) ==
1632 0 : 0x00000070 /* op2(7:4)=0111 */) {
1633 0 : return Actual_Unnamed_11110100xx11xxxxxxxxxxxxxxxxxxxx_case_1_instance_;
1634 : }
1635 :
1636 : if ((inst.Bits() & 0x07F00000) ==
1637 : 0x05700000 /* op1(26:20)=1010111 */ &&
1638 : (inst.Bits() & 0x000000E0) ==
1639 0 : 0x00000020 /* op2(7:4)=001x */) {
1640 0 : return Actual_Unnamed_11110100xx11xxxxxxxxxxxxxxxxxxxx_case_1_instance_;
1641 : }
1642 :
1643 : if ((inst.Bits() & 0x07F00000) ==
1644 : 0x05700000 /* op1(26:20)=1010111 */ &&
1645 : (inst.Bits() & 0x000000E0) ==
1646 : 0x00000040 /* op2(7:4)=010x */ &&
1647 : (inst.Bits() & 0x000FFF00) ==
1648 0 : 0x000FF000 /* $pattern(31:0)=xxxxxxxxxxxx111111110000xxxxxxxx */) {
1649 0 : return Actual_DMB_1111010101111111111100000101xxxx_case_1_instance_;
1650 : }
1651 :
1652 : if ((inst.Bits() & 0x07F00000) ==
1653 : 0x05700000 /* op1(26:20)=1010111 */ &&
1654 : (inst.Bits() & 0x00000080) ==
1655 0 : 0x00000080 /* op2(7:4)=1xxx */) {
1656 0 : return Actual_Unnamed_11110100xx11xxxxxxxxxxxxxxxxxxxx_case_1_instance_;
1657 : }
1658 :
1659 : if ((inst.Bits() & 0x07700000) ==
1660 0 : 0x04100000 /* op1(26:20)=100x001 */) {
1661 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1662 : }
1663 :
1664 : if ((inst.Bits() & 0x07700000) ==
1665 : 0x04500000 /* op1(26:20)=100x101 */ &&
1666 : (inst.Bits() & 0x0000F000) ==
1667 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx1111xxxxxxxxxxxx */) {
1668 0 : return Actual_PLI_immediate_literal_11110100u101nnnn1111iiiiiiiiiiii_case_1_instance_;
1669 : }
1670 :
1671 : if ((inst.Bits() & 0x07700000) ==
1672 : 0x05100000 /* op1(26:20)=101x001 */ &&
1673 : (inst.Bits() & 0x000F0000) ==
1674 0 : 0x000F0000 /* Rn(19:16)=1111 */) {
1675 0 : return Actual_Unnamed_11110100xx11xxxxxxxxxxxxxxxxxxxx_case_1_instance_;
1676 : }
1677 :
1678 : if ((inst.Bits() & 0x07700000) ==
1679 : 0x05500000 /* op1(26:20)=101x101 */ &&
1680 : (inst.Bits() & 0x000F0000) ==
1681 : 0x000F0000 /* Rn(19:16)=1111 */ &&
1682 : (inst.Bits() & 0x0000F000) ==
1683 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx1111xxxxxxxxxxxx */) {
1684 0 : return Actual_PLD_literal_11110101u10111111111iiiiiiiiiiii_case_1_instance_;
1685 : }
1686 :
1687 : if ((inst.Bits() & 0x07700000) ==
1688 : 0x06100000 /* op1(26:20)=110x001 */ &&
1689 : (inst.Bits() & 0x00000010) ==
1690 0 : 0x00000000 /* op2(7:4)=xxx0 */) {
1691 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1692 : }
1693 :
1694 : if ((inst.Bits() & 0x07700000) ==
1695 : 0x06500000 /* op1(26:20)=110x101 */ &&
1696 : (inst.Bits() & 0x00000010) ==
1697 : 0x00000000 /* op2(7:4)=xxx0 */ &&
1698 : (inst.Bits() & 0x0000F000) ==
1699 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx1111xxxxxxxxxxxx */) {
1700 0 : return Actual_PLI_register_11110110u101nnnn1111iiiiitt0mmmm_case_1_instance_;
1701 : }
1702 :
1703 : if ((inst.Bits() & 0x07B00000) ==
1704 0 : 0x05B00000 /* op1(26:20)=1011x11 */) {
1705 0 : return Actual_Unnamed_11110100xx11xxxxxxxxxxxxxxxxxxxx_case_1_instance_;
1706 : }
1707 :
1708 : if ((inst.Bits() & 0x07300000) ==
1709 0 : 0x04300000 /* op1(26:20)=100xx11 */) {
1710 0 : return Actual_Unnamed_11110100xx11xxxxxxxxxxxxxxxxxxxx_case_1_instance_;
1711 : }
1712 :
1713 : if ((inst.Bits() & 0x07300000) ==
1714 : 0x05100000 /* op1(26:20)=101xx01 */ &&
1715 : (inst.Bits() & 0x000F0000) !=
1716 : 0x000F0000 /* Rn(19:16)=~1111 */ &&
1717 : (inst.Bits() & 0x0000F000) ==
1718 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx1111xxxxxxxxxxxx */) {
1719 0 : return Actual_PLD_PLDW_immediate_11110101ur01nnnn1111iiiiiiiiiiii_case_1_instance_;
1720 : }
1721 :
1722 : if ((inst.Bits() & 0x07300000) ==
1723 : 0x07100000 /* op1(26:20)=111xx01 */ &&
1724 : (inst.Bits() & 0x00000010) ==
1725 : 0x00000000 /* op2(7:4)=xxx0 */ &&
1726 : (inst.Bits() & 0x0000F000) ==
1727 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx1111xxxxxxxxxxxx */) {
1728 0 : return Actual_PLD_PLDW_register_11110111u001nnnn1111iiiiitt0mmmm_case_1_instance_;
1729 : }
1730 :
1731 : if ((inst.Bits() & 0x06300000) ==
1732 : 0x06300000 /* op1(26:20)=11xxx11 */ &&
1733 : (inst.Bits() & 0x00000010) ==
1734 0 : 0x00000000 /* op2(7:4)=xxx0 */) {
1735 0 : return Actual_Unnamed_11110100xx11xxxxxxxxxxxxxxxxxxxx_case_1_instance_;
1736 : }
1737 :
1738 : if ((inst.Bits() & 0x07100000) ==
1739 0 : 0x04000000 /* op1(26:20)=100xxx0 */) {
1740 0 : return decode_advanced_simd_element_or_structure_load_store_instructions(inst);
1741 : }
1742 :
1743 : if ((inst.Bits() & 0x06000000) ==
1744 0 : 0x02000000 /* op1(26:20)=01xxxxx */) {
1745 0 : return decode_advanced_simd_data_processing_instructions(inst);
1746 : }
1747 :
1748 0 : if (true) {
1749 0 : return Actual_Unnamed_case_1_instance_;
1750 : }
1751 :
1752 : // Catch any attempt to fall though ...
1753 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
1754 0 : }
1755 :
1756 : // Implementation of table: miscellaneous_instructions.
1757 : // Specified by: See Section A5.2.12
1758 : const ClassDecoder& Arm32DecoderState::decode_miscellaneous_instructions(
1759 : const Instruction inst) const
1760 0 : {
1761 : if ((inst.Bits() & 0x00000070) ==
1762 : 0x00000000 /* op2(6:4)=000 */ &&
1763 : (inst.Bits() & 0x00000200) ==
1764 : 0x00000000 /* B(9)=0 */ &&
1765 : (inst.Bits() & 0x00600000) ==
1766 : 0x00200000 /* op(22:21)=01 */ &&
1767 : (inst.Bits() & 0x00030000) ==
1768 : 0x00000000 /* op1(19:16)=xx00 */ &&
1769 : (inst.Bits() & 0x0000FD00) ==
1770 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx111100x0xxxxxxxx */) {
1771 0 : return Actual_MSR_register_cccc00010010mm00111100000000nnnn_case_1_instance_;
1772 : }
1773 :
1774 : if ((inst.Bits() & 0x00000070) ==
1775 : 0x00000000 /* op2(6:4)=000 */ &&
1776 : (inst.Bits() & 0x00000200) ==
1777 : 0x00000000 /* B(9)=0 */ &&
1778 : (inst.Bits() & 0x00600000) ==
1779 : 0x00200000 /* op(22:21)=01 */ &&
1780 : (inst.Bits() & 0x00030000) ==
1781 : 0x00010000 /* op1(19:16)=xx01 */ &&
1782 : (inst.Bits() & 0x0000FD00) ==
1783 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx111100x0xxxxxxxx */) {
1784 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1785 : }
1786 :
1787 : if ((inst.Bits() & 0x00000070) ==
1788 : 0x00000000 /* op2(6:4)=000 */ &&
1789 : (inst.Bits() & 0x00000200) ==
1790 : 0x00000000 /* B(9)=0 */ &&
1791 : (inst.Bits() & 0x00600000) ==
1792 : 0x00200000 /* op(22:21)=01 */ &&
1793 : (inst.Bits() & 0x00020000) ==
1794 : 0x00020000 /* op1(19:16)=xx1x */ &&
1795 : (inst.Bits() & 0x0000FD00) ==
1796 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx111100x0xxxxxxxx */) {
1797 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1798 : }
1799 :
1800 : if ((inst.Bits() & 0x00000070) ==
1801 : 0x00000000 /* op2(6:4)=000 */ &&
1802 : (inst.Bits() & 0x00000200) ==
1803 : 0x00000000 /* B(9)=0 */ &&
1804 : (inst.Bits() & 0x00600000) ==
1805 : 0x00600000 /* op(22:21)=11 */ &&
1806 : (inst.Bits() & 0x0000FD00) ==
1807 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx111100x0xxxxxxxx */) {
1808 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1809 : }
1810 :
1811 : if ((inst.Bits() & 0x00000070) ==
1812 : 0x00000000 /* op2(6:4)=000 */ &&
1813 : (inst.Bits() & 0x00000200) ==
1814 : 0x00000000 /* B(9)=0 */ &&
1815 : (inst.Bits() & 0x00200000) ==
1816 : 0x00000000 /* op(22:21)=x0 */ &&
1817 : (inst.Bits() & 0x000F0D0F) ==
1818 0 : 0x000F0000 /* $pattern(31:0)=xxxxxxxxxxxx1111xxxx00x0xxxx0000 */) {
1819 0 : return Actual_MRS_cccc00010r001111dddd000000000000_case_1_instance_;
1820 : }
1821 :
1822 : if ((inst.Bits() & 0x00000070) ==
1823 : 0x00000000 /* op2(6:4)=000 */ &&
1824 : (inst.Bits() & 0x00000200) ==
1825 : 0x00000200 /* B(9)=1 */ &&
1826 : (inst.Bits() & 0x00200000) ==
1827 : 0x00000000 /* op(22:21)=x0 */ &&
1828 : (inst.Bits() & 0x00000C0F) ==
1829 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx00xxxxxx0000 */) {
1830 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1831 : }
1832 :
1833 : if ((inst.Bits() & 0x00000070) ==
1834 : 0x00000000 /* op2(6:4)=000 */ &&
1835 : (inst.Bits() & 0x00000200) ==
1836 : 0x00000200 /* B(9)=1 */ &&
1837 : (inst.Bits() & 0x00200000) ==
1838 : 0x00200000 /* op(22:21)=x1 */ &&
1839 : (inst.Bits() & 0x0000FC00) ==
1840 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx111100xxxxxxxxxx */) {
1841 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1842 : }
1843 :
1844 : if ((inst.Bits() & 0x00000070) ==
1845 : 0x00000010 /* op2(6:4)=001 */ &&
1846 : (inst.Bits() & 0x00600000) ==
1847 : 0x00200000 /* op(22:21)=01 */ &&
1848 : (inst.Bits() & 0x000FFF00) ==
1849 0 : 0x000FFF00 /* $pattern(31:0)=xxxxxxxxxxxx111111111111xxxxxxxx */) {
1850 0 : return Actual_Bx_cccc000100101111111111110001mmmm_case_1_instance_;
1851 : }
1852 :
1853 : if ((inst.Bits() & 0x00000070) ==
1854 : 0x00000010 /* op2(6:4)=001 */ &&
1855 : (inst.Bits() & 0x00600000) ==
1856 : 0x00600000 /* op(22:21)=11 */ &&
1857 : (inst.Bits() & 0x000F0F00) ==
1858 0 : 0x000F0F00 /* $pattern(31:0)=xxxxxxxxxxxx1111xxxx1111xxxxxxxx */) {
1859 0 : return Actual_CLZ_cccc000101101111dddd11110001mmmm_case_1_instance_;
1860 : }
1861 :
1862 : if ((inst.Bits() & 0x00000070) ==
1863 : 0x00000020 /* op2(6:4)=010 */ &&
1864 : (inst.Bits() & 0x00600000) ==
1865 : 0x00200000 /* op(22:21)=01 */ &&
1866 : (inst.Bits() & 0x000FFF00) ==
1867 0 : 0x000FFF00 /* $pattern(31:0)=xxxxxxxxxxxx111111111111xxxxxxxx */) {
1868 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1869 : }
1870 :
1871 : if ((inst.Bits() & 0x00000070) ==
1872 : 0x00000030 /* op2(6:4)=011 */ &&
1873 : (inst.Bits() & 0x00600000) ==
1874 : 0x00200000 /* op(22:21)=01 */ &&
1875 : (inst.Bits() & 0x000FFF00) ==
1876 0 : 0x000FFF00 /* $pattern(31:0)=xxxxxxxxxxxx111111111111xxxxxxxx */) {
1877 0 : return Actual_BLX_register_cccc000100101111111111110011mmmm_case_1_instance_;
1878 : }
1879 :
1880 : if ((inst.Bits() & 0x00000070) ==
1881 0 : 0x00000050 /* op2(6:4)=101 */) {
1882 0 : return decode_saturating_addition_and_subtraction(inst);
1883 : }
1884 :
1885 : if ((inst.Bits() & 0x00000070) ==
1886 : 0x00000060 /* op2(6:4)=110 */ &&
1887 : (inst.Bits() & 0x00600000) ==
1888 : 0x00600000 /* op(22:21)=11 */ &&
1889 : (inst.Bits() & 0x000FFF0F) ==
1890 0 : 0x0000000E /* $pattern(31:0)=xxxxxxxxxxxx000000000000xxxx1110 */) {
1891 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1892 : }
1893 :
1894 : if ((inst.Bits() & 0x00000070) ==
1895 : 0x00000070 /* op2(6:4)=111 */ &&
1896 : (inst.Bits() & 0x00600000) ==
1897 0 : 0x00200000 /* op(22:21)=01 */) {
1898 0 : return Actual_BKPT_cccc00010010iiiiiiiiiiii0111iiii_case_1_instance_;
1899 : }
1900 :
1901 : if ((inst.Bits() & 0x00000070) ==
1902 : 0x00000070 /* op2(6:4)=111 */ &&
1903 : (inst.Bits() & 0x00600000) ==
1904 0 : 0x00400000 /* op(22:21)=10 */) {
1905 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1906 : }
1907 :
1908 : if ((inst.Bits() & 0x00000070) ==
1909 : 0x00000070 /* op2(6:4)=111 */ &&
1910 : (inst.Bits() & 0x00600000) ==
1911 : 0x00600000 /* op(22:21)=11 */ &&
1912 : (inst.Bits() & 0x000FFF00) ==
1913 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxx000000000000xxxxxxxx */) {
1914 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1915 : }
1916 :
1917 0 : if (true) {
1918 0 : return Actual_Unnamed_case_1_instance_;
1919 : }
1920 :
1921 : // Catch any attempt to fall though ...
1922 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
1923 0 : }
1924 :
1925 : // Implementation of table: msr_immediate_and_hints.
1926 : // Specified by: See Section A5.2.11
1927 : const ClassDecoder& Arm32DecoderState::decode_msr_immediate_and_hints(
1928 : const Instruction inst) const
1929 0 : {
1930 : UNREFERENCED_PARAMETER(inst);
1931 : if ((inst.Bits() & 0x00400000) ==
1932 : 0x00000000 /* op(22)=0 */ &&
1933 : (inst.Bits() & 0x000F0000) ==
1934 : 0x00000000 /* op1(19:16)=0000 */ &&
1935 : (inst.Bits() & 0x000000FF) ==
1936 : 0x00000004 /* op2(7:0)=00000100 */ &&
1937 : (inst.Bits() & 0x0000FF00) ==
1938 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx11110000xxxxxxxx */) {
1939 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1940 : }
1941 :
1942 : if ((inst.Bits() & 0x00400000) ==
1943 : 0x00000000 /* op(22)=0 */ &&
1944 : (inst.Bits() & 0x000F0000) ==
1945 : 0x00000000 /* op1(19:16)=0000 */ &&
1946 : (inst.Bits() & 0x000000FE) ==
1947 : 0x00000000 /* op2(7:0)=0000000x */ &&
1948 : (inst.Bits() & 0x0000FF00) ==
1949 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx11110000xxxxxxxx */) {
1950 0 : return Actual_NOP_cccc0011001000001111000000000000_case_1_instance_;
1951 : }
1952 :
1953 : if ((inst.Bits() & 0x00400000) ==
1954 : 0x00000000 /* op(22)=0 */ &&
1955 : (inst.Bits() & 0x000F0000) ==
1956 : 0x00000000 /* op1(19:16)=0000 */ &&
1957 : (inst.Bits() & 0x000000FE) ==
1958 : 0x00000002 /* op2(7:0)=0000001x */ &&
1959 : (inst.Bits() & 0x0000FF00) ==
1960 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx11110000xxxxxxxx */) {
1961 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1962 : }
1963 :
1964 : if ((inst.Bits() & 0x00400000) ==
1965 : 0x00000000 /* op(22)=0 */ &&
1966 : (inst.Bits() & 0x000F0000) ==
1967 : 0x00000000 /* op1(19:16)=0000 */ &&
1968 : (inst.Bits() & 0x000000F0) ==
1969 : 0x000000F0 /* op2(7:0)=1111xxxx */ &&
1970 : (inst.Bits() & 0x0000FF00) ==
1971 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx11110000xxxxxxxx */) {
1972 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
1973 : }
1974 :
1975 : if ((inst.Bits() & 0x00400000) ==
1976 : 0x00000000 /* op(22)=0 */ &&
1977 : (inst.Bits() & 0x000F0000) ==
1978 : 0x00040000 /* op1(19:16)=0100 */ &&
1979 : (inst.Bits() & 0x0000F000) ==
1980 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx1111xxxxxxxxxxxx */) {
1981 0 : return Actual_MSR_immediate_cccc00110010mm001111iiiiiiiiiiii_case_1_instance_;
1982 : }
1983 :
1984 : if ((inst.Bits() & 0x00400000) ==
1985 : 0x00000000 /* op(22)=0 */ &&
1986 : (inst.Bits() & 0x000B0000) ==
1987 : 0x00080000 /* op1(19:16)=1x00 */ &&
1988 : (inst.Bits() & 0x0000F000) ==
1989 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx1111xxxxxxxxxxxx */) {
1990 0 : return Actual_MSR_immediate_cccc00110010mm001111iiiiiiiiiiii_case_1_instance_;
1991 : }
1992 :
1993 : if ((inst.Bits() & 0x00400000) ==
1994 : 0x00000000 /* op(22)=0 */ &&
1995 : (inst.Bits() & 0x00030000) ==
1996 : 0x00010000 /* op1(19:16)=xx01 */ &&
1997 : (inst.Bits() & 0x0000F000) ==
1998 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx1111xxxxxxxxxxxx */) {
1999 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
2000 : }
2001 :
2002 : if ((inst.Bits() & 0x00400000) ==
2003 : 0x00000000 /* op(22)=0 */ &&
2004 : (inst.Bits() & 0x00020000) ==
2005 : 0x00020000 /* op1(19:16)=xx1x */ &&
2006 : (inst.Bits() & 0x0000F000) ==
2007 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx1111xxxxxxxxxxxx */) {
2008 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
2009 : }
2010 :
2011 : if ((inst.Bits() & 0x00400000) ==
2012 : 0x00400000 /* op(22)=1 */ &&
2013 : (inst.Bits() & 0x0000F000) ==
2014 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx1111xxxxxxxxxxxx */) {
2015 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
2016 : }
2017 :
2018 0 : if (true) {
2019 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
2020 : }
2021 :
2022 : // Catch any attempt to fall though ...
2023 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
2024 0 : }
2025 :
2026 : // Implementation of table: multiply_and_multiply_accumulate.
2027 : // Specified by: See Section A5.2.5
2028 : const ClassDecoder& Arm32DecoderState::decode_multiply_and_multiply_accumulate(
2029 : const Instruction inst) const
2030 0 : {
2031 : UNREFERENCED_PARAMETER(inst);
2032 : if ((inst.Bits() & 0x00F00000) ==
2033 0 : 0x00400000 /* op(23:20)=0100 */) {
2034 0 : return Actual_SMLALBB_SMLALBT_SMLALTB_SMLALTT_cccc00010100hhhhllllmmmm1xx0nnnn_case_1_instance_;
2035 : }
2036 :
2037 : if ((inst.Bits() & 0x00F00000) ==
2038 0 : 0x00600000 /* op(23:20)=0110 */) {
2039 0 : return Actual_MLS_A1_cccc00000110ddddaaaammmm1001nnnn_case_1_instance_;
2040 : }
2041 :
2042 : if ((inst.Bits() & 0x00D00000) ==
2043 0 : 0x00500000 /* op(23:20)=01x1 */) {
2044 0 : return Actual_Unnamed_case_1_instance_;
2045 : }
2046 :
2047 : if ((inst.Bits() & 0x00E00000) ==
2048 : 0x00000000 /* op(23:20)=000x */ &&
2049 : (inst.Bits() & 0x0000F000) ==
2050 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx0000xxxxxxxxxxxx */) {
2051 0 : return Actual_MUL_A1_cccc0000000sdddd0000mmmm1001nnnn_case_1_instance_;
2052 : }
2053 :
2054 : if ((inst.Bits() & 0x00E00000) ==
2055 0 : 0x00200000 /* op(23:20)=001x */) {
2056 0 : return Actual_MLA_A1_cccc0000001sddddaaaammmm1001nnnn_case_1_instance_;
2057 : }
2058 :
2059 : if ((inst.Bits() & 0x00A00000) ==
2060 0 : 0x00800000 /* op(23:20)=1x0x */) {
2061 0 : return Actual_SMULL_A1_cccc0000110shhhhllllmmmm1001nnnn_case_1_instance_;
2062 : }
2063 :
2064 : if ((inst.Bits() & 0x00A00000) ==
2065 0 : 0x00A00000 /* op(23:20)=1x1x */) {
2066 0 : return Actual_SMLAL_A1_cccc0000111shhhhllllmmmm1001nnnn_case_1_instance_;
2067 : }
2068 :
2069 : // Catch any attempt to fall though ...
2070 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
2071 0 : }
2072 :
2073 : // Implementation of table: other_floating_point_data_processing_instructions.
2074 : // Specified by: A7.5 Table A7 - 17
2075 : const ClassDecoder& Arm32DecoderState::decode_other_floating_point_data_processing_instructions(
2076 : const Instruction inst) const
2077 0 : {
2078 : UNREFERENCED_PARAMETER(inst);
2079 : if ((inst.Bits() & 0x000F0000) ==
2080 : 0x00010000 /* opc2(19:16)=0001 */ &&
2081 : (inst.Bits() & 0x00000040) ==
2082 0 : 0x00000040 /* opc3(7:6)=x1 */) {
2083 0 : return Actual_VABS_cccc11101d110000dddd101s11m0mmmm_case_1_instance_;
2084 : }
2085 :
2086 : if ((inst.Bits() & 0x000F0000) ==
2087 : 0x00050000 /* opc2(19:16)=0101 */ &&
2088 : (inst.Bits() & 0x00000040) ==
2089 : 0x00000040 /* opc3(7:6)=x1 */ &&
2090 : (inst.Bits() & 0x0000002F) ==
2091 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxxxxxxxx0x0000 */) {
2092 0 : return Actual_VABS_cccc11101d110000dddd101s11m0mmmm_case_1_instance_;
2093 : }
2094 :
2095 : if ((inst.Bits() & 0x000F0000) ==
2096 : 0x00070000 /* opc2(19:16)=0111 */ &&
2097 : (inst.Bits() & 0x000000C0) ==
2098 0 : 0x000000C0 /* opc3(7:6)=11 */) {
2099 0 : return Actual_VABS_cccc11101d110000dddd101s11m0mmmm_case_1_instance_;
2100 : }
2101 :
2102 : if ((inst.Bits() & 0x000F0000) ==
2103 : 0x00080000 /* opc2(19:16)=1000 */ &&
2104 : (inst.Bits() & 0x00000040) ==
2105 0 : 0x00000040 /* opc3(7:6)=x1 */) {
2106 0 : return Actual_VCVT_VCVTR_between_floating_point_and_integer_Floating_point_cccc11101d111ooodddd101sp1m0mmmm_case_1_instance_;
2107 : }
2108 :
2109 : if ((inst.Bits() & 0x000B0000) ==
2110 : 0x00000000 /* opc2(19:16)=0x00 */ &&
2111 : (inst.Bits() & 0x00000040) ==
2112 0 : 0x00000040 /* opc3(7:6)=x1 */) {
2113 0 : return Actual_VABS_cccc11101d110000dddd101s11m0mmmm_case_1_instance_;
2114 : }
2115 :
2116 : if ((inst.Bits() & 0x000E0000) ==
2117 : 0x00020000 /* opc2(19:16)=001x */ &&
2118 : (inst.Bits() & 0x00000040) ==
2119 : 0x00000040 /* opc3(7:6)=x1 */ &&
2120 : (inst.Bits() & 0x00000100) ==
2121 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxxxxx0xxxxxxxx */) {
2122 0 : return Actual_VABS_cccc11101d110000dddd101s11m0mmmm_case_1_instance_;
2123 : }
2124 :
2125 : if ((inst.Bits() & 0x000E0000) ==
2126 : 0x000C0000 /* opc2(19:16)=110x */ &&
2127 : (inst.Bits() & 0x00000040) ==
2128 0 : 0x00000040 /* opc3(7:6)=x1 */) {
2129 0 : return Actual_VCVT_VCVTR_between_floating_point_and_integer_Floating_point_cccc11101d111ooodddd101sp1m0mmmm_case_1_instance_;
2130 : }
2131 :
2132 : if ((inst.Bits() & 0x000A0000) ==
2133 : 0x000A0000 /* opc2(19:16)=1x1x */ &&
2134 : (inst.Bits() & 0x00000040) ==
2135 0 : 0x00000040 /* opc3(7:6)=x1 */) {
2136 0 : return Actual_VCVT_between_floating_point_and_fixed_point_Floating_point_cccc11101d111o1udddd101fx1i0iiii_case_1_instance_;
2137 : }
2138 :
2139 : if ((inst.Bits() & 0x00000040) ==
2140 : 0x00000000 /* opc3(7:6)=x0 */ &&
2141 : (inst.Bits() & 0x000000A0) ==
2142 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxxxxxx0x0xxxxx */) {
2143 0 : return Actual_VABS_cccc11101d110000dddd101s11m0mmmm_case_1_instance_;
2144 : }
2145 :
2146 : // Catch any attempt to fall though ...
2147 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
2148 0 : }
2149 :
2150 : // Implementation of table: packing_unpacking_saturation_and_reversal.
2151 : // Specified by: See Section A5.4.3
2152 : const ClassDecoder& Arm32DecoderState::decode_packing_unpacking_saturation_and_reversal(
2153 : const Instruction inst) const
2154 0 : {
2155 : UNREFERENCED_PARAMETER(inst);
2156 : if ((inst.Bits() & 0x00700000) ==
2157 : 0x00000000 /* op1(22:20)=000 */ &&
2158 : (inst.Bits() & 0x000000E0) ==
2159 : 0x000000A0 /* op2(7:5)=101 */ &&
2160 : (inst.Bits() & 0x00000F00) ==
2161 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
2162 0 : return Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_;
2163 : }
2164 :
2165 : if ((inst.Bits() & 0x00700000) ==
2166 : 0x00000000 /* op1(22:20)=000 */ &&
2167 : (inst.Bits() & 0x00000020) ==
2168 0 : 0x00000000 /* op2(7:5)=xx0 */) {
2169 0 : return Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_;
2170 : }
2171 :
2172 : if ((inst.Bits() & 0x00300000) ==
2173 : 0x00200000 /* op1(22:20)=x10 */ &&
2174 : (inst.Bits() & 0x000000E0) ==
2175 : 0x00000020 /* op2(7:5)=001 */ &&
2176 : (inst.Bits() & 0x00000F00) ==
2177 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
2178 0 : return Actual_CLZ_cccc000101101111dddd11110001mmmm_case_1_instance_;
2179 : }
2180 :
2181 : if ((inst.Bits() & 0x00300000) ==
2182 : 0x00300000 /* op1(22:20)=x11 */ &&
2183 : (inst.Bits() & 0x000000E0) ==
2184 : 0x00000060 /* op2(7:5)=011 */ &&
2185 : (inst.Bits() & 0x000F0000) !=
2186 : 0x000F0000 /* A(19:16)=~1111 */ &&
2187 : (inst.Bits() & 0x00000300) ==
2188 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxxxx00xxxxxxxx */) {
2189 0 : return Actual_SXTAB16_cccc01101000nnnnddddrr000111mmmm_case_1_instance_;
2190 : }
2191 :
2192 : if ((inst.Bits() & 0x00300000) ==
2193 : 0x00300000 /* op1(22:20)=x11 */ &&
2194 : (inst.Bits() & 0x000000E0) ==
2195 : 0x00000060 /* op2(7:5)=011 */ &&
2196 : (inst.Bits() & 0x000F0000) ==
2197 : 0x000F0000 /* A(19:16)=1111 */ &&
2198 : (inst.Bits() & 0x00000300) ==
2199 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxxxx00xxxxxxxx */) {
2200 0 : return Actual_CLZ_cccc000101101111dddd11110001mmmm_case_1_instance_;
2201 : }
2202 :
2203 : if ((inst.Bits() & 0x00300000) ==
2204 : 0x00300000 /* op1(22:20)=x11 */ &&
2205 : (inst.Bits() & 0x00000060) ==
2206 : 0x00000020 /* op2(7:5)=x01 */ &&
2207 : (inst.Bits() & 0x000F0F00) ==
2208 0 : 0x000F0F00 /* $pattern(31:0)=xxxxxxxxxxxx1111xxxx1111xxxxxxxx */) {
2209 0 : return Actual_CLZ_cccc000101101111dddd11110001mmmm_case_1_instance_;
2210 : }
2211 :
2212 : if ((inst.Bits() & 0x00100000) ==
2213 : 0x00000000 /* op1(22:20)=xx0 */ &&
2214 : (inst.Bits() & 0x000000E0) ==
2215 : 0x00000060 /* op2(7:5)=011 */ &&
2216 : (inst.Bits() & 0x000F0000) !=
2217 : 0x000F0000 /* A(19:16)=~1111 */ &&
2218 : (inst.Bits() & 0x00000300) ==
2219 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxxxx00xxxxxxxx */) {
2220 0 : return Actual_SXTAB16_cccc01101000nnnnddddrr000111mmmm_case_1_instance_;
2221 : }
2222 :
2223 : if ((inst.Bits() & 0x00100000) ==
2224 : 0x00000000 /* op1(22:20)=xx0 */ &&
2225 : (inst.Bits() & 0x000000E0) ==
2226 : 0x00000060 /* op2(7:5)=011 */ &&
2227 : (inst.Bits() & 0x000F0000) ==
2228 : 0x000F0000 /* A(19:16)=1111 */ &&
2229 : (inst.Bits() & 0x00000300) ==
2230 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxxxx00xxxxxxxx */) {
2231 0 : return Actual_CLZ_cccc000101101111dddd11110001mmmm_case_1_instance_;
2232 : }
2233 :
2234 : if ((inst.Bits() & 0x00200000) ==
2235 : 0x00200000 /* op1(22:20)=x1x */ &&
2236 : (inst.Bits() & 0x00000020) ==
2237 0 : 0x00000000 /* op2(7:5)=xx0 */) {
2238 0 : return Actual_CLZ_cccc000101101111dddd11110001mmmm_case_1_instance_;
2239 : }
2240 :
2241 0 : if (true) {
2242 0 : return Actual_Unnamed_case_1_instance_;
2243 : }
2244 :
2245 : // Catch any attempt to fall though ...
2246 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
2247 0 : }
2248 :
2249 : // Implementation of table: parallel_addition_and_subtraction_signed.
2250 : // Specified by: See Section A5.4.1
2251 : const ClassDecoder& Arm32DecoderState::decode_parallel_addition_and_subtraction_signed(
2252 : const Instruction inst) const
2253 0 : {
2254 : UNREFERENCED_PARAMETER(inst);
2255 : if ((inst.Bits() & 0x00300000) ==
2256 : 0x00200000 /* op1(21:20)=10 */ &&
2257 : (inst.Bits() & 0x000000E0) ==
2258 : 0x00000080 /* op2(7:5)=100 */ &&
2259 : (inst.Bits() & 0x00000F00) ==
2260 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
2261 0 : return Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_;
2262 : }
2263 :
2264 : if ((inst.Bits() & 0x00300000) ==
2265 : 0x00200000 /* op1(21:20)=10 */ &&
2266 : (inst.Bits() & 0x000000E0) ==
2267 : 0x000000E0 /* op2(7:5)=111 */ &&
2268 : (inst.Bits() & 0x00000F00) ==
2269 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
2270 0 : return Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_;
2271 : }
2272 :
2273 : if ((inst.Bits() & 0x00300000) ==
2274 : 0x00200000 /* op1(21:20)=10 */ &&
2275 : (inst.Bits() & 0x00000080) ==
2276 : 0x00000000 /* op2(7:5)=0xx */ &&
2277 : (inst.Bits() & 0x00000F00) ==
2278 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
2279 0 : return Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_;
2280 : }
2281 :
2282 : if ((inst.Bits() & 0x00100000) ==
2283 : 0x00100000 /* op1(21:20)=x1 */ &&
2284 : (inst.Bits() & 0x000000E0) ==
2285 : 0x00000080 /* op2(7:5)=100 */ &&
2286 : (inst.Bits() & 0x00000F00) ==
2287 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
2288 0 : return Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_;
2289 : }
2290 :
2291 : if ((inst.Bits() & 0x00100000) ==
2292 : 0x00100000 /* op1(21:20)=x1 */ &&
2293 : (inst.Bits() & 0x000000E0) ==
2294 : 0x000000E0 /* op2(7:5)=111 */ &&
2295 : (inst.Bits() & 0x00000F00) ==
2296 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
2297 0 : return Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_;
2298 : }
2299 :
2300 : if ((inst.Bits() & 0x00100000) ==
2301 : 0x00100000 /* op1(21:20)=x1 */ &&
2302 : (inst.Bits() & 0x00000080) ==
2303 : 0x00000000 /* op2(7:5)=0xx */ &&
2304 : (inst.Bits() & 0x00000F00) ==
2305 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
2306 0 : return Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_;
2307 : }
2308 :
2309 0 : if (true) {
2310 0 : return Actual_Unnamed_case_1_instance_;
2311 : }
2312 :
2313 : // Catch any attempt to fall though ...
2314 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
2315 0 : }
2316 :
2317 : // Implementation of table: parallel_addition_and_subtraction_unsigned.
2318 : // Specified by: See Section A5.4.2
2319 : const ClassDecoder& Arm32DecoderState::decode_parallel_addition_and_subtraction_unsigned(
2320 : const Instruction inst) const
2321 0 : {
2322 : UNREFERENCED_PARAMETER(inst);
2323 : if ((inst.Bits() & 0x00300000) ==
2324 : 0x00200000 /* op1(21:20)=10 */ &&
2325 : (inst.Bits() & 0x000000E0) ==
2326 : 0x00000080 /* op2(7:5)=100 */ &&
2327 : (inst.Bits() & 0x00000F00) ==
2328 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
2329 0 : return Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_;
2330 : }
2331 :
2332 : if ((inst.Bits() & 0x00300000) ==
2333 : 0x00200000 /* op1(21:20)=10 */ &&
2334 : (inst.Bits() & 0x000000E0) ==
2335 : 0x000000E0 /* op2(7:5)=111 */ &&
2336 : (inst.Bits() & 0x00000F00) ==
2337 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
2338 0 : return Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_;
2339 : }
2340 :
2341 : if ((inst.Bits() & 0x00300000) ==
2342 : 0x00200000 /* op1(21:20)=10 */ &&
2343 : (inst.Bits() & 0x00000080) ==
2344 : 0x00000000 /* op2(7:5)=0xx */ &&
2345 : (inst.Bits() & 0x00000F00) ==
2346 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
2347 0 : return Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_;
2348 : }
2349 :
2350 : if ((inst.Bits() & 0x00100000) ==
2351 : 0x00100000 /* op1(21:20)=x1 */ &&
2352 : (inst.Bits() & 0x000000E0) ==
2353 : 0x00000080 /* op2(7:5)=100 */ &&
2354 : (inst.Bits() & 0x00000F00) ==
2355 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
2356 0 : return Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_;
2357 : }
2358 :
2359 : if ((inst.Bits() & 0x00100000) ==
2360 : 0x00100000 /* op1(21:20)=x1 */ &&
2361 : (inst.Bits() & 0x000000E0) ==
2362 : 0x000000E0 /* op2(7:5)=111 */ &&
2363 : (inst.Bits() & 0x00000F00) ==
2364 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
2365 0 : return Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_;
2366 : }
2367 :
2368 : if ((inst.Bits() & 0x00100000) ==
2369 : 0x00100000 /* op1(21:20)=x1 */ &&
2370 : (inst.Bits() & 0x00000080) ==
2371 : 0x00000000 /* op2(7:5)=0xx */ &&
2372 : (inst.Bits() & 0x00000F00) ==
2373 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
2374 0 : return Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_;
2375 : }
2376 :
2377 0 : if (true) {
2378 0 : return Actual_Unnamed_case_1_instance_;
2379 : }
2380 :
2381 : // Catch any attempt to fall though ...
2382 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
2383 0 : }
2384 :
2385 : // Implementation of table: saturating_addition_and_subtraction.
2386 : // Specified by: See Section A5.2.6
2387 : const ClassDecoder& Arm32DecoderState::decode_saturating_addition_and_subtraction(
2388 : const Instruction inst) const
2389 0 : {
2390 : UNREFERENCED_PARAMETER(inst);
2391 : if ((inst.Bits() & 0x00000F00) ==
2392 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx0000xxxxxxxx */) {
2393 0 : return Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_;
2394 : }
2395 :
2396 : // Catch any attempt to fall though ...
2397 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
2398 0 : }
2399 :
2400 : // Implementation of table: signed_multiply_signed_and_unsigned_divide.
2401 : // Specified by: See Section A5.4.4
2402 : const ClassDecoder& Arm32DecoderState::decode_signed_multiply_signed_and_unsigned_divide(
2403 : const Instruction inst) const
2404 0 : {
2405 : UNREFERENCED_PARAMETER(inst);
2406 : if ((inst.Bits() & 0x00700000) ==
2407 : 0x00000000 /* op1(22:20)=000 */ &&
2408 : (inst.Bits() & 0x00000080) ==
2409 : 0x00000000 /* op2(7:5)=0xx */ &&
2410 : (inst.Bits() & 0x0000F000) !=
2411 0 : 0x0000F000 /* A(15:12)=~1111 */) {
2412 0 : return Actual_SMLAD_cccc01110000ddddaaaammmm00m1nnnn_case_1_instance_;
2413 : }
2414 :
2415 : if ((inst.Bits() & 0x00700000) ==
2416 : 0x00000000 /* op1(22:20)=000 */ &&
2417 : (inst.Bits() & 0x00000080) ==
2418 : 0x00000000 /* op2(7:5)=0xx */ &&
2419 : (inst.Bits() & 0x0000F000) ==
2420 0 : 0x0000F000 /* A(15:12)=1111 */) {
2421 0 : return Actual_SDIV_cccc01110001dddd1111mmmm0001nnnn_case_1_instance_;
2422 : }
2423 :
2424 : if ((inst.Bits() & 0x00700000) ==
2425 : 0x00400000 /* op1(22:20)=100 */ &&
2426 : (inst.Bits() & 0x00000080) ==
2427 0 : 0x00000000 /* op2(7:5)=0xx */) {
2428 0 : return Actual_SMLALD_cccc01110100hhhhllllmmmm00m1nnnn_case_1_instance_;
2429 : }
2430 :
2431 : if ((inst.Bits() & 0x00700000) ==
2432 : 0x00500000 /* op1(22:20)=101 */ &&
2433 : (inst.Bits() & 0x000000C0) ==
2434 : 0x00000000 /* op2(7:5)=00x */ &&
2435 : (inst.Bits() & 0x0000F000) !=
2436 0 : 0x0000F000 /* A(15:12)=~1111 */) {
2437 0 : return Actual_SMLAD_cccc01110000ddddaaaammmm00m1nnnn_case_1_instance_;
2438 : }
2439 :
2440 : if ((inst.Bits() & 0x00700000) ==
2441 : 0x00500000 /* op1(22:20)=101 */ &&
2442 : (inst.Bits() & 0x000000C0) ==
2443 : 0x00000000 /* op2(7:5)=00x */ &&
2444 : (inst.Bits() & 0x0000F000) ==
2445 0 : 0x0000F000 /* A(15:12)=1111 */) {
2446 0 : return Actual_SDIV_cccc01110001dddd1111mmmm0001nnnn_case_1_instance_;
2447 : }
2448 :
2449 : if ((inst.Bits() & 0x00700000) ==
2450 : 0x00500000 /* op1(22:20)=101 */ &&
2451 : (inst.Bits() & 0x000000C0) ==
2452 0 : 0x000000C0 /* op2(7:5)=11x */) {
2453 0 : return Actual_SMLAD_cccc01110000ddddaaaammmm00m1nnnn_case_1_instance_;
2454 : }
2455 :
2456 : if ((inst.Bits() & 0x00500000) ==
2457 : 0x00100000 /* op1(22:20)=0x1 */ &&
2458 : (inst.Bits() & 0x000000E0) ==
2459 : 0x00000000 /* op2(7:5)=000 */ &&
2460 : (inst.Bits() & 0x0000F000) ==
2461 0 : 0x0000F000 /* $pattern(31:0)=xxxxxxxxxxxxxxxx1111xxxxxxxxxxxx */) {
2462 0 : return Actual_SDIV_cccc01110001dddd1111mmmm0001nnnn_case_1_instance_;
2463 : }
2464 :
2465 0 : if (true) {
2466 0 : return Actual_Unnamed_case_1_instance_;
2467 : }
2468 :
2469 : // Catch any attempt to fall though ...
2470 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
2471 0 : }
2472 :
2473 : // Implementation of table: simd_dp_1imm.
2474 : // Specified by: See Section A7.4.6
2475 : const ClassDecoder& Arm32DecoderState::decode_simd_dp_1imm(
2476 : const Instruction inst) const
2477 0 : {
2478 : UNREFERENCED_PARAMETER(inst);
2479 : if ((inst.Bits() & 0x00000D00) ==
2480 0 : 0x00000900 /* cmode(11:8)=10x1 */) {
2481 0 : return Actual_VBIC_immediate_1111001i1d000mmmddddcccc0q11mmmm_case_1_instance_;
2482 : }
2483 :
2484 : if ((inst.Bits() & 0x00000900) ==
2485 0 : 0x00000100 /* cmode(11:8)=0xx1 */) {
2486 0 : return Actual_VBIC_immediate_1111001i1d000mmmddddcccc0q11mmmm_case_1_instance_;
2487 : }
2488 :
2489 : if ((inst.Bits() & 0x00000020) ==
2490 : 0x00000000 /* op(5)=0 */ &&
2491 : (inst.Bits() & 0x00000D00) ==
2492 0 : 0x00000800 /* cmode(11:8)=10x0 */) {
2493 0 : return Actual_VMOV_immediate_A1_1111001m1d000mmmddddcccc0qp1mmmm_case_1_instance_;
2494 : }
2495 :
2496 : if ((inst.Bits() & 0x00000020) ==
2497 : 0x00000000 /* op(5)=0 */ &&
2498 : (inst.Bits() & 0x00000900) ==
2499 0 : 0x00000000 /* cmode(11:8)=0xx0 */) {
2500 0 : return Actual_VMOV_immediate_A1_1111001m1d000mmmddddcccc0qp1mmmm_case_1_instance_;
2501 : }
2502 :
2503 : if ((inst.Bits() & 0x00000020) ==
2504 : 0x00000000 /* op(5)=0 */ &&
2505 : (inst.Bits() & 0x00000C00) ==
2506 0 : 0x00000C00 /* cmode(11:8)=11xx */) {
2507 0 : return Actual_VMOV_immediate_A1_1111001m1d000mmmddddcccc0qp1mmmm_case_1_instance_;
2508 : }
2509 :
2510 : if ((inst.Bits() & 0x00000020) ==
2511 : 0x00000020 /* op(5)=1 */ &&
2512 : (inst.Bits() & 0x00000F00) ==
2513 0 : 0x00000E00 /* cmode(11:8)=1110 */) {
2514 0 : return Actual_VMOV_immediate_A1_1111001m1d000mmmddddcccc0qp1mmmm_case_1_instance_;
2515 : }
2516 :
2517 : if ((inst.Bits() & 0x00000020) ==
2518 : 0x00000020 /* op(5)=1 */ &&
2519 : (inst.Bits() & 0x00000F00) ==
2520 0 : 0x00000F00 /* cmode(11:8)=1111 */) {
2521 0 : return Actual_Unnamed_case_1_instance_;
2522 : }
2523 :
2524 : if ((inst.Bits() & 0x00000020) ==
2525 : 0x00000020 /* op(5)=1 */ &&
2526 : (inst.Bits() & 0x00000D00) ==
2527 0 : 0x00000800 /* cmode(11:8)=10x0 */) {
2528 0 : return Actual_VMVN_immediate_1111001i1d000mmmddddcccc0q11mmmm_case_1_instance_;
2529 : }
2530 :
2531 : if ((inst.Bits() & 0x00000020) ==
2532 : 0x00000020 /* op(5)=1 */ &&
2533 : (inst.Bits() & 0x00000E00) ==
2534 0 : 0x00000C00 /* cmode(11:8)=110x */) {
2535 0 : return Actual_VMVN_immediate_1111001i1d000mmmddddcccc0q11mmmm_case_1_instance_;
2536 : }
2537 :
2538 : if ((inst.Bits() & 0x00000020) ==
2539 : 0x00000020 /* op(5)=1 */ &&
2540 : (inst.Bits() & 0x00000900) ==
2541 0 : 0x00000000 /* cmode(11:8)=0xx0 */) {
2542 0 : return Actual_VMVN_immediate_1111001i1d000mmmddddcccc0q11mmmm_case_1_instance_;
2543 : }
2544 :
2545 : // Catch any attempt to fall though ...
2546 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
2547 0 : }
2548 :
2549 : // Implementation of table: simd_dp_2misc.
2550 : // Specified by: See Section A7.4.5
2551 : const ClassDecoder& Arm32DecoderState::decode_simd_dp_2misc(
2552 : const Instruction inst) const
2553 0 : {
2554 : UNREFERENCED_PARAMETER(inst);
2555 : if ((inst.Bits() & 0x00030000) ==
2556 : 0x00000000 /* A(17:16)=00 */ &&
2557 : (inst.Bits() & 0x00000780) ==
2558 0 : 0x00000100 /* B(10:6)=0010x */) {
2559 0 : return Actual_VREV16_111100111d11ss00dddd000ppqm0mmmm_case_1_instance_;
2560 : }
2561 :
2562 : if ((inst.Bits() & 0x00030000) ==
2563 : 0x00000000 /* A(17:16)=00 */ &&
2564 : (inst.Bits() & 0x00000700) ==
2565 0 : 0x00000000 /* B(10:6)=000xx */) {
2566 0 : return Actual_VREV16_111100111d11ss00dddd000ppqm0mmmm_case_1_instance_;
2567 : }
2568 :
2569 : if ((inst.Bits() & 0x00030000) ==
2570 : 0x00000000 /* A(17:16)=00 */ &&
2571 : (inst.Bits() & 0x00000700) ==
2572 0 : 0x00000400 /* B(10:6)=100xx */) {
2573 0 : return Actual_VABS_A1_111100111d11ss01dddd0f110qm0mmmm_case_1_instance_;
2574 : }
2575 :
2576 : if ((inst.Bits() & 0x00030000) ==
2577 : 0x00000000 /* A(17:16)=00 */ &&
2578 : (inst.Bits() & 0x00000700) ==
2579 0 : 0x00000500 /* B(10:6)=101xx */) {
2580 0 : return Actual_VCNT_111100111d11ss00dddd01010qm0mmmm_case_1_instance_;
2581 : }
2582 :
2583 : if ((inst.Bits() & 0x00030000) ==
2584 : 0x00000000 /* A(17:16)=00 */ &&
2585 : (inst.Bits() & 0x00000700) ==
2586 0 : 0x00000700 /* B(10:6)=111xx */) {
2587 0 : return Actual_VABS_A1_111100111d11ss01dddd0f110qm0mmmm_case_1_instance_;
2588 : }
2589 :
2590 : if ((inst.Bits() & 0x00030000) ==
2591 : 0x00000000 /* A(17:16)=00 */ &&
2592 : (inst.Bits() & 0x00000300) ==
2593 0 : 0x00000200 /* B(10:6)=x10xx */) {
2594 0 : return Actual_VABS_A1_111100111d11ss01dddd0f110qm0mmmm_case_1_instance_;
2595 : }
2596 :
2597 : if ((inst.Bits() & 0x00030000) ==
2598 : 0x00010000 /* A(17:16)=01 */ &&
2599 : (inst.Bits() & 0x00000780) ==
2600 0 : 0x00000380 /* B(10:6)=0111x */) {
2601 0 : return Actual_VABS_A1_111100111d11ss01dddd0f110qm0mmmm_case_1_instance_;
2602 : }
2603 :
2604 : if ((inst.Bits() & 0x00030000) ==
2605 : 0x00010000 /* A(17:16)=01 */ &&
2606 : (inst.Bits() & 0x00000780) ==
2607 0 : 0x00000780 /* B(10:6)=1111x */) {
2608 0 : return Actual_VABS_A1_111100111d11ss01dddd0f110qm0mmmm_case_2_instance_;
2609 : }
2610 :
2611 : if ((inst.Bits() & 0x00030000) ==
2612 : 0x00010000 /* A(17:16)=01 */ &&
2613 : (inst.Bits() & 0x00000680) ==
2614 0 : 0x00000200 /* B(10:6)=01x0x */) {
2615 0 : return Actual_VABS_A1_111100111d11ss01dddd0f110qm0mmmm_case_1_instance_;
2616 : }
2617 :
2618 : if ((inst.Bits() & 0x00030000) ==
2619 : 0x00010000 /* A(17:16)=01 */ &&
2620 : (inst.Bits() & 0x00000680) ==
2621 0 : 0x00000600 /* B(10:6)=11x0x */) {
2622 0 : return Actual_VABS_A1_111100111d11ss01dddd0f110qm0mmmm_case_2_instance_;
2623 : }
2624 :
2625 : if ((inst.Bits() & 0x00030000) ==
2626 : 0x00010000 /* A(17:16)=01 */ &&
2627 : (inst.Bits() & 0x00000600) ==
2628 0 : 0x00000000 /* B(10:6)=00xxx */) {
2629 0 : return Actual_VABS_A1_111100111d11ss01dddd0f110qm0mmmm_case_1_instance_;
2630 : }
2631 :
2632 : if ((inst.Bits() & 0x00030000) ==
2633 : 0x00010000 /* A(17:16)=01 */ &&
2634 : (inst.Bits() & 0x00000600) ==
2635 0 : 0x00000400 /* B(10:6)=10xxx */) {
2636 0 : return Actual_VABS_A1_111100111d11ss01dddd0f110qm0mmmm_case_2_instance_;
2637 : }
2638 :
2639 : if ((inst.Bits() & 0x00030000) ==
2640 : 0x00020000 /* A(17:16)=10 */ &&
2641 : (inst.Bits() & 0x000007C0) ==
2642 0 : 0x00000200 /* B(10:6)=01000 */) {
2643 0 : return Actual_VMOVN_111100111d11ss10dddd001000m0mmmm_case_1_instance_;
2644 : }
2645 :
2646 : if ((inst.Bits() & 0x00030000) ==
2647 : 0x00020000 /* A(17:16)=10 */ &&
2648 : (inst.Bits() & 0x000007C0) ==
2649 0 : 0x00000240 /* B(10:6)=01001 */) {
2650 0 : return Actual_VQMOVN_111100111d11ss10dddd0010ppm0mmmm_case_1_instance_;
2651 : }
2652 :
2653 : if ((inst.Bits() & 0x00030000) ==
2654 : 0x00020000 /* A(17:16)=10 */ &&
2655 : (inst.Bits() & 0x000007C0) ==
2656 0 : 0x00000300 /* B(10:6)=01100 */) {
2657 0 : return Actual_VSHLL_A2_111100111d11ss10dddd001100m0mmmm_case_1_instance_;
2658 : }
2659 :
2660 : if ((inst.Bits() & 0x00030000) ==
2661 : 0x00020000 /* A(17:16)=10 */ &&
2662 : (inst.Bits() & 0x000006C0) ==
2663 0 : 0x00000600 /* B(10:6)=11x00 */) {
2664 0 : return Actual_CVT_between_half_precision_and_single_precision_111100111d11ss10dddd011p00m0mmmm_case_1_instance_;
2665 : }
2666 :
2667 : if ((inst.Bits() & 0x00030000) ==
2668 : 0x00020000 /* A(17:16)=10 */ &&
2669 : (inst.Bits() & 0x00000780) ==
2670 0 : 0x00000000 /* B(10:6)=0000x */) {
2671 0 : return Actual_VSWP_111100111d11ss10dddd00000qm0mmmm_case_1_instance_;
2672 : }
2673 :
2674 : if ((inst.Bits() & 0x00030000) ==
2675 : 0x00020000 /* A(17:16)=10 */ &&
2676 : (inst.Bits() & 0x00000780) ==
2677 0 : 0x00000080 /* B(10:6)=0001x */) {
2678 0 : return Actual_VTRN_111100111d11ss10dddd00001qm0mmmm_case_1_instance_;
2679 : }
2680 :
2681 : if ((inst.Bits() & 0x00030000) ==
2682 : 0x00020000 /* A(17:16)=10 */ &&
2683 : (inst.Bits() & 0x00000780) ==
2684 0 : 0x00000280 /* B(10:6)=0101x */) {
2685 0 : return Actual_VQMOVN_111100111d11ss10dddd0010ppm0mmmm_case_1_instance_;
2686 : }
2687 :
2688 : if ((inst.Bits() & 0x00030000) ==
2689 : 0x00020000 /* A(17:16)=10 */ &&
2690 : (inst.Bits() & 0x00000700) ==
2691 0 : 0x00000100 /* B(10:6)=001xx */) {
2692 0 : return Actual_VUZP_111100111d11ss10dddd00010qm0mmmm_case_1_instance_;
2693 : }
2694 :
2695 : if ((inst.Bits() & 0x00030000) ==
2696 : 0x00030000 /* A(17:16)=11 */ &&
2697 : (inst.Bits() & 0x00000400) ==
2698 0 : 0x00000400 /* B(10:6)=1xxxx */) {
2699 0 : return Actual_VABS_A1_111100111d11ss01dddd0f110qm0mmmm_case_2_instance_;
2700 : }
2701 :
2702 0 : if (true) {
2703 0 : return Actual_Unnamed_case_1_instance_;
2704 : }
2705 :
2706 : // Catch any attempt to fall though ...
2707 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
2708 0 : }
2709 :
2710 : // Implementation of table: simd_dp_2scalar.
2711 : // Specified by: See Section A7.4.3
2712 : const ClassDecoder& Arm32DecoderState::decode_simd_dp_2scalar(
2713 : const Instruction inst) const
2714 0 : {
2715 : UNREFERENCED_PARAMETER(inst);
2716 : if ((inst.Bits() & 0x00000F00) ==
2717 0 : 0x00000900 /* A(11:8)=1001 */) {
2718 0 : return Actual_VMLA_by_scalar_A1_1111001q1dssnnnndddd0p0fn1m0mmmm_case_1_instance_;
2719 : }
2720 :
2721 : if ((inst.Bits() & 0x00000F00) ==
2722 0 : 0x00000A00 /* A(11:8)=1010 */) {
2723 0 : return Actual_VMLAL_by_scalar_A2_1111001u1dssnnnndddd0p10n1m0mmmm_case_1_instance_;
2724 : }
2725 :
2726 : if ((inst.Bits() & 0x00000F00) ==
2727 : 0x00000B00 /* A(11:8)=1011 */ &&
2728 : (inst.Bits() & 0x01000000) ==
2729 0 : 0x00000000 /* U(24)=0 */) {
2730 0 : return Actual_VMLAL_by_scalar_A2_1111001u1dssnnnndddd0p10n1m0mmmm_case_1_instance_;
2731 : }
2732 :
2733 : if ((inst.Bits() & 0x00000F00) ==
2734 0 : 0x00000D00 /* A(11:8)=1101 */) {
2735 0 : return Actual_VMLA_by_scalar_A1_1111001q1dssnnnndddd0p0fn1m0mmmm_case_2_instance_;
2736 : }
2737 :
2738 : if ((inst.Bits() & 0x00000B00) ==
2739 0 : 0x00000100 /* A(11:8)=0x01 */) {
2740 0 : return Actual_VMLA_by_scalar_A1_1111001q1dssnnnndddd0p0fn1m0mmmm_case_1_instance_;
2741 : }
2742 :
2743 : if ((inst.Bits() & 0x00000B00) ==
2744 0 : 0x00000200 /* A(11:8)=0x10 */) {
2745 0 : return Actual_VMLAL_by_scalar_A2_1111001u1dssnnnndddd0p10n1m0mmmm_case_1_instance_;
2746 : }
2747 :
2748 : if ((inst.Bits() & 0x00000B00) ==
2749 : 0x00000300 /* A(11:8)=0x11 */ &&
2750 : (inst.Bits() & 0x01000000) ==
2751 0 : 0x00000000 /* U(24)=0 */) {
2752 0 : return Actual_VMLAL_by_scalar_A2_1111001u1dssnnnndddd0p10n1m0mmmm_case_1_instance_;
2753 : }
2754 :
2755 : if ((inst.Bits() & 0x00000300) ==
2756 0 : 0x00000000 /* A(11:8)=xx00 */) {
2757 0 : return Actual_VMLA_by_scalar_A1_1111001q1dssnnnndddd0p0fn1m0mmmm_case_2_instance_;
2758 : }
2759 :
2760 0 : if (true) {
2761 0 : return Actual_Unnamed_case_1_instance_;
2762 : }
2763 :
2764 : // Catch any attempt to fall though ...
2765 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
2766 0 : }
2767 :
2768 : // Implementation of table: simd_dp_2shift.
2769 : // Specified by: See Section A7.4.4
2770 : const ClassDecoder& Arm32DecoderState::decode_simd_dp_2shift(
2771 : const Instruction inst) const
2772 0 : {
2773 : UNREFERENCED_PARAMETER(inst);
2774 : if ((inst.Bits() & 0x00000F00) ==
2775 : 0x00000500 /* A(11:8)=0101 */ &&
2776 : (inst.Bits() & 0x01000000) ==
2777 0 : 0x00000000 /* U(24)=0 */) {
2778 0 : return Actual_VRSHR_1111001u1diiiiiidddd0010lqm1mmmm_case_1_instance_;
2779 : }
2780 :
2781 : if ((inst.Bits() & 0x00000F00) ==
2782 : 0x00000800 /* A(11:8)=1000 */ &&
2783 : (inst.Bits() & 0x01000000) ==
2784 : 0x00000000 /* U(24)=0 */ &&
2785 : (inst.Bits() & 0x00000080) ==
2786 0 : 0x00000000 /* L(7)=0 */) {
2787 0 : return Actual_VRSHRN_111100101diiiiiidddd100001m1mmmm_case_1_instance_;
2788 : }
2789 :
2790 : if ((inst.Bits() & 0x00000F00) ==
2791 : 0x00000800 /* A(11:8)=1000 */ &&
2792 : (inst.Bits() & 0x01000000) ==
2793 : 0x01000000 /* U(24)=1 */ &&
2794 : (inst.Bits() & 0x00000080) ==
2795 0 : 0x00000000 /* L(7)=0 */) {
2796 0 : return Actual_VQRSHRN_1111001u1diiiiiidddd100p01m1mmmm_case_1_instance_;
2797 : }
2798 :
2799 : if ((inst.Bits() & 0x00000F00) ==
2800 : 0x00000900 /* A(11:8)=1001 */ &&
2801 : (inst.Bits() & 0x00000080) ==
2802 0 : 0x00000000 /* L(7)=0 */) {
2803 0 : return Actual_VQRSHRN_1111001u1diiiiiidddd100p01m1mmmm_case_1_instance_;
2804 : }
2805 :
2806 : if ((inst.Bits() & 0x00000F00) ==
2807 : 0x00000A00 /* A(11:8)=1010 */ &&
2808 : (inst.Bits() & 0x00000040) ==
2809 : 0x00000000 /* B(6)=0 */ &&
2810 : (inst.Bits() & 0x00000080) ==
2811 0 : 0x00000000 /* L(7)=0 */) {
2812 0 : return Actual_VSHLL_A1_or_VMOVL_1111001u1diiiiiidddd101000m1mmmm_case_1_instance_;
2813 : }
2814 :
2815 : if ((inst.Bits() & 0x00000E00) ==
2816 : 0x00000400 /* A(11:8)=010x */ &&
2817 : (inst.Bits() & 0x01000000) ==
2818 0 : 0x01000000 /* U(24)=1 */) {
2819 0 : return Actual_VRSHR_1111001u1diiiiiidddd0010lqm1mmmm_case_1_instance_;
2820 : }
2821 :
2822 : if ((inst.Bits() & 0x00000E00) ==
2823 0 : 0x00000600 /* A(11:8)=011x */) {
2824 0 : return Actual_VQSHL_VQSHLU_immediate_1111001u1diiiiiidddd011plqm1mmmm_case_1_instance_;
2825 : }
2826 :
2827 : if ((inst.Bits() & 0x00000E00) ==
2828 : 0x00000E00 /* A(11:8)=111x */ &&
2829 : (inst.Bits() & 0x00000080) ==
2830 0 : 0x00000000 /* L(7)=0 */) {
2831 0 : return Actual_VCVT_between_floating_point_and_fixed_point_1111001u1diiiiiidddd111p0qm1mmmm_case_1_instance_;
2832 : }
2833 :
2834 : if ((inst.Bits() & 0x00000C00) ==
2835 0 : 0x00000000 /* A(11:8)=00xx */) {
2836 0 : return Actual_VRSHR_1111001u1diiiiiidddd0010lqm1mmmm_case_1_instance_;
2837 : }
2838 :
2839 0 : if (true) {
2840 0 : return Actual_Unnamed_case_1_instance_;
2841 : }
2842 :
2843 : // Catch any attempt to fall though ...
2844 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
2845 0 : }
2846 :
2847 : // Implementation of table: simd_dp_3diff.
2848 : // Specified by: See Section A7.4.2
2849 : const ClassDecoder& Arm32DecoderState::decode_simd_dp_3diff(
2850 : const Instruction inst) const
2851 0 : {
2852 : UNREFERENCED_PARAMETER(inst);
2853 : if ((inst.Bits() & 0x00000F00) ==
2854 0 : 0x00000C00 /* A(11:8)=1100 */) {
2855 0 : return Actual_VABAL_A2_1111001u1dssnnnndddd0101n0m0mmmm_case_1_instance_;
2856 : }
2857 :
2858 : if ((inst.Bits() & 0x00000F00) ==
2859 : 0x00000D00 /* A(11:8)=1101 */ &&
2860 : (inst.Bits() & 0x01000000) ==
2861 0 : 0x00000000 /* U(24)=0 */) {
2862 0 : return Actual_VQDMLAL_VQDMLSL_A1_111100101dssnnnndddd10p1n0m0mmmm_case_1_instance_;
2863 : }
2864 :
2865 : if ((inst.Bits() & 0x00000F00) ==
2866 0 : 0x00000E00 /* A(11:8)=1110 */) {
2867 0 : return Actual_VMULL_polynomial_A2_1111001u1dssnnnndddd11p0n0m0mmmm_case_1_instance_;
2868 : }
2869 :
2870 : if ((inst.Bits() & 0x00000D00) ==
2871 0 : 0x00000400 /* A(11:8)=01x0 */) {
2872 0 : return Actual_VADDHN_111100101dssnnnndddd0100n0m0mmmm_case_1_instance_;
2873 : }
2874 :
2875 : if ((inst.Bits() & 0x00000D00) ==
2876 0 : 0x00000500 /* A(11:8)=01x1 */) {
2877 0 : return Actual_VABAL_A2_1111001u1dssnnnndddd0101n0m0mmmm_case_1_instance_;
2878 : }
2879 :
2880 : if ((inst.Bits() & 0x00000D00) ==
2881 0 : 0x00000800 /* A(11:8)=10x0 */) {
2882 0 : return Actual_VABAL_A2_1111001u1dssnnnndddd0101n0m0mmmm_case_1_instance_;
2883 : }
2884 :
2885 : if ((inst.Bits() & 0x00000D00) ==
2886 : 0x00000900 /* A(11:8)=10x1 */ &&
2887 : (inst.Bits() & 0x01000000) ==
2888 0 : 0x00000000 /* U(24)=0 */) {
2889 0 : return Actual_VQDMLAL_VQDMLSL_A1_111100101dssnnnndddd10p1n0m0mmmm_case_1_instance_;
2890 : }
2891 :
2892 : if ((inst.Bits() & 0x00000C00) ==
2893 0 : 0x00000000 /* A(11:8)=00xx */) {
2894 0 : return Actual_VADDL_VADDW_1111001u1dssnnnndddd000pn0m0mmmm_case_1_instance_;
2895 : }
2896 :
2897 0 : if (true) {
2898 0 : return Actual_Unnamed_case_1_instance_;
2899 : }
2900 :
2901 : // Catch any attempt to fall though ...
2902 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
2903 0 : }
2904 :
2905 : // Implementation of table: simd_dp_3same.
2906 : // Specified by: See Section A7.4.1
2907 : const ClassDecoder& Arm32DecoderState::decode_simd_dp_3same(
2908 : const Instruction inst) const
2909 0 : {
2910 : UNREFERENCED_PARAMETER(inst);
2911 : if ((inst.Bits() & 0x00000F00) ==
2912 : 0x00000100 /* A(11:8)=0001 */ &&
2913 : (inst.Bits() & 0x00000010) ==
2914 0 : 0x00000010 /* B(4)=1 */) {
2915 0 : return Actual_VADD_integer_111100100dssnnnndddd1000nqm0mmmm_case_1_instance_;
2916 : }
2917 :
2918 : if ((inst.Bits() & 0x00000F00) ==
2919 0 : 0x00000600 /* A(11:8)=0110 */) {
2920 0 : return Actual_VABA_1111001u0dssnnnndddd0111nqm1mmmm_case_1_instance_;
2921 : }
2922 :
2923 : if ((inst.Bits() & 0x00000F00) ==
2924 : 0x00000700 /* A(11:8)=0111 */ &&
2925 : (inst.Bits() & 0x00000010) ==
2926 0 : 0x00000000 /* B(4)=0 */) {
2927 0 : return Actual_VABA_1111001u0dssnnnndddd0111nqm1mmmm_case_1_instance_;
2928 : }
2929 :
2930 : if ((inst.Bits() & 0x00000F00) ==
2931 : 0x00000800 /* A(11:8)=1000 */ &&
2932 : (inst.Bits() & 0x00000010) ==
2933 0 : 0x00000000 /* B(4)=0 */) {
2934 0 : return Actual_VADD_integer_111100100dssnnnndddd1000nqm0mmmm_case_1_instance_;
2935 : }
2936 :
2937 : if ((inst.Bits() & 0x00000F00) ==
2938 : 0x00000800 /* A(11:8)=1000 */ &&
2939 : (inst.Bits() & 0x00000010) ==
2940 0 : 0x00000010 /* B(4)=1 */) {
2941 0 : return Actual_VABA_1111001u0dssnnnndddd0111nqm1mmmm_case_1_instance_;
2942 : }
2943 :
2944 : if ((inst.Bits() & 0x00000F00) ==
2945 : 0x00000900 /* A(11:8)=1001 */ &&
2946 : (inst.Bits() & 0x00000010) ==
2947 0 : 0x00000000 /* B(4)=0 */) {
2948 0 : return Actual_VABA_1111001u0dssnnnndddd0111nqm1mmmm_case_1_instance_;
2949 : }
2950 :
2951 : if ((inst.Bits() & 0x00000F00) ==
2952 : 0x00000900 /* A(11:8)=1001 */ &&
2953 : (inst.Bits() & 0x00000010) ==
2954 : 0x00000010 /* B(4)=1 */ &&
2955 : (inst.Bits() & 0x01000000) ==
2956 0 : 0x00000000 /* U(24)=0 */) {
2957 0 : return Actual_VABA_1111001u0dssnnnndddd0111nqm1mmmm_case_1_instance_;
2958 : }
2959 :
2960 : if ((inst.Bits() & 0x00000F00) ==
2961 : 0x00000900 /* A(11:8)=1001 */ &&
2962 : (inst.Bits() & 0x00000010) ==
2963 : 0x00000010 /* B(4)=1 */ &&
2964 : (inst.Bits() & 0x01000000) ==
2965 0 : 0x01000000 /* U(24)=1 */) {
2966 0 : return Actual_VMUL_polynomial_A1_1111001u0dssnnnndddd1001nqm1mmmm_case_1_instance_;
2967 : }
2968 :
2969 : if ((inst.Bits() & 0x00000F00) ==
2970 : 0x00000A00 /* A(11:8)=1010 */ &&
2971 : (inst.Bits() & 0x00000040) ==
2972 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxxxxxxx0xxxxxx */) {
2973 0 : return Actual_VPADD_integer_111100100dssnnnndddd1011n0m1mmmm_case_1_instance_;
2974 : }
2975 :
2976 : if ((inst.Bits() & 0x00000F00) ==
2977 : 0x00000B00 /* A(11:8)=1011 */ &&
2978 : (inst.Bits() & 0x00000010) ==
2979 0 : 0x00000000 /* B(4)=0 */) {
2980 0 : return Actual_VQDMULH_A1_111100100dssnnnndddd1011nqm0mmmm_case_1_instance_;
2981 : }
2982 :
2983 : if ((inst.Bits() & 0x00000F00) ==
2984 : 0x00000B00 /* A(11:8)=1011 */ &&
2985 : (inst.Bits() & 0x00000010) ==
2986 : 0x00000010 /* B(4)=1 */ &&
2987 : (inst.Bits() & 0x01000000) ==
2988 : 0x00000000 /* U(24)=0 */ &&
2989 : (inst.Bits() & 0x00000040) ==
2990 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxxxxxxx0xxxxxx */) {
2991 0 : return Actual_VPADD_integer_111100100dssnnnndddd1011n0m1mmmm_case_1_instance_;
2992 : }
2993 :
2994 : if ((inst.Bits() & 0x00000F00) ==
2995 : 0x00000C00 /* A(11:8)=1100 */ &&
2996 : (inst.Bits() & 0x00000010) ==
2997 : 0x00000010 /* B(4)=1 */ &&
2998 : (inst.Bits() & 0x01000000) ==
2999 : 0x00000000 /* U(24)=0 */ &&
3000 : (inst.Bits() & 0x00100000) ==
3001 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxx0xxxxxxxxxxxxxxxxxxxx */) {
3002 0 : return Actual_VABD_floating_point_111100110d1snnnndddd1101nqm0mmmm_case_1_instance_;
3003 : }
3004 :
3005 : if ((inst.Bits() & 0x00000F00) ==
3006 : 0x00000D00 /* A(11:8)=1101 */ &&
3007 : (inst.Bits() & 0x00000010) ==
3008 : 0x00000000 /* B(4)=0 */ &&
3009 : (inst.Bits() & 0x01000000) ==
3010 : 0x01000000 /* U(24)=1 */ &&
3011 : (inst.Bits() & 0x00200000) ==
3012 0 : 0x00200000 /* C(21:20)=1x */) {
3013 0 : return Actual_VABD_floating_point_111100110d1snnnndddd1101nqm0mmmm_case_1_instance_;
3014 : }
3015 :
3016 : if ((inst.Bits() & 0x00000F00) ==
3017 : 0x00000D00 /* A(11:8)=1101 */ &&
3018 : (inst.Bits() & 0x00000010) ==
3019 : 0x00000010 /* B(4)=1 */ &&
3020 : (inst.Bits() & 0x01000000) ==
3021 : 0x01000000 /* U(24)=1 */ &&
3022 : (inst.Bits() & 0x00200000) ==
3023 0 : 0x00000000 /* C(21:20)=0x */) {
3024 0 : return Actual_VABD_floating_point_111100110d1snnnndddd1101nqm0mmmm_case_1_instance_;
3025 : }
3026 :
3027 : if ((inst.Bits() & 0x00000F00) ==
3028 : 0x00000E00 /* A(11:8)=1110 */ &&
3029 : (inst.Bits() & 0x00000010) ==
3030 : 0x00000000 /* B(4)=0 */ &&
3031 : (inst.Bits() & 0x00200000) ==
3032 0 : 0x00000000 /* C(21:20)=0x */) {
3033 0 : return Actual_VABD_floating_point_111100110d1snnnndddd1101nqm0mmmm_case_1_instance_;
3034 : }
3035 :
3036 : if ((inst.Bits() & 0x00000F00) ==
3037 : 0x00000E00 /* A(11:8)=1110 */ &&
3038 : (inst.Bits() & 0x00000010) ==
3039 : 0x00000010 /* B(4)=1 */ &&
3040 : (inst.Bits() & 0x01000000) ==
3041 : 0x01000000 /* U(24)=1 */ &&
3042 : (inst.Bits() & 0x00200000) ==
3043 0 : 0x00000000 /* C(21:20)=0x */) {
3044 0 : return Actual_VABD_floating_point_111100110d1snnnndddd1101nqm0mmmm_case_1_instance_;
3045 : }
3046 :
3047 : if ((inst.Bits() & 0x00000F00) ==
3048 : 0x00000E00 /* A(11:8)=1110 */ &&
3049 : (inst.Bits() & 0x01000000) ==
3050 : 0x01000000 /* U(24)=1 */ &&
3051 : (inst.Bits() & 0x00200000) ==
3052 0 : 0x00200000 /* C(21:20)=1x */) {
3053 0 : return Actual_VABD_floating_point_111100110d1snnnndddd1101nqm0mmmm_case_1_instance_;
3054 : }
3055 :
3056 : if ((inst.Bits() & 0x00000F00) ==
3057 : 0x00000F00 /* A(11:8)=1111 */ &&
3058 : (inst.Bits() & 0x00000010) ==
3059 : 0x00000000 /* B(4)=0 */ &&
3060 : (inst.Bits() & 0x01000000) ==
3061 : 0x01000000 /* U(24)=1 */ &&
3062 : (inst.Bits() & 0x00200000) ==
3063 0 : 0x00200000 /* C(21:20)=1x */) {
3064 0 : return Actual_VPADD_floating_point_111100110d0snnnndddd1101nqm0mmmm_case_1_instance_;
3065 : }
3066 :
3067 : if ((inst.Bits() & 0x00000B00) ==
3068 : 0x00000300 /* A(11:8)=0x11 */ &&
3069 : (inst.Bits() & 0x00000010) ==
3070 0 : 0x00000010 /* B(4)=1 */) {
3071 0 : return Actual_VABA_1111001u0dssnnnndddd0111nqm1mmmm_case_1_instance_;
3072 : }
3073 :
3074 : if ((inst.Bits() & 0x00000D00) ==
3075 : 0x00000000 /* A(11:8)=00x0 */ &&
3076 : (inst.Bits() & 0x00000010) ==
3077 0 : 0x00000010 /* B(4)=1 */) {
3078 0 : return Actual_VADD_integer_111100100dssnnnndddd1000nqm0mmmm_case_1_instance_;
3079 : }
3080 :
3081 : if ((inst.Bits() & 0x00000D00) ==
3082 : 0x00000D00 /* A(11:8)=11x1 */ &&
3083 : (inst.Bits() & 0x00000010) ==
3084 : 0x00000000 /* B(4)=0 */ &&
3085 : (inst.Bits() & 0x01000000) ==
3086 : 0x01000000 /* U(24)=1 */ &&
3087 : (inst.Bits() & 0x00200000) ==
3088 0 : 0x00000000 /* C(21:20)=0x */) {
3089 0 : return Actual_VPADD_floating_point_111100110d0snnnndddd1101nqm0mmmm_case_1_instance_;
3090 : }
3091 :
3092 : if ((inst.Bits() & 0x00000D00) ==
3093 : 0x00000D00 /* A(11:8)=11x1 */ &&
3094 : (inst.Bits() & 0x01000000) ==
3095 0 : 0x00000000 /* U(24)=0 */) {
3096 0 : return Actual_VABD_floating_point_111100110d1snnnndddd1101nqm0mmmm_case_1_instance_;
3097 : }
3098 :
3099 : if ((inst.Bits() & 0x00000E00) ==
3100 0 : 0x00000400 /* A(11:8)=010x */) {
3101 0 : return Actual_VADD_integer_111100100dssnnnndddd1000nqm0mmmm_case_1_instance_;
3102 : }
3103 :
3104 : if ((inst.Bits() & 0x00000C00) ==
3105 : 0x00000000 /* A(11:8)=00xx */ &&
3106 : (inst.Bits() & 0x00000010) ==
3107 0 : 0x00000000 /* B(4)=0 */) {
3108 0 : return Actual_VABA_1111001u0dssnnnndddd0111nqm1mmmm_case_1_instance_;
3109 : }
3110 :
3111 0 : if (true) {
3112 0 : return Actual_Unnamed_case_1_instance_;
3113 : }
3114 :
3115 : // Catch any attempt to fall though ...
3116 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
3117 0 : }
3118 :
3119 : // Implementation of table: synchronization_primitives.
3120 : // Specified by: See Section A5.2.10
3121 : const ClassDecoder& Arm32DecoderState::decode_synchronization_primitives(
3122 : const Instruction inst) const
3123 0 : {
3124 : UNREFERENCED_PARAMETER(inst);
3125 : if ((inst.Bits() & 0x00F00000) ==
3126 : 0x00A00000 /* op(23:20)=1010 */ &&
3127 : (inst.Bits() & 0x00000F00) ==
3128 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
3129 0 : return Actual_STREXD_cccc00011010nnnndddd11111001tttt_case_1_instance_;
3130 : }
3131 :
3132 : if ((inst.Bits() & 0x00F00000) ==
3133 : 0x00B00000 /* op(23:20)=1011 */ &&
3134 : (inst.Bits() & 0x00000F0F) ==
3135 0 : 0x00000F0F /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxx1111 */) {
3136 0 : return Actual_LDREXD_cccc00011011nnnntttt111110011111_case_1_instance_;
3137 : }
3138 :
3139 : if ((inst.Bits() & 0x00F00000) ==
3140 : 0x00E00000 /* op(23:20)=1110 */ &&
3141 : (inst.Bits() & 0x00000F00) ==
3142 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
3143 0 : return Actual_STREXB_cccc00011100nnnndddd11111001tttt_case_1_instance_;
3144 : }
3145 :
3146 : if ((inst.Bits() & 0x00F00000) ==
3147 : 0x00F00000 /* op(23:20)=1111 */ &&
3148 : (inst.Bits() & 0x00000F0F) ==
3149 0 : 0x00000F0F /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxx1111 */) {
3150 0 : return Actual_LDREXB_cccc00011101nnnntttt111110011111_case_1_instance_;
3151 : }
3152 :
3153 : if ((inst.Bits() & 0x00B00000) ==
3154 : 0x00000000 /* op(23:20)=0x00 */ &&
3155 : (inst.Bits() & 0x00000F00) ==
3156 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx0000xxxxxxxx */) {
3157 0 : return Actual_SWP_SWPB_cccc00010b00nnnntttt00001001tttt_case_1_instance_;
3158 : }
3159 :
3160 : if ((inst.Bits() & 0x00B00000) ==
3161 : 0x00800000 /* op(23:20)=1x00 */ &&
3162 : (inst.Bits() & 0x00000F00) ==
3163 0 : 0x00000F00 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxxxxxx */) {
3164 0 : return Actual_STREXB_cccc00011100nnnndddd11111001tttt_case_1_instance_;
3165 : }
3166 :
3167 : if ((inst.Bits() & 0x00B00000) ==
3168 : 0x00900000 /* op(23:20)=1x01 */ &&
3169 : (inst.Bits() & 0x00000F0F) ==
3170 0 : 0x00000F0F /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxx1111xxxx1111 */) {
3171 0 : return Actual_LDREXB_cccc00011101nnnntttt111110011111_case_1_instance_;
3172 : }
3173 :
3174 0 : if (true) {
3175 0 : return Actual_Unnamed_case_1_instance_;
3176 : }
3177 :
3178 : // Catch any attempt to fall though ...
3179 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
3180 0 : }
3181 :
3182 : // Implementation of table: transfer_between_arm_core_and_extension_register_8_16_and_32_bit.
3183 : // Specified by: A7.8
3184 : const ClassDecoder& Arm32DecoderState::decode_transfer_between_arm_core_and_extension_register_8_16_and_32_bit(
3185 : const Instruction inst) const
3186 0 : {
3187 : UNREFERENCED_PARAMETER(inst);
3188 : if ((inst.Bits() & 0x00000100) ==
3189 : 0x00000000 /* C(8)=0 */ &&
3190 : (inst.Bits() & 0x00E00000) ==
3191 : 0x00000000 /* A(23:21)=000 */ &&
3192 : (inst.Bits() & 0x0000006F) ==
3193 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxxxxxxx00x0000 */) {
3194 0 : return Actual_VMOV_between_ARM_core_register_and_single_precision_register_cccc1110000onnnntttt1010n0010000_case_1_instance_;
3195 : }
3196 :
3197 : if ((inst.Bits() & 0x00100000) ==
3198 : 0x00000000 /* L(20)=0 */ &&
3199 : (inst.Bits() & 0x00000100) ==
3200 : 0x00000000 /* C(8)=0 */ &&
3201 : (inst.Bits() & 0x00E00000) ==
3202 : 0x00E00000 /* A(23:21)=111 */ &&
3203 : (inst.Bits() & 0x000F00EF) ==
3204 0 : 0x00010000 /* $pattern(31:0)=xxxxxxxxxxxx0001xxxxxxxx000x0000 */) {
3205 0 : return Actual_VMSR_cccc111011100001tttt101000010000_case_1_instance_;
3206 : }
3207 :
3208 : if ((inst.Bits() & 0x00100000) ==
3209 : 0x00000000 /* L(20)=0 */ &&
3210 : (inst.Bits() & 0x00000100) ==
3211 : 0x00000100 /* C(8)=1 */ &&
3212 : (inst.Bits() & 0x00800000) ==
3213 : 0x00000000 /* A(23:21)=0xx */ &&
3214 : (inst.Bits() & 0x0000000F) ==
3215 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxxxxxxxxxx0000 */) {
3216 0 : return Actual_VMOV_ARM_core_register_to_scalar_cccc11100ii0ddddtttt1011dii10000_case_1_instance_;
3217 : }
3218 :
3219 : if ((inst.Bits() & 0x00100000) ==
3220 : 0x00000000 /* L(20)=0 */ &&
3221 : (inst.Bits() & 0x00000100) ==
3222 : 0x00000100 /* C(8)=1 */ &&
3223 : (inst.Bits() & 0x00800000) ==
3224 : 0x00800000 /* A(23:21)=1xx */ &&
3225 : (inst.Bits() & 0x00000040) ==
3226 : 0x00000000 /* B(6:5)=0x */ &&
3227 : (inst.Bits() & 0x0000000F) ==
3228 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxxxxxxxxxx0000 */) {
3229 0 : return Actual_VDUP_ARM_core_register_cccc11101bq0ddddtttt1011d0e10000_case_1_instance_;
3230 : }
3231 :
3232 : if ((inst.Bits() & 0x00100000) ==
3233 : 0x00100000 /* L(20)=1 */ &&
3234 : (inst.Bits() & 0x00000100) ==
3235 : 0x00000000 /* C(8)=0 */ &&
3236 : (inst.Bits() & 0x00E00000) ==
3237 : 0x00E00000 /* A(23:21)=111 */ &&
3238 : (inst.Bits() & 0x000F00EF) ==
3239 0 : 0x00010000 /* $pattern(31:0)=xxxxxxxxxxxx0001xxxxxxxx000x0000 */) {
3240 0 : return Actual_VMRS_cccc111011110001tttt101000010000_case_1_instance_;
3241 : }
3242 :
3243 : if ((inst.Bits() & 0x00100000) ==
3244 : 0x00100000 /* L(20)=1 */ &&
3245 : (inst.Bits() & 0x00000100) ==
3246 : 0x00000100 /* C(8)=1 */ &&
3247 : (inst.Bits() & 0x0000000F) ==
3248 0 : 0x00000000 /* $pattern(31:0)=xxxxxxxxxxxxxxxxxxxxxxxxxxxx0000 */) {
3249 0 : return Actual_MOVE_scalar_to_ARM_core_register_cccc1110iii1nnnntttt1011nii10000_case_1_instance_;
3250 : }
3251 :
3252 0 : if (true) {
3253 0 : return Actual_Unnamed_case_1_instance_;
3254 : }
3255 :
3256 : // Catch any attempt to fall though ...
3257 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
3258 0 : }
3259 :
3260 : // Implementation of table: transfer_between_arm_core_and_extension_registers_64_bit.
3261 : // Specified by: A7.9
3262 : const ClassDecoder& Arm32DecoderState::decode_transfer_between_arm_core_and_extension_registers_64_bit(
3263 : const Instruction inst) const
3264 0 : {
3265 : UNREFERENCED_PARAMETER(inst);
3266 : if ((inst.Bits() & 0x00000100) ==
3267 : 0x00000000 /* C(8)=0 */ &&
3268 : (inst.Bits() & 0x000000D0) ==
3269 0 : 0x00000010 /* op(7:4)=00x1 */) {
3270 0 : return Actual_VMOV_between_two_ARM_core_registers_and_two_single_precision_registers_cccc1100010otttttttt101000m1mmmm_case_1_instance_;
3271 : }
3272 :
3273 : if ((inst.Bits() & 0x00000100) ==
3274 : 0x00000100 /* C(8)=1 */ &&
3275 : (inst.Bits() & 0x000000D0) ==
3276 0 : 0x00000010 /* op(7:4)=00x1 */) {
3277 0 : return Actual_VMOV_between_two_ARM_core_registers_and_a_doubleword_extension_register_cccc1100010otttttttt101100m1mmmm_case_1_instance_;
3278 : }
3279 :
3280 0 : if (true) {
3281 0 : return Actual_Unnamed_case_1_instance_;
3282 : }
3283 :
3284 : // Catch any attempt to fall though ...
3285 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
3286 0 : }
3287 :
3288 : // Implementation of table: unconditional_instructions.
3289 : // Specified by: See Section A5.7
3290 : const ClassDecoder& Arm32DecoderState::decode_unconditional_instructions(
3291 : const Instruction inst) const
3292 0 : {
3293 : if ((inst.Bits() & 0x0FE00000) ==
3294 0 : 0x0C400000 /* op1(27:20)=1100010x */) {
3295 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
3296 : }
3297 :
3298 : if ((inst.Bits() & 0x0E500000) ==
3299 : 0x08100000 /* op1(27:20)=100xx0x1 */ &&
3300 : (inst.Bits() & 0x0000FFFF) ==
3301 0 : 0x00000A00 /* $pattern(31:0)=xxxxxxxxxxxxxxxx0000101000000000 */) {
3302 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
3303 : }
3304 :
3305 : if ((inst.Bits() & 0x0E500000) ==
3306 : 0x08400000 /* op1(27:20)=100xx1x0 */ &&
3307 : (inst.Bits() & 0x000FFFE0) ==
3308 0 : 0x000D0500 /* $pattern(31:0)=xxxxxxxxxxxx110100000101000xxxxx */) {
3309 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
3310 : }
3311 :
3312 : if ((inst.Bits() & 0x0E100000) ==
3313 : 0x0C000000 /* op1(27:20)=110xxxx0 */ &&
3314 : (inst.Bits() & 0x0FB00000) !=
3315 0 : 0x0C000000 /* op1_repeated(27:20)=~11000x00 */) {
3316 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
3317 : }
3318 :
3319 : if ((inst.Bits() & 0x0E100000) ==
3320 : 0x0C100000 /* op1(27:20)=110xxxx1 */ &&
3321 : (inst.Bits() & 0x0FB00000) !=
3322 0 : 0x0C100000 /* op1_repeated(27:20)=~11000x01 */) {
3323 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
3324 : }
3325 :
3326 : if ((inst.Bits() & 0x0F000000) ==
3327 0 : 0x0E000000 /* op1(27:20)=1110xxxx */) {
3328 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
3329 : }
3330 :
3331 : if ((inst.Bits() & 0x0E000000) ==
3332 0 : 0x0A000000 /* op1(27:20)=101xxxxx */) {
3333 0 : return Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_;
3334 : }
3335 :
3336 : if ((inst.Bits() & 0x08000000) ==
3337 0 : 0x00000000 /* op1(27:20)=0xxxxxxx */) {
3338 0 : return decode_memory_hints_advanced_simd_instructions_and_miscellaneous_instructions(inst);
3339 : }
3340 :
3341 0 : if (true) {
3342 0 : return Actual_Unnamed_case_1_instance_;
3343 : }
3344 :
3345 : // Catch any attempt to fall though ...
3346 0 : return Actual_NOT_IMPLEMENTED_case_1_instance_;
3347 0 : }
3348 :
3349 0 : const ClassDecoder& Arm32DecoderState::decode(const Instruction inst) const {
3350 0 : return decode_ARMv7(inst);
3351 0 : }
3352 :
3353 : } // namespace nacl_arm_dec
|