Currently, `arith.index_cast` gets converted to `OpSConvert`:
9bf5bf3baf/mlir/lib/Conversion/ArithToSPIRV/ArithToSPIRV.cpp (L1331)
[OpSConvert requires its operands to be of integer
type](https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#OpSConvert),
which poses an issue for `i1` since SPIRV distinguishes between booleans
and integers. As a result, the following example doesn't get converted,
leaving behind illegal ops:
```
%0 = arith.index_cast %arg0 : i1 to index
```
This PR adds additional logic to convert `arith.index_casts` to SPIRV
dialect when casting from `i1` to `index`. Converting `index_cast`s from
`index` to `i1` is a part of
https://github.com/llvm/llvm-project/pull/156031.