LGTM other than the request to split the commit.
These changes should probably be done in a separate patch.
I don't have a problem with compressing this type, but I'm curious if there was a concrete motivation.
I can do it separately.
There wasn't really a strong motivation other than that it could be packed better than it was.
Move packing of FixedPointSemantics to a separate patch.