<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/148846>148846</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] Boolean true incorrectly cast to -1 via `tosa.cast` from i1 to i32
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            mlir
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          sweead
      </td>
    </tr>
</table>

<pre>
    test commit: [87e39c3](https://github.com/llvm/llvm-project/commit/87e39c399c96128307a826fd9168679f7c8c8d10)

## Description:

When using `tosa.cast` to convert a tensor of type `tensor<...xi1>` (i.e., 1-bit boolean values) to a wider integer type such as `tensor<...xi32>`, the cast operation performs `sign-extension` rather than zero-extension. As a result: A boolean value true (represented as 1 in i1) is sign-extended to -1 in i32 (i.e., 0xFFFFFFFF).

## Steps to Reproduce:

### Minimal MLIR program (test.mlir):

```
  func.func private @printMemrefI32(tensor<*xi32>)
  func.func @main() {
    %0 = "tosa.const"() <{values = dense<true> : tensor<2x3x1x2xi1>}> : () -> tensor<2x3x1x2xi1>
    %1 = tosa.cast %0 : (tensor<2x3x1x2xi1>) -> tensor<2x3x1x2xi32>
    %cast = tensor.cast %1 : tensor<2x3x1x2xi32> to tensor<*xi32>
    call @printMemrefI32(%cast) : (tensor<*xi32>) -> ()
 return
  }
}
```
#### Command:
```
/home/workdir/llvm-project/build/bin/mlir-opt test.mlir -tosa-to-linalg-pipeline  -tosa-to-arith  -sparsifier   | \ 
/home/workdir/llvm-project/build/bin/mlir-runner -e main -entry-point-result=void -shared-libs=/home/workdir/llvm-project/build/lib/libmlir_runner_utils.so

```
#### Output:
```
[[[[-1,     -1]], 
  [[-1,     -1]], 
  [[-1,     -1]]], 
 [[[-1,     -1]], 
  [[-1,     -1]], 
  [[-1,     -1]]]]
```


</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0Vk2P4zYM_TXKhbBhSfHXIYdMsgEW6KLA9tDjQraZWK0sGZKcnemvL2g7mUln57AL1BBkzIh8JB-fxagQ9MUi7lj-xPLjRk2xd34XviOqbtO47mUXMURo3TDoyOQeWP5UlSjrVrL8yETVxzgGJvdMnJg4XXTspyZt3cDEyZjr7ZWM3v2FbWTitEKJ0wpT121dcFHJrFSVKM5dzYuqKOtz2VZt1fGMiZple1pCMiHhiKH1eozaWYo7H_3Zo4UpaHsBVmTRBZW2KkRWZBAdtM5e0UdQENEG58GdIb6MONvO_2HykKbps-ZMfiInJiqdYsrEAXjS6AiNcwaVhasyEwYmasJV8F136EHbiBf0C2aY2h5UeI8txQJOoLFHoATBjegVlQIj-rPzw-xITUnwmfypyiIDr2JPEXpl4R_07vU0hX0ABR7DZOYO7R-ThegnpII8jh4D2ogd5cdBW9CcStEBXiN22FFtyXIuxVsusufT-jBRpw9d-SPiGMjxK47edVOL9-YsFmT0RVs9KANffvv8FUbvLl4NhE8aSwejPfX67lZk68r2AOfJtiltMHp9VRGBbbPRaxu_4ODx_FmKGWhlnIn9jfFZPm8B2DYblLZMVFQ8K5_mcwAm8gyYPAITYpGQsyEyIW6W8sDKp0UBs12HNiCTB2KYyU9A7N8zEM_ymT-LVVPl8WawgiX09wfG93T4HOYu51uGe3hb6qPvx9ALG3fsBZDgZ8t7AP5BGbM7NfhHHC-orTLmh21Zwy0kPmb_0Kgl9YUhwvQYJ29ndGIw26_7G2XcxUX6OrhhULZbJfRgderdgEycvjv_d0dC---91EzadPQmZZxIjIkbI9ylCQn1IYkuMdoqc0lGPaLRFuH1RHkde4AkjMoHfdboievyACw_wC-n4Sdr0UOCQLKFBG30L8notI3J7bM_Xp3uIAm98tglRjeByeNPhDO6WXaK-G2J-G2K2oQ0uPff4wPrv09xnOIPSKeZsq6E0_1BT8JpcNDsmCkB-HWDV5v_PU7-TnfZftPtZFfLWm1wx8tc5NW2lHzT7zgq2bXblpdNWW_LbVPLoqzymmfnjNeN2uidyESelTznMstFkZZVU3TnLT-XjRRCNGyb4aC0SaldqfOXjQ5hwh3fVtW22BjVoAnz0BZiuTcFjW-_m9vbTJfAtpnRIYZXhKijmQc93b4sP8LTOibmAaFt67zHNpqXZTItM-Cq1buJevZuAM3JQkuxmbzZ_fSvgLmcwMRprei6E_8GAAD__3l2ez0">