@@ -940,6 +940,14 @@ TEST(ReadZeInfoExecutionEnvironment, GivenValidYamlEntriesThenSetProperMembers)
940940 simd_size : 32
941941 slm_size : 1024
942942 subgroup_independent_forward_progress : true
943+ required_work_group_size:
944+ - 8
945+ - 2
946+ - 1
947+ work_group_walk_order_dimensions:
948+ - 0
949+ - 1
950+ - 2
943951...
944952)===" ;
945953
@@ -973,6 +981,12 @@ TEST(ReadZeInfoExecutionEnvironment, GivenValidYamlEntriesThenSetProperMembers)
973981 EXPECT_EQ (32 , execEnv.simdSize );
974982 EXPECT_EQ (1024 , execEnv.slmSize );
975983 EXPECT_TRUE (execEnv.subgroupIndependentForwardProgress );
984+ EXPECT_EQ (8 , execEnv.requiredWorkGroupSize [0 ]);
985+ EXPECT_EQ (2 , execEnv.requiredWorkGroupSize [1 ]);
986+ EXPECT_EQ (1 , execEnv.requiredWorkGroupSize [2 ]);
987+ EXPECT_EQ (0 , execEnv.workgroupWalkOrderDimensions [0 ]);
988+ EXPECT_EQ (1 , execEnv.workgroupWalkOrderDimensions [1 ]);
989+ EXPECT_EQ (2 , execEnv.workgroupWalkOrderDimensions [2 ]);
976990}
977991
978992TEST (ReadZeInfoExecutionEnvironment, GivenUnknownEntryThenEmmitsWarning) {
@@ -1025,6 +1039,32 @@ TEST(ReadZeInfoExecutionEnvironment, GivenInvalidValueForKnownEntryThenFails) {
10251039 EXPECT_STREQ (" DeviceBinaryFormat::Zebin::.ze_info : could not read actual_kernel_start_offset from : [true] in context of : some_kernel\n " , errors.c_str ());
10261040}
10271041
1042+ TEST (ReadZeInfoExecutionEnvironment, GivenInvalidLengthForKnownCollectionEntryThenFails) {
1043+ NEO::ConstStringRef yaml = R"===( ---
1044+ kernels:
1045+ - name: some_kernel
1046+ execution_env:
1047+ required_work_group_size:
1048+ - 5
1049+ - 2
1050+ ...
1051+ )===" ;
1052+
1053+ std::string parserErrors;
1054+ std::string parserWarnings;
1055+ NEO::Yaml::YamlParser parser;
1056+ bool success = parser.parse (yaml, parserErrors, parserWarnings);
1057+ ASSERT_TRUE (success);
1058+ auto &execEnvNode = *parser.findNodeWithKeyDfs (" execution_env" );
1059+ std::string errors;
1060+ std::string warnings;
1061+ NEO::Elf::ZebinKernelMetadata::Types::Kernel::ExecutionEnv::ExecutionEnvBaseT execEnv;
1062+ auto err = NEO::readZeInfoExecutionEnvironment (parser, execEnvNode, execEnv, " some_kernel" , errors, warnings);
1063+ EXPECT_EQ (NEO::DecodeError::InvalidBinary, err);
1064+ EXPECT_TRUE (warnings.empty ()) << warnings;
1065+ EXPECT_STREQ (" DeviceBinaryFormat::Zebin::.ze_info : wrong size of collection required_work_group_size in context of : some_kernel. Got : 2 expected : 3\n " , errors.c_str ());
1066+ }
1067+
10281068TEST (ReadEnumCheckedArgType, GivenValidStringRepresentationThenParseItCorrectly) {
10291069 using namespace NEO ::Elf::ZebinKernelMetadata::Tags::Kernel::PayloadArgument::ArgType;
10301070 using namespace NEO ::Elf::ZebinKernelMetadata::Tags::Kernel::PerThreadPayloadArgument::ArgType;
@@ -3216,6 +3256,14 @@ TEST(PopulateKernelDescriptor, GivenValidExeuctionEnvironmentThenPopulatedKernel
32163256 simd_size : 32
32173257 slm_size : 1024
32183258 subgroup_independent_forward_progress : true
3259+ required_work_group_size:
3260+ - 8
3261+ - 2
3262+ - 1
3263+ work_group_walk_order_dimensions:
3264+ - 0
3265+ - 1
3266+ - 2
32193267)===" ;
32203268 NEO::ProgramInfo programInfo;
32213269 ZebinTestData::ValidEmptyProgram zebin;
@@ -3255,6 +3303,12 @@ TEST(PopulateKernelDescriptor, GivenValidExeuctionEnvironmentThenPopulatedKernel
32553303 EXPECT_EQ (32U , kernelDescriptor.kernelAttributes .simdSize );
32563304 EXPECT_EQ (1024U , kernelDescriptor.kernelAttributes .slmInlineSize );
32573305 EXPECT_TRUE (kernelDescriptor.kernelAttributes .flags .requiresSubgroupIndependentForwardProgress );
3306+ EXPECT_EQ (8U , kernelDescriptor.kernelAttributes .requiredWorkgroupSize [0 ]);
3307+ EXPECT_EQ (2U , kernelDescriptor.kernelAttributes .requiredWorkgroupSize [1 ]);
3308+ EXPECT_EQ (1U , kernelDescriptor.kernelAttributes .requiredWorkgroupSize [2 ]);
3309+ EXPECT_EQ (0U , kernelDescriptor.kernelAttributes .workgroupWalkOrder [0 ]);
3310+ EXPECT_EQ (1U , kernelDescriptor.kernelAttributes .workgroupWalkOrder [1 ]);
3311+ EXPECT_EQ (2U , kernelDescriptor.kernelAttributes .workgroupWalkOrder [2 ]);
32583312}
32593313
32603314TEST (PopulateArgDescriptorPerThreadPayload, GivenArgTypeLocalIdWhenOffsetIsNonZeroThenFail) {
0 commit comments