60413e11c2bc3d50acabe99a3fd82da6885769ae

Follow the blob and optimize subgroup operation using brcst.active and getlast when supported. The transformation consists of two parts. First, a NIR transform replaces subgroup operations with a sequence of new brcst_active_ir3 intrinsics followed by a new [type]_clusters_ir3 intrinsic (where type can be reduce, inclusive_scan, or exclusive_scan). The brcst_active_ir3 intrinsic is lowered directly to a brcst.active instruction. The other intrinsics get lowered to a new macro (OPC_SCAN_CLUSTERS_MACRO) which later gets emitted as a loop (using getlast/getone) that iterates all clusters and produces the requested scan result. OPC_SCAN_CLUSTERS_MACRO has a number of optional arguments. First, since the exclusive scan result is not a natural by-product of the loop but has to be calculated explicitly, its destination is optional. This is necessary since adding it unconditionally will produce unused instructions that won't be DCE'd anymore at this point. Second, when performing 32b MUL_U reductions (that expand to multiple instructions), an extra scratch register is necessary. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6387 Signed-off-by: Job Noorman <jnoorman@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26950>
`Mesa <https://mesa3d.org>`_ - The 3D Graphics Library ====================================================== Source ------ This repository lives at https://gitlab.freedesktop.org/mesa/mesa. Other repositories are likely forks, and code found there is not supported. Build & install --------------- You can find more information in our documentation (`docs/install.rst <https://mesa3d.org/install.html>`_), but the recommended way is to use Meson (`docs/meson.rst <https://mesa3d.org/meson.html>`_): .. code-block:: sh $ mkdir build $ cd build $ meson .. $ sudo ninja install Support ------- Many Mesa devs hang on IRC; if you're not sure which channel is appropriate, you should ask your question on `OFTC's #dri-devel <irc://irc.oftc.net/dri-devel>`_, someone will redirect you if necessary. Remember that not everyone is in the same timezone as you, so it might take a while before someone qualified sees your question. To figure out who you're talking to, or which nick to ping for your question, check out `Who's Who on IRC <https://dri.freedesktop.org/wiki/WhosWho/>`_. The next best option is to ask your question in an email to the mailing lists: `mesa-dev\@lists.freedesktop.org <https://lists.freedesktop.org/mailman/listinfo/mesa-dev>`_ Bug reports ----------- If you think something isn't working properly, please file a bug report (`docs/bugs.rst <https://mesa3d.org/bugs.html>`_). Contributing ------------ Contributions are welcome, and step-by-step instructions can be found in our documentation (`docs/submittingpatches.rst <https://mesa3d.org/submittingpatches.html>`_). Note that Mesa uses gitlab for patches submission, review and discussions.
Description
Languages
C
75.3%
C++
18.2%
Python
2.7%
Assembly
1.5%
Rust
1.2%
Other
0.9%