L32I.N — Narrow Load 32-bit

Instruction Word

Slot
Inst16a
6
3
6
2
6
1
6
0
5
9
5
8
5
7
5
6
5
5
5
4
5
3
5
2
5
1
5
0
4
9
4
8
4
7
4
6
4
5
4
4
4
3
4
2
4
1
4
0
3
9
3
8
3
7
3
6
3
5
3
4
3
3
3
2
3
1
3
0
2
9
2
8
2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0
1
9
1
8
1
7
1
6
1
5
1
4
1
3
1
2
1
1
1
0
9876543210
Format x16a - 16 bit(s) 10
L32I.N 1000
t 3210
s 3210
r 3210

Assembler Syntax

L32I.N at, as, 0..60

C Syntax

#include <xtensa/tie/xt_density.h>

extern int XT_L32I_N(const int * p, immediate i);

Description

(please consult the Xtensa ® Instruction Set Architecture Reference Manual for any cross references and additional information)

L32I.N is similar to L32I, but has a 16-bit encoding and supports a smaller range of offset values encoded in the instruction word.

L32I.N is a 32-bit load from memory. It forms a virtual address by adding the contents of address register as and a 4-bit zero-extended constant value encoded in the instruction word shifted left by two. Therefore, the offset can specify multiples of four from zero to 60. Thirty-two bits (four bytes) are read from the physical address. This data is then written to address register at.

If the Region Translation Option or the MMU Option is enabled, the virtual address is translated to the physical address. If not, the physical address is identical to the virtual address. If the translation or memory reference encounters an error (for example, protection violation or non-existent memory), the processor raises one of several exceptions .

Without the Unaligned Exception Option , the two least significant bits of the address are ignored. A reference to an address that is not 0 mod 4 produces the same result as a reference to the address with the least significant bits cleared. With the Unaligned Exception Option, such an access raises an exception.

If the Instruction Memory Access Option is configured, L32I.N is one of only a few memory reference instructions that can access instruction RAM/ROM.

Operation

vAddr ← AR[s] + (026||imm4||02)
(mem32, error) ← Load32(vAddr)
if error then
	EXCVADDR ← vAddr
	Exception (LoadStoreErrorCause)
else
	AR[t] ← mem32
endif

Exceptions

Memory Load Group (see Memory Load Group:)

Protos that use L32I.N

proto L32I.N { out int32 t, in const int32 * p, in immediate i }{}{
L32I.N t, p, i + 0;
}