Sure, I see all those observations. But this: >At some point IBM must have come to realize that an EX of any of these
>instructions would modify the opcode, rather than its parameters. But >being able to modify parameters/operands on the flight has much >broader applicability than the ability to alter the opcode of the >instruction. …seems to be ascribing a motive without any actual evidence. Perhaps some other aspect of instruction decoding in the millicode made putting the variable part at the end. To be clear: I’m NOT trying to pick a fight; I think this is an intriguing supposition, and certainly within the realm of possibility—the Z hardware gang have always impressed me with most* of their decisions. I’m just not seeing any actual evidence that “to prevent EX” was the motive (nor, of course, that it wasn’t). ...phsiii *Maybe all—I’m just not willing to risk someone saying “C’mon, x was stupid” and me having to say “Oh, right” :) From: Abe Kornelis <a...@bixoft.nl> Sent: Monday, August 4, 2025 4:38 AM To: Phil Smith III <li...@akphs.com>; ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Execute-Type Instructions Hi Phil, I have not been part of the process - I must infer from the outside. Dan Greiner probably knows more - but I doubt that he would comment on things internal to IBM. Here's what I observe: - The old vector facility had A4xx opcodes where the second byte of the opcode was the second byte of the instruction. - Instructions in the B2xx, B3xx, B9xx ranges (mostly formats S/RRE/RRF) are structured likewise. - Instructions in the E5xx range (mostly SSE/SIL formats) same pattern. At some point IBM must have come to realize that an EX of any of these instructions would modify the opcode, rather than its parameters. But being able to modify parameters/operands on the flight has much broader applicability than the ability to alter the opcode of the instruction. Newer sets of extended instructions are structured differently: - E3xx (RXY format) has the second byte of the opcode in the last byte of the instruction. - E6xx/E7xx (new vector facility) again has the second byte of the opcode in the last byte of the instruction. - EBxx (SIY/RSY formats) and ECxx (RIE/RRS/RIS formats) same again. - EDxx (RXE/RXF/RXY/RSL formats) again. The S/RRE/SSE formats were introduced with S/370. This corresponds with my first block above, where the A4xx, B2xx/B3xx/B9xx, and E5xx instruction ranges are mentioned with the two bytes of the opcode occupying the first 16 bytes of the instruction. The PoP for ESA/390 (I have no copy of the 370/XA PoP) defines RXE / RXF / RSE / RSL formats which all have the second byte of the opcode in the last byte of the instruction, freeing up the second byte for either two registers, or a length code. Much more useful as a target for modification when using EX. The new vector facility is even newer. It also follows the 'newer' pattern. Which is apparently here to stay - including (most) new developments. Someone came to the conclusion that this (somewhat counter-intuitive) implementation provides more value to customers, and to IBM developers of operating system logic and compilers. As to 'moving' the second byte of the opcode: no of course that cannot be done for existing instructions as that would break compatibility. It is for 'newer' (i.e. s/370 and later) that the second byte of all new opcodes is 'moved' from the second byte to the last one. It is placed in the last byte of the instruction rather than in the second, as IBM used to do with S/360. >From an architectural point of view I regard that as a move. If you look at >individual instructions, obviously, no move is discernible - nor will it ever be. (although IBM might opt to concoct 'replacements' for instructions with the 'old' format that would use opcodes in the 'newer' ranges so as to have the operands in a format that is more amenable to a fruitful use of EX/EXRL instructions) Kind regards, Abe === On 03/08/2025 22:45, Phil Smith III wrote: Abe Kornelis wrote, in part: I've long been aware that IBM moved the second byte of extended opcodes from the second byte to the last byte of the instruction for that very reason. Cite? Not ridiculous or impossible, I just find it hard to believe that IBM would bother.