Does AMOADD.B return the post-operation value?
No. Like A-extension AMOs, rd receives the old value loaded from memory.
Atomic byte add: rd = *rs1 (sign-ext), *rs1 += rs2[7:0]
AMOADD.B (Zabha extension) atomically loads a byte from the address in rs1 into rd (sign-extended), adds the low byte of rs2 (overflow wraps), and stores the result back. Supports aq/rl bits.
AMOADD.B is a Zabha 8-bit atomic add instruction. It atomically reads the old memory value, performs the read-modify-write at 8-bit width, and writes the sign-extended old value to rd.
Understand this scenario with real code like «amoadd.b a0, a2, (a1)».
Understand this scenario with real code like «amoadd.b a0, a2, (a1)».
No. Like A-extension AMOs, rd receives the old value loaded from memory.
Architecturally it modifies only the byte operand; Zabha provides native byte-granule atomic read-modify-write operations.