Skip to content

gallivm: Modernize soa nir->llvm translation

This MR tries to clean up nir-llvm translation. The main goals are handling "proper" (ssa) nir and improving maintainability and compile times. The major changes are:

  • Remove most of lp_bld_nir.c and duplicate the used code into the soa and aos backends.
  • Emit more optimal LLVM ir. (No 32-bit bools, gather/scatter intrinsics, robustness)
  • Accept and use more modern nir: soa translation will now use divergence information and handle phi instructions instead of registers.

The main benefit for now are lowering compile times and moving most of Vulkan descriptor lowering to a nir pass in lavapipe. Doing this is not viable without divergence information since performance is to bad with the vector path.

Merge request reports

Loading