dest = number of 1 bits in the source
popcnt is a fairly new instruction introduced as part of the SSE4 instructions. For AMD it started showing up in the Barcelona processors, while it originated with the Intel Core 2 series.
The popcnt instruction counts the 1 bits in the source and sets the destination to this count. The destination can be a 64, 32 or 16 bit register. The source can be register or memory location of the same size as the destination.
Some examples of using popnt:
popcnt rax, rcx ; rax gets the count of 1s in rcx popcnt eax, r8d ; eax gets the count of 1s in r8b ; top half of rax will be 0 popcnt dx, cx ; dx gets the count of 1s in cx ; the rest of rx is left alone popcnt [x], rdx ; rdx contains bit number of x to test