@@ -383,3 +383,110 @@ bb0:
383
383
return %4 : $Int8
384
384
}
385
385
386
+ // CHECK-LABEL: sil @convert_thick_to_thin1
387
+ // CHECK-NOT: metatype $@thick C1<Int>.Type
388
+ // CHECK: [[L:%.*]] = metatype $@thin C1<Int>.Type
389
+ // CHECK: [[R:%.*]] = builtin "copyArray"<C1<Int>>([[L:%.*]] : $@thin C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
390
+ // CHECK: return %0 : $Builtin.RawPointer
391
+ sil @convert_thick_to_thin1 : $@convention(thin) (Builtin.RawPointer, Builtin.Word) -> Builtin.RawPointer {
392
+ bb0(%0 : $Builtin.RawPointer, %1 : $Builtin.Word):
393
+ %2 = metatype $@thick C1<Int>.Type
394
+ %3 = builtin "copyArray"<C1<Int>>(%2 : $@thick C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
395
+ return %0 : $Builtin.RawPointer
396
+ }
397
+
398
+ // CHECK-LABEL: sil @convert_thick_to_thin2
399
+ // CHECK-NOT: metatype $@thick C1<Int>.Type
400
+ // CHECK: [[L:%.*]] = metatype $@thin C1<Int>.Type
401
+ // CHECK: [[R:%.*]] = builtin "takeArrayNoAlias"<C1<Int>>([[L:%.*]] : $@thin C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
402
+ // CHECK: return %0 : $Builtin.RawPointer
403
+ sil @convert_thick_to_thin2 : $@convention(thin) (Builtin.RawPointer, Builtin.Word) -> Builtin.RawPointer {
404
+ bb0(%0 : $Builtin.RawPointer, %1 : $Builtin.Word):
405
+ %2 = metatype $@thick C1<Int>.Type
406
+ %3 = builtin "takeArrayNoAlias"<C1<Int>>(%2 : $@thick C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
407
+ return %0 : $Builtin.RawPointer
408
+ }
409
+
410
+ // CHECK-LABEL: sil @convert_thick_to_thin3
411
+ // CHECK-NOT: metatype $@thick C1<Int>.Type
412
+ // CHECK: [[L:%.*]] = metatype $@thin C1<Int>.Type
413
+ // CHECK: [[R:%.*]] = builtin "takeArrayFrontToBack"<C1<Int>>([[L:%.*]] : $@thin C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
414
+ // CHECK: return %0 : $Builtin.RawPointer
415
+ sil @convert_thick_to_thin3 : $@convention(thin) (Builtin.RawPointer, Builtin.Word) -> Builtin.RawPointer {
416
+ bb0(%0 : $Builtin.RawPointer, %1 : $Builtin.Word):
417
+ %2 = metatype $@thick C1<Int>.Type
418
+ %3 = builtin "takeArrayFrontToBack"<C1<Int>>(%2 : $@thick C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
419
+ return %0 : $Builtin.RawPointer
420
+ }
421
+
422
+ // CHECK-LABEL: sil @convert_thick_to_thin4
423
+ // CHECK-NOT: metatype $@thick C1<Int>.Type
424
+ // CHECK: [[L:%.*]] = metatype $@thin C1<Int>.Type
425
+ // CHECK: [[R:%.*]] = builtin "takeArrayBackToFront"<C1<Int>>([[L:%.*]] : $@thin C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
426
+ // CHECK: return %0 : $Builtin.RawPointer
427
+ sil @convert_thick_to_thin4 : $@convention(thin) (Builtin.RawPointer, Builtin.Word) -> Builtin.RawPointer {
428
+ bb0(%0 : $Builtin.RawPointer, %1 : $Builtin.Word):
429
+ %2 = metatype $@thick C1<Int>.Type
430
+ %3 = builtin "takeArrayBackToFront"<C1<Int>>(%2 : $@thick C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
431
+ return %0 : $Builtin.RawPointer
432
+ }
433
+
434
+ // CHECK-LABEL: sil @convert_thick_to_thin5
435
+ // CHECK-NOT: metatype $@thick C1<Int>.Type
436
+ // CHECK: [[L:%.*]] = metatype $@thin C1<Int>.Type
437
+ // CHECK: [[R:%.*]] = builtin "assignCopyArrayNoAlias"<C1<Int>>([[L:%.*]] : $@thin C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
438
+ // CHECK: return %0 : $Builtin.RawPointer
439
+ sil @convert_thick_to_thin5 : $@convention(thin) (Builtin.RawPointer, Builtin.Word) -> Builtin.RawPointer {
440
+ bb0(%0 : $Builtin.RawPointer, %1 : $Builtin.Word):
441
+ %2 = metatype $@thick C1<Int>.Type
442
+ %3 = builtin "assignCopyArrayNoAlias"<C1<Int>>(%2 : $@thick C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
443
+ return %0 : $Builtin.RawPointer
444
+ }
445
+
446
+ // CHECK-LABEL: sil @convert_thick_to_thin6
447
+ // CHECK-NOT: metatype $@thick C1<Int>.Type
448
+ // CHECK: [[L:%.*]] = metatype $@thin C1<Int>.Type
449
+ // CHECK: [[R:%.*]] = builtin "assignCopyArrayFrontToBack"<C1<Int>>([[L:%.*]] : $@thin C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
450
+ // CHECK: return %0 : $Builtin.RawPointer
451
+ sil @convert_thick_to_thin6 : $@convention(thin) (Builtin.RawPointer, Builtin.Word) -> Builtin.RawPointer {
452
+ bb0(%0 : $Builtin.RawPointer, %1 : $Builtin.Word):
453
+ %2 = metatype $@thick C1<Int>.Type
454
+ %3 = builtin "assignCopyArrayFrontToBack"<C1<Int>>(%2 : $@thick C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
455
+ return %0 : $Builtin.RawPointer
456
+ }
457
+
458
+ // CHECK-LABEL: sil @convert_thick_to_thin7
459
+ // CHECK-NOT: metatype $@thick C1<Int>.Type
460
+ // CHECK: [[L:%.*]] = metatype $@thin C1<Int>.Type
461
+ // CHECK: [[R:%.*]] = builtin "assignCopyArrayBackToFront"<C1<Int>>([[L:%.*]] : $@thin C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
462
+ // CHECK: return %0 : $Builtin.RawPointer
463
+ sil @convert_thick_to_thin7 : $@convention(thin) (Builtin.RawPointer, Builtin.Word) -> Builtin.RawPointer {
464
+ bb0(%0 : $Builtin.RawPointer, %1 : $Builtin.Word):
465
+ %2 = metatype $@thick C1<Int>.Type
466
+ %3 = builtin "assignCopyArrayBackToFront"<C1<Int>>(%2 : $@thick C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
467
+ return %0 : $Builtin.RawPointer
468
+ }
469
+
470
+ // CHECK-LABEL: sil @convert_thick_to_thin8
471
+ // CHECK-NOT: metatype $@thick C1<Int>.Type
472
+ // CHECK: [[L:%.*]] = metatype $@thin C1<Int>.Type
473
+ // CHECK: [[R:%.*]] = builtin "assignTakeArray"<C1<Int>>([[L:%.*]] : $@thin C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
474
+ // CHECK: return %0 : $Builtin.RawPointer
475
+ sil @convert_thick_to_thin8 : $@convention(thin) (Builtin.RawPointer, Builtin.Word) -> Builtin.RawPointer {
476
+ bb0(%0 : $Builtin.RawPointer, %1 : $Builtin.Word):
477
+ %2 = metatype $@thick C1<Int>.Type
478
+ %3 = builtin "assignTakeArray"<C1<Int>>(%2 : $@thick C1<Int>.Type, %0 : $Builtin.RawPointer, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
479
+ return %0 : $Builtin.RawPointer
480
+ }
481
+
482
+ // CHECK-LABEL: sil @convert_thick_to_thin9
483
+ // CHECK-NOT: metatype $@thick C1<Int>.Type
484
+ // CHECK: [[L:%.*]] = metatype $@thin C1<Int>.Type
485
+ // CHECK: [[R:%.*]] = builtin "destroyArray"<C1<Int>>([[L:%.*]] : $@thin C1<Int>.Type, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
486
+ // CHECK: return %0 : $Builtin.RawPointer
487
+ sil @convert_thick_to_thin9 : $@convention(thin) (Builtin.RawPointer, Builtin.Word) -> Builtin.RawPointer {
488
+ bb0(%0 : $Builtin.RawPointer, %1 : $Builtin.Word):
489
+ %2 = metatype $@thick C1<Int>.Type
490
+ %3 = builtin "destroyArray"<C1<Int>>(%2 : $@thick C1<Int>.Type, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
491
+ return %0 : $Builtin.RawPointer
492
+ }
0 commit comments