Frozen
|
The Zba extension is frozen. |
The Zba instructions can be used to accelerate the generation of addresses that index into arrays of basic types (halfword, word, doubleword) using both unsigned word-sized and XLEN-sized indices: a shifted index is added to a base address.
The shift and add instructions do a left shift of 1, 2, or 3 because these are commonly found in real-world code and because they can be implemented with a minimal amount of additional hardware beyond that of the simple adder. This avoids lengthening the critical path in implementations.
While the shift and add instructions are limited to a maximum left shift of 3, the slli instruction (from the base ISA) can be used to perform similar shifts for indexing into arrays of wider elements. The slli.uw — added in this extension — can be used when the index is to be interpreted as an unsigned word.
The following instructions (and pseudoinstructions) comprise the Zba extension:
RV32 | RV64 | Mnemonic | Instruction |
---|---|---|---|
✓ |
add.uw rd, rs1, rs2 |
||
✓ |
✓ |
sh1add rd, rs1, rs2 |
|
✓ |
sh1add.uw rd, rs1, rs2 |
||
✓ |
✓ |
sh2add rd, rs1, rs2 |
|
✓ |
sh2add.uw rd, rs1, rs2 |
||
✓ |
✓ |
sh3add rd, rs1, rs2 |
|
✓ |
sh3add.uw rd, rs1, rs2 |
||
✓ |
slli.uw rd, rs1, imm |
||
✓ |
zext.w rd, rs |