#\r
#------------------------------------------------------------------------------\r
#\r
-# Copyright (c) 2006, Intel Corporation\r
+# Copyright (c) 2006 - 2009, Intel Corporation\r
# All rights reserved. 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
# IN UINTN Length\r
# );\r
#------------------------------------------------------------------------------\r
-.intel_syntax\r
.globl ASM_PFX(InternalMemCompareMem)\r
ASM_PFX(InternalMemCompareMem):\r
- push rsi\r
- push rdi\r
- mov rsi, rcx\r
- mov rdi, rdx\r
- mov rcx, r8\r
+ pushq %rsi\r
+ pushq %rdi\r
+ movq %rcx, %rsi\r
+ movq %rdx, %rdi\r
+ movq %r8, %rcx\r
repe cmpsb\r
- movzx rax, byte ptr [rsi - 1]\r
- movzx rdx, byte ptr [rdi - 1]\r
- sub rax, rdx\r
- pop rdi\r
- pop rsi\r
+ movzbq -1(%rsi) , %rax\r
+ movzbq -1(%rdi) , %rdx\r
+ subq %rdx, %rax\r
+ popq %rdi\r
+ popq %rsi\r
ret\r
\r
#\r
#------------------------------------------------------------------------------\r
#\r
-# Copyright (c) 2006, Intel Corporation\r
+# Copyright (c) 2006 - 2009, Intel Corporation\r
# All rights reserved. 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
# IN UINTN Count\r
# )\r
#------------------------------------------------------------------------------\r
-.intel_syntax\r
.globl ASM_PFX(InternalMemCopyMem)\r
ASM_PFX(InternalMemCopyMem):\r
- push rsi\r
- push rdi\r
- mov rsi, rdx # rsi <- Source\r
- mov rdi, rcx # rdi <- Destination\r
- lea r9, [rsi + r8 - 1] # r9 <- End of Source\r
- cmp rsi, rdi\r
- mov rax, rdi # rax <- Destination as return value\r
- jae _InternalMemCopyMem_al_0000\r
- cmp r9, rdi\r
- jae _atSym_CopyBackward # Copy backward if overlapped\r
-_InternalMemCopyMem_al_0000:\r
- mov rcx, r8\r
- and r8, 7\r
- shr rcx, 3\r
+ pushq %rsi\r
+ pushq %rdi\r
+ movq %rdx, %rsi # rsi <- Source\r
+ movq %rcx, %rdi # rdi <- Destination\r
+ leaq -1(%rsi, %r8,), %r9 # r9 <- End of Source\r
+ cmpq %rdi, %rsi\r
+ movq %rdi, %rax # rax <- Destination as return value\r
+ jae L0\r
+ cmpq %rdi, %r9\r
+ jae L_CopyBackward # Copy backward if overlapped\r
+L0:\r
+ movq %r8, %rcx\r
+ andq $7, %r8\r
+ shrq $3, %rcx\r
rep movsq # Copy as many Qwords as possible\r
- jmp _atSym_CopyBytes\r
-_atSym_CopyBackward:\r
- mov rsi, r9 # rsi <- End of Source\r
- lea rdi, [rdi + r8 - 1] # esi <- End of Destination\r
+ jmp L_CopyBytes\r
+L_CopyBackward:\r
+ movq %r9, %rsi # rsi <- End of Source\r
+ leaq -1(%rdi, %r8), %rdi # esi <- End of Destination\r
std # set direction flag\r
-_atSym_CopyBytes:\r
- mov rcx, r8\r
+L_CopyBytes:\r
+ movq %r8, %rcx\r
rep movsb # Copy bytes backward\r
cld\r
- pop rdi\r
- pop rsi\r
+ popq %rdi\r
+ popq %rsi\r
ret\r
\r
#\r
#------------------------------------------------------------------------------\r
#\r
-# Copyright (c) 2006, Intel Corporation\r
+# Copyright (c) 2006 - 2009, Intel Corporation\r
# All rights reserved. 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
# IN UINT16 Value\r
# );\r
#------------------------------------------------------------------------------\r
-.intel_syntax\r
.globl ASM_PFX(InternalMemScanMem16)\r
ASM_PFX(InternalMemScanMem16):\r
- push rdi\r
- mov rdi, rcx\r
- mov rax, r8\r
- mov rcx, rdx\r
+ pushq %rdi\r
+ movq %rcx, %rdi\r
+ movq %rdx, %rcx\r
+ movq %r8, %rax\r
repne scasw\r
- lea rax, [rdi - 2]\r
- cmovnz rax, rcx\r
- pop rdi\r
+ leaq -2(%rdi), %rax\r
+ cmovnz %rcx, %rax # set rax to 0 if not found\r
+ popq %rdi\r
ret\r
\r
#\r
#------------------------------------------------------------------------------\r
#\r
-# Copyright (c) 2006, Intel Corporation\r
+# Copyright (c) 2006 - 2009, Intel Corporation\r
# All rights reserved. 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
# IN UINT32 Value\r
# );\r
#------------------------------------------------------------------------------\r
-.intel_syntax\r
.globl ASM_PFX(InternalMemScanMem32)\r
ASM_PFX(InternalMemScanMem32):\r
- push rdi\r
- mov rdi, rcx\r
- mov rax, r8\r
- mov rcx, rdx\r
- repne scasd\r
- lea rax, [rdi - 4]\r
- cmovnz rax, rcx\r
- pop rdi\r
+ pushq %rdi\r
+ movq %rcx, %rdi\r
+ movq %rdx, %rcx\r
+ movq %r8, %rax\r
+ repne scasl\r
+ leaq -4(%rdi), %rax\r
+ cmovnz %rcx, %rax # set rax to 0 if not found\r
+ popq %rdi\r
ret\r
\r
#\r
#------------------------------------------------------------------------------\r
#\r
-# Copyright (c) 2006, Intel Corporation\r
+# Copyright (c) 2006 - 2009, Intel Corporation\r
# All rights reserved. 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
# IN UINT64 Value\r
# );\r
#------------------------------------------------------------------------------\r
-.intel_syntax\r
.globl ASM_PFX(InternalMemScanMem64)\r
ASM_PFX(InternalMemScanMem64):\r
- push rdi\r
- mov rdi, rcx\r
- mov rax, r8\r
- mov rcx, rdx\r
+ pushq %rdi\r
+ movq %rcx, %rdi\r
+ movq %rdx, %rcx\r
+ movq %r8, %rax\r
repne scasq\r
- lea rax, [rdi - 8]\r
- cmovnz rax, rcx\r
- pop rdi\r
+ leaq -8(%rdi), %rax\r
+ cmovnz %rcx, %rax # set rax to 0 if not found\r
+ popq %rdi\r
ret\r
\r
#\r
#------------------------------------------------------------------------------\r
#\r
-# Copyright (c) 2006, Intel Corporation\r
+# Copyright (c) 2006 - 2009, Intel Corporation\r
# All rights reserved. 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
# IN UINT8 Value\r
# );\r
#------------------------------------------------------------------------------\r
-.intel_syntax\r
.globl ASM_PFX(InternalMemScanMem8)\r
ASM_PFX(InternalMemScanMem8):\r
- push rdi\r
- mov rdi, rcx\r
- mov rcx, rdx\r
- mov rax, r8\r
+ pushq %rdi\r
+ movq %rcx, %rdi\r
+ movq %rdx, %rcx\r
+ movq %r8, %rax\r
repne scasb\r
- lea rax, [rdi - 1]\r
- cmovnz rax, rcx # set rax to 0 if not found\r
- pop rdi\r
+ leaq -1(%rdi), %rax\r
+ cmovnz %rcx, %rax # set rax to 0 if not found\r
+ popq %rdi\r
ret\r
\r
#\r
#------------------------------------------------------------------------------\r
#\r
-# Copyright (c) 2006, Intel Corporation\r
+# Copyright (c) 2006 - 2009, Intel Corporation\r
# All rights reserved. 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
# IN UINT8 Value\r
# )\r
#------------------------------------------------------------------------------\r
-.intel_syntax\r
.globl ASM_PFX(InternalMemSetMem)\r
ASM_PFX(InternalMemSetMem):\r
- push rdi\r
- mov rax, r8 # rax = Value\r
- mov rdi, rcx # rdi = Buffer\r
- xchg rcx, rdx # rcx = Count, rdx = Buffer\r
+ pushq %rdi\r
+ movq %r8, %rax # rax = Value\r
+ movq %rcx, %rdi # rdi = Buffer\r
+ xchgq %rdx, %rcx # rcx = Count, rdx = Buffer\r
rep stosb\r
- mov rax, rdx # rax = Buffer\r
- pop rdi\r
+ movq %rdx, %rax # rax = Buffer\r
+ popq %rdi\r
ret\r
\r
#\r
#------------------------------------------------------------------------------\r
#\r
-# Copyright (c) 2006, Intel Corporation\r
+# Copyright (c) 2006 - 2009, Intel Corporation\r
# All rights reserved. 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
# IN UINT16 Value\r
# )\r
#------------------------------------------------------------------------------\r
-.intel_syntax\r
.globl ASM_PFX(InternalMemSetMem16)\r
ASM_PFX(InternalMemSetMem16):\r
- push rdi\r
- mov rdi, rcx\r
- mov rax, r8\r
- xchg rcx, rdx\r
+ pushq %rdi\r
+ movq %rcx, %rdi\r
+ movq %r8, %rax\r
+ xchgq %rdx, %rcx\r
rep stosw\r
- mov rax, rdx\r
- pop rdi\r
+ movq %rdx, %rax\r
+ popq %rdi\r
ret\r
\r
#\r
#------------------------------------------------------------------------------\r
#\r
-# Copyright (c) 2006, Intel Corporation\r
+# Copyright (c) 2006 - 2009, Intel Corporation\r
# All rights reserved. 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
# IN UINT32 Value\r
# );\r
#------------------------------------------------------------------------------\r
-.intel_syntax\r
.globl ASM_PFX(InternalMemSetMem32)\r
ASM_PFX(InternalMemSetMem32):\r
- push rdi\r
- mov rdi, rcx\r
- mov rax, r8\r
- xchg rcx, rdx\r
- rep stosd\r
- mov rax, rdx\r
- pop rdi\r
+ pushq %rdi\r
+ movq %rcx, %rdi\r
+ movq %r8, %rax\r
+ xchgq %rdx, %rcx\r
+ rep stosl\r
+ movq %rdx, %rax\r
+ popq %rdi\r
ret\r
\r
#\r
#------------------------------------------------------------------------------\r
#\r
-# Copyright (c) 2006, Intel Corporation\r
+# Copyright (c) 2006 - 2009, Intel Corporation\r
# All rights reserved. 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
# IN UINT64 Value\r
# )\r
#------------------------------------------------------------------------------\r
-.intel_syntax\r
.globl ASM_PFX(InternalMemSetMem64)\r
ASM_PFX(InternalMemSetMem64):\r
- push rdi\r
- mov rdi, rcx\r
- mov rax, r8\r
- xchg rcx, rdx\r
+ pushq %rdi\r
+ movq %rcx, %rdi\r
+ movq %r8, %rax\r
+ xchgq %rdx, %rcx\r
rep stosq\r
- mov rax, rdx\r
- pop rdi\r
+ movq %rdx, %rax\r
+ popq %rdi\r
ret\r
\r
#\r
#------------------------------------------------------------------------------\r
#\r
-# Copyright (c) 2006, Intel Corporation\r
+# Copyright (c) 2006 - 2009, Intel Corporation\r
# All rights reserved. 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
# IN UINTN Count\r
# );\r
#------------------------------------------------------------------------------\r
-.intel_syntax\r
.globl ASM_PFX(InternalMemZeroMem)\r
ASM_PFX(InternalMemZeroMem):\r
- push rdi\r
- push rcx\r
- xor rax, rax\r
- mov rdi, rcx\r
- mov rcx, rdx\r
- shr rcx, 3\r
- and rdx, 7\r
+ pushq %rdi\r
+ pushq %rcx\r
+ xorq %rax, %rax\r
+ movq %rcx, %rdi\r
+ movq %rdx, %rcx\r
+ shrq $3, %rcx\r
+ andq $7, %rdx\r
rep stosq\r
- mov ecx, edx\r
+ movl %edx, %ecx\r
rep stosb\r
- pop rax\r
- pop rdi\r
+ popq %rax\r
+ popq %rdi\r
ret\r
\r