1
- // RUN: %target-swift-frontend -enable-experimental-concurrency -primary-file %s -module-name=test -disable-llvm-optzns -disable-swift-specific-llvm-optzns -emit-ir -sil-verify-all | %FileCheck %s
1
+ // RUN: %target-swift-frontend -enable-experimental-concurrency -primary-file %s -module-name=test -disable-llvm-optzns -disable-swift-specific-llvm-optzns -emit-ir -sil-verify-all | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-cpu
2
2
3
3
// REQUIRES: concurrency
4
4
@@ -15,12 +15,21 @@ final actor class MyActor {
15
15
}
16
16
17
17
// CHECK-LABEL: define{{.*}} void @test_simple(%swift.task* %0, %swift.executor* %1, %swift.context* %2)
18
+ // CHECK: [[TASK_LOC:%[0-9]+]] = alloca %swift.task*
18
19
// CHECK: [[CTX:%[0-9]+]] = bitcast %swift.context* %2
19
20
// CHECK: [[ACTOR_ADDR:%[0-9]+]] = getelementptr {{.*}} [[CTX]], i32 0, i32 6
20
21
// CHECK: [[ACTOR:%[0-9]+]] = load %T4test7MyActorC*, %T4test7MyActorC** [[ACTOR_ADDR]]
21
22
// CHECK: [[RESUME:%[0-9]+]] = call i8* @llvm.coro.async.resume()
23
+ // CHECK: [[TASK:%[0-9]+]] = load %swift.task*, %swift.task** [[TASK_LOC]]
24
+ // CHECK-arm64e: [[RESUME_ADDR:%[0-9]+]] = getelementptr inbounds %swift.task, %swift.task* [[TASK]], i32 0, i32 4
25
+ // CHECK-arm64e: [[RESUME_ADDR_INT:%[0-9]+]] = ptrtoint i8** [[RESUME_ADDR]] to i64
26
+ // CHECK-arm64e: [[PTRAUTH_BLEND:%[0-9]+]] = call i64 @llvm.ptrauth.blend.i64(i64 [[RESUME_ADDR_INT]], i64 11330)
27
+ // CHECK-arm64e: [[RESUME_INT:%[0-9]+]] = ptrtoint i8* [[RESUME]] to i64
28
+ // CHECK-arm64e: [[SIGNED_INT:%[0-9]+]] = call i64 @llvm.ptrauth.sign.i64(i64 [[RESUME_INT]], i32 0, i64 [[PTRAUTH_BLEND]])
29
+ // CHECK-arm64e: [[SIGNED_RESUME:%[0-9]+]] = inttoptr i64 [[SIGNED_INT]] to i8*
22
30
// CHECK: [[CAST_ACTOR:%[0-9]+]] = bitcast %T4test7MyActorC* [[ACTOR]] to %swift.executor*
23
- // CHECK: call {{.*}} @llvm.coro.suspend.async(i8* [[RESUME]], i8* bitcast (i8* (i8*)* @__swift_async_resume_get_context to i8*), i8* bitcast (void (i8*, %swift.executor*, %swift.task*, %swift.executor*, %swift.context*)* @__swift_suspend_point to i8*), i8* [[RESUME]], %swift.executor* [[CAST_ACTOR]], %swift.task* {{%[0-9]+}}, %swift.executor* {{%[0-9]+}}, %swift.context* {{%[0-9]+}})
31
+ // CHECK-x86_64: call {{.*}} @llvm.coro.suspend.async(i8* [[RESUME]], i8* bitcast (i8* (i8*)* @__swift_async_resume_get_context to i8*), i8* bitcast (void (i8*, %swift.executor*, %swift.task*, %swift.executor*, %swift.context*)* @__swift_suspend_point to i8*), i8* [[RESUME]], %swift.executor* [[CAST_ACTOR]], %swift.task* [[TASK]], %swift.executor* {{%[0-9]+}}, %swift.context* {{%[0-9]+}})
32
+ // CHECK-arm64e: call {{.*}} @llvm.coro.suspend.async(i8* [[SIGNED_RESUME]], i8* bitcast (i8* (i8*)* @__swift_async_resume_get_context to i8*), i8* bitcast (void (i8*, %swift.executor*, %swift.task*, %swift.executor*, %swift.context*)* @__swift_suspend_point to i8*), i8* [[SIGNED_RESUME]], %swift.executor* [[CAST_ACTOR]], %swift.task* [[TASK]], %swift.executor* {{%[0-9]+}}, %swift.context* {{%[0-9]+}})
24
33
sil @test_simple : $@convention(method) @async (@guaranteed MyActor) -> () {
25
34
bb0(%0 : $MyActor):
26
35
hop_to_executor %0 : $MyActor
0 commit comments