@@ -3088,12 +3088,20 @@ static mlir::omp::DistributeOp genCompositeDistributeSimd(
3088
3088
genSimdClauses (converter, semaCtx, simdItem->clauses , loc, simdClauseOps,
3089
3089
simdReductionSyms);
3090
3090
3091
- // TODO: Support delayed privatization.
3092
- DataSharingProcessor dsp (converter, semaCtx, simdItem->clauses , eval,
3093
- /* shouldCollectPreDeterminedSymbols=*/ true ,
3094
- /* useDelayedPrivatization=*/ false , symTable);
3095
- dsp.processStep1 ();
3096
- dsp.processStep2 ();
3091
+
3092
+ DataSharingProcessor distributeItemDSP (
3093
+ converter, semaCtx, distributeItem->clauses , eval,
3094
+ /* shouldCollectPreDeterminedSymbols=*/ false ,
3095
+ /* useDelayedPrivatization=*/ true , symTable);
3096
+ distributeItemDSP.processStep1 ();
3097
+ distributeItemDSP.processStep2 (&distributeClauseOps);
3098
+
3099
+ DataSharingProcessor simdItemDSP (converter, semaCtx, simdItem->clauses , eval,
3100
+ /* shouldCollectPreDeterminedSymbols=*/ true ,
3101
+ /* useDelayedPrivatization=*/ true , symTable);
3102
+ simdItemDSP.processStep1 ();
3103
+ simdItemDSP.processStep2 (&simdClauseOps);
3104
+
3097
3105
// Pass the innermost leaf construct's clauses because that's where COLLAPSE
3098
3106
// is placed by construct decomposition.
3099
3107
mlir::omp::LoopNestOperands loopNestClauseOps;
@@ -3103,13 +3111,15 @@ static mlir::omp::DistributeOp genCompositeDistributeSimd(
3103
3111
3104
3112
// Operation creation.
3105
3113
EntryBlockArgs distributeArgs;
3106
- // TODO: Add private syms and vars.
3114
+ distributeArgs.priv .syms = distributeItemDSP.getDelayedPrivSymbols ();
3115
+ distributeArgs.priv .vars = distributeClauseOps.privateVars ;
3107
3116
auto distributeOp = genWrapperOp<mlir::omp::DistributeOp>(
3108
3117
converter, loc, distributeClauseOps, distributeArgs);
3109
3118
distributeOp.setComposite (/* val=*/ true );
3110
3119
3111
3120
EntryBlockArgs simdArgs;
3112
- // TODO: Add private syms and vars.
3121
+ simdArgs.priv .syms = simdItemDSP.getDelayedPrivSymbols ();
3122
+ simdArgs.priv .vars = simdClauseOps.privateVars ;
3113
3123
simdArgs.reduction .syms = simdReductionSyms;
3114
3124
simdArgs.reduction .vars = simdClauseOps.reductionVars ;
3115
3125
auto simdOp =
@@ -3119,7 +3129,7 @@ static mlir::omp::DistributeOp genCompositeDistributeSimd(
3119
3129
genLoopNestOp (converter, symTable, semaCtx, eval, loc, queue, simdItem,
3120
3130
loopNestClauseOps, iv,
3121
3131
{{distributeOp, distributeArgs}, {simdOp, simdArgs}},
3122
- llvm::omp::Directive::OMPD_distribute_simd, dsp );
3132
+ llvm::omp::Directive::OMPD_distribute_simd, simdItemDSP );
3123
3133
return distributeOp;
3124
3134
}
3125
3135
0 commit comments