Draft: intel/compiler: Move instructions from a DO block to the next block
The constant combining pass will put additional MOV
instructions in the block with the DO
instruction. The first real instructions for the
loop are generally in the next block. Moving the extra MOV
instructions to that block can help scheduling.
I went down some odd paths while developing this path, and I believe there are some issues with our CFG tracking. See #9732.
Shader-db results:
All BDW+ platforms had similar results. (Ice Lake shown)
Ice Lake
total cycles in shared programs: 849931695 -> 849912435 (<.01%)
cycles in affected programs: 78947923 -> 78928663 (-0.02%)
helped: 358 / HURT: 18
Fossil-db results:
All SKL+ platforms had similar results. (Ice Lake shown)
Totals:
Cycles: 14713211897 -> 14713083917 (-0.00%); split: -0.00%, +0.00%
Totals from 732 (0.11% of 645899) affected shaders:
Cycles: 672054455 -> 671926475 (-0.02%); split: -0.02%, +0.00%