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