OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 The Native Client Authors. All rights reserved. | 2 * Copyright 2012 The Native Client Authors. All rights reserved. |
3 * Use of this source code is governed by a BSD-style license that can | 3 * Use of this source code is governed by a BSD-style license that can |
4 * be found in the LICENSE file. | 4 * be found in the LICENSE file. |
5 */ | 5 */ |
6 | 6 |
7 // DO NOT EDIT: GENERATED CODE | 7 // DO NOT EDIT: GENERATED CODE |
8 | 8 |
9 | 9 |
10 #include "native_client/src/trusted/validator_arm/gen/arm32_decode.h" | 10 #include "native_client/src/trusted/validator_arm/gen/arm32_decode.h" |
11 | 11 |
12 namespace nacl_arm_dec { | 12 namespace nacl_arm_dec { |
13 | 13 |
14 | 14 |
15 Arm32DecoderState::Arm32DecoderState() : DecoderState() | 15 Arm32DecoderState::Arm32DecoderState() : DecoderState() |
| 16 , Binary2RegisterBitRangeMsbGeLsb_instance_() |
| 17 , Binary2RegisterBitRangeNotRnIsPcBitfieldExtract_instance_() |
16 , Binary2RegisterImmedShiftedTest_instance_() | 18 , Binary2RegisterImmedShiftedTest_instance_() |
17 , Binary2RegisterImmediateOp_instance_() | 19 , Binary2RegisterImmediateOp_instance_() |
18 , Binary2RegisterImmediateOpAddSub_instance_() | 20 , Binary2RegisterImmediateOpAddSub_instance_() |
19 , Binary2RegisterImmediateOpDynCodeReplace_instance_() | 21 , Binary2RegisterImmediateOpDynCodeReplace_instance_() |
20 , Binary3RegisterOp_instance_() | 22 , Binary3RegisterOp_instance_() |
21 , Binary3RegisterOpAltA_instance_() | 23 , Binary3RegisterOpAltA_instance_() |
22 , Binary3RegisterOpAltANoCondsUpdate_instance_() | 24 , Binary3RegisterOpAltANoCondsUpdate_instance_() |
23 , Binary3RegisterOpAltBNoCondUpdates_instance_() | 25 , Binary3RegisterOpAltBNoCondUpdates_instance_() |
24 , Binary3RegisterShiftedOp_instance_() | 26 , Binary3RegisterShiftedOp_instance_() |
25 , Binary3RegisterShiftedTest_instance_() | 27 , Binary3RegisterShiftedTest_instance_() |
26 , Binary4RegisterDualOp_instance_() | 28 , Binary4RegisterDualOp_instance_() |
27 , Binary4RegisterDualOpLtV6RdNotRn_instance_() | 29 , Binary4RegisterDualOpLtV6RdNotRn_instance_() |
28 , Binary4RegisterDualOpNoCondsUpdate_instance_() | 30 , Binary4RegisterDualOpNoCondsUpdate_instance_() |
29 , Binary4RegisterDualResult_instance_() | 31 , Binary4RegisterDualResult_instance_() |
30 , Binary4RegisterDualResultLtV6RdHiLoNotRn_instance_() | 32 , Binary4RegisterDualResultLtV6RdHiLoNotRn_instance_() |
31 , Binary4RegisterDualResultNoCondsUpdate_instance_() | 33 , Binary4RegisterDualResultNoCondsUpdate_instance_() |
32 , Binary4RegisterDualResultUsesRnRm_instance_() | 34 , Binary4RegisterDualResultUsesRnRm_instance_() |
33 , Binary4RegisterShiftedOp_instance_() | 35 , Binary4RegisterShiftedOp_instance_() |
34 , BinaryRegisterImmediateTest_instance_() | 36 , BinaryRegisterImmediateTest_instance_() |
35 , Branch_instance_() | 37 , Branch_instance_() |
36 , BranchToRegister_instance_() | 38 , BranchToRegister_instance_() |
37 , BreakPointAndConstantPoolHead_instance_() | 39 , BreakPointAndConstantPoolHead_instance_() |
38 , DataBarrier_instance_() | 40 , DataBarrier_instance_() |
39 , Defs12To15CondsDontCareMsbGeLsb_instance_() | |
40 , Defs12To15CondsDontCareRdRnNotPc_instance_() | 41 , Defs12To15CondsDontCareRdRnNotPc_instance_() |
41 , Defs12To15CondsDontCareRdRnNotPcBitfieldExtract_instance_() | |
42 , Defs12To15CondsDontCareRnRdRmNotPc_instance_() | 42 , Defs12To15CondsDontCareRnRdRmNotPc_instance_() |
43 , Defs16To19CondsDontCareRdRaRmRnNotPc_instance_() | |
44 , Defs16To19CondsDontCareRdRmRnNotPc_instance_() | |
45 , Deprecated_instance_() | 43 , Deprecated_instance_() |
46 , DontCareInst_instance_() | 44 , DontCareInst_instance_() |
47 , DontCareInstRdNotPc_instance_() | 45 , DontCareInstRdNotPc_instance_() |
48 , DuplicateToAdvSIMDRegisters_instance_() | 46 , DuplicateToAdvSIMDRegisters_instance_() |
49 , Forbidden_instance_() | 47 , Forbidden_instance_() |
50 , ForbiddenCondDecoder_instance_() | 48 , ForbiddenCondDecoder_instance_() |
51 , InstructionBarrier_instance_() | 49 , InstructionBarrier_instance_() |
52 , LdrImmediateOp_instance_() | 50 , LdrImmediateOp_instance_() |
53 , Load2RegisterImm12Op_instance_() | 51 , Load2RegisterImm12Op_instance_() |
54 , Load2RegisterImm8DoubleOp_instance_() | 52 , Load2RegisterImm8DoubleOp_instance_() |
(...skipping 982 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1037 } | 1035 } |
1038 | 1036 |
1039 // Implementation of table: media_instructions. | 1037 // Implementation of table: media_instructions. |
1040 // Specified by: See Section A5.4 | 1038 // Specified by: See Section A5.4 |
1041 const ClassDecoder& Arm32DecoderState::decode_media_instructions( | 1039 const ClassDecoder& Arm32DecoderState::decode_media_instructions( |
1042 const Instruction inst) const | 1040 const Instruction inst) const |
1043 { | 1041 { |
1044 if ((inst.Bits() & 0x01F00000) == 0x01800000 /* op1(24:20)=11000 */ && | 1042 if ((inst.Bits() & 0x01F00000) == 0x01800000 /* op1(24:20)=11000 */ && |
1045 (inst.Bits() & 0x000000E0) == 0x00000000 /* op2(7:5)=000 */ && | 1043 (inst.Bits() & 0x000000E0) == 0x00000000 /* op2(7:5)=000 */ && |
1046 (inst.Bits() & 0x0000F000) != 0x0000F000 /* Rd(15:12)=~1111 */) { | 1044 (inst.Bits() & 0x0000F000) != 0x0000F000 /* Rd(15:12)=~1111 */) { |
1047 return Defs16To19CondsDontCareRdRaRmRnNotPc_instance_; | 1045 return Binary4RegisterDualOp_instance_; |
1048 } | 1046 } |
1049 | 1047 |
1050 if ((inst.Bits() & 0x01F00000) == 0x01800000 /* op1(24:20)=11000 */ && | 1048 if ((inst.Bits() & 0x01F00000) == 0x01800000 /* op1(24:20)=11000 */ && |
1051 (inst.Bits() & 0x000000E0) == 0x00000000 /* op2(7:5)=000 */ && | 1049 (inst.Bits() & 0x000000E0) == 0x00000000 /* op2(7:5)=000 */ && |
1052 (inst.Bits() & 0x0000F000) == 0x0000F000 /* Rd(15:12)=1111 */) { | 1050 (inst.Bits() & 0x0000F000) == 0x0000F000 /* Rd(15:12)=1111 */) { |
1053 return Defs16To19CondsDontCareRdRmRnNotPc_instance_; | 1051 return Binary3RegisterOpAltA_instance_; |
1054 } | 1052 } |
1055 | 1053 |
1056 if ((inst.Bits() & 0x01F00000) == 0x01F00000 /* op1(24:20)=11111 */ && | 1054 if ((inst.Bits() & 0x01F00000) == 0x01F00000 /* op1(24:20)=11111 */ && |
1057 (inst.Bits() & 0x000000E0) == 0x000000E0 /* op2(7:5)=111 */) { | 1055 (inst.Bits() & 0x000000E0) == 0x000000E0 /* op2(7:5)=111 */) { |
1058 return PermanentlyUndefined_instance_; | 1056 return PermanentlyUndefined_instance_; |
1059 } | 1057 } |
1060 | 1058 |
1061 if ((inst.Bits() & 0x01E00000) == 0x01C00000 /* op1(24:20)=1110x */ && | 1059 if ((inst.Bits() & 0x01E00000) == 0x01C00000 /* op1(24:20)=1110x */ && |
1062 (inst.Bits() & 0x00000060) == 0x00000000 /* op2(7:5)=x00 */ && | 1060 (inst.Bits() & 0x00000060) == 0x00000000 /* op2(7:5)=x00 */ && |
1063 (inst.Bits() & 0x0000000F) != 0x0000000F /* Rn(3:0)=~1111 */) { | 1061 (inst.Bits() & 0x0000000F) != 0x0000000F /* Rn(3:0)=~1111 */) { |
1064 return Defs12To15CondsDontCareMsbGeLsb_instance_; | 1062 return Binary2RegisterBitRangeMsbGeLsb_instance_; |
1065 } | 1063 } |
1066 | 1064 |
1067 if ((inst.Bits() & 0x01E00000) == 0x01C00000 /* op1(24:20)=1110x */ && | 1065 if ((inst.Bits() & 0x01E00000) == 0x01C00000 /* op1(24:20)=1110x */ && |
1068 (inst.Bits() & 0x00000060) == 0x00000000 /* op2(7:5)=x00 */ && | 1066 (inst.Bits() & 0x00000060) == 0x00000000 /* op2(7:5)=x00 */ && |
1069 (inst.Bits() & 0x0000000F) == 0x0000000F /* Rn(3:0)=1111 */) { | 1067 (inst.Bits() & 0x0000000F) == 0x0000000F /* Rn(3:0)=1111 */) { |
1070 return Unary1RegisterBitRangeMsbGeLsb_instance_; | 1068 return Unary1RegisterBitRangeMsbGeLsb_instance_; |
1071 } | 1069 } |
1072 | 1070 |
1073 if ((inst.Bits() & 0x01A00000) == 0x01A00000 /* op1(24:20)=11x1x */ && | 1071 if ((inst.Bits() & 0x01A00000) == 0x01A00000 /* op1(24:20)=11x1x */ && |
1074 (inst.Bits() & 0x00000060) == 0x00000040 /* op2(7:5)=x10 */) { | 1072 (inst.Bits() & 0x00000060) == 0x00000040 /* op2(7:5)=x10 */) { |
1075 return Defs12To15CondsDontCareRdRnNotPcBitfieldExtract_instance_; | 1073 return Binary2RegisterBitRangeNotRnIsPcBitfieldExtract_instance_; |
1076 } | 1074 } |
1077 | 1075 |
1078 if ((inst.Bits() & 0x01C00000) == 0x00000000 /* op1(24:20)=000xx */) { | 1076 if ((inst.Bits() & 0x01C00000) == 0x00000000 /* op1(24:20)=000xx */) { |
1079 return decode_parallel_addition_and_subtraction_signed(inst); | 1077 return decode_parallel_addition_and_subtraction_signed(inst); |
1080 } | 1078 } |
1081 | 1079 |
1082 if ((inst.Bits() & 0x01C00000) == 0x00400000 /* op1(24:20)=001xx */) { | 1080 if ((inst.Bits() & 0x01C00000) == 0x00400000 /* op1(24:20)=001xx */) { |
1083 return decode_parallel_addition_and_subtraction_unsigned(inst); | 1081 return decode_parallel_addition_and_subtraction_unsigned(inst); |
1084 } | 1082 } |
1085 | 1083 |
(...skipping 1313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2399 | 2397 |
2400 // Catch any attempt to fall though ... | 2398 // Catch any attempt to fall though ... |
2401 return not_implemented_; | 2399 return not_implemented_; |
2402 } | 2400 } |
2403 | 2401 |
2404 const ClassDecoder& Arm32DecoderState::decode(const Instruction inst) const { | 2402 const ClassDecoder& Arm32DecoderState::decode(const Instruction inst) const { |
2405 return decode_ARMv7(inst); | 2403 return decode_ARMv7(inst); |
2406 } | 2404 } |
2407 | 2405 |
2408 } // namespace nacl_arm_dec | 2406 } // namespace nacl_arm_dec |
OLD | NEW |