Skip to content

Commit 46318eb

Browse files
sys-d3djenkinsastojano
authored andcommitted
Backout of e05cf8e
Change-Id: Iaa9b0863114c59957e60df81f9f47238d92f205a
1 parent aa4e47e commit 46318eb

File tree

4 files changed

+21
-18
lines changed

4 files changed

+21
-18
lines changed

IGC/AdaptorOCL/OCL/sp/spp_g8.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,13 @@ CGen8OpenCLProgram::~CGen8OpenCLProgram()
5454
delete data.kernelDebugData;
5555
}
5656

57+
ClearKernelOutput();
58+
}
59+
60+
void CGen8OpenCLProgram::ClearKernelOutput()
61+
{
62+
// Should be called by CodeGen on each try to clear
63+
// the KernelShaderMap and the SystemThreadKernelOutput
5764
for (auto k : m_KernelShaderMap)
5865
{
5966
IGC::CShaderProgram* kernel = k.second;

IGC/AdaptorOCL/OCL/sp/spp_g8.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2929
#include "../util/BinaryStream.h"
3030
#include "usc.h"
3131
#include "sp_g8.h"
32-
#include <map>
32+
33+
#include "common/LLVMWarningsPush.hpp"
34+
#include <llvm/ADT/MapVector.h>
35+
#include <llvm/IR/Function.h>
36+
#include "common/LLVMWarningsPop.hpp"
3337

3438
namespace IGC
3539
{
@@ -54,6 +58,8 @@ class CGen8OpenCLProgram : DisallowCopy
5458

5559
~CGen8OpenCLProgram();
5660

61+
void ClearKernelOutput();
62+
5763
RETVAL GetProgramBinary(
5864
Util::BinaryStream& programBinary,
5965
unsigned int pointerSizeInBytes );
@@ -65,7 +71,7 @@ class CGen8OpenCLProgram : DisallowCopy
6571
void CreateProgramScopePatchStream(const IGC::SOpenCLProgramInfo& programInfo);
6672

6773
// Used to track the kernel info from CodeGen
68-
std::map<std::string, IGC::CShaderProgram*> m_KernelShaderMap;
74+
llvm::MapVector<llvm::Function*, IGC::CShaderProgram*> m_KernelShaderMap;
6975
USC::SSystemThreadKernelOutput* m_pSystemThreadKernelOutput = nullptr;
7076

7177
// Used to store per-kernel binary streams and kernelInfo

IGC/Compiler/CISACodeGen/OpenCLKernelCodeGen.cpp

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1732,10 +1732,11 @@ void CodeGen(OpenCLProgramContext* ctx)
17321732
//Clear spill parameters of retry manager in the very begining of code gen
17331733
ctx->m_retryManager.ClearSpillParams();
17341734

1735-
CShaderProgram::KernelShaderMap shaders;
1736-
CodeGen(ctx, shaders);
1735+
// Clear the saved kernel outputs for each try
1736+
ctx->m_programOutput.ClearKernelOutput();
1737+
1738+
CodeGen(ctx, ctx->m_programOutput.m_KernelShaderMap);
17371739

1738-
if (ctx->m_programOutput.m_pSystemThreadKernelOutput == nullptr)
17391740
{
17401741
const auto options = ctx->m_InternalOptions;
17411742
if (options.IncludeSIPCSR ||
@@ -1768,27 +1769,15 @@ void CodeGen(OpenCLProgramContext* ctx)
17681769
}
17691770
}
17701771

1771-
ctx->m_retryManager.kernelSet.clear();
1772-
17731772
// gather data to send back to the driver
1774-
for (auto k : shaders)
1773+
for (auto k : ctx->m_programOutput.m_KernelShaderMap)
17751774
{
17761775
Function* pFunc = k.first;
17771776
CShaderProgram *pKernel = static_cast<CShaderProgram*>(k.second);
17781777
COpenCLKernel* simd8Shader = static_cast<COpenCLKernel*>(pKernel->GetShader(SIMDMode::SIMD8));
17791778
COpenCLKernel* simd16Shader = static_cast<COpenCLKernel*>(pKernel->GetShader(SIMDMode::SIMD16));
17801779
COpenCLKernel* simd32Shader = static_cast<COpenCLKernel*>(pKernel->GetShader(SIMDMode::SIMD32));
17811780

1782-
std::string kernelName = pFunc->getName().str();
1783-
if (ctx->m_programOutput.m_KernelShaderMap.find(kernelName) != ctx->m_programOutput.m_KernelShaderMap.end())
1784-
{
1785-
// Delete the old program created in previous try
1786-
delete ctx->m_programOutput.m_KernelShaderMap[kernelName];
1787-
}
1788-
1789-
// Save the shader program to the state processer to be handled later
1790-
ctx->m_programOutput.m_KernelShaderMap[kernelName] = pKernel;
1791-
17921781
if (ctx->m_DriverInfo.sendMultipleSIMDModes())
17931782
{
17941783
//Gather the kernel binary for each compiled kernel

IGC/Compiler/CodeGenPublic.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,7 @@ namespace IGC
611611
std::set<std::string> kernelSet;
612612

613613
void ClearSpillParams() {
614+
kernelSet.clear();
614615
lastSpillSize = 0;
615616
numInstructions = 0;
616617
}

0 commit comments

Comments
 (0)