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