* * $Id: ishftc.F,v 1.1.1.1 1996/02/15 17:52:36 mclareni Exp $ * * $Log: ishftc.F,v $ * Revision 1.1.1.1 1996/02/15 17:52:36 mclareni * Kernlib * * #include "kerncry/pilot.h" FUNCTION ISHFTC(I,K,L) C C CERN PROGLIB# M441 ISHFTC .VERSION KERNCRY 1.06 870527 C ORIG. 17/11/86 CNAF, BOLOGNA C C CRAY VERSION OF MIL-STD-1753 ISHFTC FUNCTION C K IS THE SHIFT COUNT - NEGATIVE TO THE RIGHT C POSITIVE TO THE LEFT C L IS THE NUMBER OF THE RIGHTMOST BITS TO BE SHIFTED, ALL C OTHER BITS ARE LEFT UNCHANGED C IF (K.GT.0) THEN IF (L.EQ.64) THEN ISHFTC = SHIFT(I,K) ELSE ISHFTC=OR(SHIFTR(AND(MASK(128-L),I),L-K), + AND(MASK(128-L),SHIFTL(AND(MASK(128-L),I),K))) ISHFTC=OR(ISHFTC,AND(MASK(64-L),I)) ENDIF ELSEIF (K.LT.0) THEN ISHFTC=OR(AND(MASK(128-L),SHIFTL(AND(MASK(128-L),I),L+K)), + SHIFTR(AND(MASK(128-L),I),-K)) ISHFTC=OR(ISHFTC,AND(MASK(64-L),I)) ELSE ISHFTC = I ENDIF END #ifdef CERNLIB_TCGEN_ISHFTC #undef CERNLIB_TCGEN_ISHFTC #endif