Home | History | Annotate | Download | only in target-mips

Lines Matching refs:rt

69     OPC_BEQ      = (0x04 << 26),  /* Unconditional if rs = rt = 0 (B) */
224 /* REGIMM (rt field) opcodes */
948 static inline void op_ldst_##insn(TCGv arg1, TCGv arg2, int rt, DisasContext *ctx) \
961 tcg_gen_movi_tl(t0, rt | ((almask << 3) & 0x20)); \
967 gen_store_gpr(t0, rt); \
972 static inline void op_ldst_##insn(TCGv arg1, TCGv arg2, int rt, DisasContext *ctx) \
976 gen_store_gpr(t0, rt); \
987 static void gen_ldst (DisasContext *ctx, uint32_t opc, int rt,
1009 gen_store_gpr(t0, rt);
1015 gen_store_gpr(t0, rt);
1021 gen_store_gpr(t0, rt);
1026 gen_load_gpr(t1, rt);
1032 gen_load_gpr(t1, rt);
1034 gen_store_gpr(t1, rt);
1039 gen_load_gpr(t1, rt);
1045 gen_load_gpr(t1, rt);
1047 gen_store_gpr(t1, rt);
1052 gen_load_gpr(t1, rt);
1060 gen_store_gpr(t0, rt);
1065 gen_load_gpr(t1, rt);
1072 gen_store_gpr(t0, rt);
1077 gen_load_gpr(t1, rt);
1084 gen_store_gpr(t0, rt);
1090 gen_store_gpr(t0, rt);
1095 gen_load_gpr(t1, rt);
1102 gen_store_gpr(t0, rt);
1107 gen_load_gpr(t1, rt);
1109 gen_store_gpr(t1, rt);
1114 gen_load_gpr(t1, rt);
1120 gen_load_gpr(t1, rt);
1122 gen_store_gpr(t1, rt);
1127 gen_load_gpr(t1, rt);
1134 gen_store_gpr(t0, rt);
1138 MIPS_DEBUG("%s %s, %d(%s)", opn, regnames[rt], offset, regnames[base]);
1144 static void gen_st_cond (DisasContext *ctx, uint32_t opc, int rt,
1164 gen_load_gpr(t1, rt);
1169 op_ldst_scd(t1, t0, rt, ctx);
1175 op_ldst_sc(t1, t0, rt, ctx);
1179 MIPS_DEBUG("%s %s, %d(%s)", opn, regnames[rt], offset, regnames[base]);
1258 int rt, int rs, int16_t imm)
1263 if (rt == 0 && opc != OPC_ADDI && opc != OPC_DADDI) {
1291 gen_store_gpr(t0, rt);
1298 tcg_gen_addi_tl(cpu_gpr[rt], cpu_gpr[rs], uimm);
1299 tcg_gen_ext32s_tl(cpu_gpr[rt], cpu_gpr[rt]);
1301 tcg_gen_movi_tl(cpu_gpr[rt], uimm);
1325 gen_store_gpr(t0, rt);
1332 tcg_gen_addi_tl(cpu_gpr[rt], cpu_gpr[rs], uimm);
1334 tcg_gen_movi_tl(cpu_gpr[rt], uimm);
1340 MIPS_DEBUG("%s %s, %s, " TARGET_FMT_lx, opn, regnames[rt], regnames[rs], uimm);
1344 static void gen_logic_imm (CPUMIPSState *env, uint32_t opc, int rt, int rs, int16_t imm)
1349 if (rt == 0) {
1358 tcg_gen_andi_tl(cpu_gpr[rt], cpu_gpr[rs], uimm);
1360 tcg_gen_movi_tl(cpu_gpr[rt], 0);
1365 tcg_gen_ori_tl(cpu_gpr[rt], cpu_gpr[rs], uimm);
1367 tcg_gen_movi_tl(cpu_gpr[rt], uimm);
1372 tcg_gen_xori_tl(cpu_gpr[rt], cpu_gpr[rs], uimm);
1374 tcg_gen_movi_tl(cpu_gpr[rt], uimm);
1378 tcg_gen_movi_tl(cpu_gpr[rt], imm << 16);
1382 MIPS_DEBUG("%s %s, %s, " TARGET_FMT_lx, opn, regnames[rt], regnames[rs], uimm);
1386 static void gen_slt_imm (CPUMIPSState *env, uint32_t opc, int rt, int rs, int16_t imm)
1392 if (rt == 0) {
1401 gen_op_lti(cpu_gpr[rt], t0, uimm);
1405 gen_op_ltiu(cpu_gpr[rt], t0, uimm);
1409 MIPS_DEBUG("%s %s, %s, " TARGET_FMT_lx, opn, regnames[rt], regnames[rs], uimm);
1415 int rt, int rs, int16_t imm)
1421 if (rt == 0) {
1432 tcg_gen_ext32s_tl(cpu_gpr[rt], t0);
1437 tcg_gen_sari_tl(cpu_gpr[rt], t0, uimm);
1445 tcg_gen_shri_tl(cpu_gpr[rt], t0, uimm);
1447 tcg_gen_ext32s_tl(cpu_gpr[rt
1459 tcg_gen_ext_i32_tl(cpu_gpr[rt], t1);
1462 tcg_gen_ext32s_tl(cpu_gpr[rt], t0);
1468 tcg_gen_shri_tl(cpu_gpr[rt], t0, uimm);
1470 tcg_gen_ext32s_tl(cpu_gpr[rt], t0);
1483 tcg_gen_shli_tl(cpu_gpr[rt], t0, uimm);
1487 tcg_gen_sari_tl(cpu_gpr[rt], t0, uimm);
1493 tcg_gen_shri_tl(cpu_gpr[rt], t0, uimm);
1500 tcg_gen_rotri_tl(cpu_gpr[rt], t0, uimm);
1502 tcg_gen_mov_tl(cpu_gpr[rt], t0);
1506 tcg_gen_shri_tl(cpu_gpr[rt], t0, uimm);
1517 tcg_gen_shli_tl(cpu_gpr[rt], t0, uimm + 32);
1521 tcg_gen_sari_tl(cpu_gpr[rt], t0, uimm + 32);
1527 tcg_gen_shri_tl(cpu_gpr[rt], t0, uimm + 32);
1533 tcg_gen_rotri_tl(cpu_gpr[rt], t0, uimm + 32);
1536 tcg_gen_shri_tl(cpu_gpr[rt], t0, uimm + 32);
1548 MIPS_DEBUG("%s %s, %s, " TARGET_FMT_lx, opn, regnames[rt], regnames[rs], uimm);
1554 int rd, int rs, int rt)
1575 gen_load_gpr(t2, rt);
1594 if (rs != 0 && rt != 0) {
1595 tcg_gen_add_tl(cpu_gpr[rd], cpu_gpr[rs], cpu_gpr[rt]);
1597 } else if (rs == 0 && rt != 0) {
1598 tcg_gen_mov_tl(cpu_gpr[rd], cpu_gpr[rt]);
1599 } else if (rs != 0 && rt == 0) {
1614 gen_load_gpr(t2, rt);
1632 if (rs != 0 && rt != 0) {
1633 tcg_gen_sub_tl(cpu_gpr[rd], cpu_gpr[rs], cpu_gpr[rt]);
1635 } else if (rs == 0 && rt != 0) {
1636 tcg_gen_neg_tl(cpu_gpr[rd], cpu_gpr[rt]);
1638 } else if (rs != 0 && rt == 0) {
1654 gen_load_gpr(t2, rt);
1672 if (rs != 0 && rt != 0) {
1673 tcg_gen_add_tl(cpu_gpr[rd], cpu_gpr[rs], cpu_gpr[rt]);
1674 } else if (rs == 0 && rt != 0) {
1675 tcg_gen_mov_tl(cpu_gpr[rd], cpu_gpr[rt]);
1676 } else if (rs != 0 && rt == 0) {
1691 gen_load_gpr(t2, rt);
1708 if (rs != 0 && rt != 0) {
1709 tcg_gen_sub_tl(cpu_gpr[rd], cpu_gpr[rs], cpu_gpr[rt]);
1710 } else if (rs == 0 && rt != 0) {
1711 tcg_gen_neg_tl(cpu_gpr[rd], cpu_gpr[rt]);
1712 } else if (rs != 0 && rt == 0) {
1721 if (likely(rs != 0 && rt != 0)) {
1722 tcg_gen_mul_tl(cpu_gpr[rd], cpu_gpr[rs], cpu_gpr[rt]);
1730 MIPS_DEBUG("%s %s, %s, %s", opn, regnames[rd], regnames[rs], regnames[rt]);
1734 static void gen_cond_move (CPUMIPSState *env, uint32_t opc, int rd, int rs, int rt)
1749 if (likely(rt != 0))
1750 tcg_gen_brcondi_tl(TCG_COND_EQ, cpu_gpr[rt], 0, l1);
1756 if (likely(rt != 0))
1757 tcg_gen_brcondi_tl(TCG_COND_NE, cpu_gpr[rt], 0, l1);
1767 MIPS_DEBUG("%s %s, %s, %s", opn, regnames[rd], regnames[rs], regnames[rt]);
1771 static void gen_logic (CPUMIPSState *env, uint32_t opc, int rd, int rs, int rt)
1783 if (likely(rs != 0 && rt != 0)) {
1784 tcg_gen_and_tl(cpu_gpr[rd], cpu_gpr[rs], cpu_gpr[rt]);
1791 if (rs != 0 && rt != 0) {
1792 tcg_gen_nor_tl(cpu_gpr[rd], cpu_gpr[rs], cpu_gpr[rt]);
1793 } else if (rs == 0 && rt != 0) {
1794 tcg_gen_not_tl(cpu_gpr[rd], cpu_gpr[rt]);
1795 } else if (rs != 0 && rt == 0) {
1803 if (likely(rs != 0 && rt != 0)) {
1804 tcg_gen_or_tl(cpu_gpr[rd], cpu_gpr[rs], cpu_gpr[rt]);
1805 } else if (rs == 0 && rt != 0) {
1806 tcg_gen_mov_tl(cpu_gpr[rd], cpu_gpr[rt]);
1807 } else if (rs != 0 && rt == 0) {
1815 if (likely(rs != 0 && rt != 0)) {
1816 tcg_gen_xor_tl(cpu_gpr[rd], cpu_gpr[rs], cpu_gpr[rt]);
1817 } else if (rs == 0 && rt != 0) {
1818 tcg_gen_mov_tl(cpu_gpr[rd], cpu_gpr[rt]);
1819 } else if (rs != 0 && rt == 0) {
1827 MIPS_DEBUG("%s %s, %s, %s", opn, regnames[rd], regnames[rs], regnames[rt]);
1831 static void gen_slt (CPUMIPSState *env, uint32_t opc, int rd, int rs, int rt)
1845 gen_load_gpr(t1, rt);
1856 MIPS_DEBUG("%s %s, %s, %s", opn, regnames[rd], regnames[rs], regnames[rt]);
1863 int rd, int rs, int rt)
1878 gen_load_gpr(t1, rt);
1967 MIPS_DEBUG("%s %s, %s, %s", opn, regnames[rd], regnames[rs], regnames[rt]);
2010 int rs, int rt)
2032 gen_load_gpr(t1, rt);
2238 MIPS_DEBUG("%s %s %s", opn, regnames[rs], regnames[rt]);
2245 int rd, int rs, int rt)
2252 gen_load_gpr(t1, rt);
2317 MIPS_DEBUG("%s %s, %s, %s", opn, regnames[rd], regnames[rs], regnames[rt]);
2363 int rs, int rt, int16_t imm)
2379 if (rs != rt) {
2381 gen_load_gpr(t1, rt);
2476 int rs, int rt, int32_t offset)
2499 if (rs != rt) {
2501 gen_load_gpr(t1, rt);
2604 blink = rt;
2606 MIPS_DEBUG("jalr %s, %s", regnames[rt], regnames[rs]);
2618 regnames[rs], regnames[rt], btgt);
2623 regnames[rs], regnames[rt], btgt);
2628 regnames[rs], regnames[rt], btgt);
2633 regnames[rs], regnames[rt], btgt);
2711 static void gen_bitops (DisasContext *ctx, uint32_t opc, int rt,
2750 gen_load_gpr(t0, rt);
2762 gen_load_gpr(t0, rt);
2772 gen_load_gpr(t0, rt);
2781 gen_load_gpr(t0, rt);
2783 gen_load_gpr(t0, rt);
2798 gen_store_gpr(t0, rt);
2803 static void gen_bshfl (DisasContext *ctx, uint32_t op2, int rt, int rd)
2814 gen_load_gpr(t0, rt);
5231 static void gen_mftr(CPUMIPSState *env, DisasContext *ctx, int rt, int rd,
5245 switch (rt) {
5270 gen_mfc0(env, ctx, t0, rt, sel);
5280 gen_mfc0(env, ctx, t0, rt, sel);
5289 gen_mfc0(env, ctx, t0, rt, sel);
5298 gen_mfc0(env, ctx, t0, rt, sel);
5303 gen_mfc0(env, ctx, t0, rt, sel);
5308 gen_helper_2i(mftgpr, t0, cpu_env, rt);
5312 switch (rt) {
5362 gen_load_fpr32(fp0, rt);
5368 gen_load_fpr32h(fp0, rt);
5375 gen_helper_2i(cfc1, t0, cpu_env, rt);
5384 LOG_DISAS("mftr (reg %d u %d sel %d h %d)\n", rt, u, sel, h);
5391 LOG_DISAS("mftr (reg %d u %d sel %d h %d)\n", rt, u, sel, h);
5395 static void gen_mttr(CPUMIPSState *env, DisasContext *ctx, int rd, int rt,
5401 gen_load_gpr(t0, rt);
5559 static void gen_cp0 (CPUMIPSState *env, DisasContext *ctx, uint32_t opc, int rt, int rd)
5565 if (rt == 0) {
5569 gen_mfc0(env, ctx, cpu_gpr[rt], rd, ctx->opcode & 0x7);
5576 gen_load_gpr(t0, rt);
5585 if (rt == 0) {
5589 gen_dmfc0(env, ctx, cpu_gpr[rt], rd, ctx->opcode & 0x7);
5597 gen_load_gpr(t0, rt);
5610 gen_mftr(env, ctx, rt, rd, (ctx->opcode >> 5) & 1,
5616 gen_mttr(env, ctx, rd, rt, (ctx->opcode >> 5) & 1,
5677 MIPS_DEBUG("%s %s %d", opn, regnames[rt], rd);
5800 static void gen_cp1 (DisasContext *ctx, uint32_t opc, int rt, int fs)
5814 gen_store_gpr(t0, rt);
5818 gen_load_gpr(t0, rt);
5830 gen_store_gpr(t0, rt);
5834 gen_load_gpr(t0, rt);
5841 gen_store_gpr(t0, rt);
5845 gen_load_gpr(t0, rt);
5858 gen_store_gpr(t0, rt);
5862 gen_load_gpr(t0, rt);
5877 MIPS_DEBUG("%s %s %s", opn, regnames[rt], fregnames[fs]);
7638 int rs, rt, rd, sa;
7665 rt = (ctx->opcode >> 16) & 0x1f;
7676 gen_shift_imm(env, ctx, op1, rd, rt, sa);
7681 gen_cond_move(env, op1, rd, rs, rt);
7684 gen_arith(env, ctx, op1, rd, rs, rt);
7689 gen_shift(env, ctx, op1, rd, rs, rt);
7693 gen_slt(env, op1, rd, rs, rt);
7699 gen_logic(env, op1, rd, rs, rt);
7705 gen_mul_vr54xx(ctx, op1, rd, rs, rt);
7707 gen_muldiv(ctx, op1, rs, rt);
7714 gen_trap(ctx, op1, rs, rt, -1);
7774 gen_shift_imm(env, ctx, op1, rd, rt, sa);
7779 gen_arith(env, ctx, op1, rd, rs, rt);
7786 gen_shift(env, ctx, op1, rd, rs, rt);
7791 gen_muldiv(ctx, op1, rs, rt);
7806 gen_muldiv(ctx, op1, rs, rt);
7809 gen_arith(env, ctx, op1, rd, rs, rt);
7848 gen_bitops(ctx, op1, rt, rs, sa, rd);
7853 gen_bshfl(ctx, op2, rt, rd);
7864 gen_store_gpr(t0, rt);
7869 gen_store_gpr(t0, rt);
7874 gen_store_gpr(t0, rt);
7879 gen_store_gpr(t0, rt);
7884 gen_store_gpr(t0, rt);
7904 gen_load_gpr(t0, rt);
7928 gen_bitops(ctx, op1, rt, rs, sa, rd);
7934 gen_bshfl(ctx, op2, rt, rd);
7977 gen_cp0(env, ctx, op1, rt, rd);
7982 gen_cp0(env, ctx, MASK_C0(ctx->opcode), rt, rd);
7995 gen_store_gpr(t0, rt);
8000 gen_store_gpr(t0, rt);
8005 gen_store_gpr(t0, rt);
8010 gen_store_gpr(t0, rt);
8016 gen_store_gpr(t0, rt);
8024 gen_store_gpr(t0, rt);
8039 gen_load_srsgpr(rt, rd);
8043 gen_store_srsgpr(rt, rd);
8053 gen_arith_imm(env, ctx, op, rt, rs, imm);
8057 gen_slt_imm(env, op, rt, rs, imm);
8063 gen_logic_imm(env, op, rt, rs, imm);
8067 gen_compute_branch(ctx, op, rs, rt, offset);
8071 gen_compute_branch(ctx, op, rs, rt, imm << 2);
8077 gen_ldst(ctx, op, rt, rs, imm);
8080 gen_st_cond(ctx, op, rt, rs, imm);
8098 gen_flt_ldst(ctx, op, rt, rs, imm);
8116 gen_cp1(ctx, op1, rt, rd);
8122 gen_cp1(ctx, op1, rt, rd);
8132 (rt >> 2) & 0x7, imm << 2);
8139 gen_farith(ctx, MASK_CP1_FUNC(ctx->opcode), rt, rd, sa,
8173 gen_flt3_ldst(ctx, op1, sa, rd, rs, rt);
8191 gen_flt3_arith(ctx, op1, sa, rs, rd, rt);
8213 gen_ldst(ctx, op, rt, rs, imm);
8218 gen_st_cond(ctx, op, rt, rs, imm);
8224 gen_arith_imm(env, ctx, op, rt, rs, imm);