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 <jason@jlekstrand.net>
This commit is contained in:
@@ -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),
|
||||
|
Reference in New Issue
Block a user