diff options
Diffstat (limited to 'MdePkg/Library/BaseMemoryLibSse2/X64/SetMem64.nasm')
| -rw-r--r-- | MdePkg/Library/BaseMemoryLibSse2/X64/SetMem64.nasm | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/MdePkg/Library/BaseMemoryLibSse2/X64/SetMem64.nasm b/MdePkg/Library/BaseMemoryLibSse2/X64/SetMem64.nasm index d4f740e9d474..bff2cf46504e 100644 --- a/MdePkg/Library/BaseMemoryLibSse2/X64/SetMem64.nasm +++ b/MdePkg/Library/BaseMemoryLibSse2/X64/SetMem64.nasm @@ -37,17 +37,28 @@ ASM_PFX(InternalMemSetMem64): add rdx, 8 dec rcx .0: - shr rcx, 1 + push rbx + mov rbx, rcx + and rbx, 7 + shr rcx, 3 jz @SetQwords movlhps xmm0, xmm0 .1: movntdq [rdx], xmm0 - lea rdx, [rdx + 16] + movntdq [rdx + 16], xmm0 + movntdq [rdx + 32], xmm0 + movntdq [rdx + 48], xmm0 + lea rdx, [rdx + 64] loop .1 mfence @SetQwords: - jnc .2 - mov [rdx], r8 + push rdi + mov rcx, rbx + mov rax, r8 + mov rdi, rdx + rep stosq + pop rdi .2: + pop rbx ret |
