]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
target/i386: do not use MOVL to move data between SSE registers
authorPaolo Bonzini <pbonzini@redhat.com>
Fri, 26 Aug 2022 21:15:33 +0000 (23:15 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 1 Sep 2022 18:16:33 +0000 (20:16 +0200)
Write down explicitly the load/store sequence.

Extracted from a patch by Paul Brook <paul@nowt.org>.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
target/i386/tcg/translate.c

index b7972f0ff53dc5edcc0153d1d8e6824beb51f970..3237c1d8f9d34ef89d96cefa481d180d4d423202 100644 (file)
@@ -3295,8 +3295,10 @@ static void gen_sse(CPUX86State *env, DisasContext *s, int b,
                                 offsetof(CPUX86State, xmm_regs[reg].ZMM_L(3)));
             } else {
                 rm = (modrm & 7) | REX_B(s);
-                gen_op_movl(s, offsetof(CPUX86State, xmm_regs[reg].ZMM_L(0)),
-                            offsetof(CPUX86State,xmm_regs[rm].ZMM_L(0)));
+                tcg_gen_ld_i32(s->tmp2_i32, cpu_env,
+                               offsetof(CPUX86State, xmm_regs[rm].ZMM_L(0)));
+                tcg_gen_st_i32(s->tmp2_i32, cpu_env,
+                               offsetof(CPUX86State, xmm_regs[reg].ZMM_L(0)));
             }
             break;
         case 0x310: /* movsd xmm, ea */