File ovmf-Revert-MdePkg-Replace-Opcode-with-the-corresponding-.patch of Package ovmf.37549

From f0304acd288b9cba253cb53174b98c3c281c1a8b Mon Sep 17 00:00:00 2001
From: "Lee, Chun-Yi" <jlee@suse.com>
Date: Tue, 23 Aug 2022 16:56:44 +0800
Subject: [PATCH 4/5] Revert "MdePkg: Replace Opcode with the corresponding
 instructions."

This reverts commit d3febfd9ade35dc552df6b3607c2b15d26b82867.

Signed-off-by: Lee, Chun-Yi <jlee@suse.com>
---
 .../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 +++---
 .../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 +++++--
 .../Library/BaseMemoryLibMmx/X64/CopyMem.nasm | 10 +++++-----
 .../Library/BaseMemoryLibMmx/X64/SetMem.nasm  |  8 ++++----
 .../BaseMemoryLibMmx/X64/SetMem16.nasm        |  8 ++++----
 .../BaseMemoryLibMmx/X64/SetMem32.nasm        | 10 +++++-----
 .../BaseMemoryLibMmx/X64/SetMem64.nasm        |  6 +++---
 .../Library/BaseMemoryLibMmx/X64/ZeroMem.nasm |  8 ++++----
 42 files changed, 175 insertions(+), 116 deletions(-)

diff --git a/MdePkg/Library/BaseLib/Ia32/EnablePaging64.nasm b/MdePkg/Library/BaseLib/Ia32/EnablePaging64.nasm
index ef11458077..544e3c3892 100644
--- a/MdePkg/Library/BaseLib/Ia32/EnablePaging64.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/EnablePaging64.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -44,12 +44,16 @@ ASM_PFX(InternalX86EnablePaging64):
     mov     cr0, eax                    ; enable paging
     retf                                ; topmost 2 dwords hold the address
 .0:
-BITS 64
-    mov     rbx, [esp]
-    mov     rcx, [esp + 8]
-    mov     rdx, [esp + 0x10]
-    mov     rsp, [esp + 0x18]
-    add     rsp, -0x20
-    call    rbx
+    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
     hlt                                 ; no one should get here
 
diff --git a/MdePkg/Library/BaseLib/Ia32/LongJump.nasm b/MdePkg/Library/BaseLib/Ia32/LongJump.nasm
index 6c13dfe307..f94d10f806 100644
--- a/MdePkg/Library/BaseLib/Ia32/LongJump.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/LongJump.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006 - 2019, 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
-    rdsspd  eax
+    READSSP_EAX
     sub     edx, eax               ; edx = delta
     mov     eax, edx               ; eax = delta
 
     shr     eax, 2                 ; eax = delta/sizeof(UINT32)
-    incsspd eax
+    INCSSP_EAX
 
 CetDone:
 
diff --git a/MdePkg/Library/BaseLib/Ia32/Monitor.nasm b/MdePkg/Library/BaseLib/Ia32/Monitor.nasm
index 70dbe66e27..28dc0ba70a 100644
--- a/MdePkg/Library/BaseLib/Ia32/Monitor.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/Monitor.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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]
-    monitor
+    DB      0xf, 1, 0xc8                ; monitor
     ret
 
diff --git a/MdePkg/Library/BaseLib/Ia32/Mwait.nasm b/MdePkg/Library/BaseLib/Ia32/Mwait.nasm
index 2d36a97df6..3956940cab 100644
--- a/MdePkg/Library/BaseLib/Ia32/Mwait.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/Mwait.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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]
-    mwait
+    DB      0xf, 1, 0xc9                ; mwait
     ret
 
diff --git a/MdePkg/Library/BaseLib/Ia32/RdRand.nasm b/MdePkg/Library/BaseLib/Ia32/RdRand.nasm
index d818b6ef55..e12b8e9611 100644
--- a/MdePkg/Library/BaseLib/Ia32/RdRand.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/RdRand.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2015 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -25,8 +25,9 @@ SECTION .text
 ;------------------------------------------------------------------------------
 global ASM_PFX(InternalX86RdRand16)
 ASM_PFX(InternalX86RdRand16):
-    rdrand eax                     ; generate a 16 bit RN into ax
+    ; rdrand   ax                  ; 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
@@ -44,8 +45,9 @@ 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
@@ -63,13 +65,14 @@ 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
 
-    rdrand eax                     ; generate another 32 bit RN
+    db     0xf, 0xc7, 0xf0         ; 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 1c312b670d..81c681de34 100644
--- a/MdePkg/Library/BaseLib/Ia32/ReadDr4.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/ReadDr4.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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.
+    ; under normal circustances. Here opcode is used.
     ;
-    mov     eax, dr4
+    DB      0xf, 0x21, 0xe0
     ret
 
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr5.nasm b/MdePkg/Library/BaseLib/Ia32/ReadDr5.nasm
index 07a1b44a00..e2deacb832 100644
--- a/MdePkg/Library/BaseLib/Ia32/ReadDr5.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/ReadDr5.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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.
+    ; under normal circustances. Here opcode is used.
     ;
-    mov     eax, dr5
+    DB      0xf, 0x21, 0xe8
     ret
 
diff --git a/MdePkg/Library/BaseLib/Ia32/SetJump.nasm b/MdePkg/Library/BaseLib/Ia32/SetJump.nasm
index 2577373241..364613b5f9 100644
--- a/MdePkg/Library/BaseLib/Ia32/SetJump.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/SetJump.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006 - 2019, 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
-    incsspd eax                    ; to read original SSP
-    rdsspd  eax
+    INCSSP_EAX                     ; to read original SSP
+    READSSP_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 b8479b39f7..0d23fca111 100644
--- a/MdePkg/Library/BaseLib/Ia32/WriteDr4.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/WriteDr4.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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.
+    ; under normal circustances. Here opcode is used.
     ;
-    mov     dr4, eax
+    DB      0xf, 0x23, 0xe0
     ret
 
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr5.nasm b/MdePkg/Library/BaseLib/Ia32/WriteDr5.nasm
index 3545561025..bc5f424b8d 100644
--- a/MdePkg/Library/BaseLib/Ia32/WriteDr5.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/WriteDr5.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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.
+    ; under normal circustances. Here opcode is used.
     ;
-    mov     dr5, eax
+    DB      0xf, 0x23, 0xe8
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/DisablePaging64.nasm b/MdePkg/Library/BaseLib/X64/DisablePaging64.nasm
index 200c408d9a..c76ed1a76c 100644
--- a/MdePkg/Library/BaseLib/X64/DisablePaging64.nasm
+++ b/MdePkg/Library/BaseLib/X64/DisablePaging64.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -51,7 +51,8 @@ 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
-    retfq
+    DB      0x48                         ; prefix to composite "retq" with next "retf"
+    retf                                ; Use far return to load CS register from stack
 
 ; Start of transition code
 .0:
diff --git a/MdePkg/Library/BaseLib/X64/LongJump.nasm b/MdePkg/Library/BaseLib/X64/LongJump.nasm
index 2002f65cba..59f7092169 100644
--- a/MdePkg/Library/BaseLib/X64/LongJump.nasm
+++ b/MdePkg/Library/BaseLib/X64/LongJump.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006 - 2019, 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
-    rdsspq  rax
+    READSSP_RAX
     sub     rdx, rax                     ; rdx = delta
     mov     rax, rdx                     ; rax = delta
 
     shr     rax, 3                       ; rax = delta/sizeof(UINT64)
-    incsspq rax
+    INCSSP_RAX
 
     pop     rdx                          ; restore rdx
 CetDone:
diff --git a/MdePkg/Library/BaseLib/X64/Monitor.nasm b/MdePkg/Library/BaseLib/X64/Monitor.nasm
index 210037d402..e1ccb83a85 100644
--- a/MdePkg/Library/BaseLib/X64/Monitor.nasm
+++ b/MdePkg/Library/BaseLib/X64/Monitor.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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
-    monitor
+    DB      0xf, 1, 0xc8                ; monitor
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/Mwait.nasm b/MdePkg/Library/BaseLib/X64/Mwait.nasm
index c8ad59588b..83fc895491 100644
--- a/MdePkg/Library/BaseLib/X64/Mwait.nasm
+++ b/MdePkg/Library/BaseLib/X64/Mwait.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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
-    mwait
+    DB      0xf, 1, 0xc9                ; mwait
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/RdRand.nasm b/MdePkg/Library/BaseLib/X64/RdRand.nasm
index 73479be8d3..7e7fe99670 100644
--- a/MdePkg/Library/BaseLib/X64/RdRand.nasm
+++ b/MdePkg/Library/BaseLib/X64/RdRand.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2015 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -26,8 +26,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(InternalX86RdRand16)
 ASM_PFX(InternalX86RdRand16):
-    rdrand eax                     ; generate a 16 bit RN into eax,
+    ; rdrand   ax                  ; 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
@@ -44,8 +45,9 @@ 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
@@ -62,8 +64,9 @@ 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 90b2172cee..82c0a9a588 100644
--- a/MdePkg/Library/BaseLib/X64/ReadDr4.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadDr4.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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
     ;
-    mov     rax, dr4
+    DB      0xf, 0x21, 0xe0
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadDr5.nasm b/MdePkg/Library/BaseLib/X64/ReadDr5.nasm
index c1143f4498..c309c66dfe 100644
--- a/MdePkg/Library/BaseLib/X64/ReadDr5.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadDr5.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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
     ;
-    mov     rax, dr5
+    DB      0xf, 0x21, 0xe8
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm0.nasm b/MdePkg/Library/BaseLib/X64/ReadMm0.nasm
index e64b2c7882..615721b6aa 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm0.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm0.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm0)
 ASM_PFX(AsmReadMm0):
-    movq    rax, mm0
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x7e, 0xc0
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm1.nasm b/MdePkg/Library/BaseLib/X64/ReadMm1.nasm
index bec3c71207..7b27393490 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm1.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm1.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm1)
 ASM_PFX(AsmReadMm1):
-    movq    rax, mm1
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x7e, 0xc8
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm2.nasm b/MdePkg/Library/BaseLib/X64/ReadMm2.nasm
index 4c880697cb..c654b91a7a 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm2.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm2.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm2)
 ASM_PFX(AsmReadMm2):
-    movq    rax, mm2
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x7e, 0xd0
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm3.nasm b/MdePkg/Library/BaseLib/X64/ReadMm3.nasm
index cf81e5a7ab..88d51c0781 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm3.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm3.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm3)
 ASM_PFX(AsmReadMm3):
-    movq    rax, mm3
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x7e, 0xd8
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm4.nasm b/MdePkg/Library/BaseLib/X64/ReadMm4.nasm
index 17ba364e32..4252d20bb1 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm4.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm4.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm4)
 ASM_PFX(AsmReadMm4):
-    movq    rax, mm4
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x7e, 0xe0
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm5.nasm b/MdePkg/Library/BaseLib/X64/ReadMm5.nasm
index f1354dd68c..d8f530dec8 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm5.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm5.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm5)
 ASM_PFX(AsmReadMm5):
-    movq    rax, mm5
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x7e, 0xe8
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm6.nasm b/MdePkg/Library/BaseLib/X64/ReadMm6.nasm
index 9d5a287218..6f6883c2b6 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm6.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm6.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm6)
 ASM_PFX(AsmReadMm6):
-    movq    rax, mm6
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x7e, 0xf0
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm7.nasm b/MdePkg/Library/BaseLib/X64/ReadMm7.nasm
index ae15f24d8b..573f15dfc8 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm7.nasm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm7.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmReadMm7)
 ASM_PFX(AsmReadMm7):
-    movq    rax, mm7
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x7e, 0xf8
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/SetJump.nasm b/MdePkg/Library/BaseLib/X64/SetJump.nasm
index 5943a5ebe5..5a68396eec 100644
--- a/MdePkg/Library/BaseLib/X64/SetJump.nasm
+++ b/MdePkg/Library/BaseLib/X64/SetJump.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006 - 2019, 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
-    incsspq rax                          ; to read original SSP
-    rdsspq  rax
+    INCSSP_RAX                           ; to read original SSP
+    READSSP_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 5e4d96015e..c4b12c9e92 100644
--- a/MdePkg/Library/BaseLib/X64/WriteDr4.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteDr4.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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
     ;
-    mov     dr4, rcx
+    DB      0xf, 0x23, 0xe1
     mov     rax, rcx
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr5.nasm b/MdePkg/Library/BaseLib/X64/WriteDr5.nasm
index d5d4e2f324..986a4a95d9 100644
--- a/MdePkg/Library/BaseLib/X64/WriteDr5.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteDr5.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006 - 2008, 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
     ;
-    mov     dr5, rcx
+    DB      0xf, 0x23, 0xe9
     mov     rax, rcx
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm0.nasm b/MdePkg/Library/BaseLib/X64/WriteMm0.nasm
index e6b5a0fc33..3f03529edf 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm0.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm0.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm0)
 ASM_PFX(AsmWriteMm0):
-    movq    mm0, rcx
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x6e, 0xc1
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm1.nasm b/MdePkg/Library/BaseLib/X64/WriteMm1.nasm
index 414c6af6da..f552d40716 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm1.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm1.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm1)
 ASM_PFX(AsmWriteMm1):
-    movq    mm1, rcx
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x6e, 0xc9
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm2.nasm b/MdePkg/Library/BaseLib/X64/WriteMm2.nasm
index 525740342a..1bd176ced9 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm2.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm2.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm2)
 ASM_PFX(AsmWriteMm2):
-    movq    mm2, rcx
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x6e, 0xd1
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm3.nasm b/MdePkg/Library/BaseLib/X64/WriteMm3.nasm
index abf11bfb17..403f140736 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm3.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm3.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm3)
 ASM_PFX(AsmWriteMm3):
-    movq    mm3, rcx
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x6e, 0xd9
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm4.nasm b/MdePkg/Library/BaseLib/X64/WriteMm4.nasm
index 7cbd25e70a..d99709d495 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm4.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm4.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm4)
 ASM_PFX(AsmWriteMm4):
-    movq    mm4, rcx
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x6e, 0xe1
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm5.nasm b/MdePkg/Library/BaseLib/X64/WriteMm5.nasm
index 9edfd0db83..0467ac4220 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm5.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm5.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm5)
 ASM_PFX(AsmWriteMm5):
-    movq    mm5, rcx
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x6e, 0xe9
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm6.nasm b/MdePkg/Library/BaseLib/X64/WriteMm6.nasm
index 4555563a55..6d2e5eb8fb 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm6.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm6.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm6)
 ASM_PFX(AsmWriteMm6):
-    movq    mm6, rcx
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x6e, 0xf1
     ret
 
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm7.nasm b/MdePkg/Library/BaseLib/X64/WriteMm7.nasm
index 4ef0eb5271..de72adf685 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm7.nasm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm7.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
 ; SPDX-License-Identifier: BSD-2-Clause-Patent
 ;
 ; Module Name:
@@ -27,6 +27,9 @@
 ;------------------------------------------------------------------------------
 global ASM_PFX(AsmWriteMm7)
 ASM_PFX(AsmWriteMm7):
-    movq    mm7, rcx
+    ;
+    ; 64-bit MASM doesn't support MMX instructions, so use opcode here
+    ;
+    DB      0x48, 0xf, 0x6e, 0xf9
     ret
 
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.nasm b/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.nasm
index 3b336c6bdf..5769c00bf9 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.nasm
+++ b/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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
-    movq    r10, mm0
+    DB      0x49, 0xf, 0x7e, 0xc2         ; movd r10, mm0 (Save mm0 in r10)
 .1:
-    movq    mm0, [rsi]
-    movntq  [rdi], mm0
+    DB      0xf, 0x6f, 0x6               ; movd mm0, [rsi]
+    DB      0xf, 0xe7, 0x7              ; movntq [rdi], mm0
     add     rsi, 8
     add     rdi, 8
     loop    .1
     mfence
-    movq    mm0, r10
+    DB      0x49, 0xf, 0x6e, 0xc2         ; movd mm0, r10 (Restore mm0)
     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 af584e3d34..450113ba84 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.nasm
+++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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
-    movq    mm0, rax
+    DB      0x48, 0xf, 0x6e, 0xc0         ; movd mm0, rax
     mov     r8, rcx
     mov     rdi, r8                     ; rdi <- Buffer
     mov     rcx, rdx
     and     edx, 7
     shr     rcx, 3
     jz      @SetBytes
-    pshufw  mm0, mm0, 0
+    DB      0xf, 0x70, 0xC0, 0x0         ; pshufw mm0, mm0, 0h
 .0:
-    movntq  [rdi], mm0
+    DB      0xf, 0xe7, 0x7              ; 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 7a63a1c50b..4e1f4be2b4 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.nasm
+++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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
-    movq    mm0, rax
+    DB      0x48, 0xf, 0x6e, 0xc0         ; movd mm0, rax
     mov     r8, rcx
     mov     rdi, r8
     mov     rcx, rdx
     and     edx, 3
     shr     rcx, 2
     jz      @SetWords
-    pshufw  mm0, mm0, 0
+    DB      0xf, 0x70, 0xC0, 0x0         ; pshufw mm0, mm0, 0h
 .0:
-    movntq  [rdi], mm0
+    DB      0xf, 0xe7, 0x7              ; 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 ab5f954826..b3a7385897 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.nasm
+++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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):
-    movq    mm0, r8
+    DB      0x49, 0xf, 0x6e, 0xc0         ; movd mm0, r8 (Value)
     mov     rax, rcx                    ; rax <- Buffer
     xchg    rcx, rdx                    ; rcx <- Count  rdx <- Buffer
     shr     rcx, 1                      ; rcx <- # of qwords to set
     jz      @SetDwords
-    pshufw  mm0, mm0, 44h
+    DB      0xf, 0x70, 0xC0, 0x44         ; pshufw mm0, mm0, 44h
 .0:
-    movntq  [rdx], mm0
+    DB      0xf, 0xe7, 0x2              ; movntq [rdx], mm0
     lea     rdx, [rdx + 8]              ; use "lea" to avoid flag changes
     loop    .0
     mfence
 @SetDwords:
     jnc     .1
-    movd    [rdx], mm0
+    DB      0xf, 0x7e, 0x2               ; movd [rdx], mm0
 .1:
     ret
 
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.nasm b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.nasm
index fcc44294a8..f517e1d23a 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.nasm
+++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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):
-    movq    mm0, r8
+    DB      0x49, 0xf, 0x6e, 0xc0         ; movd mm0, r8 (Value)
     mov     rax, rcx                    ; rax <- Buffer
     xchg    rcx, rdx                    ; rcx <- Count
 .0:
-    movntq  [rdx], mm0
+    DB      0xf, 0xe7, 0x2              ; 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 8b02eeb732..2a85f15b55 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.nasm
+++ b/MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.nasm
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------
 ;
-; Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2006, 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
-    pxor    mm0, mm0
+    DB      0xf, 0xef, 0xc0             ; pxor mm0, mm0
 .0:
-    movntq  [rdi], mm0
+    DB      0xf, 0xe7, 7                ; movntq [rdi], mm0
     add     rdi, 8
     loop    .0
-    mfence
+    DB      0xf, 0xae, 0xf0             ; mfence
 @ZeroBytes:
     xor     eax, eax
     mov     ecx, edx
-- 
2.26.2

openSUSE Build Service is sponsored by