fix: merge hasPrintfCalls and usesPrintf flags within KernelAttributes flags

Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2025-11-03 09:25:44 +00:00
committed by Compute-Runtime-Automation
parent f84a5fbee9
commit ffb1d297c8
13 changed files with 21 additions and 57 deletions

View File

@@ -91,7 +91,7 @@ uint32_t resolveKernelDependencies(const ExternalFunctionInfosT &externalFunctio
const auto &externalFunctionInfo = *externalFunctionInfos.at(funcNameToId.at(kernelDep->usedFuncName));
kernelAttributes.barrierCount = std::max(externalFunctionInfo.barrierCount, kernelAttributes.barrierCount);
kernelAttributes.flags.hasRTCalls |= externalFunctionInfo.hasRTCalls;
kernelAttributes.flags.hasPrintfCalls |= externalFunctionInfo.hasPrintfCalls;
kernelAttributes.flags.usesPrintf |= externalFunctionInfo.hasPrintfCalls;
kernelAttributes.flags.hasIndirectCalls |= externalFunctionInfo.hasIndirectCalls;
kernelAttributes.flags.usesAssert |= externalFunctionInfo.requireAssertBuffer;
kernelAttributes.flags.usesSyncBuffer |= externalFunctionInfo.requireSyncBuffer;
@@ -118,4 +118,4 @@ void DependencyResolver::resolveDependency(size_t nodeId, const std::vector<size
}
resolved.push_back(nodeId);
}
} // namespace NEO
} // namespace NEO

View File

@@ -737,7 +737,7 @@ void populateKernelExecutionEnvironment(KernelDescriptor &dst, const KernelExecu
dst.kernelAttributes.flags.hasSample = execEnv.hasSample;
dst.kernelAttributes.flags.requiresImplicitArgs = execEnv.requireImplicitArgBuffer;
dst.kernelAttributes.flags.hasIndirectCalls = execEnv.hasIndirectCalls;
dst.kernelAttributes.flags.hasPrintfCalls = execEnv.hasPrintfCalls;
dst.kernelAttributes.flags.usesPrintf = execEnv.hasPrintfCalls;
dst.kernelAttributes.flags.usesAssert = execEnv.requireAssertBuffer;
dst.kernelAttributes.flags.usesSyncBuffer = execEnv.requireSyncBuffer;
dst.kernelAttributes.barrierCount = execEnv.barrierCount;
@@ -1394,7 +1394,6 @@ DecodeError populateKernelPayloadArgument(NEO::KernelDescriptor &dst, const Kern
case Types::Kernel::argTypePrintfBuffer:
dst.kernelAttributes.flags.usesPrintf = true;
dst.kernelAttributes.flags.hasPrintfCalls = true;
return populateArgPointerStateless(dst.payloadMappings.implicitArgs.printfSurfaceAddress);
case Types::Kernel::argTypeAssertBuffer:

View File

@@ -144,8 +144,7 @@ struct KernelDescriptor : NEO::NonCopyableAndNonMovableClass {
bool usesAssert : 1;
// 3
bool usesRegionGroupBarrier : 1;
bool hasPrintfCalls : 1;
bool reserved : 6;
bool reserved : 7;
};
std::array<bool, 4> packed;
} flags = {};

View File

@@ -98,7 +98,6 @@ void MockKernelInfo::populatePointerArg(ArgDescPointer &arg, uint8_t pointerSize
void MockKernelInfo::setPrintfSurface(uint8_t dataParamSize, CrossThreadDataOffset crossThreadDataOffset, SurfaceStateHeapOffset sshOffset) {
kernelDescriptor.kernelAttributes.flags.usesPrintf = true;
kernelDescriptor.kernelAttributes.flags.hasPrintfCalls = true;
populatePointerArg(kernelDescriptor.payloadMappings.implicitArgs.printfSurfaceAddress, dataParamSize, crossThreadDataOffset, sshOffset);
}

View File

@@ -290,7 +290,7 @@ TEST_F(ExternalFunctionsTests, GivenValidFunctionAndKernelDependenciesWhenResolv
EXPECT_TRUE(nameToKernelDescriptor["kernel2"]->kernelAttributes.flags.hasRTCalls);
}
TEST_F(ExternalFunctionsTests, GivenValidFunctionAndKernelDependenciesWhenResolvingDependenciesThenSetAppropriateHasPrintfCallsAndReturnSuccess) {
TEST_F(ExternalFunctionsTests, GivenValidFunctionAndKernelDependenciesWhenResolvingDependenciesThenSetAppropriateUsesPrintfFlagAndReturnSuccess) {
addKernel("kernel0");
addKernel("kernel1");
addKernel("kernel2");
@@ -304,15 +304,15 @@ TEST_F(ExternalFunctionsTests, GivenValidFunctionAndKernelDependenciesWhenResolv
addKernelDependency("fun2", "kernel2");
set();
nameToKernelDescriptor["kernel2"]->kernelAttributes.flags.hasPrintfCalls = true;
nameToKernelDescriptor["kernel2"]->kernelAttributes.flags.usesPrintf = true;
auto error = resolveExternalDependencies(extFuncInfo, kernelDependencies, functionDependencies, nameToKernelDescriptor);
EXPECT_EQ(RESOLVE_SUCCESS, error);
EXPECT_TRUE(extFuncInfo[funcNameToId["fun0"]]->hasPrintfCalls);
EXPECT_TRUE(extFuncInfo[funcNameToId["fun1"]]->hasPrintfCalls);
EXPECT_FALSE(extFuncInfo[funcNameToId["fun2"]]->hasPrintfCalls);
EXPECT_TRUE(nameToKernelDescriptor["kernel0"]->kernelAttributes.flags.hasPrintfCalls);
EXPECT_FALSE(nameToKernelDescriptor["kernel1"]->kernelAttributes.flags.hasPrintfCalls);
EXPECT_TRUE(nameToKernelDescriptor["kernel2"]->kernelAttributes.flags.hasPrintfCalls);
EXPECT_TRUE(nameToKernelDescriptor["kernel0"]->kernelAttributes.flags.usesPrintf);
EXPECT_FALSE(nameToKernelDescriptor["kernel1"]->kernelAttributes.flags.usesPrintf);
EXPECT_TRUE(nameToKernelDescriptor["kernel2"]->kernelAttributes.flags.usesPrintf);
}
TEST_F(ExternalFunctionsTests, GivenValidFunctionAndKernelDependenciesWhenResolvingDependenciesThenSetAppropriateHasIndirectCallsAndReturnSuccess) {

View File

@@ -3891,7 +3891,7 @@ TEST_F(decodeZeInfoKernelEntryTest, GivenMinimalExecutionEnvThenPopulateKernelDe
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.hasSample, Defaults::hasSample);
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.usesStatelessWrites, (false == Defaults::hasNoStatelessWrite));
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.hasIndirectCalls, Defaults::hasIndirectCalls);
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.hasPrintfCalls, Defaults::hasPrintfCalls);
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.usesPrintf, Defaults::hasPrintfCalls);
EXPECT_EQ(kernelDescriptor.kernelAttributes.barrierCount, static_cast<uint8_t>(Defaults::barrierCount));
EXPECT_EQ(kernelDescriptor.kernelAttributes.binaryFormat, DeviceBinaryFormat::zebin);
EXPECT_EQ(kernelDescriptor.kernelAttributes.bufferAddressingMode, (Defaults::has4GBBuffers) ? KernelDescriptor::Stateless : KernelDescriptor::BindfulAndStateless);
@@ -5818,7 +5818,6 @@ TEST_F(decodeZeInfoKernelEntryTest, GivenArgTypePrintfBufferWhenOffsetAndSizeIsV
ASSERT_EQ(32U, printfSurfaceAddress.stateless);
EXPECT_EQ(8U, printfSurfaceAddress.pointerSize);
EXPECT_TRUE(kernelDescriptor->kernelAttributes.flags.usesPrintf);
EXPECT_TRUE(kernelDescriptor->kernelAttributes.flags.hasPrintfCalls);
}
TEST_F(decodeZeInfoKernelEntryTest, GivenArgTypeAssertBufferWhenOffsetAndSizeIsValidThenPopulatesKernelDescriptor) {
@@ -7559,7 +7558,7 @@ kernels:
EXPECT_TRUE(kernelDescriptor->kernelAttributes.flags.hasIndirectCalls);
}
TEST_F(decodeZeInfoKernelEntryTest, GivenKernelWithPrintfCallsWhenPopulatingKernelDescriptorThenHasPrintfCallsIsSet) {
TEST_F(decodeZeInfoKernelEntryTest, GivenKernelWithPrintfCallsWhenPopulatingKernelDescriptorThenUsesPrintfFlagIsSet) {
ConstStringRef zeinfo = R"===(
kernels:
- name : some_kernel
@@ -7571,7 +7570,7 @@ kernels:
auto err = decodeZeInfoKernelEntry(zeinfo);
EXPECT_EQ(NEO::DecodeError::success, err);
EXPECT_TRUE(kernelDescriptor->kernelAttributes.flags.hasPrintfCalls);
EXPECT_TRUE(kernelDescriptor->kernelAttributes.flags.usesPrintf);
}
TEST_F(decodeZeInfoKernelEntryTest, GivenKernelRequiringAssertBufferWhenPopulatingKernelDescriptorThenUsesAssertFlagIsSet) {