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/SetMem16.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/SetMem16.S')
-rw-r--r-- | MdePkg/Library/BaseMemoryLibMmx/Ia32/SetMem16.S | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/MdePkg/Library/BaseMemoryLibMmx/Ia32/SetMem16.S b/MdePkg/Library/BaseMemoryLibMmx/Ia32/SetMem16.S index bcbd49e442..9898d28f98 100644 --- a/MdePkg/Library/BaseMemoryLibMmx/Ia32/SetMem16.S +++ b/MdePkg/Library/BaseMemoryLibMmx/Ia32/SetMem16.S @@ -21,37 +21,36 @@ # #------------------------------------------------------------------------------ - .686: - #.MODEL flat,C - .xmm: - .code: +.global _InternalMemSetMem16 #------------------------------------------------------------------------------ # VOID * -# _mem_SetMem16 ( +# InternalMemSetMem16 ( # IN VOID *Buffer, # IN UINTN Count, # IN UINT16 Value # ) #------------------------------------------------------------------------------ -.global _InternalMemSetMem16 _InternalMemSetMem16: push %edi + movl 16(%esp), %eax + shrdl $16, %eax, %edx + shldl $16, %edx, %eax movl 12(%esp), %edx movl 8(%esp), %edi movl %edx, %ecx andl $3, %edx shrl $2, %ecx - movl 16(%esp), %eax - jz @SetWords + jz L1 movd %eax, %mm0 - pshufw $0, %mm0, %mm0 -L0: - movntq %mm0, (%edi) + movd %eax, %mm1 + psllq $32, %mm0 + por %mm1, %mm0 +L0: + movq %mm0, (%edi) addl $8, %edi - loop L0 - mfence -@SetWords: + loopl L0 +L1: movl %edx, %ecx rep stosw |