mesa/src
Ian Romanick eb76cee9f8 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. 🤷

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>
2022-12-14 06:23:21 +00:00
..
amd nir: Eliminate nir_op_i2b 2022-12-14 06:23:21 +00:00
android_stub
asahi nir: Eliminate nir_op_i2b 2022-12-14 06:23:21 +00:00
broadcom nir: Eliminate nir_op_i2b 2022-12-14 06:23:21 +00:00
c11 c11: Remove _MTX_INITIALIZER_NP for windows 2022-11-09 04:38:28 +00:00
compiler nir: Eliminate nir_op_i2b 2022-12-14 06:23:21 +00:00
drm-shim drm-shim: add __readlink_chk as readlink with overflow check 2022-12-08 21:05:15 +00:00
egl gallium: rename st_framebuffer_iface -> pipe_frontend_drawable, etc. 2022-12-09 13:14:03 +00:00
etnaviv tree-wide: Use __func__ instead of __FUNCTION__ in non-gallium code 2022-11-22 06:53:46 +00:00
freedreno nir: Eliminate nir_op_i2b 2022-12-14 06:23:21 +00:00
gallium nir: Eliminate nir_op_i2b 2022-12-14 06:23:21 +00:00
gbm gbm: Don't look up the DRI2_FENCE extension. 2022-12-09 05:32:18 +00:00
getopt
glx glx: fix xshm check to init xshm_opcode. 2022-12-06 22:31:14 +00:00
gtest gtest: Fix maybe-uninitialized compiler warning 2022-06-29 21:02:18 +00:00
hgl
imagination pvr: Check depth/stencil attachment is tile-aligned 2022-12-08 14:53:13 +00:00
imgui
intel nir: Eliminate nir_op_i2b 2022-12-14 06:23:21 +00:00
loader dri: Introduce internal Mesa DRI driver loader extension. 2022-12-05 19:26:41 +00:00
mapi mapi: update gles 1.1 extention packet link 2022-11-20 15:14:01 +00:00
mesa mesa: move the _mesa_set_varying_vp_inputs call to where the state changes 2022-12-12 19:15:34 +00:00
microsoft nir: Eliminate nir_op_i2b 2022-12-14 06:23:21 +00:00
nouveau nir: Eliminate nir_op_i2b 2022-12-14 06:23:21 +00:00
panfrost nir: Eliminate nir_op_i2b 2022-12-14 06:23:21 +00:00
tool pps: make pps-producer RT only on freedreno 2022-11-15 21:21:42 +00:00
util radv: Force non uniform texture sampling with NV Remix 2022-12-12 18:18:32 +00:00
virtio ci: Bump virglrenderer version 2022-12-12 15:49:08 +00:00
vulkan vk/descriptor_set_layout: Add optional destructor 2022-12-12 17:38:19 +00:00
meson.build meson: build radeon drm-shim also for r300 and r600 2022-11-16 14:37:47 +00:00