s390: Enforce register pair constraints for kimd, klmd, kmac
Assembler now enforces register pair constraints for s390 kimd, klmd, and kmac instructions.
This commit updates the s390 assembler to enforce architectural constraints on the register operands for kimd, klmd, and kmac instructions. It ensures that operand R2 designates an even-odd pair of general registers and is an even-numbered register (not 0), preventing specification exceptions.
In Details
This patch updates the s390 assembler to enforce the architectural requirements for kimd, klmd, and kmac instructions. It specifically targets operand R2, ensuring it is an even-numbered register that forms an even-odd pair, aligning with the z/Architecture Principles of Operation and preventing specification exceptions. The operand R1 is also checked for register 0 exclusion, though R2's pair constraint is the primary focus here.
- s390
- A family of mainframe computer architectures developed by IBM.
- assembler
- A program that translates assembly language into machine code.
- register pair
- On some architectures, certain instructions require two adjacent registers to function as a single, wider operand. For example, an even-numbered register and the immediately following odd-numbered register can form a pair.
- specification exception
- An error condition detected by the hardware when an instruction is executed with operands or conditions that violate the architecture's rules.
- kimd
- A s390 machine instruction.
- klmd
- A s390 machine instruction.
- kmac
- A s390 machine instruction.