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

    <tr>
        <th>Summary</th>
        <td>
            SLPVectorizer is non-deterministic after 44dc1e0baae7c4b8a02ba06dcf396d3d452aa873
        </td>
    </tr>

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

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

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

<pre>
    ```
$ cat /tmp/a.ll
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.AVComplexFloat = type { float, float }

define void @fft7(ptr noundef %0, ptr noundef %1, ptr %2) #0 {
  %.sroa.1.0.copyload = load float, ptr null, align 4
  %4 = load float, ptr null, align 4
  %5 = load ptr, ptr null, align 8
  %6 = getelementptr inbounds %struct.AVComplexFloat, ptr %5, i64 6
  %7 = load float, ptr %6, align 4
  %8 = fsub nsz float 1.000000e+00, %7
  %9 = fadd nsz float 1.000000e+00, %7
  %10 = getelementptr inbounds %struct.AVComplexFloat, ptr %5, i64 6, i32 1
  %11 = load float, ptr %10, align 4
  %12 = fadd nsz float 1.000000e+00, %11
  %13 = ptrtoint ptr %2 to i64
  %14 = trunc i64 1 to i32
  %15 = bitcast i32 1 to float
 %16 = getelementptr inbounds %struct.AVComplexFloat, ptr %5, i64 5
  %17 = load float, ptr %16, align 4
  %18 = fadd nsz float 1.000000e+00, %17
  %19 = getelementptr inbounds %struct.AVComplexFloat, ptr %5, i64 4, i32 1
  %20 = load float, ptr %19, align 4
  %21 = fsub nsz float 1.000000e+00, %20
  %22 = fadd nsz float 1.000000e+00, %20
  %23 = fmul nsz float %9, 0.000000e+00
  %24 = fmul nsz float 0.000000e+00, 0.000000e+00
  %25 = fsub nsz float %23, 0.000000e+00
  %26 = fmul nsz float %18, 0.000000e+00
  %27 = fsub nsz float %25, %26
  %28 = fmul nsz float %12, 0.000000e+00
  %29 = fsub nsz float %28, 0.000000e+00
 %30 = fmul nsz float %22, 0.000000e+00
  %31 = fsub nsz float %29, %30
 %32 = fmul nsz float %21, 0.000000e+00
  %33 = fadd nsz float %32, 0.000000e+00
  %34 = fadd nsz float %33, 0.000000e+00
  %35 = fmul nsz float %8, 0.000000e+00
  %36 = fadd nsz float %35, 0.000000e+00
  %37 = fadd nsz float %36, 0.000000e+00
  %38 = fsub nsz float %27, %34
 store float 0.000000e+00, ptr null, align 8
  %39 = fadd nsz float %31, %37
  %40 = fadd nsz float 1.000000e+00, %38
  store float %40, ptr %0, align 4
  %41 = fadd nsz float 1.000000e+00, %39
  %42 = getelementptr inbounds %struct.AVComplexFloat, ptr %0, i64 0, i32 1
  store float %41, ptr %42, align 4
  ret void
}

attributes #0 = { alwaysinline nounwind null_pointer_is_valid ssp uwtable "min-legal-vector-width"="0" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "tune-cpu"="generic" }

$ opt -p slp-vectorizer -S /tmp/a.ll -o /tmp/b.ll
$ md5sum /tmp/b.ll
# is not deterministic
```

I bisected this to https://github.com/llvm/llvm-project/commit/44dc1e0baae7c4b8a02ba06dcf396d3d452aa873

@alexey-bataev can you take a look?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysV19v4ygQ_zTkBTnCg__lIQ_tVpFOuoeTVtrXCtvjlCsGC3Cb9tOfwEnq7MZRVrdt5Y5hfvObYcYwCOfkXiNuSf5I8qeVGP2LsVuBYy30q1vVpv3YkoId_9gTYQ8EMtoITwnsfD8Q2Im1UtOUF3aPnrbCCyU-zOgp4U-UAGDSE_6AyQAlI_yBQ3yE1_TyNUhFFh-JPAspVIQ_pFAlXcWOko5DxQleZMn3oAZw4Yq3clB4cuNQFc9Floz6VZt3nSipx0Oy1-MZdYowd96OjV8__Phm-kHhYaeMmKLxHwNSUj7SLgwR-DYJlJRPcxstdlIjfTOypSRjXedLAtXgLdVm1C12lEDOAvynsfQ0RiAHAhtKgLNAONmlYXztrBHrdM3WjRk-lBFtdC0KZ7ei3VGpIAsl95pmMxPZbyPyL8Tg7XX9aqZfRP09elTYo_ZBW-o6ROro0hLPgs-DLIuMFjOj5YLbge-621VEdG6sqXafx2SlaxZ_kMAji1kItmeozYQSbfs7qJT9uZiDwIGmc_PpcvQpux5-CndHkl5w8YgbvPVGan-uSOpNcHCuOZWSt6Nuou9p1OEw15mKp5a-Ec5PgQWtKYpJL6j9sZrJ5-Q3iiZdqJq0un_ZLipg86ciyK5VALAboWyuhwLp3V8AsDnu_sq5xE2V0_WjmuHCNxW02SV-BsuuwdgvdMsG8mtxRodu44oFf9PqNq5c4stPyzLfuaBaooHbNJslmmX3COScLdDBbTp-tVqiH8eo-JwFlljS2yz8Wm1Fg7dx2RLudo55vuDn7RTzYokuv40rl3DFbdzVwyrW2mnxT1-288bi4kdy-2TmV0-3mPwTzXxPy9jdGwE_08z9izZmO9XCUZWl9_Ns5jj4n3suO-257Jc99-cw5t1ZBlfisOhj03fsBS-bQuG9lfXo0R27utCWlo9UqHfx4aRWoWUMveC71G1M4PMQTl-0z9I9vwklW-rcQMd3L-rQ1gL0UicK90Ilb9h4Y5N32fqX0NDyJwLASNjGAbRJYqffJp9ojUu6IenFTM_bEb9UvRXDIPV-Ucd50bwmgzV-Iq3HrkObOPmJZ_XqqDt14kkzjOepQ1UkRXY536Hwo0V3ViLw2PTmjcC3IB2qSegOzk5S3x8mwTk8C3CW-CQdqvLEM2q88GKPGq1s4vRlnsIVxwyeJgN1ajiurPxES5Pvl_cempivgfp8EQoG-jZ3Y399llPpqDaetujR9lJL52VznP3puhWff9FaOmw8ttS_SBd6pxfvB0f4A4Edgd1e-pexXjemJ7BT6u30LyTpX2w8gV1j-l4GIcvaJkVWC4Flk9WVYFALVrRNxzdFy9ssByGqkl8sScaEwgN-JLXwAt9oIzT9MCP14hWpoMqYV8J3q3bL2w3fiBVu05JxxlOWFauXbSuqvMSmzcu8KnCDedrlRY1FCU38XcktMOApAGMsYNYd51DmbZWJtsWqy0nGsBdSrUNYa2P3K-nciNsy31TlSokalYv3WACN7zROhlznTyu7jUtRj3tHMqak8-7Lipde4fb73__8-EpzzI5OLrJDRefR0nsXbzVatf3tHEWvHYFdjOq_AAAA__98nU5z">