How does the RV32 Zclsd source differ from RV64C?
RV64C reads 64 bits from rs2. RV32 Zclsd requires even rs2: rs2 holds the low 32 bits and rs2+1 the high 32 bits; rs2=x0 makes the whole source zero without reading x1.
RV64C stores a 64-bit doubleword from rs2; RV32 Zclsd stores a 64-bit value from the even rs2/rs2+1 register pair.
Extension condition: RV64 C/Zca; or RV32 Zclsd (requires Zilsd and Zca; incompatible with Zcf).
C.SDSP uses the CSS format. RV64C stores rs2's 64-bit value at x2/sp plus a zero-extended offset scaled by 8; RV32 Zclsd forms the 64-bit source from even rs2 and rs2+1. Both forms use x2 plus the offset as the effective address.
Shows only official 16-bit fields, operands, conditions, and architectural state; it does not model a pipeline, cache, or timing.
RV64 C/Zca
A naturally aligned access cannot raise an address-misaligned exception; any address can still raise an access-fault according to the EEI's access rules.
C.SDSP fixes the base to x2/sp; CSS offset bits are reconstructed and scaled by 8. RV64C and RV32 Zclsd use different source-register models.
RV64 C/Zca, sp=0x2000 and x10=0x0123456789abcdef: c.sdsp x10, 16(sp) stores that mem64 value at 0x2010 on completion. RV32 Zclsd uses x10=0x89abcdef and x11=0x01234567.
RV64C reads 64 bits from rs2. RV32 Zclsd requires even rs2: rs2 holds the low 32 bits and rs2+1 the high 32 bits; rs2=x0 makes the whole source zero without reading x1.
At an 8-byte address it cannot raise an address-misaligned exception. At a 4-byte but not 8-byte address each word access must be atomic, but a misaligned trap remains possible; other misaligned addresses can also trap.