Skip to content

Add population count primop

Modern CPUs have a POPCNT instruction for efficient population count. This instruction can be used to implement various data structures.

I propose we add the following set of primops

popCnt8# :: Word# -> Word#
popCnt16# :: Word# -> Word#
popCnt32# :: Word# -> Word#
popCnt64# :: Word64# -> Word#
popCnt# :: Word# -> Word#

(We use Word# for all functions except the 64 bit version as there are no Word8, Word16# and Word32# types).

Each primop compiles into either a single POPCNT instruction or a call to some fallback function, implemented in C.

Trac metadata
Trac field Value
Version 7.2.1
Type FeatureRequest
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information