TM1100 Preliminary Data Book
Philips Semiconductors
A-104
PRELIMINARY INFORMATION
File: ops.fm5, modified 7/23/99
Signed 16-bit load with displacement
SYNTAX
[ IF r
guard ] ild16d(d) rsrc1
→ rdest
FUNCTION
if r
guard then {
if PCSW.bytesex = LITTLE_ENDIAN then
bs
← 1
else
bs
← 0
temp<7:0>
← mem[(rsrc1 + d + (1 ⊕ bs)]
temp<15:8>
← mem[(rsrc1 + d + (0 ⊕ bs)]
r
dest
← sign_ext16to32(temp<15:0>)
}
ATTRIBUTES
Function unit
dmem
Operation code
6
Number of operands
1
Modier
7 bits
Modier range
–128..126 by 2
Latency
3
Issue slots
4, 5
DESCRIPTION
The ild16d operation loads the 16-bit memory value from the address computed by r
src1 + d, sign extends it to 32
bits, and stores the result in r
dest. The d value is an opcode modier, must be in the range –128 to 126 inclusive, and
must be a multiple of 2. If the memory address computed by r
src1 + d is not a multiple of 2, the result of ild16d is
undened but no exception will be raised. This load operation is performed as little-endian or big-endian depending on
the current setting of the bytesex bit in the PCSW.
The result of an access by ild16d to the MMIO address aperture is undened; access to the MMIO aperture is
dened only for 32-bit loads and stores.
The ild16d operation optionally takes a guard, specied in r
guard. If a guard is present, its LSB controls the
modication of the destination register and the occurrence of side effects. If the LSB of r
guard is 1, rdest is written and
the data cache status bits are updated if the addressed locations are cacheable. if the LSB of r
guard is 0, rdest is not
changed and ild16d has no side effects whatever.
EXAMPLES
Initial Values
Operation
Result
r10 = 0xd00, [0xd02] = 0x22,
[0xd03] = 0x11
ild16d(2) r10
→ r60
r60
← 0x00002211
r30 = 0, r20 = 0xd04, [0xd00] = 0x84,
[0xd01] = 0x33
IF r30 ild16d(-4) r20
→ r70
no change, since guard is false
r40 = 1, r20 = 0xd04, [0xd00] = 0x84,
[0xd01] = 0x33
IF r40 ild16d(-4) r20
→ r80
r80
← 0xffff8433
r50 = 0xd01
ild16d(-4) r50
→ r90
r90 undened, since 0xd01 +(–4) is not a
multiple of 2
SEE ALSO
ild16d