Lines Matching refs:src

203 /* dst = src (register width) */
204 void emit_mov_r(struct jit_context *ctx, u8 dst, u8 src)
206 emit(ctx, ori, dst, src, 0);
342 void emit_alu_r(struct jit_context *ctx, u8 dst, u8 src, u8 op)
345 /* dst = dst & src */
347 emit(ctx, and, dst, dst, src);
349 /* dst = dst | src */
351 emit(ctx, or, dst, dst, src);
353 /* dst = dst ^ src */
355 emit(ctx, xor, dst, dst, src);
357 /* dst = dst << src */
359 emit(ctx, sllv, dst, dst, src);
361 /* dst = dst >> src */
363 emit(ctx, srlv, dst, dst, src);
365 /* dst = dst >> src (arithmetic) */
367 emit(ctx, srav, dst, dst, src);
369 /* dst = dst + src */
371 emit(ctx, addu, dst, dst, src);
373 /* dst = dst - src */
375 emit(ctx, subu, dst, dst, src);
377 /* dst = dst * src */
380 emit(ctx, mul, dst, dst, src);
382 emit(ctx, multu, dst, src);
386 /* dst = dst / src */
389 emit(ctx, divu_r6, dst, dst, src);
391 emit(ctx, divu, dst, src);
395 /* dst = dst % src */
398 emit(ctx, modu, dst, dst, src);
400 emit(ctx, divu, dst, src);
409 void emit_atomic_r(struct jit_context *ctx, u8 dst, u8 src, s16 off, u8 code)
416 emit(ctx, addu, MIPS_R_T8, MIPS_R_T9, src);
420 emit(ctx, and, MIPS_R_T8, MIPS_R_T9, src);
424 emit(ctx, or, MIPS_R_T8, MIPS_R_T9, src);
428 emit(ctx, xor, MIPS_R_T8, MIPS_R_T9, src);
431 emit(ctx, move, MIPS_R_T8, src);
439 emit(ctx, move, src, MIPS_R_T9);
440 clobber_reg(ctx, src);
445 void emit_cmpxchg_r(struct jit_context *ctx, u8 dst, u8 src, u8 res, s16 off)
450 emit(ctx, move, MIPS_R_T8, src); /* Delay slot */
758 void emit_jmp_r(struct jit_context *ctx, u8 dst, u8 src, s32 off, u8 op)
764 /* PC += off if dst == src */
766 emit(ctx, beq, dst, src, off);
768 /* PC += off if dst != src */
770 emit(ctx, bne, dst, src, off);
772 /* PC += off if dst & src */
774 emit(ctx, and, MIPS_R_T9, dst, src);
779 emit(ctx, and, MIPS_R_T9, dst, src);
782 /* PC += off if dst > src */
784 emit(ctx, sltu, MIPS_R_T9, src, dst);
787 /* PC += off if dst >= src */
789 emit(ctx, sltu, MIPS_R_T9, dst, src);
792 /* PC += off if dst < src */
794 emit(ctx, sltu, MIPS_R_T9, dst, src);
797 /* PC += off if dst <= src */
799 emit(ctx, sltu, MIPS_R_T9, src, dst);
802 /* PC += off if dst > src (signed) */
804 emit(ctx, slt, MIPS_R_T9, src, dst);
807 /* PC += off if dst >= src (signed) */
809 emit(ctx, slt, MIPS_R_T9, dst, src);
812 /* PC += off if dst < src (signed) */
814 emit(ctx, slt, MIPS_R_T9, dst, src);
817 /* PC += off if dst <= src (signed) */
819 emit(ctx, slt, MIPS_R_T9, src, dst);