Skip to content

Commit 68a3908

Browse files
authored
emitc: func: Set default dialect to 'emitc' (llvm#116297)
Makes `emitc.func` implement the `OpAsmOpInterface` and overwrite the `getDefaultDialect`. This allows ops inside `emitc.func`'s body to omit the 'emitc.' prefix in the assembly.
1 parent ceeb08b commit 68a3908

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

mlir/include/mlir/Dialect/EmitC/IR/EmitC.td

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ include "mlir/Interfaces/CastInterfaces.td"
2121
include "mlir/Interfaces/ControlFlowInterfaces.td"
2222
include "mlir/Interfaces/FunctionInterfaces.td"
2323
include "mlir/Interfaces/SideEffectInterfaces.td"
24+
include "mlir/IR/OpAsmInterface.td"
2425
include "mlir/IR/RegionKindInterface.td"
2526

2627
//===----------------------------------------------------------------------===//
@@ -632,7 +633,7 @@ def EmitC_DeclareFuncOp : EmitC_Op<"declare_func", [
632633

633634
def EmitC_FuncOp : EmitC_Op<"func", [
634635
AutomaticAllocationScope,
635-
FunctionOpInterface, IsolatedFromAbove
636+
FunctionOpInterface, IsolatedFromAbove, OpAsmOpInterface
636637
]> {
637638
let summary = "An operation with a name containing a single `SSACFG` region";
638639
let description = [{
@@ -700,6 +701,15 @@ def EmitC_FuncOp : EmitC_Op<"func", [
700701

701702
/// Returns the result types of this function.
702703
ArrayRef<Type> getResultTypes() { return getFunctionType().getResults(); }
704+
705+
//===------------------------------------------------------------------===//
706+
// OpAsmOpInterface Methods
707+
//===------------------------------------------------------------------===//
708+
709+
/// EmitC ops in the body can omit their 'emitc.' prefix in the assembly.
710+
static ::llvm::StringRef getDefaultDialect() {
711+
return "emitc";
712+
}
703713
}];
704714
let hasCustomAssemblyFormat = 1;
705715
let hasVerifier = 1;

mlir/test/Conversion/FuncToEmitC/func-to-emitc.mlir

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
// RUN: mlir-opt -split-input-file -convert-func-to-emitc %s | FileCheck %s
22

33
// CHECK-LABEL: emitc.func @foo()
4-
// CHECK-NEXT: emitc.return
4+
// CHECK-NEXT: return
55
func.func @foo() {
66
return
77
}
88

99
// -----
1010

1111
// CHECK-LABEL: emitc.func private @foo() attributes {specifiers = ["static"]}
12-
// CHECK-NEXT: emitc.return
12+
// CHECK-NEXT: return
1313
func.func private @foo() {
1414
return
1515
}
@@ -25,7 +25,7 @@ func.func @foo(%arg0: i32) {
2525
// -----
2626

2727
// CHECK-LABEL: emitc.func @foo(%arg0: i32) -> i32
28-
// CHECK-NEXT: emitc.return %arg0 : i32
28+
// CHECK-NEXT: return %arg0 : i32
2929
func.func @foo(%arg0: i32) -> i32 {
3030
return %arg0 : i32
3131
}
@@ -41,14 +41,14 @@ func.func @foo(%arg0: i32, %arg1: i32) -> i32 {
4141
// -----
4242

4343
// CHECK-LABEL: emitc.func private @return_i32(%arg0: i32) -> i32 attributes {specifiers = ["static"]}
44-
// CHECK-NEXT: emitc.return %arg0 : i32
44+
// CHECK-NEXT: return %arg0 : i32
4545
func.func private @return_i32(%arg0: i32) -> i32 {
4646
return %arg0 : i32
4747
}
4848

4949
// CHECK-LABEL: emitc.func @call(%arg0: i32) -> i32
50-
// CHECK-NEXT: %0 = emitc.call @return_i32(%arg0) : (i32) -> i32
51-
// CHECK-NEXT: emitc.return %0 : i32
50+
// CHECK-NEXT: %0 = call @return_i32(%arg0) : (i32) -> i32
51+
// CHECK-NEXT: return %0 : i32
5252
func.func @call(%arg0: i32) -> i32 {
5353
%0 = call @return_i32(%arg0) : (i32) -> (i32)
5454
return %0 : i32
@@ -62,14 +62,14 @@ func.func private @return_i32(%arg0: i32) -> i32
6262
// -----
6363

6464
// CHECK-LABEL: emitc.func private @return_void() attributes {specifiers = ["static"]}
65-
// CHECK-NEXT: emitc.return
65+
// CHECK-NEXT: return
6666
func.func private @return_void() {
6767
return
6868
}
6969

7070
// CHECK-LABEL: emitc.func @call()
71-
// CHECK-NEXT: emitc.call @return_void() : () -> ()
72-
// CHECK-NEXT: emitc.return
71+
// CHECK-NEXT: call @return_void() : () -> ()
72+
// CHECK-NEXT: return
7373
func.func @call() {
7474
call @return_void() : () -> ()
7575
return

0 commit comments

Comments
 (0)