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

    <tr>
        <th>Summary</th>
        <td>
            Incorrect Output in Canonicalize Transformation for clamp_float_is_noop Unit Test in canonicalize.mlir
        </td>
    </tr>

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

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

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

<pre>
    I found an issue with the canonicalize transformation in the LLVM MLIR project, specifically in the `clamp_float_is_noop` unit test within `canonicalize.mlir`.

Input code:
```
Input code:
// CHECK-LABEL: @clamp_float_is_noop
func.func @clamp_float_is_noop(%arg0: tensor<4xf32>) -> tensor<4xf32> {
  // CHECK: return %arg0
  // CHECK-NOT: "tosa.clamp"
  %0 = "tosa.clamp"(%arg0) {min_int = -128 : i64, max_int = 127 : i64, min_fp = -3.40282347E+38 : f32, max_fp = 3.40282347E+38 : f32} : (tensor<4xf32>) -> tensor<4xf32>
  return %0 : tensor<4xf32>
}
```
Output code after running `mlir-opt -canonicalize="test-convergence"`:
```
func.func @clamp_float_is_noop(%arg0: tensor<4xf32>) -> tensor<4xf32> {
  return %arg0 : tensor<4xf32>
}
```

The issue arises when the input tensor `arg0` has the following values:
```
arg0 (tensor<4xf32>): (dim: 4) (0) -> -Inf, (1) -> -Inf, (2) -> -Inf, (3) -> -Inf
```

In this case, the original code outputs `-3.40282347E+38`, while the canonicalized code outputs `-Inf`. These two values are not equivalent, indicating that the canonicalize transformation produced an incorrect result for special values.


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8VV2P6yYQ_TX4ZWSLgOM4D37YzYcaNbdXqtK-RsQex1QEUsCbu_vrK7D3I0qiqn24UkQsODPMORwG4Zw8asSKTJ_JdJmI3nfGVpdXod86YZKDaV6rDbSm1w0IDdK5HuEifQe-Q6iFNlrWQsk3BG-Fdq2xJ-Gl0SB1hGy3f36Db9vN73C25i-sPWELcGesZRsC1es7kBS0VuJ03rfKCL-Xbq-NOZOCQq-lB4_Ox42ljtAvO2cnJS0paEboktCnYdzoc--hNg0SPk6Rgo6_hwi2JmwNi19Wi1_T7dPzakv4E5D8bmUxou11nYXhEYqVhE2FPdKQyaN2xhK-yH-0nBG-ImwOKeGr2xUgs-dhC4CvZYU0Fn1vNbwnvoNKf_u-i6Uz5o0TWayMMPaJnVIgfHkL-KyXzUMNJ6n3UvsITieshJBWFnk4xpP48bE2YbOrJan37XmI4llOWcl4PlsR9syHFIHlmGLEPYTNljBwKf-Dfu9MP7WicP8IhpOfLe-a5Hvv310CovVowfZaS30MJgy-S83ZQ_rVjoQvg6rofFob_YL2iLrGoG1BH3nxp9jo2jb_R41h3HU4NgJhpUMHlw6HOyzjlRqSBoFiwQWFTri43hqlzCWo9yJUj-6RHEN99897tEIjT-ErjzZlJf2QIN3oNjiLsHJyb5Ldm-TXk4-5bwJR6aAWDkNsYGWsPEot1OASEx3jAv0b54dkbAGXTiq8aaDNbXyopaAZ7Dp0CP5iRt1AWARtPODfvXwRCnVsq1I3shY-6Os74f-1RZ-tafoah86ua2Mt1h4sul55aI0d-rRQ465X_TVpKt7M-VwkWE2KkvE5o4wlXZXXzQGbvMbJjGMpDsWh5NMGS1FiMZ3lIpEVo4zTnE0ppzPKsjkvpnwiCtawvJ0USHKKJyFVptTLKTP2mES3VQXj-SRR4oDKxQeLMY2XwYrhek2Xia1CTHroj47kVEnn3WcWL73CavNBdLzbUsPiq0i7a5GCDnduJPwRXqVdeJWkhpvnKOmtqjrvz9HjsTMfpe_6Q1abE2HrUNT4l348jOtIxRG2jlT_CQAA__9xNEf4">