Signed-off-by: Topi Pohjolainen <topi.pohjolai...@intel.com> --- src/intel/compiler/brw_fs_nir.cpp | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-)
diff --git a/src/intel/compiler/brw_fs_nir.cpp b/src/intel/compiler/brw_fs_nir.cpp index baa84b0f3c..d28ed57eca 100644 --- a/src/intel/compiler/brw_fs_nir.cpp +++ b/src/intel/compiler/brw_fs_nir.cpp @@ -655,6 +655,26 @@ emit_find_msb_using_lzd(const fs_builder &bld, inst->src[0].negate = true; } +static enum brw_reg_type +get_nir_alu_dest_type(const struct gen_device_info *devinfo, + const nir_alu_instr *instr, unsigned size) +{ + brw_reg_type res = brw_type_for_nir_type(devinfo, + (nir_alu_type)(nir_op_infos[instr->op].output_type | + nir_dest_bit_size(instr->dest.dest))); + return brw_reg_type_from_bit_size(size * 8, res); +} + +static enum brw_reg_type +get_nir_alu_src_type(const struct gen_device_info *devinfo, + const nir_alu_instr *instr, unsigned i, unsigned size) +{ + brw_reg_type res = brw_type_for_nir_type(devinfo, + (nir_alu_type)(nir_op_infos[instr->op].input_types[i] | + nir_src_bit_size(instr->src[i].src))); + return brw_reg_type_from_bit_size(size * 8, res); +} + void fs_visitor::nir_emit_alu(const fs_builder &bld, nir_alu_instr *instr) { @@ -662,16 +682,14 @@ fs_visitor::nir_emit_alu(const fs_builder &bld, nir_alu_instr *instr) fs_inst *inst; fs_reg result = get_nir_alu_dest(instr); - result.type = brw_type_for_nir_type(devinfo, - (nir_alu_type)(nir_op_infos[instr->op].output_type | - nir_dest_bit_size(instr->dest.dest))); + result.type = get_nir_alu_dest_type(devinfo, instr, + brw_reg_type_to_size(result.type)); fs_reg op[4]; for (unsigned i = 0; i < nir_op_infos[instr->op].num_inputs; i++) { op[i] = get_nir_src(instr->src[i].src); - op[i].type = brw_type_for_nir_type(devinfo, - (nir_alu_type)(nir_op_infos[instr->op].input_types[i] | - nir_src_bit_size(instr->src[i].src))); + op[i].type = get_nir_alu_src_type(devinfo, instr, i, + brw_reg_type_to_size(op[i].type)); op[i].abs = instr->src[i].abs; op[i].negate = instr->src[i].negate; } -- 2.11.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev