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

    <tr>
        <th>Summary</th>
        <td>
            [SLP] Assertion `!Mask.empty() && Reuses.size() == Mask.size() && "Expected non-empty mask."' failed.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            llvm:SLPVectorizer,
            crash
      </td>
    </tr>

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

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

<pre>
    ```
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

define void @main(ptr %0) {
  %.unpack = load double, ptr %0, align 8
  %.elt1 = getelementptr { double, double }, ptr %0, i64 0, i32 1
  %.unpack2 = load double, ptr %.elt1, align 8
  %2 = fadd double %.unpack, 0.000000e+00
  %3 = fsub double 0.000000e+00, %.unpack2
  %4 = fmul double %2, 5.000000e-01
  %5 = call double @llvm.fabs.f64(double %4)
  %6 = fmul double %3, 0.000000e+00
  %7 = call double @llvm.fabs.f64(double %6)
  %8 = fmul double %3, 5.000000e-01
  %9 = call double @llvm.fabs.f64(double %8)
  %10 = fmul double %2, 0.000000e+00
  %11 = call double @llvm.fabs.f64(double %10)
  %12 = fcmp oeq double %5, 1.000000e+00
  %13 = fcmp oeq double %7, 1.000000e+00
  %14 = or i1 %12, %13
  %15 = fcmp oeq double %11, 1.000000e+00
  %16 = or i1 %14, %15
  %17 = fcmp oeq double %9, 1.000000e+00
  %18 = or i1 %16, %17
  %19 = select i1 %18, double 0.000000e+00, double 1.000000e+00
  store double %19, ptr %0, align 8
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fabs.f64(double) #0

; uselistorder directives
uselistorder ptr @llvm.fabs.f64, { 3, 2, 1, 0 }

attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```

```
$ opt -passes=slp-vectorizer reduced.ll -mcpu=skx

opt: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:3530: void reorderReuses(SmallVectorImpl<int> &, ArrayRef<int>): Assertion `!Mask.empty() && Reuses.size() == Mask.size() && "Expected non-empty mask."' failed.
```

CC @alexey-bataev 

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzFVstu6zYQ_Rp5Q0jgw5KlhReOfQMUaIHi3qLbgpIohw1FqXwkcb--Q8p2ZCd2EaBAg0AmxTnnzAyHQ9VDe1gnBT7-412CN46bvXCo5Y4rfhi8QwnboYRSkfYJ24h0pCsMA0bjI0zJ5TSMimV8pPI06MoAIrRMdRkGxQkDaz_gNQhc6DsjRyVO2m9l8QcYev2sh1edKqn9W7rX_oyanq3opBboZZAtSpa451IntBydAY4cJ7RCyephMkXhVeb1yJvnqKIG3qJ28LUSCd2id9AWcSX3GpVzoFCORBj4KpTohXYRsXqYcUwjeLm7ZoS0oGnAKCIfPaJ3XIran7s1wTretmftM2VA4AzHP6B7wHgGZBPQ-voEvDIF8My7GXI5IXuvZpI02OcnhhTPI8wjoOHqHbDESr30Wcdrm3VQMLR8p4JZNUMXn8mxu7GtviZYXAqWNwVvxFd9Ta68lCP4Zj5vBkjI1yQJvtI8lk3Tj2gQf81086BLbuqyW7jVfdxUM4NBkkz6x_IibG6V32In5D59cUW_PNHnc6vVLfrqPnt5xV6c2Fdzq6kKLLSGxp0sy1lP-Hi8jgufC1s3GDFPQfUvPcpACw1t8NgdoQPN2mTCHtCj142Tg0Yb54yFPoz0ECqoDv1QD50RAn7sQTfw4_Wr1C2yo2i8goshePEqlQIVbzTqRT-YA9SYHrQ411YrGsVnXt8qydiWKcPXHnrIngyBt8KgVhrIpHwRdjK4WIx5-EC_jd04HtVYYLFqMLrKBYfwZe2dsNGJ6cIB3H-XjZni5U37-Uu6RMPoUDpyayFatrNqTF8g-MHIvyFYI1rfiDaDw572zeiDxfPbnBHgYT9DOhL6qGQNz98M17YbTG9h8vuJDcY_fv71PDVZM47hXs5ZuKyne9SImOTvwgd3aPmjh7xMkJ_6USVsKzXofYP0xaOwMYYfvovuvBAKAsg2EI6JFRdipeQXbp8z0Y8upGqqAcAXaBLKbHRvWmC7sCsRMH892cMnwLc32AonWtgbnUZK1Afj8HVAV3AfSgUJu7MH222oH67EmzikNWypeEHTykKsSVFUBaMlKRftmrUVq_jCSafEOskfIH1Jvvv_g1t4o9ZPzo3hKMO2wv9euidfZ80Qq-BYDPCTjmb4EyhhKq31YVMf8wpqf_G0Jl3VCdKVrKNdw_iqgv4mxJLjjiyrpuQLxWuhbIgc9CMp21yUUHQrNETaGG6fwjTfLeSaYkoJfOcRnDNGsqZkkNIaV3nXVfmqgPQL-FxTWTzEg9kvzDo6W_u9DWcbDrt9X4SzAe1OxC0I_Ny7p8GsW_y8iDGtY0D_ABAYB2M">