3 Copyright (c) 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 64-bit left shift function for IA-32
33 This routine allows a 64 bit value to be left shifted by 32 bits and
34 returns the shifted value.
35 Count is valid up 63. (Only Bits 0-5 is valid for Count)
39 Operand - Value to be shifted
40 Count - Number of times to shift left.
44 Value shifted left identified by the Count.
50 mov eax
, dword ptr Operand
[0]
51 mov edx
, dword ptr Operand
[4]
54 ; CL is valid from
0 - 31. shld will move EDX
:EAX by CL times but EAX is
not touched
55 ; For CL of
32 - 63, it will be shifted
0 - 31 so we will move eax to edx later
.
63 ; Since Count is
32 - 63, eax will have been shifted by
0 - 31
64 ; If shifted by
32 or more
, set lower
32 bits to zero
.
67 jc
short _LShiftU64_Done