How does the RV32 Zclsd source differ from RV64C?
RV64C reads 64 bits from rs2. RV32 Zclsd requires even rs2 and forms the 64-bit value from rs2's low 32 bits and rs2+1's high 32 bits.
RV64C stores a 64-bit doubleword from rs2; RV32 Zclsd stores a 64-bit value from the even rs2/rs2+1 register pair.
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.
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.
Understand this scenario with real code like «c.sdsp x10, 16(sp) # *(sp+16) = x10».
RV64C reads 64 bits from rs2. RV32 Zclsd requires even rs2 and forms the 64-bit value from rs2's low 32 bits and rs2+1's high 32 bits.
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.