+1 I love these discussions. As an engineer I love trying to outguess the hardware's cache algorithms. I love the idea of using two immediate instructions to initialize a fullword rather than using a storage reference.
But from a practical point of view, I could not agree more with @Colin. Further, unless the code in question is executed millions of times per day it will take years to get back the CPU time you devoted to the re-assembly. And if you should introduce a bug, you are never going to get that troubleshooting time back. Charles -----Original Message----- From: IBM Mainframe Assembler List <ASSEMBLER-LIST@LISTSERV.UGA.EDU> On Behalf Of Colin Paice Sent: Saturday, August 23, 2025 8:34 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Execute-Type Instructions Few people should be looking at the instruction level that is being discussed. You are more likely to get performance benefits from higher up the stack. For example, our code used an IMS bridge exit. Like all good programmers we allocated storage for our usage, did the work and then freed the storage. This showed up as a hot spot 1) because of enqueue on the storage request - and 2) the (small)cost of the storage requests. We fixed this by passing in a block of storage for the routine to use - so we allocated it once, and used it millions of times. We had a global block with a pointer to the next free trace slot. The code to update this involved compare and swap. With 8 CPU's there was a lot of contention. We gave each TCB their own trace area and this contention just disappeared. One customer did the same DB2 SQL query in every CICS program - just to check a system wide flag. It was pointed out this request was done 10,000 times a second. They changed this checking a bit in a global block, and deferred the need to upgrade their CPUs. So yes, look at the instruction level ... but do not forget what you are trying to do. Remember there used to be discussions on *How many angels can dance on the head of a pin?* Colin