Replacement for D144903
If we're concatenating freeze(undef) subvector ops with multiple uses then we can't treat them as a wider freeze(undef), but we can replace them with a zero subvector, which is cheap on AVX
Paths 
  |  Differential  D149249  
[X86] Handle multiple use freeze(undef) in LowerAVXCONCAT_VECTORS as zero vectors ClosedPublic Authored by RKSimon on Apr 26 2023, 3:56 AM. 
Details Summary Replacement for D144903 If we're concatenating freeze(undef) subvector ops with multiple uses then we can't treat them as a wider freeze(undef), but we can replace them with a zero subvector, which is cheap on AVX 
Diff Detail 
 Event TimelineThis revision is now accepted and ready to land.Apr 26 2023, 4:00 AM This revision was landed with ongoing or failed builds.Apr 26 2023, 4:33 AM Closed by commit rGee52af74d8e5: [X86] Handle multiple use freeze(undef) in LowerAVXCONCAT_VECTORS as zero… (authored by RKSimon).  ·  Explain Why This revision was automatically updated to reflect the committed changes. 
Revision Contents 
 
Diff 517121 llvm/lib/Target/X86/X86ISelLowering.cpp
 
 llvm/test/CodeGen/X86/avx512-intrinsics.ll
 
 llvm/test/CodeGen/X86/avx512fp16-intrinsics.ll
  | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||