c.addiw
Add a sign-extended non-zero immediate
This instruction is defined by:
Synopsis
C.ADDIW is an RV64C/RV128C-only instruction that performs the same computation as C.ADDI but produces a 32-bit result, then sign-extends result to 64 bits.
C.ADDIW expands into addiw xd, xd, imm.
The immediate can be zero for C.ADDIW, where this corresponds to sext.w xd.
C.ADDIW is only valid when xd ≠ x0; the code points with xd=x0 are reserved.
Execution
-
Pruned, XLEN == 64
-
Original
if (implemented?(ExtensionName::C) && (misa.C == 1'b0)) {
raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
}
X[xd] = sext((X[xd] + imm), 32);
if (implemented?(ExtensionName::C) && (misa.C == 1'b0)) {
raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
}
X[xd] = sext((X[xd] + imm), 32);