Zero/sign extension of Bool

I’m brand new to SPIR-V, so apologies for not being able to answer this question given the tooling… I don’t know how to make glslangValidator do my bidding yet.

How do you express a zero/sign extension of Bool to an integer type in SPIRV? An obvious use case is comparisons on bools:

int main() {
  bool x = false;
  bool y = true;
  bool z = x < y;

The comparison should zero-extend x and y to int, then yield the comparison of those. But the only instruction I can find for this operation is OpSelect, which seems out of character for an IR with this level of specificity. Being able to sign-extend into floats would also be very useful for vector instructions, as this is already common practice in AVX coding.