mirror of https://github.com/llvm/circt.git
52 lines
2.4 KiB
MLIR
52 lines
2.4 KiB
MLIR
// RUN: circt-opt %s --arc-split-funcs=split-bound=2 | FileCheck %s
|
|
|
|
func.func @Simple(%arg1: i4, %arg2: i4) -> (i4) {
|
|
// CHECK-LABEL: func.func @Simple_split_func0(%arg0: i4, %arg1: i4) -> (i4, i4) {
|
|
// CHECK-NEXT: [[OP0:%.+]] = comb.add %arg0, %arg1 : i4
|
|
// CHECK-NEXT: [[OP1:%.+]] = comb.xor %arg0, %arg1 : i4
|
|
// CHECK-NEXT: return [[OP0]], [[OP1]] : i4, i4
|
|
// CHECK-NEXT: }
|
|
%0 = comb.add %arg1, %arg2 : i4
|
|
%1 = comb.xor %arg1, %arg2 : i4
|
|
// CHECK-LABEL: func.func @Simple_split_func1(%arg0: i4, %arg1: i4) -> (i4, i4) {
|
|
// CHECK-NEXT: [[CALL0:%.+]]:2 = call @Simple_split_func0(%arg0, %arg1) : (i4, i4) -> (i4, i4)
|
|
// CHECK-NEXT: [[OP2:%.+]] = comb.and %arg0, %arg1 : i4
|
|
// CHECK-NEXT: [[OP3:%.+]] = comb.add [[CALL0]]#0, [[CALL0]]#1 : i4
|
|
// CHECK-NEXT: return [[OP2]], [[OP3]] : i4, i4
|
|
// CHECK-NEXT: }
|
|
%2 = comb.and %arg1, %arg2 : i4
|
|
%3 = comb.add %0, %1 : i4
|
|
// CHECK-LABEL: func.func @Simple(%arg0: i4, %arg1: i4) -> i4 {
|
|
// CHECK-NEXT: [[CALL1:%.+]]:2 = call @Simple_split_func1(%arg0, %arg1) : (i4, i4) -> (i4, i4)
|
|
// CHECK-NEXT: [[OP5:%.+]] = comb.add [[CALL1]]#0, [[CALL1]]#1 : i4
|
|
// CHECK-NEXT: return [[OP5]] : i4
|
|
// CHECK-NEXT: }
|
|
%4 = comb.add %2, %3 : i4
|
|
return %4 : i4
|
|
}
|
|
|
|
func.func @LongReuse(%arg1: i4, %arg2: i4) -> (i4) {
|
|
// CHECK-LABEL: func.func @LongReuse_split_func0(%arg0: i4, %arg1: i4) -> (i4, i4) {
|
|
// CHECK-NEXT: [[OP0:%.+]] = comb.add %arg0, %arg1 : i4
|
|
// CHECK-NEXT: [[OP1:%.+]] = comb.xor %arg0, %arg1 : i4
|
|
// CHECK-NEXT: return [[OP0]], [[OP1]] : i4, i4
|
|
// CHECK-NEXT: }
|
|
%0 = comb.add %arg1, %arg2 : i4
|
|
%1 = comb.xor %arg1, %arg2 : i4
|
|
// CHECK-LABEL: func.func @LongReuse_split_func1(%arg0: i4, %arg1: i4) -> (i4, i4) {
|
|
// CHECK-NEXT: [[CALL0:%.+]]:2 = call @LongReuse_split_func0(%arg0, %arg1) : (i4, i4) -> (i4, i4)
|
|
// CHECK-NEXT: [[OP2:%.+]] = comb.and %arg0, %arg1 : i4
|
|
// CHECK-NEXT: [[OP3:%.+]] = comb.or %arg0, %arg1 : i4
|
|
// CHECK-NEXT: return [[CALL0]]#0, [[CALL0]]#1 : i4, i4
|
|
// CHECK-NEXT: }
|
|
%2 = comb.and %arg1, %arg2 : i4
|
|
%3 = comb.or %arg1, %arg2 : i4
|
|
// CHECK-LABEL: func.func @LongReuse(%arg0: i4, %arg1: i4) -> i4 {
|
|
// CHECK-NEXT: [[CALL1:%.+]]:2 = call @LongReuse_split_func1(%arg0, %arg1) : (i4, i4) -> (i4, i4)
|
|
// CHECK-NEXT: [[OP5:%.+]] = comb.add [[CALL1]]#0, [[CALL1]]#1 : i4
|
|
// CHECK-NEXT: return [[OP5]] : i4
|
|
// CHECK-NEXT: }
|
|
%4 = comb.add %0, %1 : i4
|
|
return %4 : i4
|
|
}
|