1// Copyright (c) 2011-2019 ARM Limited 2// All rights reserved 3// 4// The license below extends only to copyright in the software and shall 5// not be construed as granting a license to any other intellectual 6// property including but not limited to intellectual property relating 7// to a hardware implementation of the functionality of the software 8// licensed hereunder. You may use the software subject to the license --- 573 unchanged lines hidden (view full) --- 582 case 0x3: 583 return new STLXRX64(machInst, rt, rnsp, rs); 584 default: 585 M5_UNREACHABLE; 586 } 587 case 0x2: 588 switch (size) { 589 case 0x0: |
590 return new CASP32(machInst, rt, rnsp, rs); |
591 case 0x1: |
592 return new CASP64(machInst, rt, rnsp, rs); |
593 case 0x2: 594 return new STXPW64(machInst, rs, rt, rt2, rnsp); 595 case 0x3: 596 return new STXPX64(machInst, rs, rt, rt2, rnsp); 597 default: 598 M5_UNREACHABLE; 599 } 600 601 case 0x3: 602 switch (size) { 603 case 0x0: |
604 return new CASPL32(machInst, rt, rnsp, rs); |
605 case 0x1: |
606 return new CASPL64(machInst, rt, rnsp, rs); |
607 case 0x2: 608 return new STLXPW64(machInst, rs, rt, rt2, rnsp); 609 case 0x3: 610 return new STLXPX64(machInst, rs, rt, rt2, rnsp); 611 default: 612 M5_UNREACHABLE; 613 } 614 --- 21 unchanged lines hidden (view full) --- 636 case 0x3: 637 return new LDAXRX64(machInst, rt, rnsp, rs); 638 default: 639 M5_UNREACHABLE; 640 } 641 case 0x6: 642 switch (size) { 643 case 0x0: |
644 return new CASPA32(machInst, rt, rnsp, rs); |
645 case 0x1: |
646 return new CASPA64(machInst, rt, rnsp, rs); |
647 case 0x2: 648 return new LDXPW64(machInst, rt, rt2, rnsp); 649 case 0x3: 650 return new LDXPX64(machInst, rt, rt2, rnsp); 651 default: 652 M5_UNREACHABLE; 653 } |
654 case 0x7: 655 switch (size) { 656 case 0x0: |
657 return new CASPAL32(machInst, rt, rnsp, rs); |
658 case 0x1: |
659 return new CASPAL64(machInst, rt, rnsp, rs); |
660 case 0x2: 661 return new LDAXPW64(machInst, rt, rt2, rnsp); 662 case 0x3: 663 return new LDAXPX64(machInst, rt, rt2, rnsp); 664 default: 665 M5_UNREACHABLE; 666 } |
667 case 0x9: 668 switch (size) { 669 case 0x0: 670 return new STLRB64(machInst, rt, rnsp); 671 case 0x1: 672 return new STLRH64(machInst, rt, rnsp); 673 case 0x2: 674 return new STLRW64(machInst, rt, rnsp); 675 case 0x3: 676 return new STLRX64(machInst, rt, rnsp); 677 default: 678 M5_UNREACHABLE; 679 } |
680 case 0xa: 681 switch (size) { 682 case 0x0: 683 return new CASB(machInst, rt, rnsp, rs); 684 case 0x1: 685 return new CASH(machInst, rt, rnsp, rs); 686 case 0x2: 687 return new CAS32(machInst, rt, rnsp, rs); 688 case 0x3: 689 return new CAS64(machInst, rt, rnsp, rs); 690 default: 691 M5_UNREACHABLE; 692 } 693 case 0xb: 694 switch (size) { 695 case 0x0: 696 return new CASLB(machInst, rt, rnsp, rs); 697 case 0x1: 698 return new CASLH(machInst, rt, rnsp, rs); 699 case 0x2: 700 return new CASL32(machInst, rt, rnsp, rs); 701 case 0x3: 702 return new CASL64(machInst, rt, rnsp, rs); 703 default: 704 M5_UNREACHABLE; 705 } |
706 case 0xd: 707 switch (size) { 708 case 0x0: 709 return new LDARB64(machInst, rt, rnsp); 710 case 0x1: 711 return new LDARH64(machInst, rt, rnsp); 712 case 0x2: 713 return new LDARW64(machInst, rt, rnsp); 714 case 0x3: 715 return new LDARX64(machInst, rt, rnsp); 716 default: 717 M5_UNREACHABLE; 718 } |
719 case 0xe: 720 switch (size) { 721 case 0x0: 722 return new CASAB(machInst, rt, rnsp, rs); 723 case 0x1: 724 return new CASAH(machInst, rt, rnsp, rs); 725 case 0x2: 726 return new CASA32(machInst, rt, rnsp, rs); 727 case 0x3: 728 return new CASA64(machInst, rt, rnsp, rs); 729 default: 730 M5_UNREACHABLE; 731 } 732 case 0xf: 733 switch (size) { 734 case 0x0: 735 return new CASALB(machInst, rt, rnsp, rs); 736 case 0x1: 737 return new CASALH(machInst, rt, rnsp, rs); 738 case 0x2: 739 return new CASAL32(machInst, rt, rnsp, rs); 740 case 0x3: 741 return new CASAL64(machInst, rt, rnsp, rs); 742 default: 743 M5_UNREACHABLE; 744 } |
745 default: 746 return new Unknown64(machInst); 747 } 748 } else if (bits(machInst, 31)) { 749 return new Unknown64(machInst); 750 } else { 751 return decodeNeonMem(machInst); 752 } --- 1626 unchanged lines hidden --- |