| OLD | NEW |
| 1 # ARMv7 Instruction Encodings | 1 # ARMv7 Instruction Encodings |
| 2 # | 2 # |
| 3 # This table is derived from the "ARM Architecture Reference Manual, ARMv7-A | 3 # This table is derived from the "ARM Architecture Reference Manual, ARMv7-A |
| 4 # and ARMv7-R edition" and is used here with the permission of ARM Limited. | 4 # and ARMv7-R edition" and is used here with the permission of ARM Limited. |
| 5 # Reproduction for purposes other than the development and distribution of | 5 # Reproduction for purposes other than the development and distribution of |
| 6 # Native Client may require the explicit permission of ARM Limited. | 6 # Native Client may require the explicit permission of ARM Limited. |
| 7 | 7 |
| 8 # This file defines the Native Client "instruction classes" assigned to every | 8 # This file defines the Native Client "instruction classes" assigned to every |
| 9 # possible ARMv7 instruction encoding. It is organized into a series of tables, | 9 # possible ARMv7 instruction encoding. It is organized into a series of tables, |
| 10 # and directly parallels the ARM Architecture Reference Manual cited above. | 10 # and directly parallels the ARM Architecture Reference Manual cited above. |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 # appropriate tester. We want to add class hierarchy information for | 72 # appropriate tester. We want to add class hierarchy information for |
| 73 # classes that want their tester to be defined on a superclass. | 73 # classes that want their tester to be defined on a superclass. |
| 74 # By providing this information, the generator can pick out | 74 # By providing this information, the generator can pick out |
| 75 # the corresponding baseline class tester to use, and does | 75 # the corresponding baseline class tester to use, and does |
| 76 # not need to define separate testers for derived classes of | 76 # not need to define separate testers for derived classes of |
| 77 # the baseline class tester. | 77 # the baseline class tester. |
| 78 # ############################################################# | 78 # ############################################################# |
| 79 | 79 |
| 80 class MaskedBinary2RegisterImmediateOp : Binary2RegisterImmediateOp | 80 class MaskedBinary2RegisterImmediateOp : Binary2RegisterImmediateOp |
| 81 class MaskedBinaryRegisterImmediateTest : BinaryRegisterImmediateTest | 81 class MaskedBinaryRegisterImmediateTest : BinaryRegisterImmediateTest |
| 82 class Binary3RegisterImmedShiftedOpRnNotSp : Binary3RegisterImmedShiftedOp |
| 82 | 83 |
| 83 ############################################################## | 84 ############################################################## |
| 84 # The following define decoder tables. | 85 # The following define decoder tables. |
| 85 ############################################################## | 86 ############################################################## |
| 86 | 87 |
| 87 +-- ARMv7 (See Section A5.1) | 88 +-- ARMv7 (See Section A5.1) |
| 88 | cond(31:28) op1(27:25) op(4) | 89 | cond(31:28) op1(27:25) op(4) |
| 89 | ~1111 00x - ->dp_misc | 90 | ~1111 00x - ->dp_misc |
| 90 | " 010 - ->load_store_word_byte | 91 | " 010 - ->load_store_word_byte |
| 91 | " 011 0 ->load_store_word_byte | 92 | " 011 0 ->load_store_word_byte |
| (...skipping 28 matching lines...) Expand all Loading... |
| 120 +-- dp_reg (See Section A5.2.1) | 121 +-- dp_reg (See Section A5.2.1) |
| 121 | op1(24:20) op2(11:7) op3(6:5) | 122 | op1(24:20) op2(11:7) op3(6:5) |
| 122 | 0000x - - = Binary3RegisterImmedShiftedOp | 123 | 0000x - - = Binary3RegisterImmedShiftedOp |
| 123 And_Rule_7_A1_P36 | 124 And_Rule_7_A1_P36 |
| 124 cccc0000000unnnnddddiiiiitt0mmmm | 125 cccc0000000unnnnddddiiiiitt0mmmm |
| 125 NotRdIsPcAndS | 126 NotRdIsPcAndS |
| 126 | 0001x - - = Binary3RegisterImmedShiftedOp | 127 | 0001x - - = Binary3RegisterImmedShiftedOp |
| 127 Eor_Rule_45_A1_P96 | 128 Eor_Rule_45_A1_P96 |
| 128 cccc0000001unnnnddddiiiiitt0mmmm | 129 cccc0000001unnnnddddiiiiitt0mmmm |
| 129 NotRdIsPcAndS | 130 NotRdIsPcAndS |
| 130 | 0010x - - = Binary3RegisterImmedShiftedOp | 131 | 0010x - - = Binary3RegisterImmedShiftedOpRnNotSp |
| 131 SubRule_213_A1_P422 | 132 SubRule_213_A1_P422 |
| 132 cccc0000010unnnnddddiiiiitt0mmmm | 133 cccc0000010unnnnddddiiiiitt0mmmm |
| 133 NotRdIsPcAndSOrRnIsSp | 134 NotRdIsPcAndSOrRnIsSp |
| 134 | 0011x - - = Binary3RegisterImmedShiftedOp | 135 | 0011x - - = Binary3RegisterImmedShiftedOp |
| 135 Rsb_Rule_143_P286 | 136 Rsb_Rule_143_P286 |
| 136 cccc0000011unnnnddddiiiiitt0mmmm | 137 cccc0000011unnnnddddiiiiitt0mmmm |
| 137 NotRdIsPcAndS | 138 NotRdIsPcAndS |
| 138 | 0100x - - = Binary3RegisterImmedShiftedOp | 139 | 0100x - - = Binary3RegisterImmedShiftedOpRnNotSp |
| 139 Add_Rule_6_A1_P24 | 140 Add_Rule_6_A1_P24 |
| 140 cccc0000100unnnnddddiiiiitt0mmmm | 141 cccc0000100unnnnddddiiiiitt0mmmm |
| 141 NotRdIsPcAndSOrRnIsSp | 142 NotRdIsPcAndSOrRnIsSp |
| 142 | 0101x - - = Binary3RegisterImmedShiftedOp | 143 | 0101x - - = Binary3RegisterImmedShiftedOp |
| 143 Adc_Rule_2_A1_P16 | 144 Adc_Rule_2_A1_P16 |
| 144 cccc0000101unnnnddddiiiiitt0mmmm | 145 cccc0000101unnnnddddiiiiitt0mmmm |
| 145 NotRdIsPcAndS | 146 NotRdIsPcAndS |
| 146 | 0110x - - = Binary3RegisterImmedShiftedOp | 147 | 0110x - - = Binary3RegisterImmedShiftedOp |
| 147 Sbc_Rule_152_A1_P304 | 148 Sbc_Rule_152_A1_P304 |
| 148 cccc0000110unnnnddddiiiiitt0mmmm | 149 cccc0000110unnnnddddiiiiitt0mmmm |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 | 10011 - =Test # TEQ(immediate) | 269 | 10011 - =Test # TEQ(immediate) |
| 269 | 10101 - =Test # CMP(immediate) | 270 | 10101 - =Test # CMP(immediate) |
| 270 | 10111 - =Test # CMN(immediate) | 271 | 10111 - =Test # CMN(immediate) |
| 271 | 1100x - =DataProc # ORR(immediate) | 272 | 1100x - =DataProc # ORR(immediate) |
| 272 | 1101x - =DataProc # MOV(immediate) | 273 | 1101x - =DataProc # MOV(immediate) |
| 273 # Note: The following instruction is used to mask | 274 # Note: The following instruction is used to mask |
| 274 # memory addresses. | 275 # memory addresses. |
| 275 | 1110x - = MaskedBinary2RegisterImmediateOp => ImmediateBic | 276 | 1110x - = MaskedBinary2RegisterImmediateOp => ImmediateBic |
| 276 Bic_Rule_19_A1_P50 | 277 Bic_Rule_19_A1_P50 |
| 277 cccc0011110unnnnddddiiiiiiiiiiii | 278 cccc0011110unnnnddddiiiiiiiiiiii |
| 278 RdCanBePcAndNotRdIsPcAndS | 279 NotRdIsPcAndS |
| 279 | 1111x - =DataProc # MVN(immediate) | 280 | 1111x - =DataProc # MVN(immediate) |
| 280 +-- | 281 +-- |
| 281 | 282 |
| 282 +-- mult (See Section A5.2.5) | 283 +-- mult (See Section A5.2.5) |
| 283 | op(23:20) | 284 | op(23:20) |
| 284 | 000x =Multiply # MUL | 285 | 000x =Multiply # MUL |
| 285 | 001x =Multiply # MLA | 286 | 001x =Multiply # MLA |
| 286 | 0100 =LongMultiply(v6) # UMAAL | 287 | 0100 =LongMultiply(v6) # UMAAL |
| 287 | 0101 =Undefined | 288 | 0101 =Undefined |
| 288 | 0110 =Multiply(v6T2) # MLS | 289 | 0110 =Multiply(v6T2) # MLS |
| (...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 804 | " 1001 " | 805 | " 1001 " |
| 805 | " 1101 =VectorLoad # VLD2(single, all lanes) | 806 | " 1101 =VectorLoad # VLD2(single, all lanes) |
| 806 | " 0x10 =VectorLoad # VLD3(single) | 807 | " 0x10 =VectorLoad # VLD3(single) |
| 807 | " 1010 " | 808 | " 1010 " |
| 808 | " 1110 =VectorLoad # VLD3(single, all lanes) | 809 | " 1110 =VectorLoad # VLD3(single, all lanes) |
| 809 | " 0x11 =VectorLoad # VLD4(single) | 810 | " 0x11 =VectorLoad # VLD4(single) |
| 810 | " 1011 " | 811 | " 1011 " |
| 811 | " 1111 =VectorLoad # VLD4(single, all lanes) | 812 | " 1111 =VectorLoad # VLD4(single, all lanes) |
| 812 | else: =Undefined # Note on page A7-27 | 813 | else: =Undefined # Note on page A7-27 |
| 813 +-- | 814 +-- |
| OLD | NEW |