Commit 1ba74fb8f14389282e1b86579a46a38b5710e193

Authored by aurel32
1 parent 92e90443

target-mips: optimize gen_compute_branch()

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6936 c046a42c-6fe2-441c-8c8c-71466251a162
target-mips/cpu.h
@@ -443,7 +443,7 @@ struct CPUMIPSState { @@ -443,7 +443,7 @@ struct CPUMIPSState {
443 #define MIPS_HFLAG_BL 0x0C00 /* Likely branch */ 443 #define MIPS_HFLAG_BL 0x0C00 /* Likely branch */
444 #define MIPS_HFLAG_BR 0x1000 /* branch to register (can't link TB) */ 444 #define MIPS_HFLAG_BR 0x1000 /* branch to register (can't link TB) */
445 target_ulong btarget; /* Jump / branch target */ 445 target_ulong btarget; /* Jump / branch target */
446 - int bcond; /* Branch condition (if needed) */ 446 + target_ulong bcond; /* Branch condition (if needed) */
447 447
448 int SYNCI_Step; /* Address step size for SYNCI */ 448 int SYNCI_Step; /* Address step size for SYNCI */
449 int CCRes; /* Cycle count resolution/divisor */ 449 int CCRes; /* Cycle count resolution/divisor */
target-mips/machine.c
@@ -91,7 +91,8 @@ void cpu_save(QEMUFile *f, void *opaque) @@ -91,7 +91,8 @@ void cpu_save(QEMUFile *f, void *opaque)
91 qemu_put_sbe32s(f, &env->error_code); 91 qemu_put_sbe32s(f, &env->error_code);
92 qemu_put_be32s(f, &env->hflags); 92 qemu_put_be32s(f, &env->hflags);
93 qemu_put_betls(f, &env->btarget); 93 qemu_put_betls(f, &env->btarget);
94 - qemu_put_sbe32s(f, &env->bcond); 94 + i = env->bcond;
  95 + qemu_put_sbe32s(f, &i);
95 96
96 /* Save remaining CP1 registers */ 97 /* Save remaining CP1 registers */
97 qemu_put_sbe32s(f, &env->CP0_Index); 98 qemu_put_sbe32s(f, &env->CP0_Index);
@@ -240,7 +241,8 @@ int cpu_load(QEMUFile *f, void *opaque, int version_id) @@ -240,7 +241,8 @@ int cpu_load(QEMUFile *f, void *opaque, int version_id)
240 qemu_get_sbe32s(f, &env->error_code); 241 qemu_get_sbe32s(f, &env->error_code);
241 qemu_get_be32s(f, &env->hflags); 242 qemu_get_be32s(f, &env->hflags);
242 qemu_get_betls(f, &env->btarget); 243 qemu_get_betls(f, &env->btarget);
243 - qemu_get_sbe32s(f, &env->bcond); 244 + qemu_get_sbe32s(f, &i);
  245 + env->bcond = i;
244 246
245 /* Load remaining CP1 registers */ 247 /* Load remaining CP1 registers */
246 qemu_get_sbe32s(f, &env->CP0_Index); 248 qemu_get_sbe32s(f, &env->CP0_Index);
target-mips/translate.c
@@ -430,7 +430,7 @@ static TCGv_ptr cpu_env; @@ -430,7 +430,7 @@ static TCGv_ptr cpu_env;
430 static TCGv cpu_gpr[32], cpu_PC; 430 static TCGv cpu_gpr[32], cpu_PC;
431 static TCGv cpu_HI[MIPS_DSP_ACC], cpu_LO[MIPS_DSP_ACC], cpu_ACX[MIPS_DSP_ACC]; 431 static TCGv cpu_HI[MIPS_DSP_ACC], cpu_LO[MIPS_DSP_ACC], cpu_ACX[MIPS_DSP_ACC];
432 static TCGv cpu_dspctrl, btarget; 432 static TCGv cpu_dspctrl, btarget;
433 -static TCGv_i32 bcond; 433 +static TCGv bcond;
434 static TCGv_i32 fpu_fpr32[32], fpu_fpr32h[32]; 434 static TCGv_i32 fpu_fpr32[32], fpu_fpr32h[32];
435 static TCGv_i32 fpu_fcr0, fpu_fcr31; 435 static TCGv_i32 fpu_fcr0, fpu_fcr31;
436 436
@@ -2167,7 +2167,7 @@ static void gen_trap (DisasContext *ctx, uint32_t opc, @@ -2167,7 +2167,7 @@ static void gen_trap (DisasContext *ctx, uint32_t opc,
2167 { 2167 {
2168 int cond; 2168 int cond;
2169 TCGv t0 = tcg_temp_local_new(); 2169 TCGv t0 = tcg_temp_local_new();
2170 - TCGv t1 = tcg_temp_local_new(); 2170 + TCGv t1 = tcg_temp_new();
2171 2171
2172 cond = 0; 2172 cond = 0;
2173 /* Load needed operands */ 2173 /* Load needed operands */
@@ -2290,8 +2290,8 @@ static void gen_compute_branch (DisasContext *ctx, uint32_t opc, @@ -2290,8 +2290,8 @@ static void gen_compute_branch (DisasContext *ctx, uint32_t opc,
2290 target_ulong btgt = -1; 2290 target_ulong btgt = -1;
2291 int blink = 0; 2291 int blink = 0;
2292 int bcond_compute = 0; 2292 int bcond_compute = 0;
2293 - TCGv t0 = tcg_temp_local_new();  
2294 - TCGv t1 = tcg_temp_local_new(); 2293 + TCGv t0 = tcg_temp_new();
  2294 + TCGv t1 = tcg_temp_new();
2295 2295
2296 if (ctx->hflags & MIPS_HFLAG_BMASK) { 2296 if (ctx->hflags & MIPS_HFLAG_BMASK) {
2297 #ifdef MIPS_DEBUG_DISAS 2297 #ifdef MIPS_DEBUG_DISAS
@@ -2383,13 +2383,11 @@ static void gen_compute_branch (DisasContext *ctx, uint32_t opc, @@ -2383,13 +2383,11 @@ static void gen_compute_branch (DisasContext *ctx, uint32_t opc,
2383 MIPS_DEBUG("bnever (NOP)"); 2383 MIPS_DEBUG("bnever (NOP)");
2384 goto out; 2384 goto out;
2385 case OPC_BLTZAL: /* 0 < 0 */ 2385 case OPC_BLTZAL: /* 0 < 0 */
2386 - tcg_gen_movi_tl(t0, ctx->pc + 8);  
2387 - gen_store_gpr(t0, 31); 2386 + tcg_gen_movi_tl(cpu_gpr[31], ctx->pc + 8);
2388 MIPS_DEBUG("bnever and link"); 2387 MIPS_DEBUG("bnever and link");
2389 goto out; 2388 goto out;
2390 case OPC_BLTZALL: /* 0 < 0 likely */ 2389 case OPC_BLTZALL: /* 0 < 0 likely */
2391 - tcg_gen_movi_tl(t0, ctx->pc + 8);  
2392 - gen_store_gpr(t0, 31); 2390 + tcg_gen_movi_tl(cpu_gpr[31], ctx->pc + 8);
2393 /* Skip the instruction in the delay slot */ 2391 /* Skip the instruction in the delay slot */
2394 MIPS_DEBUG("bnever, link and skip"); 2392 MIPS_DEBUG("bnever, link and skip");
2395 ctx->pc += 4; 2393 ctx->pc += 4;
@@ -2427,82 +2425,80 @@ static void gen_compute_branch (DisasContext *ctx, uint32_t opc, @@ -2427,82 +2425,80 @@ static void gen_compute_branch (DisasContext *ctx, uint32_t opc,
2427 } else { 2425 } else {
2428 switch (opc) { 2426 switch (opc) {
2429 case OPC_BEQ: 2427 case OPC_BEQ:
2430 - gen_op_eq(t0, t0, t1); 2428 + gen_op_eq(bcond, t0, t1);
2431 MIPS_DEBUG("beq %s, %s, " TARGET_FMT_lx, 2429 MIPS_DEBUG("beq %s, %s, " TARGET_FMT_lx,
2432 regnames[rs], regnames[rt], btgt); 2430 regnames[rs], regnames[rt], btgt);
2433 goto not_likely; 2431 goto not_likely;
2434 case OPC_BEQL: 2432 case OPC_BEQL:
2435 - gen_op_eq(t0, t0, t1); 2433 + gen_op_eq(bcond, t0, t1);
2436 MIPS_DEBUG("beql %s, %s, " TARGET_FMT_lx, 2434 MIPS_DEBUG("beql %s, %s, " TARGET_FMT_lx,
2437 regnames[rs], regnames[rt], btgt); 2435 regnames[rs], regnames[rt], btgt);
2438 goto likely; 2436 goto likely;
2439 case OPC_BNE: 2437 case OPC_BNE:
2440 - gen_op_ne(t0, t0, t1); 2438 + gen_op_ne(bcond, t0, t1);
2441 MIPS_DEBUG("bne %s, %s, " TARGET_FMT_lx, 2439 MIPS_DEBUG("bne %s, %s, " TARGET_FMT_lx,
2442 regnames[rs], regnames[rt], btgt); 2440 regnames[rs], regnames[rt], btgt);
2443 goto not_likely; 2441 goto not_likely;
2444 case OPC_BNEL: 2442 case OPC_BNEL:
2445 - gen_op_ne(t0, t0, t1); 2443 + gen_op_ne(bcond, t0, t1);
2446 MIPS_DEBUG("bnel %s, %s, " TARGET_FMT_lx, 2444 MIPS_DEBUG("bnel %s, %s, " TARGET_FMT_lx,
2447 regnames[rs], regnames[rt], btgt); 2445 regnames[rs], regnames[rt], btgt);
2448 goto likely; 2446 goto likely;
2449 case OPC_BGEZ: 2447 case OPC_BGEZ:
2450 - gen_op_gez(t0, t0); 2448 + gen_op_gez(bcond, t0);
2451 MIPS_DEBUG("bgez %s, " TARGET_FMT_lx, regnames[rs], btgt); 2449 MIPS_DEBUG("bgez %s, " TARGET_FMT_lx, regnames[rs], btgt);
2452 goto not_likely; 2450 goto not_likely;
2453 case OPC_BGEZL: 2451 case OPC_BGEZL:
2454 - gen_op_gez(t0, t0); 2452 + gen_op_gez(bcond, t0);
2455 MIPS_DEBUG("bgezl %s, " TARGET_FMT_lx, regnames[rs], btgt); 2453 MIPS_DEBUG("bgezl %s, " TARGET_FMT_lx, regnames[rs], btgt);
2456 goto likely; 2454 goto likely;
2457 case OPC_BGEZAL: 2455 case OPC_BGEZAL:
2458 - gen_op_gez(t0, t0); 2456 + gen_op_gez(bcond, t0);
2459 MIPS_DEBUG("bgezal %s, " TARGET_FMT_lx, regnames[rs], btgt); 2457 MIPS_DEBUG("bgezal %s, " TARGET_FMT_lx, regnames[rs], btgt);
2460 blink = 31; 2458 blink = 31;
2461 goto not_likely; 2459 goto not_likely;
2462 case OPC_BGEZALL: 2460 case OPC_BGEZALL:
2463 - gen_op_gez(t0, t0); 2461 + gen_op_gez(bcond, t0);
2464 blink = 31; 2462 blink = 31;
2465 MIPS_DEBUG("bgezall %s, " TARGET_FMT_lx, regnames[rs], btgt); 2463 MIPS_DEBUG("bgezall %s, " TARGET_FMT_lx, regnames[rs], btgt);
2466 goto likely; 2464 goto likely;
2467 case OPC_BGTZ: 2465 case OPC_BGTZ:
2468 - gen_op_gtz(t0, t0); 2466 + gen_op_gtz(bcond, t0);
2469 MIPS_DEBUG("bgtz %s, " TARGET_FMT_lx, regnames[rs], btgt); 2467 MIPS_DEBUG("bgtz %s, " TARGET_FMT_lx, regnames[rs], btgt);
2470 goto not_likely; 2468 goto not_likely;
2471 case OPC_BGTZL: 2469 case OPC_BGTZL:
2472 - gen_op_gtz(t0, t0); 2470 + gen_op_gtz(bcond, t0);
2473 MIPS_DEBUG("bgtzl %s, " TARGET_FMT_lx, regnames[rs], btgt); 2471 MIPS_DEBUG("bgtzl %s, " TARGET_FMT_lx, regnames[rs], btgt);
2474 goto likely; 2472 goto likely;
2475 case OPC_BLEZ: 2473 case OPC_BLEZ:
2476 - gen_op_lez(t0, t0); 2474 + gen_op_lez(bcond, t0);
2477 MIPS_DEBUG("blez %s, " TARGET_FMT_lx, regnames[rs], btgt); 2475 MIPS_DEBUG("blez %s, " TARGET_FMT_lx, regnames[rs], btgt);
2478 goto not_likely; 2476 goto not_likely;
2479 case OPC_BLEZL: 2477 case OPC_BLEZL:
2480 - gen_op_lez(t0, t0); 2478 + gen_op_lez(bcond, t0);
2481 MIPS_DEBUG("blezl %s, " TARGET_FMT_lx, regnames[rs], btgt); 2479 MIPS_DEBUG("blezl %s, " TARGET_FMT_lx, regnames[rs], btgt);
2482 goto likely; 2480 goto likely;
2483 case OPC_BLTZ: 2481 case OPC_BLTZ:
2484 - gen_op_ltz(t0, t0); 2482 + gen_op_ltz(bcond, t0);
2485 MIPS_DEBUG("bltz %s, " TARGET_FMT_lx, regnames[rs], btgt); 2483 MIPS_DEBUG("bltz %s, " TARGET_FMT_lx, regnames[rs], btgt);
2486 goto not_likely; 2484 goto not_likely;
2487 case OPC_BLTZL: 2485 case OPC_BLTZL:
2488 - gen_op_ltz(t0, t0); 2486 + gen_op_ltz(bcond, t0);
2489 MIPS_DEBUG("bltzl %s, " TARGET_FMT_lx, regnames[rs], btgt); 2487 MIPS_DEBUG("bltzl %s, " TARGET_FMT_lx, regnames[rs], btgt);
2490 goto likely; 2488 goto likely;
2491 case OPC_BLTZAL: 2489 case OPC_BLTZAL:
2492 - gen_op_ltz(t0, t0); 2490 + gen_op_ltz(bcond, t0);
2493 blink = 31; 2491 blink = 31;
2494 MIPS_DEBUG("bltzal %s, " TARGET_FMT_lx, regnames[rs], btgt); 2492 MIPS_DEBUG("bltzal %s, " TARGET_FMT_lx, regnames[rs], btgt);
2495 not_likely: 2493 not_likely:
2496 ctx->hflags |= MIPS_HFLAG_BC; 2494 ctx->hflags |= MIPS_HFLAG_BC;
2497 - tcg_gen_trunc_tl_i32(bcond, t0);  
2498 break; 2495 break;
2499 case OPC_BLTZALL: 2496 case OPC_BLTZALL:
2500 - gen_op_ltz(t0, t0); 2497 + gen_op_ltz(bcond, t0);
2501 blink = 31; 2498 blink = 31;
2502 MIPS_DEBUG("bltzall %s, " TARGET_FMT_lx, regnames[rs], btgt); 2499 MIPS_DEBUG("bltzall %s, " TARGET_FMT_lx, regnames[rs], btgt);
2503 likely: 2500 likely:
2504 ctx->hflags |= MIPS_HFLAG_BL; 2501 ctx->hflags |= MIPS_HFLAG_BL;
2505 - tcg_gen_trunc_tl_i32(bcond, t0);  
2506 break; 2502 break;
2507 default: 2503 default:
2508 MIPS_INVAL("conditional branch/jump"); 2504 MIPS_INVAL("conditional branch/jump");
@@ -2515,8 +2511,7 @@ static void gen_compute_branch (DisasContext *ctx, uint32_t opc, @@ -2515,8 +2511,7 @@ static void gen_compute_branch (DisasContext *ctx, uint32_t opc,
2515 2511
2516 ctx->btarget = btgt; 2512 ctx->btarget = btgt;
2517 if (blink > 0) { 2513 if (blink > 0) {
2518 - tcg_gen_movi_tl(t0, ctx->pc + 8);  
2519 - gen_store_gpr(t0, blink); 2514 + tcg_gen_movi_tl(cpu_gpr[blink], ctx->pc + 8);
2520 } 2515 }
2521 2516
2522 out: 2517 out:
@@ -5537,10 +5532,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op, @@ -5537,10 +5532,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op,
5537 get_fp_cond(t0); 5532 get_fp_cond(t0);
5538 tcg_gen_andi_i32(t0, t0, 0x1 << cc); 5533 tcg_gen_andi_i32(t0, t0, 0x1 << cc);
5539 tcg_gen_brcondi_i32(TCG_COND_EQ, t0, 0, l1); 5534 tcg_gen_brcondi_i32(TCG_COND_EQ, t0, 0, l1);
5540 - tcg_gen_movi_i32(bcond, 0); 5535 + tcg_gen_movi_tl(bcond, 0);
5541 tcg_gen_br(l2); 5536 tcg_gen_br(l2);
5542 gen_set_label(l1); 5537 gen_set_label(l1);
5543 - tcg_gen_movi_i32(bcond, 1); 5538 + tcg_gen_movi_tl(bcond, 1);
5544 gen_set_label(l2); 5539 gen_set_label(l2);
5545 } 5540 }
5546 opn = "bc1f"; 5541 opn = "bc1f";
@@ -5553,10 +5548,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op, @@ -5553,10 +5548,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op,
5553 get_fp_cond(t0); 5548 get_fp_cond(t0);
5554 tcg_gen_andi_i32(t0, t0, 0x1 << cc); 5549 tcg_gen_andi_i32(t0, t0, 0x1 << cc);
5555 tcg_gen_brcondi_i32(TCG_COND_EQ, t0, 0, l1); 5550 tcg_gen_brcondi_i32(TCG_COND_EQ, t0, 0, l1);
5556 - tcg_gen_movi_i32(bcond, 0); 5551 + tcg_gen_movi_tl(bcond, 0);
5557 tcg_gen_br(l2); 5552 tcg_gen_br(l2);
5558 gen_set_label(l1); 5553 gen_set_label(l1);
5559 - tcg_gen_movi_i32(bcond, 1); 5554 + tcg_gen_movi_tl(bcond, 1);
5560 gen_set_label(l2); 5555 gen_set_label(l2);
5561 } 5556 }
5562 opn = "bc1fl"; 5557 opn = "bc1fl";
@@ -5569,10 +5564,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op, @@ -5569,10 +5564,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op,
5569 get_fp_cond(t0); 5564 get_fp_cond(t0);
5570 tcg_gen_andi_i32(t0, t0, 0x1 << cc); 5565 tcg_gen_andi_i32(t0, t0, 0x1 << cc);
5571 tcg_gen_brcondi_i32(TCG_COND_NE, t0, 0, l1); 5566 tcg_gen_brcondi_i32(TCG_COND_NE, t0, 0, l1);
5572 - tcg_gen_movi_i32(bcond, 0); 5567 + tcg_gen_movi_tl(bcond, 0);
5573 tcg_gen_br(l2); 5568 tcg_gen_br(l2);
5574 gen_set_label(l1); 5569 gen_set_label(l1);
5575 - tcg_gen_movi_i32(bcond, 1); 5570 + tcg_gen_movi_tl(bcond, 1);
5576 gen_set_label(l2); 5571 gen_set_label(l2);
5577 } 5572 }
5578 opn = "bc1t"; 5573 opn = "bc1t";
@@ -5585,10 +5580,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op, @@ -5585,10 +5580,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op,
5585 get_fp_cond(t0); 5580 get_fp_cond(t0);
5586 tcg_gen_andi_i32(t0, t0, 0x1 << cc); 5581 tcg_gen_andi_i32(t0, t0, 0x1 << cc);
5587 tcg_gen_brcondi_i32(TCG_COND_NE, t0, 0, l1); 5582 tcg_gen_brcondi_i32(TCG_COND_NE, t0, 0, l1);
5588 - tcg_gen_movi_i32(bcond, 0); 5583 + tcg_gen_movi_tl(bcond, 0);
5589 tcg_gen_br(l2); 5584 tcg_gen_br(l2);
5590 gen_set_label(l1); 5585 gen_set_label(l1);
5591 - tcg_gen_movi_i32(bcond, 1); 5586 + tcg_gen_movi_tl(bcond, 1);
5592 gen_set_label(l2); 5587 gen_set_label(l2);
5593 } 5588 }
5594 opn = "bc1tl"; 5589 opn = "bc1tl";
@@ -5603,10 +5598,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op, @@ -5603,10 +5598,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op,
5603 get_fp_cond(t0); 5598 get_fp_cond(t0);
5604 tcg_gen_andi_i32(t0, t0, 0x3 << cc); 5599 tcg_gen_andi_i32(t0, t0, 0x3 << cc);
5605 tcg_gen_brcondi_i32(TCG_COND_EQ, t0, 0, l1); 5600 tcg_gen_brcondi_i32(TCG_COND_EQ, t0, 0, l1);
5606 - tcg_gen_movi_i32(bcond, 0); 5601 + tcg_gen_movi_tl(bcond, 0);
5607 tcg_gen_br(l2); 5602 tcg_gen_br(l2);
5608 gen_set_label(l1); 5603 gen_set_label(l1);
5609 - tcg_gen_movi_i32(bcond, 1); 5604 + tcg_gen_movi_tl(bcond, 1);
5610 gen_set_label(l2); 5605 gen_set_label(l2);
5611 } 5606 }
5612 opn = "bc1any2f"; 5607 opn = "bc1any2f";
@@ -5619,10 +5614,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op, @@ -5619,10 +5614,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op,
5619 get_fp_cond(t0); 5614 get_fp_cond(t0);
5620 tcg_gen_andi_i32(t0, t0, 0x3 << cc); 5615 tcg_gen_andi_i32(t0, t0, 0x3 << cc);
5621 tcg_gen_brcondi_i32(TCG_COND_NE, t0, 0, l1); 5616 tcg_gen_brcondi_i32(TCG_COND_NE, t0, 0, l1);
5622 - tcg_gen_movi_i32(bcond, 0); 5617 + tcg_gen_movi_tl(bcond, 0);
5623 tcg_gen_br(l2); 5618 tcg_gen_br(l2);
5624 gen_set_label(l1); 5619 gen_set_label(l1);
5625 - tcg_gen_movi_i32(bcond, 1); 5620 + tcg_gen_movi_tl(bcond, 1);
5626 gen_set_label(l2); 5621 gen_set_label(l2);
5627 } 5622 }
5628 opn = "bc1any2t"; 5623 opn = "bc1any2t";
@@ -5635,10 +5630,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op, @@ -5635,10 +5630,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op,
5635 get_fp_cond(t0); 5630 get_fp_cond(t0);
5636 tcg_gen_andi_i32(t0, t0, 0xf << cc); 5631 tcg_gen_andi_i32(t0, t0, 0xf << cc);
5637 tcg_gen_brcondi_i32(TCG_COND_EQ, t0, 0, l1); 5632 tcg_gen_brcondi_i32(TCG_COND_EQ, t0, 0, l1);
5638 - tcg_gen_movi_i32(bcond, 0); 5633 + tcg_gen_movi_tl(bcond, 0);
5639 tcg_gen_br(l2); 5634 tcg_gen_br(l2);
5640 gen_set_label(l1); 5635 gen_set_label(l1);
5641 - tcg_gen_movi_i32(bcond, 1); 5636 + tcg_gen_movi_tl(bcond, 1);
5642 gen_set_label(l2); 5637 gen_set_label(l2);
5643 } 5638 }
5644 opn = "bc1any4f"; 5639 opn = "bc1any4f";
@@ -5651,10 +5646,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op, @@ -5651,10 +5646,10 @@ static void gen_compute_branch1 (CPUState *env, DisasContext *ctx, uint32_t op,
5651 get_fp_cond(t0); 5646 get_fp_cond(t0);
5652 tcg_gen_andi_i32(t0, t0, 0xf << cc); 5647 tcg_gen_andi_i32(t0, t0, 0xf << cc);
5653 tcg_gen_brcondi_i32(TCG_COND_NE, t0, 0, l1); 5648 tcg_gen_brcondi_i32(TCG_COND_NE, t0, 0, l1);
5654 - tcg_gen_movi_i32(bcond, 0); 5649 + tcg_gen_movi_tl(bcond, 0);
5655 tcg_gen_br(l2); 5650 tcg_gen_br(l2);
5656 gen_set_label(l1); 5651 gen_set_label(l1);
5657 - tcg_gen_movi_i32(bcond, 1); 5652 + tcg_gen_movi_tl(bcond, 1);
5658 gen_set_label(l2); 5653 gen_set_label(l2);
5659 } 5654 }
5660 opn = "bc1any4t"; 5655 opn = "bc1any4t";
@@ -7585,7 +7580,7 @@ static void decode_opc (CPUState *env, DisasContext *ctx) @@ -7585,7 +7580,7 @@ static void decode_opc (CPUState *env, DisasContext *ctx)
7585 int l1 = gen_new_label(); 7580 int l1 = gen_new_label();
7586 7581
7587 MIPS_DEBUG("blikely condition (" TARGET_FMT_lx ")", ctx->pc + 4); 7582 MIPS_DEBUG("blikely condition (" TARGET_FMT_lx ")", ctx->pc + 4);
7588 - tcg_gen_brcondi_i32(TCG_COND_NE, bcond, 0, l1); 7583 + tcg_gen_brcondi_tl(TCG_COND_NE, bcond, 0, l1);
7589 { 7584 {
7590 TCGv_i32 r_tmp = tcg_temp_new_i32(); 7585 TCGv_i32 r_tmp = tcg_temp_new_i32();
7591 7586
@@ -8147,7 +8142,7 @@ static void decode_opc (CPUState *env, DisasContext *ctx) @@ -8147,7 +8142,7 @@ static void decode_opc (CPUState *env, DisasContext *ctx)
8147 { 8142 {
8148 int l1 = gen_new_label(); 8143 int l1 = gen_new_label();
8149 8144
8150 - tcg_gen_brcondi_i32(TCG_COND_NE, bcond, 0, l1); 8145 + tcg_gen_brcondi_tl(TCG_COND_NE, bcond, 0, l1);
8151 gen_goto_tb(ctx, 1, ctx->pc + 4); 8146 gen_goto_tb(ctx, 1, ctx->pc + 4);
8152 gen_set_label(l1); 8147 gen_set_label(l1);
8153 gen_goto_tb(ctx, 0, ctx->btarget); 8148 gen_goto_tb(ctx, 0, ctx->btarget);
@@ -8440,8 +8435,8 @@ static void mips_tcg_init(void) @@ -8440,8 +8435,8 @@ static void mips_tcg_init(void)
8440 cpu_dspctrl = tcg_global_mem_new(TCG_AREG0, 8435 cpu_dspctrl = tcg_global_mem_new(TCG_AREG0,
8441 offsetof(CPUState, active_tc.DSPControl), 8436 offsetof(CPUState, active_tc.DSPControl),
8442 "DSPControl"); 8437 "DSPControl");
8443 - bcond = tcg_global_mem_new_i32(TCG_AREG0,  
8444 - offsetof(CPUState, bcond), "bcond"); 8438 + bcond = tcg_global_mem_new(TCG_AREG0,
  8439 + offsetof(CPUState, bcond), "bcond");
8445 btarget = tcg_global_mem_new(TCG_AREG0, 8440 btarget = tcg_global_mem_new(TCG_AREG0,
8446 offsetof(CPUState, btarget), "btarget"); 8441 offsetof(CPUState, btarget), "btarget");
8447 for (i = 0; i < 32; i++) 8442 for (i = 0; i < 32; i++)