On 2/13/19 12:00 AM, Timothy Arceri wrote: > Everthing should be in ssa form when this is called. Checking > for it here is expensive so turn this into an assert instead. > > Do the cheap thing first and check if we can even progress with > this instruction type. > --- > src/compiler/nir/nir_instr_set.c | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) > > diff --git a/src/compiler/nir/nir_instr_set.c > b/src/compiler/nir/nir_instr_set.c > index 61476c0b03f..c795efbca6a 100644 > --- a/src/compiler/nir/nir_instr_set.c > +++ b/src/compiler/nir/nir_instr_set.c > @@ -498,6 +498,16 @@ dest_is_ssa(nir_dest *dest, void *data) > return dest->is_ssa; > } > > +static bool > +instr_each_src_and_dest_is_ssa(nir_instr *instr) > +{ > + if (!nir_foreach_dest(instr, dest_is_ssa, NULL) || > + !nir_foreach_src(instr, src_is_ssa, NULL)) > + return false; > + > + return true;
I get that this is trying to be obvious about just moving code, but I'd like this a lot better if it more directly matched the name: return nir_foreach_dest(instr, dest_is_ssa, NULL) && nir_foreach_src(instr, src_is_ssa, NULL); > +} > + > /* This function determines if uses of an instruction can safely be rewritten > * to use another identical instruction instead. Note that this function must > * be kept in sync with hash_instr() and nir_instrs_equal() -- only > @@ -509,9 +519,7 @@ static bool > instr_can_rewrite(nir_instr *instr) > { > /* We only handle SSA. */ > - if (!nir_foreach_dest(instr, dest_is_ssa, NULL) || > - !nir_foreach_src(instr, src_is_ssa, NULL)) > - return false; > + assert(instr_each_src_and_dest_is_ssa(instr)); > > switch (instr->type) { > case nir_instr_type_alu: _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev