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 , Load2RegisterImm8DoubleOp_instance_() | 51 , Load2RegisterImm8DoubleOp_instance_() |
54 , Load2RegisterImm8Op_instance_() | 52 , Load2RegisterImm8Op_instance_() |
(...skipping 1002 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1057 } | 1055 } |
1058 | 1056 |
1059 // Implementation of table: media_instructions. | 1057 // Implementation of table: media_instructions. |
1060 // Specified by: See Section A5.4 | 1058 // Specified by: See Section A5.4 |
1061 const ClassDecoder& Arm32DecoderState::decode_media_instructions( | 1059 const ClassDecoder& Arm32DecoderState::decode_media_instructions( |
1062 const Instruction inst) const | 1060 const Instruction inst) const |
1063 { | 1061 { |
1064 if ((inst.Bits() & 0x01F00000) == 0x01800000 /* op1(24:20)=11000 */ && | 1062 if ((inst.Bits() & 0x01F00000) == 0x01800000 /* op1(24:20)=11000 */ && |
1065 (inst.Bits() & 0x000000E0) == 0x00000000 /* op2(7:5)=000 */ && | 1063 (inst.Bits() & 0x000000E0) == 0x00000000 /* op2(7:5)=000 */ && |
1066 (inst.Bits() & 0x0000F000) != 0x0000F000 /* Rd(15:12)=~1111 */) { | 1064 (inst.Bits() & 0x0000F000) != 0x0000F000 /* Rd(15:12)=~1111 */) { |
1067 return Defs16To19CondsDontCareRdRaRmRnNotPc_instance_; | 1065 return Binary4RegisterDualOp_instance_; |
1068 } | 1066 } |
1069 | 1067 |
1070 if ((inst.Bits() & 0x01F00000) == 0x01800000 /* op1(24:20)=11000 */ && | 1068 if ((inst.Bits() & 0x01F00000) == 0x01800000 /* op1(24:20)=11000 */ && |
1071 (inst.Bits() & 0x000000E0) == 0x00000000 /* op2(7:5)=000 */ && | 1069 (inst.Bits() & 0x000000E0) == 0x00000000 /* op2(7:5)=000 */ && |
1072 (inst.Bits() & 0x0000F000) == 0x0000F000 /* Rd(15:12)=1111 */) { | 1070 (inst.Bits() & 0x0000F000) == 0x0000F000 /* Rd(15:12)=1111 */) { |
1073 return Defs16To19CondsDontCareRdRmRnNotPc_instance_; | 1071 return Binary3RegisterOpAltA_instance_; |
1074 } | 1072 } |
1075 | 1073 |
1076 if ((inst.Bits() & 0x01F00000) == 0x01F00000 /* op1(24:20)=11111 */ && | 1074 if ((inst.Bits() & 0x01F00000) == 0x01F00000 /* op1(24:20)=11111 */ && |
1077 (inst.Bits() & 0x000000E0) == 0x000000E0 /* op2(7:5)=111 */) { | 1075 (inst.Bits() & 0x000000E0) == 0x000000E0 /* op2(7:5)=111 */) { |
1078 return PermanentlyUndefined_instance_; | 1076 return PermanentlyUndefined_instance_; |
1079 } | 1077 } |
1080 | 1078 |
1081 if ((inst.Bits() & 0x01E00000) == 0x01C00000 /* op1(24:20)=1110x */ && | 1079 if ((inst.Bits() & 0x01E00000) == 0x01C00000 /* op1(24:20)=1110x */ && |
1082 (inst.Bits() & 0x00000060) == 0x00000000 /* op2(7:5)=x00 */ && | 1080 (inst.Bits() & 0x00000060) == 0x00000000 /* op2(7:5)=x00 */ && |
1083 (inst.Bits() & 0x0000000F) != 0x0000000F /* Rn(3:0)=~1111 */) { | 1081 (inst.Bits() & 0x0000000F) != 0x0000000F /* Rn(3:0)=~1111 */) { |
1084 return Defs12To15CondsDontCareMsbGeLsb_instance_; | 1082 return Binary2RegisterBitRangeMsbGeLsb_instance_; |
1085 } | 1083 } |
1086 | 1084 |
1087 if ((inst.Bits() & 0x01E00000) == 0x01C00000 /* op1(24:20)=1110x */ && | 1085 if ((inst.Bits() & 0x01E00000) == 0x01C00000 /* op1(24:20)=1110x */ && |
1088 (inst.Bits() & 0x00000060) == 0x00000000 /* op2(7:5)=x00 */ && | 1086 (inst.Bits() & 0x00000060) == 0x00000000 /* op2(7:5)=x00 */ && |
1089 (inst.Bits() & 0x0000000F) == 0x0000000F /* Rn(3:0)=1111 */) { | 1087 (inst.Bits() & 0x0000000F) == 0x0000000F /* Rn(3:0)=1111 */) { |
1090 return Unary1RegisterBitRangeMsbGeLsb_instance_; | 1088 return Unary1RegisterBitRangeMsbGeLsb_instance_; |
1091 } | 1089 } |
1092 | 1090 |
1093 if ((inst.Bits() & 0x01A00000) == 0x01A00000 /* op1(24:20)=11x1x */ && | 1091 if ((inst.Bits() & 0x01A00000) == 0x01A00000 /* op1(24:20)=11x1x */ && |
1094 (inst.Bits() & 0x00000060) == 0x00000040 /* op2(7:5)=x10 */) { | 1092 (inst.Bits() & 0x00000060) == 0x00000040 /* op2(7:5)=x10 */) { |
1095 return Defs12To15CondsDontCareRdRnNotPcBitfieldExtract_instance_; | 1093 return Binary2RegisterBitRangeNotRnIsPcBitfieldExtract_instance_; |
1096 } | 1094 } |
1097 | 1095 |
1098 if ((inst.Bits() & 0x01C00000) == 0x00000000 /* op1(24:20)=000xx */) { | 1096 if ((inst.Bits() & 0x01C00000) == 0x00000000 /* op1(24:20)=000xx */) { |
1099 return decode_parallel_addition_and_subtraction_signed(inst); | 1097 return decode_parallel_addition_and_subtraction_signed(inst); |
1100 } | 1098 } |
1101 | 1099 |
1102 if ((inst.Bits() & 0x01C00000) == 0x00400000 /* op1(24:20)=001xx */) { | 1100 if ((inst.Bits() & 0x01C00000) == 0x00400000 /* op1(24:20)=001xx */) { |
1103 return decode_parallel_addition_and_subtraction_unsigned(inst); | 1101 return decode_parallel_addition_and_subtraction_unsigned(inst); |
1104 } | 1102 } |
1105 | 1103 |
(...skipping 1313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2419 | 2417 |
2420 // Catch any attempt to fall though ... | 2418 // Catch any attempt to fall though ... |
2421 return not_implemented_; | 2419 return not_implemented_; |
2422 } | 2420 } |
2423 | 2421 |
2424 const ClassDecoder& Arm32DecoderState::decode(const Instruction inst) const { | 2422 const ClassDecoder& Arm32DecoderState::decode(const Instruction inst) const { |
2425 return decode_ARMv7(inst); | 2423 return decode_ARMv7(inst); |
2426 } | 2424 } |
2427 | 2425 |
2428 } // namespace nacl_arm_dec | 2426 } // namespace nacl_arm_dec |
OLD | NEW |