## @file
#  Instance of Base Memory Library optimized for use in DXE phase.
#
#  Base Memory Library that is optimized for use in DXE phase.
#  Uses REP, MMX, XMM registers as required for best performance.
#
#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
#
#  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.
#
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = BaseMemoryLibOptDxe
  MODULE_UNI_FILE                = BaseMemoryLibOptDxe.uni
  FILE_GUID                      = 02BD55C2-AB1D-4b75-B0FD-9A63AE09B31D
  MODULE_TYPE                    = BASE
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = BaseMemoryLib


#
#  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
#

[Sources]
  MemLibInternals.h

[Sources.Ia32]
  Ia32/ScanMem64.nasm
  Ia32/ScanMem64.S
  Ia32/ScanMem32.nasm
  Ia32/ScanMem32.S
  Ia32/ScanMem16.nasm
  Ia32/ScanMem16.S
  Ia32/ScanMem8.nasm
  Ia32/ScanMem8.S
  Ia32/CompareMem.nasm
  Ia32/CompareMem.S
  Ia32/ZeroMem.nasm
  Ia32/ZeroMem.S
  Ia32/SetMem64.nasm
  Ia32/SetMem64.S
  Ia32/SetMem32.nasm
  Ia32/SetMem32.S
  Ia32/SetMem16.nasm
  Ia32/SetMem16.S
  Ia32/SetMem.nasm
  Ia32/SetMem.S
  Ia32/CopyMem.nasm
  Ia32/CopyMem.S
  Ia32/ScanMem64.nasm
  Ia32/ScanMem32.nasm
  Ia32/ScanMem16.nasm
  Ia32/ScanMem8.nasm
  Ia32/CompareMem.nasm
  Ia32/ZeroMem.nasm
  Ia32/SetMem64.nasm
  Ia32/SetMem32.nasm
  Ia32/SetMem16.nasm
  Ia32/SetMem.nasm
  Ia32/CopyMem.nasm
  Ia32/IsZeroBuffer.nasm
  MemLibGuid.c

[Sources.X64]
  X64/ScanMem64.nasm
  X64/ScanMem64.S
  X64/ScanMem32.nasm
  X64/ScanMem32.S
  X64/ScanMem16.nasm
  X64/ScanMem16.S
  X64/ScanMem8.nasm
  X64/ScanMem8.S
  X64/CompareMem.nasm
  X64/CompareMem.S
  X64/ZeroMem.nasm
  X64/ZeroMem.S
  X64/SetMem64.nasm
  X64/SetMem64.S
  X64/SetMem32.nasm
  X64/SetMem32.S
  X64/SetMem16.nasm
  X64/SetMem16.S
  X64/SetMem.nasm
  X64/SetMem.S
  X64/CopyMem.nasm
  X64/CopyMem.S
  X64/IsZeroBuffer.nasm
  MemLibGuid.c

[Defines.ARM, Defines.AARCH64]
  #
  # The ARM implementations of this library may perform unaligned accesses, and
  # may use DC ZVA instructions that are only allowed when the MMU and D-cache
  # are on. Since SEC, PEI_CORE and PEIM modules may execute with the MMU off,
  # omit them from the supported module types list for this library.
  #
  LIBRARY_CLASS = BaseMemoryLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER UEFI_DRIVER UEFI_APPLICATION

[Sources.ARM]
  Arm/ScanMem.S       |GCC
  Arm/SetMem.S        |GCC
  Arm/CopyMem.S       |GCC
  Arm/CompareMem.S    |GCC
  Arm/CompareGuid.S   |GCC

  Arm/ScanMem.asm     |RVCT
  Arm/SetMem.asm      |RVCT
  Arm/CopyMem.asm     |RVCT
  Arm/CompareMem.asm  |RVCT
  Arm/CompareGuid.asm |RVCT

[Sources.AARCH64]
  AArch64/ScanMem.S
  AArch64/SetMem.S
  AArch64/CopyMem.S
  AArch64/CompareMem.S
  AArch64/CompareGuid.S

[Sources.ARM, Sources.AARCH64]
  Arm/ScanMemGeneric.c
  Arm/MemLibGuid.c

[Sources]
  ScanMem64Wrapper.c
  ScanMem32Wrapper.c
  ScanMem16Wrapper.c
  ScanMem8Wrapper.c
  ZeroMemWrapper.c
  CompareMemWrapper.c
  SetMem64Wrapper.c
  SetMem32Wrapper.c
  SetMem16Wrapper.c
  SetMemWrapper.c
  CopyMemWrapper.c
  IsZeroBufferWrapper.c

[Packages]
  MdePkg/MdePkg.dec

[LibraryClasses]
  DebugLib
  BaseLib

