![](http://datasheet.mmic.net.cn/260000/PTM1300FBEA_datasheet_15959396/PTM1300FBEA_392.png)
TM1300 Data Book
Philips Semiconductors
A-106
PRODUCT SPECIFICATION
Signed 16-bit load with scaled index
SYNTAX
[ IF rguard ] ild16x rsrc1 rsrc2
→
rdest
FUNCTION
if
rguard
then {
if
PCSW.bytesex = LITTLE_ENDIAN
then
bs
←
1
else
bs
←
0
temp<7:0>
←
mem[(rsrc1+ (2
×
rsrc2) + (1
⊕
bs)]
temp<15:8>
←
mem[(rsrc1+ (2
×
rsrc2) + (0
⊕
bs)]
rdest
←
sign_ext16to32(temp<15:0>)
}
ATTRIBUTES
Function unit
Operation code
Number of operands
Modifier
Modifier range
Latency
Issue slots
dmem
196
2
No
—
3
4, 5
DESCRIPTION
The
ild16x
operation loads the 16-bit memory value from the address computed by rsrc1 + 2
×
rsrc2 sign extends
it to 32 bits, and stores the result in rdest If the memory address computed by rsrc1 + 2
×
rsrc2 is not a multiple of 2,
the result of
ild16x
is undefined 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
ild16x
to the MMIO address aperture is undefined; access to the MMIO aperture is
defined only for 32-bit loads and stores.
The
ild16x
operation optionally takes a guard, specified in rguard If a guard is present, its LSB controls the
modification of the destination register and the occurrence of side effects. If the LSB of rguardis 1, rdestis written and
the data cache status bits are updated if the addressed locations are cacheable. if the LSB of rguard is 0, rdest is not
changed and
ild16x
has no side effects whatever.
EXAMPLES
Initial Values
Operation
Result
r10 = 0xd00, r30 = 1, [0xd02] = 0x22,
[0xd03] = 0x11
r50 = 0, r40 = 0xd04, r20 = 0xfffffffe,
[0xd00] = 0x84, [0xd01] = 0x33
r60 = 1, r40 = 0xd04, r20 = 0xfffffffe,
[0xd00] = 0x84, [0xd01] = 0x33
r70 = 0xd01, r30 = 1
ild16x r10 r30
→
r100
r100
←
0x00002211
IF r50 ild16x r40 r20
→
r80
no change, since guard is false
IF r60 ild16x r40 r20
→
r90
r90
←
0xffff8433
ild16x r70 r30
→
r110
r110 undefined, since 0xd01 + 2
×
1 is not a
multiple of 2
SEE ALSO
ild16 uld16 ild16d uld16d
ild16r uld16r uld16x
ild16x