dshiftr(3I)

_dshiftr, DSHIFTR - Performs a double-object right shift

As shipped in IRIX 6.5. First release of IRIX 6.5.

NAME
     _dshiftr, DSHIFTR - Performs a double-object right shift

SYNOPSIS
     C/C++:

     #include <intrinsics.h>
     long _dshiftr (long i, long j, long k);

     Fortran:

     DSHIFTR ([I=]i, [J=]j, [K=]k)

IMPLEMENTATION
     C/C++:  UNICOS and UNICOS/mk systems

     Fortran:  UNICOS, UNICOS/mk, and IRIX systems

STANDARDS
     C/C++:  Cray Research extension

     Fortran:  CF90 and MIPSpro 7 Fortran 90 compiler extension to Fortran
     90

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.  The arguments are
     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
     rotated shift occurs.  The value of k must be in the range of 0
     through 64 for _dshiftr.

C/C++ NOTES
     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 NOTES
     On UNICOS systems, i and j are 64-bit objects.  On UNICOS/mk systems,
     i and j can be 32- or 64-bit objects.  On IRIX systems, i and j can be
     8-, 16-, 32-, or 64-bit objects.

     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
     assignment M = DSHIFTR(M, N, 5).

     For more information on storage units, see the Fortran Language
     Reference Manual, Volume 3, publication SR-3905.

     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 on UNICOS and UNICOS/mk systems and
     an integer result on IRIX systems.  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
     A complete list of C/C++ intrinsic functions available on Cray
     Research systems is in the Cray C/C++ Reference Manual, publication
     SR-2179.

     Fortran Language Reference Manual, Volume 3, publication SR-3905

     Intrinsic Procedures Reference Manual, publication SR-2138, for the
     printed version of this man page.