NC $8, (R15), n-8(SP) // d407f010f000
OC $8, (R15), n-8(SP) // d607f010f000
MVC $8, (R15), n-8(SP) // d207f010f000
+ MVC $256, 8192(R1), 8192(R2) // b90400a2c2a800002000b90400b1c2b800002000d2ffa000b000
MVCIN $8, (R15), n-8(SP) // e807f010f000
CLC $8, (R15), n-8(SP) // d507f000f010
XC $256, -8(R15), -8(R15) // b90400afc2a8fffffff8d7ffa000a000
- MVC $256, 8192(R1), 8192(R2) // b90400a2c2a800002000b90400b1c2b800002000d2ffa000b000
+ MVCLE 0, R4, R6 // a8640000
+ MVCLE 4095, R4, R6 // a8640fff
+ MVCLE $4095, R4, R6 // a8640fff
+ MVCLE (R3), R4, R6 // a8643000
+ MVCLE 10(R3), R4, R6 // a864300a
CMP R1, R2 // b9200012
CMP R3, $32767 // a73f7fff
// VRR-f
{i: 122, as: AVLVGP, a1: C_REG, a2: C_REG, a6: C_VREG},
+
+ // MVC storage and storage
+ {i: 127, as: AMVCLE, a1: C_LOREG, a2: C_REG, a6: C_REG},
+ {i: 127, as: AMVCLE, a1: C_SCON, a2: C_REG, a6: C_REG},
}
var oprange [ALAST & obj.AMask][]Optab
}
}
zRRF(opcode, uint32(p.Reg), 0, uint32(p.From.Reg), uint32(p.To.Reg), asm)
+
+ case 127:
+ // NOTE: Mapping MVCLE operands is as follows:
+ // Instruction Format: MVCLE R1,R3,D2(B2)
+ // R1 - prog.To (for Destination)
+ // R3 - prog.Reg (for Source)
+ // B2 - prog.From (for Padding Byte)
+ d2 := c.regoff(&p.From)
+ if p.To.Reg&1 != 0 {
+ c.ctxt.Diag("output argument must be even register in %v", p)
+ }
+ if p.Reg&1 != 0 {
+ c.ctxt.Diag("input argument must be an even register in %v", p)
+ }
+ if (p.From.Reg == p.To.Reg) || (p.From.Reg == p.Reg) {
+ c.ctxt.Diag("padding byte register cannot be same as input or output register %v", p)
+ }
+ zRS(op_MVCLE, uint32(p.To.Reg), uint32(p.Reg), uint32(p.From.Reg), uint32(d2), asm)
}
}