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) &&
|
||||
"Invalid reduction selection in emitReduction.");
|
||||
|
||||
if (Options.SimpleReduction) {
|
||||
CGOpenMPRuntime::emitReduction(CGF, Loc, Privates, LHSExprs, RHSExprs,
|
||||
ReductionOps, Options);
|
||||
return;
|
||||
}
|
||||
|
||||
ASTContext &C = CGM.getContext();
|
||||
|
||||
// 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-NOT: call void @__kmpc_for_static_init
|
||||
// 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: switch i32 [[RES]]
|
||||
// CHECK: call void @__kmpc_nvptx_end_reduce_nowait(i32 %{{.+}})
|
||||
// CHECK-NOT: call i32 @__kmpc_nvptx_simd_reduce_nowait(
|
||||
// CHECK-NOT: call void @__kmpc_nvptx_end_reduce_nowait(
|
||||
// CHECK: call void @__kmpc_kernel_deinit(i16 1)
|
||||
// CHECK: ret void
|
||||
|
||||
|
|
Loading…
Reference in New Issue