/* -----------------------------------------------------------------------------
- * $Id: longlong.c,v 1.4 2001/12/05 17:35:15 sewardj Exp $
+ * $Id: longlong.c,v 1.5 2001/12/07 11:34:48 sewardj Exp $
*
* (c) The GHC Team, 1998-1999
*
StgWord64 stg_or64 (StgWord64 a, StgWord64 b) {return a | b;}
StgWord64 stg_xor64 (StgWord64 a, StgWord64 b) {return a ^ b;}
StgWord64 stg_not64 (StgWord64 a) {return ~a;}
-StgWord64 stg_shiftL64 (StgWord64 a, StgInt b) {return a << b;}
-StgWord64 stg_shiftRL64 (StgWord64 a, StgInt b) {return a >> b;}
+
+StgWord64 stg_uncheckedShiftL64 (StgWord64 a, StgInt b) {return a << b;}
+StgWord64 stg_uncheckedShiftRL64 (StgWord64 a, StgInt b) {return a >> b;}
/* Right shifting of signed quantities is not portable in C, so
the behaviour you'll get from using these primops depends
on the whatever your C compiler is doing. ToDo: fix. -- sof 8/98
*/
-StgInt64 stg_iShiftL64 (StgInt64 a, StgInt b) {return a << b;}
-StgInt64 stg_iShiftRA64 (StgInt64 a, StgInt b) {return a >> b;}
-StgInt64 stg_iShiftRL64 (StgInt64 a, StgInt b)
-{return (StgInt64) ((StgWord64) a >> b);}
+StgInt64 stg_uncheckedIShiftL64 (StgInt64 a, StgInt b) {return a << b;}
+StgInt64 stg_uncheckedIShiftRA64 (StgInt64 a, StgInt b) {return a >> b;}
+StgInt64 stg_uncheckedIShiftRL64 (StgInt64 a, StgInt b)
+ {return (StgInt64) ((StgWord64) a >> b);}
/* Casting between longs and longer longs.
(the primops that cast from long longs to Integers