Lines Matching refs:rd

947 static void emit_movz_r(struct jit_context *ctx, u8 rd, u8 rs, u8 rt)
950 emit(ctx, movz, rd, rs, rt); /* rd = rt ? rd : rs */
954 emit(ctx, selnez, rd, rd, rt); /* rd = 0 if rt != 0 */
956 emit(ctx, or, rd, rd, rs); /* rd = rd | rs */
958 emit(ctx, bnez, rt, 8); /* PC += 8 if rd != 0 */
960 emit(ctx, or, rd, rs, MIPS_R_ZERO); /* +4: rd = rs */
962 clobber_reg(ctx, rd);
970 static void emit_movn_r(struct jit_context *ctx, u8 rd, u8 rs, u8 rt)
973 emit(ctx, movn, rd, rs, rt); /* rd = rt ? rs : rd */
977 emit(ctx, seleqz, rd, rd, rt); /* rd = 0 if rt != 0 */
979 emit(ctx, or, rd, rd, rs); /* rd = rd | rs */
981 emit(ctx, beqz, rt, 8); /* PC += 8 if rd == 0 */
983 emit(ctx, or, rd, rs, MIPS_R_ZERO); /* +4: rd = rs */
985 clobber_reg(ctx, rd);
989 /* Emulation of 64-bit sltiu rd, rs, imm, where imm may be S32_MAX + 1 */
990 static void emit_sltiu_r64(struct jit_context *ctx, u8 rd,
996 emit_mov_i(ctx, rd, imm); /* rd = imm */
997 emit(ctx, sltu, rd, lo(rs), rd); /* rd = rsl < rd */
999 emit(ctx, or, rd, rd, tmp); /* rd = rd | tmp */
1002 emit_mov_i(ctx, rd, (s32)imm); /* rd = imm */
1003 emit(ctx, sltu, rd, lo(rs), rd); /* rd = rsl < rd */
1005 emit(ctx, sltiu, rd, lo(rs), imm); /* rd = rsl < imm */
1007 emit_movn_r(ctx, rd, MIPS_R_ZERO, hi(rs)); /* rd = 0 if rsh */
1011 /* Emulation of 64-bit sltu rd, rs, rt */
1012 static void emit_sltu_r64(struct jit_context *ctx, u8 rd,
1017 emit(ctx, sltu, rd, lo(rs), lo(rt)); /* rd = rsl < rtl */
1019 emit_movn_r(ctx, rd, MIPS_R_ZERO, tmp); /* rd = 0 if tmp != 0 */
1021 emit(ctx, or, rd, rd, tmp); /* rd = rd | tmp */
1024 /* Emulation of 64-bit slti rd, rs, imm, where imm may be S32_MAX + 1 */
1025 static void emit_slti_r64(struct jit_context *ctx, u8 rd,
1036 emit_mov_i(ctx, rd, (s32)imm);
1037 emit(ctx, sltu, t1, lo(rs), rd); /* t1 = rsl <u imm */
1038 emit(ctx, sltu, t2, rd, lo(rs)); /* t2 = imm <u rsl */
1039 emit(ctx, srl, rd, hi(rs), 31); /* rd = rsh >> 31 */
1041 emit_movz_r(ctx, t1, t2, rd); /* t1 = rd ? t1 : t2 */
1043 emit_movn_r(ctx, t1, t2, rd); /* t1 = rd ? t2 : t1 */
1050 emit(ctx, addiu, rd, hi(rs), 1); /* rd = rsh + 1 */
1051 cmp = rd;
1058 * if (imm < 0) rd = rsh < -1
1059 * else rd = rsh != 0
1060 * rd = rd | t1
1062 emit(ctx, slti, rd, hi(rs), imm < 0 ? -1 : 0); /* rd = rsh < hi(imm) */
1063 emit(ctx, or, rd, rd, t1); /* rd = rd | t1 */
1066 /* Emulation of 64-bit(slt rd, rs, rt) */
1067 static void emit_slt_r64(struct jit_context *ctx, u8 rd,
1082 emit(ctx, srl, rd, t3, 31); /* rd = t3 >> 31 */
1083 emit_movn_r(ctx, t1, t2, rd); /* t1 = rd ? t2 : t1 */
1086 /* rd = (rsh < rth) | t1 */
1087 emit(ctx, slt, rd, hi(rs), hi(rt)); /* rd = rsh <s rth */
1088 emit(ctx, or, rd, rd, t1); /* rd = rd | t1 */