@@ -20,56 +20,56 @@ public func loopTest(breakCount:Int32) -> Int32 {
20
20
*/
21
21
// CHECK-LABEL:--- XLA CFG Canonicalize: $loopWithBreak
22
22
// CHECK: [sequence
23
- // CHECK: <while Preheader: bb0 , Header: bb7 , exit: bb6
23
+ // CHECK: <while Preheader: [[PHDR:bb[0-9]+]] , Header: [[HDR:bb[0-9]+]] , exit: [[EXIT:bb[0-9]+]]
24
24
// CHECK: [sequence
25
- // CHECK: {condition Header: bb1
26
- // CHECK: {condition Header: bb3
27
- // CHECK: block bb5
28
- // CHECK: block bb4 }
29
- // CHECK: block bb2 }
30
- // CHECK: block bb8]>
31
- // CHECK: block bb6 ]
25
+ // CHECK: {condition Header: [[ORIG_HDR:bb[0-9]+]]
26
+ // CHECK: {condition Header: [[BRK_COND:bb[0-9]+]]
27
+ // CHECK: block [[BRK_TRUE:bb[0-9]+]]
28
+ // CHECK: block [[BRK_FALSE:bb[0-9]+]] }
29
+ // CHECK: block [[ORIG_EXIT:bb[0-9]+]] }
30
+ // CHECK: block [[LATCH:bb[0-9]+]]
31
+ // CHECK: block [[EXIT]] ]
32
32
// CHECK: --- XLA CFG Canonicalize end
33
33
34
34
//-- Preheader sets up the undefs, exit index, and stayInLoop flag.
35
- // CHECK: bb0 (%0 : $Builtin.Int32):
35
+ // CHECK: [[PHDR]] (%0 : $Builtin.Int32):
36
36
// CHECK: [[CONST_ONE:%.*]] = integer_literal $Builtin.Int32, 1
37
37
// CHECK: [[PHDR_EXIT:%.*]] = graph_op "Const"() {dtype: $Builtin.Int32, value$tensor: i32 0, __device: "ALL_DEVICES"}
38
38
// CHECK: [[PHDR_FLAG:%.*]] = graph_op "Const"() {dtype: $Builtin.Int1, value$tensor: i1 -1, __device: "ALL_DEVICES"}
39
- // CHECK: br bb7 ([[A:%.*]] : $Builtin.Int32, [[A]] : $Builtin.Int32, [[A]] : $Builtin.Int32, [[PHDR_EXIT]] : $TensorHandle<Builtin.Int32>, [[PHDR_FLAG]] : $TensorHandle<Builtin.Int1>)
39
+ // CHECK: br [[HDR]] ([[A:%.*]] : $Builtin.Int32, [[A]] : $Builtin.Int32, [[A]] : $Builtin.Int32, [[PHDR_EXIT]] : $TensorHandle<Builtin.Int32>, [[PHDR_FLAG]] : $TensorHandle<Builtin.Int1>)
40
40
41
41
// Original header
42
- // CHECK: bb1 :
42
+ // CHECK: [[ORIG_HDR]] :
43
43
// CHECK: [[A:%.*]] = builtin "cmp_slt_Int32"
44
- // CHECK: cond_br [[A]], bb3, bb2
44
+ // CHECK: cond_br [[A]], [[BRK_COND]], [[ORIG_EXIT]]
45
45
46
46
//- Sets up index to 1 and flag to false on the exit branch of the original header to latch.
47
- // CHECK: bb2 :
47
+ // CHECK: [[ORIG_EXIT]] :
48
48
// CHECK: [[LOCAL_EXIT_INDEX:%.*]] = graph_op "Const"() {dtype: $Builtin.Int32, value$tensor: i32 1, __device: "ALL_DEVICES"} : $TensorHandle<Builtin.Int32>
49
49
// CHECK: [[LOCAL_STAY_FLAG:%.*]] = graph_op "Const"() {dtype: $Builtin.Int1, value$tensor: i1 0, __device: "ALL_DEVICES"} : $TensorHandle<Builtin.Int1>
50
- // CHECK: br bb8 ([[SUM_AT_HDR:%.*]] : $Builtin.Int32, [[COUNT_AT_HDR:%.*]] : $Builtin.Int32, [[SUM_AT_HDR]] : $Builtin.Int32, [[LOCAL_EXIT_INDEX]] : $TensorHandle<Builtin.Int32>, [[LOCAL_STAY_FLAG]] : $TensorHandle<Builtin.Int1>)
50
+ // CHECK: br [[LATCH]] ([[SUM_AT_HDR:%.*]] : $Builtin.Int32, [[COUNT_AT_HDR:%.*]] : $Builtin.Int32, [[SUM_AT_HDR]] : $Builtin.Int32, [[LOCAL_EXIT_INDEX]] : $TensorHandle<Builtin.Int32>, [[LOCAL_STAY_FLAG]] : $TensorHandle<Builtin.Int1>)
51
51
52
- // CHECK: bb3 :
52
+ // CHECK: [[BRK_COND]] :
53
53
// CHECK: [[SUM_ESCAPING:%.*]] = builtin "sadd_with_overflow_Int32"([[SUM_AT_HDR]] : $Builtin.Int32, [[COUNT_AT_HDR]] : $Builtin.Int32) : $Builtin.Int32
54
54
// CHECK: [[COUNT_ESCAPING:%.*]] = builtin "sadd_with_overflow_Int32"([[COUNT_AT_HDR]] : $Builtin.Int32, [[CONST_ONE]] : $Builtin.Int32) : $Builtin.Int32
55
- // CHECK: cond_br {{.*}}, bb5, bb4
55
+ // CHECK: cond_br {{.*}}, [[BRK_TRUE]], [[BRK_FALSE]]
56
56
57
57
//- Sets up index to 0 and flag to true on the false branch of the if with break to latch.
58
- // CHECK: bb4 :
58
+ // CHECK: [[BRK_FALSE]] :
59
59
// CHECK: [[LOCAL_EXIT_INDEX:%.*]] = graph_op "Const"() {dtype: $Builtin.Int32, value$tensor: i32 0, __device: "ALL_DEVICES"} : $TensorHandle<Builtin.Int32>
60
60
// CHECK: [[LOCAL_STAY_FLAG:%.*]] = graph_op "Const"() {dtype: $Builtin.Int1, value$tensor: i1 -1, __device: "ALL_DEVICES"} : $TensorHandle<Builtin.Int1>
61
- // CHECK: br bb8 ([[SUM_ESCAPING]] : $Builtin.Int32, [[COUNT_ESCAPING]] : $Builtin.Int32, [[SUM_ESCAPING_AT_HDR:%.*]] : $Builtin.Int32, [[LOCAL_EXIT_INDEX]] : $TensorHandle<Builtin.Int32>, [[LOCAL_STAY_FLAG]] : $TensorHandle<Builtin.Int1>)
61
+ // CHECK: br [[LATCH]] ([[SUM_ESCAPING]] : $Builtin.Int32, [[COUNT_ESCAPING]] : $Builtin.Int32, [[SUM_ESCAPING_AT_HDR:%.*]] : $Builtin.Int32, [[LOCAL_EXIT_INDEX]] : $TensorHandle<Builtin.Int32>, [[LOCAL_STAY_FLAG]] : $TensorHandle<Builtin.Int1>)
62
62
63
63
//- Sets up index to 1 and flag to false on the true branch of the if with break to latch.
64
- // CHECK: bb5 :
64
+ // CHECK: [[BRK_TRUE]] :
65
65
// CHECK: [[LOCAL_EXIT_INDEX:%.*]] = graph_op "Const"() {dtype: $Builtin.Int32, value$tensor: i32 1, __device: "ALL_DEVICES"} : $TensorHandle<Builtin.Int32>
66
66
// CHECK: [[LOCAL_STAY_FLAG:%.*]] = graph_op "Const"() {dtype: $Builtin.Int1, value$tensor: i1 0, __device: "ALL_DEVICES"} : $TensorHandle<Builtin.Int1>
67
- // CHECK: br bb8 ([[SUM_AT_HDR]] : $Builtin.Int32, [[COUNT_AT_HDR]] : $Builtin.Int32, [[SUM_ESCAPING]] : $Builtin.Int32, [[LOCAL_EXIT_INDEX]] : $TensorHandle<Builtin.Int32>, [[LOCAL_STAY_FLAG]] : $TensorHandle<Builtin.Int1>)
67
+ // CHECK: br [[LATCH]] ([[SUM_AT_HDR]] : $Builtin.Int32, [[COUNT_AT_HDR]] : $Builtin.Int32, [[SUM_ESCAPING]] : $Builtin.Int32, [[LOCAL_EXIT_INDEX]] : $TensorHandle<Builtin.Int32>, [[LOCAL_STAY_FLAG]] : $TensorHandle<Builtin.Int1>)
68
68
69
69
//-- New Header simply checks flag
70
- // CHECK: bb7 ([[SUM_AT_HDR]] : $Builtin.Int32, [[COUNT_AT_HDR]] : $Builtin.Int32, [[SUM_ESCAPING_AT_HDR]] : $Builtin.Int32, [[HDR_EXIT_ARG:%.*]] : $TensorHandle<Builtin.Int32>, [[HDR_FLAG_ARG:%.*]] : $TensorHandle<Builtin.Int1>):
70
+ // CHECK: [[HDR]] ([[SUM_AT_HDR]] : $Builtin.Int32, [[COUNT_AT_HDR]] : $Builtin.Int32, [[SUM_ESCAPING_AT_HDR]] : $Builtin.Int32, [[HDR_EXIT_ARG:%.*]] : $TensorHandle<Builtin.Int32>, [[HDR_FLAG_ARG:%.*]] : $TensorHandle<Builtin.Int1>):
71
71
// CHECK: [[B:%.*]] = graph_op "tf_tensor_to_i1"([[HDR_FLAG_ARG]] : $TensorHandle<Builtin.Int1>) {{.*}} : $Builtin.Int1
72
- // CHECK: cond_br [[B]], bb1, bb6
72
+ // CHECK: cond_br [[B]], [[ORIG_HDR]], [[EXIT]]
73
73
74
74
sil @$loopWithBreak : $@convention(thin) (Builtin.Int32) -> Builtin.Int32 {
75
75
// %0 // user: %12
@@ -130,31 +130,31 @@ public func nestedLoopWithBreak(breakCount:Int32) -> Int32 {
130
130
*/
131
131
// CHECK-LABEL: --- XLA CFG Canonicalize: $nestedLoopWithBreak
132
132
// CHECK:[sequence
133
- // CHECK: <while Preheader: bb0 , Header: bb15 , exit: bb12
133
+ // CHECK: <while Preheader: [[OPHDR:bb[0-9]+]] , Header: [[OHDR:bb[0-9]+]] , exit: [[OEXIT:bb[0-9]+]]
134
134
// CHECK: [sequence
135
- // CHECK: {condition Header: bb1
135
+ // CHECK: {condition Header: [[OCOND:bb[0-9]+]]
136
136
// CHECK: [sequence
137
- // CHECK: <while Preheader: bb3 , Header: bb13 , exit: bb9
137
+ // CHECK: <while Preheader: [[IPHDR:bb[0-9]+]] , Header: [[IHDR:bb[0-9]+]] , exit: [[IEXIT:bb[0-9]+]]
138
138
// CHECK: [sequence
139
- // CHECK: {condition Header: bb4
140
- // CHECK: {condition Header: bb6
141
- // CHECK: block bb8
142
- // CHECK: block bb7 }
143
- // CHECK: block bb5 }
144
- // CHECK: block bb14 ]>
145
- // CHECK: {condition Header: bb9
146
- // CHECK: block bb10
147
- // CHECK: block bb11 }]
148
- // CHECK: block bb2 }
149
- // CHECK: block bb16 ]>
150
- // CHECK: block bb12 ]
139
+ // CHECK: {condition Header: {{bb[0-9]+}}
140
+ // CHECK: {condition Header: {{bb[0-9]+}}
141
+ // CHECK: block {{bb[0-9]+}}
142
+ // CHECK: block {{bb[0-9]+} }
143
+ // CHECK: block {{bb[0-9]+} }
144
+ // CHECK: block {{bb[0-9]+}} ]>
145
+ // CHECK: {condition Header: {{bb[0-9]+}}
146
+ // CHECK: block {{bb[0-9]+}}
147
+ // CHECK: block {{bb[0-9]+}} }]
148
+ // CHECK: block {{bb[0-9]+}} }
149
+ // CHECK: block {{bb[0-9]+}} ]>
150
+ // CHECK: block [[OEXIT]] ]
151
151
//-- Loop preheaders have appropriate number of additional arguments
152
152
//-- Outer loop
153
- // CHECK: bb0 (%0 : $Builtin.Int32):
154
- // CHECK: br bb15 ([[A:%.*]] : $Builtin.Int32, [[A]] : $Builtin.Int32, [[A]] : $Builtin.Int32, [[A]] : $Builtin.Int32, {{.*}} : $TensorHandle<Builtin.Int32>, {{.*}} : $TensorHandle<Builtin.Int1>)
153
+ // CHECK: [[OPHDR]] (%0 : $Builtin.Int32):
154
+ // CHECK: br [[OHDR]] ([[A:%.*]] : $Builtin.Int32, [[A]] : $Builtin.Int32, [[A]] : $Builtin.Int32, [[A]] : $Builtin.Int32, {{.*}} : $TensorHandle<Builtin.Int32>, {{.*}} : $TensorHandle<Builtin.Int1>)
155
155
//-- Inner loop
156
- // CHECK: bb3 : // Preds: bb1
157
- // CHECK: br bb13 ({{.*}} : $Builtin.Int32, {{.*}} : $Builtin.Int32, [[B:%[0-9]+]] : $Builtin.Int32, [[B]] : $Builtin.Int32, {{.*}} : $TensorHandle<Builtin.Int32>, {{.*}} : $TensorHandle<Builtin.Int1>)
156
+ // CHECK: [[IPHDR]] : // Preds: [[OCOND]]
157
+ // CHECK: br [[IHDR]] ({{.*}} : $Builtin.Int32, {{.*}} : $Builtin.Int32, [[B:%[0-9]+]] : $Builtin.Int32, [[B]] : $Builtin.Int32, {{.*}} : $TensorHandle<Builtin.Int32>, {{.*}} : $TensorHandle<Builtin.Int1>)
158
158
159
159
sil @$nestedLoopWithBreak : $@convention(thin) (Builtin.Int32) -> Builtin.Int32 {
160
160
// %0 // users: %27, %26, %19
@@ -231,20 +231,20 @@ public func nestedLoopWithBreak(breakCount:Int32) -> Int32 {
231
231
232
232
// CHECK-LABEL: --- XLA CFG Canonicalize: $doWhileLoop
233
233
// CHECK: [sequence
234
- // CHECK: <while Preheader: bb0 , Header: bb7 , exit: bb6
234
+ // CHECK: <while Preheader: [[PHDR:bb[0-9]+]] , Header: [[HDR:bb[0-9]+]] , exit: [[EXIT:bb[0-9]+]]
235
235
// CHECK: [sequence
236
- // CHECK: {condition Header: bb1
237
- // CHECK: {condition Header: bb3
238
- // CHECK: block bb4
239
- // CHECK: block bb5 }
240
- // CHECK: block bb2 }
241
- // CHECK: block bb8 ]>
242
- // CHECK: block bb6 ]
236
+ // CHECK: {condition Header: {{bb[0-9]+}}
237
+ // CHECK: {condition Header: {{bb[0-9]+}}
238
+ // CHECK: block {{bb[0-9]+}}
239
+ // CHECK: block {{bb[0-9]+}} }
240
+ // CHECK: block {{bb[0-9]+}} }
241
+ // CHECK: block {{bb[0-9]+}} ]>
242
+ // CHECK: block {{bb[0-9]+}} ]
243
243
244
244
// Make sure undef is still left in this case for now.
245
245
// CHECK: sil @$doWhileLoop : {{.*}} (Builtin.Int32) -> Builtin.Int32 {
246
- // CHECK: bb0 ({{.*}} : $Builtin.Int32):
247
- // CHECK: br bb7 ({{.*}} : $Builtin.Int32, undef : $Builtin.Int32, {{.*}} : $TensorHandle<Builtin.Int32>, {{.*}} : $TensorHandle<Builtin.Int1>)
246
+ // CHECK: [[PHDR]] ({{.*}} : $Builtin.Int32):
247
+ // CHECK: br [[HDR]] ({{.*}} : $Builtin.Int32, undef : $Builtin.Int32, {{.*}} : $TensorHandle<Builtin.Int32>, {{.*}} : $TensorHandle<Builtin.Int1>)
248
248
249
249
sil @$doWhileLoop : $@convention(thin) (Builtin.Int32) -> Builtin.Int32 {
250
250
bb0(%0 : $Builtin.Int32):
0 commit comments