Changeset View
Changeset View
Standalone View
Standalone View
clang/test/OpenMP/target_parallel_if_codegen.cpp
Show First 20 Lines • Show All 145 Lines • ▼ Show 20 Lines | |||||
// CHECK: store i8 [[FB]], i8* [[CAPE_ADDR:%.+]], align | // CHECK: store i8 [[FB]], i8* [[CAPE_ADDR:%.+]], align | ||||
// CHECK: [[CAPE:%.+]] = load i8, i8* [[CAPE_ADDR]], align | // CHECK: [[CAPE:%.+]] = load i8, i8* [[CAPE_ADDR]], align | ||||
// CHECK: [[TB:%.+]] = trunc i8 [[CAPE]] to i1 | // CHECK: [[TB:%.+]] = trunc i8 [[CAPE]] to i1 | ||||
// CHECK: [[CONV:%.+]] = bitcast i[[SZ]]* [[CAPEC_ADDR:%.+]] to i8* | // CHECK: [[CONV:%.+]] = bitcast i[[SZ]]* [[CAPEC_ADDR:%.+]] to i8* | ||||
// CHECK: [[FB:%.+]] = zext i1 [[TB]] to i8 | // CHECK: [[FB:%.+]] = zext i1 [[TB]] to i8 | ||||
// CHECK: store i8 [[FB]], i8* [[CONV]], align | // CHECK: store i8 [[FB]], i8* [[CONV]], align | ||||
// CHECK: [[ARG:%.+]] = load i[[SZ]], i[[SZ]]* [[CAPEC_ADDR]], align | // CHECK: [[ARG:%.+]] = load i[[SZ]], i[[SZ]]* [[CAPEC_ADDR]], align | ||||
// | // | ||||
// CHECK-DAG: [[RET:%.+]] = call i32 @__tgt_target_teams(i64 -1, i8* @{{[^,]+}}, i32 4, {{.*}}, i32 1, i32 [[NT:%.+]]) | // CHECK-DAG: [[RET:%.+]] = call i32 @__tgt_target_teams_mapper(i64 -1, i8* @{{[^,]+}}, i32 4, {{.*}}, i8** null, i32 1, i32 [[NT:%.+]]) | ||||
// CHECK-DAG: [[NT]] = select i1 %{{.+}}, i32 0, i32 1 | // CHECK-DAG: [[NT]] = select i1 %{{.+}}, i32 0, i32 1 | ||||
// CHECK: [[ERROR:%.+]] = icmp ne i32 [[RET]], 0 | // CHECK: [[ERROR:%.+]] = icmp ne i32 [[RET]], 0 | ||||
// CHECK: br i1 [[ERROR]], label %[[FAIL:.+]], label %[[END:[^,]+]] | // CHECK: br i1 [[ERROR]], label %[[FAIL:.+]], label %[[END:[^,]+]] | ||||
// | // | ||||
// CHECK: [[FAIL]] | // CHECK: [[FAIL]] | ||||
// CHECK: call void [[HVT1:@.+]]([[S1]]* {{%.+}}, i[[SZ]] {{%.+}}, i[[SZ]] [[ARG]]) | // CHECK: call void [[HVT1:@.+]]([[S1]]* {{%.+}}, i[[SZ]] {{%.+}}, i[[SZ]] [[ARG]]) | ||||
// CHECK: br label {{%?}}[[END]] | // CHECK: br label {{%?}}[[END]] | ||||
// CHECK: [[END]] | // CHECK: [[END]] | ||||
Show All 10 Lines | |||||
// CHECK: [[FB:%.+]] = zext i1 [[TB]] to i8 | // CHECK: [[FB:%.+]] = zext i1 [[TB]] to i8 | ||||
// CHECK: store i8 [[FB]], i8* [[CONV]], align | // CHECK: store i8 [[FB]], i8* [[CONV]], align | ||||
// CHECK: [[ARG:%.+]] = load i[[SZ]], i[[SZ]]* [[CAPEC_ADDR]], align | // CHECK: [[ARG:%.+]] = load i[[SZ]], i[[SZ]]* [[CAPEC_ADDR]], align | ||||
// CHECK: [[NV:%.+]] = load i32, i32* [[N_ADDR]], align | // CHECK: [[NV:%.+]] = load i32, i32* [[N_ADDR]], align | ||||
// CHECK: [[CMP:%.+]] = icmp sgt i32 [[NV]], 4 | // CHECK: [[CMP:%.+]] = icmp sgt i32 [[NV]], 4 | ||||
// CHECK: br i1 [[CMP]], label {{%?}}[[IF_THEN:.+]], label {{%?}}[[IF_ELSE:.+]] | // CHECK: br i1 [[CMP]], label {{%?}}[[IF_THEN:.+]], label {{%?}}[[IF_ELSE:.+]] | ||||
// | // | ||||
// CHECK: [[IF_THEN]] | // CHECK: [[IF_THEN]] | ||||
// CHECK-DAG: [[RET:%.+]] = call i32 @__tgt_target_teams(i64 -1, i8* @{{[^,]+}}, i32 3, {{.*}}, i32 1, i32 [[NT:%.+]]) | // CHECK-DAG: [[RET:%.+]] = call i32 @__tgt_target_teams_mapper(i64 -1, i8* @{{[^,]+}}, i32 3, {{.*}}, i8** null, i32 1, i32 [[NT:%.+]]) | ||||
// CHECK-DAG: [[NT]] = select i1 %{{.+}}, i32 0, i32 1 | // CHECK-DAG: [[NT]] = select i1 %{{.+}}, i32 0, i32 1 | ||||
// CHECK: [[ERROR:%.+]] = icmp ne i32 [[RET]], 0 | // CHECK: [[ERROR:%.+]] = icmp ne i32 [[RET]], 0 | ||||
// CHECK-NEXT: br i1 [[ERROR]], label %[[FAIL:.+]], label %[[END:[^,]+]] | // CHECK-NEXT: br i1 [[ERROR]], label %[[FAIL:.+]], label %[[END:[^,]+]] | ||||
// CHECK: [[FAIL]] | // CHECK: [[FAIL]] | ||||
// CHECK: call void [[HVT2:@.+]]([[S1]]* {{%.+}}, i[[SZ]] [[ARG]]) | // CHECK: call void [[HVT2:@.+]]([[S1]]* {{%.+}}, i[[SZ]] [[ARG]]) | ||||
// CHECK-NEXT: br label %[[END]] | // CHECK-NEXT: br label %[[END]] | ||||
// CHECK: [[END]] | // CHECK: [[END]] | ||||
// CHECK-NEXT: br label %[[IFEND:.+]] | // CHECK-NEXT: br label %[[IFEND:.+]] | ||||
Show All 16 Lines | |||||
// CHECK: [[FB:%.+]] = zext i1 [[TB]] to i8 | // CHECK: [[FB:%.+]] = zext i1 [[TB]] to i8 | ||||
// CHECK: store i8 [[FB]], i8* [[CONV]], align | // CHECK: store i8 [[FB]], i8* [[CONV]], align | ||||
// CHECK: [[ARG:%.+]] = load i[[SZ]], i[[SZ]]* [[CAPEC_ADDR]], align | // CHECK: [[ARG:%.+]] = load i[[SZ]], i[[SZ]]* [[CAPEC_ADDR]], align | ||||
// CHECK: [[CAPE2:%.+]] = load i8, i8* [[CAPE_ADDR]], align | // CHECK: [[CAPE2:%.+]] = load i8, i8* [[CAPE_ADDR]], align | ||||
// CHECK: [[TB:%.+]] = trunc i8 [[CAPE2]] to i1 | // CHECK: [[TB:%.+]] = trunc i8 [[CAPE2]] to i1 | ||||
// CHECK: br i1 [[TB]], label {{%?}}[[IF_THEN:.+]], label {{%?}}[[IF_ELSE:.+]] | // CHECK: br i1 [[TB]], label {{%?}}[[IF_THEN:.+]], label {{%?}}[[IF_ELSE:.+]] | ||||
// | // | ||||
// CHECK: [[IF_THEN]] | // CHECK: [[IF_THEN]] | ||||
// CHECK-DAG: [[RET:%.+]] = call i32 @__tgt_target_teams(i64 -1, i8* @{{[^,]+}}, i32 1, {{.*}}, i32 1, i32 [[NT:%.+]]) | // CHECK-DAG: [[RET:%.+]] = call i32 @__tgt_target_teams_mapper(i64 -1, i8* @{{[^,]+}}, i32 1, {{.*}}, i8** null, i32 1, i32 [[NT:%.+]]) | ||||
// CHECK-DAG: [[NT]] = select i1 %{{.+}}, i32 0, i32 1 | // CHECK-DAG: [[NT]] = select i1 %{{.+}}, i32 0, i32 1 | ||||
// CHECK: [[ERROR:%.+]] = icmp ne i32 [[RET]], 0 | // CHECK: [[ERROR:%.+]] = icmp ne i32 [[RET]], 0 | ||||
// CHECK-NEXT: br i1 [[ERROR]], label %[[FAIL:.+]], label %[[END:[^,]+]] | // CHECK-NEXT: br i1 [[ERROR]], label %[[FAIL:.+]], label %[[END:[^,]+]] | ||||
// CHECK: [[FAIL]] | // CHECK: [[FAIL]] | ||||
// CHECK: call void [[HVT3:@.+]](i[[SZ]] [[ARG]]) | // CHECK: call void [[HVT3:@.+]](i[[SZ]] [[ARG]]) | ||||
// CHECK-NEXT: br label %[[END]] | // CHECK-NEXT: br label %[[END]] | ||||
// CHECK: [[END]] | // CHECK: [[END]] | ||||
// CHECK-NEXT: br label %[[IFEND:.+]] | // CHECK-NEXT: br label %[[IFEND:.+]] | ||||
// CHECK: [[IF_ELSE]] | // CHECK: [[IF_ELSE]] | ||||
// CHECK: call void [[HVT3]](i[[SZ]] [[ARG]]) | // CHECK: call void [[HVT3]](i[[SZ]] [[ARG]]) | ||||
// CHECK-NEXT: br label %[[IFEND]] | // CHECK-NEXT: br label %[[IFEND]] | ||||
// CHECK: [[IFEND]] | // CHECK: [[IFEND]] | ||||
// | // | ||||
// | // | ||||
// | // | ||||
// CHECK-DAG: [[NV:%.+]] = load i32, i32* [[N_ADDR]], align | // CHECK-DAG: [[NV:%.+]] = load i32, i32* [[N_ADDR]], align | ||||
// CHECK: [[SUB:%.+]] = sub nsw i32 [[NV]], 2 | // CHECK: [[SUB:%.+]] = sub nsw i32 [[NV]], 2 | ||||
// CHECK: [[CMP:%.+]] = icmp sgt i32 [[SUB]], 2 | // CHECK: [[CMP:%.+]] = icmp sgt i32 [[SUB]], 2 | ||||
// CHECK: br i1 [[CMP]], label {{%?}}[[IF_THEN:.+]], label {{%?}}[[IF_ELSE:.+]] | // CHECK: br i1 [[CMP]], label {{%?}}[[IF_THEN:.+]], label {{%?}}[[IF_ELSE:.+]] | ||||
// | // | ||||
// CHECK: [[IF_THEN]] | // CHECK: [[IF_THEN]] | ||||
// CHECK-DAG: [[RET:%.+]] = call i32 @__tgt_target_teams(i64 -1, i8* @{{[^,]+}}, i32 0, {{.*}}, i32 1, i32 0) | // CHECK-DAG: [[RET:%.+]] = call i32 @__tgt_target_teams_mapper(i64 -1, i8* @{{[^,]+}}, i32 0, {{.*}}, i8** null, i32 1, i32 0) | ||||
// CHECK: [[ERROR:%.+]] = icmp ne i32 [[RET]], 0 | // CHECK: [[ERROR:%.+]] = icmp ne i32 [[RET]], 0 | ||||
// CHECK-NEXT: br i1 [[ERROR]], label %[[FAIL:.+]], label %[[END:[^,]+]] | // CHECK-NEXT: br i1 [[ERROR]], label %[[FAIL:.+]], label %[[END:[^,]+]] | ||||
// CHECK: [[FAIL]] | // CHECK: [[FAIL]] | ||||
// CHECK: call void [[HVT4:@.+]]() | // CHECK: call void [[HVT4:@.+]]() | ||||
// CHECK-NEXT: br label %[[END]] | // CHECK-NEXT: br label %[[END]] | ||||
// CHECK: [[END]] | // CHECK: [[END]] | ||||
// CHECK-NEXT: br label %[[IFEND:.+]] | // CHECK-NEXT: br label %[[IFEND:.+]] | ||||
// CHECK: [[IF_ELSE]] | // CHECK: [[IF_ELSE]] | ||||
// CHECK: call void [[HVT4]]() | // CHECK: call void [[HVT4]]() | ||||
// CHECK-NEXT: br label %[[IFEND]] | // CHECK-NEXT: br label %[[IFEND]] | ||||
// CHECK: [[IFEND]] | // CHECK: [[IFEND]] | ||||
// | // | ||||
// CHECK: define {{.*}}[[FTEMPLATE]] | // CHECK: define {{.*}}[[FTEMPLATE]] | ||||
// | // | ||||
// CHECK-DAG: [[RET:%.+]] = call i32 @__tgt_target_teams(i64 -1, i8* @{{[^,]+}}, i32 1, {{.*}}, i32 1, i32 1) | // CHECK-DAG: [[RET:%.+]] = call i32 @__tgt_target_teams_mapper(i64 -1, i8* @{{[^,]+}}, i32 1, {{.*}}, i8** null, i32 1, i32 1) | ||||
// CHECK-NEXT: [[ERROR:%.+]] = icmp ne i32 [[RET]], 0 | // CHECK-NEXT: [[ERROR:%.+]] = icmp ne i32 [[RET]], 0 | ||||
// CHECK-NEXT: br i1 [[ERROR]], label %[[FAIL:.+]], label %[[END:[^,]+]] | // CHECK-NEXT: br i1 [[ERROR]], label %[[FAIL:.+]], label %[[END:[^,]+]] | ||||
// | // | ||||
// CHECK: [[FAIL]] | // CHECK: [[FAIL]] | ||||
// CHECK: call void [[HVT5:@.+]]({{[^,]+}}) | // CHECK: call void [[HVT5:@.+]]({{[^,]+}}) | ||||
// CHECK: br label {{%?}}[[END]] | // CHECK: br label {{%?}}[[END]] | ||||
// | // | ||||
// CHECK: [[END]] | // CHECK: [[END]] | ||||
// | // | ||||
// | // | ||||
// | // | ||||
// CHECK-DAG: [[RET:%.+]] = call i32 @__tgt_target_teams(i64 -1, i8* @{{[^,]+}}, i32 2, {{.*}}, i32 1, i32 0) | // CHECK-DAG: [[RET:%.+]] = call i32 @__tgt_target_teams_mapper(i64 -1, i8* @{{[^,]+}}, i32 2, {{.*}}, i8** null, i32 1, i32 0) | ||||
// CHECK-NEXT: [[ERROR:%.+]] = icmp ne i32 [[RET]], 0 | // CHECK-NEXT: [[ERROR:%.+]] = icmp ne i32 [[RET]], 0 | ||||
// CHECK-NEXT: br i1 [[ERROR]], label %[[FAIL:.+]], label %[[END:[^,]+]] | // CHECK-NEXT: br i1 [[ERROR]], label %[[FAIL:.+]], label %[[END:[^,]+]] | ||||
// | // | ||||
// CHECK: [[FAIL]] | // CHECK: [[FAIL]] | ||||
// CHECK: call void [[HVT6:@.+]]({{[^,]+}}, {{[^,]+}}) | // CHECK: call void [[HVT6:@.+]]({{[^,]+}}, {{[^,]+}}) | ||||
// CHECK: br label {{%?}}[[END]] | // CHECK: br label {{%?}}[[END]] | ||||
// CHECK: [[END]] | // CHECK: [[END]] | ||||
▲ Show 20 Lines • Show All 119 Lines • Show Last 20 Lines |