mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-20 13:28:09 +02:00
SEL.f32 flushes denorms but SEL.u32 does not. That means changing the type of the SEL is only justified if we know we're used as a float. This fixes miscompilation in cases like: ieq(1, bcsel(a, fneg(b), c)) Previously we'd be too greedy and form (a) SEL.f32 t, -b, c cmp.u32 t, 1 But that would inadvertently flush c which is an integer here. So just set the type based on what we're used as. Some regressions due to is_only_used_as_float not seeing through phis (..could probably be fixed?). Totals: Instrs: 2760796 -> 2761525 (+0.03%); split: -0.06%, +0.08% CodeSize: 44244128 -> 44222384 (-0.05%); split: -0.13%, +0.08% Totals from 945 (35.70% of 2647) affected shaders: Instrs: 1968645 -> 1969374 (+0.04%); split: -0.08%, +0.11% CodeSize: 31721968 -> 31700224 (-0.07%); split: -0.17%, +0.11% Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41064> |
||
|---|---|---|
| .. | ||
| amd | ||
| android_stub | ||
| asahi | ||
| broadcom | ||
| c11 | ||
| compiler | ||
| drm-shim | ||
| egl | ||
| etnaviv | ||
| freedreno | ||
| gallium | ||
| gbm | ||
| getopt | ||
| gfxstream | ||
| glx | ||
| gtest | ||
| imagination | ||
| imgui | ||
| intel | ||
| kosmickrisp | ||
| loader | ||
| mesa | ||
| microsoft | ||
| nouveau | ||
| panfrost | ||
| poly | ||
| tool | ||
| util | ||
| virtio | ||
| vulkan | ||
| x11 | ||
| .clang-format | ||
| meson.build | ||