They are not supported. Everything related to C++ template and TableGen is not supported.
The dialect/op registry is being used at Elixir compile time to generate functions.
Is there anything in the upstream could be leveraged to support interface and alternative build methods?
Good question, depends on if you are using the C API or C++ one? If the former, not that I’m aware of (but I’m planning on exposing one or two method “soon” that could enable a currently interface of interest there via C API but it’s more on my wishlist than anything blocking).
That’s nice, and so this is done without any ODS info? Then your generators are quite nice, I didn’t think we had enough introspective info without ODS.
I’m using CAPI whenever it is possible. Feel free to shared some points where I might be able to contribute. I guess we could start by adding CAPI to check if an Op overrides an interface🤔.
It’s done without using ODS by iterating every op in every dialect. But I haven’t found a approach applicable for attributes.
This is really cool. I like Elixir and I have been hopeful some work in Elixir for MLIR might show up. I’m especially interested in the goals section of the README. It seems like the focus has been on using Elixir as a FE to MLIR, but you do mention compiling Elixir as a goal. Does that mean using Beaver to define IR(s) and compiler transformations for Elixir/Erlang programs? If so, I’m interested to see where that goes.
Yes unfortunately ODS is the only place where we have those today. From ODS we could dump some metadata which you could consume or utilize it, it’ll be a bit heuristical/match on strings for some of these.