GHC does not generate great code for bit-level rotation
I'm working on some hashing functions at the moment, and I notice that GHC generates an
or and a pair of shifts for a rotate. The LLVM back end is smart enough to recover the code's intent via strength reduction and emit a single
rot instruction, but the regular code generator emits three instructions.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information