Module: Mesa Branch: master Commit: 70b4524de57cdbef9c0c5fb6f06994c7e39ec7d9 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=70b4524de57cdbef9c0c5fb6f06994c7e39ec7d9
Author: Jason Ekstrand <ja...@jlekstrand.net> Date: Mon Oct 26 10:41:41 2020 -0500 nir/lower_int64: Add a level of wrapper functions We're about to start lowering a few intrinsics so we need support more than just ALU. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7329> --- src/compiler/nir/nir_lower_int64.c | 42 ++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/src/compiler/nir/nir_lower_int64.c b/src/compiler/nir/nir_lower_int64.c index ff2c1d97196..049aca61272 100644 --- a/src/compiler/nir/nir_lower_int64.c +++ b/src/compiler/nir/nir_lower_int64.c @@ -874,10 +874,8 @@ nir_lower_int64_op_to_options_mask(nir_op opcode) } static nir_ssa_def * -lower_int64_alu_instr(nir_builder *b, nir_instr *instr, void *_state) +lower_int64_alu_instr(nir_builder *b, nir_alu_instr *alu) { - nir_alu_instr *alu = nir_instr_as_alu(instr); - nir_ssa_def *src[4]; for (unsigned i = 0; i < nir_op_infos[alu->op].num_inputs; i++) src[i] = nir_ssa_for_alu_src(b, alu, i); @@ -995,16 +993,9 @@ lower_int64_alu_instr(nir_builder *b, nir_instr *instr, void *_state) } static bool -should_lower_int64_alu_instr(const nir_instr *instr, const void *_data) +should_lower_int64_alu_instr(const nir_alu_instr *alu, + const nir_shader_compiler_options *options) { - const nir_shader_compiler_options *options = - (const nir_shader_compiler_options *)_data; - - if (instr->type != nir_instr_type_alu) - return false; - - const nir_alu_instr *alu = nir_instr_as_alu(instr); - switch (alu->op) { case nir_op_i2b1: case nir_op_i2i8: @@ -1075,11 +1066,32 @@ should_lower_int64_alu_instr(const nir_instr *instr, const void *_data) return (options->lower_int64_options & mask) != 0; } +static bool +should_lower_int64_instr(const nir_instr *instr, const void *_options) +{ + switch (instr->type) { + case nir_instr_type_alu: + return should_lower_int64_alu_instr(nir_instr_as_alu(instr), _options); + default: + return false; + } +} + +static nir_ssa_def * +lower_int64_instr(nir_builder *b, nir_instr *instr, void *_options) +{ + switch (instr->type) { + case nir_instr_type_alu: + return lower_int64_alu_instr(b, nir_instr_as_alu(instr)); + default: + return NULL; + } +} + bool nir_lower_int64(nir_shader *shader) { - return nir_shader_lower_instructions(shader, - should_lower_int64_alu_instr, - lower_int64_alu_instr, + return nir_shader_lower_instructions(shader, should_lower_int64_instr, + lower_int64_instr, (void *)shader->options); } _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit