SLP vectorizer compile-time reproducer (x86_64, -mcpu=haswell; same with the default CPU).
-
keccak-round-reduced.ll: 333 lines, llvm-reduce output, one loop with 26 PHIs and xor/fshl chains. SLP vectorizes nothing in it and executes ~0.5e9 instructions. -
absorb-pre-slp.ll: the original function as it reaches the SLP pass at -O3 (dumped with-print-before=slp-vectorizer). -
absorb-unopt.ll: the original function before any optimization.opt -passes=slp-vectorizer -mcpu=haswell -time-passes keccak-round-reduced.ll -o /dev/null opt -passes=slp-vectorizer -mcpu=haswell -time-passes absorb-pre-slp.ll -o /dev/null opt -O3 -mcpu=haswell -time-passes absorb-unopt.ll -o /dev/null