Revision 36aa55dc target-mips/translate.c
b/target-mips/translate.c | ||
---|---|---|
693 | 693 |
if (ctx->hflags & MIPS_HFLAG_F64) |
694 | 694 |
tcg_gen_mov_i64(t, fpu_fpr64[reg]); |
695 | 695 |
else { |
696 |
TCGv r_tmp2 = tcg_temp_new(TCG_TYPE_I64); |
|
697 |
|
|
698 |
tcg_gen_extu_i32_i64(t, fpu_fpr32[reg | 1]); |
|
699 |
tcg_gen_shli_i64(t, t, 32); |
|
700 |
tcg_gen_extu_i32_i64(r_tmp2, fpu_fpr32[reg & ~1]); |
|
701 |
tcg_gen_or_i64(t, t, r_tmp2); |
|
702 |
tcg_temp_free(r_tmp2); |
|
696 |
tcg_gen_concat_i32_i64(t, fpu_fpr32[reg & ~1], fpu_fpr32[reg | 1]); |
|
703 | 697 |
} |
704 | 698 |
} |
705 | 699 |
|
... | ... | |
6546 | 6540 |
case FOP(38, 16): |
6547 | 6541 |
check_cp1_64bitmode(ctx); |
6548 | 6542 |
{ |
6549 |
TCGv fp64_0 = tcg_temp_new(TCG_TYPE_I64); |
|
6550 |
TCGv fp64_1 = tcg_temp_new(TCG_TYPE_I64); |
|
6543 |
TCGv fp64 = tcg_temp_new(TCG_TYPE_I64); |
|
6551 | 6544 |
TCGv fp32_0 = tcg_temp_new(TCG_TYPE_I32); |
6552 | 6545 |
TCGv fp32_1 = tcg_temp_new(TCG_TYPE_I32); |
6553 | 6546 |
|
6554 | 6547 |
gen_load_fpr32(fp32_0, fs); |
6555 | 6548 |
gen_load_fpr32(fp32_1, ft); |
6556 |
tcg_gen_extu_i32_i64(fp64_0, fp32_0); |
|
6557 |
tcg_gen_extu_i32_i64(fp64_1, fp32_1); |
|
6558 |
tcg_temp_free(fp32_0); |
|
6549 |
tcg_gen_concat_i32_i64(fp64, fp32_0, fp32_1); |
|
6559 | 6550 |
tcg_temp_free(fp32_1); |
6560 |
tcg_gen_shli_i64(fp64_1, fp64_1, 32); |
|
6561 |
tcg_gen_or_i64(fp64_0, fp64_0, fp64_1); |
|
6562 |
tcg_temp_free(fp64_1); |
|
6563 |
gen_store_fpr64(ctx, fp64_0, fd); |
|
6564 |
tcg_temp_free(fp64_0); |
|
6551 |
tcg_temp_free(fp32_0); |
|
6552 |
gen_store_fpr64(ctx, fp64, fd); |
|
6553 |
tcg_temp_free(fp64); |
|
6565 | 6554 |
} |
6566 | 6555 |
opn = "cvt.ps.s"; |
6567 | 6556 |
break; |
Also available in: Unified diff