feature: propagate hasPrintfCalls info from zeinfo to kernel descriptor

Related-To: NEO-15211
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2025-09-17 15:19:31 +00:00
committed by Compute-Runtime-Automation
parent 32b97af912
commit 678e2d66e9
3 changed files with 20 additions and 1 deletions

View File

@@ -736,6 +736,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.barrierCount = execEnv.barrierCount;
dst.kernelAttributes.bufferAddressingMode = (execEnv.has4GBBuffers) ? KernelDescriptor::Stateless : KernelDescriptor::BindfulAndStateless;
dst.kernelAttributes.inlineDataPayloadSize = static_cast<uint16_t>(execEnv.inlineDataPayloadSize);

View File

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

View File

@@ -3916,6 +3916,8 @@ TEST_F(decodeZeInfoKernelEntryTest, GivenMinimalExecutionEnvThenPopulateKernelDe
EXPECT_EQ(kernelDescriptor.kernelAttributes.flags.usesSystolicPipelineSelectMode, Defaults::hasDpas);
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.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);
@@ -7465,6 +7467,21 @@ kernels:
EXPECT_TRUE(kernelDescriptor->kernelAttributes.flags.hasIndirectCalls);
}
TEST_F(decodeZeInfoKernelEntryTest, GivenKernelWithPrintfCallsWhenPopulatingKernelDescriptorThenHasPrintfCallsIsSet) {
ConstStringRef zeinfo = R"===(
kernels:
- name : some_kernel
execution_env:
simd_size: 8
has_printf_calls: true
...
)===";
auto err = decodeZeInfoKernelEntry(zeinfo);
EXPECT_EQ(NEO::DecodeError::success, err);
EXPECT_TRUE(kernelDescriptor->kernelAttributes.flags.hasPrintfCalls);
}
TEST(PopulateInlineSamplers, GivenInvalidSamplerIndexThenPopulateInlineSamplersFails) {
NEO::KernelDescriptor kd;
std::string errors, warnings;