I prefer this approach. It doesn’t matter to me if that patch is also split into the 2a and 2b parts.
I don’t feel sufficiently well informed to comment on this. I briefly reviewed P1467R9, but it isn’t clear to me whether an extended floating point type that computes values using excess precision is permissible as a type named by std::bfloat16_t. We should try to get a definitive answer to that.