diff --git a/shared/source/device_binary_format/zebin/zeinfo_decoder.cpp b/shared/source/device_binary_format/zebin/zeinfo_decoder.cpp index ee8a6924d9..e3f3dc8d6a 100644 --- a/shared/source/device_binary_format/zebin/zeinfo_decoder.cpp +++ b/shared/source/device_binary_format/zebin/zeinfo_decoder.cpp @@ -786,8 +786,9 @@ void populateKernelSourceAttributes(NEO::KernelDescriptor &dst, const KernelAttr appendAttributeIfSet(languageAttributes, AttributeTags::workgroupSizeHint, attributes.workgroupSizeHint); appendAttributeIfSet(languageAttributes, AttributeTags::vecTypeHint, attributes.vecTypeHint); appendAttributeIfSet(languageAttributes, AttributeTags::invalidKernel, attributes.invalidKernel); - dst.kernelAttributes.flags.isInvalid = attributes.invalidKernel.has_value(); + dst.kernelAttributes.flags.isInvalid = attributes.invalidKernel.has_value(); + dst.kernelAttributes.flags.requiresWorkgroupWalkOrder = attributes.intelReqdWorkgroupWalkOrder.has_value(); dst.kernelMetadata.requiredSubGroupSize = static_cast(attributes.intelReqdSubgroupSize.value_or(0U)); } diff --git a/shared/test/unit_test/device_binary_format/zebin_decoder_tests.cpp b/shared/test/unit_test/device_binary_format/zebin_decoder_tests.cpp index 34b33e3898..97b9ed5624 100644 --- a/shared/test/unit_test/device_binary_format/zebin_decoder_tests.cpp +++ b/shared/test/unit_test/device_binary_format/zebin_decoder_tests.cpp @@ -2263,6 +2263,21 @@ TEST(PopulateKernelSourceAttributes, GivenInvalidKernelAttributeWhenPopulatingKe EXPECT_STREQ("invalid_kernel(reason)", kd.kernelMetadata.kernelLanguageAttributes.c_str()); } +TEST(PopulateKernelSourceAttributes, GivenAttributesWithoutRequiredWalkOrderWhenPopulatingKernelSourceAttributesThenKernelNotRequireWalkOrder) { + NEO::KernelDescriptor kd; + NEO::Zebin::ZeInfo::KernelAttributesBaseT attributes; + NEO::Zebin::ZeInfo::populateKernelSourceAttributes(kd, attributes); + EXPECT_FALSE(kd.kernelAttributes.flags.requiresWorkgroupWalkOrder); +} + +TEST(PopulateKernelSourceAttributes, GivenRequiredWalkOrderAttributeWhenPopulatingKernelSourceAttributesThenKernelRequireWalkOrder) { + NEO::KernelDescriptor kd; + NEO::Zebin::ZeInfo::KernelAttributesBaseT attributes; + attributes.intelReqdWorkgroupWalkOrder = {0, 2, 1}; + NEO::Zebin::ZeInfo::populateKernelSourceAttributes(kd, attributes); + EXPECT_TRUE(kd.kernelAttributes.flags.requiresWorkgroupWalkOrder); +} + TEST_F(decodeZeInfoKernelEntryTest, GivenUnknownAttributeWhenPopulatingKernelDescriptorThenErrorIsReturned) { ConstStringRef zeinfo = R"===(--- kernels: