Quoting Rob Clark (2018-03-16 11:45:56) > On Fri, Mar 16, 2018 at 2:28 PM, Dylan Baker <dy...@pnwbakers.com> wrote: > > Quoting Rob Clark (2018-03-15 18:43:28) > >> I threatened to do this a long time ago.. I probably *should* have done > >> it a long time ago when there where many fewer intrinsics. But the > >> system of macro/#include magic for dealing with intrinsics is a bit > >> annoying, and python has the nice property of optional fxn params, > >> making it possible to define new intrinsics while ignoring parameters > >> that are not applicable (and naming optional params). And not having to > >> specify various array lengths explicitly is nice too. > >> > >> I think the end result makes it easier to add new intrinsics. > >> --- > >> I still need to update autotools build.. but it's late and my wrist > >> needs a break so I thought I'd send it out as-is to solicit comments > >> on the py bits, etc > >> > >> src/compiler/nir/meson.build | 22 +- > >> src/compiler/nir/nir.h | 9 - > >> src/compiler/nir/nir_builder.h | 27 +- > >> src/compiler/nir/nir_builder_opcodes_h.py | 24 +- > >> src/compiler/nir/nir_intrinsics.h | 540 > >> -------------------- > >> src/compiler/nir/nir_intrinsics.py | 547 > >> +++++++++++++++++++++ > >> .../nir/{nir_intrinsics.c => nir_intrinsics_c.py} | 56 +-- > >> src/compiler/nir/nir_intrinsics_h.py | 44 ++ > >> 8 files changed, 659 insertions(+), 610 deletions(-) > >> delete mode 100644 src/compiler/nir/nir_intrinsics.h > >> create mode 100644 src/compiler/nir/nir_intrinsics.py > >> rename src/compiler/nir/{nir_intrinsics.c => nir_intrinsics_c.py} (59%) > >> create mode 100644 src/compiler/nir/nir_intrinsics_h.py > >> > >> diff --git a/src/compiler/nir/meson.build b/src/compiler/nir/meson.build > >> index a70c236b958..ca9237e2ba3 100644 > >> --- a/src/compiler/nir/meson.build > >> +++ b/src/compiler/nir/meson.build > >> @@ -65,6 +65,24 @@ nir_opt_algebraic_c = custom_target( > >> depend_files : files('nir_algebraic.py'), > >> ) > >> > >> +nir_intrinsics_h = custom_target( > >> + 'nir_intrinsics.h', > >> + input : 'nir_intrinsics_h.py', > >> + output : 'nir_intrinsics.h', > >> + command : [prog_python2, '@INPUT@'], > >> + capture : true, > > > > Since we're writing a new generator can we not require capture? It has all > > sorts > > of problems if you want to write symbols that an end user's terminal > > cannot properly decode. (think UTF-8 for people who refuse to move on from > > the C > > days) > > tbh, I have no idea what capture does.. I just copy/pasta from the > existing examples. It does work more or less exactly the same way > that the other py generated files work, so I guess if they need > 'capture', this does to?
'capture' is meson's equivalent of autotools shell redirect, so if you print you need capture. src/vulkan/util/gen_enum_to_str.py doesn't use capture, (and I wrote most of it, so I know it's good :) ), if you want something to look at. > > Ofc, give me hints about what needs to change in > nir_intrinsics_[ch].py to not need this > > (and even better, fix the other codegen cases so next idiot like me > who comes along and clones an existing example dtrt ;-)) It's on my list of things to do, after meson gets settled (which it seems like it's settling pretty well at this point.) :) Dylan
signature.asc
Description: signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev