dshiftr
- Date:
10-12-2011
NAME
_dshiftr, DSHIFTR - Perform a double-object right shift
SYNOPSIS
C Synopsis
#include <intrinsics.h>
long _dshiftr (long i, long j, long k);
Fortran Synopsis
DSHIFTR ([I=]i, [J=]j, [K=]k)
IMPLEMENTATION
Cray Linux Environment (CLE)
STANDARDS
C extension
Fortran extension
DESCRIPTION
The _dshiftr and DSHIFTR functions perform a double-object right shift. They return a single object.
This result is derived from two arguments, i and j, defined as follows:
- i
The upper bits of the double object. Must be of type integer.
- j
The lower bits of the double object. Must be of the same type and size as i.
- k
The number of bits to be shifted. Must be of type integer.
The _dshiftr and DSHIFTR functions return a value generated by a right double-shift of the rightmost k bits of i into the leftmost k bits of j. If both the i and j arguments specify the same word in memory, a circular shift occurs. The value of k must be in the range of 0 through 64 for _dshiftr.
NOTES
C
Because _dshiftr is an intrinsic function, no externally visible library function is available for it. The compiler generates inline code to produce the result.
Fortran
When shifting 64-bit quantities, i makes up bits 64 through 127 of the double object. The function result is the 64-bit string beginning with bit 64-k; that is, its rightmost bit is k bits from the double object’s right end. The value of k must be 0 <= k <= 64.
When shifting 32-bit quantities, i makes up bits 32 through 63 of the double object. The function result is the 32-bit string beginning with bit 32-k; that is, its rightmost bit is k bits from the double object’s right end. The value of k must be 0 <= k <= 32.
When shifting 16-bit quantities, i makes up bits 16 through 31 of the double object. The function result is the 16-bit string beginning with bit 16-k; that is, its rightmost bit is k bits from the double object’s right end. The value of k must be 0 <= k <= 16.
When shifting 8-bit quantities, i makes up bits 8 through 15 of the double object. The function result is the 8-bit string beginning with bit 8-k; that is, its rightmost bit is k bits from the double object’s right end. The value of k must be 0 <= k <= 8.
Arguments are not altered in their original storage unless the result represents the same address as either i or j, as in the Fortran assignmentM = DSHIFTR(M, N, 5).
For more information on storage units, see the Cray Fortran Reference Manual
DSHIFTR is an elemental function. The name of this intrinsic cannot be passed as an argument.
RETURN VALUES
_dshiftr returns a 64-bit integer result.
DSHIFTR returns a typeless result. The size of the result is the size of the arguments i and j.
EXAMPLES
The following figure shows a shift of two 64-bit quantities:
Double word shifts right by k bits -->
127 i 64 63 j 0
|___________________________|__________________________|
|--------result----------|--------k--------|
SEE ALSO
For a list of C intrinsic functions, see the Cray C and C++ Reference Manual.
Cray Fortran Reference Manual