s390: Enforce register pair constraints for several instructions
Assembler now enforces register pair and even register constraints for s390 instructions like stpq, clclu, kimd, klmd, kmac, km, kmc, mvcl, kxbr, cmpsc, clcle,…
These commits update the s390 assembler to enforce architectural constraints on register operands for several instructions. Specifically, instructions such as stpq, clclu, kimd, klmd, kmac, km, kmc, mvcl, kxbr, cmpsc, clcle, and clclu now correctly validate that their register operands are either register pairs or even-numbered registers as required by the s390 architecture. This prevents the generation of incorrect machine code and ensures adherence to the hardware’s specifications.
In Details
These patches update the s390 assembler's instruction decoding and validation logic. They enforce architectural constraints on register operands for various instructions, ensuring that paired registers are used where required and that register numbers meet parity requirements. This addresses specification exceptions that could occur if invalid register assignments were allowed by the assembler.
- 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.