summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorAdam Nemet <anemet@apple.com>2017-03-09 05:48:03 +0000
committerAdam Nemet <anemet@apple.com>2017-03-09 05:48:03 +0000
commit8c83386f89a89ac23f98e585967400c0dbe2b940 (patch)
treeb1a4cf89aa40aa4db7ef0f08d2eedbccd420bbe3 /llvm
parentd82067f83a732749ffdcfa3d3f6abb6e817a5951 (diff)
downloadbcm5719-llvm-8c83386f89a89ac23f98e585967400c0dbe2b940.tar.gz
bcm5719-llvm-8c83386f89a89ac23f98e585967400c0dbe2b940.zip
[SLP] Mark values in Dot that need to be extracted
llvm-svn: 297361
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
index 0aa647d7c07..4e7cefe8ec0 100644
--- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -1024,15 +1024,21 @@ template <> struct DOTGraphTraits<BoUpSLP *> : public DefaultDOTGraphTraits {
DOTGraphTraits(bool isSimple = false) : DefaultDOTGraphTraits(isSimple) {}
- std::string getNodeLabel(const TreeEntry *Entry, const BoUpSLP *) {
+ std::string getNodeLabel(const TreeEntry *Entry, const BoUpSLP *R) {
std::string Str;
raw_string_ostream OS(Str);
if (isSplat(Entry->Scalars)) {
OS << "<splat> " << *Entry->Scalars[0];
return Str;
}
- for (auto V : Entry->Scalars)
- OS << *V << "\n";
+ for (auto V : Entry->Scalars) {
+ OS << *V;
+ if (std::any_of(
+ R->ExternalUses.begin(), R->ExternalUses.end(),
+ [&](const BoUpSLP::ExternalUser &EU) { return EU.Scalar == V; }))
+ OS << " <extract>";
+ OS << "\n";
+ }
return Str;
}
OpenPOWER on IntegriCloud