# R600 shader from NIR

This code is an attempt to implement a NIR backend for r600.

## State

Supported hardware: Evergreen and NI (tested on CEDAR and BARTS)

Thanks to soft fp64 the OpenGL version is now 4.5

sb has been enabled for nir to be able to run some more demanding work loads. The aim is
still to get rid of it.


piglits gpu passes mostly like with TGSI, there are some fixes but also a few regressions.

CTS gles
 - 2 passes like with TGSI
 - 3 no regressions, a few fixes compared to TGSI
 - 31
    * a few fixes with interpolation specifiers
    * synchronization has some unstable tests, this might be because global synchronization is missing (in both)

GL CTS:
  * a few regressions and a hang with KHR-GL43.compute_shader.shared-max

piglit:
  * spilling arrays is broken on Barts (but it works on Cedar)
  * a few tests fail because the register limit is exhausted, and needlessly so, because
    with better RA it would work

## Needed optimizations:

  - Register allocator and scheduler (Could the sb allocator and scheduler
    be ported?)

  - peepholes:
    - compare + set predicate

  - copy propagation:
    - Moves from inputs are usually not required, they could be forwarded
    - texture operations often move additional parameters in extra registers
      but they are actually needed in the same registers they come from and
      could just be swizzled into the right place
      (lower in NIR like it is done in e.g. in ETNAVIV)
