I noticed this because of https://github.com/llvm/llvm-project/issues/159738, though it was only caught by his fuzzer because it wrapped to 0. Also, is there a reason for the usage of `unsigned` for sizes in spirv types? I believe most of the builtin types use `int64_t` for sizes, so it may make sense to do the same for spirv.