LaunchUtils.h 306 B

123456789101112131415161718
  1. #pragma once
  2. #include<algorithm>
  3. namespace at {
  4. namespace native {
  5. // returns 2**floor(log2(n))
  6. static int lastPow2(unsigned int n) {
  7. n |= (n >> 1);
  8. n |= (n >> 2);
  9. n |= (n >> 4);
  10. n |= (n >> 8);
  11. n |= (n >> 16);
  12. return std::max<int>(1, n - (n >> 1));
  13. }
  14. } // namespace native
  15. } // namespace at