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

    <tr>
        <th>Summary</th>
        <td>
            [sve] A redundant csel instruction for overflow check
        </td>
    </tr>

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

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

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

<pre>
    * test: https://gcc.godbolt.org/z/jde11xv53
```
void mset (int *a, long long num) {
   for (long long i=0; i< num; i++)
     a[i] = 2;
}
```

* gcc: before the loop body 
```
mset:
 cmp     x1, 0
        ble     .L1
        mov     x2, 0
        cntw x3
        whilelo p7.s, xzr, x1
        mov     z31.s, #2
```
* llvm: before the loop body
```
mset: // @mset
        cmp     x1, #1
        b.lt .LBB0_3
        cntw    x8
        mov     z0.s, #2 // =0x2
        mov     x10, xzr
        subs    x9, x1, x8
 csel    x9, xzr, x9, lo    ---> this is redundant  compare to gcc ??
 whilelo p0.s, xzr, x1
```
* the above redundant  csel is used to check the overflow of **loop iv**, but it seems not necessary.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8VN2OozoMfhpzYxUlTjuUCy7o9nC173DEjynZE0hFAtOdpz9K6M5MR52VogTifLG_z45r5_RlYi7gcILDOakXP9i5WPuu75PGdr8LoBI9Ow-qxMH7qwNVAlVA1aVt04vtGmt8aucLUPUGVP3qWMrbelAgziBKeBH3EX9XqzscHXsEOuopLGUN9AONnS7bNC0jUI6QnTYIIvZ2Duc_zmhQZwHqFD5-RET8plMc-TsQsYbDScPhjKDOSKDul0J2fhrffaYSL20bKDfc25nRD4zG2isGTfApNLAK2my-2_Ea_d9kYCc-RYSIjeG4pj_lo2G064aiJ6h28q94U4-br4M2bCxes9QFzO1tjss3F78puZ0DUvRcASrRmHX8jvzfuONWGAh7EXcew39QBEh9CbFJjcf05-kk_lVPiAfk8RtS4oPTewjqLG70jbpS_JHqwe6WxkV7fpcwzH98to7NJ-Nd5nyr3WDY7Xag_kE_aIfa4czdMnX15BFbO17roKMNVYWgqjC2a9_zJ57m70lyQjbqxq784CJEpx0ujrvgpx24_S8etSvPvbGvaPvw2IDKmEq9bj_BWbN41B4d8-hwsh4nbtm5ev6dJl2hulzldcKFzMQhJ1IyS4ai4ZcmPzaZrFVXq5x6VrXa8yFTqudj3ye6IEF7IYmklEeVpaoTTXbsJSu5bzvJsBc81tqkodpCA0m0cwsX2TF_EYmpGzYutiWiiV8xGoEodKm5CJhds1wc7IXRzruPW7z2JvYzt3J4-OUnnTaZJufnpfXaTrGzvCsURUuW2RRfGp32w9KkrR2Bqvg2tmV3ne0vbj1QFaNzQFWM_v8AAAD___FBeTE">