@@ -383,3 +383,110 @@ bb0:
383383 return %4 : $Int8
384384}
385385
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