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

    <tr>
        <th>Summary</th>
        <td>
            [clang] [SIMD] Surprisign codegen for AVX2 is_less_equal
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    While trying to optimize [EVE](https://github.com/jfalcou/eve) codegen, we found out this discrepancy with gcc : 

https://godbolt.org/z/nj983Txh6

```c++
#include <immintrin.h>

auto test(__m256i a, __m256i b)
{
  return _mm256_cmpeq_epi32(_mm256_min_epi32(a, b), a);
}
```

G++ : 
```c++
test(long long __vector(4), long long __vector(4)):
 vpminsd ymm1, ymm0, ymm1
        vpcmpeqd        ymm0, ymm1, ymm0
 ret
```

CLANG : 
```x86asm
test(long long vector[4], long long vector[4]):
        vpcmpgtd        ymm0, ymm0, ymm1
        vpcmpeqd ymm1, ymm1, ymm1
        vpxor   ymm0, ymm0, ymm1
 ret
```

After looking up microops timing with LLVM-MCA and checking uops.info, it should give the same performance. However, the gcc code is 3 bytes shorter than the clang generation.

Is there any non trivial reason to perform this code generation or is it an oversight ?
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx8VF1vozgU_TXOy1UjMJAmDzzQpMyO1O7LrLr7hox9AXf9wdiGNvPrV4ZkpjutGqGA8bnnnmNxD_Ne9gaxJMUdKU4bNoXBuvK5Y4rbadNacS7_HqRCCO4sTQ_Bgh2D1PIHAinu7p_uSXEidD-EMHqSVYTWhNa9DMPUbrnVhNYXMkJrnJHQA3ArsEdD6BFeEDo7GQF2ChAG6UFIzx2OzPAzvMgwQM85kKwCklQkqX7rY0VrVdha1xNa_yC0Ns-HffbX67Bb4WSXrBcn9C5eSUVoJg1Xk0Ag2VFqLU1w0mwHkt2vRWwKFgL6QOi-aTQtdhJYVHtdtIQeIvQ28gE4DJMz0Oi423A94vcGR5nRWL--1NL8fLVQLRT0GHkPJFt03Z7eCl6lfFll_zyA93YuOpU1PSx_TTMjD9YRus8vTT7ZPMSzTCqYRy2NF3DWOo0lZ62Tyz1dTK6_eVzsiev6f7BrWVLFI3lv5vhQ_fnlnZXX_Y55_ZGTi9TiLl--sbc-ftu6unirsg8fqfzU1BsX6Ye4V-s-ofvQdNUFdKCs_TeOzzSCltxZO3qIU2T69SN_eHh6vHk8VsCMAD4gX9F29FtpOhu7yAB-sJMS0MsZIQwInmmEEV1nnWaG4xb-sC84o4v4CIizE6cNpIcM2nNAH0lclBQGZhYQV8z00KNBx4K0ZrsK_-rjrkNg5gzGGghOzpIpcMh8XNpr63Vwlz6_WMC62FUGYAbsjM7LfghAsnojykwcsgPbYJneZvuMJvmu2AwlbzN-y1qKux0vRMrzrtilot3RlmKOHd3Ikia0SNIsTZP8Ni-2IhOCi6RjRSJyseckT1AzqbZKzTqmwkZ6P2GZ0iI97DeKtaj8knWULrYJpTH2XBkLbtqp9yRPlPTB_6IIMqglINeK4hSD79vXx1N8_Da50ckYotdYg846qJ7-oSB9o9D7Br9PTG0mp8pPUjK2u9xuRmefkQdC60W-J7S-OJhL-l8AAAD__yokvuA">