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