Does SH1ADD.UW access memory?
No. It only reads and writes integer registers; any memory access must be performed by a separate load or store instruction.
Shift unsigned word left by 1 and add (RV64)
rd, rs1, rs2: integer registers x0–x31, with no immediate or shift-amount operand.
32-bit R-type: opcode=0111011 (OP-32), funct7=0010000, funct3=010; rs2, rs1 and rd occupy bits24:20, 19:15 and 11:7.
RV64-only, requiring enabled Zba; zero-extend rs1[31:0], shift left by the fixed 1, then add full-width rs2. Keep the low XLEN bits without word-result sign extension.
Overlapping sources and destination read values before writeback; x0 is always zero and writes to it are discarded. Only registers are computed; memory is not accessed.
Requires RV64 Zba. Zero-extend rs1[31:0], shift left by 1, then add full-width rs2; keep the low 64 bits without word-result sign extension. Useful for array address generation; no memory access occurs.
Starts with machine-code field decoding, then shows operand reads, instruction-specific execution, and ISA-visible state update.
Assumes Zba is enabled at the selected XLEN, with the fixed register values below and PC=0x2000; fetch succeeds and no asynchronous interrupt occurs. Steps are a teaching decomposition.
The machine code is split by the current instruction format; the animation starts from encoding/decode.
This animation shows ISA-visible decode and state changes, not any specific CPU pipeline, cache, prediction, or timing implementation.
SH1ADD.UW is RV64 Zba only: it zero-extends rs1[31:0], shifts it left by 1, then adds rs2.
RV64 Zba, x11=3 and x12=0x1000: the example shifts 3 left by 1, adds 0x1000 and writes x10=0x1006; no memory access occurs.
No. It only reads and writes integer registers; any memory access must be performed by a separate load or store instruction.
rs2 and the shifted, zero-extended rs1[31:0] are added at XLEN width, and the XLEN-wide result is written to rd.