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

    <tr>
        <th>Summary</th>
        <td>
            Bad codegen after commit 3aae916
        </td>
    </tr>

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

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

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

<pre>
    We have an internal test that recently started producing incorrect output which I bisected back to commit 3aae916ff7fe9d0953aa63b2ba1d0e871f6f76fc.

Consider the following code:
```c++
static void init(unsigned char pred, volatile void *data, unsigned size) {
  unsigned char *bytes = (unsigned char *)data;
  for (unsigned i = 0; i != size; ++i) {
    bytes[i] = pred + i;
 }
}
#define INIT(PRED, VAR) init(PRED, &VAR, sizeof(VAR))

#include <x86intrin.h>

int main(int argc, char *argv[])
{
      __m256 id7702;
      INIT(243, id7702);
 __m256 id7701 = _mm256_sqrt_ps(id7702);
  volatile int id7700 = _mm256_movemask_ps(id7701);
  //printf("id7700:%x\n", id7700);
 return id7700;
}
```
If compiled with optimizations and `-mavx` and the resulting binary is run, the return value changes after 3aae916ff7fe9d0953aa63b2ba1d0e871f6f76fc:
```
$ ~/src/upstream/3aae916ff7fe9d0953aa63b2ba1d0e871f6f76fc-linux/bin/clang -O2 -mavx repro.cpp -o repro.bad.out
$ ~/src/upstream/f658d84e01bcdd49e27dc9ef80e1a6cc5f9417fe-linux/bin/clang -O2 -mavx repro.cpp -o repro.good.out
$ ./repro.good.out 
$ echo $?
7
$ ./repro.bad.out 
$ echo $?
0
```

You can also see the difference on godbolt comparing with 18.1.0:
https://godbolt.org/z/KPbK4jcGc
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVU1v4zYT_jX0ZRBDGn0ffEji1YtggbeLRdGip4AiRxJ3JVIlKSfZQ397QdqJ7c2i3RqETHJmnvl6BuTOqUET7Vhxx4r9hq9-NHYnX1Y9bDojX3a_E4z8QMA1KO3Jaj6BJ-fBj9yDJUHaTy_gPLeeJCzWyFUoPYDSwlhLwoNZ_bJ6eBqVGOEBOuVIBN2Oi6_gDQgzz8pDxjk1adn3VU-NTJoi47zMOux4KhOqq7Qv-6rsxZYle5bcHr_3RjslyYIfCXozTeYpOBdGEstOOqxMjkswvAsr3jrPvRJwMEqC0sozrFcdqyFBjNzCYkkyvIeDmbhXEx1VGd5K7nkQvKk79Y0YNsCqEzbANRTD2-7FkwOW7eGdI4a3DJuImr0B9MZeaapom7DsLmwxDafoN7uDY1rquxAAok9W3ClW7KN5SClogzp7YtX-VKa3DWaSeqUJHv7_8CvD-tPnD_uQ8G-3n4OPU7VebxmWUXAf4zE9w_qoGNZFqxhmSotplQQsu3-uS6W9VXo7suzDpZ7SHmauNMM6bLkdRAB_LRW3w-HI1jP-ZdIAj48zFiUoWVUJXpQ0_E4ZYZ4FzJMKNmetS-M0Fu1xDjeP7k_rHxcXonpvdSZJCDkqJJfGsznQzN3XC4D0GoBhy7BdrNI-VJAhHlECi7F4ZsW9ZohvQSdX1pb8avWr5PX63NDXATgeH_owcouaSMKT8iOYxatZfeNeGe2AawmsTG5mfnhmZRLPYbosuXXyYbo6pbl9AeXArjqEdBTHGA58Wik0Sw_kgPee7E9P9vuJfWVODn8xbJ0VDNt1cd4Snxm2Pwt8Mym9PjNsu0CrVkxcD3DzC0JMEiwt1mzFssCNOR06Lrdm9f_ivy-LWtY5JWknpMwbwkqKhvo6oZSXQhR9k6dVT__d_2DMdwFsGbbXMjgLSYwGGOYsa4-X1Y8MT0n9k13y4wbE7x9mBcE18MkZcESx7VL1PVnSgsBoGIzszOQjv7gNXIkES-ttuk3e2jt6v7hI7MD5k83W2IFh-41h-_FT9zH_Iv4nNnKXySZr-IZ2aZUWVZEkTbUZd2meiYqk4LJsKiSZlpRjzbHsQ9MT3KgdJpgnRVokRZoX1bauOW_KquS8QeQ9sTyhmatpO02HOfjeKOdW2jWIabWZeEeTi68ioqYniMIwgMV-Y3fB5qZbB8fyZFLOuzOKV36i3R2X8Q0aSJ9m4PqR26x22n1XBuXHtdsKE4gV4E5_N4s1X0h4hm0MwjFsY5B_BwAA___aAkhf">