Index: src/s390/assembler-s390.cc |
diff --git a/src/s390/assembler-s390.cc b/src/s390/assembler-s390.cc |
index 073c5ea9f32412d047f17eeb0d0b5483a71ab2c0..89807c903c1e0991f62f9cb057e1800c34ad24b7 100644 |
--- a/src/s390/assembler-s390.cc |
+++ b/src/s390/assembler-s390.cc |
@@ -592,34 +592,7 @@ void Assembler::nop(int type) { |
} |
} |
-// RX format: <insn> R1,D2(X2,B2) |
-// +--------+----+----+----+-------------+ |
-// | OpCode | R1 | X2 | B2 | D2 | |
-// +--------+----+----+----+-------------+ |
-// 0 8 12 16 20 31 |
-#define RX_FORM_EMIT(name, op) \ |
- void Assembler::name(Register r, const MemOperand& opnd) { \ |
- name(r, opnd.getIndexRegister(), opnd.getBaseRegister(), \ |
- opnd.getDisplacement()); \ |
- } \ |
- void Assembler::name(Register r1, Register x2, Register b2, Disp d2) { \ |
- rx_form(op, r1, x2, b2, d2); \ |
- } |
-void Assembler::rx_form(Opcode op, Register r1, Register x2, Register b2, |
- Disp d2) { |
- DCHECK(is_uint8(op)); |
- DCHECK(is_uint12(d2)); |
- emit4bytes(op * B24 | r1.code() * B20 | x2.code() * B16 | b2.code() * B12 | |
- d2); |
-} |
-void Assembler::rx_form(Opcode op, DoubleRegister r1, Register x2, Register b2, |
- Disp d2) { |
- DCHECK(is_uint8(op)); |
- DCHECK(is_uint12(d2)); |
- emit4bytes(op * B24 | r1.code() * B20 | x2.code() * B16 | b2.code() * B12 | |
- d2); |
-} |
// RI1 format: <insn> R1,I2 |
// +--------+----+----+------------------+ |
@@ -1328,11 +1301,8 @@ void Assembler::rrfe_form(Opcode op, Condition m3, Condition m4, Register r1, |
// end of S390 Instruction generation |
// start of S390 instruction |
-RX_FORM_EMIT(bc, BC) |
RXE_FORM_EMIT(ceb, CEB) |
SS1_FORM_EMIT(ed, ED) |
-RX_FORM_EMIT(ex, EX) |
-RX_FORM_EMIT(le_z, LE) |
RXY_FORM_EMIT(ley, LEY) |
RXY_FORM_EMIT(lrv, LRV) |
RXY_FORM_EMIT(lrvg, LRVG) |
@@ -1356,11 +1326,6 @@ S_FORM_EMIT(ts, TS) |
// Load Address Instructions |
// ------------------------- |
// Load Address Register-Storage |
-void Assembler::la(Register r1, const MemOperand& opnd) { |
- rx_form(LA, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// Load Address Register-Storage |
void Assembler::lay(Register r1, const MemOperand& opnd) { |
rxy_form(LAY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
@@ -1384,11 +1349,6 @@ void Assembler::lgb(Register r, const MemOperand& src) { |
} |
// Load Halfword Register-Storage (32<-16) |
-void Assembler::lh(Register r, const MemOperand& src) { |
- rx_form(LH, r, src.rx(), src.rb(), src.offset()); |
-} |
- |
-// Load Halfword Register-Storage (32<-16) |
void Assembler::lhy(Register r, const MemOperand& src) { |
rxy_form(LHY, r, src.rx(), src.rb(), src.offset()); |
} |
@@ -1399,11 +1359,6 @@ void Assembler::lgh(Register r, const MemOperand& src) { |
} |
// Load Register-Storage (32) |
-void Assembler::l(Register r, const MemOperand& src) { |
- rx_form(L, r, src.rx(), src.rb(), src.offset()); |
-} |
- |
-// Load Register-Storage (32) |
void Assembler::ly(Register r, const MemOperand& src) { |
rxy_form(LY, r, src.rx(), src.rb(), src.offset()); |
} |
@@ -1488,12 +1443,6 @@ void Assembler::locg(Condition m3, Register r1, const MemOperand& src) { |
// ------------------- |
// Branch Instructions |
// ------------------- |
- |
-// Branch on Count (32) |
-void Assembler::bct(Register r, const MemOperand& opnd) { |
- rx_form(BCT, r, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
// Branch on Count (64) |
void Assembler::bctg(Register r, const MemOperand& opnd) { |
rxy_form(BCTG, r, opnd.rx(), opnd.rb(), opnd.offset()); |
@@ -1529,11 +1478,6 @@ void Assembler::brctg(Register r1, const Operand& imm) { |
// Compare Instructions |
// -------------------- |
// Compare Register-Storage (32) |
-void Assembler::c(Register r, const MemOperand& opnd) { |
- rx_form(C, r, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// Compare Register-Storage (32) |
void Assembler::cy(Register r, const MemOperand& opnd) { |
rxy_form(CY, r, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
@@ -1544,11 +1488,6 @@ void Assembler::cg(Register r, const MemOperand& opnd) { |
} |
// Compare Halfword Register-Storage (32) |
-void Assembler::ch(Register r, const MemOperand& opnd) { |
- rx_form(CH, r, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// Compare Halfword Register-Storage (32) |
void Assembler::chy(Register r, const MemOperand& opnd) { |
rxy_form(CHY, r, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
@@ -1565,11 +1504,6 @@ void Assembler::cghi(Register r, const Operand& opnd) { |
// Compare Logical Instructions |
// ---------------------------- |
// Compare Logical Register-Storage (32) |
-void Assembler::cl(Register r, const MemOperand& opnd) { |
- rx_form(CL, r, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// Compare Logical Register-Storage (32) |
void Assembler::cly(Register r, const MemOperand& opnd) { |
rxy_form(CLY, r, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
@@ -1650,21 +1584,11 @@ void Assembler::mvc(const MemOperand& opnd1, const MemOperand& opnd2, |
// 32-bit Add Instructions |
// ----------------------- |
// Add Register-Storage (32) |
-void Assembler::a(Register r1, const MemOperand& opnd) { |
- rx_form(A, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// Add Register-Storage (32) |
void Assembler::ay(Register r1, const MemOperand& opnd) { |
rxy_form(AY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
// Add Halfword Register-Storage (32) |
-void Assembler::ah(Register r1, const MemOperand& opnd) { |
- rx_form(AH, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// Add Halfword Register-Storage (32) |
void Assembler::ahy(Register r1, const MemOperand& opnd) { |
rxy_form(AHY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
@@ -1726,11 +1650,6 @@ void Assembler::agsi(const MemOperand& opnd, const Operand& imm) { |
// 32-bit Add Logical Instructions |
// ------------------------------- |
// Add Logical Register-Storage (32) |
-void Assembler::al_z(Register r1, const MemOperand& opnd) { |
- rx_form(AL, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// Add Logical Register-Storage (32) |
void Assembler::aly(Register r1, const MemOperand& opnd) { |
rxy_form(ALY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
@@ -1757,21 +1676,11 @@ void Assembler::algrk(Register r1, Register r2, Register r3) { |
// 32-bit Subtract Instructions |
// ---------------------------- |
// Subtract Register-Storage (32) |
-void Assembler::s(Register r1, const MemOperand& opnd) { |
- rx_form(S, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// Subtract Register-Storage (32) |
void Assembler::sy(Register r1, const MemOperand& opnd) { |
rxy_form(SY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
// Subtract Halfword Register-Storage (32) |
-void Assembler::sh(Register r1, const MemOperand& opnd) { |
- rx_form(SH, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// Subtract Halfword Register-Storage (32) |
void Assembler::shy(Register r1, const MemOperand& opnd) { |
rxy_form(SHY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
@@ -1803,11 +1712,6 @@ void Assembler::sgrk(Register r1, Register r2, Register r3) { |
// 32-bit Subtract Logical Instructions |
// ------------------------------------ |
// Subtract Logical Register-Storage (32) |
-void Assembler::sl(Register r1, const MemOperand& opnd) { |
- rx_form(SL, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// Subtract Logical Register-Storage (32) |
void Assembler::sly(Register r1, const MemOperand& opnd) { |
rxy_form(SLY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
@@ -1833,12 +1737,6 @@ void Assembler::slgrk(Register r1, Register r2, Register r3) { |
// ---------------------------- |
// 32-bit Multiply Instructions |
// ---------------------------- |
-// Multiply Register-Storage (64<32) |
-void Assembler::m(Register r1, const MemOperand& opnd) { |
- DCHECK(r1.code() % 2 == 0); |
- rx_form(M, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
void Assembler::mfy(Register r1, const MemOperand& opnd) { |
DCHECK(r1.code() % 2 == 0); |
rxy_form(MFY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
@@ -1850,21 +1748,11 @@ void Assembler::ml(Register r1, const MemOperand& opnd) { |
} |
// Multiply Single Register-Storage (32) |
-void Assembler::ms(Register r1, const MemOperand& opnd) { |
- rx_form(MS, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// Multiply Single Register-Storage (32) |
void Assembler::msy(Register r1, const MemOperand& opnd) { |
rxy_form(MSY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
// Multiply Halfword Register-Storage (32) |
-void Assembler::mh(Register r1, const MemOperand& opnd) { |
- rx_form(MH, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// Multiply Halfword Register-Storage (32) |
void Assembler::mhy(Register r1, const MemOperand& opnd) { |
rxy_form(MHY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
@@ -1899,11 +1787,6 @@ void Assembler::msgf(Register r1, const MemOperand& opnd) { |
// -------------------------- |
// 32-bit Divide Instructions |
// -------------------------- |
-// Divide Register-Storage (32<-64) |
-void Assembler::d(Register r1, const MemOperand& opnd) { |
- rx_form(D, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
// Divide Logical Register-Storage (32<-64) |
void Assembler::dl(Register r1, const MemOperand& opnd) { |
rxy_form(DL, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
@@ -1921,11 +1804,6 @@ void Assembler::dsgf(Register r1, const MemOperand& opnd) { |
// Bitwise Instructions |
// -------------------- |
// AND Register-Storage (32) |
-void Assembler::n(Register r1, const MemOperand& opnd) { |
- rx_form(N, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// AND Register-Storage (32) |
void Assembler::ny(Register r1, const MemOperand& opnd) { |
rxy_form(NY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
@@ -1946,11 +1824,6 @@ void Assembler::ngrk(Register r1, Register r2, Register r3) { |
} |
// OR Register-Storage (32) |
-void Assembler::o(Register r1, const MemOperand& opnd) { |
- rx_form(O, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// OR Register-Storage (32) |
void Assembler::oy(Register r1, const MemOperand& opnd) { |
rxy_form(OY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
@@ -1971,11 +1844,6 @@ void Assembler::ogrk(Register r1, Register r2, Register r3) { |
} |
// XOR Register-Storage (32) |
-void Assembler::x(Register r1, const MemOperand& opnd) { |
- rx_form(X, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// XOR Register-Storage (32) |
void Assembler::xy(Register r1, const MemOperand& opnd) { |
rxy_form(XY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
@@ -2220,31 +2088,16 @@ void Assembler::jump(Handle<Code> target, RelocInfo::Mode rmode, |
} |
// Store (32) |
-void Assembler::st(Register src, const MemOperand& dst) { |
- rx_form(ST, src, dst.rx(), dst.rb(), dst.offset()); |
-} |
- |
-// Store (32) |
void Assembler::sty(Register src, const MemOperand& dst) { |
rxy_form(STY, src, dst.rx(), dst.rb(), dst.offset()); |
} |
// Store Halfword |
-void Assembler::sth(Register src, const MemOperand& dst) { |
- rx_form(STH, src, dst.rx(), dst.rb(), dst.offset()); |
-} |
- |
-// Store Halfword |
void Assembler::sthy(Register src, const MemOperand& dst) { |
rxy_form(STHY, src, dst.rx(), dst.rb(), dst.offset()); |
} |
// Store Character |
-void Assembler::stc(Register src, const MemOperand& dst) { |
- rx_form(STC, src, dst.rx(), dst.rb(), dst.offset()); |
-} |
- |
-// Store Character |
void Assembler::stcy(Register src, const MemOperand& dst) { |
rxy_form(STCY, src, dst.rx(), dst.rb(), dst.offset()); |
} |
@@ -2281,11 +2134,6 @@ void Assembler::stg(Register src, const MemOperand& dst) { |
} |
// Insert Character |
-void Assembler::ic_z(Register r1, const MemOperand& opnd) { |
- rx_form(IC_z, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// Insert Character |
void Assembler::icy(Register r1, const MemOperand& opnd) { |
rxy_form(ICY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
@@ -2320,12 +2168,6 @@ void Assembler::adb(DoubleRegister r1, const MemOperand& opnd) { |
opnd.offset()); |
} |
-// Compare Register-Storage (LB) |
-void Assembler::cdb(DoubleRegister r1, const MemOperand& opnd) { |
- rx_form(CD, Register::from_code(r1.code()), opnd.rx(), opnd.rb(), |
- opnd.offset()); |
-} |
- |
// Divide Register-Storage (LB) |
void Assembler::ddb(DoubleRegister r1, const MemOperand& opnd) { |
rxe_form(DDB, Register::from_code(r1.code()), opnd.rx(), opnd.rb(), |
@@ -2351,46 +2193,24 @@ void Assembler::sqdb(DoubleRegister r1, const MemOperand& opnd) { |
} |
// Store Double (64) |
-void Assembler::std(DoubleRegister r1, const MemOperand& opnd) { |
- rx_form(STD, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// Store Double (64) |
void Assembler::stdy(DoubleRegister r1, const MemOperand& opnd) { |
DCHECK(!(opnd.rb().code() == 15 && opnd.offset() < 0)); |
rxy_form(STDY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
// Store Float (32) |
-void Assembler::ste(DoubleRegister r1, const MemOperand& opnd) { |
- rx_form(STE, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
-} |
- |
-// Store Float (32) |
void Assembler::stey(DoubleRegister r1, const MemOperand& opnd) { |
DCHECK(!(opnd.rb().code() == 15 && opnd.offset() < 0)); |
rxy_form(STEY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
// Load Double (64) |
-void Assembler::ld(DoubleRegister r1, const MemOperand& opnd) { |
- DCHECK(is_uint12(opnd.offset())); |
- rx_form(LD, r1, opnd.rx(), opnd.rb(), opnd.offset() & 0xfff); |
-} |
- |
-// Load Double (64) |
void Assembler::ldy(DoubleRegister r1, const MemOperand& opnd) { |
DCHECK(is_int20(opnd.offset())); |
rxy_form(LDY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |
} |
// Load Float (32) |
-void Assembler::le_z(DoubleRegister r1, const MemOperand& opnd) { |
- DCHECK(is_uint12(opnd.offset())); |
- rx_form(LE, r1, opnd.rx(), opnd.rb(), opnd.offset() & 0xfff); |
-} |
- |
-// Load Float (32) |
void Assembler::ley(DoubleRegister r1, const MemOperand& opnd) { |
DCHECK(is_int20(opnd.offset())); |
rxy_form(LEY, r1, opnd.rx(), opnd.rb(), opnd.offset()); |