Find a file
Timothy Arceri 839818332c nir/gcm: dont move movs unless we can replace them later with their src
This helps us avoid moving the movs outside if branches when there
src can't be scalarized.

For example it avoids:

   vec4 32 ssa_7 = tex ssa_6 (coord), 0 (texture), 0 (sampler),
   if ... {
      r0 = imov ssa_7.z
      r1 = imov ssa_7.y
      r2 = imov ssa_7.x
      r3 = imov ssa_7.w
      ...
   } else {
      ...
      if ... {
         r0 = imov ssa_7.x
         r1 = imov ssa_7.w
         ...
      else {
         r0 = imov ssa_7.z
         r1 = imov ssa_7.y
         ...
      }
      r2 = imov ssa_7.x
      r3 = imov ssa_7.w
   }
   ...
   vec4 32 ssa_36 = vec4 r0, r1, r2, r3

Becoming something like:

   vec4 32 ssa_7 = tex ssa_6 (coord), 0 (texture), 0 (sampler),
   r0 = imov ssa_7.z
   r1 = imov ssa_7.y
   r2 = imov ssa_7.x
   r3 = imov ssa_7.w

   if ... {
      ...
   } else {
      if ... {
         r0 = imov r2
         r1 = imov r3
         ...
      else {
         ...
      }
      ...
   }

While this is has a smaller instruction count it requires more work
for the same result. With more complex examples we can also end up
shuffling the registers around in a way that requires more registers
to use as temps so that we don't overwrite our original values along
the way.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4636>
2020-04-20 03:46:29 +00:00
.appveyor Appveyor: Quickly fix meson build. 2019-11-14 21:45:23 +00:00
.gitlab/issue_templates gitlab: add bug report template 2020-03-23 17:15:42 +00:00
.gitlab-ci CI: Disable Lima jobs due to lab unhealthiness 2020-04-19 12:57:04 +01:00
bin gen_release_notes: resolve ambiguity by renaming version to previous_version and next_version to this_version 2020-03-12 12:57:11 +00:00
build-support configure: commit test files 2017-10-16 16:32:43 -07:00
docs docs: update for recently-added nvc0 features 2020-04-16 15:58:37 -04:00
doxygen doxygen: Plumb through gallium/ to automated documentation 2016-05-30 17:53:45 +01:00
include intel: Add TGL PCI ID 2020-03-21 23:49:38 -07:00
scons scons/windows: Support build with LLVM 10. 2020-04-14 08:40:56 +00:00
src nir/gcm: dont move movs unless we can replace them later with their src 2020-04-20 03:46:29 +00:00
subprojects meson: use github URL for wraps instead of completely unreliable wrapdb 2020-01-16 23:06:43 +00:00
.dir-locals.el dir-locals.el: Adds White Space support 2016-11-14 19:17:49 +02:00
.editorconfig docs: fixup indentation 2020-01-18 11:39:32 +01:00
.gitignore intel/tools: Add unit tests for assembler 2019-05-07 14:33:48 -07:00
.gitlab-ci.yml Revert "CI: Disable Windows/VS2019 builds" 2020-04-16 22:40:24 +00:00
.mailmap .mailmap: add an alias for Zhongmin Wu 2020-04-16 11:46:15 +00:00
.travis.yml travis: autodetect python version instead of hard-coding it 2019-12-21 20:23:08 +00:00
Android.common.mk android: mesa: Revert "android: mesa: revert "Enable asm unconditionally"" 2019-11-12 18:09:43 +00:00
Android.mk freedreno: android: fix build failure on android due to python version 2020-02-07 16:34:49 +00:00
appveyor.yml appveyor: Remove Meson job. 2020-04-01 01:13:21 +00:00
CleanSpec.mk CleanSpec.mk: Remove HOST_OUT_release 2018-08-02 15:42:40 -06:00
common.py scons: Print a deprecation warning about using scons on not windows 2019-10-24 18:33:50 +00:00
meson.build meson: tell flex that we support c99 2020-04-16 14:48:40 +00:00
meson_options.txt meson: Make shared-llvm into a tri-state boolean 2020-04-16 12:18:36 +00:00
README.rst docs: remove mailing list as way of submitting patches 2019-12-12 09:09:50 +11:00
REVIEWERS REVIEWERS: add VMware reviewers 2019-10-18 16:42:40 +00:00
SConstruct scons: Fix force_scons parsing. 2019-10-26 08:23:48 +01:00
VERSION VERSION: bump after 20.0 branch point 2020-02-02 06:54:14 +00:00

`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.html
<https://mesa3d.org/install.html>`_), but the recommended way is to use
Meson (`docs/meson.html <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 `Freenode's #dri-devel
<irc://chat.freenode.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.html <https://mesa3d.org/bugs.html>`_).


Contributing
------------

Contributions are welcome, and step-by-step instructions can be found in our
documentation (`docs/submittingpatches.html
<https://mesa3d.org/submittingpatches.html>`_).

Note that Mesa uses gitlab for patches submission, review and discussions.