[Mesa-dev] [PATCH v0] nir: mako all the intrinsics

Rob Clark robdclark at gmail.com
Fri Mar 16 19:20:10 UTC 2018


On Fri, Mar 16, 2018 at 3:13 PM, Jason Ekstrand <jason at jlekstrand.net> wrote:
> On Fri, Mar 16, 2018 at 11:53 AM, Dylan Baker <dylan at pnwbakers.com> wrote:
>>
>> Quoting Jason Ekstrand (2018-03-16 11:38:47)
>> > On Fri, Mar 16, 2018 at 11:28 AM, Dylan Baker <dylan at 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

(idk, maybe it is slightly poor form from py perspective.. but otoh
clarity for non-py experts who want need to understand the definition
of various intrinsics or add new intrinsics seems more important in
this case.)

BR,
-R


More information about the mesa-dev mailing list