mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-16 17:46:40 +00:00
[OpenMP][offload] Fix dynamic schedule tracking (#97065)
This patch fixes the dynamic schedule tracking.
This commit is contained in:
parent
6e379de3b1
commit
1a478a69bc
@ -2553,6 +2553,15 @@ void CGOpenMPRuntime::emitForDispatchInit(
|
||||
Args);
|
||||
}
|
||||
|
||||
void CGOpenMPRuntime::emitForDispatchDeinit(CodeGenFunction &CGF,
|
||||
SourceLocation Loc) {
|
||||
if (!CGF.HaveInsertPoint())
|
||||
return;
|
||||
// Call __kmpc_dispatch_deinit(ident_t *loc, kmp_int32 tid);
|
||||
llvm::Value *Args[] = {emitUpdateLocation(CGF, Loc), getThreadID(CGF, Loc)};
|
||||
CGF.EmitRuntimeCall(OMPBuilder.createDispatchDeinitFunction(), Args);
|
||||
}
|
||||
|
||||
static void emitForStaticInitCall(
|
||||
CodeGenFunction &CGF, llvm::Value *UpdateLocation, llvm::Value *ThreadId,
|
||||
llvm::FunctionCallee ForStaticInitFunction, OpenMPSchedType Schedule,
|
||||
@ -11996,6 +12005,11 @@ void CGOpenMPSIMDRuntime::emitForDispatchInit(
|
||||
llvm_unreachable("Not supported in SIMD-only mode");
|
||||
}
|
||||
|
||||
void CGOpenMPSIMDRuntime::emitForDispatchDeinit(CodeGenFunction &CGF,
|
||||
SourceLocation Loc) {
|
||||
llvm_unreachable("Not supported in SIMD-only mode");
|
||||
}
|
||||
|
||||
void CGOpenMPSIMDRuntime::emitForStaticInit(
|
||||
CodeGenFunction &CGF, SourceLocation Loc, OpenMPDirectiveKind DKind,
|
||||
const OpenMPScheduleTy &ScheduleKind, const StaticRTInput &Values) {
|
||||
|
@ -946,6 +946,14 @@ public:
|
||||
unsigned IVSize, bool IVSigned, bool Ordered,
|
||||
const DispatchRTInput &DispatchValues);
|
||||
|
||||
/// This is used for non static scheduled types and when the ordered
|
||||
/// clause is present on the loop construct.
|
||||
///
|
||||
/// \param CGF Reference to current CodeGenFunction.
|
||||
/// \param Loc Clang source location.
|
||||
///
|
||||
virtual void emitForDispatchDeinit(CodeGenFunction &CGF, SourceLocation Loc);
|
||||
|
||||
/// Struct with the values to be passed to the static runtime function
|
||||
struct StaticRTInput {
|
||||
/// Size of the iteration variable in bits.
|
||||
@ -1829,6 +1837,14 @@ public:
|
||||
unsigned IVSize, bool IVSigned, bool Ordered,
|
||||
const DispatchRTInput &DispatchValues) override;
|
||||
|
||||
/// This is used for non static scheduled types and when the ordered
|
||||
/// clause is present on the loop construct.
|
||||
///
|
||||
/// \param CGF Reference to current CodeGenFunction.
|
||||
/// \param Loc Clang source location.
|
||||
///
|
||||
void emitForDispatchDeinit(CodeGenFunction &CGF, SourceLocation Loc) override;
|
||||
|
||||
/// Call the appropriate runtime routine to initialize it before start
|
||||
/// of loop.
|
||||
///
|
||||
|
@ -2985,12 +2985,14 @@ void CodeGenFunction::EmitOMPForOuterLoop(
|
||||
// run-sched-var ICV. If the ICV is set to auto, the schedule is
|
||||
// implementation defined
|
||||
//
|
||||
// __kmpc_dispatch_init();
|
||||
// while(__kmpc_dispatch_next(&LB, &UB)) {
|
||||
// idx = LB;
|
||||
// while (idx <= UB) { BODY; ++idx;
|
||||
// __kmpc_dispatch_fini_(4|8)[u](); // For ordered loops only.
|
||||
// } // inner loop
|
||||
// }
|
||||
// __kmpc_dispatch_deinit();
|
||||
//
|
||||
// OpenMP [2.7.1, Loop Construct, Description, table 2-1]
|
||||
// When schedule(static, chunk_size) is specified, iterations are divided into
|
||||
@ -3044,6 +3046,9 @@ void CodeGenFunction::EmitOMPForOuterLoop(
|
||||
OuterLoopArgs.DKind = LoopArgs.DKind;
|
||||
EmitOMPOuterLoop(DynamicOrOrdered, IsMonotonic, S, LoopScope, OuterLoopArgs,
|
||||
emitOMPLoopBodyWithStopPoint, CodeGenOrdered);
|
||||
if (DynamicOrOrdered) {
|
||||
RT.emitForDispatchDeinit(*this, S.getBeginLoc());
|
||||
}
|
||||
}
|
||||
|
||||
static void emitEmptyOrdered(CodeGenFunction &, SourceLocation Loc,
|
||||
|
@ -2283,6 +2283,9 @@ int main() {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: [[TMP34:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP35:%.*]] = load i32, ptr [[TMP34]], align 4
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP35]])
|
||||
// CHECK1-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK1: omp.precond.end:
|
||||
// CHECK1-NEXT: ret void
|
||||
@ -2533,6 +2536,9 @@ int main() {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: [[TMP35:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP36:%.*]] = load i32, ptr [[TMP35]], align 4
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP36]])
|
||||
// CHECK1-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK1: omp.precond.end:
|
||||
// CHECK1-NEXT: ret void
|
||||
@ -4010,6 +4016,9 @@ int main() {
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: [[TMP34:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP35:%.*]] = load i32, ptr [[TMP34]], align 4
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP35]])
|
||||
// CHECK3-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK3: omp.precond.end:
|
||||
// CHECK3-NEXT: ret void
|
||||
@ -4253,6 +4262,9 @@ int main() {
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: [[TMP35:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP36:%.*]] = load i32, ptr [[TMP35]], align 4
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP36]])
|
||||
// CHECK3-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK3: omp.precond.end:
|
||||
// CHECK3-NEXT: ret void
|
||||
@ -6314,6 +6326,9 @@ int main() {
|
||||
// CHECK9: omp.dispatch.inc:
|
||||
// CHECK9-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK9: omp.dispatch.end:
|
||||
// CHECK9-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK9-NEXT: [[TMP31:%.*]] = load i32, ptr [[TMP30]], align 4
|
||||
// CHECK9-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP31]])
|
||||
// CHECK9-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK9: omp.precond.end:
|
||||
// CHECK9-NEXT: ret void
|
||||
@ -6554,6 +6569,9 @@ int main() {
|
||||
// CHECK9: omp.dispatch.inc:
|
||||
// CHECK9-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK9: omp.dispatch.end:
|
||||
// CHECK9-NEXT: [[TMP31:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK9-NEXT: [[TMP32:%.*]] = load i32, ptr [[TMP31]], align 4
|
||||
// CHECK9-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP32]])
|
||||
// CHECK9-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK9: omp.precond.end:
|
||||
// CHECK9-NEXT: ret void
|
||||
@ -8627,6 +8645,9 @@ int main() {
|
||||
// CHECK9: omp.dispatch.inc:
|
||||
// CHECK9-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK9: omp.dispatch.end:
|
||||
// CHECK9-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK9-NEXT: [[TMP31:%.*]] = load i32, ptr [[TMP30]], align 4
|
||||
// CHECK9-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP31]])
|
||||
// CHECK9-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK9: omp.precond.end:
|
||||
// CHECK9-NEXT: ret void
|
||||
@ -8867,6 +8888,9 @@ int main() {
|
||||
// CHECK9: omp.dispatch.inc:
|
||||
// CHECK9-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK9: omp.dispatch.end:
|
||||
// CHECK9-NEXT: [[TMP31:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK9-NEXT: [[TMP32:%.*]] = load i32, ptr [[TMP31]], align 4
|
||||
// CHECK9-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP32]])
|
||||
// CHECK9-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK9: omp.precond.end:
|
||||
// CHECK9-NEXT: ret void
|
||||
@ -10884,6 +10908,9 @@ int main() {
|
||||
// CHECK11: omp.dispatch.inc:
|
||||
// CHECK11-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK11: omp.dispatch.end:
|
||||
// CHECK11-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK11-NEXT: [[TMP31:%.*]] = load i32, ptr [[TMP30]], align 4
|
||||
// CHECK11-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP31]])
|
||||
// CHECK11-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK11: omp.precond.end:
|
||||
// CHECK11-NEXT: ret void
|
||||
@ -11117,6 +11144,9 @@ int main() {
|
||||
// CHECK11: omp.dispatch.inc:
|
||||
// CHECK11-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK11: omp.dispatch.end:
|
||||
// CHECK11-NEXT: [[TMP31:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK11-NEXT: [[TMP32:%.*]] = load i32, ptr [[TMP31]], align 4
|
||||
// CHECK11-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP32]])
|
||||
// CHECK11-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK11: omp.precond.end:
|
||||
// CHECK11-NEXT: ret void
|
||||
@ -13146,6 +13176,9 @@ int main() {
|
||||
// CHECK11: omp.dispatch.inc:
|
||||
// CHECK11-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK11: omp.dispatch.end:
|
||||
// CHECK11-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK11-NEXT: [[TMP31:%.*]] = load i32, ptr [[TMP30]], align 4
|
||||
// CHECK11-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP31]])
|
||||
// CHECK11-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK11: omp.precond.end:
|
||||
// CHECK11-NEXT: ret void
|
||||
@ -13379,6 +13412,9 @@ int main() {
|
||||
// CHECK11: omp.dispatch.inc:
|
||||
// CHECK11-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK11: omp.dispatch.end:
|
||||
// CHECK11-NEXT: [[TMP31:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK11-NEXT: [[TMP32:%.*]] = load i32, ptr [[TMP31]], align 4
|
||||
// CHECK11-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP32]])
|
||||
// CHECK11-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK11: omp.precond.end:
|
||||
// CHECK11-NEXT: ret void
|
||||
|
@ -2415,12 +2415,15 @@ int main() {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: [[TMP34:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK1-NEXT: [[TMP35:%.*]] = icmp ne i32 [[TMP34]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP35]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK1-NEXT: [[TMP34:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP35:%.*]] = load i32, ptr [[TMP34]], align 4
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP35]])
|
||||
// CHECK1-NEXT: [[TMP36:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK1-NEXT: [[TMP37:%.*]] = icmp ne i32 [[TMP36]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP37]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK1: .omp.final.then:
|
||||
// CHECK1-NEXT: [[TMP36:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK1-NEXT: [[SUB12:%.*]] = sub nsw i32 [[TMP36]], 0
|
||||
// CHECK1-NEXT: [[TMP38:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK1-NEXT: [[SUB12:%.*]] = sub nsw i32 [[TMP38]], 0
|
||||
// CHECK1-NEXT: [[DIV13:%.*]] = sdiv i32 [[SUB12]], 1
|
||||
// CHECK1-NEXT: [[MUL14:%.*]] = mul nsw i32 [[DIV13]], 1
|
||||
// CHECK1-NEXT: [[ADD15:%.*]] = add nsw i32 0, [[MUL14]]
|
||||
@ -2689,12 +2692,15 @@ int main() {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: [[TMP35:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK1-NEXT: [[TMP36:%.*]] = icmp ne i32 [[TMP35]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP36]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK1-NEXT: [[TMP35:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP36:%.*]] = load i32, ptr [[TMP35]], align 4
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP36]])
|
||||
// CHECK1-NEXT: [[TMP37:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK1-NEXT: [[TMP38:%.*]] = icmp ne i32 [[TMP37]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP38]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK1: .omp.final.then:
|
||||
// CHECK1-NEXT: [[TMP37:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK1-NEXT: [[SUB13:%.*]] = sub nsw i32 [[TMP37]], 0
|
||||
// CHECK1-NEXT: [[TMP39:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK1-NEXT: [[SUB13:%.*]] = sub nsw i32 [[TMP39]], 0
|
||||
// CHECK1-NEXT: [[DIV14:%.*]] = sdiv i32 [[SUB13]], 1
|
||||
// CHECK1-NEXT: [[MUL15:%.*]] = mul nsw i32 [[DIV14]], 1
|
||||
// CHECK1-NEXT: [[ADD16:%.*]] = add nsw i32 0, [[MUL15]]
|
||||
@ -4310,12 +4316,15 @@ int main() {
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: [[TMP34:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK3-NEXT: [[TMP35:%.*]] = icmp ne i32 [[TMP34]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP35]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK3-NEXT: [[TMP34:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP35:%.*]] = load i32, ptr [[TMP34]], align 4
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP35]])
|
||||
// CHECK3-NEXT: [[TMP36:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK3-NEXT: [[TMP37:%.*]] = icmp ne i32 [[TMP36]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP37]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK3: .omp.final.then:
|
||||
// CHECK3-NEXT: [[TMP36:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK3-NEXT: [[SUB9:%.*]] = sub nsw i32 [[TMP36]], 0
|
||||
// CHECK3-NEXT: [[TMP38:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK3-NEXT: [[SUB9:%.*]] = sub nsw i32 [[TMP38]], 0
|
||||
// CHECK3-NEXT: [[DIV10:%.*]] = sdiv i32 [[SUB9]], 1
|
||||
// CHECK3-NEXT: [[MUL11:%.*]] = mul nsw i32 [[DIV10]], 1
|
||||
// CHECK3-NEXT: [[ADD12:%.*]] = add nsw i32 0, [[MUL11]]
|
||||
@ -4577,12 +4586,15 @@ int main() {
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: [[TMP35:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK3-NEXT: [[TMP36:%.*]] = icmp ne i32 [[TMP35]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP36]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK3-NEXT: [[TMP35:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP36:%.*]] = load i32, ptr [[TMP35]], align 4
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP36]])
|
||||
// CHECK3-NEXT: [[TMP37:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK3-NEXT: [[TMP38:%.*]] = icmp ne i32 [[TMP37]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP38]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK3: .omp.final.then:
|
||||
// CHECK3-NEXT: [[TMP37:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK3-NEXT: [[SUB10:%.*]] = sub nsw i32 [[TMP37]], 0
|
||||
// CHECK3-NEXT: [[TMP39:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK3-NEXT: [[SUB10:%.*]] = sub nsw i32 [[TMP39]], 0
|
||||
// CHECK3-NEXT: [[DIV11:%.*]] = sdiv i32 [[SUB10]], 1
|
||||
// CHECK3-NEXT: [[MUL12:%.*]] = mul nsw i32 [[DIV11]], 1
|
||||
// CHECK3-NEXT: [[ADD13:%.*]] = add nsw i32 0, [[MUL12]]
|
||||
@ -6836,12 +6848,15 @@ int main() {
|
||||
// CHECK9: omp.dispatch.inc:
|
||||
// CHECK9-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK9: omp.dispatch.end:
|
||||
// CHECK9-NEXT: [[TMP30:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK9-NEXT: [[TMP31:%.*]] = icmp ne i32 [[TMP30]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP31]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK9-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK9-NEXT: [[TMP31:%.*]] = load i32, ptr [[TMP30]], align 4
|
||||
// CHECK9-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP31]])
|
||||
// CHECK9-NEXT: [[TMP32:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK9-NEXT: [[TMP33:%.*]] = icmp ne i32 [[TMP32]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP33]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK9: .omp.final.then:
|
||||
// CHECK9-NEXT: [[TMP32:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK9-NEXT: [[SUB12:%.*]] = sub nsw i32 [[TMP32]], 0
|
||||
// CHECK9-NEXT: [[TMP34:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK9-NEXT: [[SUB12:%.*]] = sub nsw i32 [[TMP34]], 0
|
||||
// CHECK9-NEXT: [[DIV13:%.*]] = sdiv i32 [[SUB12]], 1
|
||||
// CHECK9-NEXT: [[MUL14:%.*]] = mul nsw i32 [[DIV13]], 1
|
||||
// CHECK9-NEXT: [[ADD15:%.*]] = add nsw i32 0, [[MUL14]]
|
||||
@ -7100,12 +7115,15 @@ int main() {
|
||||
// CHECK9: omp.dispatch.inc:
|
||||
// CHECK9-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK9: omp.dispatch.end:
|
||||
// CHECK9-NEXT: [[TMP31:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK9-NEXT: [[TMP32:%.*]] = icmp ne i32 [[TMP31]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP32]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK9-NEXT: [[TMP31:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK9-NEXT: [[TMP32:%.*]] = load i32, ptr [[TMP31]], align 4
|
||||
// CHECK9-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP32]])
|
||||
// CHECK9-NEXT: [[TMP33:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK9-NEXT: [[TMP34:%.*]] = icmp ne i32 [[TMP33]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP34]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK9: .omp.final.then:
|
||||
// CHECK9-NEXT: [[TMP33:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK9-NEXT: [[SUB13:%.*]] = sub nsw i32 [[TMP33]], 0
|
||||
// CHECK9-NEXT: [[TMP35:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK9-NEXT: [[SUB13:%.*]] = sub nsw i32 [[TMP35]], 0
|
||||
// CHECK9-NEXT: [[DIV14:%.*]] = sdiv i32 [[SUB13]], 1
|
||||
// CHECK9-NEXT: [[MUL15:%.*]] = mul nsw i32 [[DIV14]], 1
|
||||
// CHECK9-NEXT: [[ADD16:%.*]] = add nsw i32 0, [[MUL15]]
|
||||
@ -9302,12 +9320,15 @@ int main() {
|
||||
// CHECK9: omp.dispatch.inc:
|
||||
// CHECK9-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK9: omp.dispatch.end:
|
||||
// CHECK9-NEXT: [[TMP30:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK9-NEXT: [[TMP31:%.*]] = icmp ne i32 [[TMP30]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP31]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK9-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK9-NEXT: [[TMP31:%.*]] = load i32, ptr [[TMP30]], align 4
|
||||
// CHECK9-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP31]])
|
||||
// CHECK9-NEXT: [[TMP32:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK9-NEXT: [[TMP33:%.*]] = icmp ne i32 [[TMP32]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP33]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK9: .omp.final.then:
|
||||
// CHECK9-NEXT: [[TMP32:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK9-NEXT: [[SUB12:%.*]] = sub nsw i32 [[TMP32]], 0
|
||||
// CHECK9-NEXT: [[TMP34:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK9-NEXT: [[SUB12:%.*]] = sub nsw i32 [[TMP34]], 0
|
||||
// CHECK9-NEXT: [[DIV13:%.*]] = sdiv i32 [[SUB12]], 1
|
||||
// CHECK9-NEXT: [[MUL14:%.*]] = mul nsw i32 [[DIV13]], 1
|
||||
// CHECK9-NEXT: [[ADD15:%.*]] = add nsw i32 0, [[MUL14]]
|
||||
@ -9566,12 +9587,15 @@ int main() {
|
||||
// CHECK9: omp.dispatch.inc:
|
||||
// CHECK9-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK9: omp.dispatch.end:
|
||||
// CHECK9-NEXT: [[TMP31:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK9-NEXT: [[TMP32:%.*]] = icmp ne i32 [[TMP31]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP32]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK9-NEXT: [[TMP31:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK9-NEXT: [[TMP32:%.*]] = load i32, ptr [[TMP31]], align 4
|
||||
// CHECK9-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP32]])
|
||||
// CHECK9-NEXT: [[TMP33:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK9-NEXT: [[TMP34:%.*]] = icmp ne i32 [[TMP33]], 0
|
||||
// CHECK9-NEXT: br i1 [[TMP34]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK9: .omp.final.then:
|
||||
// CHECK9-NEXT: [[TMP33:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK9-NEXT: [[SUB13:%.*]] = sub nsw i32 [[TMP33]], 0
|
||||
// CHECK9-NEXT: [[TMP35:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK9-NEXT: [[SUB13:%.*]] = sub nsw i32 [[TMP35]], 0
|
||||
// CHECK9-NEXT: [[DIV14:%.*]] = sdiv i32 [[SUB13]], 1
|
||||
// CHECK9-NEXT: [[MUL15:%.*]] = mul nsw i32 [[DIV14]], 1
|
||||
// CHECK9-NEXT: [[ADD16:%.*]] = add nsw i32 0, [[MUL15]]
|
||||
@ -11727,12 +11751,15 @@ int main() {
|
||||
// CHECK11: omp.dispatch.inc:
|
||||
// CHECK11-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK11: omp.dispatch.end:
|
||||
// CHECK11-NEXT: [[TMP30:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK11-NEXT: [[TMP31:%.*]] = icmp ne i32 [[TMP30]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP31]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK11-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK11-NEXT: [[TMP31:%.*]] = load i32, ptr [[TMP30]], align 4
|
||||
// CHECK11-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP31]])
|
||||
// CHECK11-NEXT: [[TMP32:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK11-NEXT: [[TMP33:%.*]] = icmp ne i32 [[TMP32]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP33]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK11: .omp.final.then:
|
||||
// CHECK11-NEXT: [[TMP32:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK11-NEXT: [[SUB9:%.*]] = sub nsw i32 [[TMP32]], 0
|
||||
// CHECK11-NEXT: [[TMP34:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK11-NEXT: [[SUB9:%.*]] = sub nsw i32 [[TMP34]], 0
|
||||
// CHECK11-NEXT: [[DIV10:%.*]] = sdiv i32 [[SUB9]], 1
|
||||
// CHECK11-NEXT: [[MUL11:%.*]] = mul nsw i32 [[DIV10]], 1
|
||||
// CHECK11-NEXT: [[ADD12:%.*]] = add nsw i32 0, [[MUL11]]
|
||||
@ -11984,12 +12011,15 @@ int main() {
|
||||
// CHECK11: omp.dispatch.inc:
|
||||
// CHECK11-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK11: omp.dispatch.end:
|
||||
// CHECK11-NEXT: [[TMP31:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK11-NEXT: [[TMP32:%.*]] = icmp ne i32 [[TMP31]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP32]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK11-NEXT: [[TMP31:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK11-NEXT: [[TMP32:%.*]] = load i32, ptr [[TMP31]], align 4
|
||||
// CHECK11-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP32]])
|
||||
// CHECK11-NEXT: [[TMP33:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK11-NEXT: [[TMP34:%.*]] = icmp ne i32 [[TMP33]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP34]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK11: .omp.final.then:
|
||||
// CHECK11-NEXT: [[TMP33:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK11-NEXT: [[SUB10:%.*]] = sub nsw i32 [[TMP33]], 0
|
||||
// CHECK11-NEXT: [[TMP35:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK11-NEXT: [[SUB10:%.*]] = sub nsw i32 [[TMP35]], 0
|
||||
// CHECK11-NEXT: [[DIV11:%.*]] = sdiv i32 [[SUB10]], 1
|
||||
// CHECK11-NEXT: [[MUL12:%.*]] = mul nsw i32 [[DIV11]], 1
|
||||
// CHECK11-NEXT: [[ADD13:%.*]] = add nsw i32 0, [[MUL12]]
|
||||
@ -14142,12 +14172,15 @@ int main() {
|
||||
// CHECK11: omp.dispatch.inc:
|
||||
// CHECK11-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK11: omp.dispatch.end:
|
||||
// CHECK11-NEXT: [[TMP30:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK11-NEXT: [[TMP31:%.*]] = icmp ne i32 [[TMP30]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP31]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK11-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK11-NEXT: [[TMP31:%.*]] = load i32, ptr [[TMP30]], align 4
|
||||
// CHECK11-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP31]])
|
||||
// CHECK11-NEXT: [[TMP32:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK11-NEXT: [[TMP33:%.*]] = icmp ne i32 [[TMP32]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP33]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK11: .omp.final.then:
|
||||
// CHECK11-NEXT: [[TMP32:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK11-NEXT: [[SUB9:%.*]] = sub nsw i32 [[TMP32]], 0
|
||||
// CHECK11-NEXT: [[TMP34:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK11-NEXT: [[SUB9:%.*]] = sub nsw i32 [[TMP34]], 0
|
||||
// CHECK11-NEXT: [[DIV10:%.*]] = sdiv i32 [[SUB9]], 1
|
||||
// CHECK11-NEXT: [[MUL11:%.*]] = mul nsw i32 [[DIV10]], 1
|
||||
// CHECK11-NEXT: [[ADD12:%.*]] = add nsw i32 0, [[MUL11]]
|
||||
@ -14399,12 +14432,15 @@ int main() {
|
||||
// CHECK11: omp.dispatch.inc:
|
||||
// CHECK11-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK11: omp.dispatch.end:
|
||||
// CHECK11-NEXT: [[TMP31:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK11-NEXT: [[TMP32:%.*]] = icmp ne i32 [[TMP31]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP32]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK11-NEXT: [[TMP31:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK11-NEXT: [[TMP32:%.*]] = load i32, ptr [[TMP31]], align 4
|
||||
// CHECK11-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP32]])
|
||||
// CHECK11-NEXT: [[TMP33:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK11-NEXT: [[TMP34:%.*]] = icmp ne i32 [[TMP33]], 0
|
||||
// CHECK11-NEXT: br i1 [[TMP34]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK11: .omp.final.then:
|
||||
// CHECK11-NEXT: [[TMP33:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK11-NEXT: [[SUB10:%.*]] = sub nsw i32 [[TMP33]], 0
|
||||
// CHECK11-NEXT: [[TMP35:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK11-NEXT: [[SUB10:%.*]] = sub nsw i32 [[TMP35]], 0
|
||||
// CHECK11-NEXT: [[DIV11:%.*]] = sdiv i32 [[SUB10]], 1
|
||||
// CHECK11-NEXT: [[MUL12:%.*]] = mul nsw i32 [[DIV11]], 1
|
||||
// CHECK11-NEXT: [[ADD13:%.*]] = add nsw i32 0, [[MUL12]]
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -203,6 +203,7 @@ void foo_simd(int low, int up) {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[TMP0]])
|
||||
// CHECK1-NEXT: call void @__kmpc_barrier(ptr @[[GLOB2:[0-9]+]], i32 [[TMP0]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
@ -285,6 +286,7 @@ void foo_simd(int low, int up) {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[TMP0]])
|
||||
// CHECK1-NEXT: call void @__kmpc_barrier(ptr @[[GLOB2]], i32 [[TMP0]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
@ -415,6 +417,7 @@ void foo_simd(int low, int up) {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[TMP0]])
|
||||
// CHECK1-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK1: omp.precond.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_barrier(ptr @[[GLOB2]], i32 [[TMP0]])
|
||||
@ -516,6 +519,7 @@ void foo_simd(int low, int up) {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[TMP0]])
|
||||
// CHECK1-NEXT: call void @__kmpc_barrier(ptr @[[GLOB2]], i32 [[TMP0]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
@ -671,6 +675,7 @@ void foo_simd(int low, int up) {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[TMP0]])
|
||||
// CHECK1-NEXT: [[TMP34:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK1-NEXT: [[TMP35:%.*]] = icmp ne i32 [[TMP34]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP35]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -805,8 +810,10 @@ void foo_simd(int low, int up) {
|
||||
// CHECK1-IRBUILDER: omp.dispatch.inc:
|
||||
// CHECK1-IRBUILDER-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1-IRBUILDER: omp.dispatch.end:
|
||||
// CHECK1-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM12:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK1-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4:[0-9]+]], i32 [[OMP_GLOBAL_THREAD_NUM12]])
|
||||
// CHECK1-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM12:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB3]])
|
||||
// CHECK1-IRBUILDER-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM12]])
|
||||
// CHECK1-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM13:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK1-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4:[0-9]+]], i32 [[OMP_GLOBAL_THREAD_NUM13]])
|
||||
// CHECK1-IRBUILDER-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -893,8 +900,10 @@ void foo_simd(int low, int up) {
|
||||
// CHECK1-IRBUILDER: omp.dispatch.inc:
|
||||
// CHECK1-IRBUILDER-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1-IRBUILDER: omp.dispatch.end:
|
||||
// CHECK1-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM11:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK1-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM11]])
|
||||
// CHECK1-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM11:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB6]])
|
||||
// CHECK1-IRBUILDER-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM11]])
|
||||
// CHECK1-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM12:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK1-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM12]])
|
||||
// CHECK1-IRBUILDER-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -1029,10 +1038,12 @@ void foo_simd(int low, int up) {
|
||||
// CHECK1-IRBUILDER: omp.dispatch.inc:
|
||||
// CHECK1-IRBUILDER-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1-IRBUILDER: omp.dispatch.end:
|
||||
// CHECK1-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM34:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB8]])
|
||||
// CHECK1-IRBUILDER-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM34]])
|
||||
// CHECK1-IRBUILDER-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK1-IRBUILDER: omp.precond.end:
|
||||
// CHECK1-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM34:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK1-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM34]])
|
||||
// CHECK1-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM35:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK1-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM35]])
|
||||
// CHECK1-IRBUILDER-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -1136,8 +1147,10 @@ void foo_simd(int low, int up) {
|
||||
// CHECK1-IRBUILDER: omp.dispatch.inc:
|
||||
// CHECK1-IRBUILDER-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1-IRBUILDER: omp.dispatch.end:
|
||||
// CHECK1-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM19:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK1-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM19]])
|
||||
// CHECK1-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM19:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB10]])
|
||||
// CHECK1-IRBUILDER-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM19]])
|
||||
// CHECK1-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM20:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK1-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM20]])
|
||||
// CHECK1-IRBUILDER-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -1298,6 +1311,8 @@ void foo_simd(int low, int up) {
|
||||
// CHECK1-IRBUILDER: omp.dispatch.inc:
|
||||
// CHECK1-IRBUILDER-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1-IRBUILDER: omp.dispatch.end:
|
||||
// CHECK1-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM43:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB12]])
|
||||
// CHECK1-IRBUILDER-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM43]])
|
||||
// CHECK1-IRBUILDER-NEXT: [[TMP33:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK1-IRBUILDER-NEXT: [[TMP34:%.*]] = icmp ne i32 [[TMP33]], 0
|
||||
// CHECK1-IRBUILDER-NEXT: br i1 [[TMP34]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -1305,19 +1320,19 @@ void foo_simd(int low, int up) {
|
||||
// CHECK1-IRBUILDER-NEXT: [[TMP35:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_18]], align 4
|
||||
// CHECK1-IRBUILDER-NEXT: [[TMP36:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_19]], align 4
|
||||
// CHECK1-IRBUILDER-NEXT: [[TMP37:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_18]], align 4
|
||||
// CHECK1-IRBUILDER-NEXT: [[SUB43:%.*]] = sub i32 [[TMP36]], [[TMP37]]
|
||||
// CHECK1-IRBUILDER-NEXT: [[SUB44:%.*]] = sub i32 [[SUB43]], 1
|
||||
// CHECK1-IRBUILDER-NEXT: [[ADD45:%.*]] = add i32 [[SUB44]], 1
|
||||
// CHECK1-IRBUILDER-NEXT: [[DIV46:%.*]] = udiv i32 [[ADD45]], 1
|
||||
// CHECK1-IRBUILDER-NEXT: [[MUL47:%.*]] = mul i32 [[DIV46]], 1
|
||||
// CHECK1-IRBUILDER-NEXT: [[ADD48:%.*]] = add i32 [[TMP35]], [[MUL47]]
|
||||
// CHECK1-IRBUILDER-NEXT: store i32 [[ADD48]], ptr [[I28]], align 4
|
||||
// CHECK1-IRBUILDER-NEXT: [[SUB44:%.*]] = sub i32 [[TMP36]], [[TMP37]]
|
||||
// CHECK1-IRBUILDER-NEXT: [[SUB45:%.*]] = sub i32 [[SUB44]], 1
|
||||
// CHECK1-IRBUILDER-NEXT: [[ADD46:%.*]] = add i32 [[SUB45]], 1
|
||||
// CHECK1-IRBUILDER-NEXT: [[DIV47:%.*]] = udiv i32 [[ADD46]], 1
|
||||
// CHECK1-IRBUILDER-NEXT: [[MUL48:%.*]] = mul i32 [[DIV47]], 1
|
||||
// CHECK1-IRBUILDER-NEXT: [[ADD49:%.*]] = add i32 [[TMP35]], [[MUL48]]
|
||||
// CHECK1-IRBUILDER-NEXT: store i32 [[ADD49]], ptr [[I28]], align 4
|
||||
// CHECK1-IRBUILDER-NEXT: br label [[DOTOMP_FINAL_DONE]]
|
||||
// CHECK1-IRBUILDER: .omp.final.done:
|
||||
// CHECK1-IRBUILDER-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK1-IRBUILDER: omp.precond.end:
|
||||
// CHECK1-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM49:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK1-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM49]])
|
||||
// CHECK1-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM50:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK1-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM50]])
|
||||
// CHECK1-IRBUILDER-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -1428,6 +1443,7 @@ void foo_simd(int low, int up) {
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: call void @__kmpc_barrier(ptr @[[GLOB2:[0-9]+]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
@ -1510,6 +1526,7 @@ void foo_simd(int low, int up) {
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: call void @__kmpc_barrier(ptr @[[GLOB2]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
@ -1640,6 +1657,7 @@ void foo_simd(int low, int up) {
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK3: omp.precond.end:
|
||||
// CHECK3-NEXT: call void @__kmpc_barrier(ptr @[[GLOB2]], i32 [[TMP0]])
|
||||
@ -1741,6 +1759,7 @@ void foo_simd(int low, int up) {
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: call void @__kmpc_barrier(ptr @[[GLOB2]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
@ -1896,6 +1915,7 @@ void foo_simd(int low, int up) {
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[TMP0]])
|
||||
// CHECK3-NEXT: [[TMP34:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK3-NEXT: [[TMP35:%.*]] = icmp ne i32 [[TMP34]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP35]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -2030,8 +2050,10 @@ void foo_simd(int low, int up) {
|
||||
// CHECK3-IRBUILDER: omp.dispatch.inc:
|
||||
// CHECK3-IRBUILDER-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3-IRBUILDER: omp.dispatch.end:
|
||||
// CHECK3-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM12:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK3-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4:[0-9]+]], i32 [[OMP_GLOBAL_THREAD_NUM12]])
|
||||
// CHECK3-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM12:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB3]])
|
||||
// CHECK3-IRBUILDER-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM12]])
|
||||
// CHECK3-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM13:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK3-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4:[0-9]+]], i32 [[OMP_GLOBAL_THREAD_NUM13]])
|
||||
// CHECK3-IRBUILDER-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -2118,8 +2140,10 @@ void foo_simd(int low, int up) {
|
||||
// CHECK3-IRBUILDER: omp.dispatch.inc:
|
||||
// CHECK3-IRBUILDER-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3-IRBUILDER: omp.dispatch.end:
|
||||
// CHECK3-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM11:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK3-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM11]])
|
||||
// CHECK3-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM11:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB6]])
|
||||
// CHECK3-IRBUILDER-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM11]])
|
||||
// CHECK3-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM12:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK3-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM12]])
|
||||
// CHECK3-IRBUILDER-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -2254,10 +2278,12 @@ void foo_simd(int low, int up) {
|
||||
// CHECK3-IRBUILDER: omp.dispatch.inc:
|
||||
// CHECK3-IRBUILDER-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3-IRBUILDER: omp.dispatch.end:
|
||||
// CHECK3-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM34:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB8]])
|
||||
// CHECK3-IRBUILDER-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM34]])
|
||||
// CHECK3-IRBUILDER-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK3-IRBUILDER: omp.precond.end:
|
||||
// CHECK3-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM34:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK3-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM34]])
|
||||
// CHECK3-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM35:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK3-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM35]])
|
||||
// CHECK3-IRBUILDER-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -2361,8 +2387,10 @@ void foo_simd(int low, int up) {
|
||||
// CHECK3-IRBUILDER: omp.dispatch.inc:
|
||||
// CHECK3-IRBUILDER-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3-IRBUILDER: omp.dispatch.end:
|
||||
// CHECK3-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM19:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK3-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM19]])
|
||||
// CHECK3-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM19:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB10]])
|
||||
// CHECK3-IRBUILDER-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM19]])
|
||||
// CHECK3-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM20:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK3-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM20]])
|
||||
// CHECK3-IRBUILDER-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -2523,6 +2551,8 @@ void foo_simd(int low, int up) {
|
||||
// CHECK3-IRBUILDER: omp.dispatch.inc:
|
||||
// CHECK3-IRBUILDER-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3-IRBUILDER: omp.dispatch.end:
|
||||
// CHECK3-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM43:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB12]])
|
||||
// CHECK3-IRBUILDER-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB1]], i32 [[OMP_GLOBAL_THREAD_NUM43]])
|
||||
// CHECK3-IRBUILDER-NEXT: [[TMP33:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK3-IRBUILDER-NEXT: [[TMP34:%.*]] = icmp ne i32 [[TMP33]], 0
|
||||
// CHECK3-IRBUILDER-NEXT: br i1 [[TMP34]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -2530,19 +2560,19 @@ void foo_simd(int low, int up) {
|
||||
// CHECK3-IRBUILDER-NEXT: [[TMP35:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_18]], align 4
|
||||
// CHECK3-IRBUILDER-NEXT: [[TMP36:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_19]], align 4
|
||||
// CHECK3-IRBUILDER-NEXT: [[TMP37:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_18]], align 4
|
||||
// CHECK3-IRBUILDER-NEXT: [[SUB43:%.*]] = sub i32 [[TMP36]], [[TMP37]]
|
||||
// CHECK3-IRBUILDER-NEXT: [[SUB44:%.*]] = sub i32 [[SUB43]], 1
|
||||
// CHECK3-IRBUILDER-NEXT: [[ADD45:%.*]] = add i32 [[SUB44]], 1
|
||||
// CHECK3-IRBUILDER-NEXT: [[DIV46:%.*]] = udiv i32 [[ADD45]], 1
|
||||
// CHECK3-IRBUILDER-NEXT: [[MUL47:%.*]] = mul i32 [[DIV46]], 1
|
||||
// CHECK3-IRBUILDER-NEXT: [[ADD48:%.*]] = add i32 [[TMP35]], [[MUL47]]
|
||||
// CHECK3-IRBUILDER-NEXT: store i32 [[ADD48]], ptr [[I28]], align 4
|
||||
// CHECK3-IRBUILDER-NEXT: [[SUB44:%.*]] = sub i32 [[TMP36]], [[TMP37]]
|
||||
// CHECK3-IRBUILDER-NEXT: [[SUB45:%.*]] = sub i32 [[SUB44]], 1
|
||||
// CHECK3-IRBUILDER-NEXT: [[ADD46:%.*]] = add i32 [[SUB45]], 1
|
||||
// CHECK3-IRBUILDER-NEXT: [[DIV47:%.*]] = udiv i32 [[ADD46]], 1
|
||||
// CHECK3-IRBUILDER-NEXT: [[MUL48:%.*]] = mul i32 [[DIV47]], 1
|
||||
// CHECK3-IRBUILDER-NEXT: [[ADD49:%.*]] = add i32 [[TMP35]], [[MUL48]]
|
||||
// CHECK3-IRBUILDER-NEXT: store i32 [[ADD49]], ptr [[I28]], align 4
|
||||
// CHECK3-IRBUILDER-NEXT: br label [[DOTOMP_FINAL_DONE]]
|
||||
// CHECK3-IRBUILDER: .omp.final.done:
|
||||
// CHECK3-IRBUILDER-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK3-IRBUILDER: omp.precond.end:
|
||||
// CHECK3-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM49:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK3-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM49]])
|
||||
// CHECK3-IRBUILDER-NEXT: [[OMP_GLOBAL_THREAD_NUM50:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK3-IRBUILDER-NEXT: call void @__kmpc_barrier(ptr @[[GLOB4]], i32 [[OMP_GLOBAL_THREAD_NUM50]])
|
||||
// CHECK3-IRBUILDER-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -808,6 +808,7 @@ void range_for_collapsed() {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP5]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -910,6 +911,7 @@ void range_for_collapsed() {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP5]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -1065,6 +1067,9 @@ void range_for_collapsed() {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: [[TMP35:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP36:%.*]] = load i32, ptr [[TMP35]], align 4
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP36]])
|
||||
// CHECK1-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK1: omp.precond.end:
|
||||
// CHECK1-NEXT: ret void
|
||||
@ -1186,6 +1191,7 @@ void range_for_collapsed() {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP5]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -1292,7 +1298,7 @@ void range_for_collapsed() {
|
||||
// CHECK1-NEXT: [[ADD:%.*]] = add i32 131071, [[MUL]]
|
||||
// CHECK1-NEXT: store i32 [[ADD]], ptr [[I]], align 4
|
||||
// CHECK1-NEXT: [[CALL:%.*]] = invoke noundef i32 @_Z3foov()
|
||||
// CHECK1-NEXT: to label [[INVOKE_CONT:%.*]] unwind label [[TERMINATE_LPAD:%.*]]
|
||||
// CHECK1-NEXT: to label [[INVOKE_CONT:%.*]] unwind label [[TERMINATE_LPAD:%.*]]
|
||||
// CHECK1: invoke.cont:
|
||||
// CHECK1-NEXT: [[CONV:%.*]] = sitofp i32 [[CALL]] to float
|
||||
// CHECK1-NEXT: [[TMP13:%.*]] = load i32, ptr [[I]], align 4
|
||||
@ -1337,7 +1343,7 @@ void range_for_collapsed() {
|
||||
// CHECK1-NEXT: ret void
|
||||
// CHECK1: terminate.lpad:
|
||||
// CHECK1-NEXT: [[TMP25:%.*]] = landingpad { ptr, i32 }
|
||||
// CHECK1-NEXT: catch ptr null
|
||||
// CHECK1-NEXT: catch ptr null
|
||||
// CHECK1-NEXT: [[TMP26:%.*]] = extractvalue { ptr, i32 } [[TMP25]], 0
|
||||
// CHECK1-NEXT: call void @__clang_call_terminate(ptr [[TMP26]]) #[[ATTR7:[0-9]+]]
|
||||
// CHECK1-NEXT: unreachable
|
||||
@ -1918,6 +1924,7 @@ void range_for_collapsed() {
|
||||
// CHECK2: omp.dispatch.inc:
|
||||
// CHECK2-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK2: omp.dispatch.end:
|
||||
// CHECK2-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP5]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -2020,6 +2027,7 @@ void range_for_collapsed() {
|
||||
// CHECK2: omp.dispatch.inc:
|
||||
// CHECK2-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK2: omp.dispatch.end:
|
||||
// CHECK2-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP5]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -2175,6 +2183,9 @@ void range_for_collapsed() {
|
||||
// CHECK2: omp.dispatch.inc:
|
||||
// CHECK2-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK2: omp.dispatch.end:
|
||||
// CHECK2-NEXT: [[TMP35:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK2-NEXT: [[TMP36:%.*]] = load i32, ptr [[TMP35]], align 4
|
||||
// CHECK2-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP36]])
|
||||
// CHECK2-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK2: omp.precond.end:
|
||||
// CHECK2-NEXT: ret void
|
||||
@ -2296,6 +2307,7 @@ void range_for_collapsed() {
|
||||
// CHECK2: omp.dispatch.inc:
|
||||
// CHECK2-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK2: omp.dispatch.end:
|
||||
// CHECK2-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP5]])
|
||||
// CHECK2-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -2402,7 +2414,7 @@ void range_for_collapsed() {
|
||||
// CHECK2-NEXT: [[ADD:%.*]] = add i32 131071, [[MUL]]
|
||||
// CHECK2-NEXT: store i32 [[ADD]], ptr [[I]], align 4
|
||||
// CHECK2-NEXT: [[CALL:%.*]] = invoke noundef i32 @_Z3foov()
|
||||
// CHECK2-NEXT: to label [[INVOKE_CONT:%.*]] unwind label [[TERMINATE_LPAD:%.*]]
|
||||
// CHECK2-NEXT: to label [[INVOKE_CONT:%.*]] unwind label [[TERMINATE_LPAD:%.*]]
|
||||
// CHECK2: invoke.cont:
|
||||
// CHECK2-NEXT: [[CONV:%.*]] = sitofp i32 [[CALL]] to float
|
||||
// CHECK2-NEXT: [[TMP13:%.*]] = load i32, ptr [[I]], align 4
|
||||
@ -2447,7 +2459,7 @@ void range_for_collapsed() {
|
||||
// CHECK2-NEXT: ret void
|
||||
// CHECK2: terminate.lpad:
|
||||
// CHECK2-NEXT: [[TMP25:%.*]] = landingpad { ptr, i32 }
|
||||
// CHECK2-NEXT: catch ptr null
|
||||
// CHECK2-NEXT: catch ptr null
|
||||
// CHECK2-NEXT: [[TMP26:%.*]] = extractvalue { ptr, i32 } [[TMP25]], 0
|
||||
// CHECK2-NEXT: call void @__clang_call_terminate(ptr [[TMP26]]) #[[ATTR7:[0-9]+]]
|
||||
// CHECK2-NEXT: unreachable
|
||||
@ -3028,6 +3040,7 @@ void range_for_collapsed() {
|
||||
// CHECK5: omp.dispatch.inc:
|
||||
// CHECK5-NEXT: br label [[OMP_DISPATCH_COND]], !dbg [[DBG53]], !llvm.loop [[LOOP60:![0-9]+]]
|
||||
// CHECK5: omp.dispatch.end:
|
||||
// CHECK5-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB21]], i32 [[TMP5]]), !dbg [[DBG53]]
|
||||
// CHECK5-NEXT: ret void, !dbg [[DBG57]]
|
||||
//
|
||||
//
|
||||
@ -3130,6 +3143,7 @@ void range_for_collapsed() {
|
||||
// CHECK5: omp.dispatch.inc:
|
||||
// CHECK5-NEXT: br label [[OMP_DISPATCH_COND]], !dbg [[DBG65]], !llvm.loop [[LOOP72:![0-9]+]]
|
||||
// CHECK5: omp.dispatch.end:
|
||||
// CHECK5-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB23]], i32 [[TMP5]]), !dbg [[DBG65]]
|
||||
// CHECK5-NEXT: ret void, !dbg [[DBG69]]
|
||||
//
|
||||
//
|
||||
@ -3285,6 +3299,9 @@ void range_for_collapsed() {
|
||||
// CHECK5: omp.dispatch.inc:
|
||||
// CHECK5-NEXT: br label [[OMP_DISPATCH_COND]], !dbg [[DBG79]], !llvm.loop [[LOOP87:![0-9]+]]
|
||||
// CHECK5: omp.dispatch.end:
|
||||
// CHECK5-NEXT: [[TMP35:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8, !dbg [[DBG79]]
|
||||
// CHECK5-NEXT: [[TMP36:%.*]] = load i32, ptr [[TMP35]], align 4, !dbg [[DBG79]]
|
||||
// CHECK5-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB25]], i32 [[TMP36]]), !dbg [[DBG79]]
|
||||
// CHECK5-NEXT: br label [[OMP_PRECOND_END]], !dbg [[DBG79]]
|
||||
// CHECK5: omp.precond.end:
|
||||
// CHECK5-NEXT: ret void, !dbg [[DBG84]]
|
||||
@ -3406,6 +3423,7 @@ void range_for_collapsed() {
|
||||
// CHECK5: omp.dispatch.inc:
|
||||
// CHECK5-NEXT: br label [[OMP_DISPATCH_COND]], !dbg [[DBG93]], !llvm.loop [[LOOP101:![0-9]+]]
|
||||
// CHECK5: omp.dispatch.end:
|
||||
// CHECK5-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB27]], i32 [[TMP5]]), !dbg [[DBG93]]
|
||||
// CHECK5-NEXT: ret void, !dbg [[DBG98]]
|
||||
//
|
||||
//
|
||||
@ -3512,7 +3530,7 @@ void range_for_collapsed() {
|
||||
// CHECK5-NEXT: [[ADD:%.*]] = add i32 131071, [[MUL]], !dbg [[DBG110]]
|
||||
// CHECK5-NEXT: store i32 [[ADD]], ptr [[I]], align 4, !dbg [[DBG110]]
|
||||
// CHECK5-NEXT: [[CALL:%.*]] = invoke noundef i32 @_Z3foov()
|
||||
// CHECK5-NEXT: to label [[INVOKE_CONT:%.*]] unwind label [[TERMINATE_LPAD:%.*]], !dbg [[DBG111:![0-9]+]]
|
||||
// CHECK5-NEXT: to label [[INVOKE_CONT:%.*]] unwind label [[TERMINATE_LPAD:%.*]], !dbg [[DBG111:![0-9]+]]
|
||||
// CHECK5: invoke.cont:
|
||||
// CHECK5-NEXT: [[CONV:%.*]] = sitofp i32 [[CALL]] to float, !dbg [[DBG111]]
|
||||
// CHECK5-NEXT: [[TMP13:%.*]] = load i32, ptr [[I]], align 4, !dbg [[DBG111]]
|
||||
@ -3557,7 +3575,7 @@ void range_for_collapsed() {
|
||||
// CHECK5-NEXT: ret void, !dbg [[DBG111]]
|
||||
// CHECK5: terminate.lpad:
|
||||
// CHECK5-NEXT: [[TMP25:%.*]] = landingpad { ptr, i32 }
|
||||
// CHECK5-NEXT: catch ptr null, !dbg [[DBG111]]
|
||||
// CHECK5-NEXT: catch ptr null, !dbg [[DBG111]]
|
||||
// CHECK5-NEXT: [[TMP26:%.*]] = extractvalue { ptr, i32 } [[TMP25]], 0, !dbg [[DBG111]]
|
||||
// CHECK5-NEXT: call void @__clang_call_terminate(ptr [[TMP26]]) #[[ATTR7:[0-9]+]], !dbg [[DBG111]]
|
||||
// CHECK5-NEXT: unreachable, !dbg [[DBG111]]
|
||||
@ -4138,6 +4156,7 @@ void range_for_collapsed() {
|
||||
// CHECK6: omp.dispatch.inc:
|
||||
// CHECK6-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK6: omp.dispatch.end:
|
||||
// CHECK6-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP5]])
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -4240,6 +4259,7 @@ void range_for_collapsed() {
|
||||
// CHECK6: omp.dispatch.inc:
|
||||
// CHECK6-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK6: omp.dispatch.end:
|
||||
// CHECK6-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP5]])
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -4395,6 +4415,9 @@ void range_for_collapsed() {
|
||||
// CHECK6: omp.dispatch.inc:
|
||||
// CHECK6-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK6: omp.dispatch.end:
|
||||
// CHECK6-NEXT: [[TMP35:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK6-NEXT: [[TMP36:%.*]] = load i32, ptr [[TMP35]], align 4
|
||||
// CHECK6-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP36]])
|
||||
// CHECK6-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK6: omp.precond.end:
|
||||
// CHECK6-NEXT: ret void
|
||||
@ -4516,6 +4539,7 @@ void range_for_collapsed() {
|
||||
// CHECK6: omp.dispatch.inc:
|
||||
// CHECK6-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK6: omp.dispatch.end:
|
||||
// CHECK6-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP5]])
|
||||
// CHECK6-NEXT: ret void
|
||||
//
|
||||
//
|
||||
|
@ -825,6 +825,7 @@ int bar(int n){
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP2]])
|
||||
// CHECK1-NEXT: [[TMP12:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK1-NEXT: [[TMP13:%.*]] = icmp ne i32 [[TMP12]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP13]], label [[DOTOMP_LINEAR_PU:%.*]], label [[DOTOMP_LINEAR_PU_DONE:%.*]]
|
||||
@ -2488,6 +2489,7 @@ int bar(int n){
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP3]])
|
||||
// CHECK3-NEXT: [[TMP13:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK3-NEXT: [[TMP14:%.*]] = icmp ne i32 [[TMP13]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP14]], label [[DOTOMP_LINEAR_PU:%.*]], label [[DOTOMP_LINEAR_PU_DONE:%.*]]
|
||||
@ -5715,6 +5717,7 @@ int bar(int n){
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP2]])
|
||||
// CHECK17-NEXT: [[TMP12:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK17-NEXT: [[TMP13:%.*]] = icmp ne i32 [[TMP12]], 0
|
||||
// CHECK17-NEXT: br i1 [[TMP13]], label [[DOTOMP_LINEAR_PU:%.*]], label [[DOTOMP_LINEAR_PU_DONE:%.*]]
|
||||
@ -7378,6 +7381,7 @@ int bar(int n){
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP3]])
|
||||
// CHECK19-NEXT: [[TMP13:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK19-NEXT: [[TMP14:%.*]] = icmp ne i32 [[TMP13]], 0
|
||||
// CHECK19-NEXT: br i1 [[TMP14]], label [[DOTOMP_LINEAR_PU:%.*]], label [[DOTOMP_LINEAR_PU_DONE:%.*]]
|
||||
|
@ -846,6 +846,7 @@ int bar(int n){
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP2]])
|
||||
// CHECK1-NEXT: [[TMP12:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK1-NEXT: [[TMP13:%.*]] = icmp ne i32 [[TMP12]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP13]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -2464,6 +2465,7 @@ int bar(int n){
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP3]])
|
||||
// CHECK3-NEXT: [[TMP13:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK3-NEXT: [[TMP14:%.*]] = icmp ne i32 [[TMP13]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP14]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -4088,6 +4090,7 @@ int bar(int n){
|
||||
// CHECK5: omp.dispatch.inc:
|
||||
// CHECK5-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK5: omp.dispatch.end:
|
||||
// CHECK5-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP2]])
|
||||
// CHECK5-NEXT: [[TMP12:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK5-NEXT: [[TMP13:%.*]] = icmp ne i32 [[TMP12]], 0
|
||||
// CHECK5-NEXT: br i1 [[TMP13]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -5813,6 +5816,7 @@ int bar(int n){
|
||||
// CHECK7: omp.dispatch.inc:
|
||||
// CHECK7-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK7: omp.dispatch.end:
|
||||
// CHECK7-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB2]], i32 [[TMP3]])
|
||||
// CHECK7-NEXT: [[TMP13:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK7-NEXT: [[TMP14:%.*]] = icmp ne i32 [[TMP13]], 0
|
||||
// CHECK7-NEXT: br i1 [[TMP14]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
|
@ -1069,6 +1069,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -1218,6 +1219,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -2074,6 +2076,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -2218,6 +2221,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -3096,6 +3100,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK5: omp.dispatch.inc:
|
||||
// CHECK5-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK5: omp.dispatch.end:
|
||||
// CHECK5-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -3245,6 +3250,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK5: omp.dispatch.inc:
|
||||
// CHECK5-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK5: omp.dispatch.end:
|
||||
// CHECK5-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -4101,6 +4107,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK7: omp.dispatch.inc:
|
||||
// CHECK7-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK7: omp.dispatch.end:
|
||||
// CHECK7-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK7-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -4245,6 +4252,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK7: omp.dispatch.inc:
|
||||
// CHECK7-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK7: omp.dispatch.end:
|
||||
// CHECK7-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK7-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -5602,6 +5610,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: [[TMP21:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK13-NEXT: [[TMP22:%.*]] = load i32, ptr [[TMP21]], align 4
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP22]])
|
||||
// CHECK13-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK13: omp.precond.end:
|
||||
// CHECK13-NEXT: ret void
|
||||
@ -5830,6 +5841,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK13-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK13-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK13: omp.precond.end:
|
||||
// CHECK13-NEXT: ret void
|
||||
@ -6733,6 +6747,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK13-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -6896,6 +6911,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK13-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -8237,6 +8253,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK15: omp.dispatch.inc:
|
||||
// CHECK15-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK15: omp.dispatch.end:
|
||||
// CHECK15-NEXT: [[TMP21:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK15-NEXT: [[TMP22:%.*]] = load i32, ptr [[TMP21]], align 4
|
||||
// CHECK15-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP22]])
|
||||
// CHECK15-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK15: omp.precond.end:
|
||||
// CHECK15-NEXT: ret void
|
||||
@ -8460,6 +8479,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK15: omp.dispatch.inc:
|
||||
// CHECK15-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK15: omp.dispatch.end:
|
||||
// CHECK15-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK15-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK15-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK15-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK15: omp.precond.end:
|
||||
// CHECK15-NEXT: ret void
|
||||
@ -9341,6 +9363,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK15: omp.dispatch.inc:
|
||||
// CHECK15-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK15: omp.dispatch.end:
|
||||
// CHECK15-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK15-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -9499,6 +9522,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK15: omp.dispatch.inc:
|
||||
// CHECK15-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK15: omp.dispatch.end:
|
||||
// CHECK15-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK15-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -10856,6 +10880,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: [[TMP21:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK17-NEXT: [[TMP22:%.*]] = load i32, ptr [[TMP21]], align 4
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP22]])
|
||||
// CHECK17-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK17: omp.precond.end:
|
||||
// CHECK17-NEXT: ret void
|
||||
@ -11084,6 +11111,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK17-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK17-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK17: omp.precond.end:
|
||||
// CHECK17-NEXT: ret void
|
||||
@ -11987,6 +12017,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK17-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -12150,6 +12181,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK17-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -13491,6 +13523,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: [[TMP21:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK19-NEXT: [[TMP22:%.*]] = load i32, ptr [[TMP21]], align 4
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP22]])
|
||||
// CHECK19-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK19: omp.precond.end:
|
||||
// CHECK19-NEXT: ret void
|
||||
@ -13714,6 +13749,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK19-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK19-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK19: omp.precond.end:
|
||||
// CHECK19-NEXT: ret void
|
||||
@ -14595,6 +14633,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK19-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -14753,5 +14792,6 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK19-NEXT: ret void
|
||||
//
|
||||
|
@ -1118,6 +1118,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK1-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK1-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -1281,6 +1282,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK1-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK1-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -2193,6 +2195,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK3-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK3-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -2351,6 +2354,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK3-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK3-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK3-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -3285,6 +3289,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK5: omp.dispatch.inc:
|
||||
// CHECK5-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK5: omp.dispatch.end:
|
||||
// CHECK5-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK5-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK5-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK5-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -3448,6 +3453,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK5: omp.dispatch.inc:
|
||||
// CHECK5-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK5: omp.dispatch.end:
|
||||
// CHECK5-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK5-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK5-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK5-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -4360,6 +4366,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK7: omp.dispatch.inc:
|
||||
// CHECK7-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK7: omp.dispatch.end:
|
||||
// CHECK7-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK7-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK7-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK7-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -4518,6 +4525,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK7: omp.dispatch.inc:
|
||||
// CHECK7-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK7: omp.dispatch.end:
|
||||
// CHECK7-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK7-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK7-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK7-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -6351,12 +6359,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: [[TMP21:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK13-NEXT: [[TMP22:%.*]] = icmp ne i32 [[TMP21]], 0
|
||||
// CHECK13-NEXT: br i1 [[TMP22]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK13-NEXT: [[TMP21:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK13-NEXT: [[TMP22:%.*]] = load i32, ptr [[TMP21]], align 4
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP22]])
|
||||
// CHECK13-NEXT: [[TMP23:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK13-NEXT: [[TMP24:%.*]] = icmp ne i32 [[TMP23]], 0
|
||||
// CHECK13-NEXT: br i1 [[TMP24]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK13: .omp.final.then:
|
||||
// CHECK13-NEXT: [[TMP23:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK13-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP23]], 0
|
||||
// CHECK13-NEXT: [[TMP25:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK13-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP25]], 0
|
||||
// CHECK13-NEXT: [[DIV8:%.*]] = sdiv i32 [[SUB7]], 1
|
||||
// CHECK13-NEXT: [[MUL9:%.*]] = mul nsw i32 [[DIV8]], 1
|
||||
// CHECK13-NEXT: [[ADD10:%.*]] = add nsw i32 0, [[MUL9]]
|
||||
@ -6603,12 +6614,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: [[TMP22:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK13-NEXT: [[TMP23:%.*]] = icmp ne i32 [[TMP22]], 0
|
||||
// CHECK13-NEXT: br i1 [[TMP23]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK13-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK13-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK13-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK13-NEXT: [[TMP25:%.*]] = icmp ne i32 [[TMP24]], 0
|
||||
// CHECK13-NEXT: br i1 [[TMP25]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK13: .omp.final.then:
|
||||
// CHECK13-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK13-NEXT: [[SUB8:%.*]] = sub nsw i32 [[TMP24]], 0
|
||||
// CHECK13-NEXT: [[TMP26:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK13-NEXT: [[SUB8:%.*]] = sub nsw i32 [[TMP26]], 0
|
||||
// CHECK13-NEXT: [[DIV9:%.*]] = sdiv i32 [[SUB8]], 1
|
||||
// CHECK13-NEXT: [[MUL10:%.*]] = mul nsw i32 [[DIV9]], 1
|
||||
// CHECK13-NEXT: [[ADD11:%.*]] = add nsw i32 0, [[MUL10]]
|
||||
@ -7567,6 +7581,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK13-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK13-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK13-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -7744,6 +7759,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK13-NEXT: [[TMP15:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK13-NEXT: [[TMP16:%.*]] = icmp ne i32 [[TMP15]], 0
|
||||
// CHECK13-NEXT: br i1 [[TMP16]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -9176,12 +9192,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK15: omp.dispatch.inc:
|
||||
// CHECK15-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK15: omp.dispatch.end:
|
||||
// CHECK15-NEXT: [[TMP21:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK15-NEXT: [[TMP22:%.*]] = icmp ne i32 [[TMP21]], 0
|
||||
// CHECK15-NEXT: br i1 [[TMP22]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK15-NEXT: [[TMP21:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK15-NEXT: [[TMP22:%.*]] = load i32, ptr [[TMP21]], align 4
|
||||
// CHECK15-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP22]])
|
||||
// CHECK15-NEXT: [[TMP23:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK15-NEXT: [[TMP24:%.*]] = icmp ne i32 [[TMP23]], 0
|
||||
// CHECK15-NEXT: br i1 [[TMP24]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK15: .omp.final.then:
|
||||
// CHECK15-NEXT: [[TMP23:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK15-NEXT: [[SUB6:%.*]] = sub nsw i32 [[TMP23]], 0
|
||||
// CHECK15-NEXT: [[TMP25:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK15-NEXT: [[SUB6:%.*]] = sub nsw i32 [[TMP25]], 0
|
||||
// CHECK15-NEXT: [[DIV7:%.*]] = sdiv i32 [[SUB6]], 1
|
||||
// CHECK15-NEXT: [[MUL8:%.*]] = mul nsw i32 [[DIV7]], 1
|
||||
// CHECK15-NEXT: [[ADD9:%.*]] = add nsw i32 0, [[MUL8]]
|
||||
@ -9423,12 +9442,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK15: omp.dispatch.inc:
|
||||
// CHECK15-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK15: omp.dispatch.end:
|
||||
// CHECK15-NEXT: [[TMP22:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK15-NEXT: [[TMP23:%.*]] = icmp ne i32 [[TMP22]], 0
|
||||
// CHECK15-NEXT: br i1 [[TMP23]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK15-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK15-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK15-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK15-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK15-NEXT: [[TMP25:%.*]] = icmp ne i32 [[TMP24]], 0
|
||||
// CHECK15-NEXT: br i1 [[TMP25]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK15: .omp.final.then:
|
||||
// CHECK15-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK15-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP24]], 0
|
||||
// CHECK15-NEXT: [[TMP26:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK15-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP26]], 0
|
||||
// CHECK15-NEXT: [[DIV8:%.*]] = sdiv i32 [[SUB7]], 1
|
||||
// CHECK15-NEXT: [[MUL9:%.*]] = mul nsw i32 [[DIV8]], 1
|
||||
// CHECK15-NEXT: [[ADD10:%.*]] = add nsw i32 0, [[MUL9]]
|
||||
@ -10365,6 +10387,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK15: omp.dispatch.inc:
|
||||
// CHECK15-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK15: omp.dispatch.end:
|
||||
// CHECK15-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK15-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK15-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK15-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -10537,6 +10560,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK15: omp.dispatch.inc:
|
||||
// CHECK15-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK15: omp.dispatch.end:
|
||||
// CHECK15-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK15-NEXT: [[TMP15:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK15-NEXT: [[TMP16:%.*]] = icmp ne i32 [[TMP15]], 0
|
||||
// CHECK15-NEXT: br i1 [[TMP16]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -11985,12 +12009,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: [[TMP21:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK17-NEXT: [[TMP22:%.*]] = icmp ne i32 [[TMP21]], 0
|
||||
// CHECK17-NEXT: br i1 [[TMP22]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK17-NEXT: [[TMP21:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK17-NEXT: [[TMP22:%.*]] = load i32, ptr [[TMP21]], align 4
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP22]])
|
||||
// CHECK17-NEXT: [[TMP23:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK17-NEXT: [[TMP24:%.*]] = icmp ne i32 [[TMP23]], 0
|
||||
// CHECK17-NEXT: br i1 [[TMP24]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK17: .omp.final.then:
|
||||
// CHECK17-NEXT: [[TMP23:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK17-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP23]], 0
|
||||
// CHECK17-NEXT: [[TMP25:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK17-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP25]], 0
|
||||
// CHECK17-NEXT: [[DIV8:%.*]] = sdiv i32 [[SUB7]], 1
|
||||
// CHECK17-NEXT: [[MUL9:%.*]] = mul nsw i32 [[DIV8]], 1
|
||||
// CHECK17-NEXT: [[ADD10:%.*]] = add nsw i32 0, [[MUL9]]
|
||||
@ -12237,12 +12264,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: [[TMP22:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK17-NEXT: [[TMP23:%.*]] = icmp ne i32 [[TMP22]], 0
|
||||
// CHECK17-NEXT: br i1 [[TMP23]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK17-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK17-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK17-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK17-NEXT: [[TMP25:%.*]] = icmp ne i32 [[TMP24]], 0
|
||||
// CHECK17-NEXT: br i1 [[TMP25]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK17: .omp.final.then:
|
||||
// CHECK17-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK17-NEXT: [[SUB8:%.*]] = sub nsw i32 [[TMP24]], 0
|
||||
// CHECK17-NEXT: [[TMP26:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK17-NEXT: [[SUB8:%.*]] = sub nsw i32 [[TMP26]], 0
|
||||
// CHECK17-NEXT: [[DIV9:%.*]] = sdiv i32 [[SUB8]], 1
|
||||
// CHECK17-NEXT: [[MUL10:%.*]] = mul nsw i32 [[DIV9]], 1
|
||||
// CHECK17-NEXT: [[ADD11:%.*]] = add nsw i32 0, [[MUL10]]
|
||||
@ -13201,6 +13231,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK17-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK17-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK17-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -13378,6 +13409,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK17-NEXT: [[TMP15:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK17-NEXT: [[TMP16:%.*]] = icmp ne i32 [[TMP15]], 0
|
||||
// CHECK17-NEXT: br i1 [[TMP16]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -14810,12 +14842,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: [[TMP21:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK19-NEXT: [[TMP22:%.*]] = icmp ne i32 [[TMP21]], 0
|
||||
// CHECK19-NEXT: br i1 [[TMP22]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK19-NEXT: [[TMP21:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK19-NEXT: [[TMP22:%.*]] = load i32, ptr [[TMP21]], align 4
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP22]])
|
||||
// CHECK19-NEXT: [[TMP23:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK19-NEXT: [[TMP24:%.*]] = icmp ne i32 [[TMP23]], 0
|
||||
// CHECK19-NEXT: br i1 [[TMP24]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK19: .omp.final.then:
|
||||
// CHECK19-NEXT: [[TMP23:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK19-NEXT: [[SUB6:%.*]] = sub nsw i32 [[TMP23]], 0
|
||||
// CHECK19-NEXT: [[TMP25:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK19-NEXT: [[SUB6:%.*]] = sub nsw i32 [[TMP25]], 0
|
||||
// CHECK19-NEXT: [[DIV7:%.*]] = sdiv i32 [[SUB6]], 1
|
||||
// CHECK19-NEXT: [[MUL8:%.*]] = mul nsw i32 [[DIV7]], 1
|
||||
// CHECK19-NEXT: [[ADD9:%.*]] = add nsw i32 0, [[MUL8]]
|
||||
@ -15057,12 +15092,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: [[TMP22:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK19-NEXT: [[TMP23:%.*]] = icmp ne i32 [[TMP22]], 0
|
||||
// CHECK19-NEXT: br i1 [[TMP23]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK19-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK19-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK19-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK19-NEXT: [[TMP25:%.*]] = icmp ne i32 [[TMP24]], 0
|
||||
// CHECK19-NEXT: br i1 [[TMP25]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK19: .omp.final.then:
|
||||
// CHECK19-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK19-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP24]], 0
|
||||
// CHECK19-NEXT: [[TMP26:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK19-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP26]], 0
|
||||
// CHECK19-NEXT: [[DIV8:%.*]] = sdiv i32 [[SUB7]], 1
|
||||
// CHECK19-NEXT: [[MUL9:%.*]] = mul nsw i32 [[DIV8]], 1
|
||||
// CHECK19-NEXT: [[ADD10:%.*]] = add nsw i32 0, [[MUL9]]
|
||||
@ -15999,6 +16037,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK19-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK19-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK19-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -16171,6 +16210,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK19-NEXT: [[TMP15:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK19-NEXT: [[TMP16:%.*]] = icmp ne i32 [[TMP15]], 0
|
||||
// CHECK19-NEXT: br i1 [[TMP16]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
|
@ -1083,6 +1083,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -1232,6 +1233,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK1-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -2088,6 +2090,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -2232,6 +2235,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK3: omp.dispatch.inc:
|
||||
// CHECK3-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK3: omp.dispatch.end:
|
||||
// CHECK3-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK3-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -3110,6 +3114,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK5: omp.dispatch.inc:
|
||||
// CHECK5-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK5: omp.dispatch.end:
|
||||
// CHECK5-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -3259,6 +3264,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK5: omp.dispatch.inc:
|
||||
// CHECK5-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK5: omp.dispatch.end:
|
||||
// CHECK5-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK5-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -4115,6 +4121,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK7: omp.dispatch.inc:
|
||||
// CHECK7-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK7: omp.dispatch.end:
|
||||
// CHECK7-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK7-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -4259,6 +4266,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK7: omp.dispatch.inc:
|
||||
// CHECK7-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK7: omp.dispatch.end:
|
||||
// CHECK7-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK7-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -5589,6 +5597,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK13-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK13-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK13: omp.precond.end:
|
||||
// CHECK13-NEXT: ret void
|
||||
@ -5814,6 +5825,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: [[TMP23:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK13-NEXT: [[TMP24:%.*]] = load i32, ptr [[TMP23]], align 4
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP24]])
|
||||
// CHECK13-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK13: omp.precond.end:
|
||||
// CHECK13-NEXT: ret void
|
||||
@ -6714,6 +6728,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK13-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -6880,6 +6895,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK13-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -8194,6 +8210,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK15: omp.dispatch.inc:
|
||||
// CHECK15-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK15: omp.dispatch.end:
|
||||
// CHECK15-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK15-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK15-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK15-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK15: omp.precond.end:
|
||||
// CHECK15-NEXT: ret void
|
||||
@ -8414,6 +8433,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK15: omp.dispatch.inc:
|
||||
// CHECK15-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK15: omp.dispatch.end:
|
||||
// CHECK15-NEXT: [[TMP23:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK15-NEXT: [[TMP24:%.*]] = load i32, ptr [[TMP23]], align 4
|
||||
// CHECK15-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP24]])
|
||||
// CHECK15-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK15: omp.precond.end:
|
||||
// CHECK15-NEXT: ret void
|
||||
@ -9292,6 +9314,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK15: omp.dispatch.inc:
|
||||
// CHECK15-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK15: omp.dispatch.end:
|
||||
// CHECK15-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK15-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -9453,6 +9476,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK15: omp.dispatch.inc:
|
||||
// CHECK15-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK15: omp.dispatch.end:
|
||||
// CHECK15-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK15-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -10783,6 +10807,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK17-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK17-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK17: omp.precond.end:
|
||||
// CHECK17-NEXT: ret void
|
||||
@ -11008,6 +11035,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: [[TMP23:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK17-NEXT: [[TMP24:%.*]] = load i32, ptr [[TMP23]], align 4
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP24]])
|
||||
// CHECK17-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK17: omp.precond.end:
|
||||
// CHECK17-NEXT: ret void
|
||||
@ -11908,6 +11938,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK17-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -12074,6 +12105,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK17-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -13388,6 +13420,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK19-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK19-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK19: omp.precond.end:
|
||||
// CHECK19-NEXT: ret void
|
||||
@ -13608,6 +13643,9 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: [[TMP23:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK19-NEXT: [[TMP24:%.*]] = load i32, ptr [[TMP23]], align 4
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP24]])
|
||||
// CHECK19-NEXT: br label [[OMP_PRECOND_END]]
|
||||
// CHECK19: omp.precond.end:
|
||||
// CHECK19-NEXT: ret void
|
||||
@ -14486,6 +14524,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK19-NEXT: ret void
|
||||
//
|
||||
//
|
||||
@ -14647,5 +14686,6 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK19-NEXT: ret void
|
||||
//
|
||||
|
@ -1142,6 +1142,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK1-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK1-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -1305,6 +1306,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK1: omp.dispatch.inc:
|
||||
// CHECK1-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK1: omp.dispatch.end:
|
||||
// CHECK1-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK1-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK1-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK1-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -2239,6 +2241,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK2: omp.dispatch.inc:
|
||||
// CHECK2-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK2: omp.dispatch.end:
|
||||
// CHECK2-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK2-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK2-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK2-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -2402,6 +2405,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK2: omp.dispatch.inc:
|
||||
// CHECK2-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK2: omp.dispatch.end:
|
||||
// CHECK2-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK2-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK2-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK2-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -3314,6 +3318,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK5: omp.dispatch.inc:
|
||||
// CHECK5-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK5: omp.dispatch.end:
|
||||
// CHECK5-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK5-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK5-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK5-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -3472,6 +3477,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK5: omp.dispatch.inc:
|
||||
// CHECK5-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK5: omp.dispatch.end:
|
||||
// CHECK5-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK5-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK5-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK5-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -4384,6 +4390,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK6: omp.dispatch.inc:
|
||||
// CHECK6-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK6: omp.dispatch.end:
|
||||
// CHECK6-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK6-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK6-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK6-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -4542,6 +4549,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK6: omp.dispatch.inc:
|
||||
// CHECK6-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK6: omp.dispatch.end:
|
||||
// CHECK6-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK6-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK6-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK6-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -6348,12 +6356,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: [[TMP22:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK13-NEXT: [[TMP23:%.*]] = icmp ne i32 [[TMP22]], 0
|
||||
// CHECK13-NEXT: br i1 [[TMP23]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK13-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK13-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK13-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK13-NEXT: [[TMP25:%.*]] = icmp ne i32 [[TMP24]], 0
|
||||
// CHECK13-NEXT: br i1 [[TMP25]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK13: .omp.final.then:
|
||||
// CHECK13-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK13-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP24]], 0
|
||||
// CHECK13-NEXT: [[TMP26:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK13-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP26]], 0
|
||||
// CHECK13-NEXT: [[DIV8:%.*]] = sdiv i32 [[SUB7]], 1
|
||||
// CHECK13-NEXT: [[MUL9:%.*]] = mul nsw i32 [[DIV8]], 1
|
||||
// CHECK13-NEXT: [[ADD10:%.*]] = add nsw i32 0, [[MUL9]]
|
||||
@ -6597,12 +6608,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: [[TMP23:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK13-NEXT: [[TMP24:%.*]] = icmp ne i32 [[TMP23]], 0
|
||||
// CHECK13-NEXT: br i1 [[TMP24]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK13-NEXT: [[TMP23:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK13-NEXT: [[TMP24:%.*]] = load i32, ptr [[TMP23]], align 4
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP24]])
|
||||
// CHECK13-NEXT: [[TMP25:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK13-NEXT: [[TMP26:%.*]] = icmp ne i32 [[TMP25]], 0
|
||||
// CHECK13-NEXT: br i1 [[TMP26]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK13: .omp.final.then:
|
||||
// CHECK13-NEXT: [[TMP25:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK13-NEXT: [[SUB8:%.*]] = sub nsw i32 [[TMP25]], 0
|
||||
// CHECK13-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK13-NEXT: [[SUB8:%.*]] = sub nsw i32 [[TMP27]], 0
|
||||
// CHECK13-NEXT: [[DIV9:%.*]] = sdiv i32 [[SUB8]], 1
|
||||
// CHECK13-NEXT: [[MUL10:%.*]] = mul nsw i32 [[DIV9]], 1
|
||||
// CHECK13-NEXT: [[ADD11:%.*]] = add nsw i32 0, [[MUL10]]
|
||||
@ -7558,6 +7572,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK13-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK13-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK13-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -7738,6 +7753,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK13: omp.dispatch.inc:
|
||||
// CHECK13-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK13: omp.dispatch.end:
|
||||
// CHECK13-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK13-NEXT: [[TMP15:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK13-NEXT: [[TMP16:%.*]] = icmp ne i32 [[TMP15]], 0
|
||||
// CHECK13-NEXT: br i1 [[TMP16]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -9159,12 +9175,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK14: omp.dispatch.inc:
|
||||
// CHECK14-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK14: omp.dispatch.end:
|
||||
// CHECK14-NEXT: [[TMP22:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK14-NEXT: [[TMP23:%.*]] = icmp ne i32 [[TMP22]], 0
|
||||
// CHECK14-NEXT: br i1 [[TMP23]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK14-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK14-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK14-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK14-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK14-NEXT: [[TMP25:%.*]] = icmp ne i32 [[TMP24]], 0
|
||||
// CHECK14-NEXT: br i1 [[TMP25]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK14: .omp.final.then:
|
||||
// CHECK14-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK14-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP24]], 0
|
||||
// CHECK14-NEXT: [[TMP26:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK14-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP26]], 0
|
||||
// CHECK14-NEXT: [[DIV8:%.*]] = sdiv i32 [[SUB7]], 1
|
||||
// CHECK14-NEXT: [[MUL9:%.*]] = mul nsw i32 [[DIV8]], 1
|
||||
// CHECK14-NEXT: [[ADD10:%.*]] = add nsw i32 0, [[MUL9]]
|
||||
@ -9408,12 +9427,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK14: omp.dispatch.inc:
|
||||
// CHECK14-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK14: omp.dispatch.end:
|
||||
// CHECK14-NEXT: [[TMP23:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK14-NEXT: [[TMP24:%.*]] = icmp ne i32 [[TMP23]], 0
|
||||
// CHECK14-NEXT: br i1 [[TMP24]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK14-NEXT: [[TMP23:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8
|
||||
// CHECK14-NEXT: [[TMP24:%.*]] = load i32, ptr [[TMP23]], align 4
|
||||
// CHECK14-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP24]])
|
||||
// CHECK14-NEXT: [[TMP25:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK14-NEXT: [[TMP26:%.*]] = icmp ne i32 [[TMP25]], 0
|
||||
// CHECK14-NEXT: br i1 [[TMP26]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK14: .omp.final.then:
|
||||
// CHECK14-NEXT: [[TMP25:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK14-NEXT: [[SUB8:%.*]] = sub nsw i32 [[TMP25]], 0
|
||||
// CHECK14-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK14-NEXT: [[SUB8:%.*]] = sub nsw i32 [[TMP27]], 0
|
||||
// CHECK14-NEXT: [[DIV9:%.*]] = sdiv i32 [[SUB8]], 1
|
||||
// CHECK14-NEXT: [[MUL10:%.*]] = mul nsw i32 [[DIV9]], 1
|
||||
// CHECK14-NEXT: [[ADD11:%.*]] = add nsw i32 0, [[MUL10]]
|
||||
@ -10369,6 +10391,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK14: omp.dispatch.inc:
|
||||
// CHECK14-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK14: omp.dispatch.end:
|
||||
// CHECK14-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK14-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK14-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK14-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -10549,6 +10572,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK14: omp.dispatch.inc:
|
||||
// CHECK14-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK14: omp.dispatch.end:
|
||||
// CHECK14-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK14-NEXT: [[TMP15:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK14-NEXT: [[TMP16:%.*]] = icmp ne i32 [[TMP15]], 0
|
||||
// CHECK14-NEXT: br i1 [[TMP16]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -11954,12 +11978,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: [[TMP22:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK17-NEXT: [[TMP23:%.*]] = icmp ne i32 [[TMP22]], 0
|
||||
// CHECK17-NEXT: br i1 [[TMP23]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK17-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK17-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK17-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK17-NEXT: [[TMP25:%.*]] = icmp ne i32 [[TMP24]], 0
|
||||
// CHECK17-NEXT: br i1 [[TMP25]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK17: .omp.final.then:
|
||||
// CHECK17-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK17-NEXT: [[SUB6:%.*]] = sub nsw i32 [[TMP24]], 0
|
||||
// CHECK17-NEXT: [[TMP26:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK17-NEXT: [[SUB6:%.*]] = sub nsw i32 [[TMP26]], 0
|
||||
// CHECK17-NEXT: [[DIV7:%.*]] = sdiv i32 [[SUB6]], 1
|
||||
// CHECK17-NEXT: [[MUL8:%.*]] = mul nsw i32 [[DIV7]], 1
|
||||
// CHECK17-NEXT: [[ADD9:%.*]] = add nsw i32 0, [[MUL8]]
|
||||
@ -12198,12 +12225,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: [[TMP23:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK17-NEXT: [[TMP24:%.*]] = icmp ne i32 [[TMP23]], 0
|
||||
// CHECK17-NEXT: br i1 [[TMP24]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK17-NEXT: [[TMP23:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK17-NEXT: [[TMP24:%.*]] = load i32, ptr [[TMP23]], align 4
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP24]])
|
||||
// CHECK17-NEXT: [[TMP25:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK17-NEXT: [[TMP26:%.*]] = icmp ne i32 [[TMP25]], 0
|
||||
// CHECK17-NEXT: br i1 [[TMP26]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK17: .omp.final.then:
|
||||
// CHECK17-NEXT: [[TMP25:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK17-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP25]], 0
|
||||
// CHECK17-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK17-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP27]], 0
|
||||
// CHECK17-NEXT: [[DIV8:%.*]] = sdiv i32 [[SUB7]], 1
|
||||
// CHECK17-NEXT: [[MUL9:%.*]] = mul nsw i32 [[DIV8]], 1
|
||||
// CHECK17-NEXT: [[ADD10:%.*]] = add nsw i32 0, [[MUL9]]
|
||||
@ -13137,6 +13167,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK17-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK17-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK17-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -13312,6 +13343,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK17: omp.dispatch.inc:
|
||||
// CHECK17-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK17: omp.dispatch.end:
|
||||
// CHECK17-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK17-NEXT: [[TMP15:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK17-NEXT: [[TMP16:%.*]] = icmp ne i32 [[TMP15]], 0
|
||||
// CHECK17-NEXT: br i1 [[TMP16]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -14717,12 +14749,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: [[TMP22:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK19-NEXT: [[TMP23:%.*]] = icmp ne i32 [[TMP22]], 0
|
||||
// CHECK19-NEXT: br i1 [[TMP23]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK19-NEXT: [[TMP22:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK19-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP23]])
|
||||
// CHECK19-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK19-NEXT: [[TMP25:%.*]] = icmp ne i32 [[TMP24]], 0
|
||||
// CHECK19-NEXT: br i1 [[TMP25]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK19: .omp.final.then:
|
||||
// CHECK19-NEXT: [[TMP24:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK19-NEXT: [[SUB6:%.*]] = sub nsw i32 [[TMP24]], 0
|
||||
// CHECK19-NEXT: [[TMP26:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4
|
||||
// CHECK19-NEXT: [[SUB6:%.*]] = sub nsw i32 [[TMP26]], 0
|
||||
// CHECK19-NEXT: [[DIV7:%.*]] = sdiv i32 [[SUB6]], 1
|
||||
// CHECK19-NEXT: [[MUL8:%.*]] = mul nsw i32 [[DIV7]], 1
|
||||
// CHECK19-NEXT: [[ADD9:%.*]] = add nsw i32 0, [[MUL8]]
|
||||
@ -14961,12 +14996,15 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: [[TMP23:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK19-NEXT: [[TMP24:%.*]] = icmp ne i32 [[TMP23]], 0
|
||||
// CHECK19-NEXT: br i1 [[TMP24]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK19-NEXT: [[TMP23:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 4
|
||||
// CHECK19-NEXT: [[TMP24:%.*]] = load i32, ptr [[TMP23]], align 4
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP24]])
|
||||
// CHECK19-NEXT: [[TMP25:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK19-NEXT: [[TMP26:%.*]] = icmp ne i32 [[TMP25]], 0
|
||||
// CHECK19-NEXT: br i1 [[TMP26]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
// CHECK19: .omp.final.then:
|
||||
// CHECK19-NEXT: [[TMP25:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK19-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP25]], 0
|
||||
// CHECK19-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4
|
||||
// CHECK19-NEXT: [[SUB7:%.*]] = sub nsw i32 [[TMP27]], 0
|
||||
// CHECK19-NEXT: [[DIV8:%.*]] = sdiv i32 [[SUB7]], 1
|
||||
// CHECK19-NEXT: [[MUL9:%.*]] = mul nsw i32 [[DIV8]], 1
|
||||
// CHECK19-NEXT: [[ADD10:%.*]] = add nsw i32 0, [[MUL9]]
|
||||
@ -15900,6 +15938,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP6]])
|
||||
// CHECK19-NEXT: [[TMP14:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK19-NEXT: [[TMP15:%.*]] = icmp ne i32 [[TMP14]], 0
|
||||
// CHECK19-NEXT: br i1 [[TMP15]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
@ -16075,6 +16114,7 @@ int main (int argc, char **argv) {
|
||||
// CHECK19: omp.dispatch.inc:
|
||||
// CHECK19-NEXT: br label [[OMP_DISPATCH_COND]]
|
||||
// CHECK19: omp.dispatch.end:
|
||||
// CHECK19-NEXT: call void @__kmpc_dispatch_deinit(ptr @[[GLOB3]], i32 [[TMP7]])
|
||||
// CHECK19-NEXT: [[TMP15:%.*]] = load i32, ptr [[DOTOMP_IS_LAST]], align 4
|
||||
// CHECK19-NEXT: [[TMP16:%.*]] = icmp ne i32 [[TMP15]], 0
|
||||
// CHECK19-NEXT: br i1 [[TMP16]], label [[DOTOMP_FINAL_THEN:%.*]], label [[DOTOMP_FINAL_DONE:%.*]]
|
||||
|
@ -2833,6 +2833,9 @@ public:
|
||||
/// size \a IVSize and sign \a IVSigned.
|
||||
FunctionCallee createDispatchFiniFunction(unsigned IVSize, bool IVSigned);
|
||||
|
||||
/// Returns __kmpc_dispatch_deinit runtime function.
|
||||
FunctionCallee createDispatchDeinitFunction();
|
||||
|
||||
/// Declarations for LLVM-IR types (simple, array, function and structure) are
|
||||
/// generated below. Their names are defined and used in OpenMPKinds.def. Here
|
||||
/// we provide the declarations, the initializeTypes function will provide the
|
||||
|
@ -327,6 +327,7 @@ __OMP_RTL(__kmpc_dispatch_fini_4, false, Void, IdentPtr, Int32)
|
||||
__OMP_RTL(__kmpc_dispatch_fini_4u, false, Void, IdentPtr, Int32)
|
||||
__OMP_RTL(__kmpc_dispatch_fini_8, false, Void, IdentPtr, Int32)
|
||||
__OMP_RTL(__kmpc_dispatch_fini_8u, false, Void, IdentPtr, Int32)
|
||||
__OMP_RTL(__kmpc_dispatch_deinit, false, Void, IdentPtr, Int32)
|
||||
__OMP_RTL(__kmpc_team_static_init_4, false, Void, IdentPtr, Int32, Int32Ptr,
|
||||
Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32)
|
||||
__OMP_RTL(__kmpc_team_static_init_4u, false, Void, IdentPtr, Int32, Int32Ptr,
|
||||
@ -861,6 +862,8 @@ __OMP_RTL_ATTRS(__kmpc_dispatch_fini_8, InaccessibleArgOnlyAttrs,
|
||||
AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt))
|
||||
__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8u, InaccessibleArgOnlyAttrs,
|
||||
AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt))
|
||||
__OMP_RTL_ATTRS(__kmpc_dispatch_deinit, InaccessibleArgOnlyAttrs,
|
||||
AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt))
|
||||
__OMP_RTL_ATTRS(__kmpc_team_static_init_4, GetterArgWriteAttrs, AttributeSet(),
|
||||
ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs,
|
||||
ArgPtrAttrs, ArgPtrAttrs, SExt, SExt))
|
||||
|
@ -6471,6 +6471,10 @@ FunctionCallee OpenMPIRBuilder::createDispatchFiniFunction(unsigned IVSize,
|
||||
return getOrCreateRuntimeFunction(M, Name);
|
||||
}
|
||||
|
||||
FunctionCallee OpenMPIRBuilder::createDispatchDeinitFunction() {
|
||||
return getOrCreateRuntimeFunction(M, omp::OMPRTL___kmpc_dispatch_deinit);
|
||||
}
|
||||
|
||||
static Function *createOutlinedFunction(
|
||||
OpenMPIRBuilder &OMPBuilder, IRBuilderBase &Builder, StringRef FuncName,
|
||||
SmallVectorImpl<Value *> &Inputs,
|
||||
|
@ -81,6 +81,7 @@ set(include_files
|
||||
${include_directory}/Synchronization.h
|
||||
${include_directory}/Types.h
|
||||
${include_directory}/Utils.h
|
||||
${include_directory}/Workshare.h
|
||||
)
|
||||
|
||||
set(src_files
|
||||
|
@ -359,6 +359,7 @@ int32_t __kmpc_cancel(IdentTy *Loc, int32_t TId, int32_t CancelVal);
|
||||
///{
|
||||
int32_t __kmpc_shuffle_int32(int32_t val, int16_t delta, int16_t size);
|
||||
int64_t __kmpc_shuffle_int64(int64_t val, int16_t delta, int16_t size);
|
||||
|
||||
///}
|
||||
}
|
||||
|
||||
|
30
offload/DeviceRTL/include/Workshare.h
Normal file
30
offload/DeviceRTL/include/Workshare.h
Normal file
@ -0,0 +1,30 @@
|
||||
//===-------- Workshare.h - OpenMP Workshare interface ------------ C++ -*-===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef OMPTARGET_WORKSHARE_H
|
||||
#define OMPTARGET_WORKSHARE_H
|
||||
|
||||
#pragma omp begin declare target device_type(nohost)
|
||||
|
||||
namespace ompx {
|
||||
|
||||
namespace workshare {
|
||||
|
||||
/// Initialize the worksharing machinery.
|
||||
void init(bool IsSPMD);
|
||||
|
||||
} // namespace workshare
|
||||
|
||||
} // namespace ompx
|
||||
|
||||
#pragma omp end declare target
|
||||
|
||||
#endif
|
@ -19,6 +19,7 @@
|
||||
#include "State.h"
|
||||
#include "Synchronization.h"
|
||||
#include "Types.h"
|
||||
#include "Workshare.h"
|
||||
|
||||
#include "llvm/Frontend/OpenMP/OMPDeviceConstants.h"
|
||||
|
||||
@ -34,6 +35,7 @@ inititializeRuntime(bool IsSPMD, KernelEnvironmentTy &KernelEnvironment,
|
||||
mapping::init(IsSPMD);
|
||||
state::init(IsSPMD, KernelEnvironment, KernelLaunchEnvironment);
|
||||
allocator::init(IsSPMD, KernelEnvironment);
|
||||
workshare::init(IsSPMD);
|
||||
}
|
||||
|
||||
/// Simple generic state machine for worker threads.
|
||||
|
@ -12,6 +12,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "Workshare.h"
|
||||
#include "Debug.h"
|
||||
#include "Interface.h"
|
||||
#include "Mapping.h"
|
||||
@ -444,28 +445,77 @@ template <typename T, typename ST> struct omptarget_nvptx_LoopSupport {
|
||||
// KMP interface implementation (dyn loops)
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// TODO: This is a stopgap. We probably want to expand the dispatch API to take
|
||||
// an DST pointer which can then be allocated properly without malloc.
|
||||
static DynamicScheduleTracker *THREAD_LOCAL(ThreadDSTPtr);
|
||||
// TODO: Expand the dispatch API to take a DST pointer which can then be
|
||||
// allocated properly without malloc.
|
||||
// For now, each team will contain an LDS pointer (ThreadDST) to a global array
|
||||
// of references to the DST structs allocated (in global memory) for each thread
|
||||
// in the team. The global memory array is allocated during the init phase if it
|
||||
// was not allocated already and will be deallocated when the dispatch phase
|
||||
// ends:
|
||||
//
|
||||
// __kmpc_dispatch_init
|
||||
//
|
||||
// ** Dispatch loop **
|
||||
//
|
||||
// __kmpc_dispatch_deinit
|
||||
//
|
||||
static DynamicScheduleTracker **SHARED(ThreadDST);
|
||||
|
||||
// Create a new DST, link the current one, and define the new as current.
|
||||
static DynamicScheduleTracker *pushDST() {
|
||||
int32_t ThreadIndex = mapping::getThreadIdInBlock();
|
||||
// Each block will allocate an array of pointers to DST structs. The array is
|
||||
// equal in length to the number of threads in that block.
|
||||
if (!ThreadDST) {
|
||||
// Allocate global memory array of pointers to DST structs:
|
||||
if (mapping::isMainThreadInGenericMode() || ThreadIndex == 0)
|
||||
ThreadDST = static_cast<DynamicScheduleTracker **>(
|
||||
memory::allocGlobal(mapping::getNumberOfThreadsInBlock() *
|
||||
sizeof(DynamicScheduleTracker *),
|
||||
"new ThreadDST array"));
|
||||
synchronize::threads(atomic::seq_cst);
|
||||
|
||||
// Initialize the array pointers:
|
||||
ThreadDST[ThreadIndex] = nullptr;
|
||||
}
|
||||
|
||||
// Create a DST struct for the current thread:
|
||||
DynamicScheduleTracker *NewDST = static_cast<DynamicScheduleTracker *>(
|
||||
memory::allocGlobal(sizeof(DynamicScheduleTracker), "new DST"));
|
||||
*NewDST = DynamicScheduleTracker({0});
|
||||
NewDST->NextDST = ThreadDSTPtr;
|
||||
ThreadDSTPtr = NewDST;
|
||||
return ThreadDSTPtr;
|
||||
|
||||
// Add the new DST struct to the array of DST structs:
|
||||
NewDST->NextDST = ThreadDST[ThreadIndex];
|
||||
ThreadDST[ThreadIndex] = NewDST;
|
||||
return NewDST;
|
||||
}
|
||||
|
||||
// Return the current DST.
|
||||
static DynamicScheduleTracker *peekDST() { return ThreadDSTPtr; }
|
||||
static DynamicScheduleTracker *peekDST() {
|
||||
return ThreadDST[mapping::getThreadIdInBlock()];
|
||||
}
|
||||
|
||||
// Pop the current DST and restore the last one.
|
||||
static void popDST() {
|
||||
DynamicScheduleTracker *OldDST = ThreadDSTPtr->NextDST;
|
||||
memory::freeGlobal(ThreadDSTPtr, "remove DST");
|
||||
ThreadDSTPtr = OldDST;
|
||||
int32_t ThreadIndex = mapping::getThreadIdInBlock();
|
||||
DynamicScheduleTracker *CurrentDST = ThreadDST[ThreadIndex];
|
||||
DynamicScheduleTracker *OldDST = CurrentDST->NextDST;
|
||||
memory::freeGlobal(CurrentDST, "remove DST");
|
||||
ThreadDST[ThreadIndex] = OldDST;
|
||||
|
||||
// Check if we need to deallocate the global array. Ensure all threads
|
||||
// in the block have finished deallocating the individual DSTs.
|
||||
synchronize::threads(atomic::seq_cst);
|
||||
if (!ThreadDST[ThreadIndex] && !ThreadIndex) {
|
||||
memory::freeGlobal(ThreadDST, "remove ThreadDST array");
|
||||
ThreadDST = nullptr;
|
||||
}
|
||||
synchronize::threads(atomic::seq_cst);
|
||||
}
|
||||
|
||||
void workshare::init(bool IsSPMD) {
|
||||
if (mapping::isInitialThreadInLevel0(IsSPMD))
|
||||
ThreadDST = nullptr;
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
@ -533,24 +583,23 @@ int __kmpc_dispatch_next_8u(IdentTy *loc, int32_t tid, int32_t *p_last,
|
||||
// fini
|
||||
void __kmpc_dispatch_fini_4(IdentTy *loc, int32_t tid) {
|
||||
omptarget_nvptx_LoopSupport<int32_t, int32_t>::dispatch_fini();
|
||||
popDST();
|
||||
}
|
||||
|
||||
void __kmpc_dispatch_fini_4u(IdentTy *loc, int32_t tid) {
|
||||
omptarget_nvptx_LoopSupport<uint32_t, int32_t>::dispatch_fini();
|
||||
popDST();
|
||||
}
|
||||
|
||||
void __kmpc_dispatch_fini_8(IdentTy *loc, int32_t tid) {
|
||||
omptarget_nvptx_LoopSupport<int64_t, int64_t>::dispatch_fini();
|
||||
popDST();
|
||||
}
|
||||
|
||||
void __kmpc_dispatch_fini_8u(IdentTy *loc, int32_t tid) {
|
||||
omptarget_nvptx_LoopSupport<uint64_t, int64_t>::dispatch_fini();
|
||||
popDST();
|
||||
}
|
||||
|
||||
// deinit
|
||||
void __kmpc_dispatch_deinit(IdentTy *loc, int32_t tid) { popDST(); }
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// KMP interface implementation (static loops)
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
60
offload/test/offloading/dynamic-schedule-non-spmd.cpp
Normal file
60
offload/test/offloading/dynamic-schedule-non-spmd.cpp
Normal file
@ -0,0 +1,60 @@
|
||||
// clang-format off
|
||||
// RUN: %libomptarget-compilexx-generic && %libomptarget-run-generic 2>&1 | %fcheck-generic
|
||||
// clang-format on
|
||||
|
||||
// UNSUPPORTED: aarch64-unknown-linux-gnu
|
||||
// UNSUPPORTED: aarch64-unknown-linux-gnu-LTO
|
||||
// UNSUPPORTED: x86_64-pc-linux-gnu
|
||||
// UNSUPPORTED: x86_64-pc-linux-gnu-LTO
|
||||
// UNSUPPORTED: s390x-ibm-linux-gnu
|
||||
// UNSUPPORTED: s390x-ibm-linux-gnu-LTO
|
||||
|
||||
// REQUIRES: amdgcn-amd-amdhsa
|
||||
|
||||
#include <omp.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define N 100
|
||||
|
||||
bool schedule(int lb, int ub, int stride, int chunk) {
|
||||
int i;
|
||||
|
||||
int result[N];
|
||||
for (i = 0; i < N; i++) {
|
||||
result[i] = 0;
|
||||
}
|
||||
|
||||
#pragma omp target map(tofrom : result[ : N])
|
||||
{
|
||||
int a = 0;
|
||||
#pragma omp parallel for schedule(dynamic, chunk)
|
||||
for (i = lb; i < ub; i += stride) {
|
||||
result[i] += i + a;
|
||||
}
|
||||
}
|
||||
|
||||
int value = 0;
|
||||
bool success = true;
|
||||
for (i = 0; i < N; i += stride) {
|
||||
if (value != result[i]) {
|
||||
printf("ERROR: result[%d] = %d instead of %d\n", i, result[i], value);
|
||||
success = false;
|
||||
break;
|
||||
}
|
||||
value += stride;
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
int main() {
|
||||
// CHECK: SUCCESS CHUNK SIZE 1
|
||||
if (schedule(0, N, 5, 1))
|
||||
printf("SUCCESS CHUNK SIZE 1\n");
|
||||
|
||||
// CHECK: SUCCESS CHUNK SIZE 3
|
||||
if (schedule(0, N, 5, 3))
|
||||
printf("SUCCESS CHUNK SIZE 3\n");
|
||||
|
||||
return 0;
|
||||
}
|
57
offload/test/offloading/dynamic-schedule.cpp
Normal file
57
offload/test/offloading/dynamic-schedule.cpp
Normal file
@ -0,0 +1,57 @@
|
||||
// clang-format off
|
||||
// RUN: %libomptarget-compilexx-generic && %libomptarget-run-generic 2>&1 | %fcheck-generic
|
||||
// clang-format on
|
||||
|
||||
// UNSUPPORTED: aarch64-unknown-linux-gnu
|
||||
// UNSUPPORTED: aarch64-unknown-linux-gnu-LTO
|
||||
// UNSUPPORTED: x86_64-pc-linux-gnu
|
||||
// UNSUPPORTED: x86_64-pc-linux-gnu-LTO
|
||||
// UNSUPPORTED: s390x-ibm-linux-gnu
|
||||
// UNSUPPORTED: s390x-ibm-linux-gnu-LTO
|
||||
|
||||
// REQUIRES: amdgcn-amd-amdhsa
|
||||
|
||||
#include <omp.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define N 100
|
||||
|
||||
bool schedule(int lb, int ub, int stride, int chunk) {
|
||||
int i;
|
||||
|
||||
int result[N];
|
||||
for (i = 0; i < N; i++) {
|
||||
result[i] = 0;
|
||||
}
|
||||
|
||||
#pragma omp target parallel for schedule(dynamic, chunk) \
|
||||
map(tofrom : result[ : N])
|
||||
for (i = lb; i < ub; i += stride) {
|
||||
result[i] += i;
|
||||
}
|
||||
|
||||
int value = 0;
|
||||
bool success = true;
|
||||
for (i = 0; i < N; i += stride) {
|
||||
if (value != result[i]) {
|
||||
printf("ERROR: result[%d] = %d instead of %d\n", i, result[i], value);
|
||||
success = false;
|
||||
break;
|
||||
}
|
||||
value += stride;
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
int main() {
|
||||
// CHECK: SUCCESS CHUNK SIZE 1
|
||||
if (schedule(0, N, 5, 1))
|
||||
printf("SUCCESS CHUNK SIZE 1\n");
|
||||
|
||||
// CHECK: SUCCESS CHUNK SIZE 3
|
||||
if (schedule(0, N, 5, 3))
|
||||
printf("SUCCESS CHUNK SIZE 3\n");
|
||||
|
||||
return 0;
|
||||
}
|
84
offload/test/offloading/schedule.c
Normal file
84
offload/test/offloading/schedule.c
Normal file
@ -0,0 +1,84 @@
|
||||
// clang-format off
|
||||
// RUN: %libomptarget-compile-generic && %libomptarget-run-generic 2>&1 | %fcheck-generic
|
||||
// clang-format on
|
||||
|
||||
// UNSUPPORTED: aarch64-unknown-linux-gnu
|
||||
// UNSUPPORTED: aarch64-unknown-linux-gnu-LTO
|
||||
// UNSUPPORTED: x86_64-pc-linux-gnu
|
||||
// UNSUPPORTED: x86_64-pc-linux-gnu-LTO
|
||||
// UNSUPPORTED: s390x-ibm-linux-gnu
|
||||
// UNSUPPORTED: s390x-ibm-linux-gnu-LTO
|
||||
|
||||
// REQUIRES: amdgcn-amd-amdhsa
|
||||
|
||||
#include <omp.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int ordered_example(int lb, int ub, int stride, int nteams) {
|
||||
int i;
|
||||
int size = (ub - lb) / stride;
|
||||
double *output = (double *)malloc(size * sizeof(double));
|
||||
|
||||
#pragma omp target teams map(from : output[0 : size]) num_teams(nteams) \
|
||||
thread_limit(128)
|
||||
#pragma omp parallel for ordered schedule(dynamic)
|
||||
for (i = lb; i < ub; i += stride) {
|
||||
#pragma omp ordered
|
||||
{ output[(i - lb) / stride] = omp_get_wtime(); }
|
||||
}
|
||||
|
||||
// verification
|
||||
for (int j = 0; j < size; j++) {
|
||||
for (int jj = j + 1; jj < size; jj++) {
|
||||
if (output[j] > output[jj]) {
|
||||
printf("Fail to schedule in order.\n");
|
||||
free(output);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
free(output);
|
||||
|
||||
printf("test ordered OK\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int NO_order_example(int lb, int ub, int stride, int nteams) {
|
||||
int i;
|
||||
int size = (ub - lb) / stride;
|
||||
double *output = (double *)malloc(size * sizeof(double));
|
||||
|
||||
#pragma omp target teams map(from : output[0 : size]) num_teams(nteams) \
|
||||
thread_limit(128)
|
||||
#pragma omp parallel for schedule(dynamic)
|
||||
for (i = lb; i < ub; i += stride) {
|
||||
output[(i - lb) / stride] = omp_get_wtime();
|
||||
}
|
||||
|
||||
// verification
|
||||
for (int j = 0; j < size; j++) {
|
||||
for (int jj = j + 1; jj < size; jj++) {
|
||||
if (output[j] > output[jj]) {
|
||||
printf("Fail to schedule in order.\n");
|
||||
free(output);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
free(output);
|
||||
|
||||
printf("test no order OK\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main() {
|
||||
// CHECK: test no order OK
|
||||
NO_order_example(0, 10, 1, 8);
|
||||
// CHECK: test ordered OK
|
||||
return ordered_example(0, 10, 1, 8);
|
||||
}
|
@ -3840,6 +3840,8 @@ extern void __kmpc_dispatch_fini_8(ident_t *loc, kmp_int32 gtid);
|
||||
extern void __kmpc_dispatch_fini_4u(ident_t *loc, kmp_int32 gtid);
|
||||
extern void __kmpc_dispatch_fini_8u(ident_t *loc, kmp_int32 gtid);
|
||||
|
||||
extern void __kmpc_dispatch_deinit(ident_t *loc, kmp_int32 gtid);
|
||||
|
||||
#ifdef KMP_GOMP_COMPAT
|
||||
|
||||
extern void __kmp_aux_dispatch_init_4(ident_t *loc, kmp_int32 gtid,
|
||||
|
@ -3009,6 +3009,11 @@ See @ref __kmpc_dispatch_fini_4
|
||||
void __kmpc_dispatch_fini_8u(ident_t *loc, kmp_int32 gtid) {
|
||||
__kmp_dispatch_finish<kmp_uint64>(gtid, loc);
|
||||
}
|
||||
|
||||
/*!
|
||||
See @ref __kmpc_dispatch_deinit
|
||||
*/
|
||||
void __kmpc_dispatch_deinit(ident_t *loc, kmp_int32 gtid) {}
|
||||
/*! @} */
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user