On Tue, Apr 10, 2018 at 7:37 AM, Daniel Schürmann < daniel.schuerm...@campus.tu-berlin.de> wrote:
> --- > src/compiler/nir/nir_lower_subgroups.c | 5 ++--- > src/compiler/nir/nir_opcodes.py | 12 ++++++------ > 2 files changed, 8 insertions(+), 9 deletions(-) > > diff --git a/src/compiler/nir/nir_lower_subgroups.c > b/src/compiler/nir/nir_lower_subgroups.c > index 0d3c83b795..9dc7be7947 100644 > --- a/src/compiler/nir/nir_lower_subgroups.c > +++ b/src/compiler/nir/nir_lower_subgroups.c > @@ -357,9 +357,8 @@ lower_subgroups_intrin(nir_builder *b, > nir_intrinsic_instr *intrin, > switch (intrin->intrinsic) { > case nir_intrinsic_ballot_bitfield_extract: > assert(intrin->src[1].is_ssa); > - return nir_i2b(b, nir_iand(b, nir_ushr(b, int_val, > - intrin->src[1].ssa), > - nir_imm_int(b, 1))); > + return nir_i2b(b, nir_iand(b, nir_ushr(b, int_val, > intrin->src[1].ssa), > + nir_imm_intN_t(b, 1, options->ballot_bit_size))); > Oops. This didn't automatically scale as I intended. :-/ The indentation seems a bit weird but there's not much you can do. This hunk (as it's own patch) looks good. > case nir_intrinsic_ballot_bit_count_reduce: > return nir_bit_count(b, int_val); > case nir_intrinsic_ballot_find_lsb: > diff --git a/src/compiler/nir/nir_opcodes.py b/src/compiler/nir/nir_ > opcodes.py > index a762fdd220..89a6c6becc 100644 > --- a/src/compiler/nir/nir_opcodes.py > +++ b/src/compiler/nir/nir_opcodes.py > @@ -308,17 +308,17 @@ dst = 0; > for (unsigned bit = 0; bit < 32; bit++) > dst |= ((src0 >> bit) & 1) << (31 - bit); > """) > -unop("bit_count", tuint32, """ > +unop_convert("bit_count", tuint32, tuint, """ > dst = 0; > -for (unsigned bit = 0; bit < 32; bit++) { > +for (unsigned bit = 0; bit < bit_size; bit++) { > if ((src0 >> bit) & 1) > dst++; > } > """) > > -unop_convert("ufind_msb", tint32, tuint32, """ > +unop_convert("ufind_msb", tint32, tuint, """ > dst = -1; > -for (int bit = 31; bit >= 0; bit--) { > +for (int bit = bit_size - 1; bit >= 0; bit--) { > if ((src0 >> bit) & 1) { > dst = bit; > break; > @@ -340,9 +340,9 @@ for (int bit = 31; bit >= 0; bit--) { > } > """) > > -unop("find_lsb", tint32, """ > +unop_convert("find_lsb", tint32, tint, """ > dst = -1; > -for (unsigned bit = 0; bit < 32; bit++) { > +for (unsigned bit = 0; bit < bit_size; bit++) { > These three changes should probably be their own patch. They look fine to me though. > if ((src0 >> bit) & 1) { > dst = bit; > break; > -- > 2.14.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev