@@ -410,6 +410,22 @@ const char* cmc::getPlatformStr(PLATFORM platform)
410410 return " SKL" ;
411411}
412412
413+ static void generateSymbols (const cmc_kernel_info_v2 &info,
414+ IGC::SProgramOutput &kernelProgram)
415+ {
416+ if (info.RelocationTable .Size > 0 ) {
417+ kernelProgram.m_funcRelocationTable = info.RelocationTable .Buf ;
418+ kernelProgram.m_funcRelocationTableSize = info.RelocationTable .Size ;
419+ kernelProgram.m_funcRelocationTableEntries =
420+ info.RelocationTable .NumEntries ;
421+ }
422+ if (info.SymbolTable .Size > 0 ) {
423+ kernelProgram.m_funcSymbolTable = info.SymbolTable .Buf ;
424+ kernelProgram.m_funcSymbolTableSize = info.SymbolTable .Size ;
425+ kernelProgram.m_funcSymbolTableEntries = info.SymbolTable .NumEntries ;
426+ }
427+ }
428+
413429static void generatePatchTokens_v2 (const cmc_kernel_info_v2 *info,
414430 CMKernel& kernel)
415431{
@@ -514,25 +530,10 @@ static void generatePatchTokens_v2(const cmc_kernel_info_v2 *info,
514530 ConstantBufferLength = iSTD::Align (ConstantBufferLength, info->GRFByteSize ) / info->GRFByteSize ;
515531 kernel.m_kernelInfo .m_kernelProgram .ConstantBufferLength = ConstantBufferLength;
516532
517- IGC::SProgramOutput *kernelProgram = nullptr ;
518- if (info->CompiledSIMDSize == 8 )
519- kernelProgram = &kernel.m_kernelInfo .m_kernelProgram .simd8 ;
520- else if (info->CompiledSIMDSize == 16 )
521- kernelProgram = &kernel.m_kernelInfo .m_kernelProgram .simd16 ;
522- else if (info->CompiledSIMDSize == 32 || info->CompiledSIMDSize == 1 )
523- kernelProgram = &kernel.m_kernelInfo .m_kernelProgram .simd32 ;
524- IGC_ASSERT (kernelProgram);
525- if (info->RelocationTable .Size > 0 ) {
526- kernelProgram->m_funcRelocationTable = info->RelocationTable .Buf ;
527- kernelProgram->m_funcRelocationTableSize = info->RelocationTable .Size ;
528- kernelProgram->m_funcRelocationTableEntries =
529- info->RelocationTable .NumEntries ;
530- }
531- if (info->SymbolTable .Size > 0 ) {
532- kernelProgram->m_funcSymbolTable = info->SymbolTable .Buf ;
533- kernelProgram->m_funcSymbolTableSize = info->SymbolTable .Size ;
534- kernelProgram->m_funcSymbolTableEntries = info->SymbolTable .NumEntries ;
535- }
533+ IGC_ASSERT_MESSAGE (info->CompiledSIMDSize == 1 , " CM code must be dispatched in SIMD1 mode" );
534+ IGC::SProgramOutput &kernelProgram = kernel.m_kernelInfo .m_kernelProgram .simd1 ;
535+
536+ generateSymbols (*info, kernelProgram);
536537
537538}
538539
0 commit comments