ADDI |
0010011 |
rd = rs1 + imm |
× |
XORI |
0010011 |
rd = rs1 ^ imm |
× |
ORI |
0010011 |
rd = rs1 | imm |
× |
ANDI |
0010011 |
rd = rs1 & imm |
× |
ADD |
0110011 |
rd = rs1 + rs2 |
× |
SUB |
0110011 |
rd = rs1 - rs2 |
× |
XOR |
0110011 |
rd = rs1 ^ rs2 |
× |
OR |
0110011 |
rd = rs1 | rs2 |
× |
AND |
0110011 |
rd = rs1 & rs2 |
× |
SLTI |
0010011 |
rd = (signed)rs1 < imm |
× |
SLTIU |
0010011 |
rd = rs1 < imm (unsigned) |
× |
SLT |
0110011 |
rd = (signed)rs1 < (signed)rs2 |
× |
SLTU |
0110011 |
rd = rs1 < rs2 (unsigned) |
× |
SLLI |
0010011 |
rd = rs1 << imm[4:0] |
× |
SRLI |
0010011 |
rd = rs1 >> imm[4:0] |
× |
SRAI |
0010011 |
rd = (signed)rs1 >>> imm[4:0] |
× |
SLL |
0110011 |
rd = rs1 << rs2[4:0] |
× |
SRL |
0110011 |
rd = rs1 >> rs2[4:0] |
× |
SRA |
0110011 |
rd = (signed)rs1 >>> rs2[4:0] |
× |
LUI |
0110111 |
rd = imm |
× |
AUIPC |
0010111 |
rd = pc + imm |
× |
LB |
0000011 |
rd = Mem[rs1 + imm] (byte) |
× |
LH |
0000011 |
rd = Mem[rs1 + imm] (half) |
× |
LW |
0000011 |
rd = Mem[rs1 + imm] (word) |
× |
LBU |
0000011 |
rd = Mem[rs1 + imm] (byte, unsigned) |
× |
LHU |
0000011 |
rd = Mem[rs1 + imm] (half, unsigned) |
× |
SB |
0100011 |
Mem[rs1 + imm] = rs2 (byte) |
× |
SH |
0100011 |
Mem[rs1 + imm] = rs2 (half) |
× |
SW |
0100011 |
Mem[rs1 + imm] = rs2 (word) |
× |
BEQ |
1100011 |
if (rs1 == rs2) branch |
pc + imm |
BNE |
1100011 |
if (rs1 != rs2) branch |
pc + imm |
BLT |
1100011 |
if (rs1 < rs2) (signed) branch |
pc + imm |
BGE |
1100011 |
if (rs1 >= rs2) (signed) branch |
pc + imm |
BLTU |
1100011 |
if (rs1 < rs2) (unsigned) branch |
pc + imm |
BGEU |
1100011 |
if (rs1 >= rs2) (unsigned) branch |
pc + imm |
JAL |
1101111 |
rd = pc + 4; jump |
pc + imm |
JALR |
1100111 |
rd = pc + 4; jump |
(rs1 + imm) & ~1 |