Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/s390/assembler-s390.h

Issue 2589063002: s390: clean up RR/RRE/RRD/RIL format in Assembler (Closed)
Patch Set: remove comments Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/ic/s390/ic-s390.cc ('k') | src/s390/assembler-s390.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions 5 // modification, are permitted provided that the following conditions
6 // are met: 6 // are met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 static const int kPatchDebugBreakSlotAddressOffset = 538 static const int kPatchDebugBreakSlotAddressOffset =
539 kDebugBreakSlotLength - kPatchDebugBreakSlotReturnOffset; 539 kDebugBreakSlotLength - kPatchDebugBreakSlotReturnOffset;
540 540
541 static inline int encode_crbit(const CRegister& cr, enum CRBit crbit) { 541 static inline int encode_crbit(const CRegister& cr, enum CRBit crbit) {
542 return ((cr.code() * CRWIDTH) + crbit); 542 return ((cr.code() * CRWIDTH) + crbit);
543 } 543 }
544 544
545 // --------------------------------------------------------------------------- 545 // ---------------------------------------------------------------------------
546 // Code generation 546 // Code generation
547 547
548 template <class T, int size, int lo, int hi>
549 inline T getfield(T value) {
550 DCHECK(lo < hi);
551 DCHECK(size > 0);
552 int mask = hi - lo;
553 int shift = size * 8 - hi;
554 uint32_t mask_value = (mask == 32) ? 0xffffffff : (1 << mask) - 1;
555 return (value & mask_value) << shift;
556 }
557
558 // Declare generic instruction formats by fields
559 inline void e_format(Opcode opcode) {
560 emit2bytes(getfield<uint16_t, 2, 0, 16>(opcode));
561 }
562
563 inline void i_format(Opcode opcode, int f1) {
564 emit2bytes(getfield<uint16_t, 2, 0, 8>(opcode) |
565 getfield<uint16_t, 2, 8, 16>(f1));
566 }
567
568 inline void ie_format(Opcode opcode, int f1, int f2) {
569 emit4bytes(getfield<uint32_t, 4, 0, 16>(opcode) |
570 getfield<uint32_t, 4, 24, 28>(f1) |
571 getfield<uint32_t, 4, 28, 32>(f2));
572 }
573 inline void mii_format(Opcode opcode, int f1, int f2, int f3) {
574 emit6bytes(
575 getfield<uint64_t, 6, 0, 8>(opcode) | getfield<uint64_t, 6, 8, 12>(f1) |
576 getfield<uint64_t, 6, 12, 24>(f2) | getfield<uint64_t, 6, 24, 48>(f3));
577 }
578
579 inline void ri_format(Opcode opcode, int f1, int f2) {
580 uint32_t op1 = opcode >> 4;
581 uint32_t op2 = opcode & 0xf;
582 emit4bytes(
583 getfield<uint32_t, 4, 0, 8>(op1) | getfield<uint32_t, 4, 8, 12>(f1) |
584 getfield<uint32_t, 4, 12, 16>(op2) | getfield<uint32_t, 4, 16, 32>(f2));
585 }
586
587 inline void rie_1_format(Opcode opcode, int f1, int f2, int f3, int f4) {
588 uint32_t op1 = opcode >> 8;
589 uint32_t op2 = opcode & 0xff;
590 emit6bytes(
591 getfield<uint64_t, 6, 0, 8>(op1) | getfield<uint64_t, 6, 8, 12>(f1) |
592 getfield<uint64_t, 6, 12, 16>(f2) | getfield<uint64_t, 6, 16, 32>(f3) |
593 getfield<uint64_t, 6, 32, 36>(f4) | getfield<uint64_t, 6, 40, 48>(op2));
594 }
595
596 inline void rie_2_format(Opcode opcode, int f1, int f2, int f3, int f4) {
597 uint32_t op1 = opcode >> 8;
598 uint32_t op2 = opcode & 0xff;
599 emit6bytes(
600 getfield<uint64_t, 6, 0, 8>(op1) | getfield<uint64_t, 6, 8, 12>(f1) |
601 getfield<uint64_t, 6, 12, 16>(f2) | getfield<uint64_t, 6, 16, 32>(f3) |
602 getfield<uint64_t, 6, 32, 40>(f4) | getfield<uint64_t, 6, 40, 48>(op2));
603 }
604
605 inline void rie_3_format(Opcode opcode, int f1, int f2, int f3, int f4,
606 int f5) {
607 uint32_t op1 = opcode >> 8;
608 uint32_t op2 = opcode & 0xff;
609 emit6bytes(
610 getfield<uint64_t, 6, 0, 8>(op1) | getfield<uint64_t, 6, 8, 12>(f1) |
611 getfield<uint64_t, 6, 12, 16>(f2) | getfield<uint64_t, 6, 16, 24>(f3) |
612 getfield<uint64_t, 6, 24, 32>(f4) | getfield<uint64_t, 6, 32, 40>(f5) |
613 getfield<uint64_t, 6, 40, 48>(op2));
614 }
615
616 #define DECLARE_S390_RIL_AB_INSTRUCTIONS(name, op_name, op_value) \
617 template <class R1> \
618 inline void name(R1 r1, const Operand& i2) { \
619 ril_format(op_name, r1.code(), i2.immediate()); \
620 }
621 #define DECLARE_S390_RIL_C_INSTRUCTIONS(name, op_name, op_value) \
622 inline void name(Condition m1, const Operand& i2) { \
623 ril_format(op_name, m1, i2.immediate()); \
624 }
625
626 inline void ril_format(Opcode opcode, int f1, int f2) {
627 uint32_t op1 = opcode >> 4;
628 uint32_t op2 = opcode & 0xf;
629 emit6bytes(
630 getfield<uint64_t, 6, 0, 8>(op1) | getfield<uint64_t, 6, 8, 12>(f1) |
631 getfield<uint64_t, 6, 12, 16>(op2) | getfield<uint64_t, 6, 16, 48>(f2));
632 }
633 S390_RIL_A_OPCODE_LIST(DECLARE_S390_RIL_AB_INSTRUCTIONS)
634 S390_RIL_B_OPCODE_LIST(DECLARE_S390_RIL_AB_INSTRUCTIONS)
635 S390_RIL_C_OPCODE_LIST(DECLARE_S390_RIL_C_INSTRUCTIONS)
636 #undef DECLARE_S390_RIL_AB_INSTRUCTIONS
637 #undef DECLARE_S390_RIL_C_INSTRUCTIONS
638
639 inline void ris_format(Opcode opcode, int f1, int f2, int f3, int f4,
640 int f5) {
641 uint32_t op1 = opcode >> 8;
642 uint32_t op2 = opcode & 0xff;
643 emit6bytes(
644 getfield<uint64_t, 6, 0, 8>(op1) | getfield<uint64_t, 6, 8, 12>(f1) |
645 getfield<uint64_t, 6, 12, 16>(f2) | getfield<uint64_t, 6, 16, 20>(f3) |
646 getfield<uint64_t, 6, 20, 32>(f4) | getfield<uint64_t, 6, 32, 40>(f5) |
647 getfield<uint64_t, 6, 40, 48>(op2));
648 }
649
650 #define DECLARE_S390_RR_INSTRUCTIONS(name, op_name, op_value) \
651 inline void name(Register r1, Register r2) { \
652 rr_format(op_name, r1.code(), r2.code()); \
653 } \
654 inline void name(DoubleRegister r1, DoubleRegister r2) { \
655 rr_format(op_name, r1.code(), r2.code()); \
656 } \
657 inline void name(Condition m1, Register r2) { \
658 rr_format(op_name, m1, r2.code()); \
659 }
660
661 inline void rr_format(Opcode opcode, int f1, int f2) {
662 emit2bytes(getfield<uint16_t, 2, 0, 8>(opcode) |
663 getfield<uint16_t, 2, 8, 12>(f1) |
664 getfield<uint16_t, 2, 12, 16>(f2));
665 }
666 S390_RR_OPCODE_LIST(DECLARE_S390_RR_INSTRUCTIONS)
667 #undef DECLARE_S390_RR_INSTRUCTIONS
668
669 #define DECLARE_S390_RRD_INSTRUCTIONS(name, op_name, op_value) \
670 template <class R1, class R2, class R3> \
671 inline void name(R1 r1, R3 r3, R2 r2) { \
672 rrd_format(op_name, r1.code(), r3.code(), r2.code()); \
673 }
674 inline void rrd_format(Opcode opcode, int f1, int f2, int f3) {
675 emit4bytes(getfield<uint32_t, 4, 0, 16>(opcode) |
676 getfield<uint32_t, 4, 16, 20>(f1) |
677 getfield<uint32_t, 4, 24, 28>(f2) |
678 getfield<uint32_t, 4, 28, 32>(f3));
679 }
680 S390_RRD_OPCODE_LIST(DECLARE_S390_RRD_INSTRUCTIONS)
681 #undef DECLARE_S390_RRD_INSTRUCTIONS
682
683 #define DECLARE_S390_RRE_INSTRUCTIONS(name, op_name, op_value) \
684 template <class R1, class R2> \
685 inline void name(R1 r1, R2 r2) { \
686 rre_format(op_name, r1.code(), r2.code()); \
687 }
688 inline void rre_format(Opcode opcode, int f1, int f2) {
689 emit4bytes(getfield<uint32_t, 4, 0, 16>(opcode) |
690 getfield<uint32_t, 4, 24, 28>(f1) |
691 getfield<uint32_t, 4, 28, 32>(f2));
692 }
693 S390_RRE_OPCODE_LIST(DECLARE_S390_RRE_INSTRUCTIONS)
694 // Special format
695 void lzdr(DoubleRegister r1) { rre_format(LZDR, r1.code(), 0); }
696 #undef DECLARE_S390_RRE_INSTRUCTIONS
697
698 inline void rrf_format(Opcode opcode, int f1, int f2, int f3, int f4) {
699 emit4bytes(
700 getfield<uint32_t, 4, 0, 16>(opcode) |
701 getfield<uint32_t, 4, 16, 20>(f1) | getfield<uint32_t, 4, 20, 24>(f2) |
702 getfield<uint32_t, 4, 24, 28>(f3) | getfield<uint32_t, 4, 28, 32>(f4));
703 }
704
548 // Helper for unconditional branch to Label with update to save register 705 // Helper for unconditional branch to Label with update to save register
549 void b(Register r, Label* l) { 706 void b(Register r, Label* l) {
550 int32_t halfwords = branch_offset(l) / 2; 707 int32_t halfwords = branch_offset(l) / 2;
551 brasl(r, Operand(halfwords)); 708 brasl(r, Operand(halfwords));
552 } 709 }
553 710
554 // Conditional Branch Instruction - Generates either BRC / BRCL 711 // Conditional Branch Instruction - Generates either BRC / BRCL
555 void branchOnCond(Condition c, int branch_offset, bool is_bound = false); 712 void branchOnCond(Condition c, int branch_offset, bool is_bound = false);
556 713
557 // Helpers for conditional branch to Label 714 // Helpers for conditional branch to Label
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 #define RI1_FORM(name) void name(Register r, const Operand& i) 797 #define RI1_FORM(name) void name(Register r, const Operand& i)
641 798
642 #define RI2_FORM(name) void name(Condition m, const Operand& i) 799 #define RI2_FORM(name) void name(Condition m, const Operand& i)
643 800
644 #define RIE_FORM(name) void name(Register r1, Register R3, const Operand& i) 801 #define RIE_FORM(name) void name(Register r1, Register R3, const Operand& i)
645 802
646 #define RIE_F_FORM(name) \ 803 #define RIE_F_FORM(name) \
647 void name(Register r1, Register r2, const Operand& i3, const Operand& i4, \ 804 void name(Register r1, Register r2, const Operand& i3, const Operand& i4, \
648 const Operand& i5) 805 const Operand& i5)
649 806
650 #define RIL1_FORM(name) void name(Register r1, const Operand& i2)
651
652 #define RIL2_FORM(name) void name(Condition m1, const Operand& i2)
653
654 #define RXE_FORM(name) \ 807 #define RXE_FORM(name) \
655 void name(Register r1, const MemOperand& opnd); \ 808 void name(Register r1, const MemOperand& opnd); \
656 void name(Register r1, Register b2, Register x2, Disp d2) 809 void name(Register r1, Register b2, Register x2, Disp d2)
657 810
658 #define RXF_FORM(name) \ 811 #define RXF_FORM(name) \
659 void name(Register r1, Register r3, const MemOperand& opnd); \ 812 void name(Register r1, Register r3, const MemOperand& opnd); \
660 void name(Register r1, Register r3, Register b2, Register x2, Disp d2) 813 void name(Register r1, Register r3, Register b2, Register x2, Disp d2)
661 814
662 #define RXY_FORM(name) \ 815 #define RXY_FORM(name) \
663 void name(Register r1, Register x2, Register b2, Disp d2); \ 816 void name(Register r1, Register x2, Register b2, Disp d2); \
664 void name(Register r1, const MemOperand& opnd) 817 void name(Register r1, const MemOperand& opnd)
665 818
666 #define RSI_FORM(name) void name(Register r1, Register r3, const Operand& i) 819 #define RSI_FORM(name) void name(Register r1, Register r3, const Operand& i)
667 820
668 #define RIS_FORM(name) \ 821 #define RIS_FORM(name) \
669 void name(Register r1, Condition m3, Register b4, Disp d4, \ 822 void name(Register r1, Condition m3, Register b4, Disp d4, \
670 const Operand& i2); \ 823 const Operand& i2); \
671 void name(Register r1, const Operand& i2, Condition m3, \ 824 void name(Register r1, const Operand& i2, Condition m3, \
672 const MemOperand& opnd) 825 const MemOperand& opnd)
673 826
674 #define SI_FORM(name) \ 827 #define SI_FORM(name) \
675 void name(const MemOperand& opnd, const Operand& i); \ 828 void name(const MemOperand& opnd, const Operand& i); \
676 void name(const Operand& i2, Register b1, Disp d1) 829 void name(const Operand& i2, Register b1, Disp d1)
677 830
678 #define SIL_FORM(name) \ 831 #define SIL_FORM(name) \
679 void name(Register b1, Disp d1, const Operand& i2); \ 832 void name(Register b1, Disp d1, const Operand& i2); \
680 void name(const MemOperand& opnd, const Operand& i2) 833 void name(const MemOperand& opnd, const Operand& i2)
681 834
682 #define RRE_FORM(name) void name(Register r1, Register r2)
683
684 #define RRF1_FORM(name) void name(Register r1, Register r2, Register r3) 835 #define RRF1_FORM(name) void name(Register r1, Register r2, Register r3)
685 836
686 #define RRF2_FORM(name) void name(Condition m1, Register r1, Register r2) 837 #define RRF2_FORM(name) void name(Condition m1, Register r1, Register r2)
687 838
688 #define RRF3_FORM(name) \ 839 #define RRF3_FORM(name) \
689 void name(Register r3, Condition m4, Register r1, Register r2) 840 void name(Register r3, Condition m4, Register r1, Register r2)
690 841
691 #define RS1_FORM(name) \ 842 #define RS1_FORM(name) \
692 void name(Register r1, Register r3, const MemOperand& opnd); \ 843 void name(Register r1, Register r3, const MemOperand& opnd); \
693 void name(Register r1, Register r3, Register b2, Disp d2) 844 void name(Register r1, Register r3, Register b2, Disp d2)
(...skipping 11 matching lines...) Expand all
705 void name(const MemOperand& opnd) 856 void name(const MemOperand& opnd)
706 857
707 #define RSY1_FORM(name) \ 858 #define RSY1_FORM(name) \
708 void name(Register r1, Register r3, Register b2, Disp d2); \ 859 void name(Register r1, Register r3, Register b2, Disp d2); \
709 void name(Register r1, Register r3, const MemOperand& opnd) 860 void name(Register r1, Register r3, const MemOperand& opnd)
710 861
711 #define RSY2_FORM(name) \ 862 #define RSY2_FORM(name) \
712 void name(Register r1, Condition m3, Register b2, Disp d2); \ 863 void name(Register r1, Condition m3, Register b2, Disp d2); \
713 void name(Register r1, Condition m3, const MemOperand& opnd) 864 void name(Register r1, Condition m3, const MemOperand& opnd)
714 865
715 #define RRD_FORM(name) void name(Register r1, Register r3, Register r2)
716
717 #define RRS_FORM(name) \ 866 #define RRS_FORM(name) \
718 void name(Register r1, Register r2, Register b4, Disp d4, Condition m3); \ 867 void name(Register r1, Register r2, Register b4, Disp d4, Condition m3); \
719 void name(Register r1, Register r2, Condition m3, const MemOperand& opnd) 868 void name(Register r1, Register r2, Condition m3, const MemOperand& opnd)
720 869
721 #define S_FORM(name) \ 870 #define S_FORM(name) \
722 void name(Register b2, Disp d2); \ 871 void name(Register b2, Disp d2); \
723 void name(const MemOperand& opnd) 872 void name(const MemOperand& opnd)
724 873
725 #define SIY_FORM(name) \ 874 #define SIY_FORM(name) \
726 void name(const Operand& i2, Register b1, Disp d1); \ 875 void name(const Operand& i2, Register b1, Disp d1); \
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
802 vfm(v1, v2, v3, static_cast<Condition>(0), static_cast<Condition>(8), 951 vfm(v1, v2, v3, static_cast<Condition>(0), static_cast<Condition>(8),
803 static_cast<Condition>(3)); 952 static_cast<Condition>(3));
804 } 953 }
805 void vfd(DoubleRegister v1, DoubleRegister v2, DoubleRegister v3) { 954 void vfd(DoubleRegister v1, DoubleRegister v2, DoubleRegister v3) {
806 vfd(v1, v2, v3, static_cast<Condition>(0), static_cast<Condition>(8), 955 vfd(v1, v2, v3, static_cast<Condition>(0), static_cast<Condition>(8),
807 static_cast<Condition>(3)); 956 static_cast<Condition>(3));
808 } 957 }
809 958
810 // S390 instruction sets 959 // S390 instruction sets
811 RX_FORM(bc); 960 RX_FORM(bc);
812 RR_FORM(bctr);
813 RX_FORM(cd); 961 RX_FORM(cd);
814 RRE_FORM(cdr);
815 RXE_FORM(cdb); 962 RXE_FORM(cdb);
816 RXE_FORM(ceb); 963 RXE_FORM(ceb);
817 RXE_FORM(ddb); 964 RXE_FORM(ddb);
818 RRE_FORM(ddbr);
819 SS1_FORM(ed); 965 SS1_FORM(ed);
820 RRE_FORM(epair);
821 RX_FORM(ex); 966 RX_FORM(ex);
822 RRF2_FORM(fidbr); 967 RRF2_FORM(fidbr);
823 RRE_FORM(flogr);
824 RX_FORM(ic_z); 968 RX_FORM(ic_z);
825 RXY_FORM(icy); 969 RXY_FORM(icy);
826 RIL1_FORM(iihf);
827 RI1_FORM(iihh); 970 RI1_FORM(iihh);
828 RI1_FORM(iihl); 971 RI1_FORM(iihl);
829 RIL1_FORM(iilf);
830 RIL1_FORM(lgfi);
831 RI1_FORM(iilh); 972 RI1_FORM(iilh);
832 RI1_FORM(iill); 973 RI1_FORM(iill);
833 RRE_FORM(lcgr);
834 RR_FORM(lcr);
835 RX_FORM(le_z); 974 RX_FORM(le_z);
836 RXY_FORM(ley); 975 RXY_FORM(ley);
837 RIL1_FORM(llihf);
838 RIL1_FORM(llilf);
839 RRE_FORM(lngr);
840 RR_FORM(lnr);
841 RSY1_FORM(loc); 976 RSY1_FORM(loc);
842 RXY_FORM(lrv); 977 RXY_FORM(lrv);
843 RRE_FORM(lrvr);
844 RRE_FORM(lrvgr);
845 RXY_FORM(lrvh); 978 RXY_FORM(lrvh);
846 RXY_FORM(lrvg); 979 RXY_FORM(lrvg);
847 RXE_FORM(mdb); 980 RXE_FORM(mdb);
848 RRE_FORM(mdbr);
849 SS4_FORM(mvck); 981 SS4_FORM(mvck);
850 SSF_FORM(mvcos); 982 SSF_FORM(mvcos);
851 SS4_FORM(mvcs); 983 SS4_FORM(mvcs);
852 SS1_FORM(mvn); 984 SS1_FORM(mvn);
853 SS1_FORM(nc); 985 SS1_FORM(nc);
854 SI_FORM(ni); 986 SI_FORM(ni);
855 RIL1_FORM(nihf);
856 RIL1_FORM(nilf);
857 RI1_FORM(nilh); 987 RI1_FORM(nilh);
858 RI1_FORM(nill); 988 RI1_FORM(nill);
859 RIL1_FORM(oihf);
860 RIL1_FORM(oilf);
861 RI1_FORM(oill); 989 RI1_FORM(oill);
862 RRE_FORM(popcnt);
863 RXE_FORM(sdb); 990 RXE_FORM(sdb);
864 RRE_FORM(sdbr);
865 RIL1_FORM(slfi);
866 RXY_FORM(slgf); 991 RXY_FORM(slgf);
867 RIL1_FORM(slgfi);
868 RS1_FORM(srdl); 992 RS1_FORM(srdl);
869 RX_FORM(ste); 993 RX_FORM(ste);
870 RXY_FORM(stey); 994 RXY_FORM(stey);
871 RXY_FORM(strv); 995 RXY_FORM(strv);
872 RXY_FORM(strvh); 996 RXY_FORM(strvh);
873 RXY_FORM(strvg); 997 RXY_FORM(strvg);
874 RI1_FORM(tmll); 998 RI1_FORM(tmll);
875 SS1_FORM(tr); 999 SS1_FORM(tr);
876 S_FORM(ts); 1000 S_FORM(ts);
877 RIL1_FORM(xihf);
878 RIL1_FORM(xilf);
879 1001
880 // Load Address Instructions 1002 // Load Address Instructions
881 void la(Register r, const MemOperand& opnd); 1003 void la(Register r, const MemOperand& opnd);
882 void lay(Register r, const MemOperand& opnd); 1004 void lay(Register r, const MemOperand& opnd);
883 void larl(Register r1, const Operand& opnd);
884 void larl(Register r, Label* l); 1005 void larl(Register r, Label* l);
885 1006
886 // Load Instructions 1007 // Load Instructions
887 void lb(Register r, const MemOperand& src); 1008 void lb(Register r, const MemOperand& src);
888 void lbr(Register r1, Register r2);
889 void lgb(Register r, const MemOperand& src); 1009 void lgb(Register r, const MemOperand& src);
890 void lgbr(Register r1, Register r2);
891 void lh(Register r, const MemOperand& src); 1010 void lh(Register r, const MemOperand& src);
892 void lhy(Register r, const MemOperand& src); 1011 void lhy(Register r, const MemOperand& src);
893 void lhr(Register r1, Register r2);
894 void lgh(Register r, const MemOperand& src); 1012 void lgh(Register r, const MemOperand& src);
895 void lghr(Register r1, Register r2);
896 void l(Register r, const MemOperand& src); 1013 void l(Register r, const MemOperand& src);
897 void ly(Register r, const MemOperand& src); 1014 void ly(Register r, const MemOperand& src);
898 void lr(Register r1, Register r2);
899 void lg(Register r, const MemOperand& src); 1015 void lg(Register r, const MemOperand& src);
900 void lgr(Register r1, Register r2);
901 void lgf(Register r, const MemOperand& src); 1016 void lgf(Register r, const MemOperand& src);
902 void lgfr(Register r1, Register r2);
903 void lhi(Register r, const Operand& imm); 1017 void lhi(Register r, const Operand& imm);
904 void lghi(Register r, const Operand& imm); 1018 void lghi(Register r, const Operand& imm);
905 1019
906 // Load And Test Instructions 1020 // Load And Test Instructions
907 void lt_z(Register r, const MemOperand& src); 1021 void lt_z(Register r, const MemOperand& src);
908 void ltg(Register r, const MemOperand& src); 1022 void ltg(Register r, const MemOperand& src);
909 void ltr(Register r1, Register r2);
910 void ltgr(Register r1, Register r2);
911 void ltgfr(Register r1, Register r2);
912 1023
913 // Load Logical Instructions 1024 // Load Logical Instructions
914 void llc(Register r, const MemOperand& src); 1025 void llc(Register r, const MemOperand& src);
915 void llgc(Register r, const MemOperand& src); 1026 void llgc(Register r, const MemOperand& src);
916 void llgf(Register r, const MemOperand& src); 1027 void llgf(Register r, const MemOperand& src);
917 void llgfr(Register r1, Register r2);
918 void llh(Register r, const MemOperand& src); 1028 void llh(Register r, const MemOperand& src);
919 void llgh(Register r, const MemOperand& src); 1029 void llgh(Register r, const MemOperand& src);
920 void llhr(Register r1, Register r2);
921 void llghr(Register r1, Register r2);
922 1030
923 // Load Multiple Instructions 1031 // Load Multiple Instructions
924 void lm(Register r1, Register r2, const MemOperand& src); 1032 void lm(Register r1, Register r2, const MemOperand& src);
925 void lmy(Register r1, Register r2, const MemOperand& src); 1033 void lmy(Register r1, Register r2, const MemOperand& src);
926 void lmg(Register r1, Register r2, const MemOperand& src); 1034 void lmg(Register r1, Register r2, const MemOperand& src);
927 1035
928 // Load On Condition Instructions 1036 // Load On Condition Instructions
929 void locr(Condition m3, Register r1, Register r2); 1037 void locr(Condition m3, Register r1, Register r2);
930 void locgr(Condition m3, Register r1, Register r2); 1038 void locgr(Condition m3, Register r1, Register r2);
931 void loc(Condition m3, Register r1, const MemOperand& src); 1039 void loc(Condition m3, Register r1, const MemOperand& src);
932 void locg(Condition m3, Register r1, const MemOperand& src); 1040 void locg(Condition m3, Register r1, const MemOperand& src);
933 1041
934 // Store Instructions 1042 // Store Instructions
935 void st(Register r, const MemOperand& src); 1043 void st(Register r, const MemOperand& src);
936 void stc(Register r, const MemOperand& src); 1044 void stc(Register r, const MemOperand& src);
937 void stcy(Register r, const MemOperand& src); 1045 void stcy(Register r, const MemOperand& src);
938 void stg(Register r, const MemOperand& src); 1046 void stg(Register r, const MemOperand& src);
939 void sth(Register r, const MemOperand& src); 1047 void sth(Register r, const MemOperand& src);
940 void sthy(Register r, const MemOperand& src); 1048 void sthy(Register r, const MemOperand& src);
941 void sty(Register r, const MemOperand& src); 1049 void sty(Register r, const MemOperand& src);
942 1050
943 // Store Multiple Instructions 1051 // Store Multiple Instructions
944 void stm(Register r1, Register r2, const MemOperand& src); 1052 void stm(Register r1, Register r2, const MemOperand& src);
945 void stmy(Register r1, Register r2, const MemOperand& src); 1053 void stmy(Register r1, Register r2, const MemOperand& src);
946 void stmg(Register r1, Register r2, const MemOperand& src); 1054 void stmg(Register r1, Register r2, const MemOperand& src);
947 1055
948 // Compare Instructions 1056 // Compare Instructions
949 void c(Register r, const MemOperand& opnd); 1057 void c(Register r, const MemOperand& opnd);
950 void cy(Register r, const MemOperand& opnd); 1058 void cy(Register r, const MemOperand& opnd);
951 void cr_z(Register r1, Register r2);
952 void cg(Register r, const MemOperand& opnd); 1059 void cg(Register r, const MemOperand& opnd);
953 void cgr(Register r1, Register r2);
954 void ch(Register r, const MemOperand& opnd); 1060 void ch(Register r, const MemOperand& opnd);
955 void chy(Register r, const MemOperand& opnd); 1061 void chy(Register r, const MemOperand& opnd);
956 void chi(Register r, const Operand& opnd); 1062 void chi(Register r, const Operand& opnd);
957 void cghi(Register r, const Operand& opnd); 1063 void cghi(Register r, const Operand& opnd);
958 void cfi(Register r, const Operand& opnd);
959 void cgfi(Register r, const Operand& opnd);
960 1064
961 // Compare Logical Instructions 1065 // Compare Logical Instructions
962 void cl(Register r, const MemOperand& opnd); 1066 void cl(Register r, const MemOperand& opnd);
963 void cly(Register r, const MemOperand& opnd); 1067 void cly(Register r, const MemOperand& opnd);
964 void clr(Register r1, Register r2);
965 void clg(Register r, const MemOperand& opnd); 1068 void clg(Register r, const MemOperand& opnd);
966 void clgr(Register r1, Register r2);
967 void clfi(Register r, const Operand& opnd);
968 void clgfi(Register r, const Operand& opnd);
969 void cli(const MemOperand& mem, const Operand& imm); 1069 void cli(const MemOperand& mem, const Operand& imm);
970 void cliy(const MemOperand& mem, const Operand& imm); 1070 void cliy(const MemOperand& mem, const Operand& imm);
971 void clc(const MemOperand& opnd1, const MemOperand& opnd2, Length length); 1071 void clc(const MemOperand& opnd1, const MemOperand& opnd2, Length length);
972 1072
973 // Test Under Mask Instructions 1073 // Test Under Mask Instructions
974 void tm(const MemOperand& mem, const Operand& imm); 1074 void tm(const MemOperand& mem, const Operand& imm);
975 void tmy(const MemOperand& mem, const Operand& imm); 1075 void tmy(const MemOperand& mem, const Operand& imm);
976 1076
977 // Rotate Instructions 1077 // Rotate Instructions
978 void rll(Register r1, Register r3, Register opnd); 1078 void rll(Register r1, Register r3, Register opnd);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1020 const Operand& endBit, const Operand& shiftAmt, 1120 const Operand& endBit, const Operand& shiftAmt,
1021 bool zeroBits = true); 1121 bool zeroBits = true);
1022 void risbgn(Register dst, Register src, const Operand& startBit, 1122 void risbgn(Register dst, Register src, const Operand& startBit,
1023 const Operand& endBit, const Operand& shiftAmt, 1123 const Operand& endBit, const Operand& shiftAmt,
1024 bool zeroBits = true); 1124 bool zeroBits = true);
1025 1125
1026 // Move Character (Mem to Mem) 1126 // Move Character (Mem to Mem)
1027 void mvc(const MemOperand& opnd1, const MemOperand& opnd2, uint32_t length); 1127 void mvc(const MemOperand& opnd1, const MemOperand& opnd2, uint32_t length);
1028 1128
1029 // Branch Instructions 1129 // Branch Instructions
1030 void basr(Register r1, Register r2);
1031 void bcr(Condition m, Register target);
1032 void bct(Register r, const MemOperand& opnd); 1130 void bct(Register r, const MemOperand& opnd);
1033 void bctg(Register r, const MemOperand& opnd); 1131 void bctg(Register r, const MemOperand& opnd);
1034 void bras(Register r, const Operand& opnd); 1132 void bras(Register r, const Operand& opnd);
1035 void brasl(Register r, const Operand& opnd);
1036 void brc(Condition c, const Operand& opnd); 1133 void brc(Condition c, const Operand& opnd);
1037 void brcl(Condition m, const Operand& opnd, bool isCodeTarget = false);
1038 void brct(Register r1, const Operand& opnd); 1134 void brct(Register r1, const Operand& opnd);
1039 void brctg(Register r1, const Operand& opnd); 1135 void brctg(Register r1, const Operand& opnd);
1040 1136
1041 // 32-bit Add Instructions 1137 // 32-bit Add Instructions
1042 void a(Register r1, const MemOperand& opnd); 1138 void a(Register r1, const MemOperand& opnd);
1043 void ay(Register r1, const MemOperand& opnd); 1139 void ay(Register r1, const MemOperand& opnd);
1044 void afi(Register r1, const Operand& opnd);
1045 void ah(Register r1, const MemOperand& opnd); 1140 void ah(Register r1, const MemOperand& opnd);
1046 void ahy(Register r1, const MemOperand& opnd); 1141 void ahy(Register r1, const MemOperand& opnd);
1047 void ahi(Register r1, const Operand& opnd); 1142 void ahi(Register r1, const Operand& opnd);
1048 void ahik(Register r1, Register r3, const Operand& opnd); 1143 void ahik(Register r1, Register r3, const Operand& opnd);
1049 void ar(Register r1, Register r2);
1050 void ark(Register r1, Register r2, Register r3); 1144 void ark(Register r1, Register r2, Register r3);
1051 void asi(const MemOperand&, const Operand&); 1145 void asi(const MemOperand&, const Operand&);
1052 1146
1053 // 64-bit Add Instructions 1147 // 64-bit Add Instructions
1054 void ag(Register r1, const MemOperand& opnd); 1148 void ag(Register r1, const MemOperand& opnd);
1055 void agf(Register r1, const MemOperand& opnd); 1149 void agf(Register r1, const MemOperand& opnd);
1056 void agfi(Register r1, const Operand& opnd);
1057 void agfr(Register r1, Register r2);
1058 void aghi(Register r1, const Operand& opnd); 1150 void aghi(Register r1, const Operand& opnd);
1059 void aghik(Register r1, Register r3, const Operand& opnd); 1151 void aghik(Register r1, Register r3, const Operand& opnd);
1060 void agr(Register r1, Register r2);
1061 void agrk(Register r1, Register r2, Register r3); 1152 void agrk(Register r1, Register r2, Register r3);
1062 void agsi(const MemOperand&, const Operand&); 1153 void agsi(const MemOperand&, const Operand&);
1063 1154
1064 // 32-bit Add Logical Instructions 1155 // 32-bit Add Logical Instructions
1065 void al_z(Register r1, const MemOperand& opnd); 1156 void al_z(Register r1, const MemOperand& opnd);
1066 void aly(Register r1, const MemOperand& opnd); 1157 void aly(Register r1, const MemOperand& opnd);
1067 void alfi(Register r1, const Operand& opnd);
1068 void alr(Register r1, Register r2);
1069 void alcr(Register r1, Register r2);
1070 void alrk(Register r1, Register r2, Register r3); 1158 void alrk(Register r1, Register r2, Register r3);
1071 1159
1072 // 64-bit Add Logical Instructions 1160 // 64-bit Add Logical Instructions
1073 void alg(Register r1, const MemOperand& opnd); 1161 void alg(Register r1, const MemOperand& opnd);
1074 void algfi(Register r1, const Operand& opnd);
1075 void algr(Register r1, Register r2);
1076 void algrk(Register r1, Register r2, Register r3); 1162 void algrk(Register r1, Register r2, Register r3);
1077 1163
1078 // 32-bit Subtract Instructions 1164 // 32-bit Subtract Instructions
1079 void s(Register r1, const MemOperand& opnd); 1165 void s(Register r1, const MemOperand& opnd);
1080 void sy(Register r1, const MemOperand& opnd); 1166 void sy(Register r1, const MemOperand& opnd);
1081 void sh(Register r1, const MemOperand& opnd); 1167 void sh(Register r1, const MemOperand& opnd);
1082 void shy(Register r1, const MemOperand& opnd); 1168 void shy(Register r1, const MemOperand& opnd);
1083 void sr(Register r1, Register r2);
1084 void srk(Register r1, Register r2, Register r3); 1169 void srk(Register r1, Register r2, Register r3);
1085 1170
1086 // 64-bit Subtract Instructions 1171 // 64-bit Subtract Instructions
1087 void sg(Register r1, const MemOperand& opnd); 1172 void sg(Register r1, const MemOperand& opnd);
1088 void sgf(Register r1, const MemOperand& opnd); 1173 void sgf(Register r1, const MemOperand& opnd);
1089 void sgr(Register r1, Register r2);
1090 void sgfr(Register r1, Register r2);
1091 void sgrk(Register r1, Register r2, Register r3); 1174 void sgrk(Register r1, Register r2, Register r3);
1092 1175
1093 // 32-bit Subtract Logical Instructions 1176 // 32-bit Subtract Logical Instructions
1094 void sl(Register r1, const MemOperand& opnd); 1177 void sl(Register r1, const MemOperand& opnd);
1095 void sly(Register r1, const MemOperand& opnd); 1178 void sly(Register r1, const MemOperand& opnd);
1096 void slr(Register r1, Register r2);
1097 void slrk(Register r1, Register r2, Register r3); 1179 void slrk(Register r1, Register r2, Register r3);
1098 void slbr(Register r1, Register r2);
1099 1180
1100 // 64-bit Subtract Logical Instructions 1181 // 64-bit Subtract Logical Instructions
1101 void slg(Register r1, const MemOperand& opnd); 1182 void slg(Register r1, const MemOperand& opnd);
1102 void slgr(Register r1, Register r2);
1103 void slgrk(Register r1, Register r2, Register r3); 1183 void slgrk(Register r1, Register r2, Register r3);
1104 1184
1105 // 32-bit Multiply Instructions 1185 // 32-bit Multiply Instructions
1106 void m(Register r1, const MemOperand& opnd); 1186 void m(Register r1, const MemOperand& opnd);
1107 void mfy(Register r1, const MemOperand& opnd); 1187 void mfy(Register r1, const MemOperand& opnd);
1108 void mr_z(Register r1, Register r2);
1109 void ml(Register r1, const MemOperand& opnd); 1188 void ml(Register r1, const MemOperand& opnd);
1110 void mlr(Register r1, Register r2);
1111 void ms(Register r1, const MemOperand& opnd); 1189 void ms(Register r1, const MemOperand& opnd);
1112 void msy(Register r1, const MemOperand& opnd); 1190 void msy(Register r1, const MemOperand& opnd);
1113 void msfi(Register r1, const Operand& opnd);
1114 void msr(Register r1, Register r2);
1115 void mh(Register r1, const MemOperand& opnd); 1191 void mh(Register r1, const MemOperand& opnd);
1116 void mhy(Register r1, const MemOperand& opnd); 1192 void mhy(Register r1, const MemOperand& opnd);
1117 void mhi(Register r1, const Operand& opnd); 1193 void mhi(Register r1, const Operand& opnd);
1118 1194
1119 // 64-bit Multiply Instructions 1195 // 64-bit Multiply Instructions
1120 void mlg(Register r1, const MemOperand& opnd); 1196 void mlg(Register r1, const MemOperand& opnd);
1121 void mlgr(Register r1, Register r2);
1122 void mghi(Register r1, const Operand& opnd); 1197 void mghi(Register r1, const Operand& opnd);
1123 void msgfi(Register r1, const Operand& opnd);
1124 void msg(Register r1, const MemOperand& opnd); 1198 void msg(Register r1, const MemOperand& opnd);
1125 void msgr(Register r1, Register r2);
1126 1199
1127 // 32-bit Divide Instructions 1200 // 32-bit Divide Instructions
1128 void d(Register r1, const MemOperand& opnd); 1201 void d(Register r1, const MemOperand& opnd);
1129 void dr(Register r1, Register r2);
1130 void dl(Register r1, const MemOperand& opnd); 1202 void dl(Register r1, const MemOperand& opnd);
1131 void dlr(Register r1, Register r2);
1132
1133 // 64-bit Divide Instructions
1134 void dlgr(Register r1, Register r2);
1135 void dsgr(Register r1, Register r2);
1136 1203
1137 // Bitwise Instructions (AND / OR / XOR) 1204 // Bitwise Instructions (AND / OR / XOR)
1138 void n(Register r1, const MemOperand& opnd); 1205 void n(Register r1, const MemOperand& opnd);
1139 void ny(Register r1, const MemOperand& opnd); 1206 void ny(Register r1, const MemOperand& opnd);
1140 void nr(Register r1, Register r2);
1141 void nrk(Register r1, Register r2, Register r3); 1207 void nrk(Register r1, Register r2, Register r3);
1142 void ng(Register r1, const MemOperand& opnd); 1208 void ng(Register r1, const MemOperand& opnd);
1143 void ngr(Register r1, Register r2);
1144 void ngrk(Register r1, Register r2, Register r3); 1209 void ngrk(Register r1, Register r2, Register r3);
1145 void o(Register r1, const MemOperand& opnd); 1210 void o(Register r1, const MemOperand& opnd);
1146 void oy(Register r1, const MemOperand& opnd); 1211 void oy(Register r1, const MemOperand& opnd);
1147 void or_z(Register r1, Register r2);
1148 void ork(Register r1, Register r2, Register r3); 1212 void ork(Register r1, Register r2, Register r3);
1149 void og(Register r1, const MemOperand& opnd); 1213 void og(Register r1, const MemOperand& opnd);
1150 void ogr(Register r1, Register r2);
1151 void ogrk(Register r1, Register r2, Register r3); 1214 void ogrk(Register r1, Register r2, Register r3);
1152 void x(Register r1, const MemOperand& opnd); 1215 void x(Register r1, const MemOperand& opnd);
1153 void xy(Register r1, const MemOperand& opnd); 1216 void xy(Register r1, const MemOperand& opnd);
1154 void xr(Register r1, Register r2);
1155 void xrk(Register r1, Register r2, Register r3); 1217 void xrk(Register r1, Register r2, Register r3);
1156 void xg(Register r1, const MemOperand& opnd); 1218 void xg(Register r1, const MemOperand& opnd);
1157 void xgr(Register r1, Register r2);
1158 void xgrk(Register r1, Register r2, Register r3); 1219 void xgrk(Register r1, Register r2, Register r3);
1159 void xc(const MemOperand& opnd1, const MemOperand& opnd2, Length length); 1220 void xc(const MemOperand& opnd1, const MemOperand& opnd2, Length length);
1160 1221
1161 // Bitwise GPR <-> FPR Conversion Instructions
1162 void lgdr(Register r1, DoubleRegister f2);
1163 void ldgr(DoubleRegister f1, Register r2);
1164
1165 // Floating Point Load / Store Instructions 1222 // Floating Point Load / Store Instructions
1166 void ld(DoubleRegister r1, const MemOperand& opnd); 1223 void ld(DoubleRegister r1, const MemOperand& opnd);
1167 void ldy(DoubleRegister r1, const MemOperand& opnd); 1224 void ldy(DoubleRegister r1, const MemOperand& opnd);
1168 void le_z(DoubleRegister r1, const MemOperand& opnd); 1225 void le_z(DoubleRegister r1, const MemOperand& opnd);
1169 void ley(DoubleRegister r1, const MemOperand& opnd); 1226 void ley(DoubleRegister r1, const MemOperand& opnd);
1170 void ldr(DoubleRegister r1, DoubleRegister r2);
1171 void ltdbr(DoubleRegister r1, DoubleRegister r2);
1172 void ltebr(DoubleRegister r1, DoubleRegister r2);
1173 void std(DoubleRegister r1, const MemOperand& opnd); 1227 void std(DoubleRegister r1, const MemOperand& opnd);
1174 void stdy(DoubleRegister r1, const MemOperand& opnd); 1228 void stdy(DoubleRegister r1, const MemOperand& opnd);
1175 void ste(DoubleRegister r1, const MemOperand& opnd); 1229 void ste(DoubleRegister r1, const MemOperand& opnd);
1176 void stey(DoubleRegister r1, const MemOperand& opnd); 1230 void stey(DoubleRegister r1, const MemOperand& opnd);
1177 1231
1178 // Floating Point Load Rounded/Positive Instructions
1179 void ledbr(DoubleRegister r1, DoubleRegister r2);
1180 void ldebr(DoubleRegister r1, DoubleRegister r2);
1181 void lpebr(DoubleRegister r1, DoubleRegister r2);
1182 void lpdbr(DoubleRegister r1, DoubleRegister r2);
1183
1184 // Floating <-> Fixed Point Conversion Instructions 1232 // Floating <-> Fixed Point Conversion Instructions
1185 void cdlfbr(Condition m3, Condition m4, DoubleRegister fltReg, 1233 void cdlfbr(Condition m3, Condition m4, DoubleRegister fltReg,
1186 Register fixReg); 1234 Register fixReg);
1187 void cdlgbr(Condition m3, Condition m4, DoubleRegister fltReg, 1235 void cdlgbr(Condition m3, Condition m4, DoubleRegister fltReg,
1188 Register fixReg); 1236 Register fixReg);
1189 void celgbr(Condition m3, Condition m4, DoubleRegister fltReg, 1237 void celgbr(Condition m3, Condition m4, DoubleRegister fltReg,
1190 Register fixReg); 1238 Register fixReg);
1191 void celfbr(Condition m3, Condition m4, DoubleRegister fltReg, 1239 void celfbr(Condition m3, Condition m4, DoubleRegister fltReg,
1192 Register fixReg); 1240 Register fixReg);
1193 void clfdbr(Condition m3, Condition m4, Register fixReg, 1241 void clfdbr(Condition m3, Condition m4, Register fixReg,
1194 DoubleRegister fltReg); 1242 DoubleRegister fltReg);
1195 void clfebr(Condition m3, Condition m4, Register fixReg, 1243 void clfebr(Condition m3, Condition m4, Register fixReg,
1196 DoubleRegister fltReg); 1244 DoubleRegister fltReg);
1197 void clgdbr(Condition m3, Condition m4, Register fixReg, 1245 void clgdbr(Condition m3, Condition m4, Register fixReg,
1198 DoubleRegister fltReg); 1246 DoubleRegister fltReg);
1199 void clgebr(Condition m3, Condition m4, Register fixReg, 1247 void clgebr(Condition m3, Condition m4, Register fixReg,
1200 DoubleRegister fltReg); 1248 DoubleRegister fltReg);
1201 void cfdbr(Condition m, Register fixReg, DoubleRegister fltReg); 1249 void cfdbr(Condition m, Register fixReg, DoubleRegister fltReg);
1202 void cdfbr(DoubleRegister fltReg, Register fixReg);
1203 void cgebr(Condition m, Register fixReg, DoubleRegister fltReg); 1250 void cgebr(Condition m, Register fixReg, DoubleRegister fltReg);
1204 void cgdbr(Condition m, Register fixReg, DoubleRegister fltReg); 1251 void cgdbr(Condition m, Register fixReg, DoubleRegister fltReg);
1205 void cegbr(DoubleRegister fltReg, Register fixReg);
1206 void cdgbr(DoubleRegister fltReg, Register fixReg);
1207 void cfebr(Condition m3, Register fixReg, DoubleRegister fltReg); 1252 void cfebr(Condition m3, Register fixReg, DoubleRegister fltReg);
1208 void cefbr(Condition m3, DoubleRegister fltReg, Register fixReg); 1253 void cefbr(Condition m3, DoubleRegister fltReg, Register fixReg);
1209 1254
1210 // Floating Point Compare Instructions 1255 // Floating Point Compare Instructions
1211 void cebr(DoubleRegister r1, DoubleRegister r2);
1212 void cdb(DoubleRegister r1, const MemOperand& opnd); 1256 void cdb(DoubleRegister r1, const MemOperand& opnd);
1213 void cdbr(DoubleRegister r1, DoubleRegister r2);
1214 1257
1215 // Floating Point Arithmetic Instructions 1258 // Floating Point Arithmetic Instructions
1216 void aebr(DoubleRegister r1, DoubleRegister r2);
1217 void adb(DoubleRegister r1, const MemOperand& opnd); 1259 void adb(DoubleRegister r1, const MemOperand& opnd);
1218 void adbr(DoubleRegister r1, DoubleRegister r2);
1219 void lzdr(DoubleRegister r1);
1220 void sebr(DoubleRegister r1, DoubleRegister r2);
1221 void sdb(DoubleRegister r1, const MemOperand& opnd); 1260 void sdb(DoubleRegister r1, const MemOperand& opnd);
1222 void sdbr(DoubleRegister r1, DoubleRegister r2);
1223 void meebr(DoubleRegister r1, DoubleRegister r2);
1224 void mdb(DoubleRegister r1, const MemOperand& opnd); 1261 void mdb(DoubleRegister r1, const MemOperand& opnd);
1225 void mdbr(DoubleRegister r1, DoubleRegister r2);
1226 void debr(DoubleRegister r1, DoubleRegister r2);
1227 void ddb(DoubleRegister r1, const MemOperand& opnd); 1262 void ddb(DoubleRegister r1, const MemOperand& opnd);
1228 void ddbr(DoubleRegister r1, DoubleRegister r2);
1229 void madbr(DoubleRegister r1, DoubleRegister r2, DoubleRegister r3);
1230 void msdbr(DoubleRegister r1, DoubleRegister r2, DoubleRegister r3);
1231 void sqebr(DoubleRegister r1, DoubleRegister r2);
1232 void sqdb(DoubleRegister r1, const MemOperand& opnd); 1263 void sqdb(DoubleRegister r1, const MemOperand& opnd);
1233 void sqdbr(DoubleRegister r1, DoubleRegister r2);
1234 void lcdbr(DoubleRegister r1, DoubleRegister r2);
1235 void lcebr(DoubleRegister r1, DoubleRegister r2);
1236 void ldeb(DoubleRegister r1, const MemOperand& opnd); 1264 void ldeb(DoubleRegister r1, const MemOperand& opnd);
1237 1265
1238 enum FIDBRA_MASK3 { 1266 enum FIDBRA_MASK3 {
1239 FIDBRA_CURRENT_ROUNDING_MODE = 0, 1267 FIDBRA_CURRENT_ROUNDING_MODE = 0,
1240 FIDBRA_ROUND_TO_NEAREST_AWAY_FROM_0 = 1, 1268 FIDBRA_ROUND_TO_NEAREST_AWAY_FROM_0 = 1,
1241 // ... 1269 // ...
1242 FIDBRA_ROUND_TOWARD_0 = 5, 1270 FIDBRA_ROUND_TOWARD_0 = 5,
1243 FIDBRA_ROUND_TOWARD_POS_INF = 6, 1271 FIDBRA_ROUND_TOWARD_POS_INF = 6,
1244 FIDBRA_ROUND_TOWARD_NEG_INF = 7 1272 FIDBRA_ROUND_TOWARD_NEG_INF = 7
1245 }; 1273 };
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
1408 Handle<Code> target, RelocInfo::Mode rmode, 1436 Handle<Code> target, RelocInfo::Mode rmode,
1409 TypeFeedbackId ast_id = TypeFeedbackId::None()); 1437 TypeFeedbackId ast_id = TypeFeedbackId::None());
1410 1438
1411 // Helpers to emit binary encoding of 2/4/6 byte instructions. 1439 // Helpers to emit binary encoding of 2/4/6 byte instructions.
1412 inline void emit2bytes(uint16_t x); 1440 inline void emit2bytes(uint16_t x);
1413 inline void emit4bytes(uint32_t x); 1441 inline void emit4bytes(uint32_t x);
1414 inline void emit6bytes(uint64_t x); 1442 inline void emit6bytes(uint64_t x);
1415 1443
1416 // Helpers to emit binary encoding for various instruction formats. 1444 // Helpers to emit binary encoding for various instruction formats.
1417 1445
1418 inline void rr_form(Opcode op, Register r1, Register r2);
1419 inline void rr_form(Opcode op, DoubleRegister r1, DoubleRegister r2);
1420 inline void rr_form(Opcode op, Condition m1, Register r2);
1421 inline void rr2_form(uint8_t op, Condition m1, Register r2); 1446 inline void rr2_form(uint8_t op, Condition m1, Register r2);
1422 1447
1423 inline void rx_form(Opcode op, Register r1, Register x2, Register b2, 1448 inline void rx_form(Opcode op, Register r1, Register x2, Register b2,
1424 Disp d2); 1449 Disp d2);
1425 inline void rx_form(Opcode op, DoubleRegister r1, Register x2, Register b2, 1450 inline void rx_form(Opcode op, DoubleRegister r1, Register x2, Register b2,
1426 Disp d2); 1451 Disp d2);
1427 1452
1428 inline void ri_form(Opcode op, Register r1, const Operand& i2); 1453 inline void ri_form(Opcode op, Register r1, const Operand& i2);
1429 inline void ri_form(Opcode op, Condition m1, const Operand& i2); 1454 inline void ri_form(Opcode op, Condition m1, const Operand& i2);
1430 1455
1431 inline void rie_form(Opcode op, Register r1, Register r3, const Operand& i2); 1456 inline void rie_form(Opcode op, Register r1, Register r3, const Operand& i2);
1432 inline void rie_f_form(Opcode op, Register r1, Register r2, const Operand& i3, 1457 inline void rie_f_form(Opcode op, Register r1, Register r2, const Operand& i3,
1433 const Operand& i4, const Operand& i5); 1458 const Operand& i4, const Operand& i5);
1434 1459
1435 inline void ril_form(Opcode op, Register r1, const Operand& i2);
1436 inline void ril_form(Opcode op, Condition m1, const Operand& i2);
1437
1438 inline void ris_form(Opcode op, Register r1, Condition m3, Register b4, 1460 inline void ris_form(Opcode op, Register r1, Condition m3, Register b4,
1439 Disp d4, const Operand& i2); 1461 Disp d4, const Operand& i2);
1440 1462
1441 inline void rrd_form(Opcode op, Register r1, Register r3, Register r2);
1442
1443 inline void rre_form(Opcode op, Register r1, Register r2);
1444 inline void rre_form(Opcode op, DoubleRegister r1, DoubleRegister r2);
1445
1446 inline void rrf1_form(Opcode op, Register r1, Register r2, Register r3); 1463 inline void rrf1_form(Opcode op, Register r1, Register r2, Register r3);
1447 inline void rrf1_form(uint32_t x); 1464 inline void rrf1_form(uint32_t x);
1448 inline void rrf2_form(uint32_t x); 1465 inline void rrf2_form(uint32_t x);
1449 inline void rrf3_form(uint32_t x); 1466 inline void rrf3_form(uint32_t x);
1450 inline void rrfe_form(Opcode op, Condition m3, Condition m4, Register r1, 1467 inline void rrfe_form(Opcode op, Condition m3, Condition m4, Register r1,
1451 Register r2); 1468 Register r2);
1452 1469
1453 inline void rrs_form(Opcode op, Register r1, Register r2, Register b4, 1470 inline void rrs_form(Opcode op, Register r1, Register r2, Register b4,
1454 Disp d4, Condition m3); 1471 Disp d4, Condition m3);
1455 1472
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1514 1531
1515 class EnsureSpace BASE_EMBEDDED { 1532 class EnsureSpace BASE_EMBEDDED {
1516 public: 1533 public:
1517 explicit EnsureSpace(Assembler* assembler) { assembler->CheckBuffer(); } 1534 explicit EnsureSpace(Assembler* assembler) { assembler->CheckBuffer(); }
1518 }; 1535 };
1519 1536
1520 } // namespace internal 1537 } // namespace internal
1521 } // namespace v8 1538 } // namespace v8
1522 1539
1523 #endif // V8_S390_ASSEMBLER_S390_H_ 1540 #endif // V8_S390_ASSEMBLER_S390_H_
OLDNEW
« no previous file with comments | « src/ic/s390/ic-s390.cc ('k') | src/s390/assembler-s390.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698