]> git.eshelyaron.com Git - emacs.git/commitdiff
Port data-tests-popcnt to 32-bit Emacs
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 21 Mar 2018 23:08:27 +0000 (16:08 -0700)
committerAndrew G Cohen <cohen@andy.bu.edu>
Tue, 11 Dec 2018 06:17:56 +0000 (14:17 +0800)
* test/src/data-tests.el (data-tests-popcnt):
Don’t assume Emacs integers can represent 32-bit quantities.
Change to a simple and straightforward approach, since runtime
performance is not important here.

test/src/data-tests.el

index 3b88dbca9a2b408c28111053e1b2e91609e10b1e..33b00d6c9ad1e208eb9d4c4cb29b40539dff8146 100644 (file)
   "Calculate the Hamming weight of BYTE."
   (if (< byte 0)
       (setq byte (lognot byte)))
-  (setq byte (- byte (logand (lsh byte -1) #x55555555)))
-  (setq byte (+ (logand byte #x33333333) (logand (lsh byte -2) #x33333333)))
-  (lsh (* (logand (+ byte (lsh byte -4)) #x0f0f0f0f) #x01010101) -24))
+  (if (zerop byte)
+      0
+    (+ (logand byte 1) (data-tests-popcnt (lsh byte -1)))))
 
 (ert-deftest data-tests-logcount ()
   (should (cl-loop for n in (number-sequence -255 255)