1
1
// RUN: circt-opt --lower-contracts --simplify-assume-eq --canonicalize --cse %s | FileCheck %s
2
2
3
- // CHECK: hw.module @Mul9(in %a : i42, out z : i42) {
3
+ // CHECK-LABEL : hw.module @Mul9
4
4
// CHECK-NEXT: %c9_i42 = hw.constant 9 : i42
5
- // CHECK-NEXT: %0 = comb.mul %a, %c9_i42 : i42
6
- // CHECK-NEXT: hw.output %0 : i42
5
+ // CHECK-NEXT: [[TMP:%.+]] = comb.mul %a, %c9_i42 : i42
6
+ // CHECK-NEXT: hw.output [[TMP]] : i42
7
7
// CHECK-NEXT: }
8
8
9
- // CHECK: verif.formal @Mul9_CheckContract_0 {
9
+ // CHECK-LABEL : verif.formal @Mul9_CheckContract_0
10
10
// CHECK-NEXT: %c0_i3 = hw.constant 0 : i3
11
11
// CHECK-NEXT: %c9_i42 = hw.constant 9 : i42
12
- // CHECK-NEXT: %0 = verif.symbolic_value : i42
13
- // CHECK-NEXT: %1 = comb.extract %0 from 0 : (i42) -> i39
14
- // CHECK-NEXT: %2 = comb.concat %1 , %c0_i3 : i39, i3
15
- // CHECK-NEXT: %3 = comb.add %0, %2 : i42
16
- // CHECK-NEXT: %4 = comb.mul %0 , %c9_i42 : i42
17
- // CHECK-NEXT: %5 = comb.icmp eq %3, %4 : i42
18
- // CHECK-NEXT: verif.assert %5 : i1
12
+ // CHECK-NEXT: [[A:%.+]] = verif.symbolic_value : i42
13
+ // CHECK-NEXT: [[TMP1:%.+]] = comb.extract [[A]] from 0 : (i42) -> i39
14
+ // CHECK-NEXT: [[TMP2:%.+]] = comb.concat [[TMP1]] , %c0_i3 : i39, i3
15
+ // CHECK-NEXT: [[TMP1:%.+]] = comb.add [[A]], [[TMP2]] : i42
16
+ // CHECK-NEXT: [[TMP2:%.+]] = comb.mul [[A]] , %c9_i42 : i42
17
+ // CHECK-NEXT: [[TMP3:%.+]] = comb.icmp eq [[TMP1]], [[TMP2]] : i42
18
+ // CHECK-NEXT: verif.assert [[TMP3]] : i1
19
19
// CHECK-NEXT: }
20
20
21
21
hw.module @Mul9 (in %a: i42 , out z : i42 ) {
@@ -31,34 +31,34 @@ hw.module @Mul9(in %a: i42, out z: i42) {
31
31
hw.output %2 : i42
32
32
}
33
33
34
- // CHECK: hw.module @CarrySaveCompress3to2(in %a0 : i42, in %a1 : i42, in %a2 : i42, out z0 : i42, out z1 : i42) {
35
- // CHECK-NEXT: %0 = verif.symbolic_value : i42
36
- // CHECK-NEXT: %1 = verif.symbolic_value : i42
37
- // CHECK-NEXT: %2 = comb.add %a0, %a1, %a2 : i42
38
- // CHECK-NEXT: %3 = comb.add %0, %1 : i42
39
- // CHECK-NEXT: %4 = comb.icmp eq %2, %3 : i42
40
- // CHECK-NEXT: verif.assume %4 : i1
41
- // CHECK-NEXT: hw.output %0, %1 : i42, i42
34
+ // CHECK-LABEL : hw.module @CarrySaveCompress3to2
35
+ // CHECK-NEXT: [[Z0:%.+]] = verif.symbolic_value : i42
36
+ // CHECK-NEXT: [[Z1:%.+]] = verif.symbolic_value : i42
37
+ // CHECK-NEXT: [[TMP1:%.+]] = comb.add %a0, %a1, %a2 : i42
38
+ // CHECK-NEXT: [[TMP2:%.+]] = comb.add [[Z0]], [[Z1]] : i42
39
+ // CHECK-NEXT: [[TMP3:%.+]] = comb.icmp eq [[TMP1]], [[TMP2]] : i42
40
+ // CHECK-NEXT: verif.assume [[TMP3]] : i1
41
+ // CHECK-NEXT: hw.output [[Z0]], [[Z1]] : i42, i42
42
42
// CHECK-NEXT: }
43
43
44
- // CHECK: verif.formal @CarrySaveCompress3to2_CheckContract_0 {
44
+ // CHECK-LABEL : verif.formal @CarrySaveCompress3to2_CheckContract_0
45
45
// CHECK-NEXT: %false = hw.constant false
46
- // CHECK-NEXT: %0 = verif.symbolic_value : i42
47
- // CHECK-NEXT: %1 = verif.symbolic_value : i42
48
- // CHECK-NEXT: %2 = verif.symbolic_value : i42
49
- // CHECK-NEXT: %3 = comb.extract %0 from 0 : (i42) -> i41
50
- // CHECK-NEXT: %4 = comb.extract %1 from 0 : (i42) -> i41
51
- // CHECK-NEXT: %5 = comb.or %3, %4 : i41
52
- // CHECK-NEXT: %6 = comb.extract %2 from 0 : (i42) -> i41
53
- // CHECK-NEXT: %7 = comb.and %5, %6 : i41
54
- // CHECK-NEXT: %8 = comb.and %3, %4 : i41
55
- // CHECK-NEXT: %9 = comb.or %8, %7 : i41
56
- // CHECK-NEXT: %10 = comb.concat %9 , %false : i41, i1
57
- // CHECK-NEXT: %11 = comb.xor %0, %1, %2 : i42
58
- // CHECK-NEXT: %12 = comb.add %0, %1, %2 : i42
59
- // CHECK-NEXT: %13 = comb.add %11, %10 : i42
60
- // CHECK-NEXT: %14 = comb.icmp eq %12, %13 : i42
61
- // CHECK-NEXT: verif.assert %14 : i1
46
+ // CHECK-NEXT: [[A0:%.+]] = verif.symbolic_value : i42
47
+ // CHECK-NEXT: [[A1:%.+]] = verif.symbolic_value : i42
48
+ // CHECK-NEXT: [[A2:%.+]] = verif.symbolic_value : i42
49
+ // CHECK-NEXT: [[TMP1:%.+]] = comb.extract [[A0]] from 0 : (i42) -> i41
50
+ // CHECK-NEXT: [[TMP2:%.+]] = comb.extract [[A1]] from 0 : (i42) -> i41
51
+ // CHECK-NEXT: [[TMP3:%.+]] = comb.or [[TMP1]], [[TMP2]] : i41
52
+ // CHECK-NEXT: [[TMP4:%.+]] = comb.extract [[A2]] from 0 : (i42) -> i41
53
+ // CHECK-NEXT: [[TMP5:%.+]] = comb.and [[TMP3]], [[TMP4]] : i41
54
+ // CHECK-NEXT: [[TMP3:%.+]] = comb.and [[TMP1]], [[TMP2]] : i41
55
+ // CHECK-NEXT: [[TMP4:%.+]] = comb.or [[TMP3]], [[TMP5]] : i41
56
+ // CHECK-NEXT: [[TMP1:%.+]] = comb.concat [[TMP4]] , %false : i41, i1
57
+ // CHECK-NEXT: [[TMP2:%.+]] = comb.xor [[A0]], [[A1]], [[A2]] : i42
58
+ // CHECK-NEXT: [[TMP3:%.+]] = comb.add [[A0]], [[A1]], [[A2]] : i42
59
+ // CHECK-NEXT: [[TMP4:%.+]] = comb.add [[TMP2]], [[TMP1]] : i42
60
+ // CHECK-NEXT: [[TMP1:%.+]] = comb.icmp eq [[TMP3]], [[TMP4]] : i42
61
+ // CHECK-NEXT: verif.assert [[TMP1]] : i1
62
62
// CHECK-NEXT: }
63
63
64
64
hw.module @CarrySaveCompress3to2 (
@@ -81,38 +81,38 @@ hw.module @CarrySaveCompress3to2(
81
81
hw.output %z0 , %z1 : i42 , i42
82
82
}
83
83
84
- // CHECK: hw.module @ShiftLeft(in %a : i8, in %b : i8, out z : i8) {
84
+ // CHECK-LABEL : hw.module @ShiftLeft
85
85
// CHECK-NEXT: %c8_i8 = hw.constant 8 : i8
86
- // CHECK-NEXT: %0 = comb.icmp ult %b, %c8_i8 : i8
87
- // CHECK-NEXT: verif.assert %0 : i1
88
- // CHECK-NEXT: %1 = comb.shl %a, %b : i8
89
- // CHECK-NEXT: hw.output %1 : i8
86
+ // CHECK-NEXT: [[TMP0:%.+]] = comb.icmp ult %b, %c8_i8 : i8
87
+ // CHECK-NEXT: verif.assert [[TMP0]] : i1
88
+ // CHECK-NEXT: [[TMP1:%.+]] = comb.shl %a, %b : i8
89
+ // CHECK-NEXT: hw.output [[TMP1]] : i8
90
90
// CHECK-NEXT: }
91
91
92
- // CHECK: verif.formal @ShiftLeft_CheckContract_0 {} {
92
+ // CHECK-LABEL : verif.formal @ShiftLeft_CheckContract_0
93
93
// CHECK-NEXT: %false = hw.constant false
94
94
// CHECK-NEXT: %c0_i2 = hw.constant 0 : i2
95
95
// CHECK-NEXT: %c0_i4 = hw.constant 0 : i4
96
96
// CHECK-NEXT: %c8_i8 = hw.constant 8 : i8
97
- // CHECK-NEXT: %0 = verif.symbolic_value : i8
98
- // CHECK-NEXT: %1 = verif.symbolic_value : i8
99
- // CHECK-NEXT: %2 = comb.extract %1 from 0 : (i8) -> i4
100
- // CHECK-NEXT: %3 = comb.concat %2 , %c0_i4 : i4, i4
101
- // CHECK-NEXT: %4 = comb.extract %0 from 2 : (i8) -> i1
102
- // CHECK-NEXT: %5 = comb.mux %4, %3, %1 : i8
103
- // CHECK-NEXT: %6 = comb.extract %5 from 0 : (i8) -> i6
104
- // CHECK-NEXT: %7 = comb.concat %6 , %c0_i2 : i6, i2
105
- // CHECK-NEXT: %8 = comb.extract %0 from 1 : (i8) -> i1
106
- // CHECK-NEXT: %9 = comb.mux %8, %7, %5 : i8
107
- // CHECK-NEXT: %10 = comb.extract %9 from 0 : (i8) -> i7
108
- // CHECK-NEXT: %11 = comb.concat %10 , %false : i7, i1
109
- // CHECK-NEXT: %12 = comb.extract %0 from 0 : (i8) -> i1
110
- // CHECK-NEXT: %13 = comb.mux %12, %11, %9 : i8
111
- // CHECK-NEXT: %14 = comb.icmp ult %0 , %c8_i8 : i8
112
- // CHECK-NEXT: verif.assume %14 : i1
113
- // CHECK-NEXT: %15 = comb.shl %1, %0 : i8
114
- // CHECK-NEXT: %16 = comb.icmp eq %13, %15 : i8
115
- // CHECK-NEXT: verif.assert %16 : i1
97
+ // CHECK-NEXT: [[TMP0:%.+]] = verif.symbolic_value : i8
98
+ // CHECK-NEXT: [[TMP1:%.+]] = verif.symbolic_value : i8
99
+ // CHECK-NEXT: [[TMP2:%.+]] = comb.extract [[TMP1]] from 0 : (i8) -> i4
100
+ // CHECK-NEXT: [[TMP3:%.+]] = comb.concat [[TMP2]] , %c0_i4 : i4, i4
101
+ // CHECK-NEXT: [[TMP4:%.+]] = comb.extract [[TMP0]] from 2 : (i8) -> i1
102
+ // CHECK-NEXT: [[TMP5:%.+]] = comb.mux [[TMP4]], [[TMP3]], [[TMP1]] : i8
103
+ // CHECK-NEXT: [[TMP6:%.+]] = comb.extract [[TMP5]] from 0 : (i8) -> i6
104
+ // CHECK-NEXT: [[TMP7:%.+]] = comb.concat [[TMP6]] , %c0_i2 : i6, i2
105
+ // CHECK-NEXT: [[TMP8:%.+]] = comb.extract [[TMP0]] from 1 : (i8) -> i1
106
+ // CHECK-NEXT: [[TMP9:%.+]] = comb.mux [[TMP8]], [[TMP7]], [[TMP5]] : i8
107
+ // CHECK-NEXT: [[TMP10:%.+]] = comb.extract [[TMP9]] from 0 : (i8) -> i7
108
+ // CHECK-NEXT: [[TMP11:%.+]] = comb.concat [[TMP10]] , %false : i7, i1
109
+ // CHECK-NEXT: [[TMP12:%.+]] = comb.extract [[TMP0]] from 0 : (i8) -> i1
110
+ // CHECK-NEXT: [[TMP13:%.+]] = comb.mux [[TMP12]], [[TMP11]], [[TMP9]] : i8
111
+ // CHECK-NEXT: [[TMP14:%.+]] = comb.icmp ult [[TMP0]] , %c8_i8 : i8
112
+ // CHECK-NEXT: verif.assume [[TMP14]] : i1
113
+ // CHECK-NEXT: [[TMP15:%.+]] = comb.shl [[TMP1]], [[TMP0]] : i8
114
+ // CHECK-NEXT: [[TMP16:%.+]] = comb.icmp eq [[TMP13]], [[TMP15]] : i8
115
+ // CHECK-NEXT: verif.assert [[TMP16]] : i1
116
116
// CHECK-NEXT: }
117
117
118
118
hw.module @ShiftLeft (in %a: i8 , in %b: i8 , out z : i8 ) {
@@ -147,13 +147,8 @@ hw.module @ShiftLeft(in %a: i8, in %b: i8, out z: i8) {
147
147
hw.output %z : i8
148
148
}
149
149
150
- // CHECK: hw.module @NoContract(in %a : i42, out z : i42) {
151
- // CHECK-NEXT: %c0_i3 = hw.constant 0 : i3
152
- // CHECK-NEXT: %0 = comb.extract %a from 0 : (i42) -> i39
153
- // CHECK-NEXT: %1 = comb.concat %0, %c0_i3 : i39, i3
154
- // CHECK-NEXT: %2 = comb.add %a, %1 : i42
155
- // CHECK-NEXT: hw.output %2 : i42
156
- // CHECK-NEXT: }
150
+ // CHECK-LABEL: hw.module @NoContract
151
+ // CHECK-NOT: verif.formal
157
152
158
153
hw.module @NoContract (in %a: i42 , out z : i42 ) {
159
154
%c3_i42 = hw.constant 3 : i42
@@ -162,38 +157,38 @@ hw.module @NoContract(in %a: i42, out z: i42) {
162
157
hw.output %1 : i42
163
158
}
164
159
165
- // CHECK: hw.module @TwoContracts(in %a : i42, out z : i42) {
160
+ // CHECK-LABEL : hw.module @TwoContracts
166
161
// CHECK-NEXT: %false = hw.constant false
167
162
// CHECK-NEXT: %c2_i42 = hw.constant 2 : i42
168
- // CHECK-NEXT: %0 = comb.icmp ult %a, %c2_i42 : i42
169
- // CHECK-NEXT: verif.assert %0 : i1
170
- // CHECK-NEXT: %1 = comb.extract %a from 0 : (i42) -> i41
171
- // CHECK-NEXT: %2 = comb.concat %1 , %false : i41, i1
172
- // CHECK-NEXT: hw.output %2 : i42
163
+ // CHECK-NEXT: [[TMP0:%.+]] = comb.icmp ult %a, %c2_i42 : i42
164
+ // CHECK-NEXT: verif.assert [[TMP0]] : i1
165
+ // CHECK-NEXT: [[TMP1:%.+]] = comb.extract %a from 0 : (i42) -> i41
166
+ // CHECK-NEXT: [[TMP2:%.+]] = comb.concat [[TMP1]] , %false : i41, i1
167
+ // CHECK-NEXT: hw.output [[TMP2]] : i42
173
168
// CHECK-NEXT: }
174
169
175
- // CHECK: verif.formal @TwoContracts_CheckContract_0 {} {
170
+ // CHECK-LABEL : verif.formal @TwoContracts_CheckContract_0
176
171
// CHECK-NEXT: %c2_i42 = hw.constant 2 : i42
177
- // CHECK-NEXT: %0 = verif.symbolic_value : i42
178
- // CHECK-NEXT: %1 = comb.extract %0 from 0 : (i42) -> i41
179
- // CHECK-NEXT: %2 = comb.icmp ult %0 , %c2_i42 : i42
180
- // CHECK-NEXT: verif.assume %2 : i1
181
- // CHECK-NEXT: %3 = comb.icmp eq %1, %1 : i41
182
- // CHECK-NEXT: verif.assert %3 : i1
172
+ // CHECK-NEXT: [[TMP0:%.+]] = verif.symbolic_value : i42
173
+ // CHECK-NEXT: [[TMP1:%.+]] = comb.extract [[TMP0]] from 0 : (i42) -> i41
174
+ // CHECK-NEXT: [[TMP2:%.+]] = comb.icmp ult [[TMP0]] , %c2_i42 : i42
175
+ // CHECK-NEXT: verif.assume [[TMP2]] : i1
176
+ // CHECK-NEXT: [[TMP3:%.+]] = comb.icmp eq [[TMP1]], [[TMP1]] : i41
177
+ // CHECK-NEXT: verif.assert [[TMP3]] : i1
183
178
// CHECK-NEXT: }
184
179
185
- // CHECK: verif.formal @TwoContracts_CheckContract_1 {} {
180
+ // CHECK-LABEL : verif.formal @TwoContracts_CheckContract_1
186
181
// CHECK-NEXT: %false = hw.constant false
187
182
// CHECK-NEXT: %c2_i42 = hw.constant 2 : i42
188
- // CHECK-NEXT: %0 = verif.symbolic_value : i42
189
- // CHECK-NEXT: %1 = verif.symbolic_value : i42
190
- // CHECK-NEXT: %2 = comb.icmp ult %0 , %c2_i42 : i42
191
- // CHECK-NEXT: verif.assert %2 : i1
192
- // CHECK-NEXT: %3 = comb.extract %0 from 0 : (i42) -> i41
193
- // CHECK-NEXT: %4 = comb.concat %3 , %false : i41, i1
194
- // CHECK-NEXT: %5 = comb.icmp eq %1, %4 : i42
195
- // CHECK-NEXT: verif.assume %5 : i1
196
- // CHECK-NEXT: verif.assert %5 : i1
183
+ // CHECK-NEXT: [[TMP0:%.+]] = verif.symbolic_value : i42
184
+ // CHECK-NEXT: [[TMP1:%.+]] = verif.symbolic_value : i42
185
+ // CHECK-NEXT: [[TMP2:%.+]] = comb.icmp ult [[TMP0]] , %c2_i42 : i42
186
+ // CHECK-NEXT: verif.assert [[TMP2]] : i1
187
+ // CHECK-NEXT: [[TMP3:%.+]] = comb.extract [[TMP0]] from 0 : (i42) -> i41
188
+ // CHECK-NEXT: [[TMP4:%.+]] = comb.concat [[TMP3]] , %false : i41, i1
189
+ // CHECK-NEXT: [[TMP5:%.+]] = comb.icmp eq [[TMP1]], [[TMP4]] : i42
190
+ // CHECK-NEXT: verif.assume [[TMP5]] : i1
191
+ // CHECK-NEXT: verif.assert [[TMP5]] : i1
197
192
// CHECK-NEXT: }
198
193
199
194
hw.module @TwoContracts (in %a: i42 , out z : i42 ) {
@@ -215,41 +210,40 @@ hw.module @TwoContracts(in %a: i42, out z: i42) {
215
210
hw.output %4 : i42
216
211
}
217
212
218
- // CHECK: hw.module @NestedContract(in %a : i42, in %b : i42, in %s : i1, out z : i42) {
213
+ // CHECK-LABEL : hw.module @NestedContract
219
214
// CHECK-NEXT: %false = hw.constant false
220
- // CHECK-NEXT: %0 = comb.extract %a from 0 : (i42) -> i41
221
- // CHECK-NEXT: %1 = comb.concat %0 , %false : i41, i1
222
- // CHECK-NEXT: %2 = comb.mul %a, %a : i42
223
- // CHECK-NEXT: %3 = scf.if %s -> (i42) {
224
- // CHECK-NEXT: %6 = comb.add %1, %2 : i42
225
- // CHECK-NEXT: scf.yield %6 : i42
215
+ // CHECK-NEXT: [[TMP0:%.+]] = comb.extract %a from 0 : (i42) -> i41
216
+ // CHECK-NEXT: [[TMP1:%.+]] = comb.concat [[TMP0]] , %false : i41, i1
217
+ // CHECK-NEXT: [[TMP2:%.+]] = comb.mul %a, %a : i42
218
+ // CHECK-NEXT: [[TMP3:%.+]] = scf.if %s -> (i42) {
219
+ // CHECK-NEXT: [[TMP6:%.+]] = comb.add [[TMP1]], [[TMP2]] : i42
220
+ // CHECK-NEXT: scf.yield [[TMP6]] : i42
226
221
// CHECK-NEXT: } else {
227
- // CHECK-NEXT: %6 = comb.mul %1, %2 : i42
228
- // CHECK-NEXT: scf.yield %6 : i42
222
+ // CHECK-NEXT: [[TMP6:%.+]] = comb.mul [[TMP1]], [[TMP2]] : i42
223
+ // CHECK-NEXT: scf.yield [[TMP6]] : i42
229
224
// CHECK-NEXT: }
230
- // CHECK-NEXT: %4 = verif.symbolic_value : i42
231
- // CHECK-NEXT: %5 = comb.icmp eq %3, %b : i42
232
- // CHECK-NEXT: verif.assume %5 : i1
233
- // CHECK-NEXT: hw.output %3 : i42
225
+ // CHECK-NEXT: [[TMP5:%.+]] = comb.icmp eq [[TMP3]], %b : i42
226
+ // CHECK-NEXT: verif.assume [[TMP5]] : i1
227
+ // CHECK-NEXT: hw.output [[TMP3]] : i42
234
228
// CHECK-NEXT: }
235
229
236
- // CHECK: verif.formal @NestedContract_CheckContract_0 {} {
230
+ // CHECK-LABEL : verif.formal @NestedContract_CheckContract_0
237
231
// CHECK-NEXT: %false = hw.constant false
238
- // CHECK-NEXT: %0 = verif.symbolic_value : i42
239
- // CHECK-NEXT: %1 = verif.symbolic_value : i1
240
- // CHECK-NEXT: %2 = verif.symbolic_value : i42
241
- // CHECK-NEXT: %3 = comb.mul %2, %2 : i42
242
- // CHECK-NEXT: %4 = comb.extract %2 from 0 : (i42) -> i41
243
- // CHECK-NEXT: %5 = comb.concat %4 , %false : i41, i1
244
- // CHECK-NEXT: %6 = scf.if %1 -> (i42) {
245
- // CHECK-NEXT: %8 = comb.add %5, %3 : i42
246
- // CHECK-NEXT: scf.yield %8 : i42
232
+ // CHECK-NEXT: [[TMP0:%.+]] = verif.symbolic_value : i42
233
+ // CHECK-NEXT: [[TMP1:%.+]] = verif.symbolic_value : i1
234
+ // CHECK-NEXT: [[TMP2:%.+]] = verif.symbolic_value : i42
235
+ // CHECK-NEXT: [[TMP3:%.+]] = comb.mul [[TMP2]], [[TMP2]] : i42
236
+ // CHECK-NEXT: [[TMP4:%.+]] = comb.extract [[TMP2]] from 0 : (i42) -> i41
237
+ // CHECK-NEXT: [[TMP5:%.+]] = comb.concat [[TMP4]] , %false : i41, i1
238
+ // CHECK-NEXT: [[TMP6:%.+]] = scf.if [[TMP1]] -> (i42) {
239
+ // CHECK-NEXT: [[TMP8:%.+]] = comb.add [[TMP5]], [[TMP3]] : i42
240
+ // CHECK-NEXT: scf.yield [[TMP8]] : i42
247
241
// CHECK-NEXT: } else {
248
- // CHECK-NEXT: %8 = comb.mul %5, %3 : i42
249
- // CHECK-NEXT: scf.yield %8 : i42
242
+ // CHECK-NEXT: [[TMP8:%.+]] = comb.mul [[TMP5]], [[TMP3]] : i42
243
+ // CHECK-NEXT: scf.yield [[TMP8]] : i42
250
244
// CHECK-NEXT: }
251
- // CHECK-NEXT: %7 = comb.icmp eq %6, %0 : i42
252
- // CHECK-NEXT: verif.assert %7 : i1
245
+ // CHECK-NEXT: [[TMP7:%.+]] = comb.icmp eq [[TMP6]], [[TMP0]] : i42
246
+ // CHECK-NEXT: verif.assert [[TMP7]] : i1
253
247
// CHECK-NEXT: }
254
248
255
249
hw.module @NestedContract (in %a: i42 , in %b: i42 , in %s: i1 , out z : i42 ) {
0 commit comments