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

    <tr>
        <th>Summary</th>
        <td>
            Inconsistent results when using --arith-unsigned-when-equivalent
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    I have the following MLIR program:
test.mlir:
```
module {
  func.func @func1() {
 %c1506825994_i64 = arith.constant 1506825994 : i64
    %c1111530998_i64 = arith.constant 1111530998 : i64
    %c1357835903_i64 = arith.constant 1357835903 : i64
    %c4995493184_i64 = arith.constant 4995493184 : i64
    %false = arith.constant false
    %21 = scf.if %false -> (i64) { //the result should be 1111530998
      scf.yield %c4995493184_i64 : i64
    } else {
      scf.yield %c1111530998_i64 : i64
    }
 // 1357835903 % 1111530998 = 246304905
    %22 = arith.remui %c1357835903_i64, %21 : i64  //the result should be 246304905
    
 // 246304905 or 1357835903 = 1592721151
    // 1110101011100101000010001001 or 1010000111011101110111001111111 = 1011110111011101111111011111111
    %26 = arith.ori %22, %c1357835903_i64 : i64    //the result should be 1592721151
    
    // 1011110111011101111111011111111 xor 1506825994(1011001110100000101011100001010) = 0000111001111101010100111110101(121547253)
    %57 = arith.xori %26, %c1506825994_i64 : i64   //the result should be 121547253

    // 121547253 - 1111530998 = -989983745
    %67 = arith.subi %57, %c1111530998_i64 : i64   //the result should be -989983745

    // min(-989983745, 1506825994)
    %169 = arith.minsi %67, %c1506825994_i64 : i64 //the result should be -989983745
    vector.print %169 : i64
 return
  }
}
```
When I tried ```mlir-opt --convert-scf-to-cf --convert-cf-to-llvm --arith-unsigned-when-equivalent test.mlir```, then the program was optimized to :
```
module {
  func.func @func1() {
 %c1506825994_i64 = arith.constant 1506825994 : i64
    %c1111530998_i64 = arith.constant 1111530998 : i64
    %c1357835903_i64 = arith.constant 1357835903 : i64
    %c4995493184_i64 = arith.constant 4995493184 : i64
    %false = arith.constant false
    llvm.cond_br %false, ^bb1, ^bb2
  ^bb1:  // pred: ^bb0
    llvm.br ^bb3(%c4995493184_i64 : i64)
  ^bb2:  // pred: ^bb0
    llvm.br ^bb3(%c1111530998_i64 : i64)
  ^bb3(%0: i64):  // 2 preds: ^bb1, ^bb2
    llvm.br ^bb4
 ^bb4:  // pred: ^bb3
    %1 = arith.remui %c1357835903_i64, %0 : i64
 %2 = arith.ori %1, %c1357835903_i64 : i64
    %3 = arith.xori %2, %c1506825994_i64 : i64
    %4 = arith.subi %3, %c1111530998_i64 : i64
 %5 = arith.minui %4, %c1506825994_i64 : i64
    vector.print %5 : i64
    return
  }
}
```
I've analyzed this program manually, and according to my analysis, the number values of the two operands in the arith minimum operation seems to be -989983745 and  1506825994. This operation should get the result of -989983745 for ```arith.minsi```, and 1506825994 for ```arith.minui```. However, in my test, the ```--arith-unsigned-when-equivalent``` pass seems to optimize the ```arith.minsi``` operation to ```arith.minui```, and will cause an inconsistent result according to my analysis.
 I'm not sure if there is any bug in my program or the wrong usage of the ```--arith-unsigned-when-equivalent``` that caused this error.
My git version is 5b6e58c565cf809e4133a10ff9d9b096754bea1e. 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsV0uP2zYQ_jX0ZSCDpEQ9Dj5ssll0geZSFOgxoCTKZiCRLknZcX99QUqWJb_yuPTSZNcWyeHMN9-M51tza-VWCbFB7ANiryveu502myNX25NW26-Er0pdnzbvsOMHAW4noNFtq49SbeHz7-9_wN7oreEdil8QfkX4xQnr1l0rzbSDUjz-hGWn674VgLIPwxqg6VW19i-AEuzfCaI5osXMBlFWEYbTnLKiSL7INAEUvwI30u3WlVbWceXgYgEofgGZJucQMHgghLAYF0X-0MNk8cBDzLI8ZgWOH3qYLO57SIqCJUVM8odZXCzuemh4a8W9e-FgYUpJsLNVs5bN5W6E4k-AaO49DywDom-IvvnyGmH71oHd6b6toRQzSi6-Ifg8SdHW95O6hp29ggiwL1W_9XJTnlsvUzt4uAuuKVsW7xVoksY4KTBbckJn3BnR9fJOYRH9OPEXQMAzhu4FWuCcDECbZYO8AmEFzSghjMxhDukRgsN_QnB4wDi8-FXwNG4Rsvj1L_7f4D6s5udk9k6W1KQzarSRA10jF7etPxLzlJq72d3k-RwjfPO5Th9tRHN_NuaNB1LGzIfH0NTxK5zJwaO_gcNp4R1RwpKMshjRYkEFy2ZUfDtzkU5cXI-iMxfPqJhiDVPxhoXzOUTXnRwVeVHkcZYsWzmdg7R9KQfkE8i7H6fnIK8j3aDspEI0n5nRj4vaLGkkaTGD2Ell5QD8O0T-BEIf6SAqp816b6Ryl7Dz6WGE640635gGyeVhqVF_7YSCd3BGihqmM69qkd47iKJKq4MwLrJVEzkdVc1sb9hq20MHURQyj3oVZLaOjjuhIvF3Lw-8FcrBRS0nAPSjl1kVtHYUVzhyC3rvZCf_ETU4Df-L638rrr66_rD-UprpXmhq9qksyfREp5Yb9uOX6ZO0N6L263CCr1x7r34_DsV6KLCXj9sY7Vf9P5DeK_-jNZ4dzwLSENJOMe-wcBX9zP24eAQ-Xs6UH9dvfFVjP8NvJY48V7hF8PieLDwfZov7yZ2JHT8f2BfsbDlLh8yTH41-PSTZrclPTsl3RLODAK54ewpzaSftNLI6rnreticPj6saeFVpU_uvDU5DdxpuWWnHeQeq70ph4MDbXljQTdh0Rw16LwxXtQU5zMSQv9ch2fXdcOqkVmCF6Kx3vhCJEHs2u9bwp0c5uzYoy1Y4mOmNbuY-Gm0uKjDTssXQ9oFmM_L-nf5yZw2_6aM4COMvS-U58Wpw5mOy-56GTIaw59ZeaDjrxdLbPfQzNry0PAN9TvQo2xYq3ltffpDKz0lpnZe0kcFH9V6P7eWbpwOlHdjeCJCh4P7BAlcnKPvtSMq5obQJmRyNVlvoLd-Kc5f8AlVux92Af2xbYYw2I7bPJ9hKBwdhrOdEWmBlKlhesZRVTY4LkZA45gQ3TVEXJS7SjCWl4ESsYVVv4rqIC74SG5LhgmZJkpDVbkNolSUlzZq6yhuOecPzmiVpTcoqE2lBVnJDMU1wjAlO_d_M67xklBIS503VlCRrUIJFx2W7DjNUm-1KWtuLTR6zGK9aXorWhu_xlCpxhHCIKPVf683G34nKfmtRgltpnb14cdK1YvN-W0MLnj_ora_i97hd9abd7JzbewEYpvhWul1frivdIfrmw41v0d7or6JyiL4FkBbRt5DEvwEAAP__UV50aQ">