-
Notifications
You must be signed in to change notification settings - Fork 136
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Lowering through MLIR standard dialects: class, struct, arrays and other issues #1219
Comments
I like @ChuanqiXu9 idea of throughMLIR starting of on top of LLVM dialect and getting the pieces moved incrementally to standard dialect. Seems like all the points on improving MLIR with tuple and whatnots are good path too and can be done in parallel.
If this allows you to make progress, I'd go for it as well!
There was an interesting experiment report as part of https://sc24.conference-program.com/presentation/?id=ws_llvmf103&sess=sess754, where the author played with FIR to standard dialects (versus direct to LLVM, which seems to be the default?). I bet he might be able to provide you some extra insights. |
My current experiments are done in #1334. |
The presentation from LLVM Dev Meeting 2024 https://www.youtube.com/watch?v=Bt__BDQivxo "Making upstream MLIR more friendly to programming languages: current upstream limitations, the ptr dialect, and the road ahead" |
@PikachuHyA implementing |
I have started lowering the
class
&struct
product types down to MLIR standard dialects by relying on the fundamental MLIR product type (built-intuple
) and that works up to the point that they meet some memory. After some debug, it looks likememref
andtuple
cannot compose. 🤯 😢Some past discussion context: https://discourse.llvm.org/t/why-cant-i-have-memref-tuple-i32-i32/1853/6 https://discourse.llvm.org/t/memref-type-and-data-layout/2116
I thought there would be some kind of support for data layout through
MemRefElementTypeInterface
but this work only user-defined types. 😦This is a basic example where we need standard dialect support for basic higher-level language support as suggested by @joker-eph in a presentation at the last LLVM Dev Mtg.
It is unclear how to move on to integrate better CIR with MLIR standard dialects.
Some possible actions I am thinking of:
tuple
in MLIR;cir.struct
just for that;llvm.struct
just for that.How does it work with Flang since F90 introduced derived data types?
The text was updated successfully, but these errors were encountered: