diff options
author | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2022-10-02 22:17:31 +0300 |
---|---|---|
committer | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2022-10-08 15:25:21 +0300 |
commit | 38bd31bc46b992f68c9455ed50a6280943fe6a75 (patch) | |
tree | 41f94054a9c96c8d295db0207739b67c01e92411 | |
parent | d67f453d1b9de0ddb579de3a14ca8a3801bfead6 (diff) | |
download | libgcrypt-38bd31bc46b992f68c9455ed50a6280943fe6a75.tar.gz |
mpi/longlong.h: x86-64: use tzcnt instruction for trailing zeros
* mpi/longlong.h [__x86_64__] (count_trailing_zeros): Add 'rep' prefix
for 'bsfq'.
--
"rep;bsf" aka "tzcnt" is new instruction with well defined operation
on zero input and as result is faster on new CPUs. On old CPUs, "tzcnt"
functions as old "bsf" with undefined behaviour on zero input.
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
-rw-r--r-- | mpi/longlong.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mpi/longlong.h b/mpi/longlong.h index 2921e9bd..706ac723 100644 --- a/mpi/longlong.h +++ b/mpi/longlong.h @@ -624,7 +624,7 @@ extern USItype __udiv_qrnnd (); # define count_trailing_zeros(count, x) \ do { \ UDItype __cbtmp; \ - __asm__ ("bsfq %1,%0" \ + __asm__ ("rep;bsfq %1,%0" \ : "=r" (__cbtmp) : "rm" ((UDItype)(x)) \ __CLOBBER_CC); \ (count) = __cbtmp; \ |