diff options
author | Iago Toral Quiroga <[email protected]> | 2018-04-26 10:02:04 +0200 |
---|---|---|
committer | Iago Toral Quiroga <[email protected]> | 2018-05-03 11:40:25 +0200 |
commit | b9a3d8c23e53b261ec626c13f0f0f6858f919371 (patch) | |
tree | 772ce6198afd1af0ac14cc7c642cd6e4b4f427f0 /src/compiler/nir/nir.h | |
parent | f575277f7e4cd3568ae2b0d8d2b0c6e0cf611d62 (diff) |
compiler/nir: add a lowering pass to convert the bit size of ALU operations
Not all bit-sizes may be supported natively in hardware for all operations.
This pass allows drivers to lower such operations to a bit-size that is
actually supported and then converts the result back to the original
bit-size.
Compiler backends control which operations and wich bit-sizes require
the lowering through a callback function.
v2: generalize this pass and make it available in NIR core (Rob, Jason)
v3: remove some temporaries and reduce nesting in instruction loop using
a continue statement (Jason)
Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/compiler/nir/nir.h')
-rw-r--r-- | src/compiler/nir/nir.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index ec3dbf035c0..a538d6981cc 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -2758,6 +2758,12 @@ bool nir_lower_to_source_mods(nir_shader *shader); bool nir_lower_gs_intrinsics(nir_shader *shader); +typedef unsigned (*nir_lower_bit_size_callback)(const nir_alu_instr *, void *); + +bool nir_lower_bit_size(nir_shader *shader, + nir_lower_bit_size_callback callback, + void *callback_data); + typedef enum { nir_lower_imul64 = (1 << 0), nir_lower_isign64 = (1 << 1), |