Can C.SD be used on RV32?
With Zclsd: the source is an even/odd pair starting at x8/x10/x12/x14; odd-source encodings are reserved.
RV64C stores a 64-bit doubleword from rs2; RV32 Zclsd stores a 64-bit value from the even rs2/rs2+1 register pair.
C.SD uses CS format, with base/source fields in x8–x15 and byte offset 0–248 in steps of 8. RV64 C/Zca stores one 64-bit register; RV32 Zclsd stores low 32 bits from even rs2' and high 32 bits from rs2'+1. Zclsd requires Zilsd and Zca, and conflicts with Zcf.
Shows only ISA-visible 16-bit encoding, operands, and state, not a pipeline, cache, or timing.
This animation models the RV64C form; the static detail retains the RV32 Zclsd register-pair condition. The offset is already in bytes. Eight-byte alignment prevents address-misaligned exceptions; the EEI defines misaligned outcomes. mem64 denotes the value without choosing byte order.
Continue to Commit result to reveal architectural state.
RV64 C/Zca C.SD uses two x8–x15 fields and a zero-extended byte offset (0–248, step 8); RV32 Zclsd uses an even/odd register pair.
RV64 C/Zca, x10=0x2000 and x8=0x0123456789abcdef: c.sd x8, 0(x10) stores that mem64 value on completion. RV32 Zclsd uses x8=0x89abcdef and x9=0x01234567.
With Zclsd: the source is an even/odd pair starting at x8/x10/x12/x14; odd-source encodings are reserved.
No: the base may be misaligned; EEI rules apply. Faults need not undo partial writes, and RV32 pair stores need not be atomic as a whole.