Re: Using POPCNT and other advanced bit manipulation instructions
| От | Alvaro Herrera | 
|---|---|
| Тема | Re: Using POPCNT and other advanced bit manipulation instructions | 
| Дата | |
| Msg-id | 20190214184713.GA6080@alvherre.pgsql обсуждение исходный текст  | 
		
| Ответ на | Re: Using POPCNT and other advanced bit manipulation instructions (Tom Lane <tgl@sss.pgh.pa.us>) | 
| Ответы | 
                	
            		Re: Using POPCNT and other advanced bit manipulation instructions
            		
            		 Re: Using POPCNT and other advanced bit manipulation instructions  | 
		
| Список | pgsql-hackers | 
On 2019-Feb-14, Tom Lane wrote:
> Some further thoughts here ...
> 
> Does the "lzcnt" runtime probe actually do anything useful?
> On the x86_64 compilers I tried (gcc 8.2.1 and 4.4.7), __builtin_clz
> and __builtin_ctz compile to sequences involving bsrq and bsfq
> regardless of -mpopcnt.  It's fairly hard to see how lzcnt would
> buy anything over those sequences even if there were zero overhead
> involved in using it.
Hah, I just realized you have to add -mlzcnt in order for these builtins
to use the lzcnt instructions.  It goes from something like
    bsrq    %rax, %rax
    xorq    $63, %rax
to
    lzcntq    %rax, %rax
Significant?
I have this patch now, written before I realized the above; I'll augment
it to cater to this (adding -mlzcnt and a new set of functions --
perhaps a new file "lzcnt.c" or maybe put the lot in pg_popcount.c and
rename it?) and resubmit after an errand I have to run now.
-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
		
	Вложения
В списке pgsql-hackers по дате отправления: