mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-12 17:33:00 +08:00
feature: Enabling support for redirecting FCL to IGC for OCLOC
This allows for invoking IGC as OCL C translator in OCLOC paths Accepted debug env : NEO_OCLOC_UseIgcAsFcl=1 ; forces IGC NEO_OCLOC_UseIgcAsFcl=2 ; forces FCL NEO_OCLOC_UseIgcAsFcl=0 ; use defaults Related-To: NEO-14473 Signed-off-by: Chodor, Jaroslaw <jaroslaw.chodor@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
5bf8b66498
commit
2ce694c52b
@@ -76,6 +76,7 @@ class MockOfflineCompiler : public OfflineCompiler {
|
||||
using OfflineCompiler::storeBinary;
|
||||
using OfflineCompiler::updateBuildLog;
|
||||
using OfflineCompiler::useGenFile;
|
||||
using OfflineCompiler::useIgcAsFcl;
|
||||
using OfflineCompiler::useOptionsSuffix;
|
||||
|
||||
MockOfflineCompiler();
|
||||
|
||||
@@ -5649,4 +5649,90 @@ TEST(OclocApiSpecificConfigTests, givenOclocThenDebugKeysAreAllowedOnlyInDebug)
|
||||
EXPECT_FALSE(NEO::isDebugKeysReadEnabled());
|
||||
}
|
||||
|
||||
TEST_F(OfflineCompilerTests, GivenFclRedirectionEnvSetToForceIgcWhenInitializingOclocThenIgcIsBeingUsedAsFclFacade) {
|
||||
DebugManagerStateRestore dbgRestore;
|
||||
debugManager.flags.UseIgcAsFcl.set(1);
|
||||
|
||||
std::vector<std::string> argv = {
|
||||
"ocloc",
|
||||
"-file",
|
||||
clCopybufferFilename.c_str(),
|
||||
"-device",
|
||||
gEnvironment->devicePrefix.c_str(),
|
||||
"-spv_only"};
|
||||
|
||||
char bin[1] = {7};
|
||||
auto oldIgcDebugVars = getIgcDebugVars();
|
||||
auto currIgcDebugVars = oldIgcDebugVars;
|
||||
currIgcDebugVars.binaryToReturn = bin;
|
||||
currIgcDebugVars.binaryToReturnSize = 1;
|
||||
currIgcDebugVars.forceBuildFailure = false;
|
||||
setIgcDebugVars(currIgcDebugVars);
|
||||
|
||||
auto oldFclDebugVars = getFclDebugVars();
|
||||
auto currFclDebugVars = oldFclDebugVars;
|
||||
currFclDebugVars.forceBuildFailure = true;
|
||||
setFclDebugVars(currFclDebugVars);
|
||||
|
||||
std::unique_ptr<OfflineCompiler> pOfflineCompiler(OfflineCompiler::create(argv.size(), argv, true, retVal, oclocArgHelperWithoutInput.get()));
|
||||
ASSERT_NE(nullptr, pOfflineCompiler);
|
||||
auto ret = pOfflineCompiler->build();
|
||||
EXPECT_EQ(OCLOC_SUCCESS, ret);
|
||||
currIgcDebugVars.forceBuildFailure = true;
|
||||
ret = pOfflineCompiler->build();
|
||||
EXPECT_EQ(OCLOC_SUCCESS, ret);
|
||||
setFclDebugVars(oldFclDebugVars);
|
||||
setIgcDebugVars(oldIgcDebugVars);
|
||||
}
|
||||
|
||||
TEST_F(OfflineCompilerTests, GivenFclRedirectionEnvSetToForceFclWhenInitializingOclocThenFclIsBeingUsedAsFclFacade) {
|
||||
DebugManagerStateRestore dbgRestore;
|
||||
debugManager.flags.UseIgcAsFcl.set(2);
|
||||
|
||||
std::vector<std::string> argv = {
|
||||
"ocloc",
|
||||
"-file",
|
||||
clCopybufferFilename.c_str(),
|
||||
"-device",
|
||||
gEnvironment->devicePrefix.c_str(),
|
||||
"-spv_only"};
|
||||
|
||||
char bin[1] = {7};
|
||||
auto oldIgcDebugVars = getIgcDebugVars();
|
||||
auto currIgcDebugVars = oldIgcDebugVars;
|
||||
currIgcDebugVars.forceBuildFailure = true;
|
||||
setIgcDebugVars(currIgcDebugVars);
|
||||
|
||||
auto oldFclDebugVars = getFclDebugVars();
|
||||
auto currFclDebugVars = oldFclDebugVars;
|
||||
currFclDebugVars.binaryToReturn = bin;
|
||||
currFclDebugVars.binaryToReturnSize = 1;
|
||||
currFclDebugVars.forceBuildFailure = false;
|
||||
setFclDebugVars(currFclDebugVars);
|
||||
|
||||
std::unique_ptr<OfflineCompiler> pOfflineCompiler(OfflineCompiler::create(argv.size(), argv, true, retVal, oclocArgHelperWithoutInput.get()));
|
||||
ASSERT_NE(nullptr, pOfflineCompiler);
|
||||
auto ret = pOfflineCompiler->build();
|
||||
EXPECT_EQ(OCLOC_SUCCESS, ret);
|
||||
currFclDebugVars.forceBuildFailure = true;
|
||||
ret = pOfflineCompiler->build();
|
||||
setFclDebugVars(oldFclDebugVars);
|
||||
setIgcDebugVars(oldIgcDebugVars);
|
||||
}
|
||||
|
||||
TEST_F(OfflineCompilerTests, GivenFclRedirectionDefaultSettingWhenCompilingToIrThenUseCompilerProductHelperDefaults) {
|
||||
std::vector<std::string> argv = {
|
||||
"ocloc",
|
||||
"-file",
|
||||
clCopybufferFilename.c_str(),
|
||||
"-device",
|
||||
gEnvironment->devicePrefix.c_str()};
|
||||
|
||||
MockOfflineCompiler mockOfflineCompiler{};
|
||||
mockOfflineCompiler.initialize(argv.size(), argv);
|
||||
EXPECT_EQ(mockOfflineCompiler.compilerProductHelper->useIgcAsFcl(), mockOfflineCompiler.useIgcAsFcl());
|
||||
mockOfflineCompiler.compilerProductHelper.reset();
|
||||
EXPECT_EQ(false, mockOfflineCompiler.useIgcAsFcl());
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
Reference in New Issue
Block a user