From: Craig Topper Date: Wed, 1 Feb 2012 06:51:58 +0000 (+0000) Subject: Don't create VBROADCAST nodes if any nodes use the chain result from the load. Fixes... X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=a1902a18cd289d9554f5649324c5ad27109586bb;p=oota-llvm.git Don't create VBROADCAST nodes if any nodes use the chain result from the load. Fixes PR11900. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149478 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 90cd3d3b747..2ce883a1700 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -4997,6 +4997,10 @@ static SDValue isVectorBroadcast(SDValue &Op, const X86Subtarget *Subtarget) { if (!ISD::isNormalLoad(Ld.getNode())) return SDValue(); + // Reject loads that have uses of the chain result + if (Ld->hasAnyUseOfValue(1)) + return SDValue(); + bool Is256 = VT.getSizeInBits() == 256; bool Is128 = VT.getSizeInBits() == 128; unsigned ScalarSize = Ld.getValueType().getSizeInBits();