Having worked with S/360-based architecture for longer than I care to admit, I never fully appreciated two architectural peculiarities of the BXH and BXLE instructions: 1. The "normal" usage is to have the 3rd operand designate an even-numbered register, such that the increment is in the even-numbered register, and the compare value is in the odd-numbered (R3+1) register. However, the instruction allows the 3rd operand to designate an odd-numbered register, in which case the increment and compare value are the same. 2. The 1st- and 3rd-operand registers can be designated as the same register, in which case the comparison is performed before the 1st-operand register is updated.
Is there any legitimate case where a program would ever specify the 3rd operand as an odd-numbered register? Or, even weirder, is there any legitimate case where a program would designate the same register for the 1st and 3rd operans?? I can't think of any, and I'm rather surprised that IBM didn't originally recognize a specification exception for this. I guess it's simply a case of caveat programmator.