@@ -1390,6 +1390,20 @@ void acc::ParallelOp::addPrivatization(MLIRContext *context,
13901390 setPrivatizationRecipesAttr (mlir::ArrayAttr::get (context, recipes));
13911391}
13921392
1393+ void acc::ParallelOp::addFirstPrivatization (
1394+ MLIRContext *context, mlir::acc::FirstprivateOp op,
1395+ mlir::acc::FirstprivateRecipeOp recipe) {
1396+ getFirstprivateOperandsMutable ().append (op.getResult ());
1397+
1398+ llvm::SmallVector<mlir::Attribute> recipes;
1399+
1400+ if (getFirstprivatizationRecipesAttr ())
1401+ llvm::copy (getFirstprivatizationRecipesAttr (), std::back_inserter (recipes));
1402+
1403+ recipes.push_back (
1404+ mlir::SymbolRefAttr::get (context, recipe.getSymName ().str ()));
1405+ setFirstprivatizationRecipesAttr (mlir::ArrayAttr::get (context, recipes));
1406+ }
13931407static ParseResult parseNumGangs (
13941408 mlir::OpAsmParser &parser,
13951409 llvm::SmallVectorImpl<mlir::OpAsmParser::UnresolvedOperand> &operands,
@@ -2041,6 +2055,21 @@ void acc::SerialOp::addPrivatization(MLIRContext *context,
20412055 setPrivatizationRecipesAttr (mlir::ArrayAttr::get (context, recipes));
20422056}
20432057
2058+ void acc::SerialOp::addFirstPrivatization (
2059+ MLIRContext *context, mlir::acc::FirstprivateOp op,
2060+ mlir::acc::FirstprivateRecipeOp recipe) {
2061+ getFirstprivateOperandsMutable ().append (op.getResult ());
2062+
2063+ llvm::SmallVector<mlir::Attribute> recipes;
2064+
2065+ if (getFirstprivatizationRecipesAttr ())
2066+ llvm::copy (getFirstprivatizationRecipesAttr (), std::back_inserter (recipes));
2067+
2068+ recipes.push_back (
2069+ mlir::SymbolRefAttr::get (context, recipe.getSymName ().str ()));
2070+ setFirstprivatizationRecipesAttr (mlir::ArrayAttr::get (context, recipes));
2071+ }
2072+
20442073// ===----------------------------------------------------------------------===//
20452074// KernelsOp
20462075// ===----------------------------------------------------------------------===//
0 commit comments