Pre SPIR-V 1.4 it was not legal to perform OpSelect on non scalar/vector/pointer types, and the vector case was restricted to working in a component-wise fashion.
TransformationFlattenConditionalBranch assumes that OpSelect %type %boolean_id %v1 %v2 will always work, but pre SPIR-V 1.4 this may not be allowed at all, or might require %boolean_id to actually be a boolean vector.