Given the types used (uint32_t and uint64_t) many of the masks are unnecessary.
But mainly moving the bit extraction into separate inline functions means the
code is a bit clearer, and we only need to bracket one place.
But because these helpers shared the same names, I split the 32 and
64-bit tests.