Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/18/84 SMI; site sun.uucp
Path: utzoo!linus!decvax!decwrl!sun!gnu
From: gnu@sun.uucp (John Gilmore)
Newsgroups: net.arch
Subject: Re: 360 versus 370, MVCL, ICM, etc.
Message-ID: <1744@sun.uucp>
Date: Mon, 15-Oct-84 22:42:30 EDT
Article-I.D.: sun.1744
Posted: Mon Oct 15 22:42:30 1984
Date-Received: Wed, 17-Oct-84 09:00:40 EDT
References:  <1433@bmcg.UUCP> <1313@ritcv.UUCP> <197@rlgvax.UUCP>
Organization: Sun Microsystems, Inc.
Lines: 25

Curiously enough, MVCL is such a complicated instruction that it is
almost always faster to just run the old 360 MVC loop.  I don't know if
this has changed in newer 370's and Amdahls but it was true of the 145,
148, 155, 158, and 470V/6.

PS:  It is "MVCL" not "MVL".  There's also "CLCL" (compare logical
characters long), which was similarly slow but had the advantage that
it would stop with the registers pointing to the mismatch, a feature
not available in CLC.

PPS:  In many ways the 370 tried to innovate but just came up with
worse instructions than the 360 way.  Example: I doubt there was a
single 360 assembler programmer who never wanted the "LT" (load from
memory and test) instruction -- you had to do "L" then "LTR" (load then
load&test-register).  They "fixed" this in the 370 with the "ICM"
instruction (insert characters under mask), which took a 4-bit mask and
loaded 0 to 4 bytes into a register, setting the condition code the
same as LTR.  However, it's more than twice as slow as "L/LTR" and only
accepts a subset of the possible addressing modes.  Years ago I read an
introduction to System/370 that talked about the new instructions and
why they were created and in hindsight the design was clearly done by a
committee.

PPPS:  In popular parlance the ICM and STCM instructions were called 
"Ick-em" and "Stick-em".  Just thought you might want to know.