Lines Matching refs:dst

426 	int dst = ebpf_to_mips_reg(ctx, insn, dst_reg);  in gen_imm_insn()  local
428 if (dst < 0) in gen_imm_insn()
429 return dst; in gen_imm_insn()
465 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in gen_imm_insn()
471 emit_instr(ctx, sll, dst, dst, 0); in gen_imm_insn()
477 emit_instr(ctx, daddiu, dst, MIPS_R_ZERO, insn->imm); in gen_imm_insn()
481 emit_instr(ctx, andi, dst, dst, insn->imm); in gen_imm_insn()
485 emit_instr(ctx, ori, dst, dst, insn->imm); in gen_imm_insn()
489 emit_instr(ctx, xori, dst, dst, insn->imm); in gen_imm_insn()
492 emit_instr(ctx, daddiu, dst, dst, insn->imm); in gen_imm_insn()
495 emit_instr(ctx, daddiu, dst, dst, -insn->imm); in gen_imm_insn()
498 emit_instr(ctx, dsrl_safe, dst, dst, insn->imm & 0x3f); in gen_imm_insn()
501 emit_instr(ctx, srl, dst, dst, insn->imm & 0x1f); in gen_imm_insn()
504 emit_instr(ctx, dsll_safe, dst, dst, insn->imm & 0x3f); in gen_imm_insn()
507 emit_instr(ctx, sll, dst, dst, insn->imm & 0x1f); in gen_imm_insn()
510 emit_instr(ctx, dsra_safe, dst, dst, insn->imm & 0x3f); in gen_imm_insn()
513 emit_instr(ctx, sra, dst, dst, insn->imm & 0x1f); in gen_imm_insn()
516 emit_instr(ctx, addiu, dst, MIPS_R_ZERO, insn->imm); in gen_imm_insn()
519 emit_instr(ctx, addiu, dst, dst, insn->imm); in gen_imm_insn()
522 emit_instr(ctx, addiu, dst, dst, -insn->imm); in gen_imm_insn()
530 gen_imm_to_reg(insn, dst, ctx); in gen_imm_insn()
536 emit_instr(ctx, and, dst, dst, MIPS_R_AT); in gen_imm_insn()
540 emit_instr(ctx, or, dst, dst, MIPS_R_AT); in gen_imm_insn()
544 emit_instr(ctx, xor, dst, dst, MIPS_R_AT); in gen_imm_insn()
547 emit_instr(ctx, daddu, dst, dst, MIPS_R_AT); in gen_imm_insn()
550 emit_instr(ctx, dsubu, dst, dst, MIPS_R_AT); in gen_imm_insn()
553 emit_instr(ctx, addu, dst, dst, MIPS_R_AT); in gen_imm_insn()
556 emit_instr(ctx, subu, dst, dst, MIPS_R_AT); in gen_imm_insn()
567 static void emit_const_to_reg(struct jit_ctx *ctx, int dst, u64 value) in emit_const_to_reg() argument
570 emit_instr(ctx, daddiu, dst, MIPS_R_ZERO, (int)value); in emit_const_to_reg()
573 emit_instr(ctx, lui, dst, (s32)(s16)(value >> 16)); in emit_const_to_reg()
574 emit_instr(ctx, ori, dst, dst, (unsigned int)(value & 0xffff)); in emit_const_to_reg()
584 emit_instr(ctx, dsll_safe, dst, dst, needed_shift); in emit_const_to_reg()
589 emit_instr(ctx, lui, dst, (s32)(s16)part); in emit_const_to_reg()
592 emit_instr(ctx, ori, dst, in emit_const_to_reg()
593 seen_part ? dst : MIPS_R_ZERO, in emit_const_to_reg()
662 int src, dst, r, td, ts, mem_off, b_off; in build_one_insn() local
697 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
698 if (dst < 0) in build_one_insn()
699 return dst; in build_one_insn()
701 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in build_one_insn()
706 emit_instr(ctx, dmulu, dst, dst, MIPS_R_AT); in build_one_insn()
708 emit_instr(ctx, dmultu, MIPS_R_AT, dst); in build_one_insn()
709 emit_instr(ctx, mflo, dst); in build_one_insn()
713 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
714 if (dst < 0) in build_one_insn()
715 return dst; in build_one_insn()
717 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in build_one_insn()
718 emit_instr(ctx, dsubu, dst, MIPS_R_ZERO, dst); in build_one_insn()
721 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
722 if (dst < 0) in build_one_insn()
723 return dst; in build_one_insn()
727 emit_instr(ctx, sll, dst, dst, 0); in build_one_insn()
733 emit_instr(ctx, mulu, dst, dst, MIPS_R_AT); in build_one_insn()
735 emit_instr(ctx, multu, dst, MIPS_R_AT); in build_one_insn()
736 emit_instr(ctx, mflo, dst); in build_one_insn()
740 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
741 if (dst < 0) in build_one_insn()
742 return dst; in build_one_insn()
746 emit_instr(ctx, sll, dst, dst, 0); in build_one_insn()
748 emit_instr(ctx, subu, dst, MIPS_R_ZERO, dst); in build_one_insn()
754 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
755 if (dst < 0) in build_one_insn()
756 return dst; in build_one_insn()
760 emit_instr(ctx, sll, dst, dst, 0); in build_one_insn()
764 emit_instr(ctx, addu, dst, MIPS_R_ZERO, MIPS_R_ZERO); in build_one_insn()
770 emit_instr(ctx, divu_r6, dst, dst, MIPS_R_AT); in build_one_insn()
772 emit_instr(ctx, modu, dst, dst, MIPS_R_AT); in build_one_insn()
775 emit_instr(ctx, divu, dst, MIPS_R_AT); in build_one_insn()
777 emit_instr(ctx, mflo, dst); in build_one_insn()
779 emit_instr(ctx, mfhi, dst); in build_one_insn()
785 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
786 if (dst < 0) in build_one_insn()
787 return dst; in build_one_insn()
789 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in build_one_insn()
793 emit_instr(ctx, addu, dst, MIPS_R_ZERO, MIPS_R_ZERO); in build_one_insn()
799 emit_instr(ctx, ddivu_r6, dst, dst, MIPS_R_AT); in build_one_insn()
801 emit_instr(ctx, modu, dst, dst, MIPS_R_AT); in build_one_insn()
804 emit_instr(ctx, ddivu, dst, MIPS_R_AT); in build_one_insn()
806 emit_instr(ctx, mflo, dst); in build_one_insn()
808 emit_instr(ctx, mfhi, dst); in build_one_insn()
823 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
824 if (src < 0 || dst < 0) in build_one_insn()
827 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in build_one_insn()
831 emit_instr(ctx, daddiu, dst, MIPS_R_SP, MAX_BPF_STACK); in build_one_insn()
841 tmp_reg = dst; in build_one_insn()
851 emit_instr(ctx, daddu, dst, src, MIPS_R_ZERO); in build_one_insn()
854 emit_instr(ctx, daddu, dst, dst, src); in build_one_insn()
857 emit_instr(ctx, dsubu, dst, dst, src); in build_one_insn()
860 emit_instr(ctx, xor, dst, dst, src); in build_one_insn()
863 emit_instr(ctx, or, dst, dst, src); in build_one_insn()
866 emit_instr(ctx, and, dst, dst, src); in build_one_insn()
870 emit_instr(ctx, dmulu, dst, dst, src); in build_one_insn()
872 emit_instr(ctx, dmultu, dst, src); in build_one_insn()
873 emit_instr(ctx, mflo, dst); in build_one_insn()
881 dst, dst, src); in build_one_insn()
883 emit_instr(ctx, modu, dst, dst, src); in build_one_insn()
886 emit_instr(ctx, ddivu, dst, src); in build_one_insn()
888 emit_instr(ctx, mflo, dst); in build_one_insn()
890 emit_instr(ctx, mfhi, dst); in build_one_insn()
893 emit_instr(ctx, dsllv, dst, dst, src); in build_one_insn()
896 emit_instr(ctx, dsrlv, dst, dst, src); in build_one_insn()
899 emit_instr(ctx, dsrav, dst, dst, src); in build_one_insn()
919 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
920 if (src < 0 || dst < 0) in build_one_insn()
925 emit_instr(ctx, sll, dst, dst, 0); in build_one_insn()
933 tmp_reg = dst; in build_one_insn()
943 emit_instr(ctx, addu, dst, src, MIPS_R_ZERO); in build_one_insn()
946 emit_instr(ctx, addu, dst, dst, src); in build_one_insn()
949 emit_instr(ctx, subu, dst, dst, src); in build_one_insn()
952 emit_instr(ctx, xor, dst, dst, src); in build_one_insn()
955 emit_instr(ctx, or, dst, dst, src); in build_one_insn()
958 emit_instr(ctx, and, dst, dst, src); in build_one_insn()
961 emit_instr(ctx, mul, dst, dst, src); in build_one_insn()
967 emit_instr(ctx, divu_r6, dst, dst, src); in build_one_insn()
969 emit_instr(ctx, modu, dst, dst, src); in build_one_insn()
972 emit_instr(ctx, divu, dst, src); in build_one_insn()
974 emit_instr(ctx, mflo, dst); in build_one_insn()
976 emit_instr(ctx, mfhi, dst); in build_one_insn()
979 emit_instr(ctx, sllv, dst, dst, src); in build_one_insn()
982 emit_instr(ctx, srlv, dst, dst, src); in build_one_insn()
985 emit_instr(ctx, srav, dst, dst, src); in build_one_insn()
1004 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok); in build_one_insn()
1005 if (dst < 0) in build_one_insn()
1006 return dst; in build_one_insn()
1026 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1027 if (src < 0 || dst < 0) in build_one_insn()
1035 emit_instr(ctx, sll, MIPS_R_AT, dst, 0); in build_one_insn()
1036 dst = MIPS_R_AT; in build_one_insn()
1039 emit_instr(ctx, and, MIPS_R_AT, dst, src); in build_one_insn()
1041 dst = MIPS_R_AT; in build_one_insn()
1044 emit_instr(ctx, dsubu, MIPS_R_AT, dst, src); in build_one_insn()
1066 emit_instr(ctx, slt, MIPS_R_AT, dst, src); in build_one_insn()
1068 dst = MIPS_R_AT; in build_one_insn()
1072 emit_instr(ctx, dsubu, MIPS_R_T8, dst, src); in build_one_insn()
1073 emit_instr(ctx, sltu, MIPS_R_AT, dst, src); in build_one_insn()
1086 dst = MIPS_R_AT; in build_one_insn()
1089 emit_instr(ctx, sltu, MIPS_R_AT, dst, src); in build_one_insn()
1091 dst = MIPS_R_AT; in build_one_insn()
1118 emit_instr(ctx, bne, dst, src, b_off); in build_one_insn()
1120 emit_instr(ctx, beq, dst, src, b_off); in build_one_insn()
1142 emit_instr(ctx, beq, dst, src, b_off); in build_one_insn()
1144 emit_instr(ctx, bne, dst, src, b_off); in build_one_insn()
1156 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok); in build_one_insn()
1157 if (dst < 0) in build_one_insn()
1158 return dst; in build_one_insn()
1167 emit_instr(ctx, blez, dst, b_off); in build_one_insn()
1170 emit_instr(ctx, bltz, dst, b_off); in build_one_insn()
1173 emit_instr(ctx, bgez, dst, b_off); in build_one_insn()
1176 emit_instr(ctx, bgtz, dst, b_off); in build_one_insn()
1187 emit_instr(ctx, bgtz, dst, b_off); in build_one_insn()
1190 emit_instr(ctx, bgez, dst, b_off); in build_one_insn()
1193 emit_instr(ctx, bltz, dst, b_off); in build_one_insn()
1196 emit_instr(ctx, blez, dst, b_off); in build_one_insn()
1215 emit_instr(ctx, slti, MIPS_R_AT, dst, (int)t64s); in build_one_insn()
1217 dst = MIPS_R_ZERO; in build_one_insn()
1221 emit_instr(ctx, slt, MIPS_R_AT, dst, MIPS_R_AT); in build_one_insn()
1223 dst = MIPS_R_ZERO; in build_one_insn()
1231 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok); in build_one_insn()
1232 if (dst < 0) in build_one_insn()
1233 return dst; in build_one_insn()
1248 emit_instr(ctx, sltu, MIPS_R_AT, dst, MIPS_R_AT); in build_one_insn()
1250 dst = MIPS_R_ZERO; in build_one_insn()
1254 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok); in build_one_insn()
1255 if (dst < 0) in build_one_insn()
1256 return dst; in build_one_insn()
1263 emit_instr(ctx, bbit0, dst, ffs((u32)insn->imm) - 1, b_off); in build_one_insn()
1270 emit_instr(ctx, bbit1, dst, ffs((u32)insn->imm) - 1, b_off); in build_one_insn()
1276 emit_instr(ctx, and, MIPS_R_AT, dst, MIPS_R_AT); in build_one_insn()
1278 dst = MIPS_R_ZERO; in build_one_insn()
1301 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1302 if (dst < 0) in build_one_insn()
1303 return dst; in build_one_insn()
1305 emit_const_to_reg(ctx, dst, t64); in build_one_insn()
1324 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1325 if (dst < 0) in build_one_insn()
1326 return dst; in build_one_insn()
1329 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in build_one_insn()
1333 emit_instr(ctx, sll, dst, dst, 0); in build_one_insn()
1343 emit_instr(ctx, wsbh, dst, dst); in build_one_insn()
1344 emit_instr(ctx, andi, dst, dst, 0xffff); in build_one_insn()
1347 emit_instr(ctx, wsbh, dst, dst); in build_one_insn()
1348 emit_instr(ctx, rotr, dst, dst, 16); in build_one_insn()
1352 emit_instr(ctx, dsbh, dst, dst); in build_one_insn()
1353 emit_instr(ctx, dshd, dst, dst); in build_one_insn()
1367 dst = MIPS_R_SP; in build_one_insn()
1370 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1371 if (dst < 0) in build_one_insn()
1372 return dst; in build_one_insn()
1378 emit_instr(ctx, sb, MIPS_R_AT, mem_off, dst); in build_one_insn()
1381 emit_instr(ctx, sh, MIPS_R_AT, mem_off, dst); in build_one_insn()
1384 emit_instr(ctx, sw, MIPS_R_AT, mem_off, dst); in build_one_insn()
1387 emit_instr(ctx, sd, MIPS_R_AT, mem_off, dst); in build_one_insn()
1406 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1407 if (dst < 0) in build_one_insn()
1408 return dst; in build_one_insn()
1411 emit_instr(ctx, lbu, dst, mem_off, src); in build_one_insn()
1414 emit_instr(ctx, lhu, dst, mem_off, src); in build_one_insn()
1417 emit_instr(ctx, lw, dst, mem_off, src); in build_one_insn()
1420 emit_instr(ctx, ld, dst, mem_off, src); in build_one_insn()
1433 dst = MIPS_R_SP; in build_one_insn()
1436 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1437 if (dst < 0) in build_one_insn()
1438 return dst; in build_one_insn()
1452 dst, mem_off); in build_one_insn()
1454 dst = MIPS_R_T6; in build_one_insn()
1462 emit_instr(ctx, ll, MIPS_R_T8, mem_off, dst); in build_one_insn()
1464 emit_instr(ctx, sc, MIPS_R_T8, mem_off, dst); in build_one_insn()
1478 emit_instr(ctx, lld, MIPS_R_T8, mem_off, dst); in build_one_insn()
1480 emit_instr(ctx, scd, MIPS_R_T8, mem_off, dst); in build_one_insn()
1488 emit_instr(ctx, sb, src, mem_off, dst); in build_one_insn()
1491 emit_instr(ctx, sh, src, mem_off, dst); in build_one_insn()
1494 emit_instr(ctx, sw, src, mem_off, dst); in build_one_insn()
1502 emit_instr(ctx, sd, src, mem_off, dst); in build_one_insn()