c.srai

Shift right arithmetical immediate

Arithmetic shift (the original sign bit is copied into the vacated upper bits) the value in xd right by shamt, and store the result in xd. The xd register index should be used as xd+8 (registers x8-x15). C.SRAI expands into srai xd, xd, shamt.

This instruction must have data-independent timing when extension Zkt is enabled.

Assembly format

c.srai xd, shamt

Decode Variables

  • RV32

  • RV64

Bits<5> shamt = $encoding[6:2];
Bits<3> xd = $encoding[9:7];
Bits<6> shamt = {$encoding[12], $encoding[6:2]};
Bits<3> xd = $encoding[9:7];

Execution

X[creg2reg(xd)] = X[creg2reg(xd)] >>> shamt;

Encoding

This instruction has different encodings in RV32 and RV64.
RV32
svg
RV64
svg

Defining extension

Zca

Access

M

Always

Containing profiles

  • Mandatory: None

  • Optional: RVA20S64, RVA20U64, RVA22S64, RVA22U64, RVA23S64, RVA23U64, RVB23S64, RVB23U64, RVI20U32, RVI20U64