Lines Matching refs:rd

139 static void emit_imm(u8 rd, s64 val, struct rv_jit_context *ctx)  in emit_imm()  argument
160 emit_lui(rd, upper, ctx); in emit_imm()
163 emit_li(rd, lower, ctx); in emit_imm()
167 emit_addiw(rd, rd, lower, ctx); in emit_imm()
175 emit_imm(rd, upper, ctx); in emit_imm()
177 emit_slli(rd, rd, shift, ctx); in emit_imm()
179 emit_addi(rd, rd, lower, ctx); in emit_imm()
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()
285 emit_bcc(cond, rd, rs, 8, ctx); in emit_branch()
296 emit_bcc(cond, rd, rs, 12, ctx); in emit_branch()
360 static void init_regs(u8 *rd, u8 *rs, const struct bpf_insn *insn, in init_regs() argument
372 *rd = bpf_to_rv_reg(insn->dst_reg, ctx); in init_regs()
381 static void emit_zext_32_rd_rs(u8 *rd, u8 *rs, struct rv_jit_context *ctx) in emit_zext_32_rd_rs() argument
383 emit_mv(RV_REG_T2, *rd, ctx); in emit_zext_32_rd_rs()
387 *rd = RV_REG_T2; in emit_zext_32_rd_rs()
391 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_T2, *rd, 0, ctx); in emit_sext_32_rd_rs()
395 *rd = RV_REG_T2; in emit_sext_32_rd_rs()
399 static void emit_zext_32_rd_t1(u8 *rd, struct rv_jit_context *ctx) in emit_zext_32_rd_t1() argument
401 emit_mv(RV_REG_T2, *rd, ctx); in emit_zext_32_rd_t1()
404 *rd = RV_REG_T2; in emit_zext_32_rd_t1()
407 static void emit_sext_32_rd(u8 *rd, struct rv_jit_context *ctx) in emit_sext_32_rd() argument
409 emit_addiw(RV_REG_T2, *rd, 0, ctx); in emit_sext_32_rd()
410 *rd = RV_REG_T2; in emit_sext_32_rd()
413 static int emit_jump_and_link(u8 rd, s64 rvoff, bool force_jalr, in emit_jump_and_link() argument
419 emit(rv_jal(rd, rvoff >> 1), ctx); in emit_jump_and_link()
425 emit(rv_jalr(rd, RV_REG_T1, lower), ctx); in emit_jump_and_link()
443 u8 rd; in emit_call() local
454 rd = bpf_to_rv_reg(BPF_REG_0, ctx); in emit_call()
455 emit_mv(rd, RV_REG_A0, ctx); in emit_call()
531 u8 rd = -1, rs = -1, code = insn->code; in bpf_jit_emit_insn() local
535 init_regs(&rd, &rs, insn, ctx); in bpf_jit_emit_insn()
543 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
546 emit_mv(rd, rs, ctx); in bpf_jit_emit_insn()
548 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
554 emit_add(rd, rd, rs, ctx); in bpf_jit_emit_insn()
556 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
561 emit_sub(rd, rd, rs, ctx); in bpf_jit_emit_insn()
563 emit_subw(rd, rd, rs, ctx); in bpf_jit_emit_insn()
566 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
570 emit_and(rd, rd, rs, ctx); in bpf_jit_emit_insn()
572 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
576 emit_or(rd, rd, rs, ctx); in bpf_jit_emit_insn()
578 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
582 emit_xor(rd, rd, rs, ctx); in bpf_jit_emit_insn()
584 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
588 emit(is64 ? rv_mul(rd, rd, rs) : rv_mulw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
590 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
594 emit(is64 ? rv_divu(rd, rd, rs) : rv_divuw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
596 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
600 emit(is64 ? rv_remu(rd, rd, rs) : rv_remuw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
602 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
606 emit(is64 ? rv_sll(rd, rd, rs) : rv_sllw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
608 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
612 emit(is64 ? rv_srl(rd, rd, rs) : rv_srlw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
614 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
618 emit(is64 ? rv_sra(rd, rd, rs) : rv_sraw(rd, rd, rs), ctx); in bpf_jit_emit_insn()
620 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
626 emit_sub(rd, RV_REG_ZERO, rd, ctx); in bpf_jit_emit_insn()
628 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
635 emit_slli(rd, rd, 48, ctx); in bpf_jit_emit_insn()
636 emit_srli(rd, rd, 48, ctx); in bpf_jit_emit_insn()
640 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
651 emit_andi(RV_REG_T1, rd, 0xff, ctx); in bpf_jit_emit_insn()
654 emit_srli(rd, rd, 8, ctx); in bpf_jit_emit_insn()
658 emit_andi(RV_REG_T1, rd, 0xff, ctx); in bpf_jit_emit_insn()
661 emit_srli(rd, rd, 8, ctx); in bpf_jit_emit_insn()
663 emit_andi(RV_REG_T1, rd, 0xff, ctx); in bpf_jit_emit_insn()
666 emit_srli(rd, rd, 8, ctx); in bpf_jit_emit_insn()
670 emit_andi(RV_REG_T1, rd, 0xff, ctx); in bpf_jit_emit_insn()
673 emit_srli(rd, rd, 8, ctx); in bpf_jit_emit_insn()
675 emit_andi(RV_REG_T1, rd, 0xff, ctx); in bpf_jit_emit_insn()
678 emit_srli(rd, rd, 8, ctx); in bpf_jit_emit_insn()
680 emit_andi(RV_REG_T1, rd, 0xff, ctx); in bpf_jit_emit_insn()
683 emit_srli(rd, rd, 8, ctx); in bpf_jit_emit_insn()
685 emit_andi(RV_REG_T1, rd, 0xff, ctx); in bpf_jit_emit_insn()
688 emit_srli(rd, rd, 8, ctx); in bpf_jit_emit_insn()
690 emit_andi(RV_REG_T1, rd, 0xff, ctx); in bpf_jit_emit_insn()
693 emit_mv(rd, RV_REG_T2, ctx); in bpf_jit_emit_insn()
699 emit_imm(rd, imm, ctx); in bpf_jit_emit_insn()
701 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
708 emit_addi(rd, rd, imm, ctx); in bpf_jit_emit_insn()
711 emit_add(rd, rd, RV_REG_T1, ctx); in bpf_jit_emit_insn()
714 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
719 emit_addi(rd, rd, -imm, ctx); in bpf_jit_emit_insn()
722 emit_sub(rd, rd, RV_REG_T1, ctx); in bpf_jit_emit_insn()
725 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
730 emit_andi(rd, rd, imm, ctx); in bpf_jit_emit_insn()
733 emit_and(rd, rd, RV_REG_T1, ctx); in bpf_jit_emit_insn()
736 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
741 emit(rv_ori(rd, rd, imm), ctx); in bpf_jit_emit_insn()
744 emit_or(rd, rd, RV_REG_T1, ctx); in bpf_jit_emit_insn()
747 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
752 emit(rv_xori(rd, rd, imm), ctx); in bpf_jit_emit_insn()
755 emit_xor(rd, rd, RV_REG_T1, ctx); in bpf_jit_emit_insn()
758 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
763 emit(is64 ? rv_mul(rd, rd, RV_REG_T1) : in bpf_jit_emit_insn()
764 rv_mulw(rd, rd, RV_REG_T1), ctx); in bpf_jit_emit_insn()
766 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
771 emit(is64 ? rv_divu(rd, rd, RV_REG_T1) : in bpf_jit_emit_insn()
772 rv_divuw(rd, rd, RV_REG_T1), ctx); in bpf_jit_emit_insn()
774 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
779 emit(is64 ? rv_remu(rd, rd, RV_REG_T1) : in bpf_jit_emit_insn()
780 rv_remuw(rd, rd, RV_REG_T1), ctx); in bpf_jit_emit_insn()
782 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
786 emit_slli(rd, rd, imm, ctx); in bpf_jit_emit_insn()
789 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
794 emit_srli(rd, rd, imm, ctx); in bpf_jit_emit_insn()
796 emit(rv_srliw(rd, rd, imm), ctx); in bpf_jit_emit_insn()
799 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
804 emit_srai(rd, rd, imm, ctx); in bpf_jit_emit_insn()
806 emit(rv_sraiw(rd, rd, imm), ctx); in bpf_jit_emit_insn()
809 emit_zext_32(rd, ctx); in bpf_jit_emit_insn()
847 emit_sext_32_rd_rs(&rd, &rs, ctx); in bpf_jit_emit_insn()
849 emit_zext_32_rd_rs(&rd, &rs, ctx); in bpf_jit_emit_insn()
859 emit_and(RV_REG_T1, rd, rs, ctx); in bpf_jit_emit_insn()
863 emit_branch(BPF_OP(code), rd, rs, rvoff, ctx); in bpf_jit_emit_insn()
899 emit_sext_32_rd(&rd, ctx); in bpf_jit_emit_insn()
901 emit_zext_32_rd_t1(&rd, ctx); in bpf_jit_emit_insn()
907 emit_branch(BPF_OP(code), rd, rs, rvoff, ctx); in bpf_jit_emit_insn()
915 emit_andi(RV_REG_T1, rd, imm, ctx); in bpf_jit_emit_insn()
918 emit_and(RV_REG_T1, rd, RV_REG_T1, ctx); in bpf_jit_emit_insn()
971 emit_imm(rd, imm64, ctx); in bpf_jit_emit_insn()
991 emit(rv_lbu(rd, off, rs), ctx); in bpf_jit_emit_insn()
999 emit(rv_lbu(rd, 0, RV_REG_T1), ctx); in bpf_jit_emit_insn()
1007 emit(rv_lhu(rd, off, rs), ctx); in bpf_jit_emit_insn()
1015 emit(rv_lhu(rd, 0, RV_REG_T1), ctx); in bpf_jit_emit_insn()
1023 emit(rv_lwu(rd, off, rs), ctx); in bpf_jit_emit_insn()
1031 emit(rv_lwu(rd, 0, RV_REG_T1), ctx); in bpf_jit_emit_insn()
1039 emit_ld(rd, off, rs, ctx); in bpf_jit_emit_insn()
1047 emit_ld(rd, 0, RV_REG_T1, ctx); in bpf_jit_emit_insn()
1052 ret = add_exception_handler(insn, ctx, rd, insn_len); in bpf_jit_emit_insn()
1065 emit(rv_sb(rd, off, RV_REG_T1), ctx); in bpf_jit_emit_insn()
1070 emit_add(RV_REG_T2, RV_REG_T2, rd, ctx); in bpf_jit_emit_insn()
1077 emit(rv_sh(rd, off, RV_REG_T1), ctx); in bpf_jit_emit_insn()
1082 emit_add(RV_REG_T2, RV_REG_T2, rd, ctx); in bpf_jit_emit_insn()
1088 emit_sw(rd, off, RV_REG_T1, ctx); in bpf_jit_emit_insn()
1093 emit_add(RV_REG_T2, RV_REG_T2, rd, ctx); in bpf_jit_emit_insn()
1099 emit_sd(rd, off, RV_REG_T1, ctx); in bpf_jit_emit_insn()
1104 emit_add(RV_REG_T2, RV_REG_T2, rd, ctx); in bpf_jit_emit_insn()
1111 emit(rv_sb(rd, off, rs), ctx); in bpf_jit_emit_insn()
1116 emit_add(RV_REG_T1, RV_REG_T1, rd, ctx); in bpf_jit_emit_insn()
1121 emit(rv_sh(rd, off, rs), ctx); in bpf_jit_emit_insn()
1126 emit_add(RV_REG_T1, RV_REG_T1, rd, ctx); in bpf_jit_emit_insn()
1131 emit_sw(rd, off, rs, ctx); in bpf_jit_emit_insn()
1136 emit_add(RV_REG_T1, RV_REG_T1, rd, ctx); in bpf_jit_emit_insn()
1141 emit_sd(rd, off, rs, ctx); in bpf_jit_emit_insn()
1146 emit_add(RV_REG_T1, RV_REG_T1, rd, ctx); in bpf_jit_emit_insn()
1163 emit_addi(RV_REG_T1, rd, off, ctx); in bpf_jit_emit_insn()
1166 emit_add(RV_REG_T1, RV_REG_T1, rd, ctx); in bpf_jit_emit_insn()
1169 rd = RV_REG_T1; in bpf_jit_emit_insn()
1173 rv_amoadd_w(RV_REG_ZERO, rs, rd, 0, 0) : in bpf_jit_emit_insn()
1174 rv_amoadd_d(RV_REG_ZERO, rs, rd, 0, 0), ctx); in bpf_jit_emit_insn()