Lines Matching full:rs
254 static void emit_bcc(u8 cond, u8 rd, u8 rs, int rvoff, in emit_bcc() argument
259 emit(rv_beq(rd, rs, rvoff >> 1), ctx); in emit_bcc()
262 emit(rv_bltu(rs, rd, rvoff >> 1), ctx); in emit_bcc()
265 emit(rv_bltu(rd, rs, rvoff >> 1), ctx); in emit_bcc()
268 emit(rv_bgeu(rd, rs, rvoff >> 1), ctx); in emit_bcc()
271 emit(rv_bgeu(rs, rd, rvoff >> 1), ctx); in emit_bcc()
274 emit(rv_bne(rd, rs, rvoff >> 1), ctx); in emit_bcc()
277 emit(rv_blt(rs, rd, rvoff >> 1), ctx); in emit_bcc()
280 emit(rv_blt(rd, rs, rvoff >> 1), ctx); in emit_bcc()
283 emit(rv_bge(rd, rs, rvoff >> 1), ctx); in emit_bcc()
286 emit(rv_bge(rs, rd, rvoff >> 1), ctx); in emit_bcc()
290 static void emit_branch(u8 cond, u8 rd, u8 rs, int rvoff, in emit_branch() argument
296 emit_bcc(cond, rd, rs, rvoff, ctx); in emit_branch()
304 * bne rd,rs,foo in emit_branch()
306 * beq rd,rs,<.L1> in emit_branch()
313 emit_bcc(cond, rd, rs, 8, ctx); in emit_branch()
324 emit_bcc(cond, rd, rs, 12, ctx); in emit_branch()
387 static void init_regs(u8 *rd, u8 *rs, const struct bpf_insn *insn, in init_regs() argument
405 *rs = bpf_to_rv_reg(insn->src_reg, ctx); in init_regs()
408 static void emit_zext_32_rd_rs(u8 *rd, u8 *rs, struct rv_jit_context *ctx) in emit_zext_32_rd_rs() argument
412 emit_mv(RV_REG_T1, *rs, ctx); in emit_zext_32_rd_rs()
415 *rs = RV_REG_T1; in emit_zext_32_rd_rs()
418 static void emit_sext_32_rd_rs(u8 *rd, u8 *rs, struct rv_jit_context *ctx) in emit_sext_32_rd_rs() argument
421 emit_addiw(RV_REG_T1, *rs, 0, ctx); in emit_sext_32_rd_rs()
423 *rs = RV_REG_T1; in emit_sext_32_rd_rs()
483 static void emit_atomic(u8 rd, u8 rs, s16 off, s32 imm, bool is64, in emit_atomic() argument
502 emit(is64 ? rv_amoadd_d(RV_REG_ZERO, rs, rd, 0, 0) : in emit_atomic()
503 rv_amoadd_w(RV_REG_ZERO, rs, rd, 0, 0), ctx); in emit_atomic()
506 emit(is64 ? rv_amoand_d(RV_REG_ZERO, rs, rd, 0, 0) : in emit_atomic()
507 rv_amoand_w(RV_REG_ZERO, rs, rd, 0, 0), ctx); in emit_atomic()
510 emit(is64 ? rv_amoor_d(RV_REG_ZERO, rs, rd, 0, 0) : in emit_atomic()
511 rv_amoor_w(RV_REG_ZERO, rs, rd, 0, 0), ctx); in emit_atomic()
514 emit(is64 ? rv_amoxor_d(RV_REG_ZERO, rs, rd, 0, 0) : in emit_atomic()
515 rv_amoxor_w(RV_REG_ZERO, rs, rd, 0, 0), ctx); in emit_atomic()
519 emit(is64 ? rv_amoadd_d(rs, rs, rd, 0, 0) : in emit_atomic()
520 rv_amoadd_w(rs, rs, rd, 0, 0), ctx); in emit_atomic()
522 emit_zext_32(rs, ctx); in emit_atomic()
525 emit(is64 ? rv_amoand_d(rs, rs, rd, 0, 0) : in emit_atomic()
526 rv_amoand_w(rs, rs, rd, 0, 0), ctx); in emit_atomic()
528 emit_zext_32(rs, ctx); in emit_atomic()
531 emit(is64 ? rv_amoor_d(rs, rs, rd, 0, 0) : in emit_atomic()
532 rv_amoor_w(rs, rs, rd, 0, 0), ctx); in emit_atomic()
534 emit_zext_32(rs, ctx); in emit_atomic()
537 emit(is64 ? rv_amoxor_d(rs, rs, rd, 0, 0) : in emit_atomic()
538 rv_amoxor_w(rs, rs, rd, 0, 0), ctx); in emit_atomic()
540 emit_zext_32(rs, ctx); in emit_atomic()
544 emit(is64 ? rv_amoswap_d(rs, rs, rd, 0, 0) : in emit_atomic()
545 rv_amoswap_w(rs, rs, rd, 0, 0), ctx); in emit_atomic()
547 emit_zext_32(rs, ctx); in emit_atomic()
558 emit(is64 ? rv_sc_d(RV_REG_T3, rs, rd, 0, 0) : in emit_atomic()
559 rv_sc_w(RV_REG_T3, rs, rd, 0, 0), ctx); in emit_atomic()
1082 u8 rd = -1, rs = -1, code = insn->code; in bpf_jit_emit_insn() local
1086 init_regs(&rd, &rs, insn, ctx); in bpf_jit_emit_insn()
1099 emit_mv(rd, rs, ctx); in bpf_jit_emit_insn()
1103 emit_slli(RV_REG_T1, rs, 64 - insn->off, ctx); in bpf_jit_emit_insn()
1107 emit_addiw(rd, rs, 0, ctx); in bpf_jit_emit_insn()
1117 emit_add(rd, rd, rs, ctx); in bpf_jit_emit_insn()
1124 emit_sub(rd, rd, rs, ctx); in bpf_jit_emit_insn()
1126 emit_subw(rd, rd, rs, ctx); in bpf_jit_emit_insn()
1133 emit_and(rd, rd, rs, ctx); in bpf_jit_emit_insn()
1139 emit_or(rd, rd, rs, ctx); in bpf_jit_emit_insn()
1145 emit_xor(rd, rd, rs, ctx); in bpf_jit_emit_insn()
1151 emit(is64 ? rv_mul(rd, rd, rs) : rv_mulw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1158 emit(is64 ? rv_div(rd, rd, rs) : rv_divw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1160 emit(is64 ? rv_divu(rd, rd, rs) : rv_divuw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1167 emit(is64 ? rv_rem(rd, rd, rs) : rv_remw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1169 emit(is64 ? rv_remu(rd, rd, rs) : rv_remuw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1175 emit(is64 ? rv_sll(rd, rd, rs) : rv_sllw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1181 emit(is64 ? rv_srl(rd, rd, rs) : rv_srlw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1187 emit(is64 ? rv_sra(rd, rd, rs) : rv_sraw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1429 emit_sext_32_rd_rs(&rd, &rs, ctx); in bpf_jit_emit_insn()
1431 emit_zext_32_rd_rs(&rd, &rs, ctx); in bpf_jit_emit_insn()
1441 emit_and(RV_REG_T1, rd, rs, ctx); in bpf_jit_emit_insn()
1445 emit_branch(BPF_OP(code), rd, rs, rvoff, ctx); in bpf_jit_emit_insn()
1474 rs = RV_REG_T1; in bpf_jit_emit_insn()
1477 rs = RV_REG_ZERO; in bpf_jit_emit_insn()
1489 emit_branch(BPF_OP(code), rd, rs, rvoff, ctx); in bpf_jit_emit_insn()
1597 emit(rv_lb(rd, off, rs), ctx); in bpf_jit_emit_insn()
1599 emit(rv_lbu(rd, off, rs), ctx); in bpf_jit_emit_insn()
1605 emit_add(RV_REG_T1, RV_REG_T1, rs, ctx); in bpf_jit_emit_insn()
1617 emit(rv_lh(rd, off, rs), ctx); in bpf_jit_emit_insn()
1619 emit(rv_lhu(rd, off, rs), ctx); in bpf_jit_emit_insn()
1625 emit_add(RV_REG_T1, RV_REG_T1, rs, ctx); in bpf_jit_emit_insn()
1637 emit(rv_lw(rd, off, rs), ctx); in bpf_jit_emit_insn()
1639 emit(rv_lwu(rd, off, rs), ctx); in bpf_jit_emit_insn()
1645 emit_add(RV_REG_T1, RV_REG_T1, rs, ctx); in bpf_jit_emit_insn()
1656 emit_ld(rd, off, rs, ctx); in bpf_jit_emit_insn()
1662 emit_add(RV_REG_T1, RV_REG_T1, rs, ctx); in bpf_jit_emit_insn()
1731 emit(rv_sb(rd, off, rs), ctx); in bpf_jit_emit_insn()
1737 emit(rv_sb(RV_REG_T1, 0, rs), ctx); in bpf_jit_emit_insn()
1741 emit(rv_sh(rd, off, rs), ctx); in bpf_jit_emit_insn()
1747 emit(rv_sh(RV_REG_T1, 0, rs), ctx); in bpf_jit_emit_insn()
1751 emit_sw(rd, off, rs, ctx); in bpf_jit_emit_insn()
1757 emit_sw(RV_REG_T1, 0, rs, ctx); in bpf_jit_emit_insn()
1761 emit_sd(rd, off, rs, ctx); in bpf_jit_emit_insn()
1767 emit_sd(RV_REG_T1, 0, rs, ctx); in bpf_jit_emit_insn()
1771 emit_atomic(rd, rs, off, imm, in bpf_jit_emit_insn()