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

    <tr>
        <th>Summary</th>
        <td>
            Miscompile after de3445e0
        </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>
    One of our internal test suites had a failure which I bisected to commit de3445e0ef15c420955ad720fccf08473f460443. The test tries to exercise various intrinsics and compares the result generate to an expected result. After the mentioned change, the value produced is no longer the value that is expected. The repro is a little large, but should show the issue.
```c++
extern "C" {
void printf(...);
void sprintf(...);
}
typedef unsigned __v4su __attribute__((__vector_size__(16)));
typedef long __m128i __attribute__((__vector_size__(16)));
__m128i _mm_max_epu32(__m128i __V1, __m128i __V2) {
  return __builtin_elementwise_max((__v4su)__V1, (__v4su)__V2);
}
typedef long __m256i __attribute__((__vector_size__(32)));
template <typename T> T zero_upper(T in, unsigned) { return in; }
void init(char pred, void *data, unsigned size) {
  unsigned char *bytes = (unsigned char *)data;
  for (unsigned i = 0; i != size; ++i)
    bytes[i] = pred + i;
}
char print_tmp[1];
void print(char *msg, void *data, unsigned size) {
  unsigned char *bytes = (unsigned char *)data;
  for (unsigned i = 0; i != size; ++i)
    sprintf(print_tmp + i * 2, "%02x", bytes[size - 1 - i]);
  printf("%s:%s\n", msg, print_tmp);
}
__m256i test17___trans_tmp_8;
__m128i test17___trans_tmp_7, test17___trans_tmp_6, test17___trans_tmp_5,
    test17___trans_tmp_4, test17_id3723, test17_id3728, test17_id3733,
    test17_id3736, test17_id3739, test17_id3741, test17_id3742, test17_id3744,
    test17_id3746;
void test17() {
  init(139, &test17_id3723, sizeof(test17_id3723));
  __m128i id3720 = _mm_max_epu32(test17_id3723, test17_id3728), id3731;
  init(240, &id3731, sizeof(id3731));
  __m128i descriptor = id3731;
  unsigned index(id3731[0]);
  if (index > 4 || id3731[0] && index)
    descriptor &= 8;
  test17___trans_tmp_4 = __builtin_ia32_extrq(id3720, descriptor);
  init(13, &test17_id3733, sizeof(test17_id3733));
  for (char id3734_idx = 0; id3734_idx < 78; ++id3734_idx) {
    init(16, &test17_id3736, sizeof(test17_id3736));
    init(80, &test17_id3739, sizeof(test17_id3739));
    for (char id3740_idx = 0; id3740_idx < 122; ++id3740_idx) {
      init(17, &test17_id3741, sizeof(test17_id3741));
      test17_id3739 -= test17_id3741;
    }
    init(119, &test17_id3742, sizeof(test17_id3742));
    for (char id3743_idx = 0; id3743_idx < id3734_idx; ++id3743_idx) {
      init(8, &test17_id3744, sizeof(test17_id3744));
      test17_id3742 *= test17_id3744;
    }
    test17___trans_tmp_5 =
        __builtin_ia32_pshufb128(test17_id3739, test17_id3742);
    init(192, &test17_id3746, sizeof(test17_id3746));
    test17___trans_tmp_6 =
        __builtin_ia32_pmaddwd128(test17___trans_tmp_5, test17_id3746);
    test17___trans_tmp_7 =
        __builtin_ia32_pavgb128(test17_id3736, test17___trans_tmp_6);
    test17_id3733 += test17___trans_tmp_7;
  }
  int id3732(__builtin_ia32_vec_ext_v8hi(test17_id3733, 0));
  __m128i id3718(__builtin_ia32_vec_set_v8hi(test17___trans_tmp_4, id3732, 4));
  test17___trans_tmp_8 = __builtin_shufflevector(id3718, id3718, 0, 1, 1, 1);
  __m256i id3717(zero_upper(test17___trans_tmp_8, 8));
  long id3716(__builtin_ia32_vec_ext_v4di(id3717, 1));
  print("", &id3716, sizeof(id3716));
}
int main() { test17(); }
```
Compile with `clang++ -O2 -march=btver2 repro.cpp -o test.elf`. And then run the produced binary and inspect the output that it generates.
```
$ ./test.good.elf
:0000000000009c04
$ ./test.bad.elf
:9a99989796959c04
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzVWMlu4zgQ_Rr5QsQQF20HH9LONDCHQV-CuQq0RNkcaBuKcpL--ilSi7Umjb5NIEcSi_X4-FgskrpU6cfpRylQlaGqVUiWWqiS50iLRqOmlXBHN54ijjIu81YJ9HaTyQ39iS6yEYkWKdIVSqqikBqlgjLmCVdk2EsYcSPP42lA3CxJMjdkAc2Y7zJGj-j1JromtJLQAkCId6ESgER3rmTVNoaKkmUjkwbxMjVN1FyZuuAK9zbX6CpKobgWxp-XAFF3jDrzET1n0BvrUIhSy6oEW3Lj5VU45GzL7zxvBapVlbYJGGWDygrlFdRQE7u-cW1sQwMdfyXAzxRzlEutc4FyrjroSwvi3ao2T83tzULJpmnF0XFfHPfZ8d3uShzyzVy2VLwb8ZFDyBl-yAn68nslU-AIgmQOCY_Ho0Mih06NzZ7VCV66B_1Ri1RkqAVFr0aHOL6zpoUb16AzEBZxDP5wgQV6Wam4kT-7QuwbzO4akAdAIxagFJiE8vfRRoCiiAv-Hou6pcR6D8B_YyPs5B3M0UMjBMOhW1Avji-tzLUsY5ELM-xvEFQGc6QD3QbXAXFRRj5Vb-gs8fxf7CwlG9KJos5N2Dr0bJBLXgj06tA_0Cv6KVQVt3UtFDi_wiQwHIdB63s8dBWM9BsaSdpIkKXU4AlRriBkjMsZWYNDnlOu-RQOGZYLFUebRQCny4dJAQ59MUqtrOBtUekIkFVqVlNaX9cwhUeCzZtt11C3wS-NNr03QrY9x4NS78W6ml6Ymkiux6XvJsR-rIsavDB4zaeGtQ6KAOOiuf7vNHlM77GvnSKmOUS6MIab55J3-3AeZTSw6Alh-BlFp2GIHjml824c-mxv3rnsYXq1HhJvzY5hQpiEjoM4jrXiZWOqx-Fqhm9UCmw2Xpf7O-UelD_E2ajAJo4ypQGhy4JwUUDpFqa1-Muq0aKA4WUBWRawPXTmz6O1M9kRmYVgP61x17hD_FXvzEBXZiwXlmg-5MMwWLNr43CZc78SzlKwSuAJcM-QMLdn2NeYUhuKdjilokmUrLWZLcBr1cRj_pSpeH_ged_cVWjLzMw4WxGZzMpAzTNcaOZjeMI1AE6m3JQL1AE64QR9K-Y6LcfVR3JKYljR1b89UWKFeeAu-A4DvB5fuju-dD2-faqxuchWYVDzfZJvpmVnFISTnDOaFsH3YOdvsPN32fkrdiNS6G4gRbtIyxXUIC17ytx1T8eyM8KQ0GZd7Wyrrj46G6wpMrxHka3DeplIIvRkyM2dptXHhDplgTdmfJdgNmmQX1GKbihFR6UmcTAXjH4uWLhBlO0SZV_pxYhdTBeKsX3FtlYK08kpPlrO0Lq5tdkF293bp0me7EQyjshGv3cnBduaFFtr39fMC56mb-mM-nKVRKuWv2g2-LpZfr9u6LW3Vu812qUvG12PEZ5vCh5ek2GGfUgXoN3pYEYN9t4m48b38CbXifIMwf7ZaojDbcRGLBFXW42B0Bmto3prU7RYKkwIZrnojg79aoHDAbh7svkST_8t-mF3YLa-2T7MjhGb-zIACVdk7fnGgvifyMtSObAMRjLrjeWwrySTDQH2VxsCvJwR42ibsS64OQIN26HZ_mh2-BlP1N3ruSpqCSfyN6lvyJyzczj1d6kMPf0g6KngKrnBMFz0XSjSneWPSV2jp8o2chR5Bn5H9Fym5vheItWW9hw_fiy4yJKrD_txQpaN-TJg7VWr61b33wwe3yia5dG_fyUMwYn9u23zWlWpbbgz0Wd38hclLtvwufC5S8SjKAqjIPIjb-Iyb_UgTtj3qRdRN_QP6YmmEY34QUudi9Nfskl6-bj9gDJ81jm0Kj_dtK67g8J3uK6gb3s5Qn14yfP7cHsClf4BReDVfvdo4MELQoIPt5OH_cz3hYBZyS6U4SgSNOBhKoIwTRnjh5xfRN6cYI8GwVOKt-7TiQkk7-UgT8QlxI1whCnGxD9iJgglgpBA8EykqcNcAVGTHw2PY6WuB3WylC7ttQFjLhvdPIy8sZtKYZsDfN7qW6VO6UdbXg-24ZMl_h8PkotI">