Why am I asking this? Because I just installed a product on our, very old, z9BC. Said product's documentation said it was supported on a Z9. But it abended S0C1 on the instruction: E54C 1000 0000 (MVHI 0(1),0). I looked this up and it appears to be part of the "general instructions extension facility", which came in on the z10 class. Now, I know this code was likely generated by the C compiler (given the, unnamed by me, vendor). But this seems to be what I would expect to be from something like the C code: short int somevar=0; So I guess that is the reason: a general template which uses MVHI to set a halfword integer to a constant value.
But, in the case of hand crafted assembler, would an MVHI be "better" than an "old style" XC for some reason? I am thinking speed, having the operand in the i-cache, and so forth. Or is an XC of a region with itself "optimized" in the hardware to not actually fetch the data and do an XC operation because the result is always b'000...' regardless of the operand? -- There’s no obfuscated Perl contest because it’s pointless. —Jeff Polk Maranatha! <>< John McKown