Lines Matching refs:dst
405 int dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in gen_imm_insn() local
407 if (dst < 0) in gen_imm_insn()
408 return dst; in gen_imm_insn()
444 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in gen_imm_insn()
450 emit_instr(ctx, sll, dst, dst, 0); in gen_imm_insn()
456 emit_instr(ctx, daddiu, dst, MIPS_R_ZERO, insn->imm); in gen_imm_insn()
460 emit_instr(ctx, andi, dst, dst, insn->imm); in gen_imm_insn()
464 emit_instr(ctx, ori, dst, dst, insn->imm); in gen_imm_insn()
468 emit_instr(ctx, xori, dst, dst, insn->imm); in gen_imm_insn()
471 emit_instr(ctx, daddiu, dst, dst, insn->imm); in gen_imm_insn()
474 emit_instr(ctx, daddiu, dst, dst, -insn->imm); in gen_imm_insn()
477 emit_instr(ctx, dsrl_safe, dst, dst, insn->imm & 0x3f); in gen_imm_insn()
480 emit_instr(ctx, srl, dst, dst, insn->imm & 0x1f); in gen_imm_insn()
483 emit_instr(ctx, dsll_safe, dst, dst, insn->imm & 0x3f); in gen_imm_insn()
486 emit_instr(ctx, sll, dst, dst, insn->imm & 0x1f); in gen_imm_insn()
489 emit_instr(ctx, dsra_safe, dst, dst, insn->imm & 0x3f); in gen_imm_insn()
492 emit_instr(ctx, sra, dst, dst, insn->imm & 0x1f); in gen_imm_insn()
495 emit_instr(ctx, addiu, dst, MIPS_R_ZERO, insn->imm); in gen_imm_insn()
498 emit_instr(ctx, addiu, dst, dst, insn->imm); in gen_imm_insn()
501 emit_instr(ctx, addiu, dst, dst, -insn->imm); in gen_imm_insn()
509 gen_imm_to_reg(insn, dst, ctx); in gen_imm_insn()
515 emit_instr(ctx, and, dst, dst, MIPS_R_AT); in gen_imm_insn()
519 emit_instr(ctx, or, dst, dst, MIPS_R_AT); in gen_imm_insn()
523 emit_instr(ctx, xor, dst, dst, MIPS_R_AT); in gen_imm_insn()
526 emit_instr(ctx, daddu, dst, dst, MIPS_R_AT); in gen_imm_insn()
529 emit_instr(ctx, dsubu, dst, dst, MIPS_R_AT); in gen_imm_insn()
532 emit_instr(ctx, addu, dst, dst, MIPS_R_AT); in gen_imm_insn()
535 emit_instr(ctx, subu, dst, dst, MIPS_R_AT); in gen_imm_insn()
546 static void emit_const_to_reg(struct jit_ctx *ctx, int dst, u64 value) in emit_const_to_reg() argument
549 emit_instr(ctx, daddiu, dst, MIPS_R_ZERO, (int)value); in emit_const_to_reg()
552 emit_instr(ctx, lui, dst, (s32)(s16)(value >> 16)); in emit_const_to_reg()
553 emit_instr(ctx, ori, dst, dst, (unsigned int)(value & 0xffff)); in emit_const_to_reg()
563 emit_instr(ctx, dsll_safe, dst, dst, needed_shift); in emit_const_to_reg()
568 emit_instr(ctx, lui, dst, (s32)(s16)part); in emit_const_to_reg()
571 emit_instr(ctx, ori, dst, in emit_const_to_reg()
572 seen_part ? dst : MIPS_R_ZERO, in emit_const_to_reg()
640 int src, dst, r, td, ts, mem_off, b_off; in build_one_insn() local
671 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
672 if (dst < 0) in build_one_insn()
673 return dst; in build_one_insn()
675 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in build_one_insn()
679 emit_instr(ctx, dmultu, MIPS_R_AT, dst); in build_one_insn()
680 emit_instr(ctx, mflo, dst); in build_one_insn()
683 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
684 if (dst < 0) in build_one_insn()
685 return dst; in build_one_insn()
687 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in build_one_insn()
688 emit_instr(ctx, dsubu, dst, MIPS_R_ZERO, dst); in build_one_insn()
691 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
692 if (dst < 0) in build_one_insn()
693 return dst; in build_one_insn()
697 emit_instr(ctx, sll, dst, dst, 0); in build_one_insn()
702 emit_instr(ctx, multu, dst, MIPS_R_AT); in build_one_insn()
703 emit_instr(ctx, mflo, dst); in build_one_insn()
706 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
707 if (dst < 0) in build_one_insn()
708 return dst; in build_one_insn()
712 emit_instr(ctx, sll, dst, dst, 0); in build_one_insn()
714 emit_instr(ctx, subu, dst, MIPS_R_ZERO, dst); in build_one_insn()
720 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
721 if (dst < 0) in build_one_insn()
722 return dst; in build_one_insn()
726 emit_instr(ctx, sll, dst, dst, 0); in build_one_insn()
730 emit_instr(ctx, addu, dst, MIPS_R_ZERO, MIPS_R_ZERO); in build_one_insn()
734 emit_instr(ctx, divu, dst, MIPS_R_AT); in build_one_insn()
736 emit_instr(ctx, mflo, dst); in build_one_insn()
738 emit_instr(ctx, mfhi, dst); in build_one_insn()
744 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
745 if (dst < 0) in build_one_insn()
746 return dst; in build_one_insn()
748 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in build_one_insn()
752 emit_instr(ctx, addu, dst, MIPS_R_ZERO, MIPS_R_ZERO); in build_one_insn()
756 emit_instr(ctx, ddivu, dst, MIPS_R_AT); in build_one_insn()
758 emit_instr(ctx, mflo, dst); in build_one_insn()
760 emit_instr(ctx, mfhi, dst); in build_one_insn()
775 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
776 if (src < 0 || dst < 0) in build_one_insn()
779 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in build_one_insn()
783 emit_instr(ctx, daddiu, dst, MIPS_R_SP, MAX_BPF_STACK); in build_one_insn()
793 tmp_reg = dst; in build_one_insn()
803 emit_instr(ctx, daddu, dst, src, MIPS_R_ZERO); in build_one_insn()
806 emit_instr(ctx, daddu, dst, dst, src); in build_one_insn()
809 emit_instr(ctx, dsubu, dst, dst, src); in build_one_insn()
812 emit_instr(ctx, xor, dst, dst, src); in build_one_insn()
815 emit_instr(ctx, or, dst, dst, src); in build_one_insn()
818 emit_instr(ctx, and, dst, dst, src); in build_one_insn()
821 emit_instr(ctx, dmultu, dst, src); in build_one_insn()
822 emit_instr(ctx, mflo, dst); in build_one_insn()
826 emit_instr(ctx, ddivu, dst, src); in build_one_insn()
828 emit_instr(ctx, mflo, dst); in build_one_insn()
830 emit_instr(ctx, mfhi, dst); in build_one_insn()
833 emit_instr(ctx, dsllv, dst, dst, src); in build_one_insn()
836 emit_instr(ctx, dsrlv, dst, dst, src); in build_one_insn()
839 emit_instr(ctx, dsrav, dst, dst, src); in build_one_insn()
858 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
859 if (src < 0 || dst < 0) in build_one_insn()
864 emit_instr(ctx, sll, dst, dst, 0); in build_one_insn()
872 tmp_reg = dst; in build_one_insn()
882 emit_instr(ctx, addu, dst, src, MIPS_R_ZERO); in build_one_insn()
885 emit_instr(ctx, addu, dst, dst, src); in build_one_insn()
888 emit_instr(ctx, subu, dst, dst, src); in build_one_insn()
891 emit_instr(ctx, xor, dst, dst, src); in build_one_insn()
894 emit_instr(ctx, or, dst, dst, src); in build_one_insn()
897 emit_instr(ctx, and, dst, dst, src); in build_one_insn()
900 emit_instr(ctx, mul, dst, dst, src); in build_one_insn()
904 emit_instr(ctx, divu, dst, src); in build_one_insn()
906 emit_instr(ctx, mflo, dst); in build_one_insn()
908 emit_instr(ctx, mfhi, dst); in build_one_insn()
911 emit_instr(ctx, sllv, dst, dst, src); in build_one_insn()
914 emit_instr(ctx, srlv, dst, dst, src); in build_one_insn()
933 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok); in build_one_insn()
934 if (dst < 0) in build_one_insn()
935 return dst; in build_one_insn()
955 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
956 if (src < 0 || dst < 0) in build_one_insn()
964 emit_instr(ctx, sll, MIPS_R_AT, dst, 0); in build_one_insn()
965 dst = MIPS_R_AT; in build_one_insn()
968 emit_instr(ctx, and, MIPS_R_AT, dst, src); in build_one_insn()
970 dst = MIPS_R_AT; in build_one_insn()
973 emit_instr(ctx, dsubu, MIPS_R_AT, dst, src); in build_one_insn()
995 emit_instr(ctx, slt, MIPS_R_AT, dst, src); in build_one_insn()
997 dst = MIPS_R_AT; in build_one_insn()
1001 emit_instr(ctx, dsubu, MIPS_R_T8, dst, src); in build_one_insn()
1002 emit_instr(ctx, sltu, MIPS_R_AT, dst, src); in build_one_insn()
1008 dst = MIPS_R_AT; in build_one_insn()
1011 emit_instr(ctx, sltu, MIPS_R_AT, dst, src); in build_one_insn()
1013 dst = MIPS_R_AT; in build_one_insn()
1040 emit_instr(ctx, bne, dst, src, b_off); in build_one_insn()
1042 emit_instr(ctx, beq, dst, src, b_off); in build_one_insn()
1064 emit_instr(ctx, beq, dst, src, b_off); in build_one_insn()
1066 emit_instr(ctx, bne, dst, src, b_off); in build_one_insn()
1078 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok); in build_one_insn()
1079 if (dst < 0) in build_one_insn()
1080 return dst; in build_one_insn()
1089 emit_instr(ctx, blez, dst, b_off); in build_one_insn()
1092 emit_instr(ctx, bltz, dst, b_off); in build_one_insn()
1095 emit_instr(ctx, bgez, dst, b_off); in build_one_insn()
1098 emit_instr(ctx, bgtz, dst, b_off); in build_one_insn()
1109 emit_instr(ctx, bgtz, dst, b_off); in build_one_insn()
1112 emit_instr(ctx, bgez, dst, b_off); in build_one_insn()
1115 emit_instr(ctx, bltz, dst, b_off); in build_one_insn()
1118 emit_instr(ctx, blez, dst, b_off); in build_one_insn()
1137 emit_instr(ctx, slti, MIPS_R_AT, dst, (int)t64s); in build_one_insn()
1139 dst = MIPS_R_ZERO; in build_one_insn()
1143 emit_instr(ctx, slt, MIPS_R_AT, dst, MIPS_R_AT); in build_one_insn()
1145 dst = MIPS_R_ZERO; in build_one_insn()
1153 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok); in build_one_insn()
1154 if (dst < 0) in build_one_insn()
1155 return dst; in build_one_insn()
1170 emit_instr(ctx, sltu, MIPS_R_AT, dst, MIPS_R_AT); in build_one_insn()
1172 dst = MIPS_R_ZERO; in build_one_insn()
1176 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok); in build_one_insn()
1177 if (dst < 0) in build_one_insn()
1178 return dst; in build_one_insn()
1185 emit_instr(ctx, bbit0, dst, ffs((u32)insn->imm) - 1, b_off); in build_one_insn()
1192 emit_instr(ctx, bbit1, dst, ffs((u32)insn->imm) - 1, b_off); in build_one_insn()
1198 emit_instr(ctx, and, MIPS_R_AT, dst, MIPS_R_AT); in build_one_insn()
1200 dst = MIPS_R_ZERO; in build_one_insn()
1223 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1224 if (dst < 0) in build_one_insn()
1225 return dst; in build_one_insn()
1227 emit_const_to_reg(ctx, dst, t64); in build_one_insn()
1246 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1247 if (dst < 0) in build_one_insn()
1248 return dst; in build_one_insn()
1251 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in build_one_insn()
1256 emit_instr(ctx, sll, dst, dst, 0); in build_one_insn()
1266 emit_instr(ctx, wsbh, dst, dst); in build_one_insn()
1267 emit_instr(ctx, andi, dst, dst, 0xffff); in build_one_insn()
1270 emit_instr(ctx, wsbh, dst, dst); in build_one_insn()
1271 emit_instr(ctx, rotr, dst, dst, 16); in build_one_insn()
1275 emit_instr(ctx, dsbh, dst, dst); in build_one_insn()
1276 emit_instr(ctx, dshd, dst, dst); in build_one_insn()
1287 dst = MIPS_R_SP; in build_one_insn()
1290 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1291 if (dst < 0) in build_one_insn()
1292 return dst; in build_one_insn()
1298 emit_instr(ctx, sb, MIPS_R_AT, mem_off, dst); in build_one_insn()
1301 emit_instr(ctx, sh, MIPS_R_AT, mem_off, dst); in build_one_insn()
1304 emit_instr(ctx, sw, MIPS_R_AT, mem_off, dst); in build_one_insn()
1307 emit_instr(ctx, sd, MIPS_R_AT, mem_off, dst); in build_one_insn()
1326 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1327 if (dst < 0) in build_one_insn()
1328 return dst; in build_one_insn()
1331 emit_instr(ctx, lbu, dst, mem_off, src); in build_one_insn()
1334 emit_instr(ctx, lhu, dst, mem_off, src); in build_one_insn()
1337 emit_instr(ctx, lw, dst, mem_off, src); in build_one_insn()
1340 emit_instr(ctx, ld, dst, mem_off, src); in build_one_insn()
1353 dst = MIPS_R_SP; in build_one_insn()
1356 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1357 if (dst < 0) in build_one_insn()
1358 return dst; in build_one_insn()
1371 emit_instr(ctx, ll, MIPS_R_T8, mem_off, dst); in build_one_insn()
1373 emit_instr(ctx, sc, MIPS_R_T8, mem_off, dst); in build_one_insn()
1387 emit_instr(ctx, lld, MIPS_R_T8, mem_off, dst); in build_one_insn()
1389 emit_instr(ctx, scd, MIPS_R_T8, mem_off, dst); in build_one_insn()
1397 emit_instr(ctx, sb, src, mem_off, dst); in build_one_insn()
1400 emit_instr(ctx, sh, src, mem_off, dst); in build_one_insn()
1403 emit_instr(ctx, sw, src, mem_off, dst); in build_one_insn()
1411 emit_instr(ctx, sd, src, mem_off, dst); in build_one_insn()