Quoting Rob Clark (2018-03-16 14:25:09)
> On Fri, Mar 16, 2018 at 4:30 PM, Dylan Baker <dy...@pnwbakers.com> wrote:
> > Quoting Rob Clark (2018-03-16 12:20:10)
> >> On Fri, Mar 16, 2018 at 3:13 PM, Jason Ekstrand <ja...@jlekstrand.net> 
> >> wrote:
> >> > On Fri, Mar 16, 2018 at 11:53 AM, Dylan Baker <dy...@pnwbakers.com> 
> >> > wrote:
> >> >>
> >> >> Quoting Jason Ekstrand (2018-03-16 11:38:47)
> >> >> > On Fri, Mar 16, 2018 at 11:28 AM, Dylan Baker <dy...@pnwbakers.com>
> >> >> > wrote:
> >> >> >
> >> >> >     intr_opcodes = {
> >> >> >         'nop': Intrinsic('nop', flags=[CAN_ELIMINATE]),
> >> >> >         ...
> >> >> >     }
> >> >> >
> >> >> >     I prefer this since each dictionary is clearly created without a
> >> >> > function
> >> >> >     obscuring what's actually going on. If you dislike having to 
> >> >> > repeat
> >> >> > the
> >> >> >     name you
> >> >> >     could even do something like:
> >> >> >     intr_opcodes = [
> >> >> >         'nop': Intrinsic('nop', flags=[CAN_ELIMINATE]),
> >> >> >         ...
> >> >> >     ]
> >> >> >     intr_opcodes = {i.name: i for i in intr_opcodes}
> >> >> >
> >> >> >
> >> >> > I'm not sure what I think about this.  On the one hand, having the
> >> >> > dictionary
> >> >> > explicitly declared is nice.  On the other hand, in nir_opcodes.py we
> >> >> > have a
> >> >> > bunch of other helper functions we declare along the way to help with
> >> >> > specific
> >> >> > kinds of opcodes.  It's not as practical to do this if everything is
> >> >> > inside of
> >> >> > a dictionary declaration.
> >> >>
> >> >> Why not?
> >> >>
> >> >> def make_op(name, *args):
> >> >>     return Intrinsic(name, foo='bar', *args)
> >> >>
> >> >> intr_opcodes = [
> >> >>     make_op('nop', ...),
> >> >> ]
> >> >
> >> >
> >> > Because it's nice to keep the definition of the wrapper close to where 
> >> > it's
> >> > used.
> >> >
> >>
> >> also, fwiw, I end up needing two sets (or possibly lists), a second
> >> one for the builders that are generated for sysval intrinsics.. I'm
> >> not entirely sure how that would work if everything was declared
> >> inline instead of via helper fxns
> >
> > I'm missing where a helper function adds an intrinsic to more than one list.
> 
> system_value() adds to system_values table, after calling intrinsic()
> which adds to the global table (this is the reason for the return
> statement in intrinsic()
> 
> BR,
> -R
> 

I don't know, maybe it's just that I really don't like side effects, but
functions with side-effects that call functions with side-effects make me
nervous.

Why not do something like after the system_values dict is populated calling
intr_table.update(system_values)?

Dylan

Attachment: signature.asc
Description: signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to