| Index: src/s390/assembler-s390.cc
|
| diff --git a/src/s390/assembler-s390.cc b/src/s390/assembler-s390.cc
|
| index 673ef61b0de94dffb6579dc9c30c6ae8855581ed..6dbb1ed77dfa01df5f4bb09f9b2d5ab9deaeabf6 100644
|
| --- a/src/s390/assembler-s390.cc
|
| +++ b/src/s390/assembler-s390.cc
|
| @@ -971,6 +971,20 @@ void Assembler::rxy_form(Opcode op, Register r1, Register x2, Register b2,
|
| emit6bytes(code);
|
| }
|
|
|
| +void Assembler::rxy_form(Opcode op, Register r1, Condition m3, Register b2,
|
| + Disp d2) {
|
| + DCHECK(is_int20(d2));
|
| + DCHECK(is_uint16(op));
|
| + uint64_t code = (static_cast<uint64_t>(op & 0xFF00)) * B32 |
|
| + (static_cast<uint64_t>(r1.code())) * B36 |
|
| + (static_cast<uint64_t>(m3 & 0xF)) * B32 |
|
| + (static_cast<uint64_t>(b2.code())) * B28 |
|
| + (static_cast<uint64_t>(d2 & 0x0FFF)) * B16 |
|
| + (static_cast<uint64_t>(d2 & 0x0FF000)) >> 4 |
|
| + (static_cast<uint64_t>(op & 0x00FF));
|
| + emit6bytes(code);
|
| +}
|
| +
|
| void Assembler::rxy_form(Opcode op, DoubleRegister r1, Register x2, Register b2,
|
| Disp d2) {
|
| DCHECK(is_int20(d2));
|
| @@ -1418,7 +1432,6 @@ RIL1_FORM_EMIT(llihf, LLIHF)
|
| RIL1_FORM_EMIT(llilf, LLILF)
|
| RRE_FORM_EMIT(lngr, LNGR)
|
| RR_FORM_EMIT(lnr, LNR)
|
| -RSY1_FORM_EMIT(loc, LOC)
|
| RRE_FORM_EMIT(lrvr, LRVR)
|
| RRE_FORM_EMIT(lrvgr, LRVGR)
|
| RXY_FORM_EMIT(lrv, LRV)
|
| @@ -1604,6 +1617,26 @@ void Assembler::llhr(Register r1, Register r2) { rre_form(LLHR, r1, r2); }
|
| // Load Logical halfword Register-Register (64)
|
| void Assembler::llghr(Register r1, Register r2) { rre_form(LLGHR, r1, r2); }
|
|
|
| +// Load On Condition R-R (32)
|
| +void Assembler::locr(Condition m3, Register r1, Register r2) {
|
| + rrf2_form(LOCR << 16 | m3 * B12 | r1.code() * B4 | r2.code());
|
| +}
|
| +
|
| +// Load On Condition R-R (64)
|
| +void Assembler::locgr(Condition m3, Register r1, Register r2) {
|
| + rrf2_form(LOCGR << 16 | m3 * B12 | r1.code() * B4 | r2.code());
|
| +}
|
| +
|
| +// Load On Condition R-M (32)
|
| +void Assembler::loc(Condition m3, Register r1, const MemOperand& src) {
|
| + rxy_form(LOC, r1, m3, src.rb(), src.offset());
|
| +}
|
| +
|
| +// Load On Condition R-M (64)
|
| +void Assembler::locg(Condition m3, Register r1, const MemOperand& src) {
|
| + rxy_form(LOCG, r1, m3, src.rb(), src.offset());
|
| +}
|
| +
|
| // -------------------
|
| // Branch Instructions
|
| // -------------------
|
|
|