The previous rule:
(insert_vector _, (extract_vector X, 0), 0) -> X
is not quite correct. The correct fold should be:
(insert_vector Y, (extract_vector X, 0), 0) -> X where: Y is X, or Y is undef
This commit updates the pattern.
| Paths 
 |  Differential  D102699  
[InstSimplify] Properly constrain {insert,extract}_subvector intrinsic fold ClosedPublic Authored by joechrisellis on May 18 2021, 9:57 AM. 
Details Summary The previous rule: (insert_vector _, (extract_vector X, 0), 0) -> X is not quite correct. The correct fold should be: (insert_vector Y, (extract_vector X, 0), 0) -> X where: Y is X, or Y is undef This commit updates the pattern. 
Diff Detail 
 Event TimelineComment Actions LGTM, but I missed the issue on the first iteration so please wait for a second accept. This revision is now accepted and ready to land.May 19 2021, 7:52 AM Closed by commit rG5a476987f7d6: [InstSimplify] Properly constrain {insert,extract}_subvector intrinsic fold (authored by joechrisellis).  ·  Explain WhyMay 21 2021, 3:05 AM This revision was automatically updated to reflect the committed changes. 
Revision Contents 
 
Diff 346973 llvm/lib/Analysis/InstructionSimplify.cpp
 llvm/test/Transforms/InstSimplify/insert-vector.ll
 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||