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 right shift function for IA-32
32 This routine allows a 64 bit value to be right shifted by 32 bits and returns the
34 Count is valid up 63. (Only Bits 0-5 is valid for Count)
36 Operand - Value to be shifted
37 Count - Number of times to shift right.
41 Value shifted right identified by the Count.
47 mov eax
, dword ptr Operand
[0]
48 mov edx
, dword ptr Operand
[4]
51 ; CL is valid from
0 - 31. shld will move EDX
:EAX by CL times but EDX is
not touched
52 ; For CL of
32 - 63, it will be shifted
0 - 31 so we will move edx to eax later
.
60 jc
short _RShiftU64_Done
63 ; Since Count is
32 - 63, edx will have been shifted by
0 - 31
64 ; If shifted by
32 or more
, set upper
32 bits to zero
.