MdePkg: Replace Opcode with the corresponding instructions.

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3790

Replace Opcode with the corresponding instructions.
The code changes have been verified with CompareBuild.py tool, which
can be used to compare the results of two different EDK II builds to
determine if they generate the same binaries.
(tool link: https://github.com/mdkinney/edk2/tree/sandbox/CompareBuild)

Signed-off-by: Jason Lou <yun.lou@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
This commit is contained in:
Jason
2022-01-10 21:46:27 +08:00
committed by mergify[bot]
parent 84338c0d49
commit d3febfd9ad
42 changed files with 116 additions and 175 deletions

View File

@@ -1,6 +1,6 @@
;------------------------------------------------------------------------------
;
; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
; SPDX-License-Identifier: BSD-2-Clause-Patent
;
; Module Name:
@@ -44,15 +44,15 @@ ASM_PFX(InternalMemCopyMem):
and r8, 7
shr rcx, 3 ; rcx <- # of Qwords to copy
jz @CopyBytes
DB 0x49, 0xf, 0x7e, 0xc2 ; movd r10, mm0 (Save mm0 in r10)
movq r10, mm0
.1:
DB 0xf, 0x6f, 0x6 ; movd mm0, [rsi]
DB 0xf, 0xe7, 0x7 ; movntq [rdi], mm0
movq mm0, [rsi]
movntq [rdi], mm0
add rsi, 8
add rdi, 8
loop .1
mfence
DB 0x49, 0xf, 0x6e, 0xc2 ; movd mm0, r10 (Restore mm0)
movq mm0, r10
jmp @CopyBytes
@CopyBackward:
mov rsi, r9 ; rsi <- End of Source

View File

@@ -1,6 +1,6 @@
;------------------------------------------------------------------------------
;
; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
; SPDX-License-Identifier: BSD-2-Clause-Patent
;
; Module Name:
@@ -32,16 +32,16 @@ ASM_PFX(InternalMemSetMem):
push rdi
mov rax, r8
mov ah, al
DB 0x48, 0xf, 0x6e, 0xc0 ; movd mm0, rax
movq mm0, rax
mov r8, rcx
mov rdi, r8 ; rdi <- Buffer
mov rcx, rdx
and edx, 7
shr rcx, 3
jz @SetBytes
DB 0xf, 0x70, 0xC0, 0x0 ; pshufw mm0, mm0, 0h
pshufw mm0, mm0, 0
.0:
DB 0xf, 0xe7, 0x7 ; movntq [rdi], mm0
movntq [rdi], mm0
add rdi, 8
loop .0
mfence

View File

@@ -1,6 +1,6 @@
;------------------------------------------------------------------------------
;
; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
; SPDX-License-Identifier: BSD-2-Clause-Patent
;
; Module Name:
@@ -31,16 +31,16 @@ global ASM_PFX(InternalMemSetMem16)
ASM_PFX(InternalMemSetMem16):
push rdi
mov rax, r8
DB 0x48, 0xf, 0x6e, 0xc0 ; movd mm0, rax
movq mm0, rax
mov r8, rcx
mov rdi, r8
mov rcx, rdx
and edx, 3
shr rcx, 2
jz @SetWords
DB 0xf, 0x70, 0xC0, 0x0 ; pshufw mm0, mm0, 0h
pshufw mm0, mm0, 0
.0:
DB 0xf, 0xe7, 0x7 ; movntq [rdi], mm0
movntq [rdi], mm0
add rdi, 8
loop .0
mfence

View File

@@ -1,6 +1,6 @@
;------------------------------------------------------------------------------
;
; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
; SPDX-License-Identifier: BSD-2-Clause-Patent
;
; Module Name:
@@ -28,20 +28,20 @@
;------------------------------------------------------------------------------
global ASM_PFX(InternalMemSetMem32)
ASM_PFX(InternalMemSetMem32):
DB 0x49, 0xf, 0x6e, 0xc0 ; movd mm0, r8 (Value)
movq mm0, r8
mov rax, rcx ; rax <- Buffer
xchg rcx, rdx ; rcx <- Count rdx <- Buffer
shr rcx, 1 ; rcx <- # of qwords to set
jz @SetDwords
DB 0xf, 0x70, 0xC0, 0x44 ; pshufw mm0, mm0, 44h
pshufw mm0, mm0, 44h
.0:
DB 0xf, 0xe7, 0x2 ; movntq [rdx], mm0
movntq [rdx], mm0
lea rdx, [rdx + 8] ; use "lea" to avoid flag changes
loop .0
mfence
@SetDwords:
jnc .1
DB 0xf, 0x7e, 0x2 ; movd [rdx], mm0
movd [rdx], mm0
.1:
ret

View File

@@ -1,6 +1,6 @@
;------------------------------------------------------------------------------
;
; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
; SPDX-License-Identifier: BSD-2-Clause-Patent
;
; Module Name:
@@ -28,11 +28,11 @@
;------------------------------------------------------------------------------
global ASM_PFX(InternalMemSetMem64)
ASM_PFX(InternalMemSetMem64):
DB 0x49, 0xf, 0x6e, 0xc0 ; movd mm0, r8 (Value)
movq mm0, r8
mov rax, rcx ; rax <- Buffer
xchg rcx, rdx ; rcx <- Count
.0:
DB 0xf, 0xe7, 0x2 ; movntq [rdx], mm0
movntq [rdx], mm0
add rdx, 8
loop .0
mfence

View File

@@ -1,6 +1,6 @@
;------------------------------------------------------------------------------
;
; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
; SPDX-License-Identifier: BSD-2-Clause-Patent
;
; Module Name:
@@ -34,12 +34,12 @@ ASM_PFX(InternalMemZeroMem):
and edx, 7
shr rcx, 3
jz @ZeroBytes
DB 0xf, 0xef, 0xc0 ; pxor mm0, mm0
pxor mm0, mm0
.0:
DB 0xf, 0xe7, 7 ; movntq [rdi], mm0
movntq [rdi], mm0
add rdi, 8
loop .0
DB 0xf, 0xae, 0xf0 ; mfence
mfence
@ZeroBytes:
xor eax, eax
mov ecx, edx