Skip to content

Commit 7fe6b82

Browse files
trbauersys_zuul
authored andcommitted
Reduces integer division/remainder ops with a constant divisor to
non-divide ops Change-Id: Iaf272eabb6ce3bda8cd11b5dcce0252d2cdcedfa
1 parent 33abef1 commit 7fe6b82

File tree

6 files changed

+720
-12
lines changed

6 files changed

+720
-12
lines changed

IGC/Compiler/CISACodeGen/ShaderCodeGen.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
9292
#include "Compiler/Optimizer/RectListOptimizationPass.hpp"
9393
#include "Compiler/Optimizer/GatingSimilarSamples.hpp"
9494
#include "Compiler/Optimizer/IndirectCallOptimization.hpp"
95+
#include "Compiler/Optimizer/IntDivConstantReduction.hpp"
9596
#include "Compiler/MetaDataApi/PurgeMetaDataUtils.hpp"
9697

9798
#include "Compiler/HandleLoadStoreInstructions.hpp"
@@ -402,6 +403,12 @@ namespace IGC
402403
mpm.add(new ProgramScopeConstantResolution());
403404
}
404405

406+
if (IGC_IS_FLAG_ENABLED(EnableConstIntDivReduction)) {
407+
// reduce division/remainder with a constant divisors/moduli to
408+
// more efficient sequences of multiplies, shifts, and adds
409+
mpm.add(createIntDivConstantReductionPass());
410+
}
411+
405412
bool needDPEmu = (IGC_IS_FLAG_ENABLED(ForceDPEmulation) ||
406413
(ctx.m_DriverInfo.NeedFP64() && !ctx.platform.supportFP64()));
407414
uint32_t theEmuKind = (needDPEmu ? EmuKind::EMU_DP : 0);

IGC/Compiler/Optimizer/CMakeLists.txt

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,22 @@ add_subdirectory(IGCInstCombiner)
99

1010
set(IGC_BUILD__SRC__Optimizer
1111
"${CMAKE_CURRENT_SOURCE_DIR}/BuiltInFuncImport.cpp"
12+
"${CMAKE_CURRENT_SOURCE_DIR}/CodeAssumption.cpp"
13+
"${CMAKE_CURRENT_SOURCE_DIR}/FixFastMathFlags.cpp"
14+
"${CMAKE_CURRENT_SOURCE_DIR}/GatingSimilarSamples.cpp"
15+
"${CMAKE_CURRENT_SOURCE_DIR}/IndirectCallOptimization.cpp"
1216
"${CMAKE_CURRENT_SOURCE_DIR}/InfiniteLoopRemoval.cpp"
17+
"${CMAKE_CURRENT_SOURCE_DIR}/IntDivConstantReduction.cpp"
1318
"${CMAKE_CURRENT_SOURCE_DIR}/LinkMultiRateShaders.cpp"
1419
"${CMAKE_CURRENT_SOURCE_DIR}/MCSOptimization.cpp"
15-
"${CMAKE_CURRENT_SOURCE_DIR}/GatingSimilarSamples.cpp"
20+
"${CMAKE_CURRENT_SOURCE_DIR}/MarkReadOnlyLoad.cpp"
1621
"${CMAKE_CURRENT_SOURCE_DIR}/OCLBIConverter.cpp"
1722
"${CMAKE_CURRENT_SOURCE_DIR}/OCLBIUtils.cpp"
1823
"${CMAKE_CURRENT_SOURCE_DIR}/PreCompiledFuncImport.cpp"
1924
"${CMAKE_CURRENT_SOURCE_DIR}/PreCompiledFuncLibrary.cpp"
25+
"${CMAKE_CURRENT_SOURCE_DIR}/RectListOptimizationPass.cpp"
2026
"${CMAKE_CURRENT_SOURCE_DIR}/Scalarizer.cpp"
2127
"${CMAKE_CURRENT_SOURCE_DIR}/SetMathPrecisionForPositionOutput.cpp"
22-
"${CMAKE_CURRENT_SOURCE_DIR}/FixFastMathFlags.cpp"
23-
"${CMAKE_CURRENT_SOURCE_DIR}/CodeAssumption.cpp"
24-
"${CMAKE_CURRENT_SOURCE_DIR}/MarkReadOnlyLoad.cpp"
25-
"${CMAKE_CURRENT_SOURCE_DIR}/RectListOptimizationPass.cpp"
26-
"${CMAKE_CURRENT_SOURCE_DIR}/IndirectCallOptimization.cpp"
2728
)
2829

2930
set(IGC_BUILD__SRC__Compiler_Optimizer
@@ -35,19 +36,20 @@ set(IGC_BUILD__SRC__Compiler_Optimizer
3536

3637
set(IGC_BUILD__HDR__Optimizer
3738
"${CMAKE_CURRENT_SOURCE_DIR}/BuiltInFuncImport.h"
39+
"${CMAKE_CURRENT_SOURCE_DIR}/CodeAssumption.hpp"
40+
"${CMAKE_CURRENT_SOURCE_DIR}/FixFastMathFlags.hpp"
41+
"${CMAKE_CURRENT_SOURCE_DIR}/GatingSimilarSamples.hpp"
42+
"${CMAKE_CURRENT_SOURCE_DIR}/IndirectCallOptimization.hpp"
3843
"${CMAKE_CURRENT_SOURCE_DIR}/InfiniteLoopRemoval.hpp"
44+
"${CMAKE_CURRENT_SOURCE_DIR}/IntDivConstantReduction.hpp"
3945
"${CMAKE_CURRENT_SOURCE_DIR}/LinkMultiRateShaders.hpp"
46+
"${CMAKE_CURRENT_SOURCE_DIR}/MCSOptimization.hpp"
4047
"${CMAKE_CURRENT_SOURCE_DIR}/OCLBIConverter.h"
4148
"${CMAKE_CURRENT_SOURCE_DIR}/OCLBIUtils.h"
42-
"${CMAKE_CURRENT_SOURCE_DIR}/MCSOptimization.hpp"
43-
"${CMAKE_CURRENT_SOURCE_DIR}/GatingSimilarSamples.hpp"
4449
"${CMAKE_CURRENT_SOURCE_DIR}/PreCompiledFuncImport.hpp"
50+
"${CMAKE_CURRENT_SOURCE_DIR}/RectListOptimizationPass.hpp"
4551
"${CMAKE_CURRENT_SOURCE_DIR}/Scalarizer.h"
4652
"${CMAKE_CURRENT_SOURCE_DIR}/SetMathPrecisionForPositionOutput.hpp"
47-
"${CMAKE_CURRENT_SOURCE_DIR}/FixFastMathFlags.hpp"
48-
"${CMAKE_CURRENT_SOURCE_DIR}/CodeAssumption.hpp"
49-
"${CMAKE_CURRENT_SOURCE_DIR}/RectListOptimizationPass.hpp"
50-
"${CMAKE_CURRENT_SOURCE_DIR}/IndirectCallOptimization.hpp"
5153
)
5254

5355

0 commit comments

Comments
 (0)