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