Skip to content

Commit 35e643d

Browse files
Thomasgfxbot
authored andcommitted
First step refactoring of public header. Move implementation
function outside of header file into a private cpp file. Change-Id: I271128d2c57f88553f11732fdaf6742cd64e22e7
1 parent b6de31c commit 35e643d

File tree

10 files changed

+773
-713
lines changed

10 files changed

+773
-713
lines changed

IGC/AdaptorOCL/dllInterfaceCompute.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ bool ProcessElfInput(
352352
if(InputArgs.OptionsSize > 0){
353353
options = llvm::StringRef(InputArgs.pOptions, InputArgs.OptionsSize - 1);
354354
}
355-
bool success = spv::ReadSPIRV(toLLVMContext(Context), IS, pKernelModule, options, stringErrMsg);
355+
bool success = spv::ReadSPIRV(*Context.getLLVMContext(), IS, pKernelModule, options, stringErrMsg);
356356
#else
357357
std::string stringErrMsg{ "SPIRV consumption not enabled for the TARGET." };
358358
bool success = false;
@@ -368,7 +368,7 @@ bool ProcessElfInput(
368368
llvm::MemoryBuffer::getMemBuffer(buf, "", false);
369369

370370
llvm::Expected<std::unique_ptr<llvm::Module>> errorOrModule =
371-
llvm::parseBitcodeFile(pInputBuffer->getMemBufferRef(), toLLVMContext(Context));
371+
llvm::parseBitcodeFile(pInputBuffer->getMemBufferRef(), *Context.getLLVMContext());
372372
if (llvm::Error EC = errorOrModule.takeError())
373373
{
374374
std::string errMsg;
@@ -795,7 +795,7 @@ bool TranslateBuild(
795795
}
796796

797797
llvm::Expected<std::unique_ptr<llvm::Module>> ModuleOrErr =
798-
getLazyBitcodeModule(pGenericBuffer->getMemBufferRef(), toLLVMContext(oclContext));
798+
getLazyBitcodeModule(pGenericBuffer->getMemBufferRef(), *oclContext.getLLVMContext());
799799

800800
if (llvm::Error EC = ModuleOrErr.takeError())
801801
{
@@ -836,7 +836,7 @@ bool TranslateBuild(
836836
assert(pSizeTBuffer && "Error loading builtin resource");
837837

838838
llvm::Expected<std::unique_ptr<llvm::Module>> ModuleOrErr =
839-
getLazyBitcodeModule(pSizeTBuffer->getMemBufferRef(), toLLVMContext(oclContext));
839+
getLazyBitcodeModule(pSizeTBuffer->getMemBufferRef(), *oclContext.getLLVMContext());
840840
if (llvm::Error EC = ModuleOrErr.takeError())
841841
assert(0 && "Error lazily loading bitcode for size_t builtins");
842842
else
@@ -894,9 +894,9 @@ bool TranslateBuild(
894894
// Create a new LLVMContext
895895
oclContext.initLLVMContextWrapper();
896896

897-
IGC::Debug::RegisterComputeErrHandlers(toLLVMContext(oclContext));
897+
IGC::Debug::RegisterComputeErrHandlers(*oclContext.getLLVMContext());
898898

899-
if (!ParseInput(pKernelModule, pInputArgs, pOutputArgs, toLLVMContext(oclContext), inputDataFormatTemp))
899+
if (!ParseInput(pKernelModule, pInputArgs, pOutputArgs, *oclContext.getLLVMContext(), inputDataFormatTemp))
900900
{
901901
return false;
902902
}

IGC/Compiler/CISACodeGen/CShader.cpp

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3047,37 +3047,4 @@ CShaderProgram::~CShaderProgram()
30473047
delete m_SIMDshaders[i];
30483048
}
30493049
m_context = nullptr;
3050-
}
3051-
3052-
unsigned int CodeGenContext::getRegisterPointerSizeInBits(unsigned int AS) const
3053-
{
3054-
unsigned int pointerSizeInRegister = 32;
3055-
switch(AS)
3056-
{
3057-
case ADDRESS_SPACE_GLOBAL:
3058-
case ADDRESS_SPACE_CONSTANT:
3059-
case ADDRESS_SPACE_GENERIC:
3060-
case ADDRESS_SPACE_GLOBAL_OR_PRIVATE:
3061-
pointerSizeInRegister =
3062-
getModule()->getDataLayout().getPointerSizeInBits(AS);
3063-
break;
3064-
case ADDRESS_SPACE_LOCAL:
3065-
pointerSizeInRegister = 32;
3066-
break;
3067-
case ADDRESS_SPACE_PRIVATE:
3068-
if(getModuleMetaData()->compOpt.UseScratchSpacePrivateMemory)
3069-
{
3070-
pointerSizeInRegister = 32;
3071-
}
3072-
else
3073-
{
3074-
pointerSizeInRegister =
3075-
getModule()->getDataLayout().getPointerSizeInBits(AS);
3076-
}
3077-
break;
3078-
default:
3079-
pointerSizeInRegister = 32;
3080-
break;
3081-
}
3082-
return pointerSizeInRegister;
3083-
}
3050+
}

IGC/Compiler/CISACodeGen/ComputeShaderCodeGen.cpp

Lines changed: 0 additions & 202 deletions
Original file line numberDiff line numberDiff line change
@@ -666,206 +666,4 @@ bool CComputeShader::CompileSIMDSize(SIMDMode simdMode, EmitPass &EP, llvm::Func
666666
return true;
667667
}
668668

669-
CShader* RetryManager::PickCSEntryForcedFromDriver(SIMDMode& simdMode, unsigned char forcedSIMDModeFromDriver)
670-
{
671-
switch (forcedSIMDModeFromDriver)
672-
{
673-
case 8: simdMode = SIMDMode::SIMD8;
674-
simdMode = SIMDMode::SIMD8;
675-
return m_simdEntries[0];
676-
case 16:simdMode = SIMDMode::SIMD16;
677-
simdMode = SIMDMode::SIMD16;
678-
return m_simdEntries[1];
679-
case 32:simdMode = SIMDMode::SIMD32;
680-
simdMode = SIMDMode::SIMD32;
681-
return m_simdEntries[2];
682-
default: simdMode = SIMDMode::UNKNOWN;
683-
return nullptr;
684-
}
685-
}
686-
687-
CShader* RetryManager::PickCSEntryByRegKey(SIMDMode& simdMode)
688-
{
689-
if (IGC_IS_FLAG_ENABLED(ForceCSSIMD32))
690-
{
691-
simdMode = SIMDMode::SIMD32;
692-
return m_simdEntries[2];
693-
}
694-
else
695-
if (IGC_IS_FLAG_ENABLED(ForceCSSIMD16) && m_simdEntries[1])
696-
{
697-
simdMode = SIMDMode::SIMD16;
698-
return m_simdEntries[1];
699-
}
700-
else
701-
if (IGC_IS_FLAG_ENABLED(ForceCSLeastSIMD))
702-
{
703-
if (m_simdEntries[0])
704-
{
705-
simdMode = SIMDMode::SIMD8;
706-
return m_simdEntries[0];
707-
}
708-
else
709-
if (m_simdEntries[1])
710-
{
711-
simdMode = SIMDMode::SIMD16;
712-
return m_simdEntries[1];
713-
}
714-
else
715-
{
716-
simdMode = SIMDMode::SIMD32;
717-
return m_simdEntries[2];
718-
}
719-
}
720-
721-
return nullptr;
722-
}
723-
724-
CShader* RetryManager::PickCSEntryEarly(SIMDMode& simdMode,
725-
ComputeShaderContext* cgCtx)
726-
{
727-
float spillThreshold = cgCtx->GetSpillThreshold();
728-
float occu8 = cgCtx->GetThreadOccupancy(SIMDMode::SIMD8);
729-
float occu16 = cgCtx->GetThreadOccupancy(SIMDMode::SIMD16);
730-
float occu32 = cgCtx->GetThreadOccupancy(SIMDMode::SIMD32);
731-
732-
bool simd32NoSpill = m_simdEntries[2] && m_simdEntries[2]->m_spillCost <= spillThreshold;
733-
bool simd16NoSpill = m_simdEntries[1] && m_simdEntries[1]->m_spillCost <= spillThreshold;
734-
bool simd8NoSpill = m_simdEntries[0] && m_simdEntries[0]->m_spillCost <= spillThreshold;
735-
736-
// If SIMD32/16/8 are all allowed, then choose one which has highest thread occupancy
737-
738-
if (IGC_IS_FLAG_ENABLED(EnableHighestSIMDForNoSpill))
739-
{
740-
if (simd32NoSpill)
741-
{
742-
simdMode = SIMDMode::SIMD32;
743-
return m_simdEntries[2];
744-
}
745-
746-
if (simd16NoSpill)
747-
{
748-
simdMode = SIMDMode::SIMD16;
749-
return m_simdEntries[1];
750-
}
751-
}
752-
else
753-
{
754-
if (simd32NoSpill)
755-
{
756-
if (occu32 >= occu16 && occu32 >= occu8)
757-
{
758-
simdMode = SIMDMode::SIMD32;
759-
return m_simdEntries[2];
760-
}
761-
// If SIMD32 doesn't spill, SIMD16 and SIMD8 shouldn't, if they exist
762-
assert((m_simdEntries[0] == NULL) || simd8NoSpill == true);
763-
assert((m_simdEntries[1] == NULL) || simd16NoSpill == true);
764-
}
765-
766-
if (simd16NoSpill)
767-
{
768-
if (occu16 >= occu8 && occu16 >= occu32)
769-
{
770-
simdMode = SIMDMode::SIMD16;
771-
return m_simdEntries[1];
772-
}
773-
assert((m_simdEntries[0] == NULL) || simd8NoSpill == true); // If SIMD16 doesn't spill, SIMD8 shouldn't, if it exists
774-
}
775-
}
776-
777-
bool needToRetry = false;
778-
if (cgCtx->m_slmSize)
779-
{
780-
if (occu16 > occu8 || occu32 > occu16)
781-
{
782-
needToRetry = true;
783-
}
784-
}
785-
786-
SIMDMode maxSimdMode = cgCtx->GetMaxSIMDMode();
787-
if (maxSimdMode == SIMDMode::SIMD8 || !needToRetry)
788-
{
789-
if (m_simdEntries[0] && m_simdEntries[0]->m_spillSize == 0)
790-
{
791-
simdMode = SIMDMode::SIMD8;
792-
return m_simdEntries[0];
793-
}
794-
}
795-
return nullptr;
796-
}
797-
798-
CShader* RetryManager::PickCSEntryFinally(SIMDMode& simdMode)
799-
{
800-
if (m_simdEntries[0])
801-
{
802-
simdMode = SIMDMode::SIMD8;
803-
return m_simdEntries[0];
804-
}
805-
else
806-
if (m_simdEntries[1])
807-
{
808-
simdMode = SIMDMode::SIMD16;
809-
return m_simdEntries[1];
810-
}
811-
else
812-
{
813-
simdMode = SIMDMode::SIMD32;
814-
return m_simdEntries[2];
815-
}
816-
}
817-
818-
bool RetryManager::PickupCS(ComputeShaderContext* cgCtx)
819-
{
820-
SIMDMode simdMode;
821-
CComputeShader* shader = nullptr;
822-
SComputeShaderKernelProgram* pKernelProgram = &cgCtx->programOutput;
823-
824-
shader = static_cast<CComputeShader*>(
825-
PickCSEntryForcedFromDriver(simdMode, cgCtx->getModuleMetaData()->csInfo.forcedSIMDModeFromDriver));
826-
if (!shader)
827-
{
828-
shader = static_cast<CComputeShader*>(
829-
PickCSEntryByRegKey(simdMode));
830-
}
831-
if (!shader)
832-
{
833-
shader = static_cast<CComputeShader*>(
834-
PickCSEntryEarly(simdMode, cgCtx));
835-
}
836-
if (!shader && IsLastTry())
837-
{
838-
shader = static_cast<CComputeShader*>(
839-
PickCSEntryFinally(simdMode));
840-
assert(shader != nullptr);
841-
}
842-
if (shader)
843-
{
844-
switch (simdMode)
845-
{
846-
case SIMDMode::SIMD8:
847-
pKernelProgram->simd8 = *shader->ProgramOutput();
848-
pKernelProgram->SimdWidth = USC::GFXMEDIA_GPUWALKER_SIMD8;
849-
break;
850-
851-
case SIMDMode::SIMD16:
852-
pKernelProgram->simd16 = *shader->ProgramOutput();
853-
pKernelProgram->SimdWidth = USC::GFXMEDIA_GPUWALKER_SIMD16;
854-
break;
855-
856-
case SIMDMode::SIMD32:
857-
pKernelProgram->simd32 = *shader->ProgramOutput();
858-
pKernelProgram->SimdWidth = USC::GFXMEDIA_GPUWALKER_SIMD32;
859-
break;
860-
861-
default:
862-
assert(false && "Invalie SIMDMode");
863-
}
864-
shader->FillProgram(pKernelProgram);
865-
866-
return true;
867-
}
868-
return false;
869-
}
870-
871669
}

IGC/Compiler/CISACodeGen/ShaderCodeGen.cpp

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -178,41 +178,6 @@ namespace IGC
178178
{
179179
const int LOOP_ROTATION_HEADER_INST_THRESHOLD = 32;
180180

181-
RetryManager::~RetryManager()
182-
{
183-
for (unsigned i = 0; i < 3; i++)
184-
{
185-
if (m_simdEntries[i])
186-
{
187-
delete m_simdEntries[i];
188-
}
189-
}
190-
}
191-
192-
bool RetryManager::AnyKernelSpills()
193-
{
194-
for (unsigned i = 0; i < 3; i++)
195-
{
196-
if (m_simdEntries[i] && m_simdEntries[i]->m_spillCost > 0.0)
197-
{
198-
return true;
199-
}
200-
}
201-
return false;
202-
}
203-
204-
bool RetryManager::PickupKernels(CodeGenContext* cgCtx)
205-
{
206-
if (cgCtx->type == ShaderType::COMPUTE_SHADER)
207-
{
208-
return PickupCS(static_cast<ComputeShaderContext*>(cgCtx));
209-
}
210-
else
211-
{
212-
assert(false && "TODO for other shader types");
213-
return true;
214-
}
215-
}
216181

217182
inline void AddURBWriteRelatedPass(CodeGenContext &ctx, IGCPassManager& mpm)
218183
{
@@ -1419,14 +1384,4 @@ void OptimizeIR(CodeGenContext* pContext)
14191384
MEM_SNAPSHOT( IGC::SMS_AFTER_OPTIMIZER );
14201385
}
14211386

1422-
void CodeGenContext::initCompOptionFromRegkey()
1423-
{
1424-
CompOptions& opt = getModuleMetaData()->compOpt;
1425-
1426-
opt.pixelShaderDoNotAbortOnSpill =
1427-
IGC_IS_FLAG_ENABLED(PixelShaderDoNotAbortOnSpill);
1428-
opt.forcePixelShaderSIMDMode =
1429-
IGC_GET_FLAG_VALUE(ForcePixelShaderSIMDMode);
1430-
}
1431-
14321387
} // namespace IGC

IGC/Compiler/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ igc_sg_define(Compiler__Optimizer)
2525

2626

2727
set(IGC_BUILD__SRC__Compiler
28+
"${CMAKE_CURRENT_SOURCE_DIR}/CodeGenContext.cpp"
2829
"${CMAKE_CURRENT_SOURCE_DIR}/CodeGenContextWrapper.cpp"
2930
"${CMAKE_CURRENT_SOURCE_DIR}/compiler_caps.cpp"
3031
"${CMAKE_CURRENT_SOURCE_DIR}/CustomSafeOptPass.cpp"

0 commit comments

Comments
 (0)