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()
661 int src, dst, r, td, ts, mem_off, b_off; in build_one_insn() local
696 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
697 if (dst < 0) in build_one_insn()
698 return dst; in build_one_insn()
700 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in build_one_insn()
705 emit_instr(ctx, dmulu, dst, dst, MIPS_R_AT); in build_one_insn()
707 emit_instr(ctx, dmultu, MIPS_R_AT, dst); in build_one_insn()
708 emit_instr(ctx, mflo, dst); in build_one_insn()
712 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
713 if (dst < 0) in build_one_insn()
714 return dst; in build_one_insn()
716 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in build_one_insn()
717 emit_instr(ctx, dsubu, 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()
732 emit_instr(ctx, mulu, dst, dst, MIPS_R_AT); in build_one_insn()
734 emit_instr(ctx, multu, dst, MIPS_R_AT); in build_one_insn()
735 emit_instr(ctx, mflo, dst); in build_one_insn()
739 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
740 if (dst < 0) in build_one_insn()
741 return dst; in build_one_insn()
745 emit_instr(ctx, sll, dst, dst, 0); in build_one_insn()
747 emit_instr(ctx, subu, dst, MIPS_R_ZERO, dst); in build_one_insn()
753 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
754 if (dst < 0) in build_one_insn()
755 return dst; in build_one_insn()
759 emit_instr(ctx, sll, dst, dst, 0); in build_one_insn()
763 emit_instr(ctx, addu, dst, MIPS_R_ZERO, MIPS_R_ZERO); in build_one_insn()
769 emit_instr(ctx, divu_r6, dst, dst, MIPS_R_AT); in build_one_insn()
771 emit_instr(ctx, modu, dst, dst, MIPS_R_AT); in build_one_insn()
774 emit_instr(ctx, divu, dst, MIPS_R_AT); in build_one_insn()
776 emit_instr(ctx, mflo, dst); in build_one_insn()
778 emit_instr(ctx, mfhi, dst); in build_one_insn()
784 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
785 if (dst < 0) in build_one_insn()
786 return dst; in build_one_insn()
788 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in build_one_insn()
792 emit_instr(ctx, addu, dst, MIPS_R_ZERO, MIPS_R_ZERO); in build_one_insn()
798 emit_instr(ctx, ddivu_r6, dst, dst, MIPS_R_AT); in build_one_insn()
800 emit_instr(ctx, modu, dst, dst, MIPS_R_AT); in build_one_insn()
803 emit_instr(ctx, ddivu, dst, MIPS_R_AT); in build_one_insn()
805 emit_instr(ctx, mflo, dst); in build_one_insn()
807 emit_instr(ctx, mfhi, dst); in build_one_insn()
822 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
823 if (src < 0 || dst < 0) in build_one_insn()
826 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in build_one_insn()
830 emit_instr(ctx, daddiu, dst, MIPS_R_SP, MAX_BPF_STACK); in build_one_insn()
840 tmp_reg = dst; in build_one_insn()
850 emit_instr(ctx, daddu, dst, src, MIPS_R_ZERO); in build_one_insn()
853 emit_instr(ctx, daddu, dst, dst, src); in build_one_insn()
856 emit_instr(ctx, dsubu, dst, dst, src); in build_one_insn()
859 emit_instr(ctx, xor, dst, dst, src); in build_one_insn()
862 emit_instr(ctx, or, dst, dst, src); in build_one_insn()
865 emit_instr(ctx, and, dst, dst, src); in build_one_insn()
869 emit_instr(ctx, dmulu, dst, dst, src); in build_one_insn()
871 emit_instr(ctx, dmultu, dst, src); in build_one_insn()
872 emit_instr(ctx, mflo, dst); in build_one_insn()
880 dst, dst, src); in build_one_insn()
882 emit_instr(ctx, modu, dst, dst, src); in build_one_insn()
885 emit_instr(ctx, ddivu, dst, src); in build_one_insn()
887 emit_instr(ctx, mflo, dst); in build_one_insn()
889 emit_instr(ctx, mfhi, dst); in build_one_insn()
892 emit_instr(ctx, dsllv, dst, dst, src); in build_one_insn()
895 emit_instr(ctx, dsrlv, dst, dst, src); in build_one_insn()
898 emit_instr(ctx, dsrav, dst, dst, src); in build_one_insn()
918 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
919 if (src < 0 || dst < 0) in build_one_insn()
924 emit_instr(ctx, sll, dst, dst, 0); in build_one_insn()
932 tmp_reg = dst; in build_one_insn()
942 emit_instr(ctx, addu, dst, src, MIPS_R_ZERO); in build_one_insn()
945 emit_instr(ctx, addu, dst, dst, src); in build_one_insn()
948 emit_instr(ctx, subu, dst, dst, src); in build_one_insn()
951 emit_instr(ctx, xor, dst, dst, src); in build_one_insn()
954 emit_instr(ctx, or, dst, dst, src); in build_one_insn()
957 emit_instr(ctx, and, dst, dst, src); in build_one_insn()
960 emit_instr(ctx, mul, dst, dst, src); in build_one_insn()
966 emit_instr(ctx, divu_r6, dst, dst, src); in build_one_insn()
968 emit_instr(ctx, modu, dst, dst, src); in build_one_insn()
971 emit_instr(ctx, divu, dst, src); in build_one_insn()
973 emit_instr(ctx, mflo, dst); in build_one_insn()
975 emit_instr(ctx, mfhi, dst); in build_one_insn()
978 emit_instr(ctx, sllv, dst, dst, src); in build_one_insn()
981 emit_instr(ctx, srlv, dst, dst, src); in build_one_insn()
984 emit_instr(ctx, srav, dst, dst, src); in build_one_insn()
1003 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok); in build_one_insn()
1004 if (dst < 0) in build_one_insn()
1005 return dst; in build_one_insn()
1025 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1026 if (src < 0 || dst < 0) in build_one_insn()
1034 emit_instr(ctx, sll, MIPS_R_AT, dst, 0); in build_one_insn()
1035 dst = MIPS_R_AT; in build_one_insn()
1038 emit_instr(ctx, and, MIPS_R_AT, dst, src); in build_one_insn()
1040 dst = MIPS_R_AT; in build_one_insn()
1043 emit_instr(ctx, dsubu, MIPS_R_AT, dst, src); in build_one_insn()
1065 emit_instr(ctx, slt, MIPS_R_AT, dst, src); in build_one_insn()
1067 dst = MIPS_R_AT; in build_one_insn()
1071 emit_instr(ctx, dsubu, MIPS_R_T8, dst, src); in build_one_insn()
1072 emit_instr(ctx, sltu, MIPS_R_AT, dst, src); in build_one_insn()
1085 dst = MIPS_R_AT; in build_one_insn()
1088 emit_instr(ctx, sltu, MIPS_R_AT, dst, src); in build_one_insn()
1090 dst = MIPS_R_AT; in build_one_insn()
1117 emit_instr(ctx, bne, dst, src, b_off); in build_one_insn()
1119 emit_instr(ctx, beq, dst, src, b_off); in build_one_insn()
1141 emit_instr(ctx, beq, dst, src, b_off); in build_one_insn()
1143 emit_instr(ctx, bne, dst, src, b_off); in build_one_insn()
1155 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok); in build_one_insn()
1156 if (dst < 0) in build_one_insn()
1157 return dst; in build_one_insn()
1166 emit_instr(ctx, blez, dst, b_off); in build_one_insn()
1169 emit_instr(ctx, bltz, dst, b_off); in build_one_insn()
1172 emit_instr(ctx, bgez, dst, b_off); in build_one_insn()
1175 emit_instr(ctx, bgtz, dst, b_off); in build_one_insn()
1186 emit_instr(ctx, bgtz, dst, b_off); in build_one_insn()
1189 emit_instr(ctx, bgez, dst, b_off); in build_one_insn()
1192 emit_instr(ctx, bltz, dst, b_off); in build_one_insn()
1195 emit_instr(ctx, blez, dst, b_off); in build_one_insn()
1214 emit_instr(ctx, slti, MIPS_R_AT, dst, (int)t64s); in build_one_insn()
1216 dst = MIPS_R_ZERO; in build_one_insn()
1220 emit_instr(ctx, slt, MIPS_R_AT, dst, MIPS_R_AT); in build_one_insn()
1222 dst = MIPS_R_ZERO; in build_one_insn()
1230 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok); in build_one_insn()
1231 if (dst < 0) in build_one_insn()
1232 return dst; in build_one_insn()
1247 emit_instr(ctx, sltu, MIPS_R_AT, dst, MIPS_R_AT); in build_one_insn()
1249 dst = MIPS_R_ZERO; in build_one_insn()
1253 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok); in build_one_insn()
1254 if (dst < 0) in build_one_insn()
1255 return dst; in build_one_insn()
1262 emit_instr(ctx, bbit0, dst, ffs((u32)insn->imm) - 1, b_off); in build_one_insn()
1269 emit_instr(ctx, bbit1, dst, ffs((u32)insn->imm) - 1, b_off); in build_one_insn()
1275 emit_instr(ctx, and, MIPS_R_AT, dst, MIPS_R_AT); in build_one_insn()
1277 dst = MIPS_R_ZERO; in build_one_insn()
1300 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1301 if (dst < 0) in build_one_insn()
1302 return dst; in build_one_insn()
1304 emit_const_to_reg(ctx, dst, t64); in build_one_insn()
1323 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1324 if (dst < 0) in build_one_insn()
1325 return dst; in build_one_insn()
1328 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32); in build_one_insn()
1332 emit_instr(ctx, sll, dst, dst, 0); in build_one_insn()
1342 emit_instr(ctx, wsbh, dst, dst); in build_one_insn()
1343 emit_instr(ctx, andi, dst, dst, 0xffff); in build_one_insn()
1346 emit_instr(ctx, wsbh, dst, dst); in build_one_insn()
1347 emit_instr(ctx, rotr, dst, dst, 16); in build_one_insn()
1351 emit_instr(ctx, dsbh, dst, dst); in build_one_insn()
1352 emit_instr(ctx, dshd, dst, dst); in build_one_insn()
1363 dst = MIPS_R_SP; in build_one_insn()
1366 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1367 if (dst < 0) in build_one_insn()
1368 return dst; in build_one_insn()
1374 emit_instr(ctx, sb, MIPS_R_AT, mem_off, dst); in build_one_insn()
1377 emit_instr(ctx, sh, MIPS_R_AT, mem_off, dst); in build_one_insn()
1380 emit_instr(ctx, sw, MIPS_R_AT, mem_off, dst); in build_one_insn()
1383 emit_instr(ctx, sd, MIPS_R_AT, mem_off, dst); in build_one_insn()
1402 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1403 if (dst < 0) in build_one_insn()
1404 return dst; in build_one_insn()
1407 emit_instr(ctx, lbu, dst, mem_off, src); in build_one_insn()
1410 emit_instr(ctx, lhu, dst, mem_off, src); in build_one_insn()
1413 emit_instr(ctx, lw, dst, mem_off, src); in build_one_insn()
1416 emit_instr(ctx, ld, dst, mem_off, src); in build_one_insn()
1429 dst = MIPS_R_SP; in build_one_insn()
1432 dst = ebpf_to_mips_reg(ctx, insn, dst_reg); in build_one_insn()
1433 if (dst < 0) in build_one_insn()
1434 return dst; in build_one_insn()
1448 dst, mem_off); in build_one_insn()
1450 dst = MIPS_R_T6; in build_one_insn()
1458 emit_instr(ctx, ll, MIPS_R_T8, mem_off, dst); in build_one_insn()
1460 emit_instr(ctx, sc, MIPS_R_T8, mem_off, dst); in build_one_insn()
1474 emit_instr(ctx, lld, MIPS_R_T8, mem_off, dst); in build_one_insn()
1476 emit_instr(ctx, scd, MIPS_R_T8, mem_off, dst); in build_one_insn()
1484 emit_instr(ctx, sb, src, mem_off, dst); in build_one_insn()
1487 emit_instr(ctx, sh, src, mem_off, dst); in build_one_insn()
1490 emit_instr(ctx, sw, src, mem_off, dst); in build_one_insn()
1498 emit_instr(ctx, sd, src, mem_off, dst); in build_one_insn()