<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">