Skip to content

Commit aa0075a

Browse files
jchodorCompute-Runtime-Automation
authored andcommitted
refactor: L0 module input handling refactor
Related-To: NEO-14135 Signed-off-by: Chodor, Jaroslaw <[email protected]>
1 parent c10ff0f commit aa0075a

File tree

4 files changed

+37
-6
lines changed

4 files changed

+37
-6
lines changed

level_zero/core/source/module/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#
2-
# Copyright (C) 2023 Intel Corporation
2+
# Copyright (C) 2023-2025 Intel Corporation
33
#
44
# SPDX-License-Identifier: MIT
55
#
@@ -12,6 +12,7 @@ target_sources(${L0_STATIC_LIB_NAME}
1212
${CMAKE_CURRENT_SOURCE_DIR}/module_build_log.h
1313
${CMAKE_CURRENT_SOURCE_DIR}/module_imp.cpp
1414
${CMAKE_CURRENT_SOURCE_DIR}/module_imp.h
15+
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/translation_unit_ext.cpp
1516
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}module_imp_helper.cpp
1617
)
1718

level_zero/core/source/module/module_imp.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -254,8 +254,8 @@ ze_result_t ModuleTranslationUnit::staticLinkSpirV(std::vector<const char *> inp
254254
return this->compileGenBinary(linkInputArgs, true);
255255
}
256256

257-
ze_result_t ModuleTranslationUnit::buildFromSpirV(const char *input, uint32_t inputSize, const char *buildOptions, const char *internalBuildOptions,
258-
const ze_module_constants_t *pConstants) {
257+
ze_result_t ModuleTranslationUnit::buildFromIntermediate(IGC::CodeType::CodeType_t intermediateType, const char *input, uint32_t inputSize, const char *buildOptions, const char *internalBuildOptions,
258+
const ze_module_constants_t *pConstants) {
259259
const auto &neoDevice = device->getNEODevice();
260260
auto compilerInterface = neoDevice->getCompilerInterface();
261261
const auto driverHandle = static_cast<DriverHandleImp *>(device->getDriverHandle());
@@ -283,7 +283,7 @@ ze_result_t ModuleTranslationUnit::buildFromSpirV(const char *input, uint32_t in
283283
}
284284
}
285285

286-
NEO::TranslationInput inputArgs = {IGC::CodeType::spirV, IGC::CodeType::oclGenBin};
286+
NEO::TranslationInput inputArgs = {intermediateType, IGC::CodeType::oclGenBin};
287287

288288
inputArgs.src = ArrayRef<const char>(input, inputSize);
289289
inputArgs.apiOptions = ArrayRef<const char>(this->options.c_str(), this->options.length());
@@ -750,7 +750,14 @@ inline ze_result_t ModuleImp::initializeTranslationUnit(const ze_module_desc_t *
750750
internalBuildOptions.c_str(),
751751
desc->pConstants);
752752
} else {
753-
return ZE_RESULT_ERROR_INVALID_ENUMERATION;
753+
this->precompiled = false;
754+
this->isFunctionSymbolExportEnabled = true;
755+
this->isGlobalSymbolExportEnabled = true;
756+
return this->translationUnit->buildExt(desc->format,
757+
reinterpret_cast<const char *>(desc->pInputModule),
758+
static_cast<uint32_t>(desc->inputSize),
759+
buildOptions.c_str(),
760+
internalBuildOptions.c_str());
754761
}
755762
}
756763
}

level_zero/core/source/module/module_imp.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,14 @@ struct ModuleTranslationUnit {
5050
ModuleTranslationUnit(L0::Device *device);
5151
virtual ~ModuleTranslationUnit();
5252
MOCKABLE_VIRTUAL ze_result_t buildFromSpirV(const char *input, uint32_t inputSize, const char *buildOptions, const char *internalBuildOptions,
53-
const ze_module_constants_t *pConstants);
53+
const ze_module_constants_t *pConstants) {
54+
return buildFromIntermediate(IGC::CodeType::spirV, input, inputSize, buildOptions, internalBuildOptions, pConstants);
55+
}
56+
57+
MOCKABLE_VIRTUAL ze_result_t buildExt(ze_module_format_t inputFormat, const char *input, uint32_t inputSize, const char *buildOptions, const char *internalBuildOptions);
58+
59+
MOCKABLE_VIRTUAL ze_result_t buildFromIntermediate(IGC::CodeType::CodeType_t intermediateType, const char *input, uint32_t inputSize, const char *buildOptions, const char *internalBuildOptions,
60+
const ze_module_constants_t *pConstants);
5461
MOCKABLE_VIRTUAL ze_result_t staticLinkSpirV(std::vector<const char *> inputSpirVs, std::vector<uint32_t> inputModuleSizes, const char *buildOptions, const char *internalBuildOptions,
5562
std::vector<const ze_module_constants_t *> specConstants);
5663
MOCKABLE_VIRTUAL ze_result_t createFromNativeBinary(const char *input, size_t inputSize, const char *internalBuildOptions);
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/*
2+
* Copyright (C) 2025 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
*/
7+
8+
#include "level_zero/core/source/module/module_imp.h"
9+
10+
namespace L0 {
11+
12+
ze_result_t ModuleTranslationUnit::buildExt(ze_module_format_t inputFormat, const char *input, uint32_t inputSize, const char *buildOptions, const char *internalBuildOptions) {
13+
return ZE_RESULT_ERROR_INVALID_ENUMERATION;
14+
}
15+
16+
} // namespace L0

0 commit comments

Comments
 (0)