<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/154332>154332</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR]Inconsistent Results from `tosa.arithmetic_right_shift` Operation
</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: [98e8f01](https://github.com/llvm/llvm-project/commit/98e8f01d183177a4f54187c23183da50a7cf6daf)
## Description:
The `tosa.arithmetic_right_shift` operation should always yield a consistent result when applied to the same inputs. However, executing the same lowering sequence multiple times produces inconsistent results.
## Steps to Reproduce:
### Minimal MLIR program (test.mlir):
```
module {
func.func private @printMemrefI16(tensor<*xi16>) attributes {llvm.emit_c_interface}
func.func @main() {
%0 = "tosa.const"() <{values = dense<53> : tensor<2xi16>}> : () -> tensor<2xi16>
%1 = "tosa.const"() <{values = dense<10> : tensor<2xi16>}> : () -> tensor<2xi16>
%2 = tosa.arithmetic_right_shift %1, %0 {round = true} : (tensor<2xi16>, tensor<2xi16>) -> tensor<2xi16>
%cast = tensor.cast %2 : tensor<2xi16> to tensor<*xi16>
call @printMemrefI16(%cast) : (tensor<*xi16>) -> ()
return
}
}
```
#### Command:
```
/home/workdir/llvm-project/build/bin/mlir-opt test.mlir -pass-pipeline="builtin.module(func.func(tosa-to-linalg))" | \
/home/workdir/llvm-project-latest/build/bin/mlir-opt -tosa-to-arith \
-one-shot-bufferize="bufferize-function-boundaries=1" \
-convert-linalg-to-affine-loops \
-lower-affine \
-convert-scf-to-cf \
-convert-to-llvm | \
/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:
The results are inconsistent. Possible output include:
```
[0, 0]
```
```
[7134, -31124]
```
```
[10, 0]
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVl2vozYT_jXOzQhkbAjhIhc5yUbvSu9qq23vjwwMwa2xqT-SPf31lYHkfKXt2aoSIiKeeZ5nxjMeC-fkSSNuSfFAisNKBN8bu3UXRNGuatM-bT06D40ZBukJ3wEpHqoNbjqakeJA2Kb3fnSE7wg7EnY8Sd-HOm3MQNhRqfP1Jxmt-RUbT9hxgWLHBabNNjwrS5F3RZ5tyobxbMNbUVBRNt26FR1hFaG7-DBOGIcDusbK0UujIy_d_dIjkDX1xolUWOn7Ab1sHq089f7R9bLzZE3BjGhFdALXm6BaEOoinhw8SYwf0BjtpPOoPVh0QXm49KhBjKOS2II34HsEJwYEqcfgXQr_Mxc8oyVsD_gdm-ClPj1bKXNBG_9x-HtA3SAMQXk5KgQvB3QwWtOGBh1I_Y7cpa9i_tnj6KKGb7h4zaHfLKLRF6nlIBR8-f_nbxH8ZMUAhG3iDqaDkjZm8ua2pstDd4Npg0Ig5QOhO4Au6CaNLxitPAuPQHI6Wqn9Fxwsdp-z9YSqnbGE7wnbfZfZmvBPhFUgvLeyDh5dxIt7n-Ig_WPzKLVH24kGSXl4w0NyOgipCdtEiKsOAMIKCoQfgDA2bW_MkyeMXS35npQPZ6FCpOMHaFE7JHxfcMI_QazXm0x2FVkermsLShK_39vdJGT_SkJG_0MJbIL-mwqfdMZCnFNWPlgTdDt72RBTfqV7z8L2d6g_IKoRzs8Mk006f89i70Q9tdCdopnxGqHU3TpbiOZcv47gdeVNcud8LpgWfbB6-phrbnm_KP2XDRR7aG-GQeh2aZOXhuzYmwEJO16M_a2NzfT2ZKuDVG38jZV8jA2XmNHDrf0gGYVzyShHVFIj4QfCWHTyUqdzDxK2uXVFjNQ4kXiTKKmFOsXA4sOAlHsgxf4DshIlIv9fq0uuHFNdLaiJ0Zi43vikDl2HVv5xU7t8JlFhPE2TOhaasBId4YdsUjdjNEaf0fpF_ETRdVJjoowZ3dVqOiWXlbeerumiW9O9XYgpUefhB_JwPwE2aI0WEoR4_ECC2tunZDRS-2Q-hwk_nI1sIXG9sNgmStZuSsWH6ZSs53dkfJwZH4OXyqXOvCuyF6X4Nfgx-OcRtwwGEBZfTYwUfjLOyVohmMklrqrQ4p0iLh5obHcaZ_ebpddmZcbzaAkJzzKW_6N9NuHeA161W95WvBIr3GZlUaxptabZqt8WosCWN3VVFTznlHc18ryrmrYUddnl7UpuGWUF3WRVxhmlWVqUJa_zTVtlWVU0ZUZyioOQKp3GjLGnlXQu4DYrcs7ZSokalZuuNozN84_FS47dTltVh5MjOVXSefeM4KVX03UoTlFSHD6_nM3fli3orBk-cOX4er1yrIJV2x--KU3BOMKOSzznLfszAAD__2Cz8Hs">