Correction: as we can see from the example I posted, when generating a MVC loop, it ALWAYS generates one more MVC at the end, even if the size of the field is evenly divisible by 256.
For example, to move 77,824 bytes it could have looped 304 times with nothing left over. Instead it looped 303 times, then did another MVC of 256 bytes. -----Original Message----- From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> On Behalf Of Schmitt, Michael Sent: Thursday, October 31, 2024 4:54 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Bounded string move? That made me wonder: What does IBM think is the fasted move for various lengths? Testing with IBM Enterprise COBOL for z/OS 6.2, compiled at OPT(2),ARCH(12) on a z/14, moving from a fixed length field to a field of the same length and can't be optimized away... - 1 to 4,096 bytes: generates a series of MVCs - 4,097 to 77,824 bytes: generates an MVC loop, followed by one more if needed - 77,825 and up: generates an MVCL 77,824 is an odd number to break on. It is 19 * 4096. If you're interested, the MVC loop for a length of 77,824 is: 000013 LA R2,152(,R9) # IN-W 000013 LA R1,0(,R4) # OUT-W 000013 LHI R0,0x12f 000013 NOP 000013 L0052: EQU * 000013 MVC 0(256,R1),0(R2) # 000013 LA R2,256(,R2) # 000013 LA R1,256(,R1) # 000013 BRCT R0,L0052 000013 MVC 0(256,R1),0(R2) # -----Original Message----- From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> On Behalf Of Steve Thompson Sent: Thursday, October 31, 2024 4:18 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Bounded string move? Uh, isn't that true up to about 1024 bytes (MVCs stacked)? And then after the MVCL seems to be faster. I think I was at some disclosure meeting or SHARE when that was said prior to 2010 (can't remember the exact year). I Remember that the MVCL is interruptible at end of a unit of operation. This may have changed since the z/13s. Steve Thompson On 10/31/2024 4:18 PM, Charles Mills wrote: > @Kirk: +1 > > @Shmuel: you know that an MVC loop is dramatically faster than MVCL? > > Surprising but true. > > CM > > On Wed, 30 Oct 2024 22:40:52 +0000, Seymour J Metz <sme...@gmu.edu> wrote: > >> I'm leaning towards SRST/MVCL. >> >> -- >> Shmuel (Seymour J.) Metz >> http://mason.gmu.edu/~smetz3 >> עַם יִשְׂרָאֵל חַי >> נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר >> >> >> >> ________________________________________ >> From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> on behalf of >> Kirk Wolf <k...@coztoolkit.com> >> Sent: Wednesday, October 30, 2024 4:41 PM >> To: IBM-MAIN@LISTSERV.UA.EDU >> Subject: Re: Bounded string move? >> >> Caution: This email did not originate from George Mason’s mail system. Do >> not click links or open attachments unless you recognize the sender and know >> the content is safe. >> >> >> It appears to me that your requirement matches the C function below. (?) >> I would probably just use C/C++, but you can see what the IBM C/C++ >> optimizing compiler generated. It seems unlikely to me that there is a >> significantly better way. You might ask on mvs-asm370. > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN