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.


On Tue, Oct 27, 2015 at 6:17 PM, Blaicher, Christopher Y. <
cblaic...@syncsort.com> 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: cblaic...@syncsort.com
>
> -----Original Message-----
> From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU]
> On Behalf Of Robert Ngan
> Sent: Tuesday, October 27, 2015 5:27 PM
> To: MVS List Server 2 <ASSEMBLER-LIST@LISTSERV.UGA.EDU>
> 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 <ASSEMBLER-LIST@LISTSERV.UGA.EDU> wrote on
> 2015/10/15 18:29:36:
>
> > From: Robin Vowels <robi...@dodo.com.au>
> > To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
> > Date: 2015/10/15 18:31
> > Subject: Re: Moves and others
> > Sent by: IBM Mainframe Assembler List
> > <ASSEMBLER-LIST@LISTSERV.UGA.EDU>
> >
> > ----- Original Message -----
> > From: "Paul Gilmartin"
> > <00000014e0e4a59b-dmarc-requ...@listserv.uga.edu>
> > To: <ASSEMBLER-LIST@LISTSERV.UGA.EDU>
> > 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

Reply via email to