summaryrefslogtreecommitdiff
path: root/mpi
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@iki.fi>2022-10-08 15:12:33 +0300
committerJussi Kivilinna <jussi.kivilinna@iki.fi>2022-10-08 15:25:21 +0300
commitf01d4b7a601f68e52c7c7b4647bfe97cb60be26e (patch)
treeeb1c302141c801eca7407cfdfa5c5c71cbf6e726 /mpi
parent38bd31bc46b992f68c9455ed50a6280943fe6a75 (diff)
downloadlibgcrypt-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.h2
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