summaryrefslogtreecommitdiff
path: root/MdePkg/Library/BaseMemoryLibSse2/x64
diff options
context:
space:
mode:
Diffstat (limited to 'MdePkg/Library/BaseMemoryLibSse2/x64')
-rw-r--r--MdePkg/Library/BaseMemoryLibSse2/x64/CompareMem.asm9
-rw-r--r--MdePkg/Library/BaseMemoryLibSse2/x64/CopyMem.asm13
-rw-r--r--MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem16.asm9
-rw-r--r--MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem32.asm9
-rw-r--r--MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem64.asm9
-rw-r--r--MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem8.asm9
-rw-r--r--MdePkg/Library/BaseMemoryLibSse2/x64/SetMem.asm2
-rw-r--r--MdePkg/Library/BaseMemoryLibSse2/x64/SetMem16.asm2
-rw-r--r--MdePkg/Library/BaseMemoryLibSse2/x64/SetMem32.asm2
-rw-r--r--MdePkg/Library/BaseMemoryLibSse2/x64/SetMem64.asm6
-rw-r--r--MdePkg/Library/BaseMemoryLibSse2/x64/ZeroMem.asm2
11 files changed, 59 insertions, 13 deletions
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/CompareMem.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/CompareMem.asm
index b8e289bb27..554bc07c64 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/x64/CompareMem.asm
+++ b/MdePkg/Library/BaseMemoryLibSse2/x64/CompareMem.asm
@@ -29,6 +29,15 @@
.code
+;------------------------------------------------------------------------------
+; INTN
+; EFIAPI
+; InternalMemCompareMem (
+; IN CONST VOID *DestinationBuffer,
+; IN CONST VOID *SourceBuffer,
+; IN UINTN Length
+; );
+;------------------------------------------------------------------------------
InternalMemCompareMem PROC USES rsi rdi
mov rsi, rcx
mov rdi, rdx
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/CopyMem.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/CopyMem.asm
index 955cd25f36..03ffe0c00f 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/x64/CopyMem.asm
+++ b/MdePkg/Library/BaseMemoryLibSse2/x64/CopyMem.asm
@@ -25,20 +25,21 @@
;------------------------------------------------------------------------------
; VOID *
-; _mem_CopyMem (
+; EFIAPI
+; InternalMemCopyMem (
; IN VOID *Destination,
; IN VOID *Source,
; IN UINTN Count
-; )
+; );
;------------------------------------------------------------------------------
InternalMemCopyMem PROC USES rsi rdi
mov rsi, rdx ; rsi <- Source
mov rdi, rcx ; rdi <- Destination
- lea r9, [rdi + r8 - 1] ; r9 <- Last byte of Destination
+ lea r9, [rsi + r8 - 1] ; r9 <- Last byte of Source
cmp rsi, rdi
mov rax, rdi ; rax <- Destination as return value
jae @F ; Copy forward if Source > Destination
- cmp r9, rsi ; Overlapped?
+ cmp r9, rdi ; Overlapped?
jae @CopyBackward ; Copy backward if overlapped
@@:
xor rcx, rcx
@@ -65,8 +66,8 @@ InternalMemCopyMem PROC USES rsi rdi
movdqa xmm0, [rsp + 18h] ; restore xmm0
jmp @CopyBytes ; copy remaining bytes
@CopyBackward:
- mov rdi, r9 ; rdi <- Last byte of Destination
- lea rsi, [rsi + r8 - 1] ; rsi <- Last byte of Source
+ mov rsi, r9 ; rsi <- Last byte of Source
+ lea rdi, [rdi + r8 - 1] ; rdi <- Last byte of Destination
std
@CopyBytes:
mov rcx, r8
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem16.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem16.asm
index 6af88fae5b..a2538c2cca 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem16.asm
+++ b/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem16.asm
@@ -29,6 +29,15 @@
.code
+;------------------------------------------------------------------------------
+; CONST VOID *
+; EFIAPI
+; InternalMemScanMem16 (
+; IN CONST VOID *Buffer,
+; IN UINTN Length,
+; IN UINT16 Value
+; );
+;------------------------------------------------------------------------------
InternalMemScanMem16 PROC USES rdi
mov rdi, rcx
mov rax, r8
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem32.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem32.asm
index f9c9feb00e..e0523d8547 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem32.asm
+++ b/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem32.asm
@@ -29,6 +29,15 @@
.code
+;------------------------------------------------------------------------------
+; CONST VOID *
+; EFIAPI
+; InternalMemScanMem32 (
+; IN CONST VOID *Buffer,
+; IN UINTN Length,
+; IN UINT32 Value
+; );
+;------------------------------------------------------------------------------
InternalMemScanMem32 PROC USES rdi
mov rdi, rcx
mov rax, r8
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem64.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem64.asm
index 2f286c9e2f..0e7e9c782f 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem64.asm
+++ b/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem64.asm
@@ -29,6 +29,15 @@
.code
+;------------------------------------------------------------------------------
+; CONST VOID *
+; EFIAPI
+; InternalMemScanMem64 (
+; IN CONST VOID *Buffer,
+; IN UINTN Length,
+; IN UINT64 Value
+; );
+;------------------------------------------------------------------------------
InternalMemScanMem64 PROC USES rdi
mov rdi, rcx
mov rax, r8
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem8.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem8.asm
index 4027ece768..879273f960 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem8.asm
+++ b/MdePkg/Library/BaseMemoryLibSse2/x64/ScanMem8.asm
@@ -29,6 +29,15 @@
.code
+;------------------------------------------------------------------------------
+; CONST VOID *
+; EFIAPI
+; InternalMemScanMem8 (
+; IN CONST VOID *Buffer,
+; IN UINTN Length,
+; IN UINT8 Value
+; );
+;------------------------------------------------------------------------------
InternalMemScanMem8 PROC USES rdi
mov rdi, rcx
mov rcx, rdx
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem.asm
index 2aba207ab9..25cfcf0d12 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem.asm
+++ b/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem.asm
@@ -25,7 +25,7 @@
;------------------------------------------------------------------------------
; VOID *
-; _mem_SetMem (
+; InternalMemSetMem (
; IN VOID *Buffer,
; IN UINTN Count,
; IN UINT8 Value
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem16.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem16.asm
index a2f4d0e538..77b8cf43aa 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem16.asm
+++ b/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem16.asm
@@ -25,7 +25,7 @@
;------------------------------------------------------------------------------
; VOID *
-; _mem_SetMem16 (
+; InternalMemSetMem16 (
; IN VOID *Buffer,
; IN UINTN Count,
; IN UINT16 Value
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem32.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem32.asm
index 24207ec699..eba29bb88d 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem32.asm
+++ b/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem32.asm
@@ -25,7 +25,7 @@
;------------------------------------------------------------------------------
; VOID *
-; _mem_SetMem32 (
+; InternalMemSetMem32 (
; IN VOID *Buffer,
; IN UINTN Count,
; IN UINT8 Value
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem64.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem64.asm
index ef94c562b5..a26b9412d4 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem64.asm
+++ b/MdePkg/Library/BaseMemoryLibSse2/x64/SetMem64.asm
@@ -32,9 +32,10 @@
; )
;------------------------------------------------------------------------------
InternalMemSetMem64 PROC
- mov rax, rcx
+ mov rax, rcx ; rax <- Buffer
+ xchg rcx, rdx ; rcx <- Count & rdx <- Buffer
test dl, 8
- xchg rcx, rdx
+ movd xmm0, r8
jz @F
mov [rdx], r8
add rdx, 8
@@ -42,7 +43,6 @@ InternalMemSetMem64 PROC
@@:
shr rcx, 1
jz @SetQwords
- movd xmm0, r8
movlhps xmm0, xmm0
@@:
movntdq [rdx], xmm0
diff --git a/MdePkg/Library/BaseMemoryLibSse2/x64/ZeroMem.asm b/MdePkg/Library/BaseMemoryLibSse2/x64/ZeroMem.asm
index 6d0f99ba94..7eebd3a8ef 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/x64/ZeroMem.asm
+++ b/MdePkg/Library/BaseMemoryLibSse2/x64/ZeroMem.asm
@@ -25,7 +25,7 @@
;------------------------------------------------------------------------------
; VOID *
-; _mem_ZeroMem (
+; InternalMemZeroMem (
; IN VOID *Buffer,
; IN UINTN Count
; )