From af1a266670d040d2f4083ff309d732d648afba2a Mon Sep 17 00:00:00 2001 From: Angelos Mouzakitis Date: Tue, 10 Oct 2023 14:33:42 +0000 Subject: Add submodule dependency files Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec --- .../Library/BaseMemoryLibSse2/X64/SetMem16.nasm | 63 ++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 roms/edk2/MdePkg/Library/BaseMemoryLibSse2/X64/SetMem16.nasm (limited to 'roms/edk2/MdePkg/Library/BaseMemoryLibSse2/X64/SetMem16.nasm') diff --git a/roms/edk2/MdePkg/Library/BaseMemoryLibSse2/X64/SetMem16.nasm b/roms/edk2/MdePkg/Library/BaseMemoryLibSse2/X64/SetMem16.nasm new file mode 100644 index 000000000..90d159820 --- /dev/null +++ b/roms/edk2/MdePkg/Library/BaseMemoryLibSse2/X64/SetMem16.nasm @@ -0,0 +1,63 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2006, Intel Corporation. All rights reserved.
+; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; Module Name: +; +; SetMem16.nasm +; +; Abstract: +; +; SetMem16 function +; +; Notes: +; +;------------------------------------------------------------------------------ + + DEFAULT REL + SECTION .text + +;------------------------------------------------------------------------------ +; VOID * +; InternalMemSetMem16 ( +; IN VOID *Buffer, +; IN UINTN Count, +; IN UINT16 Value +; ) +;------------------------------------------------------------------------------ +global ASM_PFX(InternalMemSetMem16) +ASM_PFX(InternalMemSetMem16): + push rdi + mov rdi, rcx + mov r9, rdi + xor rcx, rcx + sub rcx, rdi + and rcx, 15 + mov rax, r8 + jz .0 + shr rcx, 1 + cmp rcx, rdx + cmova rcx, rdx + sub rdx, rcx + rep stosw +.0: + mov rcx, rdx + and edx, 7 + shr rcx, 3 + jz @SetWords + movd xmm0, eax + pshuflw xmm0, xmm0, 0 + movlhps xmm0, xmm0 +.1: + movntdq [rdi], xmm0 + add rdi, 16 + loop .1 + mfence +@SetWords: + mov ecx, edx + rep stosw + mov rax, r9 + pop rdi + ret + -- cgit 1.2.3-korg