]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Minor optimization of popcount in l10nflist
authorUlrich Drepper <drepper@gmail.com>
Thu, 11 Aug 2011 18:07:04 +0000 (14:07 -0400)
committerUlrich Drepper <drepper@gmail.com>
Thu, 11 Aug 2011 18:07:04 +0000 (14:07 -0400)
ChangeLog
intl/l10nflist.c
sysdeps/x86_64/l10nflist.c [new file with mode: 0644]

index 88ed726e1365292ca06bed020541fd2e131c4571..83bee3f6e3de29410344908143b46a20e8e8a60f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2011-08-11  Ulrich Drepper  <drepper@gmail.com>
 
+       * intl/l10nflist.c: Allow architecture-specific pop function.
+       * sysdeps/x86_64/l10nflist.c: New file.
+
        * intl/l10nflist.c (_nl_make_l10nflist): Use locale-independent
        classification.
 
index a38e0efe90913e1e6daa91725f132705b3911feb..82af2633b50356cf5abce3f4983c2a19916b398e 100644 (file)
@@ -150,6 +150,7 @@ argz_next__ (argz, argz_len, entry)
 
 
 /* Return number of bits set in X.  */
+#ifndef ARCH_POP
 static int pop PARAMS ((int x));
 
 static inline int
@@ -164,6 +165,7 @@ pop (x)
 
   return x;
 }
+#endif
 
 \f
 struct loaded_l10nfile *
diff --git a/sysdeps/x86_64/l10nflist.c b/sysdeps/x86_64/l10nflist.c
new file mode 100644 (file)
index 0000000..2e08372
--- /dev/null
@@ -0,0 +1,13 @@
+#ifdef __POPCNT__
+# include <popcntintrin.h>
+
+static inline unsigned int
+pop (unsigned int x)
+{
+  return _mm_popcnt_u32 (x);
+}
+# define ARCH_POP 1
+
+#endif
+
+#include <intl/l10nflist.c>