Subject: Re: Popcount optimization using AVX512

From: Alvaro Herrera <[email-masked]>
Date: Tue, 2 Apr 2024 19:34:08 +0200

On 2024-Apr-02, Nathan Bossart wrote:

> Another idea I had is to turn pg_popcount() into a macro that just uses the
> pg_number_of_ones array when called for few bytes:
> 
> 	static inline uint64
> 	pg_popcount_inline(const char *buf, int bytes)
> 	{
> 		uint64		popcnt = 0;
> 
> 		while (bytes--)
> 			popcnt += pg_number_of_ones[(unsigned char) *buf++];
> 
> 		return popcnt;
> 	}
> 
> 	#define pg_popcount(buf, bytes) \
> 		((bytes < 64) ? \
> 		 pg_popcount_inline(buf, bytes) : \
> 		 pg_popcount_optimized(buf, bytes))
> 
> But again, I'm not sure this is really worth it for the current use-cases.

Eh, that seems simple enough, and then you can forget about that case.

-- 
Álvaro Herrera        Breisgau, Deutschland  —  https://www.EnterpriseDB.com/
"No hay hombre que no aspire a la plenitud, es decir,
la suma de experiencias de que un hombre es capaz"