mirror of
https://git.freebsd.org/ports.git
synced 2025-04-30 02:26:38 -04:00
Merge commit e8305c0b8f49 from llvm git (by Simon Pilgrim) [X86] combineX86ShuffleChain - don't fold to truncate(concat(V1,V2)) if it was already a PACK op Fixes #55050 PR: 264480 MFH: 2022Q2 Sponsored by: DARPA, AFRL
15 lines
874 B
C++
15 lines
874 B
C++
--- llvm/lib/Target/X86/X86ISelLowering.cpp.orig
|
|
+++ llvm/lib/Target/X86/X86ISelLowering.cpp
|
|
@@ -36201,7 +36201,11 @@
|
|
(RootVT.is128BitVector() && Subtarget.hasVLX())) &&
|
|
(MaskEltSizeInBits > 8 || Subtarget.hasBWI()) &&
|
|
isSequentialOrUndefInRange(Mask, 0, NumMaskElts, 0, 2)) {
|
|
- if (Depth == 0 && Root.getOpcode() == ISD::TRUNCATE)
|
|
+ // Bail if this was already a truncation or PACK node.
|
|
+ // We sometimes fail to match PACK if we demand known undef elements.
|
|
+ if (Depth == 0 && (Root.getOpcode() == ISD::TRUNCATE ||
|
|
+ Root.getOpcode() == X86ISD::PACKSS ||
|
|
+ Root.getOpcode() == X86ISD::PACKUS))
|
|
return SDValue(); // Nothing to do!
|
|
ShuffleSrcVT = MVT::getIntegerVT(MaskEltSizeInBits * 2);
|
|
ShuffleSrcVT = MVT::getVectorVT(ShuffleSrcVT, NumMaskElts / 2);
|