Yes, I was just mentioning an alternative. But MVCOS is a fairly new instruction, and I can't use it until ZS-3 is the minimum level supported by z/OS.
Also, both MVCK and MVCOS require an extra register that my ideal variable-length MVC would not. I would also hope it would come *without* the performance caveat! sas On Wed, Oct 28, 2015 at 11:44 AM, Robin Vowels <[email protected]> wrote: > From: "Steve Smith" <[email protected]> > Sent: Thursday, October 29, 2015 2:28 AM > > > I sometimes use MVCK for variable-length moves (in the same key). Usually, >> a preceding IPK is needed, but EXed MVCs usually require a BCTR or >> something. It's very convenient (especially when I don't want to >> decrement >> the length register), but has the performance warning too. >> >> It baffles me that we don't have an instruction like MVCK without the key >> specification. MVCL isn't good enough (not that it isn't useful in many >> cases) for a typical, relatively short, variable-length move. Not only do >> you need to set up 3 or 4 registers, it destroys them all. >> > > In the email to which you have replied, the author tells of the MVCOS > instruction that seems to do what you want. > > > On Tue, Oct 27, 2015 at 6:17 PM, Blaicher, Christopher Y. < >> [email protected]> wrote: >> >> I did some experiments on a z196 and a z10 to determine that until you get >>> close to several pages an MVC loop with a final executed MVC is faster. >>> On >>> those machines the breakeven point was 32K. >>> The cost is because MVCL and the like are millicode instructions and >>> there >>> is a fair overhead to starting and ending the millicode environment. >>> MVCL >>> will kick into a move page shortcut when things line up on a page >>> boundary, >>> both source and destination, but how often does that happen? >>> >>> Chris Blaicher >>> Technical Architect >>> Software Development >>> Syncsort Incorporated >>> 50 Tice Boulevard, Woodcliff Lake, NJ 07677 >>> P: 201-930-8234 | M: 512-627-3803 >>> E: [email protected] >>> >>> -----Original Message----- >>> From: IBM Mainframe Assembler List [mailto: >>> [email protected]] >>> On Behalf Of Robert Ngan >>> Sent: Tuesday, October 27, 2015 5:27 PM >>> To: MVS List Server 2 <[email protected]> >>> Subject: Re: Moves and others >>> >>> There's also MVCOS (with zero in R00 for problem state code). It also >>> uses >>> 2 extra registers (R00, plus a length register). I heard it was also >>> quite slow compared to MVC, but not sure how it's performance compares to >>> an executed MVC (or a MVC loop, plus a final executed MVC). >>> Excluding setup, it's only a single instruction for variable length moves >>> up to 4K. >>> >>> Robert Ngan >>> CSC Financial Services Group >>> >>> IBM Mainframe Assembler List <[email protected]> wrote on >>> 2015/10/15 18:29:36: >>> >>> > From: Robin Vowels <[email protected]> >>> > To: [email protected] >>> > Date: 2015/10/15 18:31 >>> > Subject: Re: Moves and others >>> > Sent by: IBM Mainframe Assembler List >>> > <[email protected]> >>> > >>> > ----- Original Message ----- >>> > From: "Paul Gilmartin" >>> > <[email protected]> >>> > To: <[email protected]> >>> > Sent: Friday, October 16, 2015 3:16 AM >>> > Subject: Re: Moves and others >>> > >>> > >>> > On 2015-10-15, at 08:48, Robin Vowels wrote: >>> > > >>> > > IBM should have produced a special EXC instruction for characters, >>> > > that did what EX does, but accepts k, the number of bytes to move >>> > (or compare, etc), >>> > > tests for zero (and performs a no-op if it is), subtracts 1, and >>> > then executes MVC. >>> > >>> > MVCL? >>> > >>> > Kind of overkill for small moves. >>> > 4 registers! >>> >> > --- > This email has been checked for viruses by Avast antivirus software. > http://www.avast.com > -- sas
