summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86ISelLowering.cpp
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2018-02-16 14:57:25 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2018-02-16 14:57:25 +0000
commit4e2f757dc100a2bf75b8dc9d6302ebd453b3cd2c (patch)
treeff6b7eb3ef360a1bc57e49d9cb589a9e4ab4fc52 /llvm/lib/Target/X86/X86ISelLowering.cpp
parent6cf41b028d5deaee192d8e9195af2b9a80dea3ed (diff)
downloadbcm5719-llvm-4e2f757dc100a2bf75b8dc9d6302ebd453b3cd2c.tar.gz
bcm5719-llvm-4e2f757dc100a2bf75b8dc9d6302ebd453b3cd2c.zip
[X86][SSE] Allow float domain crossing if we are merging 2 or more shuffles and the root started as a float domain shuffle
llvm-svn: 325349
Diffstat (limited to 'llvm/lib/Target/X86/X86ISelLowering.cpp')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 6df80725002..d90b1397074 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -28747,6 +28747,7 @@ static SDValue combineX86ShuffleChain(ArrayRef<SDValue> Inputs, SDValue Root,
unsigned NumRootElts = RootVT.getVectorNumElements();
unsigned BaseMaskEltSizeInBits = RootSizeInBits / NumBaseMaskElts;
bool FloatDomain = VT1.isFloatingPoint() || VT2.isFloatingPoint() ||
+ (RootVT.isFloatingPoint() && Depth >= 2) ||
(RootVT.is256BitVector() && !Subtarget.hasAVX2());
// Don't combine if we are a AVX512/EVEX target and the mask element size
OpenPOWER on IntegriCloud