From 9cdb8bdf0421c230024995f8eb4efc890e8e7f88 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Wed, 1 Feb 2012 06:51:58 +0000 Subject: [PATCH] Don't create VBROADCAST nodes if any nodes use the chain result from the load. Fixes PR11900. llvm-svn: 149478 --- llvm/lib/Target/X86/X86ISelLowering.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 90cd3d3b747b..2ce883a17007 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/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(); -- GitLab