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:
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user