X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=MdePkg%2FLibrary%2FBaseMemoryLibMmx%2FX64%2FSetMem16.asm;fp=MdePkg%2FLibrary%2FBaseMemoryLibMmx%2FX64%2FSetMem16.asm;h=01b72c55d56b177c34e17a44971cac36260b414a;hb=eb227e96bd06a5b0f2f933187a679e7fb3382cd9;hp=a95020876c98fe12a86645cc5e6f6d4658c8aaee;hpb=27169a56e67556796ab0410c8917436dc9aa2abf;p=mirror_edk2.git diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.asm b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.asm index a95020876c..01b72c55d5 100644 --- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.asm +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.asm @@ -23,23 +23,32 @@ .code +;------------------------------------------------------------------------------ +; VOID * +; EFIAPI +; InternalMemSetMem16 ( +; OUT VOID *Buffer, +; IN UINTN Length, +; IN UINT16 Value +; ); +;------------------------------------------------------------------------------ InternalMemSetMem16 PROC USES rdi mov rax, r8 - DB 48h, 0fh, 6eh, 0c0h ; movq mm0, rax + DB 48h, 0fh, 6eh, 0c0h ; movd mm0, rax mov r8, rcx mov rdi, r8 mov rcx, rdx - and rdx, 3 + and edx, 3 shr rcx, 2 jz @SetWords - DB 0fh, 70h, 0C0h, 00h ; pshufw mm0, mm0, 0h -@@: - DB 48h, 0fh, 0e7h, 07h ; movntq [rdi], mm0 + DB 0fh, 70h, 0C0h, 00h ; pshufw mm0, mm0, 0h +@@: + DB 0fh, 0e7h, 07h ; movntq [rdi], mm0 add rdi, 8 loop @B mfence @SetWords: - mov rcx, rdx + mov ecx, edx rep stosw mov rax, r8 ret