C.FSWSP

RISC-V C.FSWSP Instruction Details

Instruction ManualCSS-format

Store SP FP to sp+offset. CSS format, RV32FC.

Instruction Syntax

c.fswsp fs2, offset(sp)
Operand Breakdown
This is a CSS-format-format instruction. Confirm operand positions based on the assembly syntax.
CFCompressed Instruction

Instruction Behavior

c.fswsp in RV32FC, stores the 32-bit single-precision value from floating-point fs2 to sp plus a zero-extended offset scaled by 4.

C.FSWSP Decode & Execute Animation

Shows only manual-defined 16-bit fields, operands, and ISA-visible results; it does not model a pipeline, cache, timing, or an implementation's memory-fault handling.

c.fswsp,(sp)
Execution context

The store transfers 32 bits; with a wider FLEN, FSW transfers the low 32 bits and ignores upper bits, while FSD transfers the low 64 bits. Transfers do not modify NaN payloads.

Naturally aligned accesses do not raise an address-misaligned exception; whether a misaligned access completes or raises an address-misaligned/access-fault exception is EEI-defined. This control displays only the selected outcome branch.

x2/sp = 0x00001000; low 32 bits of f0 = 0x3F800000. -> 0x00001010 -> M[0x00001010] = 0x3F800000.
16-bit encoding fields
15..13
funct3
111
12..9
uimm[5:2]
0100
8..7
uimm[7:6]
00
6..2
fs2
00000
1..0
op
10
Execution data path
x2/sp = 0x00001000; low 32 bits of f0 = 0x3F800000.
0x00001010 = 0x00001000 + 16
M[0x00001010] <- 0x3F800000
Architectural state has not been committed.

Quick Understanding & Search Notes

c.fswsp in RV32FC, stores the 32-bit single-precision value from floating-point fs2 to sp plus a zero-extended offset scaled by 4.

This is a real 16-bit C-extension memory encoding with semantics corresponding to the FLD/FLW/FSD/FSW floating-point load/store family.
C.FSWSP is defined only for RV32FC; RV64C uses the same encoding space for C.SDSP.
The offset is zero-extended and scaled by access width in the encoding; it is not an arbitrary byte immediate.

Common Usage Scenarios

Register Operations

Understand this scenario with real code like «c.fswsp f0, 16(sp) # *(sp+16) = f0».

Pre-Use Checklist

Syntax Check
  • Confirm the current instruction format is CSS-format.
  • Confirm the operand order matches the example.
Semantic Check
  • Ensure the destination register usage is compatible with the calling convention.
  • Confirm this is not the lower-level form of a pseudo-instruction expansion.

Pitfalls / Common Confusions

C.FSWSP is defined only for RV32FC; RV64C uses the same encoding space for C.SDSP.
The offset is zero-extended and scaled by access width in the encoding; it is not an arbitrary byte immediate.

FAQ

What is the offset unit for c.fswsp?

The encoded immediate is scaled by access width: 8 bytes for double-precision and 4 bytes for single-precision.

Does c.fswsp require a floating-point extension?

Yes. Double-precision forms require D, single-precision forms require F, and all require C.