| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 The Native Client Authors. All rights reserved. | 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 | 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 , Actual_ADC_immediate_cccc0010101snnnnddddiiiiiiiiiiii_case_1_instance_() | 16 , Actual_ADC_immediate_cccc0010101snnnnddddiiiiiiiiiiii_case_1_instance_() |
| 17 , Actual_ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_1_instance_() | 17 , Actual_ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_1_instance_() |
| 18 , Actual_ADC_register_shifted_register_cccc0000101snnnnddddssss0tt1mmmm_case_1
_instance_() | 18 , Actual_ADC_register_shifted_register_cccc0000101snnnnddddssss0tt1mmmm_case_1
_instance_() |
| 19 , Actual_ADD_immediate_cccc0010100snnnnddddiiiiiiiiiiii_case_1_instance_() | 19 , Actual_ADD_immediate_cccc0010100snnnnddddiiiiiiiiiiii_case_1_instance_() |
| 20 , Actual_ADR_A1_cccc001010001111ddddiiiiiiiiiiii_case_1_instance_() | 20 , Actual_ADR_A1_cccc001010001111ddddiiiiiiiiiiii_case_1_instance_() |
| 21 , Actual_ASR_immediate_cccc0001101s0000ddddiiiii100mmmm_case_1_instance_() | 21 , Actual_ASR_immediate_cccc0001101s0000ddddiiiii100mmmm_case_1_instance_() |
| 22 , Actual_ASR_register_cccc0001101s0000ddddmmmm0101nnnn_case_1_instance_() | 22 , Actual_ASR_register_cccc0001101s0000ddddmmmm0101nnnn_case_1_instance_() |
| 23 , Actual_BIC_immediate_cccc0011110snnnnddddiiiiiiiiiiii_case_1_instance_() | 23 , Actual_BIC_immediate_cccc0011110snnnnddddiiiiiiiiiiii_case_1_instance_() |
| 24 , Actual_BKPT_cccc00010010iiiiiiiiiiii0111iiii_case_1_instance_() | 24 , Actual_BKPT_cccc00010010iiiiiiiiiiii0111iiii_case_1_instance_() |
| 25 , Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_() | 25 , Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_() |
| 26 , Actual_BLX_register_cccc000100101111111111110011mmmm_case_1_instance_() | 26 , Actual_BLX_register_cccc000100101111111111110011mmmm_case_1_instance_() |
| 27 , Actual_BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_() |
| 28 , Actual_B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_() |
| 27 , Actual_Bx_cccc000100101111111111110001mmmm_case_1_instance_() | 29 , Actual_Bx_cccc000100101111111111110001mmmm_case_1_instance_() |
| 28 , Actual_CLZ_cccc000101101111dddd11110001mmmm_case_1_instance_() | 30 , Actual_CLZ_cccc000101101111dddd11110001mmmm_case_1_instance_() |
| 29 , Actual_CMN_immediate_cccc00110111nnnn0000iiiiiiiiiiii_case_1_instance_() | 31 , Actual_CMN_immediate_cccc00110111nnnn0000iiiiiiiiiiii_case_1_instance_() |
| 30 , Actual_CMN_register_cccc00010111nnnn0000iiiiitt0mmmm_case_1_instance_() | 32 , Actual_CMN_register_cccc00010111nnnn0000iiiiitt0mmmm_case_1_instance_() |
| 31 , Actual_CMN_register_shifted_register_cccc00010111nnnn0000ssss0tt1mmmm_case_1
_instance_() | 33 , Actual_CMN_register_shifted_register_cccc00010111nnnn0000ssss0tt1mmmm_case_1
_instance_() |
| 34 , Actual_LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_1_instance_() |
| 32 , Actual_LDRD_immediate_cccc000pu1w0nnnnttttiiii1101iiii_case_1_instance_() | 35 , Actual_LDRD_immediate_cccc000pu1w0nnnnttttiiii1101iiii_case_1_instance_() |
| 33 , Actual_LDRD_literal_cccc0001u1001111ttttiiii1101iiii_case_1_instance_() | 36 , Actual_LDRD_literal_cccc0001u1001111ttttiiii1101iiii_case_1_instance_() |
| 34 , Actual_LDRD_register_cccc000pu0w0nnnntttt00001101mmmm_case_1_instance_() | 37 , Actual_LDRD_register_cccc000pu0w0nnnntttt00001101mmmm_case_1_instance_() |
| 35 , Actual_LDREXB_cccc00011101nnnntttt111110011111_case_1_instance_() | 38 , Actual_LDREXB_cccc00011101nnnntttt111110011111_case_1_instance_() |
| 36 , Actual_LDREXD_cccc00011011nnnntttt111110011111_case_1_instance_() | 39 , Actual_LDREXD_cccc00011011nnnntttt111110011111_case_1_instance_() |
| 37 , Actual_LDRH_immediate_cccc000pu1w1nnnnttttiiii1011iiii_case_1_instance_() | 40 , Actual_LDRH_immediate_cccc000pu1w1nnnnttttiiii1011iiii_case_1_instance_() |
| 38 , Actual_LDRH_literal_cccc000pu1w11111ttttiiii1011iiii_case_1_instance_() | 41 , Actual_LDRH_literal_cccc000pu1w11111ttttiiii1011iiii_case_1_instance_() |
| 39 , Actual_LDRH_register_cccc000pu0w1nnnntttt00001011mmmm_case_1_instance_() | 42 , Actual_LDRH_register_cccc000pu0w1nnnntttt00001011mmmm_case_1_instance_() |
| 40 , Actual_LSL_immediate_cccc0001101s0000ddddiiiii000mmmm_case_1_instance_() | 43 , Actual_LSL_immediate_cccc0001101s0000ddddiiiii000mmmm_case_1_instance_() |
| 41 , Actual_MLA_A1_cccc0000001sddddaaaammmm1001nnnn_case_1_instance_() | 44 , Actual_MLA_A1_cccc0000001sddddaaaammmm1001nnnn_case_1_instance_() |
| 42 , Actual_MLS_A1_cccc00000110ddddaaaammmm1001nnnn_case_1_instance_() | 45 , Actual_MLS_A1_cccc00000110ddddaaaammmm1001nnnn_case_1_instance_() |
| 43 , Actual_MOVT_cccc00110100iiiiddddiiiiiiiiiiii_case_1_instance_() | 46 , Actual_MOVT_cccc00110100iiiiddddiiiiiiiiiiii_case_1_instance_() |
| 44 , Actual_MOV_immediate_A1_cccc0011101s0000ddddiiiiiiiiiiii_case_1_instance_() | 47 , Actual_MOV_immediate_A1_cccc0011101s0000ddddiiiiiiiiiiii_case_1_instance_() |
| 45 , Actual_MRS_cccc00010r001111dddd000000000000_case_1_instance_() | 48 , Actual_MRS_cccc00010r001111dddd000000000000_case_1_instance_() |
| 46 , Actual_MSR_immediate_cccc00110010mm001111iiiiiiiiiiii_case_1_instance_() | 49 , Actual_MSR_immediate_cccc00110010mm001111iiiiiiiiiiii_case_1_instance_() |
| 47 , Actual_MSR_register_cccc00010010mm00111100000000nnnn_case_1_instance_() | 50 , Actual_MSR_register_cccc00010010mm00111100000000nnnn_case_1_instance_() |
| 48 , Actual_MUL_A1_cccc0000000sdddd0000mmmm1001nnnn_case_1_instance_() | 51 , Actual_MUL_A1_cccc0000000sdddd0000mmmm1001nnnn_case_1_instance_() |
| 49 , Actual_NOP_cccc0011001000001111000000000000_case_1_instance_() | 52 , Actual_NOP_cccc0011001000001111000000000000_case_1_instance_() |
| 50 , Actual_ORR_immediate_cccc0011100snnnnddddiiiiiiiiiiii_case_1_instance_() | 53 , Actual_ORR_immediate_cccc0011100snnnnddddiiiiiiiiiiii_case_1_instance_() |
| 51 , Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_() | 54 , Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_() |
| 52 , Actual_SMLALBB_SMLALBT_SMLALTB_SMLALTT_cccc00010100hhhhllllmmmm1xx0nnnn_case
_1_instance_() | 55 , Actual_SMLALBB_SMLALBT_SMLALTB_SMLALTT_cccc00010100hhhhllllmmmm1xx0nnnn_case
_1_instance_() |
| 53 , Actual_SMLAL_A1_cccc0000111shhhhllllmmmm1001nnnn_case_1_instance_() | 56 , Actual_SMLAL_A1_cccc0000111shhhhllllmmmm1001nnnn_case_1_instance_() |
| 54 , Actual_SMULBB_SMULBT_SMULTB_SMULTT_cccc00010110dddd0000mmmm1xx0nnnn_case_1_i
nstance_() | 57 , Actual_SMULBB_SMULBT_SMULTB_SMULTT_cccc00010110dddd0000mmmm1xx0nnnn_case_1_i
nstance_() |
| 55 , Actual_SMULL_A1_cccc0000110shhhhllllmmmm1001nnnn_case_1_instance_() | 58 , Actual_SMULL_A1_cccc0000110shhhhllllmmmm1001nnnn_case_1_instance_() |
| 59 , Actual_STMDA_STMED_cccc100000w0nnnnrrrrrrrrrrrrrrrr_case_1_instance_() |
| 56 , Actual_STRD_immediate_cccc000pu1w0nnnnttttiiii1111iiii_case_1_instance_() | 60 , Actual_STRD_immediate_cccc000pu1w0nnnnttttiiii1111iiii_case_1_instance_() |
| 57 , Actual_STRD_register_cccc000pu0w0nnnntttt00001111mmmm_case_1_instance_() | 61 , Actual_STRD_register_cccc000pu0w0nnnntttt00001111mmmm_case_1_instance_() |
| 58 , Actual_STREXB_cccc00011100nnnndddd11111001tttt_case_1_instance_() | 62 , Actual_STREXB_cccc00011100nnnndddd11111001tttt_case_1_instance_() |
| 59 , Actual_STREXD_cccc00011010nnnndddd11111001tttt_case_1_instance_() | 63 , Actual_STREXD_cccc00011010nnnndddd11111001tttt_case_1_instance_() |
| 60 , Actual_STRH_immediate_cccc000pu1w0nnnnttttiiii1011iiii_case_1_instance_() | 64 , Actual_STRH_immediate_cccc000pu1w0nnnnttttiiii1011iiii_case_1_instance_() |
| 61 , Actual_STRH_register_cccc000pu0w0nnnntttt00001011mmmm_case_1_instance_() | 65 , Actual_STRH_register_cccc000pu0w0nnnntttt00001011mmmm_case_1_instance_() |
| 62 , Actual_TST_immediate_cccc00110001nnnn0000iiiiiiiiiiii_case_1_instance_() | 66 , Actual_TST_immediate_cccc00110001nnnn0000iiiiiiiiiiii_case_1_instance_() |
| 63 , Actual_Unnamed_case_1_instance_() | 67 , Actual_Unnamed_case_1_instance_() |
| 64 , Binary2RegisterBitRangeMsbGeLsb_instance_() | 68 , Binary2RegisterBitRangeMsbGeLsb_instance_() |
| 65 , Binary2RegisterBitRangeNotRnIsPcBitfieldExtract_instance_() | 69 , Binary2RegisterBitRangeNotRnIsPcBitfieldExtract_instance_() |
| 66 , Binary3RegisterOpAltA_instance_() | 70 , Binary3RegisterOpAltA_instance_() |
| 67 , Binary3RegisterOpAltANoCondsUpdate_instance_() | 71 , Binary3RegisterOpAltANoCondsUpdate_instance_() |
| 68 , Binary3RegisterOpAltBNoCondUpdates_instance_() | 72 , Binary3RegisterOpAltBNoCondUpdates_instance_() |
| 69 , Binary4RegisterDualOp_instance_() | 73 , Binary4RegisterDualOp_instance_() |
| 70 , Binary4RegisterDualOpNoCondsUpdate_instance_() | 74 , Binary4RegisterDualOpNoCondsUpdate_instance_() |
| 71 , Binary4RegisterDualResultNoCondsUpdate_instance_() | 75 , Binary4RegisterDualResultNoCondsUpdate_instance_() |
| 72 , BranchImmediate24_instance_() | |
| 73 , CondVfpOp_instance_() | 76 , CondVfpOp_instance_() |
| 74 , DataBarrier_instance_() | 77 , DataBarrier_instance_() |
| 75 , Deprecated_instance_() | 78 , Deprecated_instance_() |
| 76 , DuplicateToAdvSIMDRegisters_instance_() | 79 , DuplicateToAdvSIMDRegisters_instance_() |
| 77 , Forbidden_instance_() | 80 , Forbidden_instance_() |
| 78 , ForbiddenCondDecoder_instance_() | 81 , ForbiddenCondDecoder_instance_() |
| 79 , InstructionBarrier_instance_() | 82 , InstructionBarrier_instance_() |
| 80 , LdrImmediateOp_instance_() | 83 , LdrImmediateOp_instance_() |
| 81 , Load2RegisterImm12Op_instance_() | 84 , Load2RegisterImm12Op_instance_() |
| 82 , Load3RegisterImm5Op_instance_() | 85 , Load3RegisterImm5Op_instance_() |
| 83 , LoadRegisterList_instance_() | |
| 84 , LoadVectorRegister_instance_() | 86 , LoadVectorRegister_instance_() |
| 85 , LoadVectorRegisterList_instance_() | 87 , LoadVectorRegisterList_instance_() |
| 86 , MoveDoubleVfpRegisterOp_instance_() | 88 , MoveDoubleVfpRegisterOp_instance_() |
| 87 , MoveVfpRegisterOp_instance_() | 89 , MoveVfpRegisterOp_instance_() |
| 88 , MoveVfpRegisterOpWithTypeSel_instance_() | 90 , MoveVfpRegisterOpWithTypeSel_instance_() |
| 89 , PermanentlyUndefined_instance_() | 91 , PermanentlyUndefined_instance_() |
| 90 , PreloadRegisterImm12Op_instance_() | 92 , PreloadRegisterImm12Op_instance_() |
| 91 , PreloadRegisterPairOp_instance_() | 93 , PreloadRegisterPairOp_instance_() |
| 92 , Store2RegisterImm12Op_instance_() | 94 , Store2RegisterImm12Op_instance_() |
| 93 , Store3RegisterImm5Op_instance_() | 95 , Store3RegisterImm5Op_instance_() |
| 94 , StoreRegisterList_instance_() | |
| 95 , StoreVectorRegister_instance_() | 96 , StoreVectorRegister_instance_() |
| 96 , StoreVectorRegisterList_instance_() | 97 , StoreVectorRegisterList_instance_() |
| 97 , Unary1RegisterBitRangeMsbGeLsb_instance_() | 98 , Unary1RegisterBitRangeMsbGeLsb_instance_() |
| 98 , Unary2RegisterImmedShiftedOp_instance_() | 99 , Unary2RegisterImmedShiftedOp_instance_() |
| 99 , Unary2RegisterSatImmedShiftedOp_instance_() | 100 , Unary2RegisterSatImmedShiftedOp_instance_() |
| 100 , Undefined_instance_() | 101 , Undefined_instance_() |
| 101 , Unpredictable_instance_() | 102 , Unpredictable_instance_() |
| 102 , VcvtPtAndFixedPoint_FloatingPoint_instance_() | 103 , VcvtPtAndFixedPoint_FloatingPoint_instance_() |
| 103 , Vector1RegisterImmediate_BIT_instance_() | 104 , Vector1RegisterImmediate_BIT_instance_() |
| 104 , Vector1RegisterImmediate_MOV_instance_() | 105 , Vector1RegisterImmediate_MOV_instance_() |
| (...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 488 } | 489 } |
| 489 | 490 |
| 490 // Implementation of table: branch_branch_with_link_and_block_data_transfer. | 491 // Implementation of table: branch_branch_with_link_and_block_data_transfer. |
| 491 // Specified by: See Section A5.5 | 492 // Specified by: See Section A5.5 |
| 492 const ClassDecoder& Arm32DecoderState::decode_branch_branch_with_link_and_block_
data_transfer( | 493 const ClassDecoder& Arm32DecoderState::decode_branch_branch_with_link_and_block_
data_transfer( |
| 493 const Instruction inst) const | 494 const Instruction inst) const |
| 494 { | 495 { |
| 495 UNREFERENCED_PARAMETER(inst); | 496 UNREFERENCED_PARAMETER(inst); |
| 496 if ((inst.Bits() & 0x02500000) == | 497 if ((inst.Bits() & 0x02500000) == |
| 497 0x00000000 /* op(25:20)=0xx0x0 */) { | 498 0x00000000 /* op(25:20)=0xx0x0 */) { |
| 498 return StoreRegisterList_instance_; | 499 return Actual_STMDA_STMED_cccc100000w0nnnnrrrrrrrrrrrrrrrr_case_1_instance_; |
| 499 } | 500 } |
| 500 | 501 |
| 501 if ((inst.Bits() & 0x02500000) == | 502 if ((inst.Bits() & 0x02500000) == |
| 502 0x00100000 /* op(25:20)=0xx0x1 */) { | 503 0x00100000 /* op(25:20)=0xx0x1 */) { |
| 503 return LoadRegisterList_instance_; | 504 return Actual_LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_1_instance_; |
| 504 } | 505 } |
| 505 | 506 |
| 506 if ((inst.Bits() & 0x02500000) == | 507 if ((inst.Bits() & 0x02500000) == |
| 507 0x00400000 /* op(25:20)=0xx1x0 */ && | 508 0x00400000 /* op(25:20)=0xx1x0 */ && |
| 508 (inst.Bits() & 0x00200000) == | 509 (inst.Bits() & 0x00200000) == |
| 509 0x00000000 /* $pattern(31:0)=xxxxxxxxxx0xxxxxxxxxxxxxxxxxxxxx */) { | 510 0x00000000 /* $pattern(31:0)=xxxxxxxxxx0xxxxxxxxxxxxxxxxxxxxx */) { |
| 510 return ForbiddenCondDecoder_instance_; | 511 return ForbiddenCondDecoder_instance_; |
| 511 } | 512 } |
| 512 | 513 |
| 513 if ((inst.Bits() & 0x02500000) == | 514 if ((inst.Bits() & 0x02500000) == |
| 514 0x00500000 /* op(25:20)=0xx1x1 */ && | 515 0x00500000 /* op(25:20)=0xx1x1 */ && |
| 515 (inst.Bits() & 0x00008000) == | 516 (inst.Bits() & 0x00008000) == |
| 516 0x00000000 /* R(15)=0 */ && | 517 0x00000000 /* R(15)=0 */ && |
| 517 (inst.Bits() & 0x00200000) == | 518 (inst.Bits() & 0x00200000) == |
| 518 0x00000000 /* $pattern(31:0)=xxxxxxxxxx0xxxxxxxxxxxxxxxxxxxxx */) { | 519 0x00000000 /* $pattern(31:0)=xxxxxxxxxx0xxxxxxxxxxxxxxxxxxxxx */) { |
| 519 return ForbiddenCondDecoder_instance_; | 520 return ForbiddenCondDecoder_instance_; |
| 520 } | 521 } |
| 521 | 522 |
| 522 if ((inst.Bits() & 0x02500000) == | 523 if ((inst.Bits() & 0x02500000) == |
| 523 0x00500000 /* op(25:20)=0xx1x1 */ && | 524 0x00500000 /* op(25:20)=0xx1x1 */ && |
| 524 (inst.Bits() & 0x00008000) == | 525 (inst.Bits() & 0x00008000) == |
| 525 0x00008000 /* R(15)=1 */) { | 526 0x00008000 /* R(15)=1 */) { |
| 526 return ForbiddenCondDecoder_instance_; | 527 return ForbiddenCondDecoder_instance_; |
| 527 } | 528 } |
| 528 | 529 |
| 529 if ((inst.Bits() & 0x02000000) == | 530 if ((inst.Bits() & 0x03000000) == |
| 530 0x02000000 /* op(25:20)=1xxxxx */) { | 531 0x02000000 /* op(25:20)=10xxxx */) { |
| 531 return BranchImmediate24_instance_; | 532 return Actual_B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_; |
| 533 } |
| 534 |
| 535 if ((inst.Bits() & 0x03000000) == |
| 536 0x03000000 /* op(25:20)=11xxxx */) { |
| 537 return Actual_BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_1_insta
nce_; |
| 532 } | 538 } |
| 533 | 539 |
| 534 // Catch any attempt to fall though ... | 540 // Catch any attempt to fall though ... |
| 535 return not_implemented_; | 541 return not_implemented_; |
| 536 } | 542 } |
| 537 | 543 |
| 538 // Implementation of table: coprocessor_instructions_and_supervisor_call. | 544 // Implementation of table: coprocessor_instructions_and_supervisor_call. |
| 539 // Specified by: See Section A5.6 | 545 // Specified by: See Section A5.6 |
| 540 const ClassDecoder& Arm32DecoderState::decode_coprocessor_instructions_and_super
visor_call( | 546 const ClassDecoder& Arm32DecoderState::decode_coprocessor_instructions_and_super
visor_call( |
| 541 const Instruction inst) const | 547 const Instruction inst) const |
| (...skipping 2666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3208 | 3214 |
| 3209 // Catch any attempt to fall though ... | 3215 // Catch any attempt to fall though ... |
| 3210 return not_implemented_; | 3216 return not_implemented_; |
| 3211 } | 3217 } |
| 3212 | 3218 |
| 3213 const ClassDecoder& Arm32DecoderState::decode(const Instruction inst) const { | 3219 const ClassDecoder& Arm32DecoderState::decode(const Instruction inst) const { |
| 3214 return decode_ARMv7(inst); | 3220 return decode_ARMv7(inst); |
| 3215 } | 3221 } |
| 3216 | 3222 |
| 3217 } // namespace nacl_arm_dec | 3223 } // namespace nacl_arm_dec |
| OLD | NEW |