Lines Matching full:rs

278 static void emit_bcc(u8 cond, u8 rd, u8 rs, int rvoff,  in emit_bcc()  argument
283 emit(rv_beq(rd, rs, rvoff >> 1), ctx); in emit_bcc()
286 emit(rv_bltu(rs, rd, rvoff >> 1), ctx); in emit_bcc()
289 emit(rv_bltu(rd, rs, rvoff >> 1), ctx); in emit_bcc()
292 emit(rv_bgeu(rd, rs, rvoff >> 1), ctx); in emit_bcc()
295 emit(rv_bgeu(rs, rd, rvoff >> 1), ctx); in emit_bcc()
298 emit(rv_bne(rd, rs, rvoff >> 1), ctx); in emit_bcc()
301 emit(rv_blt(rs, rd, rvoff >> 1), ctx); in emit_bcc()
304 emit(rv_blt(rd, rs, rvoff >> 1), ctx); in emit_bcc()
307 emit(rv_bge(rd, rs, rvoff >> 1), ctx); in emit_bcc()
310 emit(rv_bge(rs, rd, rvoff >> 1), ctx); in emit_bcc()
314 static void emit_branch(u8 cond, u8 rd, u8 rs, int rvoff, in emit_branch() argument
320 emit_bcc(cond, rd, rs, rvoff, ctx); in emit_branch()
328 * bne rd,rs,foo in emit_branch()
330 * beq rd,rs,<.L1> in emit_branch()
337 emit_bcc(cond, rd, rs, 8, ctx); in emit_branch()
348 emit_bcc(cond, rd, rs, 12, ctx); in emit_branch()
404 static void init_regs(u8 *rd, u8 *rs, const struct bpf_insn *insn, in init_regs() argument
422 *rs = bpf_to_rv_reg(insn->src_reg, ctx); in init_regs()
474 static void emit_atomic(u8 rd, u8 rs, s16 off, s32 imm, bool is64, in emit_atomic() argument
493 emit(is64 ? rv_amoadd_d(RV_REG_ZERO, rs, rd, 0, 0) : in emit_atomic()
494 rv_amoadd_w(RV_REG_ZERO, rs, rd, 0, 0), ctx); in emit_atomic()
497 emit(is64 ? rv_amoand_d(RV_REG_ZERO, rs, rd, 0, 0) : in emit_atomic()
498 rv_amoand_w(RV_REG_ZERO, rs, rd, 0, 0), ctx); in emit_atomic()
501 emit(is64 ? rv_amoor_d(RV_REG_ZERO, rs, rd, 0, 0) : in emit_atomic()
502 rv_amoor_w(RV_REG_ZERO, rs, rd, 0, 0), ctx); in emit_atomic()
505 emit(is64 ? rv_amoxor_d(RV_REG_ZERO, rs, rd, 0, 0) : in emit_atomic()
506 rv_amoxor_w(RV_REG_ZERO, rs, rd, 0, 0), ctx); in emit_atomic()
510 emit(is64 ? rv_amoadd_d(rs, rs, rd, 1, 1) : in emit_atomic()
511 rv_amoadd_w(rs, rs, rd, 1, 1), ctx); in emit_atomic()
513 emit_zextw(rs, rs, ctx); in emit_atomic()
516 emit(is64 ? rv_amoand_d(rs, rs, rd, 1, 1) : in emit_atomic()
517 rv_amoand_w(rs, rs, rd, 1, 1), ctx); in emit_atomic()
519 emit_zextw(rs, rs, ctx); in emit_atomic()
522 emit(is64 ? rv_amoor_d(rs, rs, rd, 1, 1) : in emit_atomic()
523 rv_amoor_w(rs, rs, rd, 1, 1), ctx); in emit_atomic()
525 emit_zextw(rs, rs, ctx); in emit_atomic()
528 emit(is64 ? rv_amoxor_d(rs, rs, rd, 1, 1) : in emit_atomic()
529 rv_amoxor_w(rs, rs, rd, 1, 1), ctx); in emit_atomic()
531 emit_zextw(rs, rs, ctx); in emit_atomic()
535 emit(is64 ? rv_amoswap_d(rs, rs, rd, 1, 1) : in emit_atomic()
536 rv_amoswap_w(rs, rs, rd, 1, 1), ctx); in emit_atomic()
538 emit_zextw(rs, rs, ctx); in emit_atomic()
551 emit(is64 ? rv_sc_d(RV_REG_T3, rs, rd, 0, 0) : in emit_atomic()
552 rv_sc_w(RV_REG_T3, rs, rd, 0, 0), ctx); in emit_atomic()
1128 u8 rd = -1, rs = -1, code = insn->code; in bpf_jit_emit_insn() local
1132 init_regs(&rd, &rs, insn, ctx); in bpf_jit_emit_insn()
1139 emit_mv(RV_REG_T1, rs, ctx); in bpf_jit_emit_insn()
1147 if (rd != rs) in bpf_jit_emit_insn()
1148 emit_mv(rd, rs, ctx); in bpf_jit_emit_insn()
1170 emit_mv(rd, rs, ctx); in bpf_jit_emit_insn()
1173 emit_sextb(rd, rs, ctx); in bpf_jit_emit_insn()
1176 emit_sexth(rd, rs, ctx); in bpf_jit_emit_insn()
1179 emit_sextw(rd, rs, ctx); in bpf_jit_emit_insn()
1189 emit_add(rd, rd, rs, ctx); in bpf_jit_emit_insn()
1196 emit_sub(rd, rd, rs, ctx); in bpf_jit_emit_insn()
1198 emit_subw(rd, rd, rs, ctx); in bpf_jit_emit_insn()
1205 emit_and(rd, rd, rs, ctx); in bpf_jit_emit_insn()
1211 emit_or(rd, rd, rs, ctx); in bpf_jit_emit_insn()
1217 emit_xor(rd, rd, rs, ctx); in bpf_jit_emit_insn()
1223 emit(is64 ? rv_mul(rd, rd, rs) : rv_mulw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1230 emit(is64 ? rv_div(rd, rd, rs) : rv_divw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1232 emit(is64 ? rv_divu(rd, rd, rs) : rv_divuw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1239 emit(is64 ? rv_rem(rd, rd, rs) : rv_remw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1241 emit(is64 ? rv_remu(rd, rd, rs) : rv_remuw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1247 emit(is64 ? rv_sll(rd, rd, rs) : rv_sllw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1253 emit(is64 ? rv_srl(rd, rd, rs) : rv_srlw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1259 emit(is64 ? rv_sra(rd, rd, rs) : rv_sraw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
1455 emit_sextw_alt(&rs, RV_REG_T1, ctx); in bpf_jit_emit_insn()
1458 emit_zextw_alt(&rs, RV_REG_T1, ctx); in bpf_jit_emit_insn()
1470 emit_and(RV_REG_T1, rd, rs, ctx); in bpf_jit_emit_insn()
1473 emit_branch(BPF_OP(code), rd, rs, rvoff, ctx); in bpf_jit_emit_insn()
1502 rs = imm ? RV_REG_T1 : RV_REG_ZERO; in bpf_jit_emit_insn()
1506 /* rs has been sign extended */ in bpf_jit_emit_insn()
1510 emit_zextw(rs, rs, ctx); in bpf_jit_emit_insn()
1517 emit_branch(BPF_OP(code), rd, rs, rvoff, ctx); in bpf_jit_emit_insn()
1658 emit_add(RV_REG_T2, rs, RV_REG_ARENA, ctx); in bpf_jit_emit_insn()
1659 rs = RV_REG_T2; in bpf_jit_emit_insn()
1667 emit(rv_lb(rd, off, rs), ctx); in bpf_jit_emit_insn()
1669 emit(rv_lbu(rd, off, rs), ctx); in bpf_jit_emit_insn()
1675 emit_add(RV_REG_T1, RV_REG_T1, rs, ctx); in bpf_jit_emit_insn()
1687 emit(rv_lh(rd, off, rs), ctx); in bpf_jit_emit_insn()
1689 emit(rv_lhu(rd, off, rs), ctx); in bpf_jit_emit_insn()
1695 emit_add(RV_REG_T1, RV_REG_T1, rs, ctx); in bpf_jit_emit_insn()
1707 emit(rv_lw(rd, off, rs), ctx); in bpf_jit_emit_insn()
1709 emit(rv_lwu(rd, off, rs), ctx); in bpf_jit_emit_insn()
1715 emit_add(RV_REG_T1, RV_REG_T1, rs, ctx); in bpf_jit_emit_insn()
1726 emit_ld(rd, off, rs, ctx); in bpf_jit_emit_insn()
1732 emit_add(RV_REG_T1, RV_REG_T1, rs, ctx); in bpf_jit_emit_insn()
1881 emit(rv_sb(rd, off, rs), ctx); in bpf_jit_emit_insn()
1887 emit(rv_sb(RV_REG_T1, 0, rs), ctx); in bpf_jit_emit_insn()
1891 emit(rv_sh(rd, off, rs), ctx); in bpf_jit_emit_insn()
1897 emit(rv_sh(RV_REG_T1, 0, rs), ctx); in bpf_jit_emit_insn()
1901 emit_sw(rd, off, rs, ctx); in bpf_jit_emit_insn()
1907 emit_sw(RV_REG_T1, 0, rs, ctx); in bpf_jit_emit_insn()
1911 emit_sd(rd, off, rs, ctx); in bpf_jit_emit_insn()
1917 emit_sd(RV_REG_T1, 0, rs, ctx); in bpf_jit_emit_insn()
1921 emit_atomic(rd, rs, off, imm, in bpf_jit_emit_insn()
1939 emit(rv_sb(rd, off, rs), ctx); in bpf_jit_emit_insn()
1947 emit(rv_sb(RV_REG_T1, 0, rs), ctx); in bpf_jit_emit_insn()
1953 emit(rv_sh(rd, off, rs), ctx); in bpf_jit_emit_insn()
1961 emit(rv_sh(RV_REG_T1, 0, rs), ctx); in bpf_jit_emit_insn()
1967 emit_sw(rd, off, rs, ctx); in bpf_jit_emit_insn()
1975 emit_sw(RV_REG_T1, 0, rs, ctx); in bpf_jit_emit_insn()
1981 emit_sd(rd, off, rs, ctx); in bpf_jit_emit_insn()
1989 emit_sd(RV_REG_T1, 0, rs, ctx); in bpf_jit_emit_insn()