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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Incorrect lowering of tosa::ReluNOp and tosa::ClampOp
        </td>
    </tr>

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

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

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

<pre>
    Change 2eb50cee11ccbfac71eeb7687b9f136d95fc7f52 changed the implementation of tosa::ClampOp to use a sequence of maxf and minf operations for floating point value.

The clamp operation is lowered to

   val = min(val, minVal)
   result = max(val, maxVal)

The correct implementation is

   val = max(val, minVal)
   result = min(val, maxVal)

A reproducer can be found in `@test_simple_f32` of `test/Conversion/TosaToLinalg/tosa-to-linalg.mlir`.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx9Uttq3DAQ_Rr7Zchiy6u1_eCHdEOgUFoooa9BksdeFVlyddls_74jp2k2vYGwdEZHM8dnRrrx-3A8CTsjMJS8Uoh1rZSchGprRNkeulb2U90cxp5Pqp04A7XxR4gnBL2sBhe0UUTtLLgJoguiaG5pHY1Y1k8rRSAFBAEBvyW0CjNtEZcJhB1h0XYCt6LfMgSYnIfJOEJ2htVpG-EsTMJdUd0V1e3z94FKq5z-9SXoAMY9oc_K3DUZIGeAornLxQrWESrYMYMv-dT_onkMycRnprhcMcXlmnmlwXmPKv5ugw7_qv8m63_rv1H6t_q3RF-9G5NCD0pYkEjmJbJUWygOVbGvIob4GDZxj1PDKJitpy1fFOz-6OwZfSDJBB6ocQ_ug7bCzARzH2-iuzFbYLcY7enhzy6UONSHQ8Wajle8HIdm7JtelFFHg0PB321sfgfv7YtDW2tyS9-MyGc06SONSB6EPwanTN4MpxjXkMPsntas4ynJnXILAWPOL9sNGfGVyhDUISQMdOBt1fPyNMh-FHIcOetZV3HWtV2vBFf7ppYtlxMvjZBoQpZdMGbxCbYUdKY_KPXAKsaqrq7rltX7_Y6PFdbt2HAm2sN-35PNuAhtdlnHzvm59MMmSaY50KXRIYbXSxGCni1uLuX8IsWT80MQUqRFlFvpYZP-AzEbI5Q">