157 (is_uint12(imm12) || is_int12(imm12)));
167 (is_uint12(imm12) || is_int12(imm12)));
199 Instr instr = opcode | ((imm12 & 0x1f) << 7) |
202 ((imm12 & 0xfe0) << 20);
211 Instr instr = opcode | ((imm12 & 0x1f) << 7) |
214 ((imm12 & 0xfe0) << 20);
221 is_int13(imm13) && ((imm13 & 1) == 0));
222 Instr instr = opcode | ((imm13 & 0x800) >> 4) |
223 ((imm13 & 0x1e) << 7) |
226 ((imm13 & 0x7e0) << 20) |
227 ((imm13 & 0x1000) << 19);
243 ((imm21 & 0x800) << 9) |
244 ((imm21 & 0x7fe) << 20) |
245 ((imm21 & 0x100000) << 11);
343 DCHECK(is_uint11(uint11));
373 DCHECK(is_uint3(funct3) && is_uint8(uimm8));
374 ShortInstr instr = opcode | ((uimm8 & 0x1f) << 2) | ((uimm8 & 0xe0) << 5) |
383 DCHECK(is_uint3(funct3) && is_uint2(funct2) && is_int6(imm6));
384 ShortInstr instr = opcode | ((imm6 & 0x1f) << 2) | ((imm6 & 0x20) << 7) |
void GenInstrIShiftW(uint8_t funct7, uint8_t funct3, BaseOpcode opcode, Register rd, Register rs1, uint8_t shamt)
void GenInstrR(uint8_t funct7, uint8_t funct3, BaseOpcode opcode, Register rd, Register rs1, Register rs2)
void GenInstrCI(uint8_t funct3, BaseOpcode opcode, Register rd, int8_t imm6)
void GenInstrBranchCC_rri(uint8_t funct3, Register rs1, Register rs2, int16_t imm12)
virtual void emit(Instr x)=0
void GenInstrRFrm(uint8_t funct7, BaseOpcode opcode, Register rd, Register rs1, Register rs2, FPURoundingMode frm)
void GenInstrJ(BaseOpcode opcode, Register rd, int32_t imm20)
void GenInstrLoad_ri(uint8_t funct3, Register rd, Register rs1, int16_t imm12)
void GenInstrALU_ri(uint8_t funct3, Register rd, Register rs1, int16_t imm12)
void GenInstrR4(uint8_t funct2, BaseOpcode opcode, Register rd, Register rs1, Register rs2, Register rs3, FPURoundingMode frm)
void GenInstrShift_ri(bool arithshift, uint8_t funct3, Register rd, Register rs1, uint8_t shamt)
void GenInstrALUW_rr(uint8_t funct7, uint8_t funct3, Register rd, Register rs1, Register rs2)
void GenInstrCR(uint8_t funct4, BaseOpcode opcode, Register rd, Register rs2)
void GenInstrCB(uint8_t funct3, BaseOpcode opcode, Register rs1, uint8_t uimm8)
void GenInstrCSR_ir(uint8_t funct3, Register rd, ControlStatusReg csr, Register rs1)
void GenInstrALU_rr(uint8_t funct7, uint8_t funct3, Register rd, Register rs1, Register rs2)
void GenInstrCIU(uint8_t funct3, BaseOpcode opcode, Register rd, uint8_t uimm6)
void GenInstrPriv(uint8_t funct7, Register rs1, Register rs2)
void GenInstrCJ(uint8_t funct3, BaseOpcode opcode, uint16_t uint11)
void GenInstrCSR_ii(uint8_t funct3, Register rd, ControlStatusReg csr, uint8_t rs1)
void GenInstrStore_rri(uint8_t funct3, Register rs1, Register rs2, int16_t imm12)
void GenInstrStoreFP_rri(uint8_t funct3, Register rs1, FPURegister rs2, int16_t imm12)
void GenInstrCL(uint8_t funct3, BaseOpcode opcode, Register rd, Register rs1, uint8_t uimm5)
void GenInstrALUFP_rr(uint8_t funct7, uint8_t funct3, FPURegister rd, FPURegister rs1, FPURegister rs2)
void GenInstrS(uint8_t funct3, BaseOpcode opcode, Register rs1, Register rs2, int16_t imm12)
void GenInstrCBA(uint8_t funct3, uint8_t funct2, BaseOpcode opcode, Register rs1, int8_t imm6)
void GenInstrI(uint8_t funct3, BaseOpcode opcode, Register rd, Register rs1, int16_t imm12)
void GenInstrRAtomic(uint8_t funct5, bool aq, bool rl, uint8_t funct3, Register rd, Register rs1, Register rs2)
void GenInstrU(BaseOpcode opcode, Register rd, int32_t imm20)
void GenInstrB(uint8_t funct3, BaseOpcode opcode, Register rs1, Register rs2, int16_t imm12)
void GenInstrCA(uint8_t funct6, BaseOpcode opcode, Register rd, uint8_t funct, Register rs2)
void GenInstrCS(uint8_t funct3, BaseOpcode opcode, Register rs2, Register rs1, uint8_t uimm5)
void GenInstrCIW(uint8_t funct3, BaseOpcode opcode, Register rd, uint8_t uimm8)
void GenInstrLoadFP_ri(uint8_t funct3, FPURegister rd, Register rs1, int16_t imm12)
void GenInstrShiftW_ri(bool arithshift, uint8_t funct3, Register rd, Register rs1, uint8_t shamt)
void GenInstrCSS(uint8_t funct3, BaseOpcode opcode, FPURegister rs2, uint8_t uimm6)
void GenInstrIShift(uint8_t funct7, uint8_t funct3, BaseOpcode opcode, Register rd, Register rs1, uint8_t shamt)
constexpr bool is_valid() const
constexpr int8_t code() const
const int kRvcFunct3Shift
const int kRvcFunct4Shift
const int kRvcFunct2Shift
Register ToRegister(int num)
const int kRvcFunct6Shift
const int kArithShiftShift
#define DCHECK(condition)