diff options
| author | Ian Romanick <ian.d.romanick@intel.com> | 2022-02-15 09:35:47 -0800 |
|---|---|---|
| committer | Marge Bot <emma+marge@anholt.net> | 2022-12-14 06:23:21 +0000 |
| commit | eb76cee9f8831d153a75c401c6da2aa1538062c4 (patch) | |
| tree | f586ae48cebd3b66c230cf1a7180974afb3ce27b /src/microsoft/compiler/dxil_nir_algebraic.py | |
| parent | 8b37046765cea37f919a22a72911fa344ae5f1dc (diff) | |
nir: Eliminate nir_op_i2b
There are a lot of optimizations in opt_algebraic that match ('ine', a,
0), but there are almost none that match i2b. Instead of adding a huge
pile of additional patterns (including variations that include both ine
and i2b), always lower i2b to a != 0.
At this point in the series, it should be impossible for anything to
generate i2b, so there /should not/ be any changes.
The failing test on d3d12 is a pre-existing bug that is triggered by
this change. I talked to Jesse about it, and, after some analysis, he
suggested just adding it to the list of known failures.
v2: Don't rematerialize i2b instructions in dxil_nir_lower_x2b.
v3: Don't rematerialize i2b instructions in zink_nir_algebraic.py.
v4: Fix zink-on-TGL CI failures by calling nir_opt_algebraic after
nir_lower_doubles makes progress. The latter can generate b2i
instructions, but nir_lower_int64 can't handle them (anymore).
v5: Add back most of the hunk at line 2125 of nir_opt_algebraic.py. I
had accidentally removed the f2b(bf2(x)) optimization.
v6: Just eliminate the i2b instruction.
v7: Remove missed i2b32 in midgard_compile.c. Remove (now unused)
emit_alu_i2orf2_b1 function from sfn_instr_alu.cpp. Previously this
function was still used. :shrug:
No shader-db changes on any Intel platform.
All Intel platforms had similar results. (Ice Lake shown)
Instructions in all programs: 141165875 -> 141165873 (-0.0%)
Instructions helped: 2
Cycles in all programs: 9098956382 -> 9098956350 (-0.0%)
Cycles helped: 2
The two Vulkan shaders are helped because of the "new" (('b2i32',
('ine', ('ubfe', a, b, 1), 0)), ('ubfe', a, b, 1)) algebraic pattern.
Acked-by: Jesse Natalie <jenatali@microsoft.com> [earlier version]
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tested-by: Daniel Schürmann <daniel@schuermann.dev> [earlier version]
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15121>
Diffstat (limited to 'src/microsoft/compiler/dxil_nir_algebraic.py')
| -rw-r--r-- | src/microsoft/compiler/dxil_nir_algebraic.py | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/microsoft/compiler/dxil_nir_algebraic.py b/src/microsoft/compiler/dxil_nir_algebraic.py index df824b338fd..c5f216c54e9 100644 --- a/src/microsoft/compiler/dxil_nir_algebraic.py +++ b/src/microsoft/compiler/dxil_nir_algebraic.py @@ -93,8 +93,7 @@ remove_unsupported_casts(no_16bit_conv, 16, 0xffff, 65535.0, -32768.0, 32767.0) lower_x2b = [ (('b2b32', 'a'), ('b2i32', 'a')), - (('b2b1', 'a'), ('i2b1', 'a')), - (('i2b1', 'a'), ('ine', a, 0)), + (('b2b1', 'a'), ('ine', ('b2i32', a), 0)), (('f2b1', 'a'), ('fneu', a, 0)), ] |