]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseLib/Ia32/LShiftU64.c
MdePkg/BaseLib: Support IA32 processors without CMOVx
[mirror_edk2.git] / MdePkg / Library / BaseLib / Ia32 / LShiftU64.c
index f684e1f29a03f2955456a00ffd59c45513a9aec1..9fb2532acf784cce56f1ec8f177a3c134a428e79 100644 (file)
@@ -1,20 +1,18 @@
 /** @file\r
   64-bit left shift function for IA-32.\r
 \r
-  Copyright (c) 2006 - 2007, Intel Corporation<BR>\r
-  All rights reserved. This program and the accompanying materials\r
+  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
+  This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php\r
+  http://opensource.org/licenses/bsd-license.php.\r
 \r
   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
 **/\r
 \r
-//\r
-// Include common header file for this module.\r
-//\r
+\r
 \r
 \r
 /**\r
@@ -42,8 +40,10 @@ InternalMathLShiftU64 (
     xor     eax, eax\r
     mov     edx, dword ptr [Operand + 0]\r
     test    cl, 32                      // Count >= 32?\r
-    cmovz   eax, edx\r
-    cmovz   edx, dword ptr [Operand + 4]\r
+    jnz     L0\r
+    mov     eax, edx\r
+    mov     edx, dword ptr [Operand + 4]\r
+L0:\r
     shld    edx, eax, cl\r
     shl     eax, cl\r
   }\r