1
0

Common.cpp 411 B

12345678910111213141516171819202122232425262728
  1. /* Copyright (C) Teemu Suutari */
  2. #include "Common.hpp"
  3. namespace ancient::internal
  4. {
  5. uint32_t rotateBits(uint32_t value,uint32_t count)
  6. {
  7. static const uint8_t rotateNibble[16]={
  8. 0x0,0x8,0x4,0xc,
  9. 0x2,0xa,0x6,0xe,
  10. 0x1,0x9,0x5,0xd,
  11. 0x3,0xb,0x7,0xf
  12. };
  13. uint32_t ret=0;
  14. for (uint32_t i=0;i<count;i+=4)
  15. {
  16. ret=(ret<<4)|rotateNibble[value&0xf];
  17. value>>=4;
  18. }
  19. ret>>=(4-count)&3;
  20. return ret;
  21. }
  22. }