diff options
Diffstat (limited to 'MdePkg/Library/BaseMemoryLibMmx/X64')
-rw-r--r-- | MdePkg/Library/BaseMemoryLibMmx/X64/CompareMem.S | 23 | ||||
-rw-r--r-- | MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.S | 47 | ||||
-rw-r--r-- | MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem16.S | 17 | ||||
-rw-r--r-- | MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem32.S | 19 | ||||
-rw-r--r-- | MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem64.S | 19 | ||||
-rw-r--r-- | MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem8.S | 19 | ||||
-rw-r--r-- | MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.S | 35 | ||||
-rw-r--r-- | MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.S | 35 | ||||
-rw-r--r-- | MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.S | 19 | ||||
-rw-r--r-- | MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.S | 13 | ||||
-rw-r--r-- | MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.S | 29 |
11 files changed, 132 insertions, 143 deletions
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/CompareMem.S b/MdePkg/Library/BaseMemoryLibMmx/X64/CompareMem.S index c207db7dda..08a8dc6ff2 100644 --- a/MdePkg/Library/BaseMemoryLibMmx/X64/CompareMem.S +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/CompareMem.S @@ -3,7 +3,7 @@ #
#------------------------------------------------------------------------------
#
-# Copyright (c) 2006 - 2008, Intel Corporation
+# Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
@@ -42,19 +42,18 @@ # IN UINTN Length
# );
#------------------------------------------------------------------------------
-.intel_syntax noprefix
ASM_GLOBAL ASM_PFX(InternalMemCompareMem)
ASM_PFX(InternalMemCompareMem):
- push rsi
- push rdi
- mov rsi, rcx
- mov rdi, rdx
- mov rcx, r8
+ pushq %rsi
+ pushq %rdi
+ movq %rcx, %rsi
+ movq %rdx, %rdi
+ movq %r8, %rcx
repe cmpsb
- movzx rax, byte ptr [rsi - 1]
- movzx rdx, byte ptr [rdi - 1]
- sub rax, rdx
- pop rdi
- pop rsi
+ movzbq -1(%rsi), %rax
+ movzbq -1(%rdi), %rdx
+ subq %rdx, %rax
+ popq %rdi
+ popq %rsi
ret
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.S b/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.S index 3a336f7e98..94ca84603e 100644 --- a/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.S +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.S @@ -3,7 +3,7 @@ #
#------------------------------------------------------------------------------
#
-# Copyright (c) 2006 - 2008, Intel Corporation
+# Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
@@ -34,42 +34,41 @@ # IN UINTN Count
# )
#------------------------------------------------------------------------------
-.intel_syntax noprefix
ASM_GLOBAL ASM_PFX(InternalMemCopyMem)
ASM_PFX(InternalMemCopyMem):
- push rsi
- push rdi
- mov rsi, rdx # rsi <- Source
- mov rdi, rcx # rdi <- Destination
- lea r9, [rsi + r8 - 1] # r9 <- End of Source
- cmp rsi, rdi
- mov rax, rdi # rax <- Destination as return value
+ pushq %rsi
+ pushq %rdi
+ movq %rdx, %rsi # rsi <- Source
+ movq %rcx, %rdi # rdi <- Destination
+ leaq -1(%rsi, %r8,), %r9 # r9 <- End of Source
+ cmpq %rdi, %rsi
+ movq %rdi, %rax # rax <- Destination as return value
jae L0
- cmp r9, rdi
+ cmpq %rdi, %r9
jae L_CopyBackward # Copy backward if overlapped
L0:
- mov rcx, r8
- and r8, 7
- shr rcx, 3 # rcx <- # of Qwords to copy
+ movq %r8, %rcx
+ andq $7, %r8
+ shrq $3, %rcx # rcx <- # of Qwords to copy
jz L_CopyBytes
- movd r10, mm0 # (Save mm0 in r10)
+ movq %mm0, %r10 # (Save mm0 in r10) ; Why just save 32 bits?
L1:
- movq mm0, [rsi]
- movntq [rdi], mm0
- add rsi, 8
- add rdi, 8
+ movq (%rsi), %mm0
+ movntq %mm0, (%rdi)
+ addq $8, %rsi
+ addq $8, %rdi
loop L1
mfence
- movd mm0, r10 # (Restore mm0)
+ movd %r10, %mm0 # (Restore mm0)
jmp L_CopyBytes
L_CopyBackward:
- mov rsi, r9 # rsi <- End of Source
- lea rdi, [rdi + r8 - 1] # rdi <- End of Destination
+ movq %r9, %rsi # rsi <- End of Source
+ leaq -1(%rdi, %r8,), %rdi # rdi <- End of Destination
std # set direction flag
L_CopyBytes:
- mov rcx, r8
+ movq %r8, %rcx
rep movsb # Copy bytes backward
cld
- pop rdi
- pop rsi
+ popq %rdi
+ popq %rsi
ret
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem16.S b/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem16.S index 140b0a40e5..6832324c47 100644 --- a/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem16.S +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem16.S @@ -3,7 +3,7 @@ #
#------------------------------------------------------------------------------
#
-# Copyright (c) 2006 - 2008, Intel Corporation
+# Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
@@ -42,16 +42,15 @@ # IN UINT16 Value
# );
#------------------------------------------------------------------------------
-.intel_syntax noprefix
ASM_GLOBAL ASM_PFX(InternalMemScanMem16)
ASM_PFX(InternalMemScanMem16):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
+ pushq %rdi
+ movq %rcx, %rdi
+ movq %r8, %rax
+ movq %rdx, %rcx
repne scasw
- lea rax, [rdi - 2]
- cmovnz rax, rcx
- pop rdi
+ leaq -2(%rdi), %rax
+ cmovnz %rcx, %rax
+ popq %rdi
ret
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem32.S b/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem32.S index 9420725d5e..56ff2ea9be 100644 --- a/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem32.S +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem32.S @@ -3,7 +3,7 @@ #
#------------------------------------------------------------------------------
#
-# Copyright (c) 2006 - 2008, Intel Corporation
+# Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
@@ -42,16 +42,15 @@ # IN UINT32 Value
# );
#------------------------------------------------------------------------------
-.intel_syntax noprefix
ASM_GLOBAL ASM_PFX(InternalMemScanMem32)
ASM_PFX(InternalMemScanMem32):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasd
- lea rax, [rdi - 4]
- cmovnz rax, rcx
- pop rdi
+ pushq %rdi
+ movq %rcx, %rdi
+ movq %r8, %rax
+ movq %rdx, %rcx
+ repne scasl
+ leaq -4(%rdi), %rax
+ cmovnz %rcx, %rax
+ popq %rdi
ret
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem64.S b/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem64.S index d39f17fac3..bd5c3fc315 100644 --- a/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem64.S +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem64.S @@ -3,7 +3,7 @@ #
#------------------------------------------------------------------------------
#
-# Copyright (c) 2006 - 2008, Intel Corporation
+# Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
@@ -42,15 +42,14 @@ # IN UINT64 Value
# );
#------------------------------------------------------------------------------
-.intel_syntax noprefix
ASM_GLOBAL ASM_PFX(InternalMemScanMem64)
ASM_PFX(InternalMemScanMem64):
- push rdi
- mov rdi, rcx
- mov rax, r8
- mov rcx, rdx
- repne scasq
- lea rax, [rdi - 8]
- cmovnz rax, rcx
- pop rdi
+ pushq %rdi
+ movq %rcx, %rdi
+ movq %r8, %rax
+ movq %rdx, %rcx
+ repne scasq
+ leaq -8(%rdi), %rax
+ cmovnz %rcx, %rax
+ popq %rdi
ret
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem8.S b/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem8.S index 74667a6200..4a882a0721 100644 --- a/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem8.S +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/ScanMem8.S @@ -3,7 +3,7 @@ #
#------------------------------------------------------------------------------
#
-# Copyright (c) 2006 - 2008, Intel Corporation
+# Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
@@ -42,16 +42,15 @@ # IN UINT8 Value
# );
#------------------------------------------------------------------------------
-.intel_syntax noprefix
ASM_GLOBAL ASM_PFX(InternalMemScanMem8)
ASM_PFX(InternalMemScanMem8):
- push rdi
- mov rdi, rcx
- mov rcx, rdx
- mov rax, r8
- repne scasb
- lea rax, [rdi - 1]
- cmovnz rax, rcx # set rax to 0 if not found
- pop rdi
+ pushq %rdi
+ movq %rcx, %rdi
+ movq %rdx, %rcx
+ movq %r8, %rax
+ repne scasb
+ leaq -1(%rdi), %rax
+ cmovnz %rcx, %rax # set rax to 0 if not found
+ popq %rdi
ret
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.S b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.S index 814d20c7ce..a29be89a1f 100644 --- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.S +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.S @@ -3,7 +3,7 @@ #
#------------------------------------------------------------------------------
#
-# Copyright (c) 2006 - 2008, Intel Corporation
+# Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
@@ -34,29 +34,28 @@ # IN UINT8 Value
# )
#------------------------------------------------------------------------------
-.intel_syntax noprefix
ASM_GLOBAL ASM_PFX(InternalMemSetMem)
ASM_PFX(InternalMemSetMem):
- push rdi
- mov rax, r8
- mov ah, al
- movq mm0, rax
- mov r8, rcx
- mov rdi, r8 # rdi <- Buffer
- mov rcx, rdx
- and edx, 7
- shr rcx, 3
+ push %rdi
+ movq %r8, %rax
+ movb %al, %ah
+ movq %rax, %mm0
+ movq %rcx, %r8
+ movq %r8, %rdi # rdi <- Buffer
+ movq %rdx, %rcx
+ andq $7, %rdx
+ shrq $3, %rcx
jz L_SetBytes
- pshufw mm0, mm0, 0x0
+ .byte 0x0f, 0x70, 0x0C0, 0x00
L0:
- movntq [rdi], mm0
- add rdi, 8
+ movntq %mm0, (%rdi)
+ addq $8, %rdi
loop L0
mfence
L_SetBytes:
- mov ecx, edx
- rep stosb
- mov rax, r8
- pop rdi
+ movl %edx, %ecx
+ rep stosb
+ movq %r8, %rax
+ pop %rdi
ret
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.S b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.S index e3e6620314..6ae6793a7e 100644 --- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.S +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.S @@ -3,7 +3,7 @@ #
#------------------------------------------------------------------------------
#
-# Copyright (c) 2006 - 2008, Intel Corporation
+# Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
@@ -34,28 +34,27 @@ # IN UINT16 Value
# )
#------------------------------------------------------------------------------
-.intel_syntax noprefix
ASM_GLOBAL ASM_PFX(InternalMemSetMem16)
ASM_PFX(InternalMemSetMem16):
- push rdi
- mov rax, r8
- movq mm0, rax
- mov r8, rcx
- mov rdi, r8
- mov rcx, rdx
- and edx, 3
- shr rcx, 2
- jz L_SetWords
- pshufw mm0, mm0, 0x0
+ pushq %rdi
+ movq %r8, %rax
+ movq %rax, %mm0
+ movq %rcx, %r8
+ movq %r8, %rdi
+ movq %rdx, %rcx
+ andl $3, %edx
+ shrq $2, %rcx
+ jz L_SetWords
+ .byte 0x0f, 0x70, 0x0C0, 0x00
L0:
- movntq [rdi], mm0
- add rdi, 8
- loop L0
+ movntq %mm0, (%rdi)
+ addq $8, %rdi
+ loop L0
mfence
L_SetWords:
- mov ecx, edx
+ movl %edx, %ecx
rep stosw
- mov rax, r8
- pop rdi
+ movq %r8, %rax
+ popq %rdi
ret
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.S b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.S index a67ca6a843..c983e6d9c1 100644 --- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.S +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.S @@ -3,7 +3,7 @@ #
#------------------------------------------------------------------------------
#
-# Copyright (c) 2006 - 2008, Intel Corporation
+# Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
@@ -34,23 +34,22 @@ # IN UINT32 Value
# );
#------------------------------------------------------------------------------
-.intel_syntax noprefix
ASM_GLOBAL ASM_PFX(InternalMemSetMem32)
ASM_PFX(InternalMemSetMem32):
- movq mm0, r8 # mm0 <- Value
- mov rax, rcx # rax <- Buffer
- xchg rcx, rdx # rcx <- Count rdx <- Buffer
- shr rcx, 1 # rcx <- # of qwords to set
+ movq %r8, %mm0 # mm0 <- Value
+ movq %rcx, %rax # rax <- Buffer
+ xchgq %rdx, %rcx # rcx <- Count rdx <- Buffer
+ shrq $1, % rcx # rcx <- # of qwords to set
jz L_SetDwords
- pshufw mm0, mm0, 0x44
+ .byte 0x0f, 0x70, 0x0C0, 0x44
L0:
- movntq [rdx], mm0
- lea rdx, [rdx + 8] # use "lea" to avoid flag changes
+ movntq %mm0, (%rdx)
+ leaq 8(%rdx), %rdx # use "lea" to avoid flag changes
loop L0
mfence
L_SetDwords:
jnc L1
- movd [rdx], mm0
+ movd %mm0, (%rdx)
L1:
ret
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.S b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.S index 36312d4e7e..10135f8496 100644 --- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.S +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.S @@ -3,7 +3,7 @@ #
#------------------------------------------------------------------------------
#
-# Copyright (c) 2006 - 2008, Intel Corporation
+# Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
@@ -33,15 +33,14 @@ # IN UINT64 Value
# )
#------------------------------------------------------------------------------
-.intel_syntax noprefix
ASM_GLOBAL ASM_PFX(InternalMemSetMem64)
ASM_PFX(InternalMemSetMem64):
- movq mm0, r8 #Value
- mov rax, rcx #rax <- Buffer
- xchg rcx, rdx #rcx <- Count
+ movq %r8, %mm0 #Value
+ movw %rcx, %rax #rax <- Buffer
+ xchg %rdx, %rcx #rcx <- Count
L0:
- movntq [rdx], mm0
- add rdx, 8
+ movntq %mm0, (%rdx)
+ addq $8, %rdx
loop L0
mfence
ret
diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.S b/MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.S index b5dec03031..4ea751f97a 100644 --- a/MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.S +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.S @@ -3,7 +3,7 @@ #
#------------------------------------------------------------------------------
#
-# Copyright (c) 2006 - 2008, Intel Corporation
+# Copyright (c) 2006 - 2009, Intel Corporation
# All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
@@ -32,27 +32,26 @@ # IN UINTN Count
# );
#------------------------------------------------------------------------------
-.intel_syntax noprefix
ASM_GLOBAL ASM_PFX(InternalMemZeroMem)
ASM_PFX(InternalMemZeroMem):
- push rdi
- mov rdi, rcx
- mov rcx, rdx
- mov r8, rdi
- and edx, 7
- shr rcx, 3
+ pushq %rdi
+ movq %rcx, %rdi
+ movq %rdx, %rcx
+ movq %rdi, %r8
+ andq $7, %rdx
+ shrq $3, %rcx
jz L_ZeroBytes
- pxor mm0, mm0
+ pxor %mm0, %mm0
L0:
- movntq [rdi], mm0
- add rdi, 8
+ movntq %mm0, (%rdi)
+ addq $8, %rdi
loop L0
mfence
L_ZeroBytes:
- xor eax, eax
- mov ecx, edx
+ xorl %eax, %eax
+ movl %edx, %ecx
rep stosb
- mov rax, r8
- pop rdi
+ movq %r8, %rax
+ popq %rdi
ret
|