mem.isa (12234:78ece221f9f5) mem.isa (12236:126ac9da6050)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010, 2012, 2014, 2016 ARM Limited
4// All rights reserved
5//
6// The license below extends only to copyright in the software and shall
7// not be construed as granting a license to any other intellectual
8// property including but not limited to intellectual property relating

--- 568 unchanged lines hidden (view full) ---

577 class %(class_name)s : public %(base_class)s
578 {
579 public:
580
581 /// Constructor.
582 %(class_name)s(ExtMachInst machInst,
583 uint32_t _base, int _mode, bool _wb);
584
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010, 2012, 2014, 2016 ARM Limited
4// All rights reserved
5//
6// The license below extends only to copyright in the software and shall
7// not be construed as granting a license to any other intellectual
8// property including but not limited to intellectual property relating

--- 568 unchanged lines hidden (view full) ---

577 class %(class_name)s : public %(base_class)s
578 {
579 public:
580
581 /// Constructor.
582 %(class_name)s(ExtMachInst machInst,
583 uint32_t _base, int _mode, bool _wb);
584
585 %(BasicExecDeclare)s
586
587 %(InitiateAccDeclare)s
588
589 %(CompleteAccDeclare)s
585 Fault execute(ExecContext *, Trace::InstRecord *) const;
586 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
587 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
590 };
591}};
592
593def template SrsDeclare {{
594 /**
595 * Static instruction class for "%(mnemonic)s".
596 */
597 class %(class_name)s : public %(base_class)s
598 {
599 public:
600
601 /// Constructor.
602 %(class_name)s(ExtMachInst machInst,
603 uint32_t _regMode, int _mode, bool _wb);
604
588 };
589}};
590
591def template SrsDeclare {{
592 /**
593 * Static instruction class for "%(mnemonic)s".
594 */
595 class %(class_name)s : public %(base_class)s
596 {
597 public:
598
599 /// Constructor.
600 %(class_name)s(ExtMachInst machInst,
601 uint32_t _regMode, int _mode, bool _wb);
602
605 %(BasicExecDeclare)s
606
607 %(InitiateAccDeclare)s
608
609 %(CompleteAccDeclare)s
603 Fault execute(ExecContext *, Trace::InstRecord *) const;
604 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
605 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
610 };
611}};
612
613def template SwapDeclare {{
614 /**
615 * Static instruction class for "%(mnemonic)s".
616 */
617 class %(class_name)s : public %(base_class)s
618 {
619 public:
620
621 /// Constructor.
622 %(class_name)s(ExtMachInst machInst,
623 uint32_t _dest, uint32_t _op1, uint32_t _base);
624
606 };
607}};
608
609def template SwapDeclare {{
610 /**
611 * Static instruction class for "%(mnemonic)s".
612 */
613 class %(class_name)s : public %(base_class)s
614 {
615 public:
616
617 /// Constructor.
618 %(class_name)s(ExtMachInst machInst,
619 uint32_t _dest, uint32_t _op1, uint32_t _base);
620
625 %(BasicExecDeclare)s
626
627 %(InitiateAccDeclare)s
628
629 %(CompleteAccDeclare)s
621 Fault execute(ExecContext *, Trace::InstRecord *) const;
622 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
623 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
630 };
631}};
632
633def template LoadStoreDImmDeclare {{
634 /**
635 * Static instruction class for "%(mnemonic)s".
636 */
637 class %(class_name)s : public %(base_class)s
638 {
639 public:
640
641 /// Constructor.
642 %(class_name)s(ExtMachInst machInst,
643 uint32_t _dest, uint32_t _dest2,
644 uint32_t _base, bool _add, int32_t _imm);
645
624 };
625}};
626
627def template LoadStoreDImmDeclare {{
628 /**
629 * Static instruction class for "%(mnemonic)s".
630 */
631 class %(class_name)s : public %(base_class)s
632 {
633 public:
634
635 /// Constructor.
636 %(class_name)s(ExtMachInst machInst,
637 uint32_t _dest, uint32_t _dest2,
638 uint32_t _base, bool _add, int32_t _imm);
639
646 %(BasicExecDeclare)s
647
648 %(InitiateAccDeclare)s
649
650 %(CompleteAccDeclare)s
640 Fault execute(ExecContext *, Trace::InstRecord *) const;
641 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
642 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
651 };
652}};
653
654def template StoreExDImmDeclare {{
655 /**
656 * Static instruction class for "%(mnemonic)s".
657 */
658 class %(class_name)s : public %(base_class)s
659 {
660 public:
661
662 /// Constructor.
663 %(class_name)s(ExtMachInst machInst,
664 uint32_t _result, uint32_t _dest, uint32_t _dest2,
665 uint32_t _base, bool _add, int32_t _imm);
666
643 };
644}};
645
646def template StoreExDImmDeclare {{
647 /**
648 * Static instruction class for "%(mnemonic)s".
649 */
650 class %(class_name)s : public %(base_class)s
651 {
652 public:
653
654 /// Constructor.
655 %(class_name)s(ExtMachInst machInst,
656 uint32_t _result, uint32_t _dest, uint32_t _dest2,
657 uint32_t _base, bool _add, int32_t _imm);
658
667 %(BasicExecDeclare)s
668
669 %(InitiateAccDeclare)s
670
671 %(CompleteAccDeclare)s
659 Fault execute(ExecContext *, Trace::InstRecord *) const;
660 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
661 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
672 };
673}};
674
675def template LoadStoreImmDeclare {{
676 /**
677 * Static instruction class for "%(mnemonic)s".
678 */
679 class %(class_name)s : public %(base_class)s
680 {
681 public:
682
683 /// Constructor.
684 %(class_name)s(ExtMachInst machInst,
685 uint32_t _dest, uint32_t _base, bool _add, int32_t _imm);
686
662 };
663}};
664
665def template LoadStoreImmDeclare {{
666 /**
667 * Static instruction class for "%(mnemonic)s".
668 */
669 class %(class_name)s : public %(base_class)s
670 {
671 public:
672
673 /// Constructor.
674 %(class_name)s(ExtMachInst machInst,
675 uint32_t _dest, uint32_t _base, bool _add, int32_t _imm);
676
687 %(BasicExecDeclare)s
677 Fault execute(ExecContext *, Trace::InstRecord *) const;
678 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
679 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
688
680
689 %(InitiateAccDeclare)s
690
691 %(CompleteAccDeclare)s
692
693 virtual void
694 annotateFault(ArmFault *fault) {
695 %(fa_code)s
696 }
697 };
698}};
699
700def template StoreExImmDeclare {{

--- 4 unchanged lines hidden (view full) ---

705 {
706 public:
707
708 /// Constructor.
709 %(class_name)s(ExtMachInst machInst,
710 uint32_t _result, uint32_t _dest, uint32_t _base,
711 bool _add, int32_t _imm);
712
681 virtual void
682 annotateFault(ArmFault *fault) {
683 %(fa_code)s
684 }
685 };
686}};
687
688def template StoreExImmDeclare {{

--- 4 unchanged lines hidden (view full) ---

693 {
694 public:
695
696 /// Constructor.
697 %(class_name)s(ExtMachInst machInst,
698 uint32_t _result, uint32_t _dest, uint32_t _base,
699 bool _add, int32_t _imm);
700
713 %(BasicExecDeclare)s
714
715 %(InitiateAccDeclare)s
716
717 %(CompleteAccDeclare)s
701 Fault execute(ExecContext *, Trace::InstRecord *) const;
702 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
703 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
718 };
719}};
720
721def template StoreDRegDeclare {{
722 /**
723 * Static instruction class for "%(mnemonic)s".
724 */
725 class %(class_name)s : public %(base_class)s
726 {
727 public:
728
729 /// Constructor.
730 %(class_name)s(ExtMachInst machInst,
731 uint32_t _dest, uint32_t _dest2,
732 uint32_t _base, bool _add,
733 int32_t _shiftAmt, uint32_t _shiftType,
734 uint32_t _index);
735
704 };
705}};
706
707def template StoreDRegDeclare {{
708 /**
709 * Static instruction class for "%(mnemonic)s".
710 */
711 class %(class_name)s : public %(base_class)s
712 {
713 public:
714
715 /// Constructor.
716 %(class_name)s(ExtMachInst machInst,
717 uint32_t _dest, uint32_t _dest2,
718 uint32_t _base, bool _add,
719 int32_t _shiftAmt, uint32_t _shiftType,
720 uint32_t _index);
721
736 %(BasicExecDeclare)s
737
738 %(InitiateAccDeclare)s
739
740 %(CompleteAccDeclare)s
722 Fault execute(ExecContext *, Trace::InstRecord *) const;
723 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
724 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
741 };
742}};
743
744def template StoreRegDeclare {{
745 /**
746 * Static instruction class for "%(mnemonic)s".
747 */
748 class %(class_name)s : public %(base_class)s
749 {
750 public:
751
752 /// Constructor.
753 %(class_name)s(ExtMachInst machInst,
754 uint32_t _dest, uint32_t _base, bool _add,
755 int32_t _shiftAmt, uint32_t _shiftType,
756 uint32_t _index);
757
725 };
726}};
727
728def template StoreRegDeclare {{
729 /**
730 * Static instruction class for "%(mnemonic)s".
731 */
732 class %(class_name)s : public %(base_class)s
733 {
734 public:
735
736 /// Constructor.
737 %(class_name)s(ExtMachInst machInst,
738 uint32_t _dest, uint32_t _base, bool _add,
739 int32_t _shiftAmt, uint32_t _shiftType,
740 uint32_t _index);
741
758 %(BasicExecDeclare)s
742 Fault execute(ExecContext *, Trace::InstRecord *) const;
743 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
744 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
759
745
760 %(InitiateAccDeclare)s
761
762 %(CompleteAccDeclare)s
763
764 virtual void
765 annotateFault(ArmFault *fault) {
766 %(fa_code)s
767 }
768 };
769}};
770
771def template LoadDRegDeclare {{

--- 6 unchanged lines hidden (view full) ---

778
779 /// Constructor.
780 %(class_name)s(ExtMachInst machInst,
781 uint32_t _dest, uint32_t _dest2,
782 uint32_t _base, bool _add,
783 int32_t _shiftAmt, uint32_t _shiftType,
784 uint32_t _index);
785
746 virtual void
747 annotateFault(ArmFault *fault) {
748 %(fa_code)s
749 }
750 };
751}};
752
753def template LoadDRegDeclare {{

--- 6 unchanged lines hidden (view full) ---

760
761 /// Constructor.
762 %(class_name)s(ExtMachInst machInst,
763 uint32_t _dest, uint32_t _dest2,
764 uint32_t _base, bool _add,
765 int32_t _shiftAmt, uint32_t _shiftType,
766 uint32_t _index);
767
786 %(BasicExecDeclare)s
787
788 %(InitiateAccDeclare)s
789
790 %(CompleteAccDeclare)s
768 Fault execute(ExecContext *, Trace::InstRecord *) const;
769 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
770 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
791 };
792}};
793
794def template LoadRegDeclare {{
795 /**
796 * Static instruction class for "%(mnemonic)s".
797 */
798 class %(class_name)s : public %(base_class)s
799 {
800 public:
801
802 /// Constructor.
803 %(class_name)s(ExtMachInst machInst,
804 uint32_t _dest, uint32_t _base, bool _add,
805 int32_t _shiftAmt, uint32_t _shiftType,
806 uint32_t _index);
807
771 };
772}};
773
774def template LoadRegDeclare {{
775 /**
776 * Static instruction class for "%(mnemonic)s".
777 */
778 class %(class_name)s : public %(base_class)s
779 {
780 public:
781
782 /// Constructor.
783 %(class_name)s(ExtMachInst machInst,
784 uint32_t _dest, uint32_t _base, bool _add,
785 int32_t _shiftAmt, uint32_t _shiftType,
786 uint32_t _index);
787
808 %(BasicExecDeclare)s
788 Fault execute(ExecContext *, Trace::InstRecord *) const;
789 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
790 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
809
791
810 %(InitiateAccDeclare)s
811
812 %(CompleteAccDeclare)s
813
814 virtual void
815 annotateFault(ArmFault *fault) {
816 %(fa_code)s
817 }
818 };
819}};
820
821def template LoadImmDeclare {{
822 /**
823 * Static instruction class for "%(mnemonic)s".
824 */
825 class %(class_name)s : public %(base_class)s
826 {
827 public:
828
829 /// Constructor.
830 %(class_name)s(ExtMachInst machInst,
831 uint32_t _dest, uint32_t _base, bool _add, int32_t _imm);
832
792 virtual void
793 annotateFault(ArmFault *fault) {
794 %(fa_code)s
795 }
796 };
797}};
798
799def template LoadImmDeclare {{
800 /**
801 * Static instruction class for "%(mnemonic)s".
802 */
803 class %(class_name)s : public %(base_class)s
804 {
805 public:
806
807 /// Constructor.
808 %(class_name)s(ExtMachInst machInst,
809 uint32_t _dest, uint32_t _base, bool _add, int32_t _imm);
810
833 %(BasicExecDeclare)s
811 Fault execute(ExecContext *, Trace::InstRecord *) const;
812 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
813 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
834
814
835 %(InitiateAccDeclare)s
836
837 %(CompleteAccDeclare)s
838
839 virtual void
840 annotateFault(ArmFault *fault) {
841 %(fa_code)s
842 }
843 };
844}};
845
815 virtual void
816 annotateFault(ArmFault *fault) {
817 %(fa_code)s
818 }
819 };
820}};
821
846def template InitiateAccDeclare {{
847 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
848}};
849
850def template CompleteAccDeclare {{
851 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
852}};
853
854def template RfeConstructor {{
855 %(class_name)s::%(class_name)s(ExtMachInst machInst,
856 uint32_t _base, int _mode, bool _wb)
857 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s,
858 (IntRegIndex)_base, (AddrMode)_mode, _wb)
859 {
860 %(constructor)s;
861 if (!(condCode == COND_AL || condCode == COND_UC)) {

--- 397 unchanged lines hidden ---
822def template RfeConstructor {{
823 %(class_name)s::%(class_name)s(ExtMachInst machInst,
824 uint32_t _base, int _mode, bool _wb)
825 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s,
826 (IntRegIndex)_base, (AddrMode)_mode, _wb)
827 {
828 %(constructor)s;
829 if (!(condCode == COND_AL || condCode == COND_UC)) {

--- 397 unchanged lines hidden ---