MSVC, Clang, and GCC all define (or dont define) rotate intrinsics in different places, so include the correct header or define the ones we need