| 
					
				 | 
			
			
				@@ -77,15 +77,17 @@ namespace chessy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     inline int popcount(U64 x) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #if __GNUC__ > 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return __builtin_popcount(x); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return __builtin_popcountll(x); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #elif defined(_MSC_VER) && defined(_M_X64) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return _mm_popcnt_u64(x); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        int result = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (int i = 0; i < 64; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (x & (1ULL << i)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                result++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        x = (x & 0x5555555555555555) + ((x & 0xAAAAAAAAAAAAAAAA) >> 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        x = (x & 0x3333333333333333) + ((x & 0xCCCCCCCCCCCCCCCC) >> 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        x = (x & 0x0F0F0F0F0F0F0F0F) + ((x & 0xF0F0F0F0F0F0F0F0) >> 4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        x = (x & 0x00FF00FF00FF00FF) + ((x & 0xFF00FF00FF00FF00) >> 8); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        x = (x & 0x0000FFFF0000FFFF) + ((x & 0xFFFF0000FFFF0000) >> 16); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        x = (x & 0x00000000FFFFFFFF) + ((x & 0xFFFFFFFF00000000) >> 32); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return x; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |