Lines Matching full:rs

226 static void emit_bcc(u8 cond, u8 rd, u8 rs, int rvoff,  in emit_bcc()  argument
231 emit(rv_beq(rd, rs, rvoff >> 1), ctx); in emit_bcc()
234 emit(rv_bltu(rs, rd, rvoff >> 1), ctx); in emit_bcc()
237 emit(rv_bltu(rd, rs, rvoff >> 1), ctx); in emit_bcc()
240 emit(rv_bgeu(rd, rs, rvoff >> 1), ctx); in emit_bcc()
243 emit(rv_bgeu(rs, rd, rvoff >> 1), ctx); in emit_bcc()
246 emit(rv_bne(rd, rs, rvoff >> 1), ctx); in emit_bcc()
249 emit(rv_blt(rs, rd, rvoff >> 1), ctx); in emit_bcc()
252 emit(rv_blt(rd, rs, rvoff >> 1), ctx); in emit_bcc()
255 emit(rv_bge(rd, rs, rvoff >> 1), ctx); in emit_bcc()
258 emit(rv_bge(rs, rd, rvoff >> 1), ctx); in emit_bcc()
262 static void emit_branch(u8 cond, u8 rd, u8 rs, int rvoff, in emit_branch() argument
268 emit_bcc(cond, rd, rs, rvoff, ctx); in emit_branch()
276 * bne rd,rs,foo in emit_branch()
278 * beq rd,rs,<.L1> in emit_branch()
285 emit_bcc(cond, rd, rs, 8, ctx); in emit_branch()
296 emit_bcc(cond, rd, rs, 12, ctx); in emit_branch()
359 static void init_regs(u8 *rd, u8 *rs, const struct bpf_insn *insn, in init_regs() argument
377 *rs = bpf_to_rv_reg(insn->src_reg, ctx); in init_regs()
380 static void emit_zext_32_rd_rs(u8 *rd, u8 *rs, struct rv_jit_context *ctx) in emit_zext_32_rd_rs() argument
384 emit_mv(RV_REG_T1, *rs, ctx); in emit_zext_32_rd_rs()
387 *rs = RV_REG_T1; in emit_zext_32_rd_rs()
390 static void emit_sext_32_rd_rs(u8 *rd, u8 *rs, struct rv_jit_context *ctx) in emit_sext_32_rd_rs() argument
393 emit_addiw(RV_REG_T1, *rs, 0, ctx); in emit_sext_32_rd_rs()
395 *rs = RV_REG_T1; in emit_sext_32_rd_rs()
458 static void emit_atomic(u8 rd, u8 rs, s16 off, s32 imm, bool is64, in emit_atomic() argument
477 emit(is64 ? rv_amoadd_d(RV_REG_ZERO, rs, rd, 0, 0) : in emit_atomic()
478 rv_amoadd_w(RV_REG_ZERO, rs, rd, 0, 0), ctx); in emit_atomic()
481 emit(is64 ? rv_amoand_d(RV_REG_ZERO, rs, rd, 0, 0) : in emit_atomic()
482 rv_amoand_w(RV_REG_ZERO, rs, rd, 0, 0), ctx); in emit_atomic()
485 emit(is64 ? rv_amoor_d(RV_REG_ZERO, rs, rd, 0, 0) : in emit_atomic()
486 rv_amoor_w(RV_REG_ZERO, rs, rd, 0, 0), ctx); in emit_atomic()
489 emit(is64 ? rv_amoxor_d(RV_REG_ZERO, rs, rd, 0, 0) : in emit_atomic()
490 rv_amoxor_w(RV_REG_ZERO, rs, rd, 0, 0), ctx); in emit_atomic()
494 emit(is64 ? rv_amoadd_d(rs, rs, rd, 0, 0) : in emit_atomic()
495 rv_amoadd_w(rs, rs, rd, 0, 0), ctx); in emit_atomic()
497 emit_zext_32(rs, ctx); in emit_atomic()
500 emit(is64 ? rv_amoand_d(rs, rs, rd, 0, 0) : in emit_atomic()
501 rv_amoand_w(rs, rs, rd, 0, 0), ctx); in emit_atomic()
503 emit_zext_32(rs, ctx); in emit_atomic()
506 emit(is64 ? rv_amoor_d(rs, rs, rd, 0, 0) : in emit_atomic()
507 rv_amoor_w(rs, rs, rd, 0, 0), ctx); in emit_atomic()
509 emit_zext_32(rs, ctx); in emit_atomic()
512 emit(is64 ? rv_amoxor_d(rs, rs, rd, 0, 0) : in emit_atomic()
513 rv_amoxor_w(rs, rs, rd, 0, 0), ctx); in emit_atomic()
515 emit_zext_32(rs, ctx); in emit_atomic()
519 emit(is64 ? rv_amoswap_d(rs, rs, rd, 0, 0) : in emit_atomic()
520 rv_amoswap_w(rs, rs, rd, 0, 0), ctx); in emit_atomic()
522 emit_zext_32(rs, ctx); in emit_atomic()
533 emit(is64 ? rv_sc_d(RV_REG_T3, rs, rd, 0, 0) : in emit_atomic()
534 rv_sc_w(RV_REG_T3, rs, rd, 0, 0), ctx); in emit_atomic()
613 u8 rd = -1, rs = -1, code = insn->code; in bpf_jit_emit_insn() local
617 init_regs(&rd, &rs, insn, ctx); in bpf_jit_emit_insn()
628 emit_mv(rd, rs, ctx); in bpf_jit_emit_insn()
636 emit_add(rd, rd, rs, ctx); in bpf_jit_emit_insn()
643 emit_sub(rd, rd, rs, ctx); in bpf_jit_emit_insn()
645 emit_subw(rd, rd, rs, ctx); in bpf_jit_emit_insn()
652 emit_and(rd, rd, rs, ctx); in bpf_jit_emit_insn()
658 emit_or(rd, rd, rs, ctx); in bpf_jit_emit_insn()
664 emit_xor(rd, rd, rs, ctx); in bpf_jit_emit_insn()
670 emit(is64 ? rv_mul(rd, rd, rs) : rv_mulw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
676 emit(is64 ? rv_divu(rd, rd, rs) : rv_divuw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
682 emit(is64 ? rv_remu(rd, rd, rs) : rv_remuw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
688 emit(is64 ? rv_sll(rd, rd, rs) : rv_sllw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
694 emit(is64 ? rv_srl(rd, rd, rs) : rv_srlw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
700 emit(is64 ? rv_sra(rd, rd, rs) : rv_sraw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
929 emit_sext_32_rd_rs(&rd, &rs, ctx); in bpf_jit_emit_insn()
931 emit_zext_32_rd_rs(&rd, &rs, ctx); in bpf_jit_emit_insn()
941 emit_and(RV_REG_T1, rd, rs, ctx); in bpf_jit_emit_insn()
945 emit_branch(BPF_OP(code), rd, rs, rvoff, ctx); in bpf_jit_emit_insn()
974 rs = RV_REG_T1; in bpf_jit_emit_insn()
977 rs = RV_REG_ZERO; in bpf_jit_emit_insn()
989 emit_branch(BPF_OP(code), rd, rs, rvoff, ctx); in bpf_jit_emit_insn()
1073 emit(rv_lbu(rd, off, rs), ctx); in bpf_jit_emit_insn()
1079 emit_add(RV_REG_T1, RV_REG_T1, rs, ctx); in bpf_jit_emit_insn()
1089 emit(rv_lhu(rd, off, rs), ctx); in bpf_jit_emit_insn()
1095 emit_add(RV_REG_T1, RV_REG_T1, rs, ctx); in bpf_jit_emit_insn()
1105 emit(rv_lwu(rd, off, rs), ctx); in bpf_jit_emit_insn()
1111 emit_add(RV_REG_T1, RV_REG_T1, rs, ctx); in bpf_jit_emit_insn()
1121 emit_ld(rd, off, rs, ctx); in bpf_jit_emit_insn()
1127 emit_add(RV_REG_T1, RV_REG_T1, rs, ctx); in bpf_jit_emit_insn()
1193 emit(rv_sb(rd, off, rs), ctx); in bpf_jit_emit_insn()
1199 emit(rv_sb(RV_REG_T1, 0, rs), ctx); in bpf_jit_emit_insn()
1203 emit(rv_sh(rd, off, rs), ctx); in bpf_jit_emit_insn()
1209 emit(rv_sh(RV_REG_T1, 0, rs), ctx); in bpf_jit_emit_insn()
1213 emit_sw(rd, off, rs, ctx); in bpf_jit_emit_insn()
1219 emit_sw(RV_REG_T1, 0, rs, ctx); in bpf_jit_emit_insn()
1223 emit_sd(rd, off, rs, ctx); in bpf_jit_emit_insn()
1229 emit_sd(RV_REG_T1, 0, rs, ctx); in bpf_jit_emit_insn()
1233 emit_atomic(rd, rs, off, imm, in bpf_jit_emit_insn()