
Philips Semiconductors
DSPCPU Operations for TM1300
PRODUCT SPECIFICATION
A-103
Signed 16-bit load
pseudo-op for ild16d(0)
SYNTAX
[ IF r
guard ] ild16 rsrc1
→ rdest
FUNCTION
if r
guard then {
if PCSW.bytesex = LITTLE_ENDIAN then
bs
← 1
else
bs
← 0
temp<7:0>
← mem[(rsrc1 +(1 ⊕ bs)]
temp<15:8>
← mem[(rsrc1 + (0 ⊕ bs)]
r
dest
← sign_ext16to32(temp<15:0>)
}
ATTRIBUTES
Function unit
dmem
Operation code
6
Number of operands
1
Modier
No
Modier range
—
Latency
3
Issue slots
4, 5
DESCRIPTION
The ild16 operation is a pseudo operation transformed by the scheduler into an ild16d(0) with the same
argument. (Note: pseudo operations cannot be used in assembly source les.)
The ild16 operation loads the 16-bit memory value from the address contained in r
src1, sign extends it to 32 bits,
and stores the result in r
dest. If the memory address contained in rsrc1 is not a multiple of 2, the result of ild16 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 ild16 to the MMIO address aperture is undened; access to the MMIO aperture is
dened only for 32-bit loads and stores.
The ild16 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 ild16 has no side effects whatever.
EXAMPLES
Initial Values
Operation
Result
r10 = 0xd00, [0xd00] = 0x22,
[0xd01] = 0x11
ild16 r10
→ r60
r60
← 0x00002211
r30 = 0, r20 = 0xd04, [0xd04] = 0x84,
[0xd05] = 0x33
IF r30 ild16 r20
→ r70
no change, since guard is false
r40 = 1, r20 = 0xd04, [0xd04] = 0x84,
[0xd05] = 0x33
IF r40 ild16 r20
→ r80
r80
← 0xffff8433
r50 = 0xd01
ild16 r50
→ r90
r90 undened, since 0xd01 is not a multiple of 2
SEE ALSO
ild16d ild16r ild16x
ild16