- (==#), (<#), (<=#), (>=#), (>#),
-
- FastBool, fastBool, isFastTrue, fastOr, fastAnd
+ --quotRemFastInt is difficult because unboxed values can't
+ --be tupled, but unboxed tuples aren't portable. Just use
+ -- nuisance boxed quotRem and rely on optimization.
+ (==#), (/=#), (<#), (<=#), (>=#), (>#),
+ minFastInt, maxFastInt,
+ --prefer to distinguish operations, not types, between
+ --signed and unsigned.
+ --left-shift is the same for 'signed' and 'unsigned' numbers
+ shiftLFastInt,
+ --right-shift isn't the same for negative numbers (ones with
+ --the highest-order bit '1'). If you don't care because the
+ --number you're shifting is always nonnegative, use the '_' version
+ --which should just be the fastest one.
+ shiftR_FastInt,
+ --"L' = logical or unsigned shift; 'A' = arithmetic or signed shift
+ shiftRLFastInt, shiftRAFastInt,
+ bitAndFastInt, bitOrFastInt,
+ --add more operations to this file as you need them
+
+ -- * FastChar
+ FastChar,
+
+ -- ** Getting in and out of FastChar
+ _CLIT, cBox, cUnbox,
+
+ -- ** Operations on FastChar
+ fastOrd, fastChr, eqFastChar,
+ --note, fastChr is "unsafe"Chr: it doesn't check for
+ --character values above the range of Unicode
+
+ -- * FastPtr
+ FastPtr,
+
+ -- ** Getting in and out of FastPtr
+ pBox, pUnbox,
+
+ -- ** Casting FastPtrs
+ castFastPtr