Differential D106033 Diff 362226 clang/test/OpenMP/target_teams_distribute_simd_dist_schedule_codegen.cpp
Changeset View
Changeset View
Standalone View
Standalone View
clang/test/OpenMP/target_teams_distribute_simd_dist_schedule_codegen.cpp
- This file is larger than 256 KB, so syntax highlighting is disabled by default.
Show First 20 Lines • Show All 216 Lines • ▼ Show 20 Lines | |||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | // CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | ||||
// CHECK1-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 8 | // CHECK1-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 8 | ||||
// CHECK1-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8 | // CHECK1-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8 | ||||
// CHECK1-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined. to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | // CHECK1-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined. to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | ||||
// CHECK1-NEXT: ret void | // CHECK1-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_outlined. | // CHECK1-LABEL: define {{[^@]+}}@.omp_outlined. | ||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon* noalias [[__CONTEXT:%.*]]) #[[ATTR2:[0-9]+]] { | // CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] { | ||||
// CHECK1-NEXT: entry: | // CHECK1-NEXT: entry: | ||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | // CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | ||||
// CHECK1-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK1-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK1-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK1-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK1-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK1-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK1-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK1-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 68 Lines • ▼ Show 20 Lines | |||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | // CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | ||||
// CHECK1-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 8 | // CHECK1-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 8 | ||||
// CHECK1-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8 | // CHECK1-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8 | ||||
// CHECK1-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | // CHECK1-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | ||||
// CHECK1-NEXT: ret void | // CHECK1-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_outlined..1 | // CHECK1-LABEL: define {{[^@]+}}@.omp_outlined..1 | ||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.0* noalias [[__CONTEXT:%.*]]) #[[ATTR2]] { | // CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] { | ||||
// CHECK1-NEXT: entry: | // CHECK1-NEXT: entry: | ||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | // CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | ||||
// CHECK1-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK1-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK1-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK1-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK1-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK1-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK1-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK1-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 68 Lines • ▼ Show 20 Lines | |||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | // CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | ||||
// CHECK1-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 8 | // CHECK1-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 8 | ||||
// CHECK1-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8 | // CHECK1-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8 | ||||
// CHECK1-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..4 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | // CHECK1-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..4 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | ||||
// CHECK1-NEXT: ret void | // CHECK1-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK1-LABEL: define {{[^@]+}}@.omp_outlined..4 | // CHECK1-LABEL: define {{[^@]+}}@.omp_outlined..4 | ||||
// CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.1* noalias [[__CONTEXT:%.*]]) #[[ATTR2]] { | // CHECK1-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] { | ||||
// CHECK1-NEXT: entry: | // CHECK1-NEXT: entry: | ||||
// CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK1-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK1-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | // CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | ||||
// CHECK1-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK1-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK1-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK1-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK1-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK1-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK1-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK1-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 181 Lines • ▼ Show 20 Lines | |||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | // CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | ||||
// CHECK2-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 8 | // CHECK2-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 8 | ||||
// CHECK2-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8 | // CHECK2-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8 | ||||
// CHECK2-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined. to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | // CHECK2-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined. to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | ||||
// CHECK2-NEXT: ret void | // CHECK2-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_outlined. | // CHECK2-LABEL: define {{[^@]+}}@.omp_outlined. | ||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon* noalias [[__CONTEXT:%.*]]) #[[ATTR2:[0-9]+]] { | // CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] { | ||||
// CHECK2-NEXT: entry: | // CHECK2-NEXT: entry: | ||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | // CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | ||||
// CHECK2-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK2-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK2-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK2-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK2-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK2-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK2-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK2-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 68 Lines • ▼ Show 20 Lines | |||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | // CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | ||||
// CHECK2-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 8 | // CHECK2-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 8 | ||||
// CHECK2-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8 | // CHECK2-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8 | ||||
// CHECK2-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | // CHECK2-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | ||||
// CHECK2-NEXT: ret void | // CHECK2-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_outlined..1 | // CHECK2-LABEL: define {{[^@]+}}@.omp_outlined..1 | ||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.0* noalias [[__CONTEXT:%.*]]) #[[ATTR2]] { | // CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] { | ||||
// CHECK2-NEXT: entry: | // CHECK2-NEXT: entry: | ||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | // CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | ||||
// CHECK2-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK2-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK2-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK2-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK2-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK2-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK2-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK2-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 68 Lines • ▼ Show 20 Lines | |||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | // CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | ||||
// CHECK2-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 8 | // CHECK2-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 8 | ||||
// CHECK2-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8 | // CHECK2-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 8 | ||||
// CHECK2-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..4 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | // CHECK2-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..4 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | ||||
// CHECK2-NEXT: ret void | // CHECK2-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK2-LABEL: define {{[^@]+}}@.omp_outlined..4 | // CHECK2-LABEL: define {{[^@]+}}@.omp_outlined..4 | ||||
// CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.1* noalias [[__CONTEXT:%.*]]) #[[ATTR2]] { | // CHECK2-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] { | ||||
// CHECK2-NEXT: entry: | // CHECK2-NEXT: entry: | ||||
// CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK2-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK2-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | // CHECK2-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 8 | ||||
// CHECK2-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK2-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK2-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK2-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK2-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK2-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK2-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK2-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 181 Lines • ▼ Show 20 Lines | |||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | // CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | ||||
// CHECK3-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 4 | // CHECK3-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 4 | ||||
// CHECK3-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 4 | // CHECK3-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 4 | ||||
// CHECK3-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined. to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | // CHECK3-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined. to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | ||||
// CHECK3-NEXT: ret void | // CHECK3-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_outlined. | // CHECK3-LABEL: define {{[^@]+}}@.omp_outlined. | ||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon* noalias [[__CONTEXT:%.*]]) #[[ATTR2:[0-9]+]] { | // CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] { | ||||
// CHECK3-NEXT: entry: | // CHECK3-NEXT: entry: | ||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | // CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | ||||
// CHECK3-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK3-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK3-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK3-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK3-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK3-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK3-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK3-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | |||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | // CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | ||||
// CHECK3-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 4 | // CHECK3-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 4 | ||||
// CHECK3-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 4 | // CHECK3-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 4 | ||||
// CHECK3-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | // CHECK3-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | ||||
// CHECK3-NEXT: ret void | // CHECK3-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_outlined..1 | // CHECK3-LABEL: define {{[^@]+}}@.omp_outlined..1 | ||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.0* noalias [[__CONTEXT:%.*]]) #[[ATTR2]] { | // CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] { | ||||
// CHECK3-NEXT: entry: | // CHECK3-NEXT: entry: | ||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | // CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | ||||
// CHECK3-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK3-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK3-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK3-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK3-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK3-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK3-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK3-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | |||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | // CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | ||||
// CHECK3-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 4 | // CHECK3-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 4 | ||||
// CHECK3-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 4 | // CHECK3-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 4 | ||||
// CHECK3-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..4 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | // CHECK3-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..4 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | ||||
// CHECK3-NEXT: ret void | // CHECK3-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK3-LABEL: define {{[^@]+}}@.omp_outlined..4 | // CHECK3-LABEL: define {{[^@]+}}@.omp_outlined..4 | ||||
// CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.1* noalias [[__CONTEXT:%.*]]) #[[ATTR2]] { | // CHECK3-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] { | ||||
// CHECK3-NEXT: entry: | // CHECK3-NEXT: entry: | ||||
// CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK3-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK3-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | // CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | ||||
// CHECK3-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK3-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK3-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK3-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK3-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK3-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK3-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK3-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 180 Lines • ▼ Show 20 Lines | |||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | // CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | ||||
// CHECK4-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 4 | // CHECK4-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 4 | ||||
// CHECK4-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 4 | // CHECK4-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 4 | ||||
// CHECK4-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined. to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | // CHECK4-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined. to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | ||||
// CHECK4-NEXT: ret void | // CHECK4-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_outlined. | // CHECK4-LABEL: define {{[^@]+}}@.omp_outlined. | ||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon* noalias [[__CONTEXT:%.*]]) #[[ATTR2:[0-9]+]] { | // CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2:[0-9]+]] { | ||||
// CHECK4-NEXT: entry: | // CHECK4-NEXT: entry: | ||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | // CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | ||||
// CHECK4-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK4-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK4-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK4-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK4-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK4-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK4-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK4-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | |||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | // CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | ||||
// CHECK4-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 4 | // CHECK4-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 4 | ||||
// CHECK4-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 4 | // CHECK4-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 4 | ||||
// CHECK4-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | // CHECK4-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | ||||
// CHECK4-NEXT: ret void | // CHECK4-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_outlined..1 | // CHECK4-LABEL: define {{[^@]+}}@.omp_outlined..1 | ||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.0* noalias [[__CONTEXT:%.*]]) #[[ATTR2]] { | // CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] { | ||||
// CHECK4-NEXT: entry: | // CHECK4-NEXT: entry: | ||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | // CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | ||||
// CHECK4-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK4-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK4-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK4-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK4-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK4-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK4-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK4-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | |||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | // CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | ||||
// CHECK4-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 4 | // CHECK4-NEXT: store %struct.SS* [[THIS]], %struct.SS** [[THIS_ADDR]], align 4 | ||||
// CHECK4-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 4 | // CHECK4-NEXT: [[TMP0:%.*]] = load %struct.SS*, %struct.SS** [[THIS_ADDR]], align 4 | ||||
// CHECK4-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..4 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | // CHECK4-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, %struct.SS*)* @.omp_outlined..4 to void (i32*, i32*, ...)*), %struct.SS* [[TMP0]]) | ||||
// CHECK4-NEXT: ret void | // CHECK4-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK4-LABEL: define {{[^@]+}}@.omp_outlined..4 | // CHECK4-LABEL: define {{[^@]+}}@.omp_outlined..4 | ||||
// CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.1* noalias [[__CONTEXT:%.*]]) #[[ATTR2]] { | // CHECK4-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.SS* [[THIS:%.*]]) #[[ATTR2]] { | ||||
// CHECK4-NEXT: entry: | // CHECK4-NEXT: entry: | ||||
// CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK4-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK4-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | // CHECK4-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.SS*, align 4 | ||||
// CHECK4-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK4-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK4-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK4-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK4-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK4-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK4-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK4-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 834 Lines • ▼ Show 20 Lines | |||||
// CHECK9-NEXT: [[CONV1:%.*]] = bitcast i64* [[N_CASTED]] to i32* | // CHECK9-NEXT: [[CONV1:%.*]] = bitcast i64* [[N_CASTED]] to i32* | ||||
// CHECK9-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4 | // CHECK9-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4 | ||||
// CHECK9-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8 | // CHECK9-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8 | ||||
// CHECK9-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i64, i64, i32*)* @.omp_outlined. to void (i32*, i32*, ...)*), i64 [[TMP3]], i64 [[TMP0]], i32* [[TMP1]]) | // CHECK9-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i64, i64, i32*)* @.omp_outlined. to void (i32*, i32*, ...)*), i64 [[TMP3]], i64 [[TMP0]], i32* [[TMP1]]) | ||||
// CHECK9-NEXT: ret void | // CHECK9-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined. | // CHECK9-LABEL: define {{[^@]+}}@.omp_outlined. | ||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon* noalias [[__CONTEXT:%.*]]) #[[ATTR3:[0-9]+]] { | // CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3:[0-9]+]] { | ||||
// CHECK9-NEXT: entry: | // CHECK9-NEXT: entry: | ||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK9-NEXT: [[N_ADDR:%.*]] = alloca i64, align 8 | // CHECK9-NEXT: [[N_ADDR:%.*]] = alloca i64, align 8 | ||||
// CHECK9-NEXT: [[VLA_ADDR:%.*]] = alloca i64, align 8 | // CHECK9-NEXT: [[VLA_ADDR:%.*]] = alloca i64, align 8 | ||||
// CHECK9-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 8 | // CHECK9-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK9-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK9-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 111 Lines • ▼ Show 20 Lines | |||||
// CHECK9-NEXT: [[CONV1:%.*]] = bitcast i64* [[N_CASTED]] to i32* | // CHECK9-NEXT: [[CONV1:%.*]] = bitcast i64* [[N_CASTED]] to i32* | ||||
// CHECK9-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4 | // CHECK9-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4 | ||||
// CHECK9-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8 | // CHECK9-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8 | ||||
// CHECK9-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i64, i64, i32*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), i64 [[TMP3]], i64 [[TMP0]], i32* [[TMP1]]) | // CHECK9-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i64, i64, i32*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), i64 [[TMP3]], i64 [[TMP0]], i32* [[TMP1]]) | ||||
// CHECK9-NEXT: ret void | // CHECK9-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..1 | // CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..1 | ||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.0* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK9-NEXT: entry: | // CHECK9-NEXT: entry: | ||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK9-NEXT: [[N_ADDR:%.*]] = alloca i64, align 8 | // CHECK9-NEXT: [[N_ADDR:%.*]] = alloca i64, align 8 | ||||
// CHECK9-NEXT: [[VLA_ADDR:%.*]] = alloca i64, align 8 | // CHECK9-NEXT: [[VLA_ADDR:%.*]] = alloca i64, align 8 | ||||
// CHECK9-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 8 | // CHECK9-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK9-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK9-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 119 Lines • ▼ Show 20 Lines | |||||
// CHECK9-NEXT: [[CONV3:%.*]] = bitcast i64* [[DOTCAPTURE_EXPR__CASTED]] to i32* | // CHECK9-NEXT: [[CONV3:%.*]] = bitcast i64* [[DOTCAPTURE_EXPR__CASTED]] to i32* | ||||
// CHECK9-NEXT: store i32 [[TMP4]], i32* [[CONV3]], align 4 | // CHECK9-NEXT: store i32 [[TMP4]], i32* [[CONV3]], align 4 | ||||
// CHECK9-NEXT: [[TMP5:%.*]] = load i64, i64* [[DOTCAPTURE_EXPR__CASTED]], align 8 | // CHECK9-NEXT: [[TMP5:%.*]] = load i64, i64* [[DOTCAPTURE_EXPR__CASTED]], align 8 | ||||
// CHECK9-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 4, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i64, i64, i32*, i64)* @.omp_outlined..3 to void (i32*, i32*, ...)*), i64 [[TMP3]], i64 [[TMP0]], i32* [[TMP1]], i64 [[TMP5]]) | // CHECK9-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 4, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i64, i64, i32*, i64)* @.omp_outlined..3 to void (i32*, i32*, ...)*), i64 [[TMP3]], i64 [[TMP0]], i32* [[TMP1]], i64 [[TMP5]]) | ||||
// CHECK9-NEXT: ret void | // CHECK9-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..3 | // CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..3 | ||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.1* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] { | ||||
// CHECK9-NEXT: entry: | // CHECK9-NEXT: entry: | ||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK9-NEXT: [[N_ADDR:%.*]] = alloca i64, align 8 | // CHECK9-NEXT: [[N_ADDR:%.*]] = alloca i64, align 8 | ||||
// CHECK9-NEXT: [[VLA_ADDR:%.*]] = alloca i64, align 8 | // CHECK9-NEXT: [[VLA_ADDR:%.*]] = alloca i64, align 8 | ||||
// CHECK9-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 8 | // CHECK9-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK9-NEXT: [[DOTCAPTURE_EXPR__ADDR:%.*]] = alloca i64, align 8 | // CHECK9-NEXT: [[DOTCAPTURE_EXPR__ADDR:%.*]] = alloca i64, align 8 | ||||
// CHECK9-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 196 Lines • ▼ Show 20 Lines | |||||
// CHECK9-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | // CHECK9-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | ||||
// CHECK9-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 8 | // CHECK9-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 8 | ||||
// CHECK9-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 8 | // CHECK9-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 8 | ||||
// CHECK9-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..5 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | // CHECK9-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..5 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | ||||
// CHECK9-NEXT: ret void | // CHECK9-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..5 | // CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..5 | ||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.2* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK9-NEXT: entry: | // CHECK9-NEXT: entry: | ||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK9-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | // CHECK9-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | ||||
// CHECK9-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK9-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK9-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK9-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | |||||
// CHECK9-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | // CHECK9-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | ||||
// CHECK9-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 8 | // CHECK9-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 8 | ||||
// CHECK9-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 8 | // CHECK9-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 8 | ||||
// CHECK9-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..7 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | // CHECK9-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..7 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | ||||
// CHECK9-NEXT: ret void | // CHECK9-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..7 | // CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..7 | ||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.3* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK9-NEXT: entry: | // CHECK9-NEXT: entry: | ||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK9-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | // CHECK9-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | ||||
// CHECK9-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK9-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK9-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK9-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | |||||
// CHECK9-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | // CHECK9-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | ||||
// CHECK9-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 8 | // CHECK9-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 8 | ||||
// CHECK9-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 8 | // CHECK9-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 8 | ||||
// CHECK9-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..10 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | // CHECK9-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..10 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | ||||
// CHECK9-NEXT: ret void | // CHECK9-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..10 | // CHECK9-LABEL: define {{[^@]+}}@.omp_outlined..10 | ||||
// CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.4* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK9-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK9-NEXT: entry: | // CHECK9-NEXT: entry: | ||||
// CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK9-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK9-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK9-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | // CHECK9-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | ||||
// CHECK9-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK9-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK9-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK9-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK9-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 340 Lines • ▼ Show 20 Lines | |||||
// CHECK10-NEXT: [[CONV1:%.*]] = bitcast i64* [[N_CASTED]] to i32* | // CHECK10-NEXT: [[CONV1:%.*]] = bitcast i64* [[N_CASTED]] to i32* | ||||
// CHECK10-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4 | // CHECK10-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4 | ||||
// CHECK10-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8 | // CHECK10-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8 | ||||
// CHECK10-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i64, i64, i32*)* @.omp_outlined. to void (i32*, i32*, ...)*), i64 [[TMP3]], i64 [[TMP0]], i32* [[TMP1]]) | // CHECK10-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i64, i64, i32*)* @.omp_outlined. to void (i32*, i32*, ...)*), i64 [[TMP3]], i64 [[TMP0]], i32* [[TMP1]]) | ||||
// CHECK10-NEXT: ret void | // CHECK10-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined. | // CHECK10-LABEL: define {{[^@]+}}@.omp_outlined. | ||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon* noalias [[__CONTEXT:%.*]]) #[[ATTR3:[0-9]+]] { | // CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3:[0-9]+]] { | ||||
// CHECK10-NEXT: entry: | // CHECK10-NEXT: entry: | ||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK10-NEXT: [[N_ADDR:%.*]] = alloca i64, align 8 | // CHECK10-NEXT: [[N_ADDR:%.*]] = alloca i64, align 8 | ||||
// CHECK10-NEXT: [[VLA_ADDR:%.*]] = alloca i64, align 8 | // CHECK10-NEXT: [[VLA_ADDR:%.*]] = alloca i64, align 8 | ||||
// CHECK10-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 8 | // CHECK10-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK10-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK10-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 111 Lines • ▼ Show 20 Lines | |||||
// CHECK10-NEXT: [[CONV1:%.*]] = bitcast i64* [[N_CASTED]] to i32* | // CHECK10-NEXT: [[CONV1:%.*]] = bitcast i64* [[N_CASTED]] to i32* | ||||
// CHECK10-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4 | // CHECK10-NEXT: store i32 [[TMP2]], i32* [[CONV1]], align 4 | ||||
// CHECK10-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8 | // CHECK10-NEXT: [[TMP3:%.*]] = load i64, i64* [[N_CASTED]], align 8 | ||||
// CHECK10-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i64, i64, i32*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), i64 [[TMP3]], i64 [[TMP0]], i32* [[TMP1]]) | // CHECK10-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i64, i64, i32*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), i64 [[TMP3]], i64 [[TMP0]], i32* [[TMP1]]) | ||||
// CHECK10-NEXT: ret void | // CHECK10-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..1 | // CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..1 | ||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.0* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK10-NEXT: entry: | // CHECK10-NEXT: entry: | ||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK10-NEXT: [[N_ADDR:%.*]] = alloca i64, align 8 | // CHECK10-NEXT: [[N_ADDR:%.*]] = alloca i64, align 8 | ||||
// CHECK10-NEXT: [[VLA_ADDR:%.*]] = alloca i64, align 8 | // CHECK10-NEXT: [[VLA_ADDR:%.*]] = alloca i64, align 8 | ||||
// CHECK10-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 8 | // CHECK10-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK10-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK10-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 119 Lines • ▼ Show 20 Lines | |||||
// CHECK10-NEXT: [[CONV3:%.*]] = bitcast i64* [[DOTCAPTURE_EXPR__CASTED]] to i32* | // CHECK10-NEXT: [[CONV3:%.*]] = bitcast i64* [[DOTCAPTURE_EXPR__CASTED]] to i32* | ||||
// CHECK10-NEXT: store i32 [[TMP4]], i32* [[CONV3]], align 4 | // CHECK10-NEXT: store i32 [[TMP4]], i32* [[CONV3]], align 4 | ||||
// CHECK10-NEXT: [[TMP5:%.*]] = load i64, i64* [[DOTCAPTURE_EXPR__CASTED]], align 8 | // CHECK10-NEXT: [[TMP5:%.*]] = load i64, i64* [[DOTCAPTURE_EXPR__CASTED]], align 8 | ||||
// CHECK10-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 4, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i64, i64, i32*, i64)* @.omp_outlined..3 to void (i32*, i32*, ...)*), i64 [[TMP3]], i64 [[TMP0]], i32* [[TMP1]], i64 [[TMP5]]) | // CHECK10-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 4, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i64, i64, i32*, i64)* @.omp_outlined..3 to void (i32*, i32*, ...)*), i64 [[TMP3]], i64 [[TMP0]], i32* [[TMP1]], i64 [[TMP5]]) | ||||
// CHECK10-NEXT: ret void | // CHECK10-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..3 | // CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..3 | ||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.1* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i64 [[N:%.*]], i64 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i64 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] { | ||||
// CHECK10-NEXT: entry: | // CHECK10-NEXT: entry: | ||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK10-NEXT: [[N_ADDR:%.*]] = alloca i64, align 8 | // CHECK10-NEXT: [[N_ADDR:%.*]] = alloca i64, align 8 | ||||
// CHECK10-NEXT: [[VLA_ADDR:%.*]] = alloca i64, align 8 | // CHECK10-NEXT: [[VLA_ADDR:%.*]] = alloca i64, align 8 | ||||
// CHECK10-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 8 | // CHECK10-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK10-NEXT: [[DOTCAPTURE_EXPR__ADDR:%.*]] = alloca i64, align 8 | // CHECK10-NEXT: [[DOTCAPTURE_EXPR__ADDR:%.*]] = alloca i64, align 8 | ||||
// CHECK10-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 196 Lines • ▼ Show 20 Lines | |||||
// CHECK10-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | // CHECK10-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | ||||
// CHECK10-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 8 | // CHECK10-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 8 | ||||
// CHECK10-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 8 | // CHECK10-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 8 | ||||
// CHECK10-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..5 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | // CHECK10-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..5 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | ||||
// CHECK10-NEXT: ret void | // CHECK10-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..5 | // CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..5 | ||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.2* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK10-NEXT: entry: | // CHECK10-NEXT: entry: | ||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK10-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | // CHECK10-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | ||||
// CHECK10-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK10-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK10-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK10-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | |||||
// CHECK10-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | // CHECK10-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | ||||
// CHECK10-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 8 | // CHECK10-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 8 | ||||
// CHECK10-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 8 | // CHECK10-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 8 | ||||
// CHECK10-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..7 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | // CHECK10-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..7 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | ||||
// CHECK10-NEXT: ret void | // CHECK10-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..7 | // CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..7 | ||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.3* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK10-NEXT: entry: | // CHECK10-NEXT: entry: | ||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK10-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | // CHECK10-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | ||||
// CHECK10-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK10-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK10-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK10-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | |||||
// CHECK10-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | // CHECK10-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | ||||
// CHECK10-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 8 | // CHECK10-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 8 | ||||
// CHECK10-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 8 | // CHECK10-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 8 | ||||
// CHECK10-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..10 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | // CHECK10-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..10 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | ||||
// CHECK10-NEXT: ret void | // CHECK10-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..10 | // CHECK10-LABEL: define {{[^@]+}}@.omp_outlined..10 | ||||
// CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.4* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK10-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK10-NEXT: entry: | // CHECK10-NEXT: entry: | ||||
// CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK10-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | // CHECK10-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8 | ||||
// CHECK10-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | // CHECK10-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 8 | ||||
// CHECK10-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK10-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK10-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK10-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK10-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 336 Lines • ▼ Show 20 Lines | |||||
// CHECK11-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4 | // CHECK11-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4 | ||||
// CHECK11-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4 | // CHECK11-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4 | ||||
// CHECK11-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4 | // CHECK11-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4 | ||||
// CHECK11-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32, i32, i32*)* @.omp_outlined. to void (i32*, i32*, ...)*), i32 [[TMP3]], i32 [[TMP0]], i32* [[TMP1]]) | // CHECK11-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32, i32, i32*)* @.omp_outlined. to void (i32*, i32*, ...)*), i32 [[TMP3]], i32 [[TMP0]], i32* [[TMP1]]) | ||||
// CHECK11-NEXT: ret void | // CHECK11-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_outlined. | // CHECK11-LABEL: define {{[^@]+}}@.omp_outlined. | ||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon* noalias [[__CONTEXT:%.*]]) #[[ATTR3:[0-9]+]] { | // CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3:[0-9]+]] { | ||||
// CHECK11-NEXT: entry: | // CHECK11-NEXT: entry: | ||||
// CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK11-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[VLA_ADDR:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[VLA_ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 4 | // CHECK11-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK11-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 107 Lines • ▼ Show 20 Lines | |||||
// CHECK11-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4 | // CHECK11-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4 | ||||
// CHECK11-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4 | // CHECK11-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4 | ||||
// CHECK11-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4 | // CHECK11-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4 | ||||
// CHECK11-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32, i32, i32*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), i32 [[TMP3]], i32 [[TMP0]], i32* [[TMP1]]) | // CHECK11-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32, i32, i32*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), i32 [[TMP3]], i32 [[TMP0]], i32* [[TMP1]]) | ||||
// CHECK11-NEXT: ret void | // CHECK11-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..1 | // CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..1 | ||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.0* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK11-NEXT: entry: | // CHECK11-NEXT: entry: | ||||
// CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK11-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[VLA_ADDR:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[VLA_ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 4 | // CHECK11-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK11-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 113 Lines • ▼ Show 20 Lines | |||||
// CHECK11-NEXT: [[TMP4:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR__ADDR]], align 4 | // CHECK11-NEXT: [[TMP4:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR__ADDR]], align 4 | ||||
// CHECK11-NEXT: store i32 [[TMP4]], i32* [[DOTCAPTURE_EXPR__CASTED]], align 4 | // CHECK11-NEXT: store i32 [[TMP4]], i32* [[DOTCAPTURE_EXPR__CASTED]], align 4 | ||||
// CHECK11-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR__CASTED]], align 4 | // CHECK11-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR__CASTED]], align 4 | ||||
// CHECK11-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 4, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32, i32, i32*, i32)* @.omp_outlined..3 to void (i32*, i32*, ...)*), i32 [[TMP3]], i32 [[TMP0]], i32* [[TMP1]], i32 [[TMP5]]) | // CHECK11-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 4, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32, i32, i32*, i32)* @.omp_outlined..3 to void (i32*, i32*, ...)*), i32 [[TMP3]], i32 [[TMP0]], i32* [[TMP1]], i32 [[TMP5]]) | ||||
// CHECK11-NEXT: ret void | // CHECK11-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..3 | // CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..3 | ||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.1* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] { | ||||
// CHECK11-NEXT: entry: | // CHECK11-NEXT: entry: | ||||
// CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK11-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[VLA_ADDR:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[VLA_ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 4 | // CHECK11-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK11-NEXT: [[DOTCAPTURE_EXPR__ADDR:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[DOTCAPTURE_EXPR__ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 193 Lines • ▼ Show 20 Lines | |||||
// CHECK11-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | // CHECK11-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | ||||
// CHECK11-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 4 | // CHECK11-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 4 | ||||
// CHECK11-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 4 | // CHECK11-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 4 | ||||
// CHECK11-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..5 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | // CHECK11-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..5 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | ||||
// CHECK11-NEXT: ret void | // CHECK11-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..5 | // CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..5 | ||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.2* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK11-NEXT: entry: | // CHECK11-NEXT: entry: | ||||
// CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK11-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | // CHECK11-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | ||||
// CHECK11-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | |||||
// CHECK11-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | // CHECK11-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | ||||
// CHECK11-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 4 | // CHECK11-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 4 | ||||
// CHECK11-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 4 | // CHECK11-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 4 | ||||
// CHECK11-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..7 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | // CHECK11-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..7 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | ||||
// CHECK11-NEXT: ret void | // CHECK11-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..7 | // CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..7 | ||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.3* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK11-NEXT: entry: | // CHECK11-NEXT: entry: | ||||
// CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK11-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | // CHECK11-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | ||||
// CHECK11-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | |||||
// CHECK11-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | // CHECK11-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | ||||
// CHECK11-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 4 | // CHECK11-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 4 | ||||
// CHECK11-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 4 | // CHECK11-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 4 | ||||
// CHECK11-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..10 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | // CHECK11-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..10 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | ||||
// CHECK11-NEXT: ret void | // CHECK11-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..10 | // CHECK11-LABEL: define {{[^@]+}}@.omp_outlined..10 | ||||
// CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.4* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK11-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK11-NEXT: entry: | // CHECK11-NEXT: entry: | ||||
// CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK11-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK11-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK11-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | // CHECK11-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | ||||
// CHECK11-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK11-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK11-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 335 Lines • ▼ Show 20 Lines | |||||
// CHECK12-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4 | // CHECK12-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4 | ||||
// CHECK12-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4 | // CHECK12-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4 | ||||
// CHECK12-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4 | // CHECK12-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4 | ||||
// CHECK12-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32, i32, i32*)* @.omp_outlined. to void (i32*, i32*, ...)*), i32 [[TMP3]], i32 [[TMP0]], i32* [[TMP1]]) | // CHECK12-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32, i32, i32*)* @.omp_outlined. to void (i32*, i32*, ...)*), i32 [[TMP3]], i32 [[TMP0]], i32* [[TMP1]]) | ||||
// CHECK12-NEXT: ret void | // CHECK12-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_outlined. | // CHECK12-LABEL: define {{[^@]+}}@.omp_outlined. | ||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon* noalias [[__CONTEXT:%.*]]) #[[ATTR3:[0-9]+]] { | // CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3:[0-9]+]] { | ||||
// CHECK12-NEXT: entry: | // CHECK12-NEXT: entry: | ||||
// CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK12-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[VLA_ADDR:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[VLA_ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 4 | // CHECK12-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK12-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 107 Lines • ▼ Show 20 Lines | |||||
// CHECK12-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4 | // CHECK12-NEXT: [[TMP2:%.*]] = load i32, i32* [[N_ADDR]], align 4 | ||||
// CHECK12-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4 | // CHECK12-NEXT: store i32 [[TMP2]], i32* [[N_CASTED]], align 4 | ||||
// CHECK12-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4 | // CHECK12-NEXT: [[TMP3:%.*]] = load i32, i32* [[N_CASTED]], align 4 | ||||
// CHECK12-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32, i32, i32*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), i32 [[TMP3]], i32 [[TMP0]], i32* [[TMP1]]) | // CHECK12-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 3, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32, i32, i32*)* @.omp_outlined..1 to void (i32*, i32*, ...)*), i32 [[TMP3]], i32 [[TMP0]], i32* [[TMP1]]) | ||||
// CHECK12-NEXT: ret void | // CHECK12-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..1 | // CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..1 | ||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.0* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK12-NEXT: entry: | // CHECK12-NEXT: entry: | ||||
// CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK12-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[VLA_ADDR:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[VLA_ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 4 | // CHECK12-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK12-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 113 Lines • ▼ Show 20 Lines | |||||
// CHECK12-NEXT: [[TMP4:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR__ADDR]], align 4 | // CHECK12-NEXT: [[TMP4:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR__ADDR]], align 4 | ||||
// CHECK12-NEXT: store i32 [[TMP4]], i32* [[DOTCAPTURE_EXPR__CASTED]], align 4 | // CHECK12-NEXT: store i32 [[TMP4]], i32* [[DOTCAPTURE_EXPR__CASTED]], align 4 | ||||
// CHECK12-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR__CASTED]], align 4 | // CHECK12-NEXT: [[TMP5:%.*]] = load i32, i32* [[DOTCAPTURE_EXPR__CASTED]], align 4 | ||||
// CHECK12-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 4, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32, i32, i32*, i32)* @.omp_outlined..3 to void (i32*, i32*, ...)*), i32 [[TMP3]], i32 [[TMP0]], i32* [[TMP1]], i32 [[TMP5]]) | // CHECK12-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 4, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32, i32, i32*, i32)* @.omp_outlined..3 to void (i32*, i32*, ...)*), i32 [[TMP3]], i32 [[TMP0]], i32* [[TMP1]], i32 [[TMP5]]) | ||||
// CHECK12-NEXT: ret void | // CHECK12-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..3 | // CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..3 | ||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.1* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], i32 [[N:%.*]], i32 [[VLA:%.*]], i32* nonnull align 4 dereferenceable(4) [[A:%.*]], i32 [[DOTCAPTURE_EXPR_:%.*]]) #[[ATTR3]] { | ||||
// CHECK12-NEXT: entry: | // CHECK12-NEXT: entry: | ||||
// CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK12-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[N_ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[VLA_ADDR:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[VLA_ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 4 | // CHECK12-NEXT: [[A_ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK12-NEXT: [[DOTCAPTURE_EXPR__ADDR:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[DOTCAPTURE_EXPR__ADDR:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 193 Lines • ▼ Show 20 Lines | |||||
// CHECK12-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | // CHECK12-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | ||||
// CHECK12-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 4 | // CHECK12-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 4 | ||||
// CHECK12-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 4 | // CHECK12-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 4 | ||||
// CHECK12-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..5 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | // CHECK12-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..5 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | ||||
// CHECK12-NEXT: ret void | // CHECK12-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..5 | // CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..5 | ||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.2* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK12-NEXT: entry: | // CHECK12-NEXT: entry: | ||||
// CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK12-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | // CHECK12-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | ||||
// CHECK12-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | |||||
// CHECK12-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | // CHECK12-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | ||||
// CHECK12-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 4 | // CHECK12-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 4 | ||||
// CHECK12-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 4 | // CHECK12-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 4 | ||||
// CHECK12-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..7 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | // CHECK12-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..7 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | ||||
// CHECK12-NEXT: ret void | // CHECK12-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..7 | // CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..7 | ||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.3* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK12-NEXT: entry: | // CHECK12-NEXT: entry: | ||||
// CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK12-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | // CHECK12-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | ||||
// CHECK12-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | |||||
// CHECK12-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | // CHECK12-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | ||||
// CHECK12-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 4 | // CHECK12-NEXT: store [10 x i32]* [[A]], [10 x i32]** [[A_ADDR]], align 4 | ||||
// CHECK12-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 4 | // CHECK12-NEXT: [[TMP0:%.*]] = load [10 x i32]*, [10 x i32]** [[A_ADDR]], align 4 | ||||
// CHECK12-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..10 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | // CHECK12-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_teams(%struct.ident_t* @[[GLOB2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, [10 x i32]*)* @.omp_outlined..10 to void (i32*, i32*, ...)*), [10 x i32]* [[TMP0]]) | ||||
// CHECK12-NEXT: ret void | // CHECK12-NEXT: ret void | ||||
// | // | ||||
// | // | ||||
// CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..10 | // CHECK12-LABEL: define {{[^@]+}}@.omp_outlined..10 | ||||
// CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], %struct.anon.4* noalias [[__CONTEXT:%.*]]) #[[ATTR3]] { | // CHECK12-SAME: (i32* noalias [[DOTGLOBAL_TID_:%.*]], i32* noalias [[DOTBOUND_TID_:%.*]], [10 x i32]* nonnull align 4 dereferenceable(40) [[A:%.*]]) #[[ATTR3]] { | ||||
// CHECK12-NEXT: entry: | // CHECK12-NEXT: entry: | ||||
// CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK12-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | // CHECK12-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4 | ||||
// CHECK12-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | // CHECK12-NEXT: [[A_ADDR:%.*]] = alloca [10 x i32]*, align 4 | ||||
// CHECK12-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[DOTOMP_IV:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[TMP:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[TMP:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[DOTOMP_LB:%.*]] = alloca i32, align 4 | ||||
// CHECK12-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | // CHECK12-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 | ||||
▲ Show 20 Lines • Show All 1,324 Lines • Show Last 20 Lines |