Changeset 89983 in vbox for trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Library/BaseMemoryLibSse2
- Timestamp:
- Jul 1, 2021 8:17:41 AM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 145450
- Location:
- trunk/src/VBox/Devices/EFI/FirmwareNew
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/EFI/FirmwareNew
-
Property svn:mergeinfo
changed from (toggle deleted branches)
to (toggle deleted branches)/vendor/edk2/current 103735-103757,103769-103776,129194-139864 /vendor/edk2/current 103735-103757,103769-103776,129194-145445
-
Property svn:mergeinfo
changed from (toggle deleted branches)
-
trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem.nasm
r80721 r89983 35 35 xor ecx, ecx 36 36 sub ecx, edi 37 and ecx, 15; ecx + edi aligns on 16-byte boundary37 and ecx, 63 ; ecx + edi aligns on 16-byte boundary 38 38 jz .0 39 39 cmp ecx, edx … … 43 43 .0: 44 44 mov ecx, edx 45 and edx, 1546 shr ecx, 4; ecx <- # of DQwords to set45 and edx, 63 46 shr ecx, 6 ; ecx <- # of DQwords to set 47 47 jz @SetBytes 48 48 mov ah, al ; ax <- Value | (Value << 8) … … 54 54 .1: 55 55 movntdq [edi], xmm0 ; edi should be 16-byte aligned 56 add edi, 16 56 movntdq [edi + 16], xmm0 57 movntdq [edi + 32], xmm0 58 movntdq [edi + 48], xmm0 59 add edi, 64 57 60 loop .1 58 61 mfence -
trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem16.nasm
r80721 r89983 34 34 xor ecx, ecx 35 35 sub ecx, edi 36 and ecx, 15; ecx + edi aligns on 16-byte boundary36 and ecx, 63 ; ecx + edi aligns on 16-byte boundary 37 37 mov eax, [esp + 16] 38 38 jz .0 … … 44 44 .0: 45 45 mov ecx, edx 46 and edx, 747 shr ecx, 346 and edx, 31 47 shr ecx, 5 48 48 jz @SetWords 49 49 movd xmm0, eax … … 52 52 .1: 53 53 movntdq [edi], xmm0 ; edi should be 16-byte aligned 54 add edi, 16 54 movntdq [edi + 16], xmm0 55 movntdq [edi + 32], xmm0 56 movntdq [edi + 48], xmm0 57 add edi, 64 55 58 loop .1 56 59 mfence -
trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem32.nasm
r80721 r89983 44 44 .0: 45 45 mov ecx, edx 46 and edx, 347 shr ecx, 246 and edx, 15 47 shr ecx, 4 48 48 jz @SetDwords 49 49 movd xmm0, eax … … 51 51 .1: 52 52 movntdq [edi], xmm0 53 add edi, 16 53 movntdq [edi + 16], xmm0 54 movntdq [edi + 32], xmm0 55 movntdq [edi + 48], xmm0 56 add edi, 64 54 57 loop .1 55 58 mfence -
trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Library/BaseMemoryLibSse2/Ia32/SetMem64.nasm
r80721 r89983 39 39 dec ecx 40 40 .0: 41 shr ecx, 1 41 push ebx 42 mov ebx, ecx 43 and ebx, 7 44 shr ecx, 3 42 45 jz @SetQwords 43 46 movlhps xmm0, xmm0 44 47 .1: 45 48 movntdq [edx], xmm0 46 lea edx, [edx + 16] 49 movntdq [edx + 16], xmm0 50 movntdq [edx + 32], xmm0 51 movntdq [edx + 48], xmm0 52 lea edx, [edx + 64] 47 53 loop .1 48 54 mfence 49 55 @SetQwords: 50 jnc .2 56 test ebx, ebx 57 jz .3 58 mov ecx, ebx 59 .2 51 60 movq qword [edx], xmm0 52 .2: 61 lea edx, [edx + 8] 62 loop .2 63 .3: 64 pop ebx 53 65 ret 54 66 -
trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Library/BaseMemoryLibSse2/Ia32/ZeroMem.nasm
r80721 r89983 34 34 sub ecx, edi 35 35 xor eax, eax 36 and ecx, 1536 and ecx, 63 37 37 jz .0 38 38 cmp ecx, edx … … 42 42 .0: 43 43 mov ecx, edx 44 and edx, 1545 shr ecx, 444 and edx, 63 45 shr ecx, 6 46 46 jz @ZeroBytes 47 47 pxor xmm0, xmm0 48 48 .1: 49 49 movntdq [edi], xmm0 50 add edi, 16 50 movntdq [edi + 16], xmm0 51 movntdq [edi + 32], xmm0 52 movntdq [edi + 48], xmm0 53 add edi, 64 51 54 loop .1 52 55 mfence -
trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Library/BaseMemoryLibSse2/X64/SetMem.nasm
r80721 r89983 43 43 .0: 44 44 mov rcx, rdx 45 and rdx, 1546 shr rcx, 445 and rdx, 63 46 shr rcx, 6 47 47 jz @SetBytes 48 48 mov ah, al ; ax <- Value repeats twice … … 53 53 .1: 54 54 movntdq [rdi], xmm0 ; rdi should be 16-byte aligned 55 add rdi, 16 55 movntdq [rdi + 16], xmm0 56 movntdq [rdi + 32], xmm0 57 movntdq [rdi + 48], xmm0 58 add rdi, 64 56 59 loop .1 57 60 mfence -
trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Library/BaseMemoryLibSse2/X64/SetMem16.nasm
r80721 r89983 34 34 xor rcx, rcx 35 35 sub rcx, rdi 36 and rcx, 1536 and rcx, 63 37 37 mov rax, r8 38 38 jz .0 … … 44 44 .0: 45 45 mov rcx, rdx 46 and edx, 747 shr rcx, 346 and edx, 31 47 shr rcx, 5 48 48 jz @SetWords 49 49 movd xmm0, eax … … 52 52 .1: 53 53 movntdq [rdi], xmm0 54 add rdi, 16 54 movntdq [rdi + 16], xmm0 55 movntdq [rdi + 32], xmm0 56 movntdq [rdi + 48], xmm0 57 add rdi, 64 55 58 loop .1 56 59 mfence -
trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Library/BaseMemoryLibSse2/X64/SetMem32.nasm
r80721 r89983 44 44 .0: 45 45 mov rcx, rdx 46 and edx, 347 shr rcx, 246 and edx, 15 47 shr rcx, 4 48 48 jz @SetDwords 49 49 movd xmm0, eax … … 51 51 .1: 52 52 movntdq [rdi], xmm0 53 add rdi, 16 53 movntdq [rdi + 16], xmm0 54 movntdq [rdi + 32], xmm0 55 movntdq [rdi + 48], xmm0 56 add rdi, 64 54 57 loop .1 55 58 mfence -
trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Library/BaseMemoryLibSse2/X64/SetMem64.nasm
r80721 r89983 38 38 dec rcx 39 39 .0: 40 shr rcx, 1 40 push rbx 41 mov rbx, rcx 42 and rbx, 7 43 shr rcx, 3 41 44 jz @SetQwords 42 45 movlhps xmm0, xmm0 43 46 .1: 44 47 movntdq [rdx], xmm0 45 lea rdx, [rdx + 16] 48 movntdq [rdx + 16], xmm0 49 movntdq [rdx + 32], xmm0 50 movntdq [rdx + 48], xmm0 51 lea rdx, [rdx + 64] 46 52 loop .1 47 53 mfence 48 54 @SetQwords: 49 jnc .2 50 mov [rdx], r8 55 push rdi 56 mov rcx, rbx 57 mov rax, r8 58 mov rdi, rdx 59 rep stosq 60 pop rdi 51 61 .2: 62 pop rbx 52 63 ret 53 64 -
trunk/src/VBox/Devices/EFI/FirmwareNew/MdePkg/Library/BaseMemoryLibSse2/X64/ZeroMem.nasm
r80721 r89983 33 33 xor eax, eax 34 34 sub rcx, rdi 35 and rcx, 1535 and rcx, 63 36 36 mov r8, rdi 37 37 jz .0 … … 42 42 .0: 43 43 mov rcx, rdx 44 and edx, 1545 shr rcx, 444 and edx, 63 45 shr rcx, 6 46 46 jz @ZeroBytes 47 47 pxor xmm0, xmm0 48 48 .1: 49 movntdq [rdi], xmm0 ; rdi should be 16-byte aligned 50 add rdi, 16 49 movntdq [rdi], xmm0 50 movntdq [rdi + 16], xmm0 51 movntdq [rdi + 32], xmm0 52 movntdq [rdi + 48], xmm0 53 add rdi, 64 51 54 loop .1 52 55 mfence
Note:
See TracChangeset
for help on using the changeset viewer.