When SLP vectorization creates code for external bool defs that are used in condition composition we can end up combining them with vector booleans and thus push types like vector(16) <signed-boolean:1> on them. vect_create_constant_vectors then converts the components to signed-boolean:1 using _3 = _2 ? -1 : 0 and builds a CTOR with signed-boolean:1 components. It's probably better to code-generate the "conversion" to vector bool by using a CTOR with the original bools and then producing the vector bool mask by a comparison against zero (if supported?).
See PR101636 for a testcase where this triggers.