Does AMOMINU.D place the new memory result in rd?
No. AMOMINU.D places the old 64-bit memory value before the operation in rd; the result of unsigned min(oldDoubleword, rs2Doubleword) is written back to memory.
RV64 atomic unsigned-minimum 64-bit doubleword: rd returns the old memory value, while memory receives unsigned min(old, rs2)
AMOMINU.D performs an atomic read-modify-write on the 64-bit doubleword addressed by rs1: it first reads the old memory doubleword into rd, then computes unsigned min(oldDoubleword, rs2Doubleword) using unsigned minimum semantics and writes the 64-bit result back to the same address. The operation uses an unsigned 64-bit comparison; it is not a per-bit logical operation. aq/rl bits affect memory ordering only; they do not change the data result.
Shows A-extension doubleword atomic field decode, aq/rl ordering bits, memory read, and RMW state update.
A-extension doubleword atomic instructions use a 32-bit encoding; the animation starts by splitting the fields.
AMOMINU.D selects the memory writeback doubleword using a unsigned 64-bit comparison; this is not a per-bit logical operation.
This animation shows ISA-visible atomic read-modify-write, compare-and-swap, LR/SC reservation state, and ordering bits, not any specific CPU cache-coherence implementation, pipeline, or timing.
AMOMINU.D is an RV64 64-bit AMO.D read-modify-write instruction. rd always returns the old doubleword before the operation; only the result of unsigned min(oldDoubleword, rs2Doubleword) is written back to memory, so keep old-value return separate from memory update.
Understand this scenario with real code like «amominu.d a0, a1, (a2) # a0 = *a2; *a2 = umin(*a2, a1) (64-bit)».
Use slt t0, a0, a1 for boolean result; pair with bnez/beq for conditional branches.
Understand this scenario with real code like «amominu.d a0, a1, (a2) # a0 = *a2; *a2 = umin(*a2, a1) (64-bit)».
No. AMOMINU.D places the old 64-bit memory value before the operation in rd; the result of unsigned min(oldDoubleword, rs2Doubleword) is written back to memory.
No. aq/rl only affect memory-ordering constraints; they do not change this AMO.D instruction's 64-bit data result.