Skip to content

Commit 5f1fbf3

Browse files
committed
feat(AsmPrinter): Add support for emitting prefetch target symbols
1 parent cea8aa4 commit 5f1fbf3

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

llvm/lib/CodeGen/BasicBlockSectionsProfileReader.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,39 @@ Error BasicBlockSectionsProfileReader::ReadV1Profile() {
323323
}
324324
continue;
325325
}
326+
case 'i': { // Prefetch hint specifier.
327+
// Skip the profile when we the profile iterator (FI) refers to the
328+
// past-the-end element.
329+
if (FI == ProgramPathAndClusterInfo.end())
330+
continue;
331+
assert(Values.size() == 2);
332+
SmallVector<StringRef, 2> PrefetchSiteStr;
333+
Values[0].split(PrefetchSiteStr, '@');
334+
assert(PrefetchSiteStr.size() == 2);
335+
auto SiteBBID = parseUniqueBBID(PrefetchSiteStr[0]);
336+
if (!SiteBBID)
337+
return SiteBBID.takeError();
338+
unsigned long long SiteBBOffset;
339+
if (getAsUnsignedInteger(PrefetchSiteStr[1], 10, SiteBBOffset))
340+
return createProfileParseError(Twine("unsigned integer expected: '") +
341+
PrefetchSiteStr[1]);
342+
343+
SmallVector<StringRef, 3> PrefetchTargetStr;
344+
Values[1].split(PrefetchTargetStr, '@');
345+
assert(PrefetchTargetStr.size() == 3);
346+
auto TargetBBID = parseUniqueBBID(PrefetchTargetStr[1]);
347+
if (!TargetBBID)
348+
return TargetBBID.takeError();
349+
unsigned long long TargetBBOffset;
350+
if (getAsUnsignedInteger(PrefetchTargetStr[2], 10, TargetBBOffset))
351+
return createProfileParseError(Twine("unsigned integer expected: '") +
352+
PrefetchTargetStr[2]);
353+
FI->second.PrefetchHints.push_back(
354+
PrefetchHint{{*SiteBBID, static_cast<unsigned>(SiteBBOffset)},
355+
PrefetchTargetStr[0],
356+
{*TargetBBID, static_cast<unsigned>(TargetBBOffset)}});
357+
continue;
358+
}
326359
case 't': { // Prefetch target specifier.
327360
// Skip the profile when we the profile iterator (FI) refers to the
328361
// past-the-end element.

0 commit comments

Comments
 (0)