MdePkg/BaseMemoryLibMmx: Remove .S files for IA32 and X64 arch

.nasm file has been added for X86 arch. .S assembly code
is not required any more.
https://bugzilla.tianocore.org/show_bug.cgi?id=1594

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Shenglei Zhang <shenglei.zhang@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Shenglei Zhang
2019-03-07 09:02:49 +08:00
committed by Liming Gao
parent 1ee58b7103
commit f578386cc4
23 changed files with 0 additions and 1290 deletions

View File

@@ -1,55 +0,0 @@
#------------------------------------------------------------------------------
#
# Copyright (c) 2006 - 2008, 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.
#
# Module Name:
#
# CompareMem.Asm
#
# Abstract:
#
# CompareMem function
#
# Notes:
#
# The following BaseMemoryLib instances contain the same copy of this file:
#
# BaseMemoryLibRepStr
# BaseMemoryLibMmx
# BaseMemoryLibSse2
# BaseMemoryLibOptDxe
# BaseMemoryLibOptPei
#
#------------------------------------------------------------------------------
ASM_GLOBAL ASM_PFX(InternalMemCompareMem)
#------------------------------------------------------------------------------
# INTN
# EFIAPI
# InternalMemCompareMem (
# IN CONST VOID *DestinationBuffer,
# IN CONST VOID *SourceBuffer,
# IN UINTN Length
# );
#------------------------------------------------------------------------------
ASM_PFX(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

View File

@@ -1,86 +0,0 @@
#------------------------------------------------------------------------------
#
# Copyright (c) 2006, 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.
#
# Module Name:
#
# CopyMem.asm
#
# Abstract:
#
# CopyMem function
#
# Notes:
#
#------------------------------------------------------------------------------
ASM_GLOBAL ASM_PFX(InternalMemCopyMem)
#------------------------------------------------------------------------------
# VOID *
# EFIAPI
# InternalMemCopyMem (
# IN VOID *Destination,
# IN VOID *Source,
# IN UINTN Count
# );
#------------------------------------------------------------------------------
ASM_PFX(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 %esi, %ecx
andl $7, %ecx # ecx + esi aligns on 8-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 $7, %edx
shrl $3, %ecx # ecx <- # of Qwords to copy
jz L_CopyBytes
pushl %eax
pushl %eax
movq %mm0, (%esp) # save mm0
L2:
movq (%esi), %mm0
movq %mm0, (%edi)
addl $8, %esi
addl $8, %edi
loop L2
movq (%esp), %mm0 # restore mm0
popl %ecx # stack cleanup
popl %ecx # 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
pop %edi
pop %esi
ret

View File

@@ -1,52 +0,0 @@
#------------------------------------------------------------------------------
#
# Copyright (c) 2006 - 2008, 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.
#
# Module Name:
#
# ScanMem16.Asm
#
# Abstract:
#
# ScanMem16 function
#
# Notes:
#
# The following BaseMemoryLib instances contain the same copy of this file:
#
# BaseMemoryLibRepStr
# BaseMemoryLibMmx
# BaseMemoryLibSse2
# BaseMemoryLibOptDxe
# BaseMemoryLibOptPei
#
#------------------------------------------------------------------------------
ASM_GLOBAL ASM_PFX(InternalMemScanMem16)
#------------------------------------------------------------------------------
# CONST VOID *
# EFIAPI
# InternalMemScanMem16 (
# IN CONST VOID *Buffer,
# IN UINTN Length,
# IN UINT16 Value
# );
#------------------------------------------------------------------------------
ASM_PFX(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

View File

@@ -1,52 +0,0 @@
#------------------------------------------------------------------------------
#
# Copyright (c) 2006 - 2008, 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.
#
# Module Name:
#
# ScanMem32.Asm
#
# Abstract:
#
# ScanMem32 function
#
# Notes:
#
# The following BaseMemoryLib instances contain the same copy of this file:
#
# BaseMemoryLibRepStr
# BaseMemoryLibMmx
# BaseMemoryLibSse2
# BaseMemoryLibOptDxe
# BaseMemoryLibOptPei
#
#------------------------------------------------------------------------------
ASM_GLOBAL ASM_PFX(InternalMemScanMem32)
#------------------------------------------------------------------------------
# CONST VOID *
# EFIAPI
# InternalMemScanMem32 (
# IN CONST VOID *Buffer,
# IN UINTN Length,
# IN UINT32 Value
# );
#------------------------------------------------------------------------------
ASM_PFX(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

View File

@@ -1,61 +0,0 @@
#------------------------------------------------------------------------------
#
# Copyright (c) 2006 - 2008, 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.
#
# Module Name:
#
# ScanMem64.Asm
#
# Abstract:
#
# ScanMem64 function
#
# Notes:
#
# The following BaseMemoryLib instances contain the same copy of this file:
#
# BaseMemoryLibRepStr
# BaseMemoryLibMmx
# BaseMemoryLibSse2
# BaseMemoryLibOptDxe
# BaseMemoryLibOptPei
#
#------------------------------------------------------------------------------
ASM_GLOBAL ASM_PFX(InternalMemScanMem64)
#------------------------------------------------------------------------------
# CONST VOID *
# EFIAPI
# InternalMemScanMem64 (
# IN CONST VOID *Buffer,
# IN UINTN Length,
# IN UINT64 Value
# );
#------------------------------------------------------------------------------
ASM_PFX(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

View File

@@ -1,52 +0,0 @@
#------------------------------------------------------------------------------
#
# Copyright (c) 2006 - 2008, 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.
#
# Module Name:
#
# ScanMem8.Asm
#
# Abstract:
#
# ScanMem8 function
#
# Notes:
#
# The following BaseMemoryLib instances contain the same copy of this file:
#
# BaseMemoryLibRepStr
# BaseMemoryLibMmx
# BaseMemoryLibSse2
# BaseMemoryLibOptDxe
# BaseMemoryLibOptPei
#
#------------------------------------------------------------------------------
ASM_GLOBAL ASM_PFX(InternalMemScanMem8)
#------------------------------------------------------------------------------
# CONST VOID *
# EFIAPI
# InternalMemScanMem8 (
# IN CONST VOID *Buffer,
# IN UINTN Length,
# IN UINT8 Value
# );
#------------------------------------------------------------------------------
ASM_PFX(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

View File

@@ -1,66 +0,0 @@
#------------------------------------------------------------------------------
#
# Copyright (c) 2006, 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.
#
# Module Name:
#
# SetMem.asm
#
# Abstract:
#
# SetMem function
#
# Notes:
#
#------------------------------------------------------------------------------
ASM_GLOBAL ASM_PFX(InternalMemSetMem)
#------------------------------------------------------------------------------
# VOID *
# InternalMemSetMem (
# IN VOID *Buffer,
# IN UINTN Count,
# IN UINT8 Value
# )
#------------------------------------------------------------------------------
ASM_PFX(InternalMemSetMem):
push %edi
movb 16(%esp), %al
movb %al, %ah
shrdl $16, %eax, %edx
shldl $16, %edx, %eax
movl 12(%esp), %ecx # ecx <- Count
movl 8(%esp), %edi # edi <- Buffer
movl %ecx, %edx
andl $7, %edx
shrl $3, %ecx # # of Qwords to set
jz L1
addl $-16, %esp
movq %mm0, (%esp) # save mm0
movq %mm1, 8(%esp) # save mm1
movd %eax, %mm0
movd %eax, %mm1
psllq $32, %mm0
por %mm1, %mm0 # fill mm0 with 8 Value's
L0:
movq %mm0, (%edi)
addl $8, %edi
loop L0
movq (%esp), %mm0 # restore mm0
movq 8(%esp), %mm1 # restore mm1
addl $0x10, %esp # stack cleanup
L1:
movl %edx, %ecx
rep
stosb
movl 8(%esp), %eax # eax <- Buffer as return value
pop %edi
ret

View File

@@ -1,59 +0,0 @@
#------------------------------------------------------------------------------
#
# Copyright (c) 2006, 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.
#
# Module Name:
#
# SetMem16.asm
#
# Abstract:
#
# SetMem16 function
#
# Notes:
#
#------------------------------------------------------------------------------
ASM_GLOBAL ASM_PFX(InternalMemSetMem16)
#------------------------------------------------------------------------------
# VOID *
# InternalMemSetMem16 (
# IN VOID *Buffer,
# IN UINTN Count,
# IN UINT16 Value
# )
#------------------------------------------------------------------------------
ASM_PFX(InternalMemSetMem16):
push %edi
movl 16(%esp), %eax
shrdl $16, %eax, %edx
shldl $16, %edx, %eax
movl 12(%esp), %edx
movl 8(%esp), %edi
movl %edx, %ecx
andl $3, %edx
shrl $2, %ecx
jz L1
movd %eax, %mm0
movd %eax, %mm1
psllq $32, %mm0
por %mm1, %mm0
L0:
movq %mm0, (%edi)
addl $8, %edi
loop L0
L1:
movl %edx, %ecx
rep
stosw
movl 8(%esp), %eax
pop %edi
ret

View File

@@ -1,52 +0,0 @@
#------------------------------------------------------------------------------
#
# Copyright (c) 2006, 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.
#
# Module Name:
#
# SetMem32.asm
#
# Abstract:
#
# SetMem32 function
#
# Notes:
#
#------------------------------------------------------------------------------
ASM_GLOBAL ASM_PFX(InternalMemSetMem32)
#------------------------------------------------------------------------------
# VOID *
# InternalMemSetMem32 (
# IN VOID *Buffer,
# IN UINTN Count,
# IN UINT32 Value
# )
#------------------------------------------------------------------------------
ASM_PFX(InternalMemSetMem32):
movl 4(%esp), %eax
movl 8(%esp), %ecx
movd 12(%esp), %mm0
shrl %ecx
movl %eax, %edx
jz L1
movq %mm0, %mm1
psllq $32, %mm1
por %mm1, %mm0
L0:
movq %mm0, (%edx)
lea 8(%edx), %edx
loop L0
L1:
jnc L2
movd %mm0, (%edx)
L2:
ret

View File

@@ -1,43 +0,0 @@
#------------------------------------------------------------------------------
#
# Copyright (c) 2006, 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.
#
# Module Name:
#
# SetMem64.asm
#
# Abstract:
#
# SetMem64 function
#
# Notes:
#
#------------------------------------------------------------------------------
ASM_GLOBAL ASM_PFX(InternalMemSetMem64)
#------------------------------------------------------------------------------
# VOID *
# InternalMemSetMem64 (
# IN VOID *Buffer,
# IN UINTN Count,
# IN UINT64 Value
# )
#------------------------------------------------------------------------------
ASM_PFX(InternalMemSetMem64):
movl 4(%esp), %eax
movl 8(%esp), %ecx
movq 12(%esp), %mm0
movl %eax, %edx
L0:
movq %mm0, (%edx)
lea 8(%edx), %edx
loop L0
ret

View File

@@ -1,54 +0,0 @@
#------------------------------------------------------------------------------
#
# Copyright (c) 2006, 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.
#
# Module Name:
#
# ZeroMem.asm
#
# Abstract:
#
# ZeroMem function
#
# Notes:
#
#------------------------------------------------------------------------------
ASM_GLOBAL ASM_PFX(InternalMemZeroMem)
#------------------------------------------------------------------------------
# VOID *
# EFIAPI
# InternalMemZeroMem (
# IN VOID *Buffer,
# IN UINTN Count
# );
#------------------------------------------------------------------------------
ASM_PFX(InternalMemZeroMem):
push %edi
movl 8(%esp), %edi
movl 12(%esp), %ecx
movl %ecx, %edx
shrl $3, %ecx
jz L_ZeroBytes
pxor %mm0, %mm0
L0:
movq %mm0, (%edi)
addl $8, %edi
loop L0
L_ZeroBytes:
andl $7, %edx
xorl %eax, %eax
movl %edx, %ecx
rep
stosb
movl 8(%esp), %eax
pop %edi
ret