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

    <tr>
        <th>Summary</th>
        <td>
            Assertion `Mask.size() == TpNumElts && "Expected Mask and Tp size to match!"' failed, since "[SLP]Improve costs in computeExtractCost()"
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:AArch64,
            vectorization
      </td>
    </tr>

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

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

<pre>
    Since 019aee832768b0704048905cd8ce20299e7e0b25 (where the change was relanded) or the original 59a67ea35d608480257fc64ec3e5106ef50de740, the following snippet triggers failed asserts for the aarch64 targets:
```c
int b; 
int *c; 
void d(double *e, double *i, double *l) { 
  for (int f = 0; f < 3; f++)
    for (int g = 0; g < 3; g++) {
 e[f * 3 + g] = 0.;
      for (int h = 0; h < 3; h++)
        e[f * 3 + g] += i[f + h] * l[h * 3 + g];
    }   
}       
void p() {
 double j[] = {149.68500, 29.07000, 43.02765, 84.47235, 20.73466};
  double k[] = {257.00392, 0.00000,   360.31950, 257.00392, 88.44438,
 183.53583, 257.00392, 455.41095, 0.00000},
         n[9], o[9];
 double a = b / 255.;
  double m[] = {a, a * b, a, a * b, b};         
 d(n, m, k);
  d(o, j, n);                           
  for (int f = 0; f < 9; f++)
    c[f] = o[f];                        

```
Compiled like this:
```
$ clang -target aarch64-linux-gnu -c extract-reduced.c -O2 -funsafe-math-optimizations
clang: ../lib/Target/AArch64/AArch64TargetTransformInfo.cpp:3565: llvm::InstructionCost llvm::AArch64TTIImpl::getShuffleCost(llvm::TargetTransformInfo::ShuffleKind, llvm::VectorType*, llvm::ArrayRef<int>, llvm::TargetTransformInfo::TargetCostKind, int, llvm::VectorType*, llvm::ArrayRef<const llvm::Value*>): Assertion `Mask.size() == TpNumElts && "Expected Mask and Tp size to match!"' failed.
```

CC @alexey-bataev 

I'd like to revert this change if it takes long to fix.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8VltvrDgM_jWZl2hQcAiXh3mYS0eq9qo91XkPwUBaIIiEnvb8-lXCzKHT065W-7BoxNixv8-OcQzSWt0MiDsiDkScNnJ2rZl2vXVmso9mU5rqdfdFDwopiwuJmHPI0rxkGUtYkhdMqCpXCAyKAjNkJQhKIP_W4oTUtUhVK4cG6Tdp6YSdHCqsCBTUTMFqJt3oQXZUFDLNUHJRpSxPcgYiq1WaoOIoYpZiLViFWcIIHAOwNl1nvumhoXbQ44iOukk3DU6W1lJ3WFFpLU7O0voSSspJtWlCnZwadJbwPWEnwvYkZctPLboeHC0JP9BVJbBX68qz0RWtCOSVmcsOvRV9Wquqb9XOb5hkVzwNKRHIPXVNCT9R5tm9eKQ8iAQO4VdcITegZgU1K6j5AfLBLkAk4lD7JCinBLyTOC3oiPDDyn7D36787crffpCUvz4OAQfPoS82jw6re9oRcWjfud-kQrKTvy8PJ8j0hx5qPxLIb3d5qfXj0sQhe5Id4qSI0lyw0DRQRCxji5zwiEGWCi_nSZRkwIMMLMp4kqYke5vRhfzplhxEFjHGC_BAFjF24aaUpyzicSGWsG_d8jxKkoTnBI4X8jjnkeAi5z_5JkJEScwK8ZY_O63Q6zUQcSh8DeFIzVXm7yojQ9olJXCmIET08_b62-1JTyfDYyqD-E4vlxr9yOIajkA-eHvvb0--V95EIpAbv_7ob8NipJ9f_-a4FJ8dF-U777ohc1H-Id7ab-_GwqIeTT-GsdLpJz_Y9AcD5KJCQlUnh4Zul1FznTzbTg_zy7YZZrpVFF_cJJXbTljNCqtI0e0fQLf1PFhZ47aXrt2a0elef5dOm8Eu7IGZ8D2NIgLnTpcEzg8hDIHzfh8CrdJieZjkYGsz9fdDbSI1joTvuUiFp-m6597vhO_vB-umWflYR2PdG8uV7OH-vh-7Za1B96Wd67pD70wgX90_CLoYLoBf9FD5BlgRX1E5Mz28jkhgf2vaT5N8_Qtrwo96cITf3Zo_jbUYfG7XcB7-H6IqM9wU46vs5gDwqRS-hPvwotFmoCRlv0n7FFn9Ha8zip98Az6Mv8_9XecsJZASSCkBuHsZUTmsqMdQOVT0YaQeSp2hvXSqJRATAALZ5Z0WfdxwS4MeKUmY7PAFX7eldBKf6Vv7PYHs2r2GTviMkwt9fH1D65pqR518Qks7MzTerdYv0aba8arghdzgLk6LNC54DmzT7qq6YBjXwJNY8EqWsZKpQoUJ8pgldbHRO2DAY8ZiYCJjLMrr2n8rpJUoIU8ASMKwl7qLfHkjMzUbbe2MuzQrON90ssTOhg8TgFKqJxyqtRtDYY4E4Dk8xssp8avitJl2nnFbzo0lCeu0dXaN4bTrcPf_PTXfWjZ8QYXsDl9-_ZOI030_TuYZqTLWWaoHqkw_zg7vlrlwOVW-xQA289TtWufGMHTgTODcaNfOZaRM78eA787lbztO5hGVnwahlpbAOZTz7wAAAP__eLG4zg">