blob: ca11e4cbc183e9970afec03b2f771958740f39a2 [file] [log] [blame]
# "C" Standard Extension for Compressed Instructions.
# Version 2.0
c.lwsp | ci | clwsp_imm crd | 010...........10
c.fldsp | ci | cldsp_imm crd(fp) | 001...........10
c.swsp | css | cswsp_imm crs2 | 110...........10
c.fsdsp | css | csdsp_imm crs2(fp) | 101...........10
c.lw | cl | clw_imm crs1_ crd_ | 010...........00
c.fld | cl | cld_imm crs1_ crd_(fp) | 001...........00
c.sw | cs | csw_imm crs1_ crs2_ | 110...........00
c.fsd | cs | csd_imm crs1_ crs2_(fp) | 101...........00
c.j | cj | cj_imm ird_zero | 101...........01
c.jr | cr | iimm_0 crs1 ird_zero | 1000.....0000010
c.jalr | cr | iimm_0 crs1 ird_ra | 1001.....0000010
c.beqz | cb | cb_imm crs1_ irs2_zero | 110...........01
c.bnez | cb | cb_imm crs1_ irs2_zero | 111...........01
c.li | ci | cimm5 irs1_zero crd | 010...........01
c.lui | ci | clui_imm crd | 011...........01
c.addi | ci | cimm5 icrs1 crd | 000...........01
c.addi16sp | ci | caddi16sp_imm irs1_sp ird_sp | 011.00010.....01
c.addi4spn | ciw | ciw_imm irs1_sp crd_ | 000...........00
c.slli | ci | cshamt icrs1 crd | 000...........10
c.srli | cb | cshamt icrs1__ crd__ | 100.00........01
c.srai | cb | cshamt icrs1__ crd__ | 100.01........01
c.andi | cb | cimm5 icrs1__ crd__ | 100.10........01
c.mv | cr | crs2 irs1_zero crd | 1000..........10
c.add | cr | crs2 icrs1 crd | 1001..........10
c.and | ca | crs2_ icrs1__ crd__ | 100011...11...01
c.or | ca | crs2_ icrs1__ crd__ | 100011...10...01
c.xor | ca | crs2_ icrs1__ crd__ | 100011...01...01
c.sub | ca | crs2_ icrs1__ crd__ | 100011...00...01
c.nop | ci | | 0000000000000001
c.ebreak | cr | | 1001000000000010
# 0x0 is an illegal instruction by ISA specification. However it is often used
# as a canary after non-reachable code therefore it's included here.
unimp | ci | | 0000000000000000