@@ -297,6 +297,84 @@ bb6(%72 : $Builtin.Int64):
297
297
return %401 : $()
298
298
}
299
299
300
+ // CHECK-LABEL: sil @loop_unroll_unsigned_overflow_1
301
+ // CHECK: bb0
302
+ // CHECK: br bb1
303
+ // CHECK: bb1
304
+ // CHECK: builtin "uadd_with_overflow_Word"
305
+ // CHECK: cond_br {{.*}}, bb2, bb3
306
+ // CHECK: bb2
307
+ // CHECK: br bb7
308
+ // CHECK: bb3
309
+ // CHECK: br bb4
310
+ // CHECK: bb4
311
+ // CHECK: builtin "uadd_with_overflow_Word"
312
+ // CHECK: br bb5
313
+ // CHECK: bb5
314
+ // CHECK: br bb7
315
+ // CHECK: bb7:
316
+ // CHECK: return
317
+
318
+ sil @loop_unroll_unsigned_overflow_1 : $@convention(thin) () -> () {
319
+ bb0:
320
+ %0 = integer_literal $Builtin.Word, 0
321
+ %1 = integer_literal $Builtin.Word, 1
322
+ %2 = integer_literal $Builtin.Word, 2
323
+ %3 = integer_literal $Builtin.Int1, 1
324
+ br bb1(%0 : $Builtin.Word)
325
+
326
+ bb1(%4 : $Builtin.Word):
327
+ %5 = builtin "uadd_with_overflow_Word"(%4 : $Builtin.Word, %1 : $Builtin.Word, %3 : $Builtin.Int1) : $(Builtin.Word, Builtin.Int1)
328
+ %6 = tuple_extract %5 : $(Builtin.Word, Builtin.Int1), 0
329
+ %7 = builtin "cmp_eq_Word"(%6 : $Builtin.Word, %2 : $Builtin.Word) : $Builtin.Int1
330
+ cond_br %7, bb3, bb2
331
+
332
+ bb2:
333
+ br bb1(%6 : $Builtin.Word)
334
+
335
+ bb3:
336
+ %9 = tuple()
337
+ return %9 : $()
338
+ }
339
+
340
+ // CHECK-LABEL: sil @loop_unroll_no_overflow_1
341
+ // CHECK: bb0
342
+ // CHECK: br bb1
343
+ // CHECK: bb1
344
+ // CHECK: builtin "add_Int64"
345
+ // CHECK: cond_br {{.*}}, bb2, bb3
346
+ // CHECK: bb2
347
+ // CHECK: br bb7
348
+ // CHECK: bb3
349
+ // CHECK: br bb4
350
+ // CHECK: bb4
351
+ // CHECK: builtin "add_Int64"
352
+ // CHECK: br bb5
353
+ // CHECK: bb5
354
+ // CHECK: br bb7
355
+ // CHECK: bb7:
356
+ // CHECK: return
357
+
358
+ sil @loop_unroll_no_overflow_1 : $@convention(thin) () -> () {
359
+ bb0:
360
+ %0 = integer_literal $Builtin.Int64, 0
361
+ %1 = integer_literal $Builtin.Int64, 1
362
+ %2 = integer_literal $Builtin.Int64, 2
363
+ br bb1(%0 : $Builtin.Int64)
364
+
365
+ bb1(%4 : $Builtin.Int64):
366
+ %5 = builtin "add_Int64"(%4 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
367
+ %7 = builtin "cmp_eq_Int64"(%5 : $Builtin.Int64, %2 : $Builtin.Int64) : $Builtin.Int1
368
+ cond_br %7, bb3, bb2
369
+
370
+ bb2:
371
+ br bb1(%5 : $Builtin.Int64)
372
+
373
+ bb3:
374
+ %9 = tuple()
375
+ return %9 : $()
376
+ }
377
+
300
378
// CHECK-LABEL: sil @unroll_with_exit_block_arg_2
301
379
// CHECK: bb1({{.*}}):
302
380
// CHECK: cond_br {{.*}}, bb4, bb2
0 commit comments