public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Jason Lou" <yun.lou@intel.com>
To: devel@edk2.groups.io
Cc: Jason <yun.lou@intel.com>,
	Michael D Kinney <michael.d.kinney@intel.com>,
	Liming Gao <gaoliming@byosoft.com.cn>,
	Zhiguang Liu <zhiguang.liu@intel.com>
Subject: [PATCH v2 2/6] MdePkg: Replace Opcode with the corresponding instructions.
Date: Mon, 10 Jan 2022 23:12:49 +0800	[thread overview]
Message-ID: <20220110151253.3848-2-yun.lou@intel.com> (raw)
In-Reply-To: <20220110151253.3848-1-yun.lou@intel.com>

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>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
---
 MdePkg/Library/BaseLib/Ia32/EnablePaging64.nasm   | 20 ++++++++------------
 MdePkg/Library/BaseLib/Ia32/LongJump.nasm         |  6 +++---
 MdePkg/Library/BaseLib/Ia32/Monitor.nasm          |  4 ++--
 MdePkg/Library/BaseLib/Ia32/Mwait.nasm            |  4 ++--
 MdePkg/Library/BaseLib/Ia32/RdRand.nasm           | 13 +++++--------
 MdePkg/Library/BaseLib/Ia32/ReadDr4.nasm          |  6 +++---
 MdePkg/Library/BaseLib/Ia32/ReadDr5.nasm          |  6 +++---
 MdePkg/Library/BaseLib/Ia32/SetJump.nasm          |  6 +++---
 MdePkg/Library/BaseLib/Ia32/WriteDr4.nasm         |  6 +++---
 MdePkg/Library/BaseLib/Ia32/WriteDr5.nasm         |  6 +++---
 MdePkg/Library/BaseLib/X64/DisablePaging64.nasm   |  5 ++---
 MdePkg/Library/BaseLib/X64/LongJump.nasm          |  6 +++---
 MdePkg/Library/BaseLib/X64/Monitor.nasm           |  4 ++--
 MdePkg/Library/BaseLib/X64/Mwait.nasm             |  4 ++--
 MdePkg/Library/BaseLib/X64/RdRand.nasm            | 11 ++++-------
 MdePkg/Library/BaseLib/X64/ReadDr4.nasm           |  4 ++--
 MdePkg/Library/BaseLib/X64/ReadDr5.nasm           |  4 ++--
 MdePkg/Library/BaseLib/X64/ReadMm0.nasm           |  7 ++-----
 MdePkg/Library/BaseLib/X64/ReadMm1.nasm           |  7 ++-----
 MdePkg/Library/BaseLib/X64/ReadMm2.nasm           |  7 ++-----
 MdePkg/Library/BaseLib/X64/ReadMm3.nasm           |  7 ++-----
 MdePkg/Library/BaseLib/X64/ReadMm4.nasm           |  7 ++-----
 MdePkg/Library/BaseLib/X64/ReadMm5.nasm           |  7 ++-----
 MdePkg/Library/BaseLib/X64/ReadMm6.nasm           |  7 ++-----
 MdePkg/Library/BaseLib/X64/ReadMm7.nasm           |  7 ++-----
 MdePkg/Library/BaseLib/X64/SetJump.nasm           |  6 +++---
 MdePkg/Library/BaseLib/X64/WriteDr4.nasm          |  4 ++--
 MdePkg/Library/BaseLib/X64/WriteDr5.nasm          |  4 ++--
 MdePkg/Library/BaseLib/X64/WriteMm0.nasm          |  7 ++-----
 MdePkg/Library/BaseLib/X64/WriteMm1.nasm          |  7 ++-----
 MdePkg/Library/BaseLib/X64/WriteMm2.nasm          |  7 ++-----
 MdePkg/Library/BaseLib/X64/WriteMm3.nasm          |  7 ++-----
 MdePkg/Library/BaseLib/X64/WriteMm4.nasm          |  7 ++-----
 MdePkg/Library/BaseLib/X64/WriteMm5.nasm          |  7 ++-----
 MdePkg/Library/BaseLib/X64/WriteMm6.nasm          |  7 ++-----
 MdePkg/Library/BaseLib/X64/WriteMm7.nasm          |  7 ++-----
 MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.nasm  | 10 +++++-----
 MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.nasm   |  8 ++++----
 MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.nasm |  8 ++++----
 MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.nasm | 10 +++++-----
 MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.nasm |  6 +++---
 MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.nasm  |  8 ++++----
 42 files changed, 116 insertions(+), 175 deletions(-)

diff --git a/MdePkg/Library/BaseLib/Ia32/EnablePaging64.nasm b/MdePkg/Library/BaseLib/Ia32/EnablePaging64.nasm
index 544e3c3892..ef11458077 100644
--- a/MdePkg/Library/BaseLib/Ia32/EnablePaging64.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/EnablePaging64.nasm
@@ -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,16 +44,12 @@ ASM_PFX(InternalX86EnablePaging64):
     mov     cr0, eax                    ; enable paging
     retf                                ; topmost 2 dwords hold the address
 .0:
-    DB      0x67, 0x48                    ; 32-bit address size, 64-bit operand size
-    mov     ebx, [esp]                  ; mov rbx, [esp]
-    DB      0x67, 0x48
-    mov     ecx, [esp + 8]              ; mov rcx, [esp + 8]
-    DB      0x67, 0x48
-    mov     edx, [esp + 0x10]            ; mov rdx, [esp + 10h]
-    DB      0x67, 0x48
-    mov     esp, [esp + 0x18]            ; mov rsp, [esp + 18h]
-    DB      0x48
-    add     esp, -0x20                   ; add rsp, -20h
-    call    ebx                         ; call rbx
+BITS 64
+    mov     rbx, [esp]
+    mov     rcx, [esp + 8]
+    mov     rdx, [esp + 0x10]
+    mov     rsp, [esp + 0x18]
+    add     rsp, -0x20
+    call    rbx
     hlt                                 ; no one should get here
 
diff --git a/MdePkg/Library/BaseLib/Ia32/LongJump.nasm b/MdePkg/Library/BaseLib/Ia32/LongJump.nasm
index f94d10f806..6c13dfe307 100644
--- a/MdePkg/Library/BaseLib/Ia32/LongJump.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/LongJump.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2019, 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:
@@ -39,12 +39,12 @@ ASM_PFX(InternalLongJump):
 
     mov     edx, [esp + 4]         ; edx = JumpBuffer
     mov     edx, [edx + 24]        ; edx = target SSP
-    READSSP_EAX
+    rdsspd  eax
     sub     edx, eax               ; edx = delta
     mov     eax, edx               ; eax = delta
 
     shr     eax, 2                 ; eax = delta/sizeof(UINT32)
-    INCSSP_EAX
+    incsspd eax
 
 CetDone:
 
diff --git a/MdePkg/Library/BaseLib/Ia32/Monitor.nasm b/MdePkg/Library/BaseLib/Ia32/Monitor.nasm
index 28dc0ba70a..70dbe66e27 100644
--- a/MdePkg/Library/BaseLib/Ia32/Monitor.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/Monitor.nasm
@@ -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,6 +31,6 @@ ASM_PFX(AsmMonitor):
     mov     eax, [esp + 4]
     mov     ecx, [esp + 8]
     mov     edx, [esp + 12]
-    DB      0xf, 1, 0xc8                ; monitor
+    monitor
     ret
 
diff --git a/MdePkg/Library/BaseLib/Ia32/Mwait.nasm b/MdePkg/Library/BaseLib/Ia32/Mwait.nasm
index 3956940cab..2d36a97df6 100644
--- a/MdePkg/Library/BaseLib/Ia32/Mwait.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/Mwait.nasm
@@ -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:
@@ -29,6 +29,6 @@ global ASM_PFX(AsmMwait)
 ASM_PFX(AsmMwait):
     mov     eax, [esp + 4]
     mov     ecx, [esp + 8]
-    DB      0xf, 1, 0xc9                ; mwait
+    mwait
     ret
 
diff --git a/MdePkg/Library/BaseLib/Ia32/RdRand.nasm b/MdePkg/Library/BaseLib/Ia32/RdRand.nasm
index e12b8e9611..d818b6ef55 100644
--- a/MdePkg/Library/BaseLib/Ia32/RdRand.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/RdRand.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2015 - 2022, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -25,9 +25,8 @@ SECTION .text
 ;------------------------------------------------------------------------------
 global ASM_PFX(InternalX86RdRand16)
 ASM_PFX(InternalX86RdRand16):
-    ; rdrand   ax                  ; generate a 16 bit RN into ax
+    rdrand eax                     ; generate a 16 bit RN into ax
                                    ; CF=1 if RN generated ok, otherwise CF=0
-    db     0xf, 0xc7, 0xf0         ; rdrand r16: "0f c7 /6  ModRM:r/m(w)"
     jc     rn16_ok                 ; jmp if CF=1
     xor    eax, eax                ; reg=0 if CF=0
     ret                            ; return with failure status
@@ -45,9 +44,8 @@ rn16_ok:
 ;------------------------------------------------------------------------------
 global ASM_PFX(InternalX86RdRand32)
 ASM_PFX(InternalX86RdRand32):
-    ; rdrand   eax                 ; generate a 32 bit RN into eax
+    rdrand eax                     ; generate a 32 bit RN into eax
                                    ; CF=1 if RN generated ok, otherwise CF=0
-    db     0xf, 0xc7, 0xf0         ; rdrand r32: "0f c7 /6  ModRM:r/m(w)"
     jc     rn32_ok                 ; jmp if CF=1
     xor    eax, eax                ; reg=0 if CF=0
     ret                            ; return with failure status
@@ -65,14 +63,13 @@ rn32_ok:
 ;------------------------------------------------------------------------------
 global ASM_PFX(InternalX86RdRand64)
 ASM_PFX(InternalX86RdRand64):
-    ; rdrand   eax                 ; generate a 32 bit RN into eax
+    rdrand eax                     ; generate a 32 bit RN into eax
                                    ; CF=1 if RN generated ok, otherwise CF=0
-    db     0xf, 0xc7, 0xf0         ; rdrand r32: "0f c7 /6  ModRM:r/m(w)"
     jnc    rn64_ret                ; jmp if CF=0
     mov    edx, dword [esp + 4]
     mov    [edx], eax
 
-    db     0xf, 0xc7, 0xf0         ; generate another 32 bit RN
+    rdrand eax                     ; generate another 32 bit RN
     jnc    rn64_ret                ; jmp if CF=0
     mov    [edx + 4], eax
 
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr4.nasm b/MdePkg/Library/BaseLib/Ia32/ReadDr4.nasm
index 81c681de34..1c312b670d 100644
--- a/MdePkg/Library/BaseLib/Ia32/ReadDr4.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/ReadDr4.nasm
@@ -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,8 +31,8 @@ ASM_PFX(AsmReadDr4):
     ; this register will cause a #UD exception.
     ;
     ; MS assembler doesn't support this instruction since no one would use it
-    ; under normal circustances. Here opcode is used.
+    ; under normal circustances.
     ;
-    DB      0xf, 0x21, 0xe0
+    mov     eax, dr4
     ret
 
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr5.nasm b/MdePkg/Library/BaseLib/Ia32/ReadDr5.nasm
index e2deacb832..07a1b44a00 100644
--- a/MdePkg/Library/BaseLib/Ia32/ReadDr5.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/ReadDr5.nasm
@@ -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,8 +31,8 @@ ASM_PFX(AsmReadDr5):
     ; this register will cause a #UD exception.
     ;
     ; MS assembler doesn't support this instruction since no one would use it
-    ; under normal circustances. Here opcode is used.
+    ; under normal circustances.
     ;
-    DB      0xf, 0x21, 0xe8
+    mov     eax, dr5
     ret
 
diff --git a/MdePkg/Library/BaseLib/Ia32/SetJump.nasm b/MdePkg/Library/BaseLib/Ia32/SetJump.nasm
index 364613b5f9..2577373241 100644
--- a/MdePkg/Library/BaseLib/Ia32/SetJump.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/SetJump.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2019, 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:
@@ -46,8 +46,8 @@ ASM_PFX(SetJump):
     jnc     CetDone
 
     mov     eax, 1
-    INCSSP_EAX                     ; to read original SSP
-    READSSP_EAX
+    incsspd eax                    ; to read original SSP
+    rdsspd  eax
     mov     [edx + 0x24], eax      ; save SSP
 
 CetDone:
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr4.nasm b/MdePkg/Library/BaseLib/Ia32/WriteDr4.nasm
index 0d23fca111..b8479b39f7 100644
--- a/MdePkg/Library/BaseLib/Ia32/WriteDr4.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/WriteDr4.nasm
@@ -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,8 +32,8 @@ ASM_PFX(AsmWriteDr4):
     ; this register will cause a #UD exception.
     ;
     ; MS assembler doesn't support this instruction since no one would use it
-    ; under normal circustances. Here opcode is used.
+    ; under normal circustances.
     ;
-    DB      0xf, 0x23, 0xe0
+    mov     dr4, eax
     ret
 
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr5.nasm b/MdePkg/Library/BaseLib/Ia32/WriteDr5.nasm
index bc5f424b8d..3545561025 100644
--- a/MdePkg/Library/BaseLib/Ia32/WriteDr5.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/WriteDr5.nasm
@@ -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,8 +32,8 @@ ASM_PFX(AsmWriteDr5):
     ; this register will cause a #UD exception.
     ;
     ; MS assembler doesn't support this instruction since no one would use it
-    ; under normal circustances. Here opcode is used.
+    ; under normal circustances.
     ;
-    DB      0xf, 0x23, 0xe8
+    mov     dr5, eax
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/DisablePaging64.nasm b/MdePkg/Library/BaseLib/X64/DisablePaging64.nasm
index c76ed1a76c..200c408d9a 100644
--- a/MdePkg/Library/BaseLib/X64/DisablePaging64.nasm
+++ b/MdePkg/Library/BaseLib/X64/DisablePaging64.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2008, 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:
@@ -51,8 +51,7 @@ ASM_PFX(InternalX86DisablePaging64):
     sub     eax, 4                      ; eax <- One slot below transition code on the stack
     push    rcx                         ; push Cs to stack
     push    r10                         ; push address of tansition code on stack
-    DB      0x48                         ; prefix to composite "retq" with next "retf"
-    retf                                ; Use far return to load CS register from stack
+    retfq
 
 ; Start of transition code
 .0:
diff --git a/MdePkg/Library/BaseLib/X64/LongJump.nasm b/MdePkg/Library/BaseLib/X64/LongJump.nasm
index 59f7092169..2002f65cba 100644
--- a/MdePkg/Library/BaseLib/X64/LongJump.nasm
+++ b/MdePkg/Library/BaseLib/X64/LongJump.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2019, 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:
@@ -41,12 +41,12 @@ ASM_PFX(InternalLongJump):
     push    rdx                          ; save rdx
 
     mov     rdx, [rcx + 0xF8]            ; rdx = target SSP
-    READSSP_RAX
+    rdsspq  rax
     sub     rdx, rax                     ; rdx = delta
     mov     rax, rdx                     ; rax = delta
 
     shr     rax, 3                       ; rax = delta/sizeof(UINT64)
-    INCSSP_RAX
+    incsspq rax
 
     pop     rdx                          ; restore rdx
 CetDone:
diff --git a/MdePkg/Library/BaseLib/X64/Monitor.nasm b/MdePkg/Library/BaseLib/X64/Monitor.nasm
index e1ccb83a85..210037d402 100644
--- a/MdePkg/Library/BaseLib/X64/Monitor.nasm
+++ b/MdePkg/Library/BaseLib/X64/Monitor.nasm
@@ -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,6 +32,6 @@ ASM_PFX(AsmMonitor):
     mov     eax, ecx
     mov     ecx, edx
     mov     edx, r8d
-    DB      0xf, 1, 0xc8                ; monitor
+    monitor
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/Mwait.nasm b/MdePkg/Library/BaseLib/X64/Mwait.nasm
index 83fc895491..c8ad59588b 100644
--- a/MdePkg/Library/BaseLib/X64/Mwait.nasm
+++ b/MdePkg/Library/BaseLib/X64/Mwait.nasm
@@ -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:
@@ -30,6 +30,6 @@ global ASM_PFX(AsmMwait)
 ASM_PFX(AsmMwait):
     mov     eax, ecx
     mov     ecx, edx
-    DB      0xf, 1, 0xc9                ; mwait
+    mwait
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/RdRand.nasm b/MdePkg/Library/BaseLib/X64/RdRand.nasm
index 7e7fe99670..73479be8d3 100644
--- a/MdePkg/Library/BaseLib/X64/RdRand.nasm
+++ b/MdePkg/Library/BaseLib/X64/RdRand.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2015 - 2022, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -26,9 +26,8 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(InternalX86RdRand16)
 ASM_PFX(InternalX86RdRand16):
-    ; rdrand   ax                  ; generate a 16 bit RN into eax,
+    rdrand eax                     ; generate a 16 bit RN into eax,
                                    ; CF=1 if RN generated ok, otherwise CF=0
-    db     0xf, 0xc7, 0xf0         ; rdrand r16: "0f c7 /6  ModRM:r/m(w)"
     jc     rn16_ok                 ; jmp if CF=1
     xor    rax, rax                ; reg=0 if CF=0
     ret                            ; return with failure status
@@ -45,9 +44,8 @@ rn16_ok:
 ;------------------------------------------------------------------------------
 global ASM_PFX(InternalX86RdRand32)
 ASM_PFX(InternalX86RdRand32):
-    ; rdrand   eax                 ; generate a 32 bit RN into eax,
+    rdrand eax                     ; generate a 32 bit RN into eax,
                                    ; CF=1 if RN generated ok, otherwise CF=0
-    db     0xf, 0xc7, 0xf0         ; rdrand r32: "0f c7 /6  ModRM:r/m(w)"
     jc     rn32_ok                 ; jmp if CF=1
     xor    rax, rax                ; reg=0 if CF=0
     ret                            ; return with failure status
@@ -64,9 +62,8 @@ rn32_ok:
 ;------------------------------------------------------------------------------
 global ASM_PFX(InternalX86RdRand64)
 ASM_PFX(InternalX86RdRand64):
-    ; rdrand   rax                 ; generate a 64 bit RN into rax,
+    rdrand rax                     ; generate a 64 bit RN into rax,
                                    ; CF=1 if RN generated ok, otherwise CF=0
-    db     0x48, 0xf, 0xc7, 0xf0   ; rdrand r64: "REX.W + 0f c7 /6 ModRM:r/m(w)"
     jc     rn64_ok                 ; jmp if CF=1
     xor    rax, rax                ; reg=0 if CF=0
     ret                            ; return with failure status
diff --git a/MdePkg/Library/BaseLib/X64/ReadDr4.nasm b/MdePkg/Library/BaseLib/X64/ReadDr4.nasm
index 82c0a9a588..90b2172cee 100644
--- a/MdePkg/Library/BaseLib/X64/ReadDr4.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadDr4.nasm
@@ -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,6 +31,6 @@ ASM_PFX(AsmReadDr4):
     ; There's no obvious reason to access this register, since it's aliased to
     ; DR7 when DE=0 or an exception generated when DE=1
     ;
-    DB      0xf, 0x21, 0xe0
+    mov     rax, dr4
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadDr5.nasm b/MdePkg/Library/BaseLib/X64/ReadDr5.nasm
index c309c66dfe..c1143f4498 100644
--- a/MdePkg/Library/BaseLib/X64/ReadDr5.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadDr5.nasm
@@ -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,6 +31,6 @@ ASM_PFX(AsmReadDr5):
     ; There's no obvious reason to access this register, since it's aliased to
     ; DR7 when DE=0 or an exception generated when DE=1
     ;
-    DB      0xf, 0x21, 0xe8
+    mov     rax, dr5
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm0.nasm b/MdePkg/Library/BaseLib/X64/ReadMm0.nasm
index 615721b6aa..e64b2c7882 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm0.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm0.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm0)
 ASM_PFX(AsmReadMm0):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x7e, 0xc0
+    movq    rax, mm0
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm1.nasm b/MdePkg/Library/BaseLib/X64/ReadMm1.nasm
index 7b27393490..bec3c71207 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm1.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm1.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm1)
 ASM_PFX(AsmReadMm1):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x7e, 0xc8
+    movq    rax, mm1
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm2.nasm b/MdePkg/Library/BaseLib/X64/ReadMm2.nasm
index c654b91a7a..4c880697cb 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm2.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm2.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm2)
 ASM_PFX(AsmReadMm2):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x7e, 0xd0
+    movq    rax, mm2
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm3.nasm b/MdePkg/Library/BaseLib/X64/ReadMm3.nasm
index 88d51c0781..cf81e5a7ab 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm3.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm3.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm3)
 ASM_PFX(AsmReadMm3):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x7e, 0xd8
+    movq    rax, mm3
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm4.nasm b/MdePkg/Library/BaseLib/X64/ReadMm4.nasm
index 4252d20bb1..17ba364e32 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm4.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm4.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm4)
 ASM_PFX(AsmReadMm4):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x7e, 0xe0
+    movq    rax, mm4
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm5.nasm b/MdePkg/Library/BaseLib/X64/ReadMm5.nasm
index d8f530dec8..f1354dd68c 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm5.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm5.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm5)
 ASM_PFX(AsmReadMm5):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x7e, 0xe8
+    movq    rax, mm5
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm6.nasm b/MdePkg/Library/BaseLib/X64/ReadMm6.nasm
index 6f6883c2b6..9d5a287218 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm6.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm6.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm6)
 ASM_PFX(AsmReadMm6):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x7e, 0xf0
+    movq    rax, mm6
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm7.nasm b/MdePkg/Library/BaseLib/X64/ReadMm7.nasm
index 573f15dfc8..ae15f24d8b 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm7.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm7.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm7)
 ASM_PFX(AsmReadMm7):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x7e, 0xf8
+    movq    rax, mm7
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/SetJump.nasm b/MdePkg/Library/BaseLib/X64/SetJump.nasm
index 5a68396eec..5943a5ebe5 100644
--- a/MdePkg/Library/BaseLib/X64/SetJump.nasm
+++ b/MdePkg/Library/BaseLib/X64/SetJump.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2019, 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:
@@ -48,8 +48,8 @@ ASM_PFX(SetJump):
     jnc     CetDone
 
     mov     rax, 1
-    INCSSP_RAX                           ; to read original SSP
-    READSSP_RAX
+    incsspq rax                          ; to read original SSP
+    rdsspq  rax
     mov     [rcx + 0xF8], rax            ; save SSP
 
 CetDone:
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr4.nasm b/MdePkg/Library/BaseLib/X64/WriteDr4.nasm
index c4b12c9e92..5e4d96015e 100644
--- a/MdePkg/Library/BaseLib/X64/WriteDr4.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteDr4.nasm
@@ -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,7 +31,7 @@ ASM_PFX(AsmWriteDr4):
     ; There's no obvious reason to access this register, since it's aliased to
     ; DR6 when DE=0 or an exception generated when DE=1
     ;
-    DB      0xf, 0x23, 0xe1
+    mov     dr4, rcx
     mov     rax, rcx
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr5.nasm b/MdePkg/Library/BaseLib/X64/WriteDr5.nasm
index 986a4a95d9..d5d4e2f324 100644
--- a/MdePkg/Library/BaseLib/X64/WriteDr5.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteDr5.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2008, 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,7 +31,7 @@ ASM_PFX(AsmWriteDr5):
     ; There's no obvious reason to access this register, since it's aliased to
     ; DR7 when DE=0 or an exception generated when DE=1
     ;
-    DB      0xf, 0x23, 0xe9
+    mov     dr5, rcx
     mov     rax, rcx
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm0.nasm b/MdePkg/Library/BaseLib/X64/WriteMm0.nasm
index 3f03529edf..e6b5a0fc33 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm0.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm0.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm0)
 ASM_PFX(AsmWriteMm0):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x6e, 0xc1
+    movq    mm0, rcx
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm1.nasm b/MdePkg/Library/BaseLib/X64/WriteMm1.nasm
index f552d40716..414c6af6da 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm1.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm1.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm1)
 ASM_PFX(AsmWriteMm1):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x6e, 0xc9
+    movq    mm1, rcx
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm2.nasm b/MdePkg/Library/BaseLib/X64/WriteMm2.nasm
index 1bd176ced9..525740342a 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm2.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm2.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm2)
 ASM_PFX(AsmWriteMm2):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x6e, 0xd1
+    movq    mm2, rcx
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm3.nasm b/MdePkg/Library/BaseLib/X64/WriteMm3.nasm
index 403f140736..abf11bfb17 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm3.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm3.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm3)
 ASM_PFX(AsmWriteMm3):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x6e, 0xd9
+    movq    mm3, rcx
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm4.nasm b/MdePkg/Library/BaseLib/X64/WriteMm4.nasm
index d99709d495..7cbd25e70a 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm4.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm4.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm4)
 ASM_PFX(AsmWriteMm4):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x6e, 0xe1
+    movq    mm4, rcx
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm5.nasm b/MdePkg/Library/BaseLib/X64/WriteMm5.nasm
index 0467ac4220..9edfd0db83 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm5.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm5.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm5)
 ASM_PFX(AsmWriteMm5):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x6e, 0xe9
+    movq    mm5, rcx
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm6.nasm b/MdePkg/Library/BaseLib/X64/WriteMm6.nasm
index 6d2e5eb8fb..4555563a55 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm6.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm6.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm6)
 ASM_PFX(AsmWriteMm6):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x6e, 0xf1
+    movq    mm6, rcx
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm7.nasm b/MdePkg/Library/BaseLib/X64/WriteMm7.nasm
index de72adf685..4ef0eb5271 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm7.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm7.nasm
@@ -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:
@@ -27,9 +27,6 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm7)
 ASM_PFX(AsmWriteMm7):
-    ;
-    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
-    ;
-    DB      0x48, 0xf, 0x6e, 0xf9
+    movq    mm7, rcx
     ret
 
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.nasm b/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.nasm
index 5769c00bf9..3b336c6bdf 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.nasm
+++ b/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.nasm
@@ -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
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.nasm b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.nasm
index 450113ba84..af584e3d34 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.nasm
+++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.nasm
@@ -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
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.nasm b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.nasm
index 4e1f4be2b4..7a63a1c50b 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.nasm
+++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.nasm
@@ -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
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.nasm b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.nasm
index b3a7385897..ab5f954826 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.nasm
+++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.nasm
@@ -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
 
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.nasm b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.nasm
index f517e1d23a..fcc44294a8 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.nasm
+++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.nasm
@@ -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
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.nasm b/MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.nasm
index 2a85f15b55..8b02eeb732 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.nasm
+++ b/MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.nasm
@@ -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
-- 
2.28.0.windows.1


  reply	other threads:[~2022-01-10 15:13 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-10 15:12 [PATCH v2 1/6] MdeModulePkg: Replace Opcode with the corresponding instructions Jason Lou
2022-01-10 15:12 ` Jason Lou [this message]
2022-01-11  0:55   ` 回复: [edk2-devel] [PATCH v2 2/6] MdePkg: " gaoliming
2022-01-10 15:12 ` [PATCH v2 3/6] SourceLevelDebugPkg: " Jason Lou
2022-01-11  1:03   ` Wu, Hao A
2022-01-10 15:12 ` [PATCH v2 4/6] UefiCpuPkg: " Jason Lou
2022-02-10  5:35   ` Ni, Ray
2022-01-10 15:12 ` [PATCH v2 5/6] MdePkg: Remove the macro definitions regarding Opcode Jason Lou
2022-01-10 15:12 ` [PATCH v2 6/6] BaseTools: Upgrade the version of NASM tool Jason Lou
2022-01-17  0:49   ` Yuwei Chen
2022-02-10  5:36 ` [PATCH v2 1/6] MdeModulePkg: Replace Opcode with the corresponding instructions Ni, Ray
2022-02-10  7:44   ` 回复: [edk2-devel] " gaoliming

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220110151253.3848-2-yun.lou@intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox