diff --git a/IGC/Compiler/CISACodeGen/PushAnalysis.cpp b/IGC/Compiler/CISACodeGen/PushAnalysis.cpp index a6a9ae12210f..368164113fd1 100644 --- a/IGC/Compiler/CISACodeGen/PushAnalysis.cpp +++ b/IGC/Compiler/CISACodeGen/PushAnalysis.cpp @@ -1608,6 +1608,20 @@ namespace IGC m_pullConstantHeuristics = &getAnalysis(); m_context = getAnalysis().getCodeGenContext(); + if (m_context->platform.isCoreChildOf(IGFX_XE3_CORE)) + { + // VRT allows us to have 256GRFs, so we can double the number of pushed inputs + MaxNumOfPushedInputs = 24 * 2; + m_pMaxNumOfVSPushedInputs = 30; + m_pMaxNumOfDSPushedInputs = 24 * 2; // 48 * vec4 == 192 GRF == 3/4 256 GRF + } + else + { + MaxNumOfPushedInputs = 24; + m_pMaxNumOfVSPushedInputs = 24; + m_pMaxNumOfDSPushedInputs = 24; + } + MapList funcsMapping; bool retValue = false; diff --git a/IGC/Compiler/CISACodeGen/PushAnalysis.hpp b/IGC/Compiler/CISACodeGen/PushAnalysis.hpp index aaad57f651a9..d6bbbf362b43 100644 --- a/IGC/Compiler/CISACodeGen/PushAnalysis.hpp +++ b/IGC/Compiler/CISACodeGen/PushAnalysis.hpp @@ -32,6 +32,8 @@ namespace IGC const llvm::DataLayout* m_DL; static const uint32_t MaxConstantBufferIndexSize; uint32_t MaxNumOfPushedInputs; + uint32_t m_pMaxNumOfVSPushedInputs; + uint32_t m_pMaxNumOfDSPushedInputs; bool m_funcTypeChanged; std::map m_isFuncTypeChanged;