diff options
author | bxing <bxing@6f19259b-4bc3-4df7-8a09-765794883524> | 2006-07-28 07:28:19 +0000 |
---|---|---|
committer | bxing <bxing@6f19259b-4bc3-4df7-8a09-765794883524> | 2006-07-28 07:28:19 +0000 |
commit | eb227e96bd06a5b0f2f933187a679e7fb3382cd9 (patch) | |
tree | b16e46f494d8d9d8552d8d0e882ad78019934071 /MdePkg/Library/BaseMemoryLibMmx/Ia32/SetMem32.S | |
parent | 27169a56e67556796ab0410c8917436dc9aa2abf (diff) | |
download | edk2-platforms-eb227e96bd06a5b0f2f933187a679e7fb3382cd9.tar.xz |
1. Updated function headers for all assembly function
2. Optimized register usage in SetMemXX functions in all lib instances
3. Fixed a logical error in CopyMem for all lib instances
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1139 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdePkg/Library/BaseMemoryLibMmx/Ia32/SetMem32.S')
-rw-r--r-- | MdePkg/Library/BaseMemoryLibMmx/Ia32/SetMem32.S | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/MdePkg/Library/BaseMemoryLibMmx/Ia32/SetMem32.S b/MdePkg/Library/BaseMemoryLibMmx/Ia32/SetMem32.S index 27fd6174bd..8281652ad9 100644 --- a/MdePkg/Library/BaseMemoryLibMmx/Ia32/SetMem32.S +++ b/MdePkg/Library/BaseMemoryLibMmx/Ia32/SetMem32.S @@ -21,39 +21,32 @@ # #------------------------------------------------------------------------------ - .686: - #.MODEL flat,C - .xmm: - .code: +.global _InternalMemSetMem32 #------------------------------------------------------------------------------ # VOID * -# _mem_SetMem32 ( +# InternalMemSetMem32 ( # IN VOID *Buffer, # IN UINTN Count, # IN UINT32 Value # ) #------------------------------------------------------------------------------ -.global _InternalMemSetMem32 _InternalMemSetMem32: - push %edi - movl 12(%esp), %edx - movl 8(%esp), %edi - movl %edx, %ecx + movl 4(%esp), %eax + movl 8(%esp), %ecx + movd 12(%esp), %mm0 shrl %ecx - movd 16(%esp), %mm0 - movl %edi, %eax - jz @SetDwords - pshufw $0x44, %mm0, %mm0 -L0: - movntq %mm0, (%edi) - addl $8, %edi - loopl L0 - mfence -@SetDwords: - testb $1, %dl + movl %eax, %edx jz L1 - movd %mm0, (%edi) -L1: - pop %edi + movq %mm0, %mm1 + psllq $32, %mm1 + por %mm1, %mm0 +L0: + movq %mm0, (%edx) + lea 8(%edx), %edx + loopl L0 +L1: + jnc L2 + movd %mm0, (%edx) +L2: ret |