Lines Matching full:src

98 static void emit_sext(struct jit_context *ctx, u8 dst, u8 src)  in emit_sext()  argument
100 emit(ctx, sll, dst, src, 0); in emit_sext()
201 static void emit_alu_r64(struct jit_context *ctx, u8 dst, u8 src, u8 op) in emit_alu_r64() argument
204 /* dst = dst << src */ in emit_alu_r64()
206 emit(ctx, dsllv, dst, dst, src); in emit_alu_r64()
208 /* dst = dst >> src */ in emit_alu_r64()
210 emit(ctx, dsrlv, dst, dst, src); in emit_alu_r64()
212 /* dst = dst >> src (arithmetic) */ in emit_alu_r64()
214 emit(ctx, dsrav, dst, dst, src); in emit_alu_r64()
216 /* dst = dst + src */ in emit_alu_r64()
218 emit(ctx, daddu, dst, dst, src); in emit_alu_r64()
220 /* dst = dst - src */ in emit_alu_r64()
222 emit(ctx, dsubu, dst, dst, src); in emit_alu_r64()
224 /* dst = dst * src */ in emit_alu_r64()
227 emit(ctx, dmulu, dst, dst, src); in emit_alu_r64()
229 emit(ctx, dmultu, dst, src); in emit_alu_r64()
236 /* dst = dst / src */ in emit_alu_r64()
239 emit(ctx, ddivu_r6, dst, dst, src); in emit_alu_r64()
241 emit(ctx, ddivu, dst, src); in emit_alu_r64()
245 /* dst = dst % src */ in emit_alu_r64()
248 emit(ctx, dmodu, dst, dst, src); in emit_alu_r64()
250 emit(ctx, ddivu, dst, src); in emit_alu_r64()
256 emit_alu_r(ctx, dst, src, op); in emit_alu_r64()
333 /* Load operation: dst = *(size*)(src + off) */
334 static void emit_ldx(struct jit_context *ctx, u8 dst, u8 src, s16 off, u8 size) in emit_ldx() argument
339 emit(ctx, lbu, dst, off, src); in emit_ldx()
343 emit(ctx, lhu, dst, off, src); in emit_ldx()
347 emit(ctx, lwu, dst, off, src); in emit_ldx()
351 emit(ctx, ld, dst, off, src); in emit_ldx()
357 /* Store operation: *(size *)(dst + off) = src */
358 static void emit_stx(struct jit_context *ctx, u8 dst, u8 src, s16 off, u8 size) in emit_stx() argument
363 emit(ctx, sb, src, off, dst); in emit_stx()
367 emit(ctx, sh, src, off, dst); in emit_stx()
371 emit(ctx, sw, src, off, dst); in emit_stx()
375 emit(ctx, sd, src, off, dst); in emit_stx()
382 u8 dst, u8 src, s16 off, u8 code) in emit_atomic_r64() argument
392 emit(ctx, daddu, t2, t1, src); in emit_atomic_r64()
396 emit(ctx, and, t2, t1, src); in emit_atomic_r64()
400 emit(ctx, or, t2, t1, src); in emit_atomic_r64()
404 emit(ctx, xor, t2, t1, src); in emit_atomic_r64()
407 emit(ctx, move, t2, src); in emit_atomic_r64()
415 emit(ctx, move, src, t1); in emit_atomic_r64()
416 clobber_reg(ctx, src); in emit_atomic_r64()
421 static void emit_cmpxchg_r64(struct jit_context *ctx, u8 dst, u8 src, s16 off) in emit_cmpxchg_r64() argument
430 emit(ctx, move, t2, src); /* Delay slot */ in emit_cmpxchg_r64()
638 u8 src = bpf2mips64[insn->src_reg]; in build_insn() local
653 /* dst = src */ in build_insn()
659 emit_mov_r(ctx, dst, src); in build_insn()
709 /* dst = dst & src */ in build_insn()
710 /* dst = dst | src */ in build_insn()
711 /* dst = dst ^ src */ in build_insn()
712 /* dst = dst << src */ in build_insn()
717 emit_alu_r(ctx, dst, src, BPF_OP(code)); in build_insn()
720 /* dst = dst >> src */ in build_insn()
721 /* dst = dst >> src (arithmetic) */ in build_insn()
722 /* dst = dst + src */ in build_insn()
723 /* dst = dst - src */ in build_insn()
724 /* dst = dst * src */ in build_insn()
725 /* dst = dst / src */ in build_insn()
726 /* dst = dst % src */ in build_insn()
735 emit_sext(ctx, MIPS_R_T4, src); in build_insn()
743 /* dst = src (64-bit) */ in build_insn()
745 emit_mov_r(ctx, dst, src); in build_insn()
780 /* dst = dst & src (64-bit) */ in build_insn()
781 /* dst = dst | src (64-bit) */ in build_insn()
782 /* dst = dst ^ src (64-bit) */ in build_insn()
783 /* dst = dst << src (64-bit) */ in build_insn()
784 /* dst = dst >> src (64-bit) */ in build_insn()
785 /* dst = dst >> src (64-bit, arithmetic) */ in build_insn()
786 /* dst = dst + src (64-bit) */ in build_insn()
787 /* dst = dst - src (64-bit) */ in build_insn()
788 /* dst = dst * src (64-bit) */ in build_insn()
789 /* dst = dst / src (64-bit) */ in build_insn()
790 /* dst = dst % src (64-bit) */ in build_insn()
802 emit_alu_r64(ctx, dst, src, BPF_OP(code)); in build_insn()
823 /* LDX: dst = *(size *)(src + off) */ in build_insn()
828 emit_ldx(ctx, dst, src, off, BPF_SIZE(code)); in build_insn()
838 /* STX: *(size *)(dst + off) = src */ in build_insn()
843 emit_stx(ctx, dst, src, off, BPF_SIZE(code)); in build_insn()
862 emit_atomic_r64(ctx, dst, src, off, imm); in build_insn()
866 if (src == dst) { /* Don't overwrite dst */ in build_insn()
870 emit_sext(ctx, src, src); in build_insn()
871 emit_atomic_r(ctx, tmp, src, off, imm); in build_insn()
872 emit_zext_ver(ctx, src); in build_insn()
874 emit_sext(ctx, MIPS_R_T4, src); in build_insn()
880 emit_cmpxchg_r64(ctx, dst, src, off); in build_insn()
887 emit_sext(ctx, MIPS_R_T5, src); in build_insn()
898 /* PC += off if dst == src */ in build_insn()
899 /* PC += off if dst != src */ in build_insn()
900 /* PC += off if dst & src */ in build_insn()
901 /* PC += off if dst > src */ in build_insn()
902 /* PC += off if dst >= src */ in build_insn()
903 /* PC += off if dst < src */ in build_insn()
904 /* PC += off if dst <= src */ in build_insn()
905 /* PC += off if dst > src (signed) */ in build_insn()
906 /* PC += off if dst >= src (signed) */ in build_insn()
907 /* PC += off if dst < src (signed) */ in build_insn()
908 /* PC += off if dst <= src (signed) */ in build_insn()
922 setup_jmp_r(ctx, dst == src, BPF_OP(code), off, &jmp, &rel); in build_insn()
924 emit_sext(ctx, MIPS_R_T5, src); /* Sign-extended src */ in build_insn()
965 /* PC += off if dst == src */ in build_insn()
966 /* PC += off if dst != src */ in build_insn()
967 /* PC += off if dst & src */ in build_insn()
968 /* PC += off if dst > src */ in build_insn()
969 /* PC += off if dst >= src */ in build_insn()
970 /* PC += off if dst < src */ in build_insn()
971 /* PC += off if dst <= src */ in build_insn()
972 /* PC += off if dst > src (signed) */ in build_insn()
973 /* PC += off if dst >= src (signed) */ in build_insn()
974 /* PC += off if dst < src (signed) */ in build_insn()
975 /* PC += off if dst <= src (signed) */ in build_insn()
989 setup_jmp_r(ctx, dst == src, BPF_OP(code), off, &jmp, &rel); in build_insn()
990 emit_jmp_r(ctx, dst, src, rel, jmp); in build_insn()