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

    <tr>
        <th>Summary</th>
        <td>
            Potential misscompilation for m2.
        </td>
    </tr>

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

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

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

<pre>
    Hi

This function gives different results with 03 and without (for a sertain combination of options).
I believe that O3 version is incorrect.

```
std::pair<int, int> get_mask(uint8x8_t a) {
    a = vand_u8(a, vdup_n_u64(0x8080898983838181));
    auto desc = vaddv_u16(vpaddl_u8(a));
    return { desc & 0x1f, desc >> 7};
}
```

Complete test case with options to reproduce

https://gist.github.com/DenisYaroshevskiy/85ec7af1d4f283bdb579ae2f49c3284e
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxsk01vnDwUhX-N2VwFwTUfZsEiyWT0vqt20U1XIxtfBjdgI3-Q5N9XzIzSUVPJsi-C83B8fC1DMGdL1LP6idWHTKY4Od8fyJrwU3oXJtrCq_nIlNMf_X-GFQdWPF7nH5MJMCY7ROMsnM1GAbQZR_JkI3gKaY4B3kycoOAgrb7ULkVgKEbnQUIgH6WxMLhFGSsvIDeCW_cqMOzy66_-B0WzoY0gTjLCNw4b-bB_bQIYOzjvaYj5vTvWFLdxeQxRM_7I-OMqjWf82djI8Bn2hb_AmeJpkeGVoUjGRvEuThEkww5Y-3QFAABIYPwAm7T6lARDIXfEptN6sqfUVAxF8S4KUYhOdIILLkpRMuz2we8xKTrQFIYbTuvtlMqGodhWqfX8Cf-i9BSTt7upmx4bKN7LcfdxA77s-2lZe_gU7vW_IrnOz25ZZ4oEkUKEQQa6HtntDCA68LR6p9NA97opxjXskeKR4fFsQszPJk5J5YNbGB6_tBDDo6hpaOVY6mpEwZVWddtJwrHqBo6iokz3XHe8kxn1ZdMWQvCuarKpr2RVtvUoOpJ1I8uKVFWNpBSqrhyahjLTY4FYYomIWFdN3qiaCxpVo5QcEVtWFbRIM-fzvC258-fMhJCor7tK8GyWiuZwuQSIlt7g8pIh7nfC97vmQaVzYFUxmxDDH0o0cab-u4tko5EzLCaEwS2rma_dvPf5gnmW_Nz_HdldWjvvtjys3v2iITI8XlwEhseLy98BAAD__-VuH_c">