[net.bugs] CCI Power6/32 - Sperry 7000/40 Assembly bug

phillips@sunybcs.UUCP (Gretchen Phillips) (08/04/86)

I have discovered that the EMUL instruction on the CCI Power6/32
(aka Sperry 7000/40) does not work correctly. When I contacted
Sperry about this they said they would notify the appropriate
people at CCI. 

Additionally they told me that the instruction CMPD2 does not
give correct results either.

EMUL cannot correctly calculate 1 * 1 + (-1)
and others with sign extended addends.
I am not sure of the exact problem with CMPD2 as I have not been
using it.

If you are using these instructions note that you will be getting
incorrect results.
	Gretchen

CSNET: phillips@buffalo
UUCP:  {decvax,rocksanne,dual,watmath}!sunybcs!phillips

jas@rtech.UUCP (Jim Shankland) (08/06/86)

> 
> 
> I have discovered that the EMUL instruction on the CCI Power6/32
> (aka Sperry 7000/40) does not work correctly.  [Sperry also]
> told me that the instruction CMPD2 does not ive correct results either.
> 
Interesting.  My Power6 architecture manual doesn't even list the CMPD2
instruction.  Sounds as though the Power6's handling of quadwords leaves
something to be desired.

Another Power6 microcode bug, more pertinent to those of us who never
fool with quadwords, is that MOVZWL from one register to another
copies the entire register:  i.e., it acts like MOVL.  This will cause
bugs in C programs, since the C compiler will generate "MOVZWL <reg>,<reg>",
expecting it to behave as documented, not as it really behaves.
When our system administrator reported this to CCI, they said that
they would change the documentation of MOVZWL rather than fix the
microcode.  They didn't mention changing their C compiler to not
generate the broken instruction.

Jim Shankland
 ..!ihnp4!cpsc6a!\
                  rtech!jas
..!ucbvax!mtxinu!/
-- 
Jim Shankland
 ..!ihnp4!cpsc6a!\
                  rtech!jas
..!ucbvax!mtxinu!/