| 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_BFC_cccc0111110mmmmmddddlllll0011111_case_1_instance_() | 23 , Actual_BFC_cccc0111110mmmmmddddlllll0011111_case_1_instance_() |
| 24 , Actual_BFI_cccc0111110mmmmmddddlllll001nnnn_case_1_instance_() | 24 , Actual_BFI_cccc0111110mmmmmddddlllll001nnnn_case_1_instance_() |
| 25 , Actual_BIC_immediate_cccc0011110snnnnddddiiiiiiiiiiii_case_1_instance_() | 25 , Actual_BIC_immediate_cccc0011110snnnnddddiiiiiiiiiiii_case_1_instance_() |
| 26 , Actual_BKPT_cccc00010010iiiiiiiiiiii0111iiii_case_1_instance_() | 26 , Actual_BKPT_cccc00010010iiiiiiiiiiii0111iiii_case_1_instance_() |
| 27 , Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_() | 27 , Actual_BLX_immediate_1111101hiiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_() |
| 28 , Actual_BLX_register_cccc000100101111111111110011mmmm_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_() |
| 29 , Actual_Bx_cccc000100101111111111110001mmmm_case_1_instance_() | 31 , Actual_Bx_cccc000100101111111111110001mmmm_case_1_instance_() |
| 30 , Actual_CLZ_cccc000101101111dddd11110001mmmm_case_1_instance_() | 32 , Actual_CLZ_cccc000101101111dddd11110001mmmm_case_1_instance_() |
| 31 , Actual_CMN_immediate_cccc00110111nnnn0000iiiiiiiiiiii_case_1_instance_() | 33 , Actual_CMN_immediate_cccc00110111nnnn0000iiiiiiiiiiii_case_1_instance_() |
| 32 , Actual_CMN_register_cccc00010111nnnn0000iiiiitt0mmmm_case_1_instance_() | 34 , Actual_CMN_register_cccc00010111nnnn0000iiiiitt0mmmm_case_1_instance_() |
| 33 , Actual_CMN_register_shifted_register_cccc00010111nnnn0000ssss0tt1mmmm_case_1
_instance_() | 35 , Actual_CMN_register_shifted_register_cccc00010111nnnn0000ssss0tt1mmmm_case_1
_instance_() |
| 36 , Actual_LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_1_instance_() |
| 34 , Actual_LDRB_immediate_cccc010pu1w1nnnnttttiiiiiiiiiiii_case_1_instance_() | 37 , Actual_LDRB_immediate_cccc010pu1w1nnnnttttiiiiiiiiiiii_case_1_instance_() |
| 35 , Actual_LDRB_literal_cccc0101u1011111ttttiiiiiiiiiiii_case_1_instance_() | 38 , Actual_LDRB_literal_cccc0101u1011111ttttiiiiiiiiiiii_case_1_instance_() |
| 36 , Actual_LDRB_register_cccc011pu1w1nnnnttttiiiiitt0mmmm_case_1_instance_() | 39 , Actual_LDRB_register_cccc011pu1w1nnnnttttiiiiitt0mmmm_case_1_instance_() |
| 37 , Actual_LDRD_immediate_cccc000pu1w0nnnnttttiiii1101iiii_case_1_instance_() | 40 , Actual_LDRD_immediate_cccc000pu1w0nnnnttttiiii1101iiii_case_1_instance_() |
| 38 , Actual_LDRD_literal_cccc0001u1001111ttttiiii1101iiii_case_1_instance_() | 41 , Actual_LDRD_literal_cccc0001u1001111ttttiiii1101iiii_case_1_instance_() |
| 39 , Actual_LDRD_register_cccc000pu0w0nnnntttt00001101mmmm_case_1_instance_() | 42 , Actual_LDRD_register_cccc000pu0w0nnnntttt00001101mmmm_case_1_instance_() |
| 40 , Actual_LDREXB_cccc00011101nnnntttt111110011111_case_1_instance_() | 43 , Actual_LDREXB_cccc00011101nnnntttt111110011111_case_1_instance_() |
| 41 , Actual_LDREXD_cccc00011011nnnntttt111110011111_case_1_instance_() | 44 , Actual_LDREXD_cccc00011011nnnntttt111110011111_case_1_instance_() |
| 42 , Actual_LDRH_immediate_cccc000pu1w1nnnnttttiiii1011iiii_case_1_instance_() | 45 , Actual_LDRH_immediate_cccc000pu1w1nnnnttttiiii1011iiii_case_1_instance_() |
| 43 , Actual_LDRH_literal_cccc000pu1w11111ttttiiii1011iiii_case_1_instance_() | 46 , Actual_LDRH_literal_cccc000pu1w11111ttttiiii1011iiii_case_1_instance_() |
| (...skipping 14 matching lines...) Expand all Loading... |
| 58 , Actual_ORR_immediate_cccc0011100snnnnddddiiiiiiiiiiii_case_1_instance_() | 61 , Actual_ORR_immediate_cccc0011100snnnnddddiiiiiiiiiiii_case_1_instance_() |
| 59 , Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_() | 62 , Actual_PKH_cccc01101000nnnnddddiiiiit01mmmm_case_1_instance_() |
| 60 , Actual_SBFX_cccc0111101wwwwwddddlllll101nnnn_case_1_instance_() | 63 , Actual_SBFX_cccc0111101wwwwwddddlllll101nnnn_case_1_instance_() |
| 61 , Actual_SDIV_cccc01110001dddd1111mmmm0001nnnn_case_1_instance_() | 64 , Actual_SDIV_cccc01110001dddd1111mmmm0001nnnn_case_1_instance_() |
| 62 , Actual_SMLAD_cccc01110000ddddaaaammmm00m1nnnn_case_1_instance_() | 65 , Actual_SMLAD_cccc01110000ddddaaaammmm00m1nnnn_case_1_instance_() |
| 63 , Actual_SMLALBB_SMLALBT_SMLALTB_SMLALTT_cccc00010100hhhhllllmmmm1xx0nnnn_case
_1_instance_() | 66 , Actual_SMLALBB_SMLALBT_SMLALTB_SMLALTT_cccc00010100hhhhllllmmmm1xx0nnnn_case
_1_instance_() |
| 64 , Actual_SMLALD_cccc01110100hhhhllllmmmm00m1nnnn_case_1_instance_() | 67 , Actual_SMLALD_cccc01110100hhhhllllmmmm00m1nnnn_case_1_instance_() |
| 65 , Actual_SMLAL_A1_cccc0000111shhhhllllmmmm1001nnnn_case_1_instance_() | 68 , Actual_SMLAL_A1_cccc0000111shhhhllllmmmm1001nnnn_case_1_instance_() |
| 66 , Actual_SMULBB_SMULBT_SMULTB_SMULTT_cccc00010110dddd0000mmmm1xx0nnnn_case_1_i
nstance_() | 69 , Actual_SMULBB_SMULBT_SMULTB_SMULTT_cccc00010110dddd0000mmmm1xx0nnnn_case_1_i
nstance_() |
| 67 , Actual_SMULL_A1_cccc0000110shhhhllllmmmm1001nnnn_case_1_instance_() | 70 , Actual_SMULL_A1_cccc0000110shhhhllllmmmm1001nnnn_case_1_instance_() |
| 71 , Actual_STMDA_STMED_cccc100000w0nnnnrrrrrrrrrrrrrrrr_case_1_instance_() |
| 68 , Actual_STRB_immediate_cccc010pu1w0nnnnttttiiiiiiiiiiii_case_1_instance_() | 72 , Actual_STRB_immediate_cccc010pu1w0nnnnttttiiiiiiiiiiii_case_1_instance_() |
| 69 , Actual_STRB_register_cccc011pu1w0nnnnttttiiiiitt0mmmm_case_1_instance_() | 73 , Actual_STRB_register_cccc011pu1w0nnnnttttiiiiitt0mmmm_case_1_instance_() |
| 70 , Actual_STRD_immediate_cccc000pu1w0nnnnttttiiii1111iiii_case_1_instance_() | 74 , Actual_STRD_immediate_cccc000pu1w0nnnnttttiiii1111iiii_case_1_instance_() |
| 71 , Actual_STRD_register_cccc000pu0w0nnnntttt00001111mmmm_case_1_instance_() | 75 , Actual_STRD_register_cccc000pu0w0nnnntttt00001111mmmm_case_1_instance_() |
| 72 , Actual_STREXB_cccc00011100nnnndddd11111001tttt_case_1_instance_() | 76 , Actual_STREXB_cccc00011100nnnndddd11111001tttt_case_1_instance_() |
| 73 , Actual_STREXD_cccc00011010nnnndddd11111001tttt_case_1_instance_() | 77 , Actual_STREXD_cccc00011010nnnndddd11111001tttt_case_1_instance_() |
| 74 , Actual_STRH_immediate_cccc000pu1w0nnnnttttiiii1011iiii_case_1_instance_() | 78 , Actual_STRH_immediate_cccc000pu1w0nnnnttttiiii1011iiii_case_1_instance_() |
| 75 , Actual_STRH_register_cccc000pu0w0nnnntttt00001011mmmm_case_1_instance_() | 79 , Actual_STRH_register_cccc000pu0w0nnnntttt00001011mmmm_case_1_instance_() |
| 76 , Actual_STR_immediate_cccc010pu0w0nnnnttttiiiiiiiiiiii_case_1_instance_() | 80 , Actual_STR_immediate_cccc010pu0w0nnnnttttiiiiiiiiiiii_case_1_instance_() |
| 77 , Actual_STR_register_cccc011pd0w0nnnnttttiiiiitt0mmmm_case_1_instance_() | 81 , Actual_STR_register_cccc011pd0w0nnnnttttiiiiitt0mmmm_case_1_instance_() |
| 78 , Actual_SXTAB16_cccc01101000nnnnddddrr000111mmmm_case_1_instance_() | 82 , Actual_SXTAB16_cccc01101000nnnnddddrr000111mmmm_case_1_instance_() |
| 79 , Actual_TST_immediate_cccc00110001nnnn0000iiiiiiiiiiii_case_1_instance_() | 83 , Actual_TST_immediate_cccc00110001nnnn0000iiiiiiiiiiii_case_1_instance_() |
| 80 , Actual_Unnamed_case_1_instance_() | 84 , Actual_Unnamed_case_1_instance_() |
| 81 , BranchImmediate24_instance_() | |
| 82 , CondVfpOp_instance_() | 85 , CondVfpOp_instance_() |
| 83 , DataBarrier_instance_() | 86 , DataBarrier_instance_() |
| 84 , Deprecated_instance_() | 87 , Deprecated_instance_() |
| 85 , DuplicateToAdvSIMDRegisters_instance_() | 88 , DuplicateToAdvSIMDRegisters_instance_() |
| 86 , Forbidden_instance_() | 89 , Forbidden_instance_() |
| 87 , ForbiddenCondDecoder_instance_() | 90 , ForbiddenCondDecoder_instance_() |
| 88 , InstructionBarrier_instance_() | 91 , InstructionBarrier_instance_() |
| 89 , LoadRegisterList_instance_() | |
| 90 , LoadVectorRegister_instance_() | 92 , LoadVectorRegister_instance_() |
| 91 , LoadVectorRegisterList_instance_() | 93 , LoadVectorRegisterList_instance_() |
| 92 , MoveDoubleVfpRegisterOp_instance_() | 94 , MoveDoubleVfpRegisterOp_instance_() |
| 93 , MoveVfpRegisterOp_instance_() | 95 , MoveVfpRegisterOp_instance_() |
| 94 , MoveVfpRegisterOpWithTypeSel_instance_() | 96 , MoveVfpRegisterOpWithTypeSel_instance_() |
| 95 , PermanentlyUndefined_instance_() | 97 , PermanentlyUndefined_instance_() |
| 96 , PreloadRegisterImm12Op_instance_() | 98 , PreloadRegisterImm12Op_instance_() |
| 97 , PreloadRegisterPairOp_instance_() | 99 , PreloadRegisterPairOp_instance_() |
| 98 , StoreRegisterList_instance_() | |
| 99 , StoreVectorRegister_instance_() | 100 , StoreVectorRegister_instance_() |
| 100 , StoreVectorRegisterList_instance_() | 101 , StoreVectorRegisterList_instance_() |
| 101 , Undefined_instance_() | 102 , Undefined_instance_() |
| 102 , Unpredictable_instance_() | 103 , Unpredictable_instance_() |
| 103 , VcvtPtAndFixedPoint_FloatingPoint_instance_() | 104 , VcvtPtAndFixedPoint_FloatingPoint_instance_() |
| 104 , Vector1RegisterImmediate_BIT_instance_() | 105 , Vector1RegisterImmediate_BIT_instance_() |
| 105 , Vector1RegisterImmediate_MOV_instance_() | 106 , Vector1RegisterImmediate_MOV_instance_() |
| 106 , Vector1RegisterImmediate_MVN_instance_() | 107 , Vector1RegisterImmediate_MVN_instance_() |
| 107 , Vector2RegisterMiscellaneous_CVT_F2I_instance_() | 108 , Vector2RegisterMiscellaneous_CVT_F2I_instance_() |
| 108 , Vector2RegisterMiscellaneous_CVT_H2S_instance_() | 109 , Vector2RegisterMiscellaneous_CVT_H2S_instance_() |
| (...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 } | 490 } |
| 490 | 491 |
| 491 // Implementation of table: branch_branch_with_link_and_block_data_transfer. | 492 // Implementation of table: branch_branch_with_link_and_block_data_transfer. |
| 492 // Specified by: See Section A5.5 | 493 // Specified by: See Section A5.5 |
| 493 const ClassDecoder& Arm32DecoderState::decode_branch_branch_with_link_and_block_
data_transfer( | 494 const ClassDecoder& Arm32DecoderState::decode_branch_branch_with_link_and_block_
data_transfer( |
| 494 const Instruction inst) const | 495 const Instruction inst) const |
| 495 { | 496 { |
| 496 UNREFERENCED_PARAMETER(inst); | 497 UNREFERENCED_PARAMETER(inst); |
| 497 if ((inst.Bits() & 0x02500000) == | 498 if ((inst.Bits() & 0x02500000) == |
| 498 0x00000000 /* op(25:20)=0xx0x0 */) { | 499 0x00000000 /* op(25:20)=0xx0x0 */) { |
| 499 return StoreRegisterList_instance_; | 500 return Actual_STMDA_STMED_cccc100000w0nnnnrrrrrrrrrrrrrrrr_case_1_instance_; |
| 500 } | 501 } |
| 501 | 502 |
| 502 if ((inst.Bits() & 0x02500000) == | 503 if ((inst.Bits() & 0x02500000) == |
| 503 0x00100000 /* op(25:20)=0xx0x1 */) { | 504 0x00100000 /* op(25:20)=0xx0x1 */) { |
| 504 return LoadRegisterList_instance_; | 505 return Actual_LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_1_instance_; |
| 505 } | 506 } |
| 506 | 507 |
| 507 if ((inst.Bits() & 0x02500000) == | 508 if ((inst.Bits() & 0x02500000) == |
| 508 0x00400000 /* op(25:20)=0xx1x0 */ && | 509 0x00400000 /* op(25:20)=0xx1x0 */ && |
| 509 (inst.Bits() & 0x00200000) == | 510 (inst.Bits() & 0x00200000) == |
| 510 0x00000000 /* $pattern(31:0)=xxxxxxxxxx0xxxxxxxxxxxxxxxxxxxxx */) { | 511 0x00000000 /* $pattern(31:0)=xxxxxxxxxx0xxxxxxxxxxxxxxxxxxxxx */) { |
| 511 return ForbiddenCondDecoder_instance_; | 512 return ForbiddenCondDecoder_instance_; |
| 512 } | 513 } |
| 513 | 514 |
| 514 if ((inst.Bits() & 0x02500000) == | 515 if ((inst.Bits() & 0x02500000) == |
| 515 0x00500000 /* op(25:20)=0xx1x1 */ && | 516 0x00500000 /* op(25:20)=0xx1x1 */ && |
| 516 (inst.Bits() & 0x00008000) == | 517 (inst.Bits() & 0x00008000) == |
| 517 0x00000000 /* R(15)=0 */ && | 518 0x00000000 /* R(15)=0 */ && |
| 518 (inst.Bits() & 0x00200000) == | 519 (inst.Bits() & 0x00200000) == |
| 519 0x00000000 /* $pattern(31:0)=xxxxxxxxxx0xxxxxxxxxxxxxxxxxxxxx */) { | 520 0x00000000 /* $pattern(31:0)=xxxxxxxxxx0xxxxxxxxxxxxxxxxxxxxx */) { |
| 520 return ForbiddenCondDecoder_instance_; | 521 return ForbiddenCondDecoder_instance_; |
| 521 } | 522 } |
| 522 | 523 |
| 523 if ((inst.Bits() & 0x02500000) == | 524 if ((inst.Bits() & 0x02500000) == |
| 524 0x00500000 /* op(25:20)=0xx1x1 */ && | 525 0x00500000 /* op(25:20)=0xx1x1 */ && |
| 525 (inst.Bits() & 0x00008000) == | 526 (inst.Bits() & 0x00008000) == |
| 526 0x00008000 /* R(15)=1 */) { | 527 0x00008000 /* R(15)=1 */) { |
| 527 return ForbiddenCondDecoder_instance_; | 528 return ForbiddenCondDecoder_instance_; |
| 528 } | 529 } |
| 529 | 530 |
| 530 if ((inst.Bits() & 0x02000000) == | 531 if ((inst.Bits() & 0x03000000) == |
| 531 0x02000000 /* op(25:20)=1xxxxx */) { | 532 0x02000000 /* op(25:20)=10xxxx */) { |
| 532 return BranchImmediate24_instance_; | 533 return Actual_B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_1_instance_; |
| 534 } |
| 535 |
| 536 if ((inst.Bits() & 0x03000000) == |
| 537 0x03000000 /* op(25:20)=11xxxx */) { |
| 538 return Actual_BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_1_insta
nce_; |
| 533 } | 539 } |
| 534 | 540 |
| 535 // Catch any attempt to fall though ... | 541 // Catch any attempt to fall though ... |
| 536 return not_implemented_; | 542 return not_implemented_; |
| 537 } | 543 } |
| 538 | 544 |
| 539 // Implementation of table: coprocessor_instructions_and_supervisor_call. | 545 // Implementation of table: coprocessor_instructions_and_supervisor_call. |
| 540 // Specified by: See Section A5.6 | 546 // Specified by: See Section A5.6 |
| 541 const ClassDecoder& Arm32DecoderState::decode_coprocessor_instructions_and_super
visor_call( | 547 const ClassDecoder& Arm32DecoderState::decode_coprocessor_instructions_and_super
visor_call( |
| 542 const Instruction inst) const | 548 const Instruction inst) const |
| (...skipping 2666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3209 | 3215 |
| 3210 // Catch any attempt to fall though ... | 3216 // Catch any attempt to fall though ... |
| 3211 return not_implemented_; | 3217 return not_implemented_; |
| 3212 } | 3218 } |
| 3213 | 3219 |
| 3214 const ClassDecoder& Arm32DecoderState::decode(const Instruction inst) const { | 3220 const ClassDecoder& Arm32DecoderState::decode(const Instruction inst) const { |
| 3215 return decode_ARMv7(inst); | 3221 return decode_ARMv7(inst); |
| 3216 } | 3222 } |
| 3217 | 3223 |
| 3218 } // namespace nacl_arm_dec | 3224 } // namespace nacl_arm_dec |
| OLD | NEW |