spirv_assembly: Don't use booleans in SSBOs
The bool type in spirv isn't allowed in external storage. From the SPIR-V
spec for OpTypeBool:
"Values of this type can only be either true or false. There is no
physical size or bit pattern defined for these values. If they are
stored (in conjunction with OpVariable), they can only be used with
logical addressing operations, not physical, and only with
non-externally visible shader Storage Classes: Workgroup,
CrossWorkgroup, Private, and Function."
Instead, we should use an integer and use OpSelect to convert from a
boolean to the expected 0/1 value the test wants.