Skip to content

Commit badd33c

Browse files
committed
[embedded] Add thick->thin conversion SIL tests in simplify_buildin.sil
1 parent 51792d8 commit badd33c

File tree

2 files changed

+107
-2
lines changed

2 files changed

+107
-2
lines changed

test/SILOptimizer/simplify_builtin.sil

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
}

test/embedded/array-builtins-no-stdlib.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ struct MyStruct {
1111
}
1212

1313
public func foo(x: Builtin.RawPointer, y: Builtin.RawPointer, count: Builtin.Word) {
14-
Builtin.copyArray(MyStruct.self, x, y, count)
1514
Builtin.copyArray(MyStruct.self, x, y, count)
1615
Builtin.takeArrayNoAlias(MyStruct.self, x, y, count)
1716
Builtin.takeArrayFrontToBack(MyStruct.self, x, y, count)
@@ -30,7 +29,6 @@ public func bar(x: Builtin.RawPointer, y: Builtin.RawPointer, count: Builtin.Wor
3029

3130
public struct MyGenericStruct<T> {
3231
public func foo(x: Builtin.RawPointer, y: Builtin.RawPointer, count: Builtin.Word) {
33-
Builtin.copyArray(T.self, x, y, count)
3432
Builtin.copyArray(T.self, x, y, count)
3533
Builtin.takeArrayNoAlias(T.self, x, y, count)
3634
Builtin.takeArrayFrontToBack(T.self, x, y, count)

0 commit comments

Comments
 (0)