circt/test/Dialect/Arc/lower-arcs-to-funcs.mlir

31 lines
916 B
MLIR

// RUN: circt-opt %s --arc-lower-arcs-to-funcs --verify-diagnostics | FileCheck %s
// CHECK-LABEL: func.func @EmptyArc() attributes {llvm.linkage = #llvm.linkage<internal>} {
arc.define @EmptyArc() {
arc.output
// CHECK-NEXT: return
}
// CHECK-NEXT: }
// CHECK-LABEL: func.func @callTest(%arg0: i32)
arc.define @callTest(%arg0: i32) -> (i32) {
%0 = arc.call @sub1(%arg0) : (i32) -> i32
// CHECK-NEXT: %0 = call @sub1(%arg0) : (i32) -> i32
arc.output %0 : i32
// CHECK-NEXT: return %0 : i32
}
// CHECK-LABEL: hw.module @callInModuleTest
hw.module @callInModuleTest(in %arg0: i32, out out0: i32) {
%0 = arc.call @sub1(%arg0) : (i32) -> i32
// CHECK-NEXT: %0 = func.call @sub1(%arg0) : (i32) -> i32
hw.output %0 : i32
// CHECK-NEXT: hw.output %0 : i32
}
// CHECK-LABEL: func.func @sub1
arc.define @sub1(%arg0: i32) -> i32 {
arc.output %arg0 : i32
// CHECK-NEXT: return %arg0 : i32
}