summaryrefslogtreecommitdiff
path: root/mpi
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@iki.fi>2022-10-02 22:17:31 +0300
committerJussi Kivilinna <jussi.kivilinna@iki.fi>2022-10-08 15:25:21 +0300
commit38bd31bc46b992f68c9455ed50a6280943fe6a75 (patch)
tree41f94054a9c96c8d295db0207739b67c01e92411 /mpi
parentd67f453d1b9de0ddb579de3a14ca8a3801bfead6 (diff)
downloadlibgcrypt-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>
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 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; \