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

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

Issue 2667353005: S390: Use macro to declare rx format assember function (Closed)
Patch Set: declare BC explicitly Created 3 years, 10 months 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 | « no previous file | 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 684 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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_
OLDNEW
« no previous file with comments | « no previous file | src/s390/assembler-s390.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698