5#ifndef V8_CODEGEN_RISCV_BASE_RISCV_I_H_
6#define V8_CODEGEN_RISCV_BASE_RISCV_I_H_
73 void fence(uint8_t pred, uint8_t succ);
154 bltu(rs2, rs1, imm13);
160 bgeu(rs2, rs1, imm13);
166 void j(int32_t imm21) {
jal(zero_reg, imm21); }
169 void jal(int32_t imm21) {
jal(ra, imm21); }
189#if V8_TARGET_ARCH_RISCV64
203 void sext_w(Register rd, Register rs) { addiw(rd, rs, 0); }
void sltz(Register rd, Register rs)
void bnez(Register rs1, Label *L)
void addi(Register rd, Register rs1, int16_t imm12)
void lhu(Register rd, Register rs1, int16_t imm12)
void sltu(Register rd, Register rs1, Register rs2)
void or_(Register rd, Register rs1, Register rs2)
void blt(Register rs1, Register rs2, int16_t imm12)
void lui(Register rd, int32_t imm20)
void beqz(Register rs, int16_t imm13)
void sh(Register source, Register base, int16_t imm12)
void mv(Register rd, Register rs)
void bltz(Register rs1, Label *L)
void and_(Register rd, Register rs1, Register rs2)
void sltiu(Register rd, Register rs1, int16_t imm12)
static bool IsLui(Instr instr)
void snez(Register rd, Register rs)
void lh(Register rd, Register rs1, int16_t imm12)
static int LoadOffset(Instr instr)
void bgez(Register rs1, Label *L)
void bleu(Register rs1, Register rs2, Label *L)
void fence(uint8_t pred, uint8_t succ)
static int AuipcOffset(Instr instr)
void seqz(Register rd, Register rs)
void blez(Register rs1, Label *L)
void ble(Register rs1, Register rs2, int16_t imm13)
void blez(Register rs, int16_t imm13)
static int JalrOffset(Instr instr)
void jalr(Register rs, int32_t imm12)
static bool IsSlli(Instr instr)
void srai(Register rd, Register rs1, uint8_t shamt)
static bool IsJalr(Instr instr)
int32_t jump_offset(Label *L)
void beqz(Register rs1, Label *L)
void jalr(Register rd, Register rs1, int16_t imm12)
void add(Register rd, Register rs1, Register rs2)
void bnez(Register rs, int16_t imm13)
static bool IsJump(Instr instr)
static int JumpOffset(Instr instr)
void beq(Register rs1, Register rs2, int16_t imm12)
static bool IsJal(Instr instr)
void bltu(Register rs1, Register rs2, int16_t imm12)
static bool IsAddi(Instr instr)
void sgtz(Register rd, Register rs)
void bgeu(Register rs1, Register rs2, Label *L)
void srli(Register rd, Register rs1, uint8_t shamt)
void call(int32_t offset)
void xor_(Register rd, Register rs1, Register rs2)
static bool IsLw(Instr instr)
void andi(Register rd, Register rs1, int16_t imm12)
void lw(Register rd, Register rs1, int16_t imm12)
void bgtu(Register rs1, Register rs2, Label *L)
void slt(Register rd, Register rs1, Register rs2)
void ori(Register rd, Register rs1, int16_t imm12)
static bool IsAuipc(Instr instr)
void lbu(Register rd, Register rs1, int16_t imm12)
void bgt(Register rs1, Register rs2, int16_t imm13)
void auipc(Register rd, int32_t imm20)
int32_t branch_offset(Label *L)
void not_(Register rd, Register rs)
void sub(Register rd, Register rs1, Register rs2)
void blt(Register rs1, Register rs2, Label *L)
void bltu(Register rs1, Register rs2, Label *L)
void srl(Register rd, Register rs1, Register rs2)
void ble(Register rs1, Register rs2, Label *L)
void beq(Register rs1, Register rs2, Label *L)
void xori(Register rd, Register rs1, int16_t imm12)
void bleu(Register rs1, Register rs2, int16_t imm13)
void bne(Register rs1, Register rs2, int16_t imm12)
static bool IsNop(Instr instr)
void bgt(Register rs1, Register rs2, Label *L)
void bgtu(Register rs1, Register rs2, int16_t imm13)
void bltz(Register rs, int16_t imm13)
static bool IsOri(Instr instr)
void bge(Register rs1, Register rs2, Label *L)
void jr(Register rs, int32_t imm12)
void nor(Register rd, Register rs, Register rt)
void sw(Register source, Register base, int16_t imm12)
void bgtz(Register rs1, Label *L)
void bge(Register rs1, Register rs2, int16_t imm12)
void bgtz(Register rs, int16_t imm13)
static bool IsBranch(Instr instr)
void bgez(Register rs, int16_t imm13)
void lb(Register rd, Register rs1, int16_t imm12)
void bgeu(Register rs1, Register rs2, int16_t imm12)
void neg(Register rd, Register rs)
void bne(Register rs1, Register rs2, Label *L)
void jal(Register rd, int32_t imm20)
void sll(Register rd, Register rs1, Register rs2)
void sb(Register source, Register base, int16_t imm12)
void slti(Register rd, Register rs1, int16_t imm12)
void slli(Register rd, Register rs1, uint8_t shamt)
void sra(Register rd, Register rs1, Register rs2)
virtual int32_t branch_offset_helper(Label *L, OffsetSize bits)=0