Revision dabd98dd target-i386/translate.c
b/target-i386/translate.c | ||
---|---|---|
2621 | 2621 |
gen_sto_env_A0[s->mem_index >> 2](offsetof(CPUX86State,xmm_regs[reg])); |
2622 | 2622 |
break; |
2623 | 2623 |
case 0x6e: /* movd mm, ea */ |
2624 |
gen_ldst_modrm(s, modrm, OT_LONG, OR_TMP0, 0); |
|
2625 |
gen_op_movl_mm_T0_mmx(offsetof(CPUX86State,fpregs[reg].mmx)); |
|
2624 |
#ifdef TARGET_X86_64 |
|
2625 |
if (s->dflag == 2) { |
|
2626 |
gen_ldst_modrm(s, modrm, OT_QUAD, OR_TMP0, 0); |
|
2627 |
gen_op_movq_mm_T0_mmx(offsetof(CPUX86State,fpregs[reg].mmx)); |
|
2628 |
} else |
|
2629 |
#endif |
|
2630 |
{ |
|
2631 |
gen_ldst_modrm(s, modrm, OT_LONG, OR_TMP0, 0); |
|
2632 |
gen_op_movl_mm_T0_mmx(offsetof(CPUX86State,fpregs[reg].mmx)); |
|
2633 |
} |
|
2626 | 2634 |
break; |
2627 | 2635 |
case 0x16e: /* movd xmm, ea */ |
2628 |
gen_ldst_modrm(s, modrm, OT_LONG, OR_TMP0, 0); |
|
2629 |
gen_op_movl_mm_T0_xmm(offsetof(CPUX86State,xmm_regs[reg])); |
|
2636 |
#ifdef TARGET_X86_64 |
|
2637 |
if (s->dflag == 2) { |
|
2638 |
gen_ldst_modrm(s, modrm, OT_QUAD, OR_TMP0, 0); |
|
2639 |
gen_op_movq_mm_T0_xmm(offsetof(CPUX86State,xmm_regs[reg])); |
|
2640 |
} else |
|
2641 |
#endif |
|
2642 |
{ |
|
2643 |
gen_ldst_modrm(s, modrm, OT_LONG, OR_TMP0, 0); |
|
2644 |
gen_op_movl_mm_T0_xmm(offsetof(CPUX86State,xmm_regs[reg])); |
|
2645 |
} |
|
2630 | 2646 |
break; |
2631 | 2647 |
case 0x6f: /* movq mm, ea */ |
2632 | 2648 |
if (mod != 3) { |
... | ... | |
2750 | 2766 |
offsetof(CPUX86State,xmm_regs[reg].XMM_L(3))); |
2751 | 2767 |
break; |
2752 | 2768 |
case 0x7e: /* movd ea, mm */ |
2753 |
gen_op_movl_T0_mm_mmx(offsetof(CPUX86State,fpregs[reg].mmx)); |
|
2754 |
gen_ldst_modrm(s, modrm, OT_LONG, OR_TMP0, 1); |
|
2769 |
#ifdef TARGET_X86_64 |
|
2770 |
if (s->dflag == 2) { |
|
2771 |
gen_op_movq_T0_mm_mmx(offsetof(CPUX86State,fpregs[reg].mmx)); |
|
2772 |
gen_ldst_modrm(s, modrm, OT_QUAD, OR_TMP0, 1); |
|
2773 |
} else |
|
2774 |
#endif |
|
2775 |
{ |
|
2776 |
gen_op_movl_T0_mm_mmx(offsetof(CPUX86State,fpregs[reg].mmx)); |
|
2777 |
gen_ldst_modrm(s, modrm, OT_LONG, OR_TMP0, 1); |
|
2778 |
} |
|
2755 | 2779 |
break; |
2756 | 2780 |
case 0x17e: /* movd ea, xmm */ |
2757 |
gen_op_movl_T0_mm_xmm(offsetof(CPUX86State,xmm_regs[reg])); |
|
2758 |
gen_ldst_modrm(s, modrm, OT_LONG, OR_TMP0, 1); |
|
2781 |
#ifdef TARGET_X86_64 |
|
2782 |
if (s->dflag == 2) { |
|
2783 |
gen_op_movq_T0_mm_xmm(offsetof(CPUX86State,xmm_regs[reg])); |
|
2784 |
gen_ldst_modrm(s, modrm, OT_QUAD, OR_TMP0, 1); |
|
2785 |
} else |
|
2786 |
#endif |
|
2787 |
{ |
|
2788 |
gen_op_movl_T0_mm_xmm(offsetof(CPUX86State,xmm_regs[reg])); |
|
2789 |
gen_ldst_modrm(s, modrm, OT_LONG, OR_TMP0, 1); |
|
2790 |
} |
|
2759 | 2791 |
break; |
2760 | 2792 |
case 0x27e: /* movq xmm, ea */ |
2761 | 2793 |
if (mod != 3) { |
Also available in: Unified diff