Skip to content
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

[CIR] Add inline interface to CIR dialect #1164

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

keryell
Copy link
Contributor

@keryell keryell commented Nov 25, 2024

This allows the inliner to work with the CIR dialect.

This allows the inliner to work with the CIR dialect.
@keryell
Copy link
Contributor Author

keryell commented Nov 25, 2024

A motivating use case: Xilinx/mlir-aie@b5f21f8 (#1913)

Copy link
Member

@bcardosolopes bcardosolopes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great to see this getting starter, one question below

@@ -125,7 +160,7 @@ void cir::CIRDialect::initialize() {
#define GET_OP_LIST
#include "clang/CIR/Dialect/IR/CIROps.cpp.inc"
>();
addInterfaces<CIROpAsmDialectInterface>();
addInterfaces<CIRInlinerInterface, CIROpAsmDialectInterface>();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incremental patches are way to go, I'm just a bit confused here: is this supposed to change any behavior at this point or is this just a skeleton that has no observed behavior? If this is changing behavior I'd expect a testcase and/or implementations for isLegalToInline to be returning false (for now).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It does not change the behavior of CIR in this project since it is not used but allows other CIR users to use the inliner.
I was worried someone would ask for a test. 😉 An easy one would have been to just use the inliner pass (instead of the function) in opt except that a lot of other stuff is not yet implemented in CIR.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking two types of tests:

  • A test similar to clang/test/CIR/Transforms/mem2reg.cir.
  • Better yet if we add a flag to cc1 as well, like we do for mem2reg in clang/test/CIR/Transforms/mem2reg.c
  • Thoughts for the future: looks like we need a flag that enable all MLIR passes altogether, something like a -fclangir-mlir-opt of sorts, have you thought about that already?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants