Register layouts. Every bit, including unused ones, is a named field so register values compare stably. Bit fields use only 32 bit types because MSVC restarts packing when the alignment changes.