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 по дате отправления: