diff options
Diffstat (limited to 'MdePkg/Library/BaseMemoryLibSse2')
47 files changed, 0 insertions, 3203 deletions
diff --git a/MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.msa b/MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.msa deleted file mode 100644 index 5415b3db95..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.msa +++ /dev/null @@ -1,103 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0">
- <MsaHeader>
- <ModuleName>BaseMemoryLibSse2</ModuleName>
- <ModuleType>BASE</ModuleType>
- <GuidValue>65a18235-5096-4032-8c63-214f0249ce8d</GuidValue>
- <Version>1.0</Version>
- <Abstract>Component description file for SSE2 Base Memory Library</Abstract>
- <Description>Base Memory Library that uses XMM registers for high performance.
- Optimized for use in DXE.</Description>
- <Copyright>Copyright (c) 2006, Intel Corporation</Copyright>
- <License>All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.</License>
- <Specification>FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052</Specification>
- </MsaHeader>
- <ModuleDefinitions>
- <SupportedArchitectures>IA32 X64</SupportedArchitectures>
- <BinaryModule>false</BinaryModule>
- <OutputFileBasename>BaseMemoryLibSse2</OutputFileBasename>
- </ModuleDefinitions>
- <LibraryClassDefinitions>
- <LibraryClass Usage="ALWAYS_PRODUCED">
- <Keyword>BaseMemoryLib</Keyword>
- </LibraryClass>
- <LibraryClass Usage="ALWAYS_CONSUMED">
- <Keyword>BaseLib</Keyword>
- </LibraryClass>
- <LibraryClass Usage="ALWAYS_CONSUMED">
- <Keyword>DebugLib</Keyword>
- </LibraryClass>
- </LibraryClassDefinitions>
- <SourceFiles>
- <Filename>MemLibInternals.h</Filename>
- <Filename SupArchList="IA32">MemLibGuid.c</Filename>
- <Filename SupArchList="IA32">CopyMemWrapper.c</Filename>
- <Filename SupArchList="IA32">SetMemWrapper.c</Filename>
- <Filename SupArchList="IA32">SetMem16Wrapper.c</Filename>
- <Filename SupArchList="IA32">SetMem32Wrapper.c</Filename>
- <Filename SupArchList="IA32">SetMem64Wrapper.c</Filename>
- <Filename SupArchList="IA32">CompareMemWrapper.c</Filename>
- <Filename SupArchList="IA32">ZeroMemWrapper.c</Filename>
- <Filename SupArchList="IA32">ScanMem8Wrapper.c</Filename>
- <Filename SupArchList="IA32">ScanMem16Wrapper.c</Filename>
- <Filename SupArchList="IA32">ScanMem32Wrapper.c</Filename>
- <Filename SupArchList="IA32">ScanMem64Wrapper.c</Filename>
- <Filename SupArchList="IA32">Ia32/CopyMem.asm</Filename>
- <Filename SupArchList="IA32">Ia32/SetMem.asm</Filename>
- <Filename SupArchList="IA32">Ia32/SetMem16.asm</Filename>
- <Filename SupArchList="IA32">Ia32/SetMem32.asm</Filename>
- <Filename SupArchList="IA32">Ia32/SetMem64.asm</Filename>
- <Filename SupArchList="IA32">Ia32/ZeroMem.asm</Filename>
- <Filename SupArchList="IA32">Ia32/CompareMem.asm</Filename>
- <Filename SupArchList="IA32">Ia32/ScanMem8.asm</Filename>
- <Filename SupArchList="IA32">Ia32/ScanMem16.asm</Filename>
- <Filename SupArchList="IA32">Ia32/ScanMem32.asm</Filename>
- <Filename SupArchList="IA32">Ia32/ScanMem64.asm</Filename>
- <Filename SupArchList="IA32">Ia32/CopyMem.S</Filename>
- <Filename SupArchList="IA32">Ia32/SetMem.S</Filename>
- <Filename SupArchList="IA32">Ia32/SetMem16.S</Filename>
- <Filename SupArchList="IA32">Ia32/SetMem32.S</Filename>
- <Filename SupArchList="IA32">Ia32/SetMem64.S</Filename>
- <Filename SupArchList="IA32">Ia32/ZeroMem.S</Filename>
- <Filename SupArchList="IA32">Ia32/CompareMem.S</Filename>
- <Filename SupArchList="IA32">Ia32/ScanMem8.S</Filename>
- <Filename SupArchList="IA32">Ia32/ScanMem16.S</Filename>
- <Filename SupArchList="IA32">Ia32/ScanMem32.S</Filename>
- <Filename SupArchList="IA32">Ia32/ScanMem64.S</Filename>
- <Filename SupArchList="X64">MemLibGuid.c</Filename>
- <Filename SupArchList="X64">CopyMemWrapper.c</Filename>
- <Filename SupArchList="X64">SetMemWrapper.c</Filename>
- <Filename SupArchList="X64">SetMem16Wrapper.c</Filename>
- <Filename SupArchList="X64">SetMem32Wrapper.c</Filename>
- <Filename SupArchList="X64">SetMem64Wrapper.c</Filename>
- <Filename SupArchList="X64">CompareMemWrapper.c</Filename>
- <Filename SupArchList="X64">ZeroMemWrapper.c</Filename>
- <Filename SupArchList="X64">ScanMem8Wrapper.c</Filename>
- <Filename SupArchList="X64">ScanMem16Wrapper.c</Filename>
- <Filename SupArchList="X64">ScanMem32Wrapper.c</Filename>
- <Filename SupArchList="X64">ScanMem64Wrapper.c</Filename>
- <Filename SupArchList="X64">x64/CopyMem.asm</Filename>
- <Filename SupArchList="X64">x64/SetMem.asm</Filename>
- <Filename SupArchList="X64">x64/SetMem16.asm</Filename>
- <Filename SupArchList="X64">x64/SetMem32.asm</Filename>
- <Filename SupArchList="X64">x64/SetMem64.asm</Filename>
- <Filename SupArchList="X64">x64/ZeroMem.asm</Filename>
- <Filename SupArchList="X64">x64/CompareMem.asm</Filename>
- <Filename SupArchList="X64">x64/ScanMem8.asm</Filename>
- <Filename SupArchList="X64">x64/ScanMem16.asm</Filename>
- <Filename SupArchList="X64">x64/ScanMem32.asm</Filename>
- <Filename SupArchList="X64">x64/ScanMem64.asm</Filename>
- </SourceFiles>
- <PackageDependencies>
- <Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
- </PackageDependencies>
- <Externs>
- <Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
- <Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
- </Externs>
-</ModuleSurfaceArea>
diff --git a/MdePkg/Library/BaseMemoryLibSse2/CompareMemWrapper.c b/MdePkg/Library/BaseMemoryLibSse2/CompareMemWrapper.c deleted file mode 100644 index 4c0d3eaadb..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/CompareMemWrapper.c +++ /dev/null @@ -1,67 +0,0 @@ -/** @file
- CompareMem() implementation.
-
- Copyright (c) 2006, Intel Corporation<BR>
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- Module Name: CompareMemWrapper.c
-
- The following BaseMemoryLib instances share the same version of this file:
-
- BaseMemoryLib
- BaseMemoryLibMmx
- BaseMemoryLibSse2
- BaseMemoryLibRepStr
- PeiMemoryLib
- DxeMemoryLib
-
-**/
-
-#include "MemLibInternals.h"
-
-/**
- Compares the contents of two buffers.
-
- This function compares Length bytes of SourceBuffer to Length bytes of DestinationBuffer.
- If all Length bytes of the two buffers are identical, then 0 is returned. Otherwise, the
- value returned is the first mismatched byte in SourceBuffer subtracted from the first
- mismatched byte in DestinationBuffer.
- If Length > 0 and DestinationBuffer is NULL and Length > 0, then ASSERT().
- If Length > 0 and SourceBuffer is NULL and Length > 0, then ASSERT().
- If Length is greater than (MAX_ADDRESS - DestinationBuffer + 1), then ASSERT().
- If Length is greater than (MAX_ADDRESS - SourceBuffer + 1), then ASSERT().
-
-
- @param DestinationBuffer Pointer to the destination buffer to compare.
- @param SourceBuffer Pointer to the source buffer to compare.
- @param Length Number of bytes to compare.
-
- @return 0 All Length bytes of the two buffers are identical.
- @retval Non-zero The first mismatched byte in SourceBuffer subtracted from the first
- mismatched byte in DestinationBuffer.
-
-**/
-INTN
-EFIAPI
-CompareMem (
- IN CONST VOID *DestinationBuffer,
- IN CONST VOID *SourceBuffer,
- IN UINTN Length
- )
-{
- if (Length == 0) {
- return 0;
- }
- ASSERT (DestinationBuffer != NULL);
- ASSERT (SourceBuffer != NULL);
- ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)DestinationBuffer));
- ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)SourceBuffer));
-
- return InternalMemCompareMem (DestinationBuffer, SourceBuffer, Length);
-}
diff --git a/MdePkg/Library/BaseMemoryLibSse2/CopyMemWrapper.c b/MdePkg/Library/BaseMemoryLibSse2/CopyMemWrapper.c deleted file mode 100644 index 9e620e2200..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/CopyMemWrapper.c +++ /dev/null @@ -1,62 +0,0 @@ -/** @file
- CopyMem() implementation.
-
- Copyright (c) 2006, Intel Corporation<BR>
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- Module Name: CopyMemWrapper.c
-
- The following BaseMemoryLib instances share the same version of this file:
-
- BaseMemoryLib
- BaseMemoryLibMmx
- BaseMemoryLibSse2
- BaseMemoryLibRepStr
- PeiMemoryLib
- DxeMemoryLib
-
-**/
-
-#include "MemLibInternals.h"
-
-/**
- Copies a source buffer to a destination buffer, and returns the destination buffer.
-
- This function copies Length bytes from SourceBuffer to DestinationBuffer, and returns
- DestinationBuffer. The implementation must be reentrant, and it must handle the case
- where SourceBuffer overlaps DestinationBuffer.
- If Length is greater than (MAX_ADDRESS - DestinationBuffer + 1), then ASSERT().
- If Length is greater than (MAX_ADDRESS - SourceBuffer + 1), then ASSERT().
-
- @param DestinationBuffer Pointer to the destination buffer of the memory copy.
- @param SourceBuffer Pointer to the source buffer of the memory copy.
- @param Length Number of bytes to copy from SourceBuffer to DestinationBuffer.
-
- @return DestinationBuffer.
-
-**/
-VOID *
-EFIAPI
-CopyMem (
- OUT VOID *DestinationBuffer,
- IN CONST VOID *SourceBuffer,
- IN UINTN Length
- )
-{
- if (Length == 0) {
- return DestinationBuffer;
- }
- ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)DestinationBuffer));
- ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)SourceBuffer));
-
- if (DestinationBuffer == SourceBuffer) {
- return DestinationBuffer;
- }
- return InternalMemCopyMem (DestinationBuffer, SourceBuffer, Length);
-}
diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/CompareMem.S b/MdePkg/Library/BaseMemoryLibSse2/Ia32/CompareMem.S deleted file mode 100644 index 725367b2f9..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/CompareMem.S +++ /dev/null @@ -1,53 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2006, Intel Corporation -# All rights reserved. This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# Module Name: -# -# CompareMem.Asm -# -# Abstract: -# -# CompareMem function -# -# Notes: -# -# The following BaseMemoryLib instances share the same version of this file: -# -# BaseMemoryLibRepStr -# BaseMemoryLibMmx -# BaseMemoryLibSse2 -# -#------------------------------------------------------------------------------ - -.globl _InternalMemCompareMem - -#------------------------------------------------------------------------------ -# INTN -# EFIAPI -# InternalMemCompareMem ( -# IN CONST VOID *DestinationBuffer, -# IN CONST VOID *SourceBuffer, -# IN UINTN Length -# ); -#------------------------------------------------------------------------------ -_InternalMemCompareMem: - push %esi - push %edi - movl 12(%esp), %esi - movl 16(%esp), %edi - movl 20(%esp), %ecx - repe cmpsb - movzbl -1(%esi), %eax - movzbl -1(%edi), %edx - subl %edx, %eax - pop %edi - pop %esi - ret diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/CompareMem.asm b/MdePkg/Library/BaseMemoryLibSse2/Ia32/CompareMem.asm deleted file mode 100644 index 1d0e7fad39..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/CompareMem.asm +++ /dev/null @@ -1,54 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; CompareMem.Asm
-;
-; Abstract:
-;
-; CompareMem function
-;
-; Notes:
-;
-; The following BaseMemoryLib instances share the same version of this file:
-;
-; BaseMemoryLibRepStr
-; BaseMemoryLibMmx
-; BaseMemoryLibSse2
-;
-;------------------------------------------------------------------------------
-
- .686
- .model flat,C
- .code
-
-;------------------------------------------------------------------------------
-; INTN
-; EFIAPI
-; InternalMemCompareMem (
-; IN CONST VOID *DestinationBuffer,
-; IN CONST VOID *SourceBuffer,
-; IN UINTN Length
-; );
-;------------------------------------------------------------------------------
-InternalMemCompareMem PROC USES esi edi
- mov esi, [esp + 12]
- mov edi, [esp + 16]
- mov ecx, [esp + 20]
- repe cmpsb
- movzx eax, byte ptr [esi - 1]
- movzx edx, byte ptr [edi - 1]
- sub eax, edx
- ret
-InternalMemCompareMem ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/CopyMem.S b/MdePkg/Library/BaseMemoryLibSse2/Ia32/CopyMem.S deleted file mode 100644 index ddbcbaf1b1..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/CopyMem.S +++ /dev/null @@ -1,85 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2006, Intel Corporation -# All rights reserved. This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# Module Name: -# -# CopyMem.asm -# -# Abstract: -# -# CopyMem function -# -# Notes: -# -#------------------------------------------------------------------------------ - -.globl _InternalMemCopyMem - -#------------------------------------------------------------------------------ -# VOID * -# EFIAPI -# InternalMemCopyMem ( -# IN VOID *Destination, -# IN VOID *Source, -# IN UINTN Count -# ); -#------------------------------------------------------------------------------ -_InternalMemCopyMem: - push %esi - push %edi - movl 16(%esp), %esi # esi <- Source - movl 12(%esp), %edi # edi <- Destination - movl 20(%esp), %edx # edx <- Count - leal -1(%esi,%edx,), %eax # eax <- End of Source - cmpl %edi, %esi - jae L0 - cmpl %edi, %eax # Overlapped? - jae L_CopyBackward # Copy backward if overlapped -L0: - xorl %ecx, %ecx - subl %edi, %ecx - andl $15, %ecx # ecx + edi aligns on 16-byte boundary - jz L1 - cmpl %edx, %ecx - cmova %edx, %ecx - subl %ecx, %edx # edx <- remaining bytes to copy - rep - movsb -L1: - movl %edx, %ecx - andl $15, %edx - shrl $4, %ecx # ecx <- # of DQwords to copy - jz L_CopyBytes - addl $-16, %esp - movdqu %xmm0, (%esp) -L2: - movdqu (%esi), %xmm0 - movntdq %xmm0, (%edi) - addl $16, %esi - addl $16, %edi - loop L2 - mfence - movdqu (%esp),%xmm0 - addl $16, %esp # stack cleanup - jmp L_CopyBytes -L_CopyBackward: - movl %eax, %esi # esi <- Last byte in Source - leal -1(%edi,%edx,), %edi # edi <- Last byte in Destination - std -L_CopyBytes: - movl %edx, %ecx - rep - movsb - cld - movl 12(%esp), %eax # eax <- Destination as return value - pop %edi - pop %esi - ret diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/CopyMem.asm b/MdePkg/Library/BaseMemoryLibSse2/Ia32/CopyMem.asm deleted file mode 100644 index 77fb786d98..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/CopyMem.asm +++ /dev/null @@ -1,84 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; CopyMem.asm
-;
-; Abstract:
-;
-; CopyMem function
-;
-; Notes:
-;
-;------------------------------------------------------------------------------
-
- .686
- .model flat,C
- .xmm
- .code
-
-;------------------------------------------------------------------------------
-; VOID *
-; InternalMemCopyMem (
-; IN VOID *Destination,
-; IN VOID *Source,
-; IN UINTN Count
-; );
-;------------------------------------------------------------------------------
-InternalMemCopyMem PROC USES esi edi
- mov esi, [esp + 16] ; esi <- Source
- mov edi, [esp + 12] ; edi <- Destination
- mov edx, [esp + 20] ; edx <- Count
- lea eax, [esi + edx - 1] ; eax <- End of Source
- cmp esi, edi
- jae @F
- cmp eax, edi ; Overlapped?
- jae @CopyBackward ; Copy backward if overlapped
-@@:
- xor ecx, ecx
- sub ecx, edi
- and ecx, 15 ; ecx + edi aligns on 16-byte boundary
- jz @F
- cmp ecx, edx
- cmova ecx, edx
- sub edx, ecx ; edx <- remaining bytes to copy
- rep movsb
-@@:
- mov ecx, edx
- and edx, 15
- shr ecx, 4 ; ecx <- # of DQwords to copy
- jz @CopyBytes
- add esp, -16
- movdqu [esp], xmm0 ; save xmm0
-@@:
- movdqu xmm0, [esi] ; esi may not be 16-bytes aligned
- movntdq [edi], xmm0 ; edi should be 16-bytes aligned
- add esi, 16
- add edi, 16
- loop @B
- mfence
- movdqu xmm0, [esp] ; restore xmm0
- add esp, 16 ; stack cleanup
- jmp @CopyBytes
-@CopyBackward:
- mov esi, eax ; esi <- Last byte in Source
- lea edi, [edi + edx - 1] ; edi <- Last byte in Destination
- std
-@CopyBytes:
- mov ecx, edx
- rep movsb
- cld
- mov eax, [esp + 12] ; eax <- Destination as return value
- ret
-InternalMemCopyMem ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem16.S b/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem16.S deleted file mode 100644 index 5e65b9667a..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem16.S +++ /dev/null @@ -1,50 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2006, Intel Corporation -# All rights reserved. This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# Module Name: -# -# ScanMem16.Asm -# -# Abstract: -# -# ScanMem16 function -# -# Notes: -# -# The following BaseMemoryLib instances share the same version of this file: -# -# BaseMemoryLibRepStr -# BaseMemoryLibMmx -# BaseMemoryLibSse2 -# -#------------------------------------------------------------------------------ - -.globl _InternalMemScanMem16 - -#------------------------------------------------------------------------------ -# CONST VOID * -# EFIAPI -# InternalMemScanMem16 ( -# IN CONST VOID *Buffer, -# IN UINTN Length, -# IN UINT16 Value -# ); -#------------------------------------------------------------------------------ -_InternalMemScanMem16: - push %edi - movl 12(%esp), %ecx - movl 8(%esp), %edi - movl 16(%esp), %eax - repne scasw - leal -2(%edi), %eax - cmovnz %ecx, %eax - pop %edi - ret diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem16.asm b/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem16.asm deleted file mode 100644 index 57fab61b77..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem16.asm +++ /dev/null @@ -1,53 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; ScanMem16.Asm
-;
-; Abstract:
-;
-; ScanMem16 function
-;
-; Notes:
-;
-; The following BaseMemoryLib instances share the same version of this file:
-;
-; BaseMemoryLibRepStr
-; BaseMemoryLibMmx
-; BaseMemoryLibSse2
-;
-;------------------------------------------------------------------------------
-
- .686
- .model flat,C
- .code
-
-;------------------------------------------------------------------------------
-; CONST VOID *
-; EFIAPI
-; InternalMemScanMem16 (
-; IN CONST VOID *Buffer,
-; IN UINTN Length,
-; IN UINT16 Value
-; );
-;------------------------------------------------------------------------------
-InternalMemScanMem16 PROC USES edi
- mov ecx, [esp + 12]
- mov edi, [esp + 8]
- mov eax, [esp + 16]
- repne scasw
- lea eax, [edi - 2]
- cmovnz eax, ecx
- ret
-InternalMemScanMem16 ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem32.S b/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem32.S deleted file mode 100644 index 5d46ed2bc1..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem32.S +++ /dev/null @@ -1,50 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2006, Intel Corporation -# All rights reserved. This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# Module Name: -# -# ScanMem32.Asm -# -# Abstract: -# -# ScanMem32 function -# -# Notes: -# -# The following BaseMemoryLib instances share the same version of this file: -# -# BaseMemoryLibRepStr -# BaseMemoryLibMmx -# BaseMemoryLibSse2 -# -#------------------------------------------------------------------------------ - -.globl _InternalMemScanMem32 - -#------------------------------------------------------------------------------ -# CONST VOID * -# EFIAPI -# InternalMemScanMem32 ( -# IN CONST VOID *Buffer, -# IN UINTN Length, -# IN UINT32 Value -# ); -#------------------------------------------------------------------------------ -_InternalMemScanMem32: - push %edi - movl 12(%esp), %ecx - movl 8(%esp), %edi - movl 16(%esp), %eax - repne scasl - leal -4(%edi), %eax - cmovnz %ecx, %eax - pop %edi - ret diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem32.asm b/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem32.asm deleted file mode 100644 index 6ac857ce16..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem32.asm +++ /dev/null @@ -1,53 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; ScanMem32.Asm
-;
-; Abstract:
-;
-; ScanMem32 function
-;
-; Notes:
-;
-; The following BaseMemoryLib instances share the same version of this file:
-;
-; BaseMemoryLibRepStr
-; BaseMemoryLibMmx
-; BaseMemoryLibSse2
-;
-;------------------------------------------------------------------------------
-
- .686
- .model flat,C
- .code
-
-;------------------------------------------------------------------------------
-; CONST VOID *
-; EFIAPI
-; InternalMemScanMem32 (
-; IN CONST VOID *Buffer,
-; IN UINTN Length,
-; IN UINT32 Value
-; );
-;------------------------------------------------------------------------------
-InternalMemScanMem32 PROC USES edi
- mov ecx, [esp + 12]
- mov edi, [esp + 8]
- mov eax, [esp + 16]
- repne scasd
- lea eax, [edi - 4]
- cmovnz eax, ecx
- ret
-InternalMemScanMem32 ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem64.S b/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem64.S deleted file mode 100644 index 3ba69650ab..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem64.S +++ /dev/null @@ -1,59 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2006, Intel Corporation -# All rights reserved. This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# Module Name: -# -# ScanMem64.Asm -# -# Abstract: -# -# ScanMem64 function -# -# Notes: -# -# The following BaseMemoryLib instances share the same version of this file: -# -# BaseMemoryLibRepStr -# BaseMemoryLibMmx -# BaseMemoryLibSse2 -# -#------------------------------------------------------------------------------ - -.globl _InternalMemScanMem64 - -#------------------------------------------------------------------------------ -# CONST VOID * -# EFIAPI -# InternalMemScanMem64 ( -# IN CONST VOID *Buffer, -# IN UINTN Length, -# IN UINT64 Value -# ); -#------------------------------------------------------------------------------ -_InternalMemScanMem64: - push %edi - movl 12(%esp), %ecx - movl 16(%esp), %eax - movl 20(%esp), %edx - movl 8(%esp), %edi -L0: - cmpl (%edi), %eax - leal 8(%edi), %edi - loopne L0 - jne L1 - cmpl -4(%edi), %edx - jecxz L1 - jne L0 -L1: - leal -8(%edi), %eax - cmovne %ecx, %eax - pop %edi - ret diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem64.asm b/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem64.asm deleted file mode 100644 index ca54f13738..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem64.asm +++ /dev/null @@ -1,62 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; ScanMem64.Asm
-;
-; Abstract:
-;
-; ScanMem64 function
-;
-; Notes:
-;
-; The following BaseMemoryLib instances share the same version of this file:
-;
-; BaseMemoryLibRepStr
-; BaseMemoryLibMmx
-; BaseMemoryLibSse2
-;
-;------------------------------------------------------------------------------
-
- .686
- .model flat,C
- .code
-
-;------------------------------------------------------------------------------
-; CONST VOID *
-; EFIAPI
-; InternalMemScanMem64 (
-; IN CONST VOID *Buffer,
-; IN UINTN Length,
-; IN UINT64 Value
-; );
-;------------------------------------------------------------------------------
-InternalMemScanMem64 PROC USES edi
- mov ecx, [esp + 12]
- mov eax, [esp + 16]
- mov edx, [esp + 20]
- mov edi, [esp + 8]
-@@:
- cmp eax, [edi]
- lea edi, [edi + 8]
- loopne @B
- jne @F
- cmp edx, [edi - 4]
- jecxz @F
- jne @B
-@@:
- lea eax, [edi - 8]
- cmovne eax, ecx
- ret
-InternalMemScanMem64 ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem8.S b/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem8.S deleted file mode 100644 index 7a834a5635..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem8.S +++ /dev/null @@ -1,50 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2006, Intel Corporation -# All rights reserved. This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# Module Name: -# -# ScanMem8.Asm -# -# Abstract: -# -# ScanMem8 function -# -# Notes: -# -# The following BaseMemoryLib instances share the same version of this file: -# -# BaseMemoryLibRepStr -# BaseMemoryLibMmx -# BaseMemoryLibSse2 -# -#------------------------------------------------------------------------------ - -.globl _InternalMemScanMem8 - -#------------------------------------------------------------------------------ -# CONST VOID * -# EFIAPI -# InternalMemScanMem8 ( -# IN CONST VOID *Buffer, -# IN UINTN Length, -# IN UINT8 Value -# ); -#------------------------------------------------------------------------------ -_InternalMemScanMem8: - push %edi - movl 12(%esp), %ecx - movl 8(%esp), %edi - movb 16(%esp), %al - repne scasb - leal -1(%edi), %eax - cmovnz %ecx, %eax - pop %edi - ret diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem8.asm b/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem8.asm deleted file mode 100644 index a3f65b64fa..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ScanMem8.asm +++ /dev/null @@ -1,53 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; ScanMem8.Asm
-;
-; Abstract:
-;
-; ScanMem8 function
-;
-; Notes:
-;
-; The following BaseMemoryLib instances share the same version of this file:
-;
-; BaseMemoryLibRepStr
-; BaseMemoryLibMmx
-; BaseMemoryLibSse2
-;
-;------------------------------------------------------------------------------
-
- .686
- .model flat,C
- .code
-
-;------------------------------------------------------------------------------
-; CONST VOID *
-; EFIAPI
-; InternalMemScanMem8 (
-; IN CONST VOID *Buffer,
-; IN UINTN Length,
-; IN UINT8 Value
-; );
-;------------------------------------------------------------------------------
-InternalMemScanMem8 PROC USES edi
- mov ecx, [esp + 12]
- mov edi, [esp + 8]
- mov al, [esp + 16]
- repne scasb
- lea eax, [edi - 1]
- cmovnz eax, ecx
- ret
-InternalMemScanMem8 ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem.S b/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem.S deleted file mode 100644 index 86bba889f2..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem.S +++ /dev/null @@ -1,76 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2006, Intel Corporation -# All rights reserved. This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# Module Name: -# -# SetMem.asm -# -# Abstract: -# -# SetMem function -# -# Notes: -# -#------------------------------------------------------------------------------ - - .686: - #.MODEL flat,C - .xmm: - .code: - -#------------------------------------------------------------------------------ -# VOID * -# _mem_SetMem ( -# IN VOID *Buffer, -# IN UINTN Count, -# IN UINT8 Value -# ); -#------------------------------------------------------------------------------ -.globl _InternalMemSetMem -_InternalMemSetMem: - push %edi - movl 12(%esp), %edx # edx <- Count - movl 8(%esp), %edi # edi <- Buffer - movb 16(%esp), %al # al <- Value - xorl %ecx, %ecx - subl %edi, %ecx - andl $15, %ecx # ecx + edi aligns on 16-byte boundary - jz L0 - cmpl %edx, %ecx - cmova %edx, %ecx - subl %ecx, %edx - rep - stosb -L0: - movl %edx, %ecx - andl $15, %edx - shrl $4, %ecx # ecx <- # of DQwords to set - jz L_SetBytes - movb %al, %ah # ax <- Value | (Value << 8) - addl $-16, %esp - movdqu %xmm0, (%esp) - movd %eax, %xmm0 - pshuflw $0, %xmm0, %xmm0 - movlhps %xmm0, %xmm0 -L1: - movntdq %xmm0, (%edi) - addl $16, %edi - loop L1 - mfence - movdqu (%esp), %xmm0 - addl $16, %esp # stack cleanup -L_SetBytes: - movl %edx, %ecx - rep - stosb - movl 8(%esp), %eax # eax <- Buffer as return value - pop %edi - ret diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem.asm b/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem.asm deleted file mode 100644 index a4de29c521..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem.asm +++ /dev/null @@ -1,75 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; SetMem.asm
-;
-; Abstract:
-;
-; SetMem function
-;
-; Notes:
-;
-;------------------------------------------------------------------------------
-
- .686
- .model flat,C
- .xmm
- .code
-
-;------------------------------------------------------------------------------
-; VOID *
-; EFIAPI
-; InternalMemSetMem (
-; IN VOID *Buffer,
-; IN UINTN Count,
-; IN UINT8 Value
-; );
-;------------------------------------------------------------------------------
-InternalMemSetMem PROC USES edi
- mov edx, [esp + 12] ; edx <- Count
- mov edi, [esp + 8] ; edi <- Buffer
- mov al, [esp + 16] ; al <- Value
- xor ecx, ecx
- sub ecx, edi
- and ecx, 15 ; ecx + edi aligns on 16-byte boundary
- jz @F
- cmp ecx, edx
- cmova ecx, edx
- sub edx, ecx
- rep stosb
-@@:
- mov ecx, edx
- and edx, 15
- shr ecx, 4 ; ecx <- # of DQwords to set
- jz @SetBytes
- mov ah, al ; ax <- Value | (Value << 8)
- add esp, -16
- movdqu [esp], xmm0 ; save xmm0
- movd xmm0, eax
- pshuflw xmm0, xmm0, 0 ; xmm0[0..63] <- Value repeats 8 times
- movlhps xmm0, xmm0 ; xmm0 <- Value repeats 16 times
-@@:
- movntdq [edi], xmm0 ; edi should be 16-byte aligned
- add edi, 16
- loop @B
- mfence
- movdqu xmm0, [esp] ; restore xmm0
- add esp, 16 ; stack cleanup
-@SetBytes:
- mov ecx, edx
- rep stosb
- mov eax, [esp + 8] ; eax <- Buffer as return value
- ret
-InternalMemSetMem ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem16.S b/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem16.S deleted file mode 100644 index 8ec96a9b6c..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem16.S +++ /dev/null @@ -1,69 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2006, Intel Corporation -# All rights reserved. This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# Module Name: -# -# SetMem16.asm -# -# Abstract: -# -# SetMem16 function -# -# Notes: -# -#------------------------------------------------------------------------------ - -.globl _InternalMemSetMem16 - -#------------------------------------------------------------------------------ -# VOID * -# EFIAPI -# InternalMemSetMem16 ( -# IN VOID *Buffer, -# IN UINTN Count, -# IN UINT16 Value -# ) -#------------------------------------------------------------------------------ -_InternalMemSetMem16: - push %edi - movl 12(%esp), %edx - movl 8(%esp), %edi - xorl %ecx, %ecx - subl %edi, %ecx - andl $15, %ecx # ecx + edi aligns on 16-byte boundary - movl 16(%esp), %eax - jz L0 - shrl %ecx - cmpl %edx, %ecx - cmova %edx, %ecx - subl %ecx, %edx - rep - stosw -L0: - movl %edx, %ecx - andl $7, %edx - shrl $3, %ecx - jz L_SetWords - movd %eax, %xmm0 - pshuflw $0, %xmm0, %xmm0 - movlhps %xmm0, %xmm0 -L1: - movntdq %xmm0, (%edi) - addl $16, %edi - loop L1 - mfence -L_SetWords: - movl %edx, %ecx - rep - stosw - movl 8(%esp), %eax - pop %edi - ret diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem16.asm b/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem16.asm deleted file mode 100644 index a709899fe2..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem16.asm +++ /dev/null @@ -1,71 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; SetMem16.asm
-;
-; Abstract:
-;
-; SetMem16 function
-;
-; Notes:
-;
-;------------------------------------------------------------------------------
-
- .686
- .model flat,C
- .xmm
- .code
-
-;------------------------------------------------------------------------------
-; VOID *
-; EFIAPI
-; InternalMemSetMem16 (
-; IN VOID *Buffer,
-; IN UINTN Count,
-; IN UINT16 Value
-; );
-;------------------------------------------------------------------------------
-InternalMemSetMem16 PROC USES edi
- mov edx, [esp + 12]
- mov edi, [esp + 8]
- xor ecx, ecx
- sub ecx, edi
- and ecx, 15 ; ecx + edi aligns on 16-byte boundary
- mov eax, [esp + 16]
- jz @F
- shr ecx, 1
- cmp ecx, edx
- cmova ecx, edx
- sub edx, ecx
- rep stosw
-@@:
- mov ecx, edx
- and edx, 7
- shr ecx, 3
- jz @SetWords
- movd xmm0, eax
- pshuflw xmm0, xmm0, 0
- movlhps xmm0, xmm0
-@@:
- movntdq [edi], xmm0 ; edi should be 16-byte aligned
- add edi, 16
- loop @B
- mfence
-@SetWords:
- mov ecx, edx
- rep stosw
- mov eax, [esp + 8]
- ret
-InternalMemSetMem16 ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem32.S b/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem32.S deleted file mode 100644 index f91169a6e0..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem32.S +++ /dev/null @@ -1,68 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2006, Intel Corporation -# All rights reserved. This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# Module Name: -# -# SetMem32.asm -# -# Abstract: -# -# SetMem32 function -# -# Notes: -# -#------------------------------------------------------------------------------ - -.globl _InternalMemSetMem32 - -#------------------------------------------------------------------------------ -# VOID * -# EFIAPI -# InternalMemSetMem32 ( -# IN VOID *Buffer, -# IN UINTN Count, -# IN UINT32 Value -# ); -#------------------------------------------------------------------------------ -_InternalMemSetMem32: - push %edi - movl 12(%esp), %edx - movl 8(%esp), %edi - xorl %ecx, %ecx - subl %edi, %ecx - andl $15, %ecx # ecx + edi aligns on 16-byte boundary - movl 16(%esp), %eax - jz L0 - shrl $2, %ecx - cmpl %edx, %ecx - cmova %edx, %ecx - subl %ecx, %edx - rep - stosl -L0: - movl %edx, %ecx - andl $3, %edx - shrl $2, %ecx - jz L_SetDwords - movd %eax, %xmm0 - pshufd $0, %xmm0, %xmm0 -L1: - movntdq %xmm0, (%edi) - addl $16, %edi - loop L1 - mfence -L_SetDwords: - movl %edx, %ecx - rep - stosl - movl 8(%esp), %eax - pop %edi - ret diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem32.asm b/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem32.asm deleted file mode 100644 index 99954a5e4b..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem32.asm +++ /dev/null @@ -1,70 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; SetMem32.asm
-;
-; Abstract:
-;
-; SetMem32 function
-;
-; Notes:
-;
-;------------------------------------------------------------------------------
-
- .686
- .model flat,C
- .xmm
- .code
-
-;------------------------------------------------------------------------------
-; VOID *
-; EFIAPI
-; InternalMemSetMem32 (
-; IN VOID *Buffer,
-; IN UINTN Count,
-; IN UINT32 Value
-; );
-;------------------------------------------------------------------------------
-InternalMemSetMem32 PROC USES edi
- mov edx, [esp + 12]
- mov edi, [esp + 8]
- xor ecx, ecx
- sub ecx, edi
- and ecx, 15 ; ecx + edi aligns on 16-byte boundary
- mov eax, [esp + 16]
- jz @F
- shr ecx, 2
- cmp ecx, edx
- cmova ecx, edx
- sub edx, ecx
- rep stosd
-@@:
- mov ecx, edx
- and edx, 3
- shr ecx, 2
- jz @SetDwords
- movd xmm0, eax
- pshufd xmm0, xmm0, 0
-@@:
- movntdq [edi], xmm0
- add edi, 16
- loop @B
- mfence
-@SetDwords:
- mov ecx, edx
- rep stosd
- mov eax, [esp + 8]
- ret
-InternalMemSetMem32 ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem64.S b/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem64.S deleted file mode 100644 index ef9918f0f9..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem64.S +++ /dev/null @@ -1,58 +0,0 @@ -#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006, Intel Corporation
-# All rights reserved. This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-# Module Name:
-#
-# SetMem64.S
-#
-# Abstract:
-#
-# SetMem64 function
-#
-# Notes:
-#
-#------------------------------------------------------------------------------
-
-.globl _InternalMemSetMem64
-
-#------------------------------------------------------------------------------
-# VOID *
-# EFIAPI
-# InternalMemSetMem64 (
-# IN VOID *Buffer,
-# IN UINTN Count,
-# IN UINT64 Value
-# );
-#------------------------------------------------------------------------------
-_InternalMemSetMem64:
- movl 4(%esp), %eax
- movl 8(%esp), %ecx
- testb $8, %al
- movl %eax, %edx
- movq 0xc(%esp), %xmm0
- jz L1
- movq %xmm0, (%edx)
- addl $8, %edx
- decl %ecx
-L1:
- shrl %ecx
- jz L_SetQwords
- movlhps %xmm0, %xmm0
-L2:
- movntdq %xmm0, (%edx)
- leal 16(%edx), %edx
- loop L2
- mfence
-L_SetQwords:
- jnc L3
- movq %xmm0, (%edx)
-L3:
- ret
diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem64.asm b/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem64.asm deleted file mode 100644 index 69406707a6..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem64.asm +++ /dev/null @@ -1,64 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; SetMem64.asm
-;
-; Abstract:
-;
-; SetMem64 function
-;
-; Notes:
-;
-;------------------------------------------------------------------------------
-
- .686
- .model flat,C
- .xmm
- .code
-
-;------------------------------------------------------------------------------
-; VOID *
-; EFIAPI
-; InternalMemSetMem64 (
-; IN VOID *Buffer,
-; IN UINTN Count,
-; IN UINT64 Value
-; )
-;------------------------------------------------------------------------------
-InternalMemSetMem64 PROC
- mov eax, [esp + 4] ; eax <- Buffer
- mov ecx, [esp + 8] ; ecx <- Count
- test al, 8
- mov edx, eax
- movq xmm0, [esp + 12]
- jz @F
- movq [edx], xmm0
- add edx, 8
- dec ecx
-@@:
- shr ecx, 1
- jz @SetQwords
- movlhps xmm0, xmm0
-@@:
- movntdq [edx], xmm0
- lea edx, [edx + 16]
- loop @B
- mfence
-@SetQwords:
- jnc @F
- movq [edx], xmm0
-@@:
- ret
-InternalMemSetMem64 ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ZeroMem.S b/MdePkg/Library/BaseMemoryLibSse2/Ia32/ZeroMem.S deleted file mode 100644 index 8b4157f741..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ZeroMem.S +++ /dev/null @@ -1,65 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2006, Intel Corporation -# All rights reserved. This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# Module Name: -# -# ZeroMem.asm -# -# Abstract: -# -# ZeroMem function -# -# Notes: -# -#------------------------------------------------------------------------------ - -.globl _InternalMemZeroMem - -#------------------------------------------------------------------------------ -# VOID * -# EFIAPI -# InternalMemZeroMem ( -# IN VOID *Buffer, -# IN UINTN Count -# ); -#------------------------------------------------------------------------------ -_InternalMemZeroMem: - push %edi - movl 8(%esp), %edi - movl 12(%esp), %edx - xorl %ecx, %ecx - subl %edi, %ecx - xorl %eax, %eax - andl $15, %ecx - jz L0 - cmpl %edx, %ecx - cmova %edx, %ecx - subl %ecx, %edx - rep - stosb -L0: - movl %edx, %ecx - andl $15, %edx - shrl $4, %ecx - jz L_ZeroBytes - pxor %xmm0, %xmm0 -L1: - movntdq %xmm0, (%edi) - addl $16, %edi - loop L1 - mfence -L_ZeroBytes: - movl %edx, %ecx - rep - stosb - movl 8(%esp), %eax - pop %edi - ret diff --git a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ZeroMem.asm b/MdePkg/Library/BaseMemoryLibSse2/Ia32/ZeroMem.asm deleted file mode 100644 index 3792c88879..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/Ia32/ZeroMem.asm +++ /dev/null @@ -1,67 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; ZeroMem.asm
-;
-; Abstract:
-;
-; ZeroMem function
-;
-; Notes:
-;
-;------------------------------------------------------------------------------
-
- .686
- .model flat,C
- .xmm
- .code
-
-;------------------------------------------------------------------------------
-; VOID *
-; EFIAPI
-; InternalMemZeroMem (
-; IN VOID *Buffer,
-; IN UINTN Count
-; );
-;------------------------------------------------------------------------------
-InternalMemZeroMem PROC USES edi
- mov edi, [esp + 8]
- mov edx, [esp + 12]
- xor ecx, ecx
- sub ecx, edi
- xor eax, eax
- and ecx, 15
- jz @F
- cmp ecx, edx
- cmova ecx, edx
- sub edx, ecx
- rep stosb
-@@:
- mov ecx, edx
- and edx, 15
- shr ecx, 4
- jz @ZeroBytes
- pxor xmm0, xmm0
-@@:
- movntdq [edi], xmm0
- add edi, 16
- loop @B
- mfence
-@ZeroBytes:
- mov ecx, edx
- rep stosb
- mov eax, [esp + 8]
- ret
-InternalMemZeroMem ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/MemLibGuid.c b/MdePkg/Library/BaseMemoryLibSse2/MemLibGuid.c deleted file mode 100644 index 6f50340bd7..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/MemLibGuid.c +++ /dev/null @@ -1,132 +0,0 @@ -/** @file
- Implementation of GUID functions.
-
- Copyright (c) 2006, Intel Corporation<BR>
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- Module Name: MemLibGuid.c
-
- The following BaseMemoryLib instances share the same version of this file:
-
- BaseMemoryLib
- BaseMemoryLibMmx
- BaseMemoryLibSse2
- BaseMemoryLibRepStr
- PeiMemoryLib
- DxeMemoryLib
-
-**/
-
-/**
- Copies a source GUID to a destination GUID.
-
- This function copies the contents of the 128-bit GUID specified by SourceGuid to
- DestinationGuid, and returns DestinationGuid.
- If DestinationGuid is NULL, then ASSERT().
- If SourceGuid is NULL, then ASSERT().
-
- @param DestinationGuid Pointer to the destination GUID.
- @param SourceGuid Pointer to the source GUID.
-
- @return DestinationGuid.
-
-**/
-GUID *
-EFIAPI
-CopyGuid (
- OUT GUID *DestinationGuid,
- IN CONST GUID *SourceGuid
- )
-{
- WriteUnaligned64 (
- (UINT64*)DestinationGuid,
- ReadUnaligned64 ((CONST UINT64*)SourceGuid)
- );
- WriteUnaligned64 (
- (UINT64*)DestinationGuid + 1,
- ReadUnaligned64 ((CONST UINT64*)SourceGuid + 1)
- );
- return DestinationGuid;
-}
-
-/**
- Compares two GUIDs.
-
- This function compares Guid1 to Guid2. If the GUIDs are identical then TRUE is returned.
- If there are any bit differences in the two GUIDs, then FALSE is returned.
- If Guid1 is NULL, then ASSERT().
- If Guid2 is NULL, then ASSERT().
-
- @param Guid1 A pointer to a 128 bit GUID.
- @param Guid2 A pointer to a 128 bit GUID.
-
- @retval TRUE Guid1 and Guid2 are identical.
- @retval FALSE Guid1 and Guid2 are not identical.
-
-**/
-BOOLEAN
-EFIAPI
-CompareGuid (
- IN CONST GUID *Guid1,
- IN CONST GUID *Guid2
- )
-{
- return (BOOLEAN)(
- ReadUnaligned64 ((CONST UINT64*)Guid1)
- == ReadUnaligned64 ((CONST UINT64*)Guid2) &&
- ReadUnaligned64 ((CONST UINT64*)Guid1 + 1)
- == ReadUnaligned64 ((CONST UINT64*)Guid2 + 1)
- );
-}
-
-/**
- Scans a target buffer for a GUID, and returns a pointer to the matching GUID
- in the target buffer.
-
- This function searches target the buffer specified by Buffer and Length from
- the lowest address to the highest address at 128-bit increments for the 128-bit
- GUID value that matches Guid. If a match is found, then a pointer to the matching
- GUID in the target buffer is returned. If no match is found, then NULL is returned.
- If Length is 0, then NULL is returned.
- If Length > 0 and Buffer is NULL, then ASSERT().
- If Buffer is not aligned on a 32-bit boundary, then ASSERT().
- If Length is not aligned on a 128-bit boundary, then ASSERT().
- If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().
-
- @param Buffer Pointer to the target buffer to scan.
- @param Length Number of bytes in Buffer to scan.
- @param Guid Value to search for in the target buffer.
-
- @return A pointer to the matching Guid in the target buffer or NULL otherwise.
-
-**/
-VOID *
-EFIAPI
-ScanGuid (
- IN CONST VOID *Buffer,
- IN UINTN Length,
- IN CONST GUID *Guid
- )
-{
- CONST GUID *GuidPtr;
-
- ASSERT (((UINTN)Buffer & (sizeof (Guid->Data1) - 1)) == 0);
- ASSERT (Length <= (MAX_ADDRESS - (UINTN)Buffer + 1));
- ASSERT ((Length & (sizeof (*GuidPtr) - 1)) == 0);
-
- GuidPtr = (GUID*)Buffer;
- Buffer = GuidPtr + Length / sizeof (*GuidPtr);
- while (GuidPtr < (CONST GUID*)Buffer) {
- if (CompareGuid (GuidPtr, Guid)) {
- return (VOID*)GuidPtr;
- }
- GuidPtr++;
- }
- return NULL;
-}
diff --git a/MdePkg/Library/BaseMemoryLibSse2/MemLibInternals.h b/MdePkg/Library/BaseMemoryLibSse2/MemLibInternals.h deleted file mode 100644 index 8646b24e79..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/MemLibInternals.h +++ /dev/null @@ -1,230 +0,0 @@ -/** @file
- Declaration of internal functions for Base Memory Library.
-
- Copyright (c) 2006, Intel Corporation<BR>
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- Module Name: MemLibInternals.h
-
- The following BaseMemoryLib instances share the same version of this file:
-
- BaseMemoryLib
- BaseMemoryLibMmx
- BaseMemoryLibSse2
- BaseMemoryLibRepStr
- PeiMemoryLib
- DxeMemoryLib
-
-**/
-
-#ifndef __MEM_LIB_INTERNALS__
-#define __MEM_LIB_INTERNALS__
-
-/**
- Copy Length bytes from Source to Destination.
-
- @param Destination Target of copy
- @param Source Place to copy from
- @param Length Number of bytes to copy
-
- @return Destination
-
-**/
-VOID *
-EFIAPI
-InternalMemCopyMem (
- OUT VOID *DestinationBuffer,
- IN CONST VOID *SourceBuffer,
- IN UINTN Length
- );
-
-/**
- Set Buffer to Value for Size bytes.
-
- @param Buffer Memory to set.
- @param Size Number of bytes to set
- @param Value Value of the set operation.
-
- @return Buffer
-
-**/
-VOID *
-EFIAPI
-InternalMemSetMem (
- OUT VOID *Buffer,
- IN UINTN Length,
- IN UINT8 Value
- );
-
-/**
- Fills a target buffer with a 16-bit value, and returns the target buffer.
-
- @param Buffer Pointer to the target buffer to fill.
- @param Length Number of bytes in Buffer to fill.
- @param Value Value with which to fill Length bytes of Buffer.
-
- @return Buffer
-
-**/
-VOID *
-EFIAPI
-InternalMemSetMem16 (
- OUT VOID *Buffer,
- IN UINTN Length,
- IN UINT16 Value
- );
-
-/**
- Fills a target buffer with a 32-bit value, and returns the target buffer.
-
- @param Buffer Pointer to the target buffer to fill.
- @param Length Number of bytes in Buffer to fill.
- @param Value Value with which to fill Length bytes of Buffer.
-
- @return Buffer
-
-**/
-VOID *
-EFIAPI
-InternalMemSetMem32 (
- OUT VOID *Buffer,
- IN UINTN Length,
- IN UINT32 Value
- );
-
-/**
- Fills a target buffer with a 64-bit value, and returns the target buffer.
-
- @param Buffer Pointer to the target buffer to fill.
- @param Length Number of bytes in Buffer to fill.
- @param Value Value with which to fill Length bytes of Buffer.
-
- @return Buffer
-
-**/
-VOID *
-EFIAPI
-InternalMemSetMem64 (
- OUT VOID *Buffer,
- IN UINTN Length,
- IN UINT64 Value
- );
-
-/**
- Set Buffer to 0 for Size bytes.
-
- @param Buffer Memory to set.
- @param Size Number of bytes to set
-
- @return Buffer
-
-**/
-VOID *
-EFIAPI
-InternalMemZeroMem (
- OUT VOID *Buffer,
- IN UINTN Length
- );
-
-/**
- Compares two memory buffers of a given length.
-
- @param DestinationBuffer First memory buffer
- @param SourceBuffer Second memory buffer
- @param Length Length of DestinationBuffer and SourceBuffer memory
- regions to compare. Must be non-zero.
-
- @retval 0 if MemOne == MemTwo
-
-**/
-INTN
-EFIAPI
-InternalMemCompareMem (
- IN CONST VOID *DestinationBuffer,
- IN CONST VOID *SourceBuffer,
- IN UINTN Length
- );
-
-/**
- Scans a target buffer for an 8-bit value, and returns a pointer to the
- matching 8-bit value in the target buffer.
-
- @param Buffer Pointer to the target buffer to scan.
- @param Length Number of bytes in Buffer to scan. Must be non-zero.
- @param Value Value to search for in the target buffer.
-
- @return Pointer to the first occurrence or NULL if not found.
-
-**/
-CONST VOID *
-EFIAPI
-InternalMemScanMem8 (
- IN CONST VOID *Buffer,
- IN UINTN Length,
- IN UINT8 Value
- );
-
-/**
- Scans a target buffer for a 16-bit value, and returns a pointer to the
- matching 16-bit value in the target buffer.
-
- @param Buffer Pointer to the target buffer to scan.
- @param Length Number of bytes in Buffer to scan. Must be non-zero.
- @param Value Value to search for in the target buffer.
-
- @return Pointer to the first occurrence or NULL if not found.
-
-**/
-CONST VOID *
-EFIAPI
-InternalMemScanMem16 (
- IN CONST VOID *Buffer,
- IN UINTN Length,
- IN UINT16 Value
- );
-
-/**
- Scans a target buffer for a 32-bit value, and returns a pointer to the
- matching 32-bit value in the target buffer.
-
- @param Buffer Pointer to the target buffer to scan.
- @param Length Number of bytes in Buffer to scan. Must be non-zero.
- @param Value Value to search for in the target buffer.
-
- @return Pointer to the first occurrence or NULL if not found.
-
-**/
-CONST VOID *
-EFIAPI
-InternalMemScanMem32 (
- IN CONST VOID *Buffer,
- IN UINTN Length,
- IN UINT32 Value
- );
-
-/**
- Scans a target buffer for a 64-bit value, and returns a pointer to the
- matching 64-bit value in the target buffer.
-
- @param Buffer Pointer to the target buffer to scan.
- @param Length Number of bytes in Buffer to scan. Must be non-zero.
- @param Value Value to search for in the target buffer.
-
- @return Pointer to the first occurrence or NULL if not found.
-
-**/
-CONST VOID *
-EFIAPI
-InternalMemScanMem64 (
- IN CONST VOID *Buffer,
- IN UINTN Length,
- IN UINT64 Value
- );
-
-#endif
diff --git a/MdePkg/Library/BaseMemoryLibSse2/ScanMem16Wrapper.c b/MdePkg/Library/BaseMemoryLibSse2/ScanMem16Wrapper.c deleted file mode 100644 index 95f134bbda..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/ScanMem16Wrapper.c +++ /dev/null @@ -1,66 +0,0 @@ -/** @file
- ScanMem16() implementation.
-
- Copyright (c) 2006, Intel Corporation<BR>
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- Module Name: ScanMem16Wrapper.c
-
- The following BaseMemoryLib instances share the same version of this file:
-
- BaseMemoryLib
- BaseMemoryLibMmx
- BaseMemoryLibSse2
- BaseMemoryLibRepStr
- PeiMemoryLib
- DxeMemoryLib
-
-**/
-
-#include "MemLibInternals.h"
-
-/**
- Scans a target buffer for a 16-bit value, and returns a pointer to the matching 16-bit value
- in the target buffer.
-
- This function searches target the buffer specified by Buffer and Length from the lowest
- address to the highest address for a 16-bit value that matches Value. If a match is found,
- then a pointer to the matching byte in the target buffer is returned. If no match is found,
- then NULL is returned. If Length is 0, then NULL is returned.
- If Length > 0 and Buffer is NULL, then ASSERT().
- If Buffer is not aligned on a 16-bit boundary, then ASSERT().
- If Length is not aligned on a 16-bit boundary, then ASSERT().
- If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().
-
- @param Buffer Pointer to the target buffer to scan.
- @param Length Number of bytes in Buffer to scan.
- @param Value Value to search for in the target buffer.
-
- @return A pointer to the matching byte in the target buffer or NULL otherwise.
-
-**/
-VOID *
-EFIAPI
-ScanMem16 (
- IN CONST VOID *Buffer,
- IN UINTN Length,
- IN UINT16 Value
- )
-{
- if (Length == 0) {
- return NULL;
- }
-
- ASSERT (Buffer != NULL);
- ASSERT (((UINTN)Buffer & (sizeof (Value) - 1)) == 0);
- ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer));
- ASSERT ((Length & (sizeof (Value) - 1)) == 0);
-
- return (VOID*)InternalMemScanMem16 (Buffer, Length / sizeof (Value), Value);
-}
diff --git a/MdePkg/Library/BaseMemoryLibSse2/ScanMem32Wrapper.c b/MdePkg/Library/BaseMemoryLibSse2/ScanMem32Wrapper.c deleted file mode 100644 index 6a3dcd7ad2..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/ScanMem32Wrapper.c +++ /dev/null @@ -1,66 +0,0 @@ -/** @file
- ScanMem32() implementation.
-
- Copyright (c) 2006, Intel Corporation<BR>
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- Module Name: ScanMem32Wrapper.c
-
- The following BaseMemoryLib instances share the same version of this file:
-
- BaseMemoryLib
- BaseMemoryLibMmx
- BaseMemoryLibSse2
- BaseMemoryLibRepStr
- PeiMemoryLib
- DxeMemoryLib
-
-**/
-
-#include "MemLibInternals.h"
-
-/**
- Scans a target buffer for a 32-bit value, and returns a pointer to the matching 32-bit value
- in the target buffer.
-
- This function searches target the buffer specified by Buffer and Length from the lowest
- address to the highest address for a 32-bit value that matches Value. If a match is found,
- then a pointer to the matching byte in the target buffer is returned. If no match is found,
- then NULL is returned. If Length is 0, then NULL is returned.
- If Length > 0 and Buffer is NULL, then ASSERT().
- If Buffer is not aligned on a 32-bit boundary, then ASSERT().
- If Length is not aligned on a 32-bit boundary, then ASSERT().
- If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().
-
- @param Buffer Pointer to the target buffer to scan.
- @param Length Number of bytes in Buffer to scan.
- @param Value Value to search for in the target buffer.
-
- @return A pointer to the matching byte in the target buffer or NULL otherwise.
-
-**/
-VOID *
-EFIAPI
-ScanMem32 (
- IN CONST VOID *Buffer,
- IN UINTN Length,
- IN UINT32 Value
- )
-{
- if (Length == 0) {
- return NULL;
- }
-
- ASSERT (Buffer != NULL);
- ASSERT (((UINTN)Buffer & (sizeof (Value) - 1)) == 0);
- ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer));
- ASSERT ((Length & (sizeof (Value) - 1)) == 0);
-
- return (VOID*)InternalMemScanMem32 (Buffer, Length / sizeof (Value), Value);
-}
diff --git a/MdePkg/Library/BaseMemoryLibSse2/ScanMem64Wrapper.c b/MdePkg/Library/BaseMemoryLibSse2/ScanMem64Wrapper.c deleted file mode 100644 index b355fe647c..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/ScanMem64Wrapper.c +++ /dev/null @@ -1,66 +0,0 @@ -/** @file
- ScanMem64() implementation.
-
- Copyright (c) 2006, Intel Corporation<BR>
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- Module Name: ScanMem64Wrapper.c
-
- The following BaseMemoryLib instances share the same version of this file:
-
- BaseMemoryLib
- BaseMemoryLibMmx
- BaseMemoryLibSse2
- BaseMemoryLibRepStr
- PeiMemoryLib
- DxeMemoryLib
-
-**/
-
-#include "MemLibInternals.h"
-
-/**
- Scans a target buffer for a 64-bit value, and returns a pointer to the matching 64-bit value
- in the target buffer.
-
- This function searches target the buffer specified by Buffer and Length from the lowest
- address to the highest address for a 64-bit value that matches Value. If a match is found,
- then a pointer to the matching byte in the target buffer is returned. If no match is found,
- then NULL is returned. If Length is 0, then NULL is returned.
- If Length > 0 and Buffer is NULL, then ASSERT().
- If Buffer is not aligned on a 64-bit boundary, then ASSERT().
- If Length is not aligned on a 64-bit boundary, then ASSERT().
- If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().
-
- @param Buffer Pointer to the target buffer to scan.
- @param Length Number of bytes in Buffer to scan.
- @param Value Value to search for in the target buffer.
-
- @return A pointer to the matching byte in the target buffer or NULL otherwise.
-
-**/
-VOID *
-EFIAPI
-ScanMem64 (
- IN CONST VOID *Buffer,
- IN UINTN Length,
- IN UINT64 Value
- )
-{
- if (Length == 0) {
- return NULL;
- }
-
- ASSERT (Buffer != NULL);
- ASSERT (((UINTN)Buffer & (sizeof (Value) - 1)) == 0);
- ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer));
- ASSERT ((Length & (sizeof (Value) - 1)) == 0);
-
- return (VOID*)InternalMemScanMem64 (Buffer, Length / sizeof (Value), Value);
-}
diff --git a/MdePkg/Library/BaseMemoryLibSse2/ScanMem8Wrapper.c b/MdePkg/Library/BaseMemoryLibSse2/ScanMem8Wrapper.c deleted file mode 100644 index 2b21b22166..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/ScanMem8Wrapper.c +++ /dev/null @@ -1,61 +0,0 @@ -/** @file
- ScanMem8() implementation.
-
- Copyright (c) 2006, Intel Corporation<BR>
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- Module Name: ScanMem8Wrapper.c
-
- The following BaseMemoryLib instances share the same version of this file:
-
- BaseMemoryLib
- BaseMemoryLibMmx
- BaseMemoryLibSse2
- BaseMemoryLibRepStr
- PeiMemoryLib
- DxeMemoryLib
-
-**/
-
-#include "MemLibInternals.h"
-
-/**
- Scans a target buffer for an 8-bit value, and returns a pointer to the matching 8-bit value
- in the target buffer.
-
- This function searches target the buffer specified by Buffer and Length from the lowest
- address to the highest address for an 8-bit value that matches Value. If a match is found,
- then a pointer to the matching byte in the target buffer is returned. If no match is found,
- then NULL is returned. If Length is 0, then NULL is returned.
- If Length > 0 and Buffer is NULL, then ASSERT().
- If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().
-
- @param Buffer Pointer to the target buffer to scan.
- @param Length Number of bytes in Buffer to scan.
- @param Value Value to search for in the target buffer.
-
- @return A pointer to the matching byte in the target buffer or NULL otherwise.
-
-**/
-VOID *
-EFIAPI
-ScanMem8 (
- IN CONST VOID *Buffer,
- IN UINTN Length,
- IN UINT8 Value
- )
-{
- if (Length == 0) {
- return NULL;
- }
- ASSERT (Buffer != NULL);
- ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer));
-
- return (VOID*)InternalMemScanMem8 (Buffer, Length, Value);
-}
diff --git a/MdePkg/Library/BaseMemoryLibSse2/SetMem16Wrapper.c b/MdePkg/Library/BaseMemoryLibSse2/SetMem16Wrapper.c deleted file mode 100644 index 889339c953..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/SetMem16Wrapper.c +++ /dev/null @@ -1,65 +0,0 @@ -/** @file
- SetMem16() implementation.
-
- Copyright (c) 2006, Intel Corporation<BR>
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- Module Name: SetMem16Wrapper.c
-
- The following BaseMemoryLib instances share the same version of this file:
-
- BaseMemoryLib
- BaseMemoryLibMmx
- BaseMemoryLibSse2
- BaseMemoryLibRepStr
- PeiMemoryLib
- DxeMemoryLib
-
-**/
-
-#include "MemLibInternals.h"
-
-/**
- Fills a target buffer with a 16-bit value, and returns the target buffer.
-
- This function fills Length bytes of Buffer with the 16-bit value specified by
- Value, and returns Buffer. Value is repeated every 16-bits in for Length
- bytes of Buffer.
-
- If Length > 0 and Buffer is NULL, then ASSERT().
- If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
- If Buffer is not aligned on a 16-bit boundary, then ASSERT().
- If Length is not aligned on a 16-bit boundary, then ASSERT().
-
- @param Buffer Pointer to the target buffer to fill.
- @param Length Number of bytes in Buffer to fill.
- @param Value Value with which to fill Length bytes of Buffer.
-
- @return Buffer.
-
-**/
-VOID *
-EFIAPI
-SetMem16 (
- OUT VOID *Buffer,
- IN UINTN Length,
- IN UINT16 Value
- )
-{
- if (Length == 0) {
- return Buffer;
- }
-
- ASSERT (Buffer != NULL);
- ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer));
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
- ASSERT ((Length & (sizeof (Value) - 1)) == 0);
-
- return InternalMemSetMem16 (Buffer, Length / sizeof (Value), Value);
-}
diff --git a/MdePkg/Library/BaseMemoryLibSse2/SetMem32Wrapper.c b/MdePkg/Library/BaseMemoryLibSse2/SetMem32Wrapper.c deleted file mode 100644 index 15f8205ebc..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/SetMem32Wrapper.c +++ /dev/null @@ -1,65 +0,0 @@ -/** @file
- SetMem32() implementation.
-
- Copyright (c) 2006, Intel Corporation<BR>
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- Module Name: SetMem32Wrapper.c
-
- The following BaseMemoryLib instances share the same version of this file:
-
- BaseMemoryLib
- BaseMemoryLibMmx
- BaseMemoryLibSse2
- BaseMemoryLibRepStr
- PeiMemoryLib
- DxeMemoryLib
-
-**/
-
-#include "MemLibInternals.h"
-
-/**
- Fills a target buffer with a 32-bit value, and returns the target buffer.
-
- This function fills Length bytes of Buffer with the 32-bit value specified by
- Value, and returns Buffer. Value is repeated every 32-bits in for Length
- bytes of Buffer.
-
- If Length > 0 and Buffer is NULL, then ASSERT().
- If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
- If Buffer is not aligned on a 32-bit boundary, then ASSERT().
- If Length is not aligned on a 32-bit boundary, then ASSERT().
-
- @param Buffer Pointer to the target buffer to fill.
- @param Length Number of bytes in Buffer to fill.
- @param Value Value with which to fill Length bytes of Buffer.
-
- @return Buffer.
-
-**/
-VOID *
-EFIAPI
-SetMem32 (
- OUT VOID *Buffer,
- IN UINTN Length,
- IN UINT32 Value
- )
-{
- if (Length == 0) {
- return Buffer;
- }
-
- ASSERT (Buffer != NULL);
- ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer));
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
- ASSERT ((Length & (sizeof (Value) - 1)) == 0);
-
- return InternalMemSetMem32 (Buffer, Length / sizeof (Value), Value);
-}
diff --git a/MdePkg/Library/BaseMemoryLibSse2/SetMem64Wrapper.c b/MdePkg/Library/BaseMemoryLibSse2/SetMem64Wrapper.c deleted file mode 100644 index 981a7d4731..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/SetMem64Wrapper.c +++ /dev/null @@ -1,65 +0,0 @@ -/** @file
- SetMem64() implementation.
-
- Copyright (c) 2006, Intel Corporation<BR>
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- Module Name: SetMem64Wrapper.c
-
- The following BaseMemoryLib instances share the same version of this file:
-
- BaseMemoryLib
- BaseMemoryLibMmx
- BaseMemoryLibSse2
- BaseMemoryLibRepStr
- PeiMemoryLib
- DxeMemoryLib
-
-**/
-
-#include "MemLibInternals.h"
-
-/**
- Fills a target buffer with a 64-bit value, and returns the target buffer.
-
- This function fills Length bytes of Buffer with the 64-bit value specified by
- Value, and returns Buffer. Value is repeated every 64-bits in for Length
- bytes of Buffer.
-
- If Length > 0 and Buffer is NULL, then ASSERT().
- If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
- If Buffer is not aligned on a 64-bit boundary, then ASSERT().
- If Length is not aligned on a 64-bit boundary, then ASSERT().
-
- @param Buffer Pointer to the target buffer to fill.
- @param Length Number of bytes in Buffer to fill.
- @param Value Value with which to fill Length bytes of Buffer.
-
- @return Buffer.
-
-**/
-VOID *
-EFIAPI
-SetMem64 (
- OUT VOID *Buffer,
- IN UINTN Length,
- IN UINT64 Value
- )
-{
- if (Length == 0) {
- return Buffer;
- }
-
- ASSERT (Buffer != NULL);
- ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer));
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
- ASSERT ((Length & (sizeof (Value) - 1)) == 0);
-
- return InternalMemSetMem64 (Buffer, Length / sizeof (Value), Value);
-}
diff --git a/MdePkg/Library/BaseMemoryLibSse2/SetMemWrapper.c b/MdePkg/Library/BaseMemoryLibSse2/SetMemWrapper.c deleted file mode 100644 index e74ce8d65b..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/SetMemWrapper.c +++ /dev/null @@ -1,56 +0,0 @@ -/** @file
- SetMem() implementation.
-
- Copyright (c) 2006, Intel Corporation<BR>
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- Module Name: SetMemWrapper.c
-
- The following BaseMemoryLib instances share the same version of this file:
-
- BaseMemoryLib
- BaseMemoryLibMmx
- BaseMemoryLibSse2
- BaseMemoryLibRepStr
- PeiMemoryLib
- DxeMemoryLib
-
-**/
-
-#include "MemLibInternals.h"
-
-/**
- Fills a target buffer with a byte value, and returns the target buffer.
-
- This function fills Length bytes of Buffer with Value, and returns Buffer.
- If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().
-
- @param Buffer Memory to set.
- @param Length Number of bytes to set.
- @param Value Value of the set operation.
-
- @return Buffer.
-
-**/
-VOID *
-EFIAPI
-SetMem (
- OUT VOID *Buffer,
- IN UINTN Length,
- IN UINT8 Value
- )
-{
- if (Length == 0) {
- return Buffer;
- }
-
- ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer));
-
- return InternalMemSetMem (Buffer, Length, Value);
-}
diff --git a/MdePkg/Library/BaseMemoryLibSse2/ZeroMemWrapper.c b/MdePkg/Library/BaseMemoryLibSse2/ZeroMemWrapper.c deleted file mode 100644 index 90e607c0ce..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/ZeroMemWrapper.c +++ /dev/null @@ -1,51 +0,0 @@ -/** @file
- ZeroMem() implementation.
-
- Copyright (c) 2006, Intel Corporation<BR>
- All rights reserved. This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- Module Name: ZeroMemWrapper.c
-
- The following BaseMemoryLib instances share the same version of this file:
-
- BaseMemoryLib
- BaseMemoryLibMmx
- BaseMemoryLibSse2
- BaseMemoryLibRepStr
- PeiMemoryLib
- DxeMemoryLib
-
-**/
-
-#include "MemLibInternals.h"
-
-/**
- Fills a target buffer with zeros, and returns the target buffer.
-
- This function fills Length bytes of Buffer with zeros, and returns Buffer.
- If Length > 0 and Buffer is NULL, then ASSERT().
- If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().
-
- @param Buffer Pointer to the target buffer to fill with zeros.
- @param Length Number of bytes in Buffer to fill with zeros.
-
- @return Buffer.
-
-**/
-VOID *
-EFIAPI
-ZeroMem (
- OUT VOID *Buffer,
- IN UINTN Length
- )
-{
- ASSERT (!(Buffer == NULL && Length > 0));
- ASSERT (Length <= (MAX_ADDRESS - (UINTN)Buffer + 1));
- return InternalMemZeroMem (Buffer, Length);
-}
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/CompareMem.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/CompareMem.asm deleted file mode 100644 index 554bc07c64..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/x64/CompareMem.asm +++ /dev/null @@ -1,52 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; CompareMem.Asm
-;
-; Abstract:
-;
-; CompareMem function
-;
-; Notes:
-;
-; The following BaseMemoryLib instances share the same version of this file:
-;
-; BaseMemoryLibRepStr
-; BaseMemoryLibMmx
-; BaseMemoryLibSse2
-;
-;------------------------------------------------------------------------------
-
- .code
-
-;------------------------------------------------------------------------------
-; INTN
-; EFIAPI
-; InternalMemCompareMem (
-; IN CONST VOID *DestinationBuffer,
-; IN CONST VOID *SourceBuffer,
-; IN UINTN Length
-; );
-;------------------------------------------------------------------------------
-InternalMemCompareMem PROC USES rsi rdi
- mov rsi, rcx
- mov rdi, rdx
- mov rcx, r8
- repe cmpsb
- movzx rax, byte ptr [rsi - 1]
- movzx rdx, byte ptr [rdi - 1]
- sub rax, rdx
- ret
-InternalMemCompareMem ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/CopyMem.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/CopyMem.asm deleted file mode 100644 index 03ffe0c00f..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/x64/CopyMem.asm +++ /dev/null @@ -1,79 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; CopyMem.asm
-;
-; Abstract:
-;
-; CopyMem function
-;
-; Notes:
-;
-;------------------------------------------------------------------------------
-
- .code
-
-;------------------------------------------------------------------------------
-; VOID *
-; EFIAPI
-; InternalMemCopyMem (
-; IN VOID *Destination,
-; IN VOID *Source,
-; IN UINTN Count
-; );
-;------------------------------------------------------------------------------
-InternalMemCopyMem PROC USES rsi rdi
- mov rsi, rdx ; rsi <- Source
- mov rdi, rcx ; rdi <- Destination
- lea r9, [rsi + r8 - 1] ; r9 <- Last byte of Source
- cmp rsi, rdi
- mov rax, rdi ; rax <- Destination as return value
- jae @F ; Copy forward if Source > Destination
- cmp r9, rdi ; Overlapped?
- jae @CopyBackward ; Copy backward if overlapped
-@@:
- xor rcx, rcx
- sub rcx, rdi ; rcx <- -rdi
- and rcx, 15 ; rcx + rsi should be 16 bytes aligned
- jz @F ; skip if rcx == 0
- cmp rcx, r8
- cmova rcx, r8
- sub r8, rcx
- rep movsb
-@@:
- mov rcx, r8
- and r8, 15
- shr rcx, 4 ; rcx <- # of DQwords to copy
- jz @CopyBytes
- movdqa [rsp + 18h], xmm0 ; save xmm0 on stack
-@@:
- movdqu xmm0, [rsi] ; rsi may not be 16-byte aligned
- movntdq [rdi], xmm0 ; rdi should be 16-byte aligned
- add rsi, 16
- add rdi, 16
- loop @B
- mfence
- movdqa xmm0, [rsp + 18h] ; restore xmm0
- jmp @CopyBytes ; copy remaining bytes
-@CopyBackward:
- mov rsi, r9 ; rsi <- Last byte of Source
- lea rdi, [rdi + r8 - 1] ; rdi <- Last byte of Destination
- std
-@CopyBytes:
- mov rcx, r8
- rep movsb
- cld
- ret
-InternalMemCopyMem ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem16.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem16.asm deleted file mode 100644 index a2538c2cca..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem16.asm +++ /dev/null @@ -1,51 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; ScanMem16.Asm
-;
-; Abstract:
-;
-; ScanMem16 function
-;
-; Notes:
-;
-; The following BaseMemoryLib instances share the same version of this file:
-;
-; BaseMemoryLibRepStr
-; BaseMemoryLibMmx
-; BaseMemoryLibSse2
-;
-;------------------------------------------------------------------------------
-
- .code
-
-;------------------------------------------------------------------------------
-; CONST VOID *
-; EFIAPI
-; InternalMemScanMem16 (
-; IN CONST VOID *Buffer,
-; IN UINTN Length,
-; IN UINT16 Value
-; );
-;------------------------------------------------------------------------------
-InternalMemScanMem16 PROC USES rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasw
- lea rax, [rdi - 2]
- cmovnz rax, rcx
- ret
-InternalMemScanMem16 ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem32.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem32.asm deleted file mode 100644 index e0523d8547..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem32.asm +++ /dev/null @@ -1,51 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; ScanMem32.Asm
-;
-; Abstract:
-;
-; ScanMem32 function
-;
-; Notes:
-;
-; The following BaseMemoryLib instances share the same version of this file:
-;
-; BaseMemoryLibRepStr
-; BaseMemoryLibMmx
-; BaseMemoryLibSse2
-;
-;------------------------------------------------------------------------------
-
- .code
-
-;------------------------------------------------------------------------------
-; CONST VOID *
-; EFIAPI
-; InternalMemScanMem32 (
-; IN CONST VOID *Buffer,
-; IN UINTN Length,
-; IN UINT32 Value
-; );
-;------------------------------------------------------------------------------
-InternalMemScanMem32 PROC USES rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasd
- lea rax, [rdi - 4]
- cmovnz rax, rcx
- ret
-InternalMemScanMem32 ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem64.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem64.asm deleted file mode 100644 index 0e7e9c782f..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem64.asm +++ /dev/null @@ -1,51 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; ScanMem64.Asm
-;
-; Abstract:
-;
-; ScanMem64 function
-;
-; Notes:
-;
-; The following BaseMemoryLib instances share the same version of this file:
-;
-; BaseMemoryLibRepStr
-; BaseMemoryLibMmx
-; BaseMemoryLibSse2
-;
-;------------------------------------------------------------------------------
-
- .code
-
-;------------------------------------------------------------------------------
-; CONST VOID *
-; EFIAPI
-; InternalMemScanMem64 (
-; IN CONST VOID *Buffer,
-; IN UINTN Length,
-; IN UINT64 Value
-; );
-;------------------------------------------------------------------------------
-InternalMemScanMem64 PROC USES rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasq
- lea rax, [rdi - 8]
- cmovnz rax, rcx
- ret
-InternalMemScanMem64 ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem8.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem8.asm deleted file mode 100644 index 879273f960..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem8.asm +++ /dev/null @@ -1,51 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; ScanMem8.Asm
-;
-; Abstract:
-;
-; ScanMem8 function
-;
-; Notes:
-;
-; The following BaseMemoryLib instances share the same version of this file:
-;
-; BaseMemoryLibRepStr
-; BaseMemoryLibMmx
-; BaseMemoryLibSse2
-;
-;------------------------------------------------------------------------------
-
- .code
-
-;------------------------------------------------------------------------------
-; CONST VOID *
-; EFIAPI
-; InternalMemScanMem8 (
-; IN CONST VOID *Buffer,
-; IN UINTN Length,
-; IN UINT8 Value
-; );
-;------------------------------------------------------------------------------
-InternalMemScanMem8 PROC USES rdi
- mov rdi, rcx
- mov rcx, rdx
- mov rax, r8
- repne scasb
- lea rax, [rdi - 1]
- cmovnz rax, rcx ; set rax to 0 if not found
- ret
-InternalMemScanMem8 ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem.asm deleted file mode 100644 index 25cfcf0d12..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem.asm +++ /dev/null @@ -1,69 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; SetMem.asm
-;
-; Abstract:
-;
-; SetMem function
-;
-; Notes:
-;
-;------------------------------------------------------------------------------
-
- .code
-
-;------------------------------------------------------------------------------
-; VOID *
-; InternalMemSetMem (
-; IN VOID *Buffer,
-; IN UINTN Count,
-; IN UINT8 Value
-; )
-;------------------------------------------------------------------------------
-InternalMemSetMem PROC USES rdi
- mov rdi, rcx ; rdi <- Buffer
- mov al, r8b ; al <- Value
- mov r9, rdi ; r9 <- Buffer as return value
- xor rcx, rcx
- sub rcx, rdi
- and rcx, 15 ; rcx + rdi aligns on 16-byte boundary
- jz @F
- cmp rcx, rdx
- cmova rcx, rdx
- sub rdx, rcx
- rep stosb
-@@:
- mov rcx, rdx
- and rdx, 15
- shr rcx, 4
- jz @SetBytes
- mov ah, al ; ax <- Value repeats twice
- movdqa [rsp + 10h], xmm0 ; save xmm0
- movd xmm0, eax ; xmm0[0..16] <- Value repeats twice
- pshuflw xmm0, xmm0, 0 ; xmm0[0..63] <- Value repeats 8 times
- movlhps xmm0, xmm0 ; xmm0 <- Value repeats 16 times
-@@:
- movntdq [rdi], xmm0 ; rdi should be 16-byte aligned
- add rdi, 16
- loop @B
- mfence
- movdqa xmm0, [rsp + 10h] ; restore xmm0
-@SetBytes:
- mov ecx, edx ; high 32 bits of rcx are always zero
- rep stosb
- mov rax, r9 ; rax <- Return value
- ret
-InternalMemSetMem ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem16.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem16.asm deleted file mode 100644 index 77b8cf43aa..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem16.asm +++ /dev/null @@ -1,67 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; SetMem16.asm
-;
-; Abstract:
-;
-; SetMem16 function
-;
-; Notes:
-;
-;------------------------------------------------------------------------------
-
- .code
-
-;------------------------------------------------------------------------------
-; VOID *
-; InternalMemSetMem16 (
-; IN VOID *Buffer,
-; IN UINTN Count,
-; IN UINT16 Value
-; )
-;------------------------------------------------------------------------------
-InternalMemSetMem16 PROC USES rdi
- mov rdi, rcx
- mov r9, rdi
- xor rcx, rcx
- sub rcx, rdi
- and rcx, 15
- mov rax, r8
- jz @F
- shr rcx, 1
- cmp rcx, rdx
- cmova rcx, rdx
- sub rdx, rcx
- rep stosw
-@@:
- mov rcx, rdx
- and edx, 7
- shr rcx, 3
- jz @SetWords
- movd xmm0, eax
- pshuflw xmm0, xmm0, 0
- movlhps xmm0, xmm0
-@@:
- movntdq [rdi], xmm0
- add rdi, 16
- loop @B
- mfence
-@SetWords:
- mov ecx, edx
- rep stosw
- mov rax, r9
- ret
-InternalMemSetMem16 ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem32.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem32.asm deleted file mode 100644 index eba29bb88d..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem32.asm +++ /dev/null @@ -1,66 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; SetMem32.asm
-;
-; Abstract:
-;
-; SetMem32 function
-;
-; Notes:
-;
-;------------------------------------------------------------------------------
-
- .code
-
-;------------------------------------------------------------------------------
-; VOID *
-; InternalMemSetMem32 (
-; IN VOID *Buffer,
-; IN UINTN Count,
-; IN UINT8 Value
-; )
-;------------------------------------------------------------------------------
-InternalMemSetMem32 PROC USES rdi
- mov rdi, rcx
- mov r9, rdi
- xor rcx, rcx
- sub rcx, rdi
- and rcx, 15
- mov rax, r8
- jz @F
- shr rcx, 2
- cmp rcx, rdx
- cmova rcx, rdx
- sub rdx, rcx
- rep stosd
-@@:
- mov rcx, rdx
- and edx, 3
- shr rcx, 2
- jz @SetDwords
- movd xmm0, eax
- pshufd xmm0, xmm0, 0
-@@:
- movntdq [rdi], xmm0
- add rdi, 16
- loop @B
- mfence
-@SetDwords:
- mov ecx, edx
- rep stosd
- mov rax, r9
- ret
-InternalMemSetMem32 ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem64.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem64.asm deleted file mode 100644 index a26b9412d4..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem64.asm +++ /dev/null @@ -1,59 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; SetMem64.asm
-;
-; Abstract:
-;
-; SetMem64 function
-;
-; Notes:
-;
-;------------------------------------------------------------------------------
-
- .code
-
-;------------------------------------------------------------------------------
-; VOID *
-; InternalMemSetMem64 (
-; IN VOID *Buffer,
-; IN UINTN Count,
-; IN UINT64 Value
-; )
-;------------------------------------------------------------------------------
-InternalMemSetMem64 PROC
- mov rax, rcx ; rax <- Buffer
- xchg rcx, rdx ; rcx <- Count & rdx <- Buffer
- test dl, 8
- movd xmm0, r8
- jz @F
- mov [rdx], r8
- add rdx, 8
- dec rcx
-@@:
- shr rcx, 1
- jz @SetQwords
- movlhps xmm0, xmm0
-@@:
- movntdq [rdx], xmm0
- lea rdx, [rdx + 16]
- loop @B
- mfence
-@SetQwords:
- jnc @F
- mov [rdx], r8
-@@:
- ret
-InternalMemSetMem64 ENDP
-
- END
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/ZeroMem.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/ZeroMem.asm deleted file mode 100644 index 7eebd3a8ef..0000000000 --- a/MdePkg/Library/BaseMemoryLibSse2/x64/ZeroMem.asm +++ /dev/null @@ -1,63 +0,0 @@ -;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; ZeroMem.asm
-;
-; Abstract:
-;
-; ZeroMem function
-;
-; Notes:
-;
-;------------------------------------------------------------------------------
-
- .code
-
-;------------------------------------------------------------------------------
-; VOID *
-; InternalMemZeroMem (
-; IN VOID *Buffer,
-; IN UINTN Count
-; )
-;------------------------------------------------------------------------------
-InternalMemZeroMem PROC USES rdi
- mov rdi, rcx
- xor rcx, rcx
- xor eax, eax
- sub rcx, rdi
- and rcx, 15
- mov r8, rdi
- jz @F
- cmp rcx, rdx
- cmova rcx, rdx
- sub rdx, rcx
- rep stosb
-@@:
- mov rcx, rdx
- and edx, 15
- shr rcx, 4
- jz @ZeroBytes
- pxor xmm0, xmm0
-@@:
- movntdq [rdi], xmm0 ; rdi should be 16-byte aligned
- add rdi, 16
- loop @B
- mfence
-@ZeroBytes:
- mov ecx, edx
- rep stosb
- mov rax, r8
- ret
-InternalMemZeroMem ENDP
-
- END
|