Changeset View
Changeset View
Standalone View
Standalone View
clang/test/OpenMP/target_teams_distribute_firstprivate_codegen.cpp
Show First 20 Lines • Show All 79 Lines • ▼ Show 20 Lines | |||||
int main() { | int main() { | ||||
static int sivar; | static int sivar; | ||||
#ifdef LAMBDA | #ifdef LAMBDA | ||||
// LAMBDA: [[G:@.+]] = global i{{[0-9]+}} 1212, | // LAMBDA: [[G:@.+]] = global i{{[0-9]+}} 1212, | ||||
// LAMBDA-LABEL: @main | // LAMBDA-LABEL: @main | ||||
// LAMBDA: call void [[OUTER_LAMBDA:@.+]]( | // LAMBDA: call void [[OUTER_LAMBDA:@.+]]( | ||||
[&]() { | [&]() { | ||||
// LAMBDA: define{{.*}} internal{{.*}} void [[OUTER_LAMBDA]]( | // LAMBDA: define{{.*}} internal{{.*}} void [[OUTER_LAMBDA]]( | ||||
// LAMBDA: call i32 @__tgt_target_teams(i64 -1, i8* @{{[^,]+}}, i32 3, i8** %{{[^,]+}}, i8** %{{[^,]+}}, i{{64|32}}* {{.+}}@{{[^,]+}}, i32 0, i32 0), i64* {{.+}}@{{[^,]+}}, i32 0, i32 0), i32 0, i32 0) | // LAMBDA: call i32 @__tgt_target_teams_mapper(i64 -1, i8* @{{[^,]+}}, i32 3, i8** %{{[^,]+}}, i8** %{{[^,]+}}, i{{64|32}}* {{.+}}@{{[^,]+}}, i32 0, i32 0), i64* {{.+}}@{{[^,]+}}, i32 0, i32 0), i8** null, i32 0, i32 0) | ||||
// LAMBDA: call void @[[LOFFL1:.+]](i{{64|32}} %{{.+}}) | // LAMBDA: call void @[[LOFFL1:.+]](i{{64|32}} %{{.+}}) | ||||
// LAMBDA: ret | // LAMBDA: ret | ||||
#pragma omp target teams distribute firstprivate(g, g1, sivar) | #pragma omp target teams distribute firstprivate(g, g1, sivar) | ||||
for (int i = 0; i < 2; ++i) { | for (int i = 0; i < 2; ++i) { | ||||
// LAMBDA: define{{.*}} internal{{.*}} void @[[LOFFL1]](i{{64|32}} {{%.+}}, i{{64|32}} {{%.+}}) | // LAMBDA: define{{.*}} internal{{.*}} void @[[LOFFL1]](i{{64|32}} {{%.+}}, i{{64|32}} {{%.+}}) | ||||
// LAMBDA: {{%.+}} = alloca i{{[0-9]+}}, | // LAMBDA: {{%.+}} = alloca i{{[0-9]+}}, | ||||
// LAMBDA: {{%.+}} = alloca i{{[0-9]+}}, | // LAMBDA: {{%.+}} = alloca i{{[0-9]+}}, | ||||
// LAMBDA: {{%.+}} = alloca i{{[0-9]+}}, | // LAMBDA: {{%.+}} = alloca i{{[0-9]+}}, | ||||
▲ Show 20 Lines • Show All 62 Lines • ▼ Show 20 Lines | for (int i = 0; i < 2; ++i) { | ||||
s_arr[i] = var; | s_arr[i] = var; | ||||
sivar += i; | sivar += i; | ||||
} | } | ||||
return tmain<int>(); | return tmain<int>(); | ||||
#endif | #endif | ||||
} | } | ||||
// CHECK: define {{.*}}i{{[0-9]+}} @main() | // CHECK: define {{.*}}i{{[0-9]+}} @main() | ||||
// CHECK: call i32 @__tgt_target_teams(i64 -1, i8* @{{[^,]+}}, i32 5, i8** %{{[^,]+}}, i8** %{{[^,]+}}, i{{64|32}}* {{.+}}@{{[^,]+}}, i32 0, i32 0), i64* {{.+}}@{{[^,]+}}, i32 0, i32 0), i32 0, i32 0) | // CHECK: call i32 @__tgt_target_teams_mapper(i64 -1, i8* @{{[^,]+}}, i32 5, i8** %{{[^,]+}}, i8** %{{[^,]+}}, i{{64|32}}* {{.+}}@{{[^,]+}}, i32 0, i32 0), i64* {{.+}}@{{[^,]+}}, i32 0, i32 0), i8** null, i32 0, i32 0) | ||||
// CHECK: call void @[[OFFL1:.+]]({{[^,]+}}, {{[^,]+}}, {{[^,]+}}, {{[^,]+}}, {{[^,]+}}) | // CHECK: call void @[[OFFL1:.+]]({{[^,]+}}, {{[^,]+}}, {{[^,]+}}, {{[^,]+}}, {{[^,]+}}) | ||||
// CHECK: {{%.+}} = call{{.*}} i32 @[[TMAIN_INT:.+]]() | // CHECK: {{%.+}} = call{{.*}} i32 @[[TMAIN_INT:.+]]() | ||||
// CHECK: ret | // CHECK: ret | ||||
// CHECK: define{{.*}} void @[[OFFL1]]({{.+}}) | // CHECK: define{{.*}} void @[[OFFL1]]({{.+}}) | ||||
// CHECK: [[VEC_PRIV:%.+]] = alloca [2 x i{{[0-9]+}}]*, | // CHECK: [[VEC_PRIV:%.+]] = alloca [2 x i{{[0-9]+}}]*, | ||||
// CHECK: [[T_VAR_PRIV:%.+]] = alloca i{{[0-9]+}}, | // CHECK: [[T_VAR_PRIV:%.+]] = alloca i{{[0-9]+}}, | ||||
// CHECK: [[S_ARR_PRIV:%.+]] = alloca [2 x [[S_FLOAT_TY]]]*, | // CHECK: [[S_ARR_PRIV:%.+]] = alloca [2 x [[S_FLOAT_TY]]]*, | ||||
▲ Show 20 Lines • Show All 77 Lines • ▼ Show 20 Lines | |||||
// CHECK-DAG: {{.+}} = {{.+}} [[S_ARR_PRIV]] | // CHECK-DAG: {{.+}} = {{.+}} [[S_ARR_PRIV]] | ||||
// CHECK-DAG: {{.+}} = {{.+}} [[VAR_PRIV]] | // CHECK-DAG: {{.+}} = {{.+}} [[VAR_PRIV]] | ||||
// CHECK-32-DAG: {{.+}} = {{.+}} [[SIVAR_ADDR]] | // CHECK-32-DAG: {{.+}} = {{.+}} [[SIVAR_ADDR]] | ||||
// CHECK-64-DAG: {{.+}} = {{.+}} [[CONV_SIVAR]] | // CHECK-64-DAG: {{.+}} = {{.+}} [[CONV_SIVAR]] | ||||
// CHECK: call void @__kmpc_for_static_fini( | // CHECK: call void @__kmpc_for_static_fini( | ||||
// CHECK: ret void | // CHECK: ret void | ||||
// CHECK: define{{.*}} i{{[0-9]+}} @[[TMAIN_INT]]() | // CHECK: define{{.*}} i{{[0-9]+}} @[[TMAIN_INT]]() | ||||
// CHECK: call i32 @__tgt_target_teams(i64 -1, i8* @{{[^,]+}}, i32 4, i8** %{{[^,]+}}, i8** %{{[^,]+}}, i{{64|32}}* {{.+}}@{{[^,]+}}, i32 0, i32 0), i64* {{.+}}@{{[^,]+}}, i32 0, i32 0), i32 0, i32 0) | // CHECK: call i32 @__tgt_target_teams_mapper(i64 -1, i8* @{{[^,]+}}, i32 4, i8** %{{[^,]+}}, i8** %{{[^,]+}}, i{{64|32}}* {{.+}}@{{[^,]+}}, i32 0, i32 0), i64* {{.+}}@{{[^,]+}}, i32 0, i32 0), i8** null, i32 0, i32 0) | ||||
// CHECK: call void @[[TOFFL1:.+]]({{[^,]+}}, {{[^,]+}}, {{[^,]+}}, {{[^,]+}}) | // CHECK: call void @[[TOFFL1:.+]]({{[^,]+}}, {{[^,]+}}, {{[^,]+}}, {{[^,]+}}) | ||||
// CHECK: ret | // CHECK: ret | ||||
// CHECK: define {{.*}}void @[[TOFFL1]]({{.+}}) | // CHECK: define {{.*}}void @[[TOFFL1]]({{.+}}) | ||||
// CHECK: [[TVEC_PRIV:%.+]] = alloca [2 x i{{[0-9]+}}]*, | // CHECK: [[TVEC_PRIV:%.+]] = alloca [2 x i{{[0-9]+}}]*, | ||||
// CHECK: [[TT_VAR_PRIV:%.+]] = alloca i{{[0-9]+}}, | // CHECK: [[TT_VAR_PRIV:%.+]] = alloca i{{[0-9]+}}, | ||||
// CHECK: [[TS_ARR_PRIV:%.+]] = alloca [2 x [[S_INT_TY]]]*, | // CHECK: [[TS_ARR_PRIV:%.+]] = alloca [2 x [[S_INT_TY]]]*, | ||||
// CHECK: [[TVAR_PRIV:%.+]] = alloca [[S_INT_TY]]*, | // CHECK: [[TVAR_PRIV:%.+]] = alloca [[S_INT_TY]]*, | ||||
▲ Show 20 Lines • Show All 80 Lines • Show Last 20 Lines |