OLD | NEW |
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 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
695 void lzdr(DoubleRegister r1) { rre_format(LZDR, r1.code(), 0); } | 695 void lzdr(DoubleRegister r1) { rre_format(LZDR, r1.code(), 0); } |
696 #undef DECLARE_S390_RRE_INSTRUCTIONS | 696 #undef DECLARE_S390_RRE_INSTRUCTIONS |
697 | 697 |
698 inline void rrf_format(Opcode opcode, int f1, int f2, int f3, int f4) { | 698 inline void rrf_format(Opcode opcode, int f1, int f2, int f3, int f4) { |
699 emit4bytes( | 699 emit4bytes( |
700 getfield<uint32_t, 4, 0, 16>(opcode) | | 700 getfield<uint32_t, 4, 0, 16>(opcode) | |
701 getfield<uint32_t, 4, 16, 20>(f1) | getfield<uint32_t, 4, 20, 24>(f2) | | 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)); | 702 getfield<uint32_t, 4, 24, 28>(f3) | getfield<uint32_t, 4, 28, 32>(f4)); |
703 } | 703 } |
704 | 704 |
| 705 #define DECLARE_S390_RX_INSTRUCTIONS(name, op_name, op_value) \ |
| 706 template <class R1> \ |
| 707 inline void name(R1 r1, Register x2, Register b2, Disp d2) { \ |
| 708 rx_format(op_name, r1.code(), x2.code(), b2.code(), d2); \ |
| 709 } \ |
| 710 template <class R1> \ |
| 711 inline void name(R1 r1, const MemOperand& opnd) { \ |
| 712 name(r1, opnd.getIndexRegister(), \ |
| 713 opnd.getBaseRegister(), opnd.getDisplacement()); \ |
| 714 } |
| 715 |
| 716 inline void rx_format(Opcode opcode, int f1, int f2, int f3, int f4) { |
| 717 DCHECK(is_uint8(opcode)); |
| 718 DCHECK(is_uint12(f4)); |
| 719 emit4bytes(getfield<uint32_t, 4, 0, 8>(opcode) | |
| 720 getfield<uint32_t, 4, 8, 12>(f1) | |
| 721 getfield<uint32_t, 4, 12, 16>(f2) | |
| 722 getfield<uint32_t, 4, 16, 20>(f3) | |
| 723 getfield<uint32_t, 4, 20, 32>(f4)); |
| 724 } |
| 725 S390_RX_A_OPCODE_LIST(DECLARE_S390_RX_INSTRUCTIONS) |
| 726 |
| 727 void bc(Condition cond, const MemOperand& opnd) { |
| 728 bc(cond, opnd.getIndexRegister(), |
| 729 opnd.getBaseRegister(), opnd.getDisplacement()); |
| 730 } |
| 731 void bc(Condition cond, Register x2, Register b2, Disp d2) { |
| 732 rx_format(BC, cond, x2.code(), b2.code(), d2); |
| 733 } |
| 734 #undef DECLARE_S390_RX_INSTRUCTIONS |
| 735 |
705 // Helper for unconditional branch to Label with update to save register | 736 // Helper for unconditional branch to Label with update to save register |
706 void b(Register r, Label* l) { | 737 void b(Register r, Label* l) { |
707 int32_t halfwords = branch_offset(l) / 2; | 738 int32_t halfwords = branch_offset(l) / 2; |
708 brasl(r, Operand(halfwords)); | 739 brasl(r, Operand(halfwords)); |
709 } | 740 } |
710 | 741 |
711 // Conditional Branch Instruction - Generates either BRC / BRCL | 742 // Conditional Branch Instruction - Generates either BRC / BRCL |
712 void branchOnCond(Condition c, int branch_offset, bool is_bound = false); | 743 void branchOnCond(Condition c, int branch_offset, bool is_bound = false); |
713 | 744 |
714 // Helpers for conditional branch to Label | 745 // Helpers for conditional branch to Label |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
783 TypeFeedbackId ast_id = TypeFeedbackId::None()); | 814 TypeFeedbackId ast_id = TypeFeedbackId::None()); |
784 void jump(Handle<Code> target, RelocInfo::Mode rmode, Condition cond); | 815 void jump(Handle<Code> target, RelocInfo::Mode rmode, Condition cond); |
785 | 816 |
786 // S390 instruction generation | 817 // S390 instruction generation |
787 #define I_FORM(name) void name(const Operand& i) | 818 #define I_FORM(name) void name(const Operand& i) |
788 | 819 |
789 #define RR_FORM(name) void name(Register r1, Register r2) | 820 #define RR_FORM(name) void name(Register r1, Register r2) |
790 | 821 |
791 #define RR2_FORM(name) void name(Condition m1, Register r2) | 822 #define RR2_FORM(name) void name(Condition m1, Register r2) |
792 | 823 |
793 #define RX_FORM(name) \ | |
794 void name(Register r1, Register x2, Register b2, Disp d2); \ | |
795 void name(Register r1, const MemOperand& opnd) | |
796 | |
797 #define RI1_FORM(name) void name(Register r, const Operand& i) | 824 #define RI1_FORM(name) void name(Register r, const Operand& i) |
798 | 825 |
799 #define RI2_FORM(name) void name(Condition m, const Operand& i) | 826 #define RI2_FORM(name) void name(Condition m, const Operand& i) |
800 | 827 |
801 #define RIE_FORM(name) void name(Register r1, Register R3, const Operand& i) | 828 #define RIE_FORM(name) void name(Register r1, Register R3, const Operand& i) |
802 | 829 |
803 #define RIE_F_FORM(name) \ | 830 #define RIE_F_FORM(name) \ |
804 void name(Register r1, Register r2, const Operand& i3, const Operand& i4, \ | 831 void name(Register r1, Register r2, const Operand& i3, const Operand& i4, \ |
805 const Operand& i5) | 832 const Operand& i5) |
806 | 833 |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
950 void vfm(DoubleRegister v1, DoubleRegister v2, DoubleRegister v3) { | 977 void vfm(DoubleRegister v1, DoubleRegister v2, DoubleRegister v3) { |
951 vfm(v1, v2, v3, static_cast<Condition>(0), static_cast<Condition>(8), | 978 vfm(v1, v2, v3, static_cast<Condition>(0), static_cast<Condition>(8), |
952 static_cast<Condition>(3)); | 979 static_cast<Condition>(3)); |
953 } | 980 } |
954 void vfd(DoubleRegister v1, DoubleRegister v2, DoubleRegister v3) { | 981 void vfd(DoubleRegister v1, DoubleRegister v2, DoubleRegister v3) { |
955 vfd(v1, v2, v3, static_cast<Condition>(0), static_cast<Condition>(8), | 982 vfd(v1, v2, v3, static_cast<Condition>(0), static_cast<Condition>(8), |
956 static_cast<Condition>(3)); | 983 static_cast<Condition>(3)); |
957 } | 984 } |
958 | 985 |
959 // S390 instruction sets | 986 // S390 instruction sets |
960 RX_FORM(bc); | |
961 RX_FORM(cd); | |
962 RXE_FORM(cdb); | 987 RXE_FORM(cdb); |
963 RXE_FORM(ceb); | 988 RXE_FORM(ceb); |
964 RXE_FORM(ddb); | 989 RXE_FORM(ddb); |
965 SS1_FORM(ed); | 990 SS1_FORM(ed); |
966 RX_FORM(ex); | |
967 RRF2_FORM(fidbr); | 991 RRF2_FORM(fidbr); |
968 RX_FORM(ic_z); | |
969 RXY_FORM(icy); | 992 RXY_FORM(icy); |
970 RI1_FORM(iihh); | 993 RI1_FORM(iihh); |
971 RI1_FORM(iihl); | 994 RI1_FORM(iihl); |
972 RI1_FORM(iilh); | 995 RI1_FORM(iilh); |
973 RI1_FORM(iill); | 996 RI1_FORM(iill); |
974 RX_FORM(le_z); | |
975 RXY_FORM(ley); | 997 RXY_FORM(ley); |
976 RSY1_FORM(loc); | 998 RSY1_FORM(loc); |
977 RXY_FORM(lrv); | 999 RXY_FORM(lrv); |
978 RXY_FORM(lrvh); | 1000 RXY_FORM(lrvh); |
979 RXY_FORM(lrvg); | 1001 RXY_FORM(lrvg); |
980 RXE_FORM(mdb); | 1002 RXE_FORM(mdb); |
981 SS4_FORM(mvck); | 1003 SS4_FORM(mvck); |
982 SSF_FORM(mvcos); | 1004 SSF_FORM(mvcos); |
983 SS4_FORM(mvcs); | 1005 SS4_FORM(mvcs); |
984 SS1_FORM(mvn); | 1006 SS1_FORM(mvn); |
985 SS1_FORM(nc); | 1007 SS1_FORM(nc); |
986 SI_FORM(ni); | 1008 SI_FORM(ni); |
987 RI1_FORM(nilh); | 1009 RI1_FORM(nilh); |
988 RI1_FORM(nill); | 1010 RI1_FORM(nill); |
989 RI1_FORM(oill); | 1011 RI1_FORM(oill); |
990 RXY_FORM(pfd); | 1012 RXY_FORM(pfd); |
991 RXY_FORM(dsgf); | 1013 RXY_FORM(dsgf); |
992 RXY_FORM(msgf); | 1014 RXY_FORM(msgf); |
993 RXY_FORM(dsg); | 1015 RXY_FORM(dsg); |
994 RXE_FORM(sdb); | 1016 RXE_FORM(sdb); |
995 RXY_FORM(slgf); | 1017 RXY_FORM(slgf); |
996 RS1_FORM(srdl); | 1018 RS1_FORM(srdl); |
997 RX_FORM(ste); | |
998 RXY_FORM(stey); | 1019 RXY_FORM(stey); |
999 RXY_FORM(strv); | 1020 RXY_FORM(strv); |
1000 RXY_FORM(strvh); | 1021 RXY_FORM(strvh); |
1001 RXY_FORM(strvg); | 1022 RXY_FORM(strvg); |
1002 RI1_FORM(tmll); | 1023 RI1_FORM(tmll); |
1003 SS1_FORM(tr); | 1024 SS1_FORM(tr); |
1004 S_FORM(ts); | 1025 S_FORM(ts); |
1005 | 1026 |
1006 // Load Address Instructions | 1027 // Load Address Instructions |
1007 void la(Register r, const MemOperand& opnd); | |
1008 void lay(Register r, const MemOperand& opnd); | 1028 void lay(Register r, const MemOperand& opnd); |
1009 void larl(Register r, Label* l); | 1029 void larl(Register r, Label* l); |
1010 | 1030 |
1011 // Load Instructions | 1031 // Load Instructions |
1012 void lb(Register r, const MemOperand& src); | 1032 void lb(Register r, const MemOperand& src); |
1013 void lgb(Register r, const MemOperand& src); | 1033 void lgb(Register r, const MemOperand& src); |
1014 void lh(Register r, const MemOperand& src); | |
1015 void lhy(Register r, const MemOperand& src); | 1034 void lhy(Register r, const MemOperand& src); |
1016 void lgh(Register r, const MemOperand& src); | 1035 void lgh(Register r, const MemOperand& src); |
1017 void l(Register r, const MemOperand& src); | |
1018 void ly(Register r, const MemOperand& src); | 1036 void ly(Register r, const MemOperand& src); |
1019 void lg(Register r, const MemOperand& src); | 1037 void lg(Register r, const MemOperand& src); |
1020 void lgf(Register r, const MemOperand& src); | 1038 void lgf(Register r, const MemOperand& src); |
1021 void lhi(Register r, const Operand& imm); | 1039 void lhi(Register r, const Operand& imm); |
1022 void lghi(Register r, const Operand& imm); | 1040 void lghi(Register r, const Operand& imm); |
1023 | 1041 |
1024 // Load And Test Instructions | 1042 // Load And Test Instructions |
1025 void lt_z(Register r, const MemOperand& src); | 1043 void lt_z(Register r, const MemOperand& src); |
1026 void ltg(Register r, const MemOperand& src); | 1044 void ltg(Register r, const MemOperand& src); |
1027 | 1045 |
1028 // Load Logical Instructions | 1046 // Load Logical Instructions |
1029 void llc(Register r, const MemOperand& src); | 1047 void llc(Register r, const MemOperand& src); |
1030 void llgc(Register r, const MemOperand& src); | 1048 void llgc(Register r, const MemOperand& src); |
1031 void llgf(Register r, const MemOperand& src); | 1049 void llgf(Register r, const MemOperand& src); |
1032 void llh(Register r, const MemOperand& src); | 1050 void llh(Register r, const MemOperand& src); |
1033 void llgh(Register r, const MemOperand& src); | 1051 void llgh(Register r, const MemOperand& src); |
1034 | 1052 |
1035 // Load Multiple Instructions | 1053 // Load Multiple Instructions |
1036 void lm(Register r1, Register r2, const MemOperand& src); | 1054 void lm(Register r1, Register r2, const MemOperand& src); |
1037 void lmy(Register r1, Register r2, const MemOperand& src); | 1055 void lmy(Register r1, Register r2, const MemOperand& src); |
1038 void lmg(Register r1, Register r2, const MemOperand& src); | 1056 void lmg(Register r1, Register r2, const MemOperand& src); |
1039 | 1057 |
1040 // Load On Condition Instructions | 1058 // Load On Condition Instructions |
1041 void locr(Condition m3, Register r1, Register r2); | 1059 void locr(Condition m3, Register r1, Register r2); |
1042 void locgr(Condition m3, Register r1, Register r2); | 1060 void locgr(Condition m3, Register r1, Register r2); |
1043 void loc(Condition m3, Register r1, const MemOperand& src); | 1061 void loc(Condition m3, Register r1, const MemOperand& src); |
1044 void locg(Condition m3, Register r1, const MemOperand& src); | 1062 void locg(Condition m3, Register r1, const MemOperand& src); |
1045 | 1063 |
1046 // Store Instructions | 1064 // Store Instructions |
1047 void st(Register r, const MemOperand& src); | |
1048 void stc(Register r, const MemOperand& src); | |
1049 void stcy(Register r, const MemOperand& src); | 1065 void stcy(Register r, const MemOperand& src); |
1050 void stg(Register r, const MemOperand& src); | 1066 void stg(Register r, const MemOperand& src); |
1051 void sth(Register r, const MemOperand& src); | |
1052 void sthy(Register r, const MemOperand& src); | 1067 void sthy(Register r, const MemOperand& src); |
1053 void sty(Register r, const MemOperand& src); | 1068 void sty(Register r, const MemOperand& src); |
1054 | 1069 |
1055 // Store Multiple Instructions | 1070 // Store Multiple Instructions |
1056 void stm(Register r1, Register r2, const MemOperand& src); | 1071 void stm(Register r1, Register r2, const MemOperand& src); |
1057 void stmy(Register r1, Register r2, const MemOperand& src); | 1072 void stmy(Register r1, Register r2, const MemOperand& src); |
1058 void stmg(Register r1, Register r2, const MemOperand& src); | 1073 void stmg(Register r1, Register r2, const MemOperand& src); |
1059 | 1074 |
1060 // Compare Instructions | 1075 // Compare Instructions |
1061 void c(Register r, const MemOperand& opnd); | |
1062 void cy(Register r, const MemOperand& opnd); | 1076 void cy(Register r, const MemOperand& opnd); |
1063 void cg(Register r, const MemOperand& opnd); | 1077 void cg(Register r, const MemOperand& opnd); |
1064 void ch(Register r, const MemOperand& opnd); | |
1065 void chy(Register r, const MemOperand& opnd); | 1078 void chy(Register r, const MemOperand& opnd); |
1066 void chi(Register r, const Operand& opnd); | 1079 void chi(Register r, const Operand& opnd); |
1067 void cghi(Register r, const Operand& opnd); | 1080 void cghi(Register r, const Operand& opnd); |
1068 | 1081 |
1069 // Compare Logical Instructions | 1082 // Compare Logical Instructions |
1070 void cl(Register r, const MemOperand& opnd); | |
1071 void cly(Register r, const MemOperand& opnd); | 1083 void cly(Register r, const MemOperand& opnd); |
1072 void clg(Register r, const MemOperand& opnd); | 1084 void clg(Register r, const MemOperand& opnd); |
1073 void cli(const MemOperand& mem, const Operand& imm); | 1085 void cli(const MemOperand& mem, const Operand& imm); |
1074 void cliy(const MemOperand& mem, const Operand& imm); | 1086 void cliy(const MemOperand& mem, const Operand& imm); |
1075 void clc(const MemOperand& opnd1, const MemOperand& opnd2, Length length); | 1087 void clc(const MemOperand& opnd1, const MemOperand& opnd2, Length length); |
1076 | 1088 |
1077 // Test Under Mask Instructions | 1089 // Test Under Mask Instructions |
1078 void tm(const MemOperand& mem, const Operand& imm); | 1090 void tm(const MemOperand& mem, const Operand& imm); |
1079 void tmy(const MemOperand& mem, const Operand& imm); | 1091 void tmy(const MemOperand& mem, const Operand& imm); |
1080 | 1092 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1124 const Operand& endBit, const Operand& shiftAmt, | 1136 const Operand& endBit, const Operand& shiftAmt, |
1125 bool zeroBits = true); | 1137 bool zeroBits = true); |
1126 void risbgn(Register dst, Register src, const Operand& startBit, | 1138 void risbgn(Register dst, Register src, const Operand& startBit, |
1127 const Operand& endBit, const Operand& shiftAmt, | 1139 const Operand& endBit, const Operand& shiftAmt, |
1128 bool zeroBits = true); | 1140 bool zeroBits = true); |
1129 | 1141 |
1130 // Move Character (Mem to Mem) | 1142 // Move Character (Mem to Mem) |
1131 void mvc(const MemOperand& opnd1, const MemOperand& opnd2, uint32_t length); | 1143 void mvc(const MemOperand& opnd1, const MemOperand& opnd2, uint32_t length); |
1132 | 1144 |
1133 // Branch Instructions | 1145 // Branch Instructions |
1134 void bct(Register r, const MemOperand& opnd); | |
1135 void bctg(Register r, const MemOperand& opnd); | 1146 void bctg(Register r, const MemOperand& opnd); |
1136 void bras(Register r, const Operand& opnd); | 1147 void bras(Register r, const Operand& opnd); |
1137 void brc(Condition c, const Operand& opnd); | 1148 void brc(Condition c, const Operand& opnd); |
1138 void brct(Register r1, const Operand& opnd); | 1149 void brct(Register r1, const Operand& opnd); |
1139 void brctg(Register r1, const Operand& opnd); | 1150 void brctg(Register r1, const Operand& opnd); |
1140 | 1151 |
1141 // 32-bit Add Instructions | 1152 // 32-bit Add Instructions |
1142 void a(Register r1, const MemOperand& opnd); | |
1143 void ay(Register r1, const MemOperand& opnd); | 1153 void ay(Register r1, const MemOperand& opnd); |
1144 void ah(Register r1, const MemOperand& opnd); | |
1145 void ahy(Register r1, const MemOperand& opnd); | 1154 void ahy(Register r1, const MemOperand& opnd); |
1146 void ahi(Register r1, const Operand& opnd); | 1155 void ahi(Register r1, const Operand& opnd); |
1147 void ahik(Register r1, Register r3, const Operand& opnd); | 1156 void ahik(Register r1, Register r3, const Operand& opnd); |
1148 void ark(Register r1, Register r2, Register r3); | 1157 void ark(Register r1, Register r2, Register r3); |
1149 void asi(const MemOperand&, const Operand&); | 1158 void asi(const MemOperand&, const Operand&); |
1150 | 1159 |
1151 // 64-bit Add Instructions | 1160 // 64-bit Add Instructions |
1152 void ag(Register r1, const MemOperand& opnd); | 1161 void ag(Register r1, const MemOperand& opnd); |
1153 void agf(Register r1, const MemOperand& opnd); | 1162 void agf(Register r1, const MemOperand& opnd); |
1154 void aghi(Register r1, const Operand& opnd); | 1163 void aghi(Register r1, const Operand& opnd); |
1155 void aghik(Register r1, Register r3, const Operand& opnd); | 1164 void aghik(Register r1, Register r3, const Operand& opnd); |
1156 void agrk(Register r1, Register r2, Register r3); | 1165 void agrk(Register r1, Register r2, Register r3); |
1157 void agsi(const MemOperand&, const Operand&); | 1166 void agsi(const MemOperand&, const Operand&); |
1158 | 1167 |
1159 // 32-bit Add Logical Instructions | 1168 // 32-bit Add Logical Instructions |
1160 void al_z(Register r1, const MemOperand& opnd); | |
1161 void aly(Register r1, const MemOperand& opnd); | 1169 void aly(Register r1, const MemOperand& opnd); |
1162 void alrk(Register r1, Register r2, Register r3); | 1170 void alrk(Register r1, Register r2, Register r3); |
1163 | 1171 |
1164 // 64-bit Add Logical Instructions | 1172 // 64-bit Add Logical Instructions |
1165 void alg(Register r1, const MemOperand& opnd); | 1173 void alg(Register r1, const MemOperand& opnd); |
1166 void algrk(Register r1, Register r2, Register r3); | 1174 void algrk(Register r1, Register r2, Register r3); |
1167 | 1175 |
1168 // 32-bit Subtract Instructions | 1176 // 32-bit Subtract Instructions |
1169 void s(Register r1, const MemOperand& opnd); | |
1170 void sy(Register r1, const MemOperand& opnd); | 1177 void sy(Register r1, const MemOperand& opnd); |
1171 void sh(Register r1, const MemOperand& opnd); | |
1172 void shy(Register r1, const MemOperand& opnd); | 1178 void shy(Register r1, const MemOperand& opnd); |
1173 void srk(Register r1, Register r2, Register r3); | 1179 void srk(Register r1, Register r2, Register r3); |
1174 | 1180 |
1175 // 64-bit Subtract Instructions | 1181 // 64-bit Subtract Instructions |
1176 void sg(Register r1, const MemOperand& opnd); | 1182 void sg(Register r1, const MemOperand& opnd); |
1177 void sgf(Register r1, const MemOperand& opnd); | 1183 void sgf(Register r1, const MemOperand& opnd); |
1178 void sgrk(Register r1, Register r2, Register r3); | 1184 void sgrk(Register r1, Register r2, Register r3); |
1179 | 1185 |
1180 // 32-bit Subtract Logical Instructions | 1186 // 32-bit Subtract Logical Instructions |
1181 void sl(Register r1, const MemOperand& opnd); | |
1182 void sly(Register r1, const MemOperand& opnd); | 1187 void sly(Register r1, const MemOperand& opnd); |
1183 void slrk(Register r1, Register r2, Register r3); | 1188 void slrk(Register r1, Register r2, Register r3); |
1184 | 1189 |
1185 // 64-bit Subtract Logical Instructions | 1190 // 64-bit Subtract Logical Instructions |
1186 void slg(Register r1, const MemOperand& opnd); | 1191 void slg(Register r1, const MemOperand& opnd); |
1187 void slgrk(Register r1, Register r2, Register r3); | 1192 void slgrk(Register r1, Register r2, Register r3); |
1188 | 1193 |
1189 // 32-bit Multiply Instructions | 1194 // 32-bit Multiply Instructions |
1190 void m(Register r1, const MemOperand& opnd); | |
1191 void mfy(Register r1, const MemOperand& opnd); | 1195 void mfy(Register r1, const MemOperand& opnd); |
1192 void ml(Register r1, const MemOperand& opnd); | 1196 void ml(Register r1, const MemOperand& opnd); |
1193 void ms(Register r1, const MemOperand& opnd); | |
1194 void msy(Register r1, const MemOperand& opnd); | 1197 void msy(Register r1, const MemOperand& opnd); |
1195 void mh(Register r1, const MemOperand& opnd); | |
1196 void mhy(Register r1, const MemOperand& opnd); | 1198 void mhy(Register r1, const MemOperand& opnd); |
1197 void mhi(Register r1, const Operand& opnd); | 1199 void mhi(Register r1, const Operand& opnd); |
1198 | 1200 |
1199 // 64-bit Multiply Instructions | 1201 // 64-bit Multiply Instructions |
1200 void mlg(Register r1, const MemOperand& opnd); | 1202 void mlg(Register r1, const MemOperand& opnd); |
1201 void mghi(Register r1, const Operand& opnd); | 1203 void mghi(Register r1, const Operand& opnd); |
1202 void msg(Register r1, const MemOperand& opnd); | 1204 void msg(Register r1, const MemOperand& opnd); |
1203 | 1205 |
1204 // 32-bit Divide Instructions | 1206 // 32-bit Divide Instructions |
1205 void d(Register r1, const MemOperand& opnd); | |
1206 void dl(Register r1, const MemOperand& opnd); | 1207 void dl(Register r1, const MemOperand& opnd); |
1207 | 1208 |
1208 // Bitwise Instructions (AND / OR / XOR) | 1209 // Bitwise Instructions (AND / OR / XOR) |
1209 void n(Register r1, const MemOperand& opnd); | |
1210 void ny(Register r1, const MemOperand& opnd); | 1210 void ny(Register r1, const MemOperand& opnd); |
1211 void nrk(Register r1, Register r2, Register r3); | 1211 void nrk(Register r1, Register r2, Register r3); |
1212 void ng(Register r1, const MemOperand& opnd); | 1212 void ng(Register r1, const MemOperand& opnd); |
1213 void ngrk(Register r1, Register r2, Register r3); | 1213 void ngrk(Register r1, Register r2, Register r3); |
1214 void o(Register r1, const MemOperand& opnd); | |
1215 void oy(Register r1, const MemOperand& opnd); | 1214 void oy(Register r1, const MemOperand& opnd); |
1216 void ork(Register r1, Register r2, Register r3); | 1215 void ork(Register r1, Register r2, Register r3); |
1217 void og(Register r1, const MemOperand& opnd); | 1216 void og(Register r1, const MemOperand& opnd); |
1218 void ogrk(Register r1, Register r2, Register r3); | 1217 void ogrk(Register r1, Register r2, Register r3); |
1219 void x(Register r1, const MemOperand& opnd); | |
1220 void xy(Register r1, const MemOperand& opnd); | 1218 void xy(Register r1, const MemOperand& opnd); |
1221 void xrk(Register r1, Register r2, Register r3); | 1219 void xrk(Register r1, Register r2, Register r3); |
1222 void xg(Register r1, const MemOperand& opnd); | 1220 void xg(Register r1, const MemOperand& opnd); |
1223 void xgrk(Register r1, Register r2, Register r3); | 1221 void xgrk(Register r1, Register r2, Register r3); |
1224 void xc(const MemOperand& opnd1, const MemOperand& opnd2, Length length); | 1222 void xc(const MemOperand& opnd1, const MemOperand& opnd2, Length length); |
1225 | 1223 |
1226 // Floating Point Load / Store Instructions | 1224 // Floating Point Load / Store Instructions |
1227 void ld(DoubleRegister r1, const MemOperand& opnd); | |
1228 void ldy(DoubleRegister r1, const MemOperand& opnd); | 1225 void ldy(DoubleRegister r1, const MemOperand& opnd); |
1229 void le_z(DoubleRegister r1, const MemOperand& opnd); | |
1230 void ley(DoubleRegister r1, const MemOperand& opnd); | 1226 void ley(DoubleRegister r1, const MemOperand& opnd); |
1231 void std(DoubleRegister r1, const MemOperand& opnd); | |
1232 void stdy(DoubleRegister r1, const MemOperand& opnd); | 1227 void stdy(DoubleRegister r1, const MemOperand& opnd); |
1233 void ste(DoubleRegister r1, const MemOperand& opnd); | |
1234 void stey(DoubleRegister r1, const MemOperand& opnd); | 1228 void stey(DoubleRegister r1, const MemOperand& opnd); |
1235 | 1229 |
1236 // Floating <-> Fixed Point Conversion Instructions | 1230 // Floating <-> Fixed Point Conversion Instructions |
1237 void cdlfbr(Condition m3, Condition m4, DoubleRegister fltReg, | 1231 void cdlfbr(Condition m3, Condition m4, DoubleRegister fltReg, |
1238 Register fixReg); | 1232 Register fixReg); |
1239 void cdlgbr(Condition m3, Condition m4, DoubleRegister fltReg, | 1233 void cdlgbr(Condition m3, Condition m4, DoubleRegister fltReg, |
1240 Register fixReg); | 1234 Register fixReg); |
1241 void celgbr(Condition m3, Condition m4, DoubleRegister fltReg, | 1235 void celgbr(Condition m3, Condition m4, DoubleRegister fltReg, |
1242 Register fixReg); | 1236 Register fixReg); |
1243 void celfbr(Condition m3, Condition m4, DoubleRegister fltReg, | 1237 void celfbr(Condition m3, Condition m4, DoubleRegister fltReg, |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1442 | 1436 |
1443 // Helpers to emit binary encoding of 2/4/6 byte instructions. | 1437 // Helpers to emit binary encoding of 2/4/6 byte instructions. |
1444 inline void emit2bytes(uint16_t x); | 1438 inline void emit2bytes(uint16_t x); |
1445 inline void emit4bytes(uint32_t x); | 1439 inline void emit4bytes(uint32_t x); |
1446 inline void emit6bytes(uint64_t x); | 1440 inline void emit6bytes(uint64_t x); |
1447 | 1441 |
1448 // Helpers to emit binary encoding for various instruction formats. | 1442 // Helpers to emit binary encoding for various instruction formats. |
1449 | 1443 |
1450 inline void rr2_form(uint8_t op, Condition m1, Register r2); | 1444 inline void rr2_form(uint8_t op, Condition m1, Register r2); |
1451 | 1445 |
1452 inline void rx_form(Opcode op, Register r1, Register x2, Register b2, | |
1453 Disp d2); | |
1454 inline void rx_form(Opcode op, DoubleRegister r1, Register x2, Register b2, | |
1455 Disp d2); | |
1456 | |
1457 inline void ri_form(Opcode op, Register r1, const Operand& i2); | 1446 inline void ri_form(Opcode op, Register r1, const Operand& i2); |
1458 inline void ri_form(Opcode op, Condition m1, const Operand& i2); | 1447 inline void ri_form(Opcode op, Condition m1, const Operand& i2); |
1459 | 1448 |
1460 inline void rie_form(Opcode op, Register r1, Register r3, const Operand& i2); | 1449 inline void rie_form(Opcode op, Register r1, Register r3, const Operand& i2); |
1461 inline void rie_f_form(Opcode op, Register r1, Register r2, const Operand& i3, | 1450 inline void rie_f_form(Opcode op, Register r1, Register r2, const Operand& i3, |
1462 const Operand& i4, const Operand& i5); | 1451 const Operand& i4, const Operand& i5); |
1463 | 1452 |
1464 inline void ris_form(Opcode op, Register r1, Condition m3, Register b4, | 1453 inline void ris_form(Opcode op, Register r1, Condition m3, Register b4, |
1465 Disp d4, const Operand& i2); | 1454 Disp d4, const Operand& i2); |
1466 | 1455 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1535 | 1524 |
1536 class EnsureSpace BASE_EMBEDDED { | 1525 class EnsureSpace BASE_EMBEDDED { |
1537 public: | 1526 public: |
1538 explicit EnsureSpace(Assembler* assembler) { assembler->CheckBuffer(); } | 1527 explicit EnsureSpace(Assembler* assembler) { assembler->CheckBuffer(); } |
1539 }; | 1528 }; |
1540 | 1529 |
1541 } // namespace internal | 1530 } // namespace internal |
1542 } // namespace v8 | 1531 } // namespace v8 |
1543 | 1532 |
1544 #endif // V8_S390_ASSEMBLER_S390_H_ | 1533 #endif // V8_S390_ASSEMBLER_S390_H_ |
OLD | NEW |