diff options
Diffstat (limited to 'src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.nasm')
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.nasm | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.nasm b/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.nasm new file mode 100644 index 00000000..110ffec4 --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.nasm @@ -0,0 +1,42 @@ +;------------------------------------------------------------------------------ +; +; Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> +; SPDX-License-Identifier: BSD-2-Clause-Patent +; +; Module Name: +; +; MathLShiftS64.nasm +; +; Abstract: +; +; 64-bit Math Worker Function. +; Shifts a 64-bit signed value left by a certain number of bits. +; +;------------------------------------------------------------------------------ + + SECTION .text + +global ASM_PFX(__ashldi3) +;------------------------------------------------------------------------------ +; +; void __cdecl __ashldi3 (void) +; +;------------------------------------------------------------------------------ +ASM_PFX(__ashldi3): + cmp cl,0x40 + jnc ReturnZero + cmp cl,0x20 + jnc More32 + shld edx,eax,cl + shl eax,cl + ret +More32: + mov edx,eax + xor eax,eax + and cl,0x1f + shl edx,cl + ret +ReturnZero: + xor eax,eax + xor edx,edx + ret |