diff --git a/common/x86/x86inc.asm b/common/x86/x86inc.asm index 6cc734052455c5dc7b0ed514ba57e2bebd54f547..0750b0a4794e6c44c0c1a81dc25508e324153f8c 100644 --- a/common/x86/x86inc.asm +++ b/common/x86/x86inc.asm @@ -1342,7 +1342,20 @@ INIT_XMM %1 %6, __src2 %endif %elif %0 >= 9 - __instr %6, %7, %8, %9 + %if avx_enabled && __sizeofreg >= 16 && %4 == 1 + %ifnnum regnumof%7 + %if %3 + vmovaps %6, %7 + %else + vmovdqa %6, %7 + %endif + __instr %6, %6, %8, %9 + %else + __instr %6, %7, %8, %9 + %endif + %else + __instr %6, %7, %8, %9 + %endif %elif %0 == 8 %if avx_enabled && __sizeofreg >= 16 && %4 == 0 %xdefine __src1 %7 @@ -1379,7 +1392,7 @@ INIT_XMM %else vmovdqa %6, %7 %endif - __instr %6, %8 + __instr %6, %6, %8 %else __instr %6, __src1, __src2 %endif