Metal doesn't support broadcasting or shuffling boolean values, but we can work around that by casting it to `ushort`, then casting it back to `bool`. I used `ushort` instead of `uint` because 16-bit values give better throughput on Apple GPUs.
This was not tested here in SPIRV-Cross. Predictably, it broke when I tried it in the CTS.