SWDEV-470698 - fix formatting, add format check workflow (#657)

This commit is contained in:
Danylo Lytovchenko
2025-08-20 16:28:06 +02:00
committed by GitHub
parent 5840940caa
commit f7338717ae
1574 changed files with 162972 additions and 199346 deletions
+24 -33
View File
@@ -33,10 +33,9 @@
// Functions defined in devhcprintf.cpp
namespace amd {
void handlePrintfDelayed(const uint64_t* input, uint64_t len, uint64_t control);
bool populateFormatStringHashMap(
const std::vector<device::PrintfInfo> &printfInfo,
std::map<uint64_t, std::string> &strMap);
} // namespace amd
bool populateFormatStringHashMap(const std::vector<device::PrintfInfo>& printfInfo,
std::map<uint64_t, std::string>& strMap);
} // namespace amd
namespace amd::pal {
@@ -264,8 +263,7 @@ size_t PrintfDbg::outputArgument(const std::string& fmt, bool printFloat, size_t
const unsigned char* argumentStr = reinterpret_cast<const unsigned char*>(argument);
amd::Os::printf(fmt.data(), argumentStr);
// copiedBytes = strlen(argumentStr)
while (argumentStr[copiedBytes++] != 0)
;
while (argumentStr[copiedBytes++] != 0);
}
}
@@ -282,8 +280,7 @@ size_t PrintfDbg::outputArgument(const std::string& fmt, bool printFloat, size_t
const char* str = reinterpret_cast<const char*>(argument);
amd::Os::printf(fmt.data(), str);
// Find the string length
while (str[copiedBytes++] != 0)
;
while (str[copiedBytes++] != 0);
} break;
case 1:
amd::Os::printf(fmt.data(), *(reinterpret_cast<const unsigned char*>(argument)));
@@ -291,9 +288,9 @@ size_t PrintfDbg::outputArgument(const std::string& fmt, bool printFloat, size_t
case 2:
case 4:
if (printFloat) {
const float fArg = size == 2 ?
amd::half2float(*(reinterpret_cast<const uint16_t *>(argument))) :
*(reinterpret_cast<const float *>(argument));
const float fArg = size == 2
? amd::half2float(*(reinterpret_cast<const uint16_t*>(argument)))
: *(reinterpret_cast<const float*>(argument));
static const char* fSpecifiers = "eEfgGa";
std::string fmtF = fmt;
size_t posS = fmtF.find_first_of("%");
@@ -330,13 +327,13 @@ size_t PrintfDbg::outputArgument(const std::string& fmt, bool printFloat, size_t
hhFmt.erase(hhFmt.find_first_of("h"), 2);
amd::Os::printf(hhFmt.data(), *(reinterpret_cast<const unsigned char*>(argument)));
} else if (hlModifier) {
amd::Os::printf(hlFmt.data(), size == 2 ?
*(reinterpret_cast<const uint16_t *>(argument)):
*(reinterpret_cast<const uint32_t *>(argument)));
amd::Os::printf(hlFmt.data(),
size == 2 ? *(reinterpret_cast<const uint16_t*>(argument))
: *(reinterpret_cast<const uint32_t*>(argument)));
} else {
amd::Os::printf(fmt.data(), size == 2 ?
*(reinterpret_cast<const uint16_t *>(argument)):
*(reinterpret_cast<const uint32_t *>(argument)));
amd::Os::printf(fmt.data(),
size == 2 ? *(reinterpret_cast<const uint16_t*>(argument))
: *(reinterpret_cast<const uint32_t*>(argument)));
}
}
break;
@@ -409,8 +406,7 @@ void PrintfDbg::outputDbgBuffer(const device::PrintfInfo& info, const uint32_t*
}
break;
} else if (pos < str.length()) {
outputArgument(sepStr, false, ConstStr,
str.substr(pos).data());
outputArgument(sepStr, false, ConstStr, str.substr(pos).data());
}
} while (posStart != std::string::npos);
@@ -477,8 +473,7 @@ void PrintfDbg::outputDbgBuffer(const device::PrintfInfo& info, const uint32_t*
outputArgument(sepStr, false, ConstStr, Separator);
// Output the next element
outputArgument(elementStr, printFloat, elemSize,
&t[k + e * elemSize]);
outputArgument(elementStr, printFloat, elemSize, &t[k + e * elemSize]);
}
i += (amd::alignUp(info.arguments_[j], sizeof(uint32_t))) / sizeof(uint32_t);
}
@@ -643,12 +638,11 @@ bool PrintfDbgHSA::output(VirtualGPU& gpu, bool printfEnabled,
// Populate string map with hashes and actual
// format strings.
if(!amd::populateFormatStringHashMap(printfInfo, StrMap))
return false;
if (!amd::populateFormatStringHashMap(printfInfo, StrMap)) return false;
while (sbt < copySize) {
auto controlDword = *BufferForHIP++;
uint64_t nextOffset = controlDword >> 2;
uint64_t nextOffset = controlDword >> 2;
if (sbt + nextOffset > bufSize) {
break; // Need new portion of data in staging buffer
@@ -670,25 +664,22 @@ bool PrintfDbgHSA::output(VirtualGPU& gpu, bool printfEnabled,
BufferLen = ArgsLen + amd::alignUp(StrLenWithNull, sizeof(uint64_t));
PBuffer.resize(BufferLen);
memcpy(PBuffer.data(), Str.c_str(), StrLenWithNull);
memset(PBuffer.data() + Str.size(), 0, 8 - (StrLenWithNull % 8 ));
memcpy(PBuffer.data() + amd::alignUp(StrLenWithNull, sizeof(uint64_t)),
PB, ArgsLen);
}
else {
memset(PBuffer.data() + Str.size(), 0, 8 - (StrLenWithNull % 8));
memcpy(PBuffer.data() + amd::alignUp(StrLenWithNull, sizeof(uint64_t)), PB, ArgsLen);
} else {
// Process Non constant format string case.
// Here, The buffer itself contains the actual
// format string and hence just copy the contents
// of format string and arguments into a temporary
// buffer
BufferLen = nextOffset - /*ControlDWord*/4;
BufferLen = nextOffset - /*ControlDWord*/ 4;
PBuffer.resize(BufferLen);
memcpy(PBuffer.data(), BufferForHIP, nextOffset);
}
// Handle printing
amd::handlePrintfDelayed((uint64_t*)PBuffer.data(), BufferLen / 8,
controlDword);
BufferForHIP += (nextOffset / 4) - /*ControlDWord*/1;
amd::handlePrintfDelayed((uint64_t*)PBuffer.data(), BufferLen / 8, controlDword);
BufferForHIP += (nextOffset / 4) - /*ControlDWord*/ 1;
sbt += nextOffset;
}