]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Library/BaseMemoryLibSse2/X64/SetMem16.nasm
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Library / BaseMemoryLibSse2 / X64 / SetMem16.nasm
CommitLineData
e53526ca
JJ
1;------------------------------------------------------------------------------\r
2;\r
3; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
9344f092 4; SPDX-License-Identifier: BSD-2-Clause-Patent\r
e53526ca
JJ
5;\r
6; Module Name:\r
7;\r
8; SetMem16.nasm\r
9;\r
10; Abstract:\r
11;\r
12; SetMem16 function\r
13;\r
14; Notes:\r
15;\r
16;------------------------------------------------------------------------------\r
17\r
18 DEFAULT REL\r
19 SECTION .text\r
20\r
21;------------------------------------------------------------------------------\r
22; VOID *\r
23; InternalMemSetMem16 (\r
24; IN VOID *Buffer,\r
25; IN UINTN Count,\r
26; IN UINT16 Value\r
27; )\r
28;------------------------------------------------------------------------------\r
29global ASM_PFX(InternalMemSetMem16)\r
30ASM_PFX(InternalMemSetMem16):\r
31 push rdi\r
32 mov rdi, rcx\r
33 mov r9, rdi\r
34 xor rcx, rcx\r
35 sub rcx, rdi\r
36 and rcx, 15\r
37 mov rax, r8\r
38 jz .0\r
39 shr rcx, 1\r
40 cmp rcx, rdx\r
41 cmova rcx, rdx\r
42 sub rdx, rcx\r
43 rep stosw\r
44.0:\r
45 mov rcx, rdx\r
46 and edx, 7\r
47 shr rcx, 3\r
48 jz @SetWords\r
49 movd xmm0, eax\r
50 pshuflw xmm0, xmm0, 0\r
51 movlhps xmm0, xmm0\r
52.1:\r
53 movntdq [rdi], xmm0\r
54 add rdi, 16\r
55 loop .1\r
56 mfence\r
57@SetWords:\r
58 mov ecx, edx\r
59 rep stosw\r
60 mov rax, r9\r
61 pop rdi\r
62 ret\r
63\r