nir/opt_if: Be more aggressive in opt_split_alu_of_phi

The opt_split_alu_of_phi pass in nir_opt_if was originally designed to
handle cases where the continue portion of the loop was eaten up by
nir_opt_peephole_select before opt_peel_loop_initial_if got to it.
However, it only peels instructions around if their sources either come
from the tail of the loop or are immediates or undefs.  This is a good
way to avoid register pressure regressions but it also means that it
can't peel them off in many cases.  This commit removes those
restrictions and makes the pass more aggressive.

By itself, this change only ever adds instructions since it duplicates
every instruction it peels.  However, those instructions aren't ever
executed any more times and it does sometimes allow other optimization
passes such as opt_simplify_bcsel_of_phi to make progress.  The one
downside, as mentioned above, is that it can increase register pressure
in some cases (I'm still not 100% sure how) and resulted in a few lost
SIMD16 programs.

Shader-db results on ICL:

    total instructions in shared programs: 17129594 -> 17130180 (<.01%)
    instructions in affected programs: 32537 -> 33123 (1.80%)
    helped: 0
    HURT: 82
    HURT stats (abs)   min: 7 max: 10 x̄: 7.15 x̃: 7
    HURT stats (rel)   min: 1.21% max: 3.76% x̄: 1.91% x̃: 1.77%
    95% mean confidence interval for instructions value: 7.00 7.29
    95% mean confidence interval for instructions %-change: 1.79% 2.02%
    Instructions are HURT.

    total cycles in shared programs: 364257702 -> 364316288 (0.02%)
    cycles in affected programs: 627727 -> 686313 (9.33%)
    helped: 0
    HURT: 82
    HURT stats (abs)   min: 36 max: 10956 x̄: 714.46 x̃: 258
    HURT stats (rel)   min: 0.78% max: 16.03% x̄: 6.05% x̃: 5.32%
    95% mean confidence interval for cycles value: 270.02 1158.91
    95% mean confidence interval for cycles %-change: 5.39% 6.70%
    Cycles are HURT.

    LOST:   8
    GAINED: 0

The lost programs are all in Talos Principal (which doesn't even have an
OpenGL back-end anymore) and Serious Sam 3.

Fossil-db results on ICL:

    Instructions in all programs: 263442482 -> 263438116 (-0.0%)
    SENDs in all programs: 15062268 -> 15062268 (+0.0%)
    Loops in all programs: 150022 -> 150022 (+0.0%)
    Cycles in all programs: 84967273066 -> 84728637038 (-0.3%)
    Spills in all programs: 243458 -> 243414 (-0.0%)
    Fills in all programs: 341009 -> 340983 (-0.0%)

Virtually all the change there was in GeekBench and it was all help
except for two shaders hurt by a few cycles.  There were also four
shaders in Shadow of the Tomb Rader which were hurt by < 1% instructions
but helped by 2% cycles on average.
47 jobs for !4719 with review/opt-split-alu
latest detached
Status Job ID Name Coverage
  Container
manual arm_build #2419673
aarch64 manual
manual arm_test #2419674
aarch64 manual
manual windows_build_vs2019 #2419675
windows shell 1809 mesa manual
manual x86_build #2419669
manual
manual x86_build_old #2419672
manual
manual x86_test-gl #2419670
manual
manual x86_test-vk #2419671
manual
 
  Meson X86 64
created meson-clang #2419679
created meson-classic #2419678
created meson-clover #2419680
created meson-clover-old-llvm #2419681
created meson-gallium #2419677
created meson-testing #2419676
created meson-vulkan #2419682
 
  Scons
created scons-win64 #2419683
allowed to fail
 
  Meson Misc
created meson-arm64 #2419685
aarch64
created meson-arm64-build-test #2419686
aarch64
created meson-armhf #2419684
aarch64
created meson-i386 #2419688
created meson-mingw32-x86_64 #2419691
created meson-ppc64el #2419690
kvm
created meson-s390x #2419689
kvm
created meson-windows-vs2019 #2419687
windows docker 1809 mesa
 
  Llvmpipe
created llvmpipe-gles2 #2419695
created llvmpipe-traces #2419696
created piglit-glslparser #2419693
created piglit-quick_gl #2419692
created piglit-quick_shader #2419694
 
  Softpipe
created softpipe-gles2 #2419697
created softpipe-gles31 1/4 #2419700
created softpipe-gles3 1/2 #2419698
created softpipe-gles31 2/4 #2419701
created softpipe-gles31 3/4 #2419702
created softpipe-gles31 4/4 #2419703
created softpipe-gles3 2/2 #2419699
 
  Freedreno
created arm64_a306_gles2 #2419707
google-freedreno-db410c
created arm64_a530_gles2 #2419708
google-freedreno-db820c
created arm64_a630_gles2 #2419704
mesa-cheza
created arm64_a630_gles3 #2419706
mesa-cheza
created arm64_a630_gles31 #2419705
mesa-cheza
 
  Panfrost
created panfrost-t720-gles2:arm64 #2419709
mesa-ci-aarch64-lava-collabora
created panfrost-t760-gles2:armhf #2419710
mesa-ci-aarch64-lava-collabora
created panfrost-t860-gles2:arm64 #2419711
mesa-ci-aarch64-lava-collabora
created panfrost-t860-gles3:arm64 #2419712
mesa-ci-aarch64-lava-collabora
 
  Radv
created radv-fossils #2419713
 
  Virgl
created virgl-gles2 #2419714
created virgl-gles3 #2419715