I've started replacing the majority of executed MVC's in our code with MVCRL.  
It avoids the overhead of a EX/EXRL instruction, but has the (slight) 
disadvantage of requiring the use of R00, and cannot be used to initialize 
storage via an overlapping move.

Robert Ngan
DXC Luxoft

-----Original Message-----
From: IBM Mainframe Assembler List <[email protected]> On Behalf 
Of Seymour J Metz
Sent: Tuesday, August 19, 2025 16:15
To: [email protected]
Subject: Re: Execute-Type Instructions

Re: Execute-Type Instructions
Seymour J Metz
​IBM Mainframe Assembler List <[email protected]>​
I suspect that the double MVC is more of a performance issue than the cache 
hit. I typically use LOCTR to avoid the duplicate execution.

--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3
עַם יִשְׂרָאֵל חַי
נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר




________________________________________
From: IBM Mainframe Assembler List <[email protected]> on behalf 
of Rupert Reynolds <[email protected]>
Sent: Tuesday, August 19, 2025 3:57 PM
To: [email protected] <[email protected]>
Subject: Re: Execute-Type Instructions


External Message: Use Caution


Back in the 1990s I was using an inline

EX_ME    MVC   DEST(*-*),SOURCE
        EX    R0,EX_ME
because our per4mans guys said branching around the MVC cost more than
moving the 1st byte twice, while storing the MVC elsewhere might slow data
cacheing.

I expect any optimisations from the old days that are still worth it have
been kept and there will some fresh ones.

Last I heard was when MVCL and CLCL had been improved to beat multiple MVC
and CLC in most cases.

But surely these differences are very small, compared with choice of
compiler, algorithm and so on?

Roops


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3
עַם יִשְׂרָאֵל חַי
נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר



Reply via email to