[all-commits] [llvm/llvm-project] a511b5: [X86][SSE] getFauxShuffleMask - don't decode OR(SH...
Simon Pilgrim via All-commits
all-commits at lists.llvm.org
Wed Apr 21 10:47:32 PDT 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: a511b55cfd67acecc58f1ccf1f3ce5c917dc1d90
https://github.com/llvm/llvm-project/commit/a511b55cfd67acecc58f1ccf1f3ce5c917dc1d90
Author: Simon Pilgrim <llvm-dev at redking.me.uk>
Date: 2021-04-21 (Wed, 21 Apr 2021)
Changed paths:
M llvm/lib/Target/X86/X86ISelLowering.cpp
M llvm/test/CodeGen/X86/shuffle-vs-trunc-256.ll
M llvm/test/CodeGen/X86/vector-shuffle-128-v8.ll
M llvm/test/CodeGen/X86/vector-shuffle-256-v32.ll
M llvm/test/CodeGen/X86/vector-shuffle-combining-sse41.ll
Log Message:
-----------
[X86][SSE] getFauxShuffleMask - don't decode OR(SHUFFLE,SHUFFLE) containing UNDEFs. (PR50049)
PR50049 demonstrated an infinite loop between OR(SHUFFLE,SHUFFLE) <-> BLEND(SHUFFLE,SHUFFLE) patterns.
The UNDEF elements were allowing a combined shuffle mask to be widened which lost the undef element, resulting us needing to use the BLEND pattern (as the undef element would need to be zero for the OR pattern). But then bitcast folds would re-expose the undef element allowing us to use OR again.....
More information about the All-commits
mailing list