diff options
author | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2022-10-08 15:12:33 +0300 |
---|---|---|
committer | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2022-10-08 15:25:21 +0300 |
commit | f01d4b7a601f68e52c7c7b4647bfe97cb60be26e (patch) | |
tree | eb1c302141c801eca7407cfdfa5c5c71cbf6e726 /mpi | |
parent | 38bd31bc46b992f68c9455ed50a6280943fe6a75 (diff) | |
download | libgcrypt-f01d4b7a601f68e52c7c7b4647bfe97cb60be26e.tar.gz |
mpi/longlong.h: i386: use tzcnt instruction for trailing zeros
* mpi/longlong.h [__i386__] (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>
Diffstat (limited to 'mpi')
-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 706ac723..9e94ef30 100644 --- a/mpi/longlong.h +++ b/mpi/longlong.h @@ -565,7 +565,7 @@ extern USItype __udiv_qrnnd (); (count) = __cbtmp ^ 31; \ } while (0) # define count_trailing_zeros(count, x) \ - __asm__ ("bsfl %1,%0" : "=r" (count) : "rm" ((USItype)(x)) __CLOBBER_CC) + __asm__ ("rep;bsfl %1,%0" : "=r" (count) : "rm" ((USItype)(x)) __CLOBBER_CC) # ifndef UMUL_TIME # define UMUL_TIME 40 # endif |