dshiftl
- Date:
10-12-2011
NAME
_dshiftl, DSHIFTL - Performs a double-object left shift
SYNOPSIS
C Synopsis
#include <intrinsics.h>
long _dshiftl (long i, long j, long k);
Fortran Synopsis
DSHIFTL ([I=]i, [J=]j, [K=]k)
IMPLEMENTATION
Cray Linux Environment (CLE)
DESCRIPTION
The _dshiftl and DSHIFTL functions perform a double-object left shift. They return a single object.
The result is derived from two arguments, i and j, defined as:
- 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 _dshiftl and DSHIFTL functions return a value generated by a left double-shift of the leftmost k bits of j into the rightmost k bits of i. 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 _dshiftl.
NOTES
C
Because _dshiftl 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 leftmost bit is k bits from the double object’s left 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 leftmost bit is k bits from the double object’s left 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 leftmost bit is k bits from the double object’s left 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 leftmost bit is k bits from the double object’s left 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 assignment M = DSHIFTL(M, N, 5).
For more information on storage units, see the Cray Fortran Reference Manual.
DSHIFTL is an elemental function. The name of this intrinsic cannot be passed as an argument.
RETURN VALUES
_dshiftl returns a 64-bit integer result.
DSHIFTL returns a typeless result. The size of the result is the size of the arguments i and j.
EXAMPLES
Fortran: The following figure shows a shift of two 64-bit quantities:
|<-- Double quantity shifts left by k bits
127 i 64 63 j 0
|___________________________|___________________________|
|-----k-----|----------result-----------|
SEE ALSO
For a list of C intrinsic functions, see the Cray C and C++ Reference Manual
Cray Fortran Reference Manual