/** @file 64-bit Math Worker Function. The 32-bit versions of C compiler generate calls to library routines to handle 64-bit math. These functions use non-standard calling conventions. Copyright (c) 2014, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ /* * Shifts a 64-bit signed value left by a particular number of bits. */ __declspec(naked) void __cdecl _allshl ( void ) { _asm { ; ; Handle shifting of 64 or more bits (return 0) ; cmp cl, 64 jae short ReturnZero ; ; Handle shifting of between 0 and 31 bits ; cmp cl, 32 jae short More32 shld edx, eax, cl shl eax, cl ret ; ; Handle shifting of between 32 and 63 bits ; More32: mov edx, eax xor eax, eax and cl, 31 shl edx, cl ret ReturnZero: xor eax,eax xor edx,edx ret } }