Does SH2ADD access memory?
No. It only reads and writes integer registers; any memory access must be performed by a separate load or store instruction.
Shift left by 2 and add
SH2ADD uses opcode 0110011 (0x33), funct3 100, funct7 0010000. The rs1 and rs2 fields select the two source registers, and rd selects the destination register.
Shifts rs1 left by 2 then adds rs2: rd = rs2 + (rs1 << 2). For word (4-byte) array address generation. Part of Zba.
SH2ADD is a B/Zba instruction for rs2 plus rs1 shifted left by 2. This page is checked against the official B extension semantics, with emphasis on XLEN, W suffixes, .uw suffixes, and bitwise or rotate boundaries.
Understand this scenario with real code like «sh2add x10, x11, x12 ; x10 = x12 + (x11 << 2)».
No. It only reads and writes integer registers; any memory access must be performed by a separate load or store instruction.
Except that W-suffixed forms produce a 32-bit result then sign-extend and .uw forms first extract a 32-bit unsigned operand, the result is written to rd at XLEN width.