<div dir="ltr">Greetings all,<div><br></div><div>As you may have noticed, there is a new vector shuffle lowering path in the X86 backend. You can try it out with the '-x86-experimental-vector-shuffle-lowering' flag to llc, or '-mllvm -x86-experimental-vector-shuffle-lowering' to clang. Please test it out!</div><div><br></div><div>There may be some correctness bugs, I'm still fuzz testing it to shake them out. But I expect fairly few of those.</div><div><br></div><div>I don't have any test cases which regress in performance with the new shuffle lowering. I have several which improve by 1-3%, and a couple which improve by 5-10%. YMMV.</div><div><br></div><div>There are still some missing features: AVX2 shuffles, SSE4.1 blends, handling all possible uses of the "mov*" style shuffles. However, as indicated, I don't have any test cases on any micro architectures that are really showing regressions here. It's entirely possible I just don't have access to them, so please help me benchmark!</div><div><br></div><div>Provided there aren't really terrible regressions in performance, I'd like to switch the default in a couple of days and start getting bug reports about what doesn't work yet. I've already talked to a couple of the regular contributors to the x86 backend and they seem pretty happy, so I just wanted to send a wider reaching email in case some folks had a chance to benchmark more.</div><div><br></div><div>Inevitably, there will be some regressions, but they can be handled and fixed like anything else provided they don't cause lots of trouble for folks.</div><div><br></div><div>Thanks,</div><div>-Chandler</div></div>