As you begin to use the 64-bit instructions, consider the following:
- Some instructions reference or change all 64 bits of a GPR regardless
of the AMODE.
- Some instructions reference or change only the low-order half
of a GPR regardless of the AMODE.
- Some instructions reference or change only the high-order half
of a GPR regardless of the AMODE.
- When you are using signed integers in arithmetic operations, you
can't mix instructions that handle 64-bit integers with instructions
that handle 31-bit integers. The interpretation of a 32-bit signed
number differs from the interpretation of a 64-bit signed number.
With the 32-bit signed number, the sign is extended in the low half
of the doubleword. With the 64-bit signed number, the sign is extended
to the left for the entire doubleword.
Consider the following example, where a 31-bit subtraction instruction
has left a 31-bit negative integer in bits 32 through 63 of GPR3 and
has left the high-order half unchanged.
Next, the instruction AG R3,MYDOUBLEWORD, mentioned earlier, adds
the doubleword at the location MYDOUBLEWORD to the contents of the
GPR3 and places the sum at GPR3. Because the high-order half of
the GPR has uncertain contents, the result of the AG instruction
is incorrect. To change the value in the GPR3 so that the AG instruction
adds the correct integers, before you use the AG instruction, use
the Load G Fullword Register (LGFR) instruction to propagate the sign
to the high-order half of GPR3.