From a9faf0aecbc1439c39dead20ab970fe800088d9b Mon Sep 17 00:00:00 2001 From: Maciej Plewka Date: Tue, 9 Apr 2019 14:40:33 +0200 Subject: [PATCH] Use llvmL1 as type for Intemediate binary type Change-Id: I9c3c2510440c65aedf156d01ea8550d05862f14a Signed-off-by: Maciej Plewka --- Jenkinsfile | 2 +- .../compiler_interface/compiler_interface.cpp | 2 +- .../compiler_interface_tests.cpp | 20 +++++++++++++++++++ unit_tests/mocks/mock_compilers.h | 2 ++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 38d449b5d1..5173b01b2f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,5 +1,5 @@ #!groovy dependenciesRevision='0dea8bf00d710a5d2da5d04eb5ae595d0df4ce47-1217' strategy='EQUAL' -allowedCD=276 +allowedCD=274 allowedF=4 diff --git a/runtime/compiler_interface/compiler_interface.cpp b/runtime/compiler_interface/compiler_interface.cpp index 79a8c06111..8488d9f891 100644 --- a/runtime/compiler_interface/compiler_interface.cpp +++ b/runtime/compiler_interface/compiler_interface.cpp @@ -52,7 +52,7 @@ cl_int CompilerInterface::build( if (program.getIsSpirV()) { intermediateCodeType = IGC::CodeType::spirV; } else { - intermediateCodeType = IGC::CodeType::llvmBc; + intermediateCodeType = useLlvmText ? IGC::CodeType::llvmLl : IGC::CodeType::llvmBc; } } else { highLevelCodeType = IGC::CodeType::oclC; diff --git a/unit_tests/compiler_interface/compiler_interface_tests.cpp b/unit_tests/compiler_interface/compiler_interface_tests.cpp index f4d79789dd..077f686adc 100644 --- a/unit_tests/compiler_interface/compiler_interface_tests.cpp +++ b/unit_tests/compiler_interface/compiler_interface_tests.cpp @@ -961,3 +961,23 @@ TEST_F(CompilerInterfaceTest, whenRequestingSipKernelBinaryThenProperInternalOpt gEnvironment->igcPopDebugVars(); } + +TEST_F(CompilerInterfaceTest, givenCompilerIntefraceWithIntermediateAndUseLlvmTextWhenBuildThenCodeTypeEqualLlvmL1) { + std::unique_ptr mockProgram(new MockProgram(pProgram->peekExecutionEnvironment())); + mockProgram->setDevice(pDevice); + mockProgram->programBinaryType = CL_PROGRAM_BINARY_TYPE_INTERMEDIATE; + pCompilerInterface->useLlvmText = true; + pCompilerInterface->failCreateIgcTranslationCtx = true; + retVal = pCompilerInterface->build(*mockProgram.get(), inputArgs, false); + EXPECT_EQ(IGC::CodeType::llvmLl, pCompilerInterface->intermediateInType); +} + +TEST_F(CompilerInterfaceTest, givenCompilerIntefraceWithIntermediateAndUseLlvmTextSetToFalseWhenBuildThenCodeTypeEqualllvmBc) { + std::unique_ptr mockProgram(new MockProgram(pProgram->peekExecutionEnvironment())); + mockProgram->setDevice(pDevice); + mockProgram->programBinaryType = CL_PROGRAM_BINARY_TYPE_INTERMEDIATE; + pCompilerInterface->useLlvmText = false; + pCompilerInterface->failCreateIgcTranslationCtx = true; + retVal = pCompilerInterface->build(*mockProgram.get(), inputArgs, false); + EXPECT_EQ(IGC::CodeType::llvmBc, pCompilerInterface->intermediateInType); +} diff --git a/unit_tests/mocks/mock_compilers.h b/unit_tests/mocks/mock_compilers.h index 4de42d12de..26b22a2806 100644 --- a/unit_tests/mocks/mock_compilers.h +++ b/unit_tests/mocks/mock_compilers.h @@ -313,6 +313,7 @@ class MockCompilerInterface : public CompilerInterface { IGC::CodeType::CodeType_t inType, IGC::CodeType::CodeType_t outType) override { requestedTranslationCtxs.emplace_back(inType, outType); + intermediateInType = inType; if (failCreateIgcTranslationCtx) { return nullptr; } @@ -348,6 +349,7 @@ class MockCompilerInterface : public CompilerInterface { SipKernelType requestedSipKernel = SipKernelType::COUNT; IGC::IgcOclDeviceCtxTagOCL *peekIgcDeviceCtx(Device *device) { return igcDeviceContexts[device].get(); } + IGC::CodeType::CodeType_t intermediateInType; using CompilerInterface::useLlvmText; };