forked from OSchip/llvm-project
[OPENMP, NVPTX] Emit simple reduction if requested.
If simple reduction is requested, use the simple reduction instead of the runtime functions calls. llvm-svn: 334962
This commit is contained in:
parent
a88281d8ae
commit
7b55d2d554
|
@ -3163,6 +3163,12 @@ void CGOpenMPRuntimeNVPTX::emitReduction(
|
||||||
assert((TeamsReduction || ParallelReduction || SimdReduction) &&
|
assert((TeamsReduction || ParallelReduction || SimdReduction) &&
|
||||||
"Invalid reduction selection in emitReduction.");
|
"Invalid reduction selection in emitReduction.");
|
||||||
|
|
||||||
|
if (Options.SimpleReduction) {
|
||||||
|
CGOpenMPRuntime::emitReduction(CGF, Loc, Privates, LHSExprs, RHSExprs,
|
||||||
|
ReductionOps, Options);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ASTContext &C = CGM.getContext();
|
ASTContext &C = CGM.getContext();
|
||||||
|
|
||||||
// 1. Build a list of reduction variables.
|
// 1. Build a list of reduction variables.
|
||||||
|
|
|
@ -78,9 +78,8 @@ int bar(int n){
|
||||||
// CHECK: call void @__kmpc_kernel_init(i32 %{{.+}}, i16 1)
|
// CHECK: call void @__kmpc_kernel_init(i32 %{{.+}}, i16 1)
|
||||||
// CHECK-NOT: call void @__kmpc_for_static_init
|
// CHECK-NOT: call void @__kmpc_for_static_init
|
||||||
// CHECK-NOT: call void @__kmpc_for_static_fini
|
// CHECK-NOT: call void @__kmpc_for_static_fini
|
||||||
// CHECK: [[RES:%.+]] = call i32 @__kmpc_nvptx_simd_reduce_nowait(i32 %{{.+}}, i32 1, i{{64|32}} {{8|4}}, i8* %{{.+}}, void (i8*, i16, i16, i16)* @{{.+}}, void (i8*, i32)* @{{.+}})
|
// CHECK-NOT: call i32 @__kmpc_nvptx_simd_reduce_nowait(
|
||||||
// CHECK: switch i32 [[RES]]
|
// CHECK-NOT: call void @__kmpc_nvptx_end_reduce_nowait(
|
||||||
// CHECK: call void @__kmpc_nvptx_end_reduce_nowait(i32 %{{.+}})
|
|
||||||
// CHECK: call void @__kmpc_kernel_deinit(i16 1)
|
// CHECK: call void @__kmpc_kernel_deinit(i16 1)
|
||||||
// CHECK: ret void
|
// CHECK: ret void
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue