nir: Add a simple int64 lowering pass
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 23 Feb 2017 21:56:15 +0000 (13:56 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 2 Mar 2017 01:00:20 +0000 (17:00 -0800)
commit074f5ba0b56b12ddaca81eac3d9ed19da7054297
treea6f1236ecaa38a0d58d04908e4ef92f6098ce535
parent86e749b1ad21fa8d8abea57b9b0ffa679166c472
nir: Add a simple int64 lowering pass

The algorithms used by this pass, especially for division, are heavily
based on the work Ian Romanick did for the similar int64 lowering pass
in the GLSL compiler.

v2: Properly handle vectors

v3: Get rid of log2_denom stuff.  Since we're using bcsel, we do all the
    calculations anyway and this is just extra instructions.

v4:
 - Add back in the log2_denom stuff since it's needed for ensuring that
   the shifts don't overflow.
 - Rework the looping part of the pass to be easier to expand.

Reviewed-by: Matt Turner <mattst88@gmail.com>
src/compiler/Makefile.sources
src/compiler/nir/nir.h
src/compiler/nir/nir_lower_int64.c [new file with mode: 0644]