@@ -685,6 +685,30 @@ static void AddLegalizationPasses(CodeGenContext& ctx, IGCPassManager& mpm, PSSi
685
685
mpm.add (llvm::createGlobalDCEPass ());
686
686
mpm.add (new PurgeMetaDataUtils ());
687
687
mpm.add (createGenXCodeGenModulePass ());
688
+
689
+ // Light cleanup for subroutines after cloning. Note that the constant
690
+ // propogation order is reversed, compared to the opt sequence in
691
+ // OptimizeIR. There is a substantial gain with CFG simplification after
692
+ // interprocedural constant propagation.
693
+ if (!isOptDisabled)
694
+ {
695
+ mpm.add (createPruneUnusedArgumentsPass ());
696
+ #if LLVM_VERSION_MAJOR >= 12
697
+ mpm.add (createIPSCCPPass ());
698
+ #else
699
+ if (!ctx.m_hasStackCalls )
700
+ {
701
+ // Don't run IPConstantProp when stackcalls are present.
702
+ // Let global constants be relocated inside stack funcs.
703
+ // We cannot process SLM constants inside stackcalls, so don't propagate them.
704
+ mpm.add (createIPConstantPropagationPass ());
705
+ }
706
+ mpm.add (createConstantPropagationPass ());
707
+ #endif
708
+ mpm.add (createDeadCodeEliminationPass ());
709
+ mpm.add (createCFGSimplificationPass ());
710
+ mpm.add (createIGCInstructionCombiningPass ());
711
+ }
688
712
}
689
713
690
714
// Remove all uses of implicit arg instrinsics after inlining by lowering them to kernel args
@@ -793,30 +817,6 @@ static void AddLegalizationPasses(CodeGenContext& ctx, IGCPassManager& mpm, PSSi
793
817
mpm.add (new StatelessToStateful (hasBufOff));
794
818
}
795
819
796
- // Light cleanup for subroutines after cloning. Note that the constant
797
- // propogation order is reversed, compared to the opt sequence in
798
- // OptimizeIR. There is a substantial gain with CFG simplification after
799
- // interprocedural constant propagation.
800
- if (ctx.m_enableSubroutine && !isOptDisabled)
801
- {
802
- mpm.add (createPruneUnusedArgumentsPass ());
803
-
804
- #if LLVM_VERSION_MAJOR >= 12
805
- mpm.add (createIPSCCPPass ());
806
- #else
807
- if (!ctx.m_hasStackCalls )
808
- {
809
- // Don't run IPConstantProp when stackcalls are present.
810
- // Let global constants be relocated inside stack funcs.
811
- // We cannot process SLM constants inside stackcalls, so don't propagate them.
812
- mpm.add (createIPConstantPropagationPass ());
813
- }
814
- mpm.add (createConstantPropagationPass ());
815
- #endif
816
-
817
- mpm.add (createDeadCodeEliminationPass ());
818
- mpm.add (createCFGSimplificationPass ());
819
- }
820
820
// Since we don't support switch statements, switch lowering is needed after the last CFG simplication
821
821
mpm.add (llvm::createLowerSwitchPass ());
822
822
0 commit comments