Chromium Code Reviews| 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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 107 # By providing this information, the generator can pick out | 107 # By providing this information, the generator can pick out |
| 108 # the corresponding baseline class tester to use, and does | 108 # the corresponding baseline class tester to use, and does |
| 109 # not need to define separate testers for derived classes of | 109 # not need to define separate testers for derived classes of |
| 110 # the baseline class tester. | 110 # the baseline class tester. |
| 111 # ############################################################# | 111 # ############################################################# |
| 112 | 112 |
| 113 class BreakPointAndConstantPoolHead : Immediate16Use | 113 class BreakPointAndConstantPoolHead : Immediate16Use |
| 114 class Binary3RegisterImmedShiftedOpRegsNotPc : Binary3RegisterImmedShiftedOp | 114 class Binary3RegisterImmedShiftedOpRegsNotPc : Binary3RegisterImmedShiftedOp |
| 115 class ForbiddenCondNop : UnsafeCondNop | 115 class ForbiddenCondNop : UnsafeCondNop |
| 116 class ForbiddenUncondNop : UnsafeUncondNop | 116 class ForbiddenUncondNop : UnsafeUncondNop |
| 117 class LoadRegisterList : LoadStoreRegisterList | 117 class LoadRegisterList : LoadStoreRegisterList |
| 118 class LoadStoreVectorRegister : LoadStoreVectorOp | 118 class LoadStoreVectorRegister : LoadStoreVectorOp |
| 119 class LoadVectorRegister : LoadStoreVectorRegister | 119 class LoadVectorRegister : LoadStoreVectorRegister |
| 120 class LoadVectorRegisterList : LoadStoreVectorRegisterList | 120 class LoadVectorRegisterList : LoadStoreVectorRegisterList |
| 121 class Load3RegisterDoubleOp : LoadStore3RegisterDoubleOp | 121 class Load3RegisterDoubleOp : LoadStore3RegisterDoubleOp |
| 122 class Load2RegisterImm8DoubleOp : LoadStore2RegisterImm8DoubleOp | 122 class Load2RegisterImm8DoubleOp : LoadStore2RegisterImm8DoubleOp |
| 123 class Load2RegisterImm8Op : LoadStore2RegisterImm8Op | 123 class Load2RegisterImm8Op : LoadStore2RegisterImm8Op |
| 124 class Load2RegisterImm12Op : LoadStore2RegisterImm12Op | 124 class Load2RegisterImm12Op : LoadStore2RegisterImm12Op |
| 125 class Load3RegisterImm5Op : LoadStore3RegisterImm5Op | 125 class Load3RegisterImm5Op : LoadStore3RegisterImm5Op |
| 126 class Load3RegisterOp : LoadStore3RegisterOp | 126 class Load3RegisterOp : LoadStore3RegisterOp |
| 127 class MaskedBinary2RegisterImmediateOp : Binary2RegisterImmediateOp | 127 class MaskedBinary2RegisterImmediateOp : Binary2RegisterImmediateOp |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 222 cccc0000110unnnnddddiiiiitt0mmmm | 222 cccc0000110unnnnddddiiiiitt0mmmm |
| 223 NotRdIsPcAndS | 223 NotRdIsPcAndS |
| 224 | 0111x - - = Binary3RegisterImmedShiftedOp | 224 | 0111x - - = Binary3RegisterImmedShiftedOp |
| 225 => Defs12To15 | 225 => Defs12To15 |
| 226 Rsc_Rule_146_A1_P292 | 226 Rsc_Rule_146_A1_P292 |
| 227 cccc0000111unnnnddddiiiiitt0mmmm | 227 cccc0000111unnnnddddiiiiitt0mmmm |
| 228 NotRdIsPcAndS | 228 NotRdIsPcAndS |
| 229 | 10001 - - = Binary2RegisterImmedShiftedTest | 229 | 10001 - - = Binary2RegisterImmedShiftedTest |
| 230 => DontCareInst | 230 => DontCareInst |
| 231 Tst_Rule_231_A1_P456 | 231 Tst_Rule_231_A1_P456 |
| 232 cccc00010001nnnn0000iiiiitt0mmmm | 232 cccc00010001nnnn0000iiiiitt0mmmm |
| 233 | 10011 - - = Binary2RegisterImmedShiftedTest | 233 | 10011 - - = Binary2RegisterImmedShiftedTest |
| 234 => DontCareInst | 234 => DontCareInst |
| 235 Teq_Rule_228_A1_P450 | 235 Teq_Rule_228_A1_P450 |
| 236 cccc00010011nnnn0000iiiiitt0mmmm | 236 cccc00010011nnnn0000iiiiitt0mmmm |
| 237 | 10101 - - = Binary2RegisterImmedShiftedTest | 237 | 10101 - - = Binary2RegisterImmedShiftedTest |
| 238 => DontCareInst | 238 => DontCareInst |
| 239 Cmp_Rule_36_A1_P82 | 239 Cmp_Rule_36_A1_P82 |
| 240 cccc00010101nnnn0000iiiiitt0mmmm | 240 cccc00010101nnnn0000iiiiitt0mmmm |
| 241 | 10111 - - = Binary2RegisterImmedShiftedTest | 241 | 10111 - - = Binary2RegisterImmedShiftedTest |
| 242 => DontCareInst | 242 => DontCareInst |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 304 | 0010x - = Binary4RegisterShiftedOp | 304 | 0010x - = Binary4RegisterShiftedOp |
| 305 => Defs12To15RdRnRsRmNotPc | 305 => Defs12To15RdRnRsRmNotPc |
| 306 Sub_Rule_214_A1_P424 | 306 Sub_Rule_214_A1_P424 |
| 307 cccc0000010snnnnddddssss0tt1mmmm RegsNotPc | 307 cccc0000010snnnnddddssss0tt1mmmm RegsNotPc |
| 308 | 0011x - = Binary4RegisterShiftedOp | 308 | 0011x - = Binary4RegisterShiftedOp |
| 309 => Defs12To15RdRnRsRmNotPc | 309 => Defs12To15RdRnRsRmNotPc |
| 310 Rsb_Rule_144_A1_P288 | 310 Rsb_Rule_144_A1_P288 |
| 311 cccc0000011snnnnddddssss0tt1mmmm RegsNotPc | 311 cccc0000011snnnnddddssss0tt1mmmm RegsNotPc |
| 312 | 0100x - = Binary4RegisterShiftedOp | 312 | 0100x - = Binary4RegisterShiftedOp |
| 313 => Defs12To15RdRnRsRmNotPc | 313 => Defs12To15RdRnRsRmNotPc |
| 314 Add_Rule_7_A1_P26 | 314 Add_Rule_7_A1_P26 |
| 315 cccc0000100snnnnddddssss0tt1mmmm RegsNotPc | 315 cccc0000100snnnnddddssss0tt1mmmm RegsNotPc |
| 316 | 0101x - = Binary4RegisterShiftedOp | 316 | 0101x - = Binary4RegisterShiftedOp |
| 317 => Defs12To15RdRnRsRmNotPc | 317 => Defs12To15RdRnRsRmNotPc |
| 318 Adc_Rule_3_A1_P18 | 318 Adc_Rule_3_A1_P18 |
| 319 cccc0000101snnnnddddssss0tt1mmmm RegsNotPc | 319 cccc0000101snnnnddddssss0tt1mmmm RegsNotPc |
| 320 | 0110x - = Binary4RegisterShiftedOp | 320 | 0110x - = Binary4RegisterShiftedOp |
| 321 => Defs12To15RdRnRsRmNotPc | 321 => Defs12To15RdRnRsRmNotPc |
| 322 Sbc_Rule_153_A1_P306 | 322 Sbc_Rule_153_A1_P306 |
| 323 cccc0000110snnnnddddssss0tt1mmmm RegsNotPc | 323 cccc0000110snnnnddddssss0tt1mmmm RegsNotPc |
| 324 | 0111x - = Binary4RegisterShiftedOp | 324 | 0111x - = Binary4RegisterShiftedOp |
| 325 => Defs12To15RdRnRsRmNotPc | 325 => Defs12To15RdRnRsRmNotPc |
| 326 Rsc_Rule_147_A1_P294 | 326 Rsc_Rule_147_A1_P294 |
| 327 cccc0000111snnnnddddssss0tt1mmmm RegsNotPc | 327 cccc0000111snnnnddddssss0tt1mmmm RegsNotPc |
| 328 # TODO(jfb) op==10xx0 should be unreachable from here: | 328 # TODO(jfb) op==10xx0 should be unreachable from here: |
| 329 # the previous table should handle it. | 329 # the previous table should handle it. |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 405 Adr_Rule_10_A2_P32 | 405 Adr_Rule_10_A2_P32 |
| 406 cccc001001001111ddddiiiiiiiiiiii | 406 cccc001001001111ddddiiiiiiiiiiii |
| 407 | 00101 1111 = Forbidden # SUBS PC, LR and related instructions | 407 | 00101 1111 = Forbidden # SUBS PC, LR and related instructions |
| 408 | 0011x - = Binary2RegisterImmediateOp | 408 | 0011x - = Binary2RegisterImmediateOp |
| 409 => Defs12To15 | 409 => Defs12To15 |
| 410 Rsb_Rule_142_A1_P284 | 410 Rsb_Rule_142_A1_P284 |
| 411 cccc0010011snnnnddddiiiiiiiiiiii NotRdIsPcAndS | 411 cccc0010011snnnnddddiiiiiiiiiiii NotRdIsPcAndS |
| 412 | 0100x ~1111 = Binary2RegisterImmediateOp | 412 | 0100x ~1111 = Binary2RegisterImmediateOp |
| 413 => Defs12To15 | 413 => Defs12To15 |
| 414 Add_Rule_5_A1_P22 | 414 Add_Rule_5_A1_P22 |
| 415 cccc0010100snnnnddddiiiiiiiiiiii | 415 cccc0010100snnnnddddiiiiiiiiiiii |
| 416 NeitherRdIsPcAndSNorRnIsPcAndNotS | 416 NeitherRdIsPcAndSNorRnIsPcAndNotS |
| 417 # Note: Table says that op=0100x for ADR, but | 417 # Note: Table says that op=0100x for ADR, but |
| 418 # patterns for ADR do not match (page A8-32). | 418 # patterns for ADR do not match (page A8-32). |
| 419 # Causes parsing conflicts with ADD (previous | 419 # Causes parsing conflicts with ADD (previous |
| 420 # row). Added restriction to ADR that bit 20 | 420 # row). Added restriction to ADR that bit 20 |
| 421 # (updates flags register) must be 0 (rather than | 421 # (updates flags register) must be 0 (rather than |
| 422 # x), to match what is on A8.6.10 (page A8-32). | 422 # x), to match what is on A8.6.10 (page A8-32). |
| 423 # Note that this also matches restrictions of | 423 # Note that this also matches restrictions of |
| 424 # A8.6.5 (page A8-22). | 424 # A8.6.5 (page A8-22). |
| 425 | 01000 1111 = Unary1RegisterImmediateOp | 425 | 01000 1111 = Unary1RegisterImmediateOp |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 501 cccc00000100hhhhllllmmmm1001nnnn RegsNotPc (v6) | 501 cccc00000100hhhhllllmmmm1001nnnn RegsNotPc (v6) |
| 502 | 0101 = Undefined | 502 | 0101 = Undefined |
| 503 | 0110 = Binary4RegisterDualOp | 503 | 0110 = Binary4RegisterDualOp |
| 504 => Defs16To19CondsDontCareRdRaRmRnNotPc | 504 => Defs16To19CondsDontCareRdRaRmRnNotPc |
| 505 Mls_Rule_95_A1_P192 | 505 Mls_Rule_95_A1_P192 |
| 506 cccc00000110ddddaaaammmm1001nnnn RegsNotPc (v6T2) | 506 cccc00000110ddddaaaammmm1001nnnn RegsNotPc (v6T2) |
| 507 | 0111 = Undefined | 507 | 0111 = Undefined |
| 508 | 100x = Binary4RegisterDualResult | 508 | 100x = Binary4RegisterDualResult |
| 509 => Defs12To19CondsDontCareRdRmRnNotPc | 509 => Defs12To19CondsDontCareRdRmRnNotPc |
| 510 Umull_Rule_246_A1_P486 | 510 Umull_Rule_246_A1_P486 |
| 511 cccc0000100shhhhllllmmmm1001nnnn RegsNotPc | 511 cccc0000100shhhhllllmmmm1001nnnn RegsNotPc |
| 512 | 101x = Binary4RegisterDualResult | 512 | 101x = Binary4RegisterDualResult |
| 513 => Defs12To19CondsDontCareRdRmRnNotPc | 513 => Defs12To19CondsDontCareRdRmRnNotPc |
| 514 Umlal_Rule_245_A1_P484 | 514 Umlal_Rule_245_A1_P484 |
| 515 cccc0000101shhhhllllmmmm1001nnnn RegsNotPc | 515 cccc0000101shhhhllllmmmm1001nnnn RegsNotPc |
| 516 | 110x = Binary4RegisterDualResult | 516 | 110x = Binary4RegisterDualResult |
| 517 => Defs12To19CondsDontCareRdRmRnNotPc | 517 => Defs12To19CondsDontCareRdRmRnNotPc |
| 518 Smull_Rule_179_A1_P356 | 518 Smull_Rule_179_A1_P356 |
| 519 cccc0000110shhhhllllmmmm1001nnnn RegsNotPc | 519 cccc0000110shhhhllllmmmm1001nnnn RegsNotPc |
| 520 | 111x = Binary4RegisterDualResult | 520 | 111x = Binary4RegisterDualResult |
| 521 => Defs12To19CondsDontCareRdRmRnNotPc | 521 => Defs12To19CondsDontCareRdRmRnNotPc |
| 522 Smlal_Rule_168_A1_P334 | 522 Smlal_Rule_168_A1_P334 |
| 523 cccc0000111shhhhllllmmmm1001nnnn RegsNotPc | 523 cccc0000111shhhhllllmmmm1001nnnn RegsNotPc |
| 524 +-- | 524 +-- |
| 525 | 525 |
| 526 +-- saturating_addition_and_subtraction (See Section A5.2.6) | 526 +-- saturating_addition_and_subtraction (See Section A5.2.6) |
| 527 | op(22:21) | 527 | op(22:21) |
| 528 | 00 = Binary3RegisterOpAltB | 528 | 00 = Binary3RegisterOpAltB |
| 529 => Defs12To15CondsDontCareRnRdRmNotPc | 529 => Defs12To15CondsDontCareRnRdRmNotPc |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 555 # bit is in bit 6. | 555 # bit is in bit 6. |
| 556 | 01 0 = Binary4RegisterDualOp | 556 | 01 0 = Binary4RegisterDualOp |
| 557 => Defs16To19CondsDontCareRdRaRmRnNotPc | 557 => Defs16To19CondsDontCareRdRaRmRnNotPc |
| 558 Smlawx_Rule_171_A1_340 | 558 Smlawx_Rule_171_A1_340 |
| 559 cccc00010010ddddaaaammmm1x00nnnn RegsNotPc (v5TE) | 559 cccc00010010ddddaaaammmm1x00nnnn RegsNotPc (v5TE) |
| 560 # Implements Smulwb and Smulwt where the t/b (x) | 560 # Implements Smulwb and Smulwt where the t/b (x) |
| 561 # bit is in bit 6. | 561 # bit is in bit 6. |
| 562 | 01 1 = Binary3RegisterOpAltA | 562 | 01 1 = Binary3RegisterOpAltA |
| 563 => Defs16To19CondsDontCareRdRmRnNotPc | 563 => Defs16To19CondsDontCareRdRmRnNotPc |
| 564 Smulwx_Rule_180_A1_P358 | 564 Smulwx_Rule_180_A1_P358 |
| 565 cccc00010010dddd0000mmmm1x10nnnn RegsNotPc (v5TE) | 565 cccc00010010dddd0000mmmm1x10nnnn RegsNotPc (v5TE) |
| 566 # Implements Smlalbb, Smlalbt, Smlaltb, and Smlaltt | 566 # Implements Smlalbb, Smlalbt, Smlaltb, and Smlaltt |
| 567 # where the t/b bits (xx) are in bits 5:6. | 567 # where the t/b bits (xx) are in bits 5:6. |
| 568 | 10 - = Binary4RegisterDualResult | 568 | 10 - = Binary4RegisterDualResult |
| 569 => Defs12To19CondsDontCareRdRmRnNotPc | 569 => Defs12To19CondsDontCareRdRmRnNotPc |
| 570 Smlalxx_Rule_169_A1_P336 | 570 Smlalxx_Rule_169_A1_P336 |
| 571 cccc00010100hhhhllllmmmm1xx0nnnn RegsNotPc (v5TE) | 571 cccc00010100hhhhllllmmmm1xx0nnnn RegsNotPc (v5TE) |
| 572 # Implements Smulbb, Smulbt, Smultb, and Smultt | 572 # Implements Smulbb, Smulbt, Smultb, and Smultt |
| 573 # where the t/b bits (xx) are in bits 5:6. | 573 # where the t/b bits (xx) are in bits 5:6. |
| 574 | 11 - = Binary3RegisterOpAltA | 574 | 11 - = Binary3RegisterOpAltA |
| 575 => Defs16To19CondsDontCareRdRmRnNotPc | 575 => Defs16To19CondsDontCareRdRmRnNotPc |
| 576 Smulxx_Rule_178_P354 | 576 Smulxx_Rule_178_P354 |
| 577 cccc00010110dddd0000mmmm1xx0nnnn RegsNotPc (v5TE) | 577 cccc00010110dddd0000mmmm1xx0nnnn RegsNotPc (v5TE) |
| 578 +-- | 578 +-- |
| 579 | 579 |
| 580 +-- extra_load_store_instructions (See Section A5.2.8) | 580 +-- extra_load_store_instructions (See Section A5.2.8) |
| 581 | op2(6:5) op1(24:20) Rn(19:16) | 581 | op2(6:5) op1(24:20) Rn(19:16) |
| 582 # Note the following encodings which lead to a different table and aren't | 582 # Note the following encodings which lead to a different table and aren't |
| 583 # handled in this table. | 583 # handled in this table. |
| 584 # TODO(jfb) Should we make them Forbidden? | 584 # TODO(jfb) Should we mark them as unreachable? |
| 585 # 00 - - ->data_processing_and_miscellaneous_instructions | 585 # 00 - - ->data_processing_and_miscellaneous_instructions |
| 586 # - 0xx11 - " | 586 # - 0xx11 - " |
| 587 # 0x 0xx10 - " | 587 # 0x 0xx10 - " |
| 588 # | 588 # |
| 589 | 01 xx0x0 - = Store3RegisterOp => StoreBasedOffsetMemory | 589 | 01 xx0x0 - = Store3RegisterOp => StoreBasedOffsetMemory |
| 590 Strh_Rule_208_A1_P412 | 590 Strh_Rule_208_A1_P412 |
| 591 cccc000pu0w0nnnntttt00001011mmmm | 591 cccc000pu0w0nnnntttt00001011mmmm |
| 592 | " xx0x1 - = Load3RegisterOp => LoadBasedOffsetMemory | 592 | " xx0x1 - = Load3RegisterOp => LoadBasedOffsetMemory |
| 593 Ldrh_Rule_76_A1_P156 | 593 Ldrh_Rule_76_A1_P156 |
| 594 cccc000pu0w1nnnntttt00001011mmmm | 594 cccc000pu0w1nnnntttt00001011mmmm |
| 595 | " xx1x0 - = Store2RegisterImm8Op | 595 | " xx1x0 - = Store2RegisterImm8Op |
| 596 => StoreBasedImmedMemory | 596 => StoreBasedImmedMemory |
| 597 Strh_Rule_207_A1_P410 | 597 Strh_Rule_207_A1_P410 |
| 598 cccc000pu1w0nnnnttttiiii1011iiii | 598 cccc000pu1w0nnnnttttiiii1011iiii |
| 599 | " xx1x1 ~1111 = Load2RegisterImm8Op | 599 | " xx1x1 ~1111 = Load2RegisterImm8Op |
| 600 => LoadBasedImmedMemory | 600 => LoadBasedImmedMemory |
| 601 Ldrh_Rule_74_A1_P152 | 601 Ldrh_Rule_74_A1_P152 |
| 602 cccc000pu1w1nnnnttttiiii1011iiii | 602 cccc000pu1w1nnnnttttiiii1011iiii |
| 603 | " " 1111 = Load2RegisterImm8Op | 603 | " " 1111 = Load2RegisterImm8Op |
| 604 => LoadBasedImmedMemory | 604 => LoadBasedImmedMemory |
| 605 Ldrh_Rule_75_A1_P154 | 605 Ldrh_Rule_75_A1_P154 |
| 606 cccc0001u1011111ttttiiii1011iiii | 606 cccc0001u1011111ttttiiii1011iiii |
| 607 | 10 xx0x0 - = Load3RegisterDoubleOp | 607 | 10 xx0x0 - = Load3RegisterDoubleOp |
| 608 => LoadBasedOffsetMemoryDouble | 608 => LoadBasedOffsetMemoryDouble |
| 609 Ldrd_Rule_68_A1_P140 | 609 Ldrd_Rule_68_A1_P140 |
| 610 cccc000pu0w0nnnntttt00001101mmmm (v5TE) | 610 cccc000pu0w0nnnntttt00001101mmmm (v5TE) |
| 611 | " xx0x1 - = Load3RegisterOp => LoadBasedOffsetMemory | 611 | " xx0x1 - = Load3RegisterOp => LoadBasedOffsetMemory |
| 612 Ldrsb_Rule_80_A1_P164 | 612 Ldrsb_Rule_80_A1_P164 |
| 613 cccc000pu0w1nnnntttt00001101mmmm | 613 cccc000pu0w1nnnntttt00001101mmmm |
| 614 | " xx1x0 ~1111 = Load2RegisterImm8DoubleOp | 614 | " xx1x0 ~1111 = Load2RegisterImm8DoubleOp |
| 615 => LoadBasedImmedMemoryDouble | 615 => LoadBasedImmedMemoryDouble |
| 616 Ldrd_Rule_66_A1_P136 | 616 Ldrd_Rule_66_A1_P136 |
| 617 cccc000pu1w0nnnnttttiiii1101iiii (v5TE) | 617 cccc000pu1w0nnnnttttiiii1101iiii (v5TE) |
| 618 | " " 1111 = Load2RegisterImm8DoubleOp | 618 | " " 1111 = Load2RegisterImm8DoubleOp |
| 619 => LoadBasedImmedMemoryDouble | 619 => LoadBasedImmedMemoryDouble |
| 620 Ldrd_Rule_67_A1_P138 | 620 Ldrd_Rule_67_A1_P138 |
| 621 cccc0001u1001111ttttiiii1101iiii (v5TE) | 621 cccc0001u1001111ttttiiii1101iiii (v5TE) |
| 622 | " xx1x1 ~1111 = Load2RegisterImm8Op | 622 | " xx1x1 ~1111 = Load2RegisterImm8Op |
| 623 => LoadBasedImmedMemory | 623 => LoadBasedImmedMemory |
| 624 Ldrsb_Rule_78_A1_P160 | 624 Ldrsb_Rule_78_A1_P160 |
| 625 cccc000pu1w1nnnnttttiiii1101iiii | 625 cccc000pu1w1nnnnttttiiii1101iiii |
| 626 | " " 1111 = Load2RegisterImm8Op | 626 | " " 1111 = Load2RegisterImm8Op |
| 627 => LoadBasedImmedMemory | 627 => LoadBasedImmedMemory |
| 628 ldrsb_Rule_79_A1_162 | 628 ldrsb_Rule_79_A1_162 |
| 629 cccc0001u1011111ttttiiii1101iiii | 629 cccc0001u1011111ttttiiii1101iiii |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 647 Ldrsh_Rule_83_A1_P170 | 647 Ldrsh_Rule_83_A1_P170 |
| 648 cccc0001u1011111ttttiiii1111iiii | 648 cccc0001u1011111ttttiiii1111iiii |
| 649 +-- | 649 +-- |
| 650 | 650 |
| 651 # extra_load_store_instructions_unpriviledged (See section A5.2.9) | 651 # extra_load_store_instructions_unpriviledged (See section A5.2.9) |
| 652 # Table omitted: modeled as Forbidden. | 652 # Table omitted: modeled as Forbidden. |
| 653 # They are not expected in user code. | 653 # They are not expected in user code. |
| 654 | 654 |
| 655 +-- synchronization_primitives (See Section A5.2.10) | 655 +-- synchronization_primitives (See Section A5.2.10) |
| 656 | op(23:20) | 656 | op(23:20) |
| 657 | 0x00 = Deprecated # SWP, SWPB TODO(karl): model these? a8-432 | 657 # SWP/SWPB are OPTIONAL+deprecated in v7 with the Virtualization |
| 658 # Extension, and OBSOLETE+UNDEFINED in v8 aarch32. | |
| 659 | 0x00 = Deprecated # SWP/SWPB | |
|
Karl
2012/08/28 19:32:35
Note: This probably doesn't parse the way you expe
Please use jfb - chromium.org
2012/08/28 22:19:21
Done.
| |
| 660 cccc00010b00nnnntttt00001001tttt | |
| 658 | 1000 = StoreExclusive3RegisterOp => StoreBasedMemoryRtBits0To3 | 661 | 1000 = StoreExclusive3RegisterOp => StoreBasedMemoryRtBits0To3 |
| 659 Strex_Rule_202_A1_P400 | 662 Strex_Rule_202_A1_P400 |
| 660 cccc00011000nnnndddd11111001tttt (v6) | 663 cccc00011000nnnndddd11111001tttt (v6) |
| 661 | 1001 = LoadExclusive2RegisterOp => LoadBasedMemory | 664 | 1001 = LoadExclusive2RegisterOp => LoadBasedMemory |
| 662 Ldrex_Rule_69_A1_P142 | 665 Ldrex_Rule_69_A1_P142 |
| 663 cccc00011001nnnntttt111110011111 (v6) | 666 cccc00011001nnnntttt111110011111 (v6) |
| 664 | 1010 = StoreExclusive3RegisterDoubleOp | 667 | 1010 = StoreExclusive3RegisterDoubleOp |
| 665 => StoreBasedMemoryDoubleRtBits0To3 | 668 => StoreBasedMemoryDoubleRtBits0To3 |
| 666 Strexd_Rule_204_A1_P404 | 669 Strexd_Rule_204_A1_P404 |
| 667 cccc00011010nnnndddd11111001tttt (v6K) | 670 cccc00011010nnnndddd11111001tttt (v6K) |
| 668 | 1011 = LoadExclusive2RegisterDoubleOp => LoadBasedMemoryDouble | 671 | 1011 = LoadExclusive2RegisterDoubleOp => LoadBasedMemoryDouble |
| 669 Ldrexd_Rule_71_A1_P146 | 672 Ldrexd_Rule_71_A1_P146 |
| 670 cccc00011011nnnntttt111110011111 (v6K) | 673 cccc00011011nnnntttt111110011111 (v6K) |
| 671 | 1100 = StoreExclusive3RegisterOp => StoreBasedMemoryRtBits0To3 | 674 | 1100 = StoreExclusive3RegisterOp => StoreBasedMemoryRtBits0To3 |
| 672 Strexb_Rule_203_A1_P402 | 675 Strexb_Rule_203_A1_P402 |
| 673 cccc00011100nnnndddd11111001tttt (v6K) | 676 cccc00011100nnnndddd11111001tttt (v6K) |
| 674 | 1101 = LoadExclusive2RegisterOp => LoadBasedMemory | 677 | 1101 = LoadExclusive2RegisterOp => LoadBasedMemory |
| 675 Ldrexb_Rule_70_A1_P144 | 678 Ldrexb_Rule_70_A1_P144 |
| 676 cccc00011101nnnndddd111110011111 (v6K) | 679 cccc00011101nnnntttt111110011111 (v6K) |
| 677 | 1110 = StoreExclusive3RegisterOp => StoreBasedMemoryRtBits0To3 | 680 | 1110 = StoreExclusive3RegisterOp => StoreBasedMemoryRtBits0To3 |
| 678 Strexh_Rule_205_A1_P406 | 681 Strexh_Rule_205_A1_P406 |
| 679 cccc00011110nnnndddd11111001tttt (v6K) | 682 cccc00011110nnnndddd11111001tttt (v6K) |
| 680 | 1111 = LoadExclusive2RegisterOp => LoadBasedMemory | 683 | 1111 = LoadExclusive2RegisterOp => LoadBasedMemory |
| 681 Ldrexh_Rule_72_A1_P148 | 684 Ldrexh_Rule_72_A1_P148 |
| 682 cccc00011111nnnntttt111110011111 (v6K) | 685 cccc00011111nnnntttt111110011111 (v6K) |
| 683 | else: = Undefined (v6K) # Note on page A5-16 | 686 | else: = Undefined # Note on page A5-16 |
| 684 +-- | 687 +-- |
| 685 | 688 |
| 686 +-- msr_immediate_and_hints (See Section A5.2.11) | 689 +-- msr_immediate_and_hints (See Section A5.2.11) |
| 687 | op(22) op1(19:16) op2(7:0) | 690 | op(22) op1(19:16) op2(7:0) |
| 688 | 0 0000 0000_0000 = CondNop => DontCareInst | 691 | 0 0000 0000_0000 = CondNop => DontCareInst |
| 689 Nop_Rule_110_A1_P222 | 692 Nop_Rule_110_A1_P222 |
| 690 cccc0011001000001111000000000000 (v6K,v6T2) | 693 cccc0011001000001111000000000000 (v6K,v6T2) |
| 691 | " " 0000_0001 = CondNop => DontCareInst | 694 | " " 0000_0001 = CondNop => DontCareInst |
| 692 Yield_Rule_413_A1_P812 | 695 Yield_Rule_413_A1_P812 |
| 693 cccc0011001000001111000000000001 (v6K) | 696 cccc0011001000001111000000000001 (v6K) |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 708 Sev_Rule_158_A1_P316 | 711 Sev_Rule_158_A1_P316 |
| 709 cccc0011001000001111000000000100 (v6K) | 712 cccc0011001000001111000000000100 (v6K) |
| 710 | " " 1111_xxxx = CondNop => DontCareInst | 713 | " " 1111_xxxx = CondNop => DontCareInst |
| 711 Dbg_Rule_40_A1_P88 | 714 Dbg_Rule_40_A1_P88 |
| 712 cccc001100100000111100001111iiii (v7) | 715 cccc001100100000111100001111iiii (v7) |
| 713 | " 0100 - = MoveImmediate12ToApsr => DontCareInst | 716 | " 0100 - = MoveImmediate12ToApsr => DontCareInst |
| 714 # Note: DontCareInst will act like the | 717 # Note: DontCareInst will act like the |
| 715 # conditions flag is always changed, which | 718 # conditions flag is always changed, which |
| 716 # is a safe presumption. | 719 # is a safe presumption. |
| 717 Msr_Rule_103_A1_P208 | 720 Msr_Rule_103_A1_P208 |
| 718 | " 1x00 " " | 721 cccc0011001001001111iiiiiiiiiiii |
|
Karl
2012/08/28 19:32:35
This action can be repeated with " (on the next li
Please use jfb - chromium.org
2012/08/28 22:19:21
Done (added TODO).
| |
| 722 | " 1x00 " = MoveImmediate12ToApsr => DontCareInst | |
| 723 # Same note as above. | |
| 724 Msr_Rule_103_A1_P208 | |
| 725 cccc001100101x001111iiiiiiiiiiii | |
| 719 | " xx01 - = ForbiddenCondNop => Forbidden | 726 | " xx01 - = ForbiddenCondNop => Forbidden |
| 720 Msr_Rule_B6_1_6_A1_PB6_12 | 727 Msr_Rule_B6_1_6_A1_PB6_12 |
| 721 cccc00110010ii011111iiiiiiiiiiii | 728 cccc00110010ii011111iiiiiiiiiiii |
| 722 # MSR(immediate), ring0 version | 729 # MSR(immediate), ring0 version |
| 723 | " xx1x - = ForbiddenCondNop => Forbidden | 730 | " xx1x - = ForbiddenCondNop => Forbidden |
| 724 Msr_Rule_B6_1_6_A1_PB6_12 | 731 Msr_Rule_B6_1_6_A1_PB6_12 |
| 725 cccc00110010ii1i1111iiiiiiiiiiii | 732 cccc00110010ii1i1111iiiiiiiiiiii |
| 726 # MSR(immediate), ring0 version | 733 # MSR(immediate), ring0 version |
| 727 | 1 - - = ForbiddenCondNop => Forbidden | 734 | 1 - - = ForbiddenCondNop => Forbidden |
| 728 Msr_Rule_B6_1_6_A1_PB6_12 | 735 Msr_Rule_B6_1_6_A1_PB6_12 |
| 729 cccc00110110iiii1111iiiiiiiiiiii | 736 cccc00110110iiii1111iiiiiiiiiiii |
| 730 # MSR(immediate), ring0 version | 737 # MSR(immediate), ring0 version |
| 731 | else: = Forbidden # Unallocated hints, page A5-17 | 738 | else: = Forbidden # Unallocated hints, page A5-17 |
| 732 +-- | 739 +-- |
| 733 | 740 |
| 734 +-- miscellaneous_instructions (See Section A5.2.12) | 741 +-- miscellaneous_instructions (See Section A5.2.12) |
| 735 | op2(6:4) op(22:21) op1(19:16) | 742 | op2(6:4) B(9) op(22:21) op1(19:16) |
| 736 | 000 x0 xxxx = Unary1RegisterSet | 743 | 000 1 x0 xxxx = ForbiddenCondNop => Forbidden |
| 737 Mrs_Rule_102_A1_P206_Or_B6_10 | 744 # MSR (Banked register) |
|
Karl
2012/08/28 19:32:35
Warning: This isn't probably parsing the way you t
Please use jfb - chromium.org
2012/08/28 22:19:21
Done.
| |
| 738 cccc00010r001111dddd000000000000 | 745 cccc00010r00mmmmdddd001m00000000 (v7VE) |
| 739 | " 01 xx00 = Unary1RegisterUse | 746 | " " x1 " = ForbiddenCondNop => Forbidden |
| 740 Msr_Rule_104_A1_P210 | 747 # MSR (Banked register) |
|
Karl
2012/08/28 19:32:35
Same here.
Please use jfb - chromium.org
2012/08/28 22:19:21
Done.
| |
| 741 cccc00010010mm00111100000000nnnn | 748 cccc00010r10mmmm1111001m0000nnnn (v7VE) |
| 742 | " 01 xx01 = ForbiddenCondNop => Forbidden | 749 | " 0 x0 xxxx = Unary1RegisterSet |
| 743 Msr_Rule_B6_1_7_P14 | 750 Mrs_Rule_102_A1_P206_Or_B6_10 |
| 744 cccc00010010mm01111100000000nnnn | 751 cccc00010r001111dddd000000000000 |
| 745 | " " xx1x = ForbiddenCondNop => Forbidden | 752 | " " 01 xx00 = Unary1RegisterUse |
| 746 Msr_Rule_B6_1_7_P14 | 753 Msr_Rule_104_A1_P210 |
| 747 cccc00010010mm1m111100000000nnnn | 754 cccc00010010mm00111100000000nnnn |
| 748 | " 11 - = ForbiddenCondNop => Forbidden | 755 | " " 01 xx01 = ForbiddenCondNop => Forbidden |
| 749 Msr_Rule_B6_1_7_P14 | 756 Msr_Rule_B6_1_7_P14 |
| 750 cccc00010110mmmm111100000000nnnn | 757 cccc00010010mm01111100000000nnnn |
| 751 | 001 01 - = BranchToRegister => BxBlx | 758 | " " " xx1x = ForbiddenCondNop => Forbidden |
| 752 Bx_Rule_25_A1_P62 | 759 Msr_Rule_B6_1_7_P14 |
| 753 cccc000100101111111111110001mmmm (v4T) | 760 cccc00010010mm1m111100000000nnnn |
| 754 | " 11 - = Unary2RegisterOpNotRmIsPc | 761 | " " 11 - = ForbiddenCondNop => Forbidden |
| 755 => Defs12To15RdRnNotPc | 762 Msr_Rule_B6_1_7_P14 |
| 756 Clz_Rule_31_A1_P72 | 763 cccc00010110mmmm111100000000nnnn |
| 757 cccc000101101111dddd11110001mmmm (v6) | 764 | 001 - 01 - = BranchToRegister => BxBlx |
| 758 | 010 01 - = ForbiddenCondNop => Forbidden | 765 Bx_Rule_25_A1_P62 |
| 759 Bxj_Rule_26_A1_P64 | 766 cccc000100101111111111110001mmmm (v4T) |
| 760 cccc000100101111111111110010mmmm | 767 | " - 11 - = Unary2RegisterOpNotRmIsPc |
| 761 | 011 01 - = BranchToRegister => BxBlx | 768 => Defs12To15RdRnNotPc |
| 762 Blx_Rule_24_A1_P60 | 769 Clz_Rule_31_A1_P72 |
| 763 cccc000100101111111111110011mmmm | 770 cccc000101101111dddd11110001mmmm (v5T) |
| 764 RegsNotPc (v5T) | 771 | 010 - 01 - = ForbiddenCondNop => Forbidden |
| 765 | 101 - - ->saturating_addition_and_subtraction | 772 Bxj_Rule_26_A1_P64 |
| 766 | 111 01 - = BreakPointAndConstantPoolHead | 773 cccc000100101111111111110010mmmm (v5TEJ) |
| 767 => Breakpoint | 774 | 011 - 01 - = BranchToRegister => BxBlx |
| 768 Bkpt_Rule_22_A1_P56 | 775 Blx_Rule_24_A1_P60 |
| 769 cccc00010010iiiiiiiiiiii0111iiii (v5T) | 776 cccc000100101111111111110011mmmm |
| 770 | 111 11 - = ForbiddenCondNop => Forbidden | 777 RegsNotPc (v5T) |
| 771 Smc_Rule_B6_1_9_P18 | 778 | 101 - - - ->saturating_addition_and_subtraction |
| 772 cccc000101100000000000000111mmmm | 779 | 110 - 11 - = ForbiddenCondNop => Forbidden |
| 773 | else: = Undefined # Note on page A5-18 | 780 # ERET |
| 781 cccc0001011000000000000001101110 (v7VE) | |
| 782 | 111 - 01 - = BreakPointAndConstantPoolHead | |
| 783 => Breakpoint | |
| 784 Bkpt_Rule_22_A1_P56 | |
| 785 cccc00010010iiiiiiiiiiii0111iiii (v5T) | |
| 786 | " - 10 - = ForbiddenCondNop => Forbidden | |
| 787 # HVC | |
| 788 cccc00010100iiiiiiiiiiii0111iiii (v7VE) | |
| 789 | " - 11 - = ForbiddenCondNop => Forbidden | |
| 790 Smc_Rule_B6_1_9_P18 | |
| 791 cccc000101100000000000000111iiii (SE) | |
| 792 | else: = Undefined # Note on page A5-18 | |
| 774 +-- | 793 +-- |
| 775 | 794 |
| 776 +-- load_store_word_and_unsigned_byte (See Section A5.3) | 795 +-- load_store_word_and_unsigned_byte (See Section A5.3) |
| 777 # Note: Column op1 is repeated so that several rows can define | 796 # Note: Column op1 is repeated so that several rows can define |
| 778 # (anded) multiple test conditions for this row. | 797 # (anded) multiple test conditions for this row. |
| 779 | A(25) op1(24:20) B(4) Rn(19:16) op1_repeated(24:20) | 798 | A(25) op1(24:20) B(4) Rn(19:16) op1_repeated(24:20) |
| 780 | 0 xx0x0 - - ~0x010 -> load_store_word_and_unsigned_byte_s tr_or_push | 799 | 0 xx0x0 - - ~0x010 -> load_store_word_and_unsigned_byte_s tr_or_push |
| 781 | 1 xx0x0 0 - ~0x010 | 800 | 1 xx0x0 0 - ~0x010 |
| 782 = Store3RegisterImm5Op | 801 = Store3RegisterImm5Op |
| 783 => StoreBasedOffsetMemory | 802 => StoreBasedOffsetMemory |
| 784 Str_Rule_195_A1_P386 | 803 Str_Rule_195_A1_P386 |
| 785 cccc011pd0w0nnnnttttiiiiitt0mmmm | 804 cccc011pd0w0nnnnttttiiiiitt0mmmm |
| 786 # STRT (rule 210, A1 and A2, page 416) define unprivledge stores, which | 805 # STRT (rule 210, A1 and A2, page 416) define unprivledge stores, which |
| 787 # NaCl doesn't allow. | 806 # NaCl doesn't allow. |
| 788 | 0 0x010 - - - = Forbidden | 807 | 0 0x010 - - - = Forbidden |
| 789 | 1 0x010 0 - - = Forbidden | 808 | 1 0x010 0 - - = Forbidden |
| 790 | 0 xx0x1 - ~1111 ~0x011 | 809 | 0 xx0x1 - ~1111 ~0x011 |
| 791 = Load2RegisterImm12Op | 810 = Load2RegisterImm12Op |
| 792 => LoadBasedImmedMemory | 811 => LoadBasedImmedMemory |
| 793 Ldr_Rule_58_A1_P120 | 812 Ldr_Rule_58_A1_P120 |
| 794 cccc010pd0w1nnnnttttiiiiiiiiiiii NotRnIsPc | 813 cccc010pd0w1nnnnttttiiiiiiiiiiii NotRnIsPc |
| 795 | " xx0x1 " 1111 ~0x011 | 814 | " xx0x1 " 1111 ~0x011 |
| 796 = Load2RegisterImm12Op | 815 = Load2RegisterImm12Op |
| 797 => LoadBasedImmedMemory | 816 => LoadBasedImmedMemory |
| 798 Ldr_Rule_59_A1_P122 | 817 Ldr_Rule_59_A1_P122 |
| 799 cccc0101d0011111ttttiiiiiiiiiiii | 818 cccc0101d0011111ttttiiiiiiiiiiii |
| 800 | 1 xx0x1 0 - ~0x011 | 819 | 1 xx0x1 0 - ~0x011 |
| 801 = Load3RegisterImm5Op => LoadBasedOffsetMemor y | 820 = Load3RegisterImm5Op => LoadBasedOffsetMemor y |
| 802 Ldr_Rule_60_A1_P124 | 821 Ldr_Rule_60_A1_P124 |
| 803 cccc011pd0w1nnnnttttiiiiitt0mmmm | 822 cccc011pd0w1nnnnttttiiiiitt0mmmm |
| 804 # LDRT (rule 86, A1 and A2, page 176) define unprivledge loads, which | 823 # LDRT (rule 86, A1 and A2, page 176) define unprivledge loads, which |
| 805 # NaCl doesn't allow. | 824 # NaCl doesn't allow. |
| (...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1284 cccc100pu1w1nnnn1rrrrrrrrrrrrrrr | 1303 cccc100pu1w1nnnn1rrrrrrrrrrrrrrr |
| 1285 | 10xxxx - = BranchImmediate24 => Branch | 1304 | 10xxxx - = BranchImmediate24 => Branch |
| 1286 B_Rule_16_A1_P44 | 1305 B_Rule_16_A1_P44 |
| 1287 cccc1010iiiiiiiiiiiiiiiiiiiiiiii | 1306 cccc1010iiiiiiiiiiiiiiiiiiiiiiii |
| 1288 | 11xxxx - = BranchImmediate24 => Branch | 1307 | 11xxxx - = BranchImmediate24 => Branch |
| 1289 Bl_Blx_Rule_23_A1_P58 | 1308 Bl_Blx_Rule_23_A1_P58 |
| 1290 cccc1011iiiiiiiiiiiiiiiiiiiiiiii | 1309 cccc1011iiiiiiiiiiiiiiiiiiiiiiii |
| 1291 +-- | 1310 +-- |
| 1292 | 1311 |
| 1293 +-- coprocessor_instructions_and_supervisor_call (See Section A5.6) | 1312 +-- coprocessor_instructions_and_supervisor_call (See Section A5.6) |
| 1294 # Note: We currently only allow floating point (and advanced SIMD) | 1313 # Note: We currently only allow floating point (and advanced SIMD) |
| 1295 # coprocessor operations (coproc=101x). | 1314 # coprocessor operations (coproc=101x). |
| 1296 # Note: Column op1 is repeated so that the first three rows can define | 1315 # Note: Column op1 is repeated so that the first three rows can define |
| 1297 # (anded) multiple test conditions for this row. | 1316 # (anded) multiple test conditions for this row. |
| 1298 | op1(25:20) op(4) coproc(11:8) Rn(19:16) op1_repeated(25:20) | 1317 | op1(25:20) op(4) coproc(11:8) Rn(19:16) op1_repeated(25:20) |
| 1299 | 0xxxxx - 101x - ~000x0x | 1318 | 0xxxxx - 101x - ~000x0x |
| 1300 -> extension_register_load_store_instructions | 1319 -> extension_register_load_store_instructions |
| 1301 | 0xxxx0 - ~101x - ~000x0x | 1320 | 0xxxx0 - ~101x - ~000x0x |
| 1302 # Note: Never safe since coproc!=101x | 1321 # Note: Never safe since coproc!=101x |
| 1303 = Forbidden # STC A8-372 | 1322 = Forbidden # STC A8-372 |
| 1304 | 0xxxx1 - ~101x ~1111 ~000x0x | 1323 | 0xxxx1 - ~101x ~1111 ~000x0x |
| 1305 # Note: Never safe since coproc!=101x | 1324 # Note: Never safe since coproc!=101x |
| 1306 = Forbidden # LDC(immediate), LDC2(immediate) A8-106 | 1325 = Forbidden # LDC(immediate), LDC2(immediate) A8-106 |
| 1307 | " " " 1111 - | 1326 | " " " 1111 - |
| 1308 # Note: Never safe since coproc!=101x | 1327 # Note: Never safe since coproc!=101x |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1356 | " x1 = CondVfpOp => VfpOp | 1375 | " x1 = CondVfpOp => VfpOp |
| 1357 Vsub_Rule_402_A2_P790 | 1376 Vsub_Rule_402_A2_P790 |
| 1358 cccc11100d11nnnndddd101sn1m0mmmm | 1377 cccc11100d11nnnndddd101sn1m0mmmm |
| 1359 | 1x00 x0 = CondVfpOp => VfpOp | 1378 | 1x00 x0 = CondVfpOp => VfpOp |
| 1360 Vdiv_Rule_301_A1_P590 | 1379 Vdiv_Rule_301_A1_P590 |
| 1361 cccc11101d00nnnndddd101sn0m0mmmm | 1380 cccc11101d00nnnndddd101sn0m0mmmm |
| 1362 | 1x11 - -> other_floating_point_data_processing_instructions | 1381 | 1x11 - -> other_floating_point_data_processing_instructions |
| 1363 +-- | 1382 +-- |
| 1364 | 1383 |
| 1365 +-- other_floating_point_data_processing_instructions (A7.5 Table A7-17, page 17 -25) | 1384 +-- other_floating_point_data_processing_instructions (A7.5 Table A7-17, page 17 -25) |
| 1366 # Other VPD data-processing, CDP instructions for coprocessors 10/11. | 1385 # Other VPD data-processing, CDP instructions for coprocessors 10/11. |
| 1367 # | 1386 # |
| 1368 # Note: Currently, all instructions use class CoprocessorOp | 1387 # Note: Currently, all instructions use class CoprocessorOp |
| 1369 # to follow what the previous version of the ARM validator did. | 1388 # to follow what the previous version of the ARM validator did. |
| 1370 # | 1389 # |
| 1371 # TODO(karl): Fix the class decoders to do the right thing. | 1390 # TODO(karl): Fix the class decoders to do the right thing. |
| 1372 | opc2(19:16) opc3(7:6) | 1391 | opc2(19:16) opc3(7:6) |
| 1373 | - x0 = CondVfpOp => VfpOp | 1392 | - x0 = CondVfpOp => VfpOp |
| 1374 Vmov_Rule_326_A2_P640 | 1393 Vmov_Rule_326_A2_P640 |
| 1375 cccc11101d11iiiidddd101s0000iiii | 1394 cccc11101d11iiiidddd101s0000iiii |
| 1376 | 0000 01 = CondVfpOp => VfpOp | 1395 | 0000 01 = CondVfpOp => VfpOp |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1501 | C(8) op(7:4) | 1520 | C(8) op(7:4) |
| 1502 | 0 00x1 # TODO(karl): Fix this to do the right thing. | 1521 | 0 00x1 # TODO(karl): Fix this to do the right thing. |
| 1503 # VMOV A8-650 | 1522 # VMOV A8-650 |
| 1504 = MoveDoubleFromCoprocessor | 1523 = MoveDoubleFromCoprocessor |
| 1505 | 1 00x1 # TODO(karl): Fix this to do the right thing. | 1524 | 1 00x1 # TODO(karl): Fix this to do the right thing. |
| 1506 # VMOV A8-652 | 1525 # VMOV A8-652 |
| 1507 = MoveDoubleFromCoprocessor | 1526 = MoveDoubleFromCoprocessor |
| 1508 +-- | 1527 +-- |
| 1509 | 1528 |
| 1510 +-- unconditional_instructions (See Section A5.7) | 1529 +-- unconditional_instructions (See Section A5.7) |
| 1511 # Note: We currently only allow floating point (and advanced SIMD) | 1530 # Note: We currently only allow floating point (and advanced SIMD) |
| 1512 # coprocessor operations (coproc=101x). | 1531 # coprocessor operations (coproc=101x). |
| 1513 # | 1532 # |
| 1514 # Note: Most instructions in this table are forbidden because they | 1533 # Note: Most instructions in this table are forbidden because they |
| 1515 # aren't specific to the Vfp coprocessors (10, 11). | 1534 # aren't specific to the Vfp coprocessors (10, 11). |
| 1516 | op1(27:20) op(4) Rn(19:16) | 1535 | op1(27:20) op(4) Rn(19:16) |
| 1517 | 0xxx_xxxx - - ->memory_hints_andvanced_simd_instructions_and_misc ellaneous_instructions | 1536 | 0xxx_xxxx - - ->memory_hints_andvanced_simd_instructions_and_misc ellaneous_instructions |
| 1518 # Note: These instructions are not allowed for any coprocessor. | 1537 # Note: These instructions are not allowed for any coprocessor. |
| 1519 | 100x_x1x0 - - = ForbiddenUncondNop # SRS B6-20 | 1538 | 100x_x1x0 - - = ForbiddenUncondNop # SRS B6-20 |
| 1520 => Forbidden (v6) | 1539 => Forbidden (v6) |
| 1521 | 100x_x0x1 - - = ForbiddenUncondNop # RFE B6-16 | 1540 | 100x_x0x1 - - = ForbiddenUncondNop # RFE B6-16 |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1805 | " 1001 " | 1824 | " 1001 " |
| 1806 | " 1101 =VectorLoad # VLD2(single, all lanes) | 1825 | " 1101 =VectorLoad # VLD2(single, all lanes) |
| 1807 | " 0x10 =VectorLoad # VLD3(single) | 1826 | " 0x10 =VectorLoad # VLD3(single) |
| 1808 | " 1010 " | 1827 | " 1010 " |
| 1809 | " 1110 =VectorLoad # VLD3(single, all lanes) | 1828 | " 1110 =VectorLoad # VLD3(single, all lanes) |
| 1810 | " 0x11 =VectorLoad # VLD4(single) | 1829 | " 0x11 =VectorLoad # VLD4(single) |
| 1811 | " 1011 " | 1830 | " 1011 " |
| 1812 | " 1111 =VectorLoad # VLD4(single, all lanes) | 1831 | " 1111 =VectorLoad # VLD4(single, all lanes) |
| 1813 | else: =Undefined # Note on page A7-27 | 1832 | else: =Undefined # Note on page A7-27 |
| 1814 +-- | 1833 +-- |
| OLD | NEW |