Lines Matching refs:Fortran
29 static const Fortran::parser::Name *
30 getDesignatorNameIfDataRef(const Fortran::parser::Designator &designator) { in getDesignatorNameIfDataRef()
31 const auto *dataRef = std::get_if<Fortran::parser::DataRef>(&designator.u); in getDesignatorNameIfDataRef()
32 return dataRef ? std::get_if<Fortran::parser::Name>(&dataRef->u) : nullptr; in getDesignatorNameIfDataRef()
35 static void genObjectList(const Fortran::parser::AccObjectList &objectList, in genObjectList()
36 Fortran::lower::AbstractConverter &converter, in genObjectList()
38 auto addOperands = [&](Fortran::lower::SymbolRef sym) { in genObjectList()
45 sym->detailsIf<Fortran::semantics::HostAssocDetails>()) in genObjectList()
51 std::visit(Fortran::common::visitors{ in genObjectList()
52 [&](const Fortran::parser::Designator &designator) { in genObjectList()
58 [&](const Fortran::parser::Name &name) { in genObjectList()
67 const Clause *x, Fortran::lower::AbstractConverter &converter, in genObjectListWithModifier()
68 Fortran::parser::AccDataModifier::Modifier mod, in genObjectListWithModifier()
71 const Fortran::parser::AccObjectListWithModifier &listWithModifier = x->v; in genObjectListWithModifier()
73 std::get<Fortran::parser::AccObjectList>(listWithModifier.t); in genObjectListWithModifier()
75 std::get<std::optional<Fortran::parser::AccDataModifier>>( in genObjectListWithModifier()
136 static void genAsyncClause(Fortran::lower::AbstractConverter &converter, in genAsyncClause()
137 const Fortran::parser::AccClause::Async *asyncClause, in genAsyncClause()
139 Fortran::lower::StatementContext &stmtCtx) { in genAsyncClause()
143 *Fortran::semantics::GetExpr(*asyncClauseValue), stmtCtx)); in genAsyncClause()
150 Fortran::lower::AbstractConverter &converter, in genDeviceTypeClause()
151 const Fortran::parser::AccClause::DeviceType *deviceTypeClause, in genDeviceTypeClause()
153 Fortran::lower::StatementContext &stmtCtx) { in genDeviceTypeClause()
154 const Fortran::parser::AccDeviceTypeExprList &deviceTypeExprList = in genDeviceTypeClause()
157 const auto &expr = std::get<std::optional<Fortran::parser::ScalarIntExpr>>( in genDeviceTypeClause()
161 converter.genExprValue(*Fortran::semantics::GetExpr(expr), stmtCtx))); in genDeviceTypeClause()
172 static void genIfClause(Fortran::lower::AbstractConverter &converter, in genIfClause()
173 const Fortran::parser::AccClause::If *ifClause, in genIfClause()
175 Fortran::lower::StatementContext &stmtCtx) { in genIfClause()
178 *Fortran::semantics::GetExpr(ifClause->v), stmtCtx)); in genIfClause()
183 static void genWaitClause(Fortran::lower::AbstractConverter &converter, in genWaitClause()
184 const Fortran::parser::AccClause::Wait *waitClause, in genWaitClause()
187 Fortran::lower::StatementContext &stmtCtx) { in genWaitClause()
190 const Fortran::parser::AccWaitArgument &waitArg = *waitClauseValue; in genWaitClause()
192 std::get<std::list<Fortran::parser::ScalarIntExpr>>(waitArg.t); in genWaitClause()
193 for (const Fortran::parser::ScalarIntExpr &value : waitList) { in genWaitClause()
195 converter.genExprValue(*Fortran::semantics::GetExpr(value), stmtCtx)); in genWaitClause()
200 std::get<std::optional<Fortran::parser::ScalarIntExpr>>(waitArg.t); in genWaitClause()
203 *Fortran::semantics::GetExpr(*waitDevnumValue), stmtCtx)); in genWaitClause()
210 createLoopOp(Fortran::lower::AbstractConverter &converter, in createLoopOp()
211 const Fortran::parser::AccClauseList &accClauseList) { in createLoopOp()
214 Fortran::lower::StatementContext stmtCtx; in createLoopOp()
224 for (const Fortran::parser::AccClause &clause : accClauseList.v) { in createLoopOp()
226 std::get_if<Fortran::parser::AccClause::Gang>(&clause.u)) { in createLoopOp()
228 const Fortran::parser::AccGangArgument &x = *gangClause->v; in createLoopOp()
230 std::get<std::optional<Fortran::parser::ScalarIntExpr>>(x.t)) { in createLoopOp()
232 *Fortran::semantics::GetExpr(gangNumValue.value()), stmtCtx)); in createLoopOp()
235 std::get<std::optional<Fortran::parser::AccSizeExpr>>(x.t)) { in createLoopOp()
237 std::get<std::optional<Fortran::parser::ScalarIntExpr>>( in createLoopOp()
241 *Fortran::semantics::GetExpr(*expr), stmtCtx)); in createLoopOp()
252 std::get_if<Fortran::parser::AccClause::Worker>(&clause.u)) { in createLoopOp()
255 *Fortran::semantics::GetExpr(*workerClause->v), stmtCtx)); in createLoopOp()
259 std::get_if<Fortran::parser::AccClause::Vector>(&clause.u)) { in createLoopOp()
262 *Fortran::semantics::GetExpr(*vectorClause->v), stmtCtx)); in createLoopOp()
266 std::get_if<Fortran::parser::AccClause::Tile>(&clause.u)) { in createLoopOp()
267 const Fortran::parser::AccTileExprList &accTileExprList = tileClause->v; in createLoopOp()
270 std::get<std::optional<Fortran::parser::ScalarIntConstantExpr>>( in createLoopOp()
274 *Fortran::semantics::GetExpr(*expr), stmtCtx))); in createLoopOp()
285 std::get_if<Fortran::parser::AccClause::Private>( in createLoopOp()
311 for (const Fortran::parser::AccClause &clause : accClauseList.v) { in createLoopOp()
313 std::get_if<Fortran::parser::AccClause::Collapse>(&clause.u)) { in createLoopOp()
314 const auto *expr = Fortran::semantics::GetExpr(collapseClause->v); in createLoopOp()
316 Fortran::evaluate::ToInt64(*expr); in createLoopOp()
321 } else if (std::get_if<Fortran::parser::AccClause::Seq>(&clause.u)) { in createLoopOp()
324 } else if (std::get_if<Fortran::parser::AccClause::Independent>( in createLoopOp()
328 } else if (std::get_if<Fortran::parser::AccClause::Auto>(&clause.u)) { in createLoopOp()
336 static void genACC(Fortran::lower::AbstractConverter &converter, in genACC()
337 Fortran::lower::pft::Evaluation &eval, in genACC()
338 const Fortran::parser::OpenACCLoopConstruct &loopConstruct) { in genACC()
341 std::get<Fortran::parser::AccBeginLoopDirective>(loopConstruct.t); in genACC()
343 std::get<Fortran::parser::AccLoopDirective>(beginLoopDirective.t); in genACC()
347 std::get<Fortran::parser::AccClauseList>(beginLoopDirective.t); in genACC()
353 createParallelOp(Fortran::lower::AbstractConverter &converter, in createParallelOp()
354 const Fortran::parser::AccClauseList &accClauseList) { in createParallelOp()
379 Fortran::lower::StatementContext stmtCtx; in createParallelOp()
384 for (const Fortran::parser::AccClause &clause : accClauseList.v) { in createParallelOp()
386 std::get_if<Fortran::parser::AccClause::Async>(&clause.u)) { in createParallelOp()
389 std::get_if<Fortran::parser::AccClause::Wait>(&clause.u)) { in createParallelOp()
393 std::get_if<Fortran::parser::AccClause::NumGangs>( in createParallelOp()
396 *Fortran::semantics::GetExpr(numGangsClause->v), stmtCtx)); in createParallelOp()
398 std::get_if<Fortran::parser::AccClause::NumWorkers>( in createParallelOp()
401 *Fortran::semantics::GetExpr(numWorkersClause->v), stmtCtx)); in createParallelOp()
403 std::get_if<Fortran::parser::AccClause::VectorLength>( in createParallelOp()
406 *Fortran::semantics::GetExpr(vectorLengthClause->v), stmtCtx)); in createParallelOp()
408 std::get_if<Fortran::parser::AccClause::If>(&clause.u)) { in createParallelOp()
411 std::get_if<Fortran::parser::AccClause::Self>(&clause.u)) { in createParallelOp()
412 const std::optional<Fortran::parser::AccSelfClause> &accSelfClause = in createParallelOp()
416 std::get_if<std::optional<Fortran::parser::ScalarLogicalExpr>>( in createParallelOp()
420 *Fortran::semantics::GetExpr(*optCondition), stmtCtx)); in createParallelOp()
425 std::get_if<Fortran::parser::AccObjectList>( in createParallelOp()
431 std::get_if<Fortran::parser::Designator>(&accObject.u)) { in createParallelOp()
444 std::get_if<Fortran::parser::AccClause::Copy>(&clause.u)) { in createParallelOp()
447 std::get_if<Fortran::parser::AccClause::Copyin>(&clause.u)) { in createParallelOp()
448 genObjectListWithModifier<Fortran::parser::AccClause::Copyin>( in createParallelOp()
450 Fortran::parser::AccDataModifier::Modifier::ReadOnly, in createParallelOp()
453 std::get_if<Fortran::parser::AccClause::Copyout>( in createParallelOp()
455 genObjectListWithModifier<Fortran::parser::AccClause::Copyout>( in createParallelOp()
457 Fortran::parser::AccDataModifier::Modifier::Zero, copyoutZeroOperands, in createParallelOp()
460 std::get_if<Fortran::parser::AccClause::Create>(&clause.u)) { in createParallelOp()
461 genObjectListWithModifier<Fortran::parser::AccClause::Create>( in createParallelOp()
463 Fortran::parser::AccDataModifier::Modifier::Zero, createZeroOperands, in createParallelOp()
466 std::get_if<Fortran::parser::AccClause::NoCreate>( in createParallelOp()
470 std::get_if<Fortran::parser::AccClause::Present>( in createParallelOp()
474 std::get_if<Fortran::parser::AccClause::Deviceptr>( in createParallelOp()
478 std::get_if<Fortran::parser::AccClause::Attach>(&clause.u)) { in createParallelOp()
481 std::get_if<Fortran::parser::AccClause::Private>( in createParallelOp()
485 std::get_if<Fortran::parser::AccClause::Firstprivate>( in createParallelOp()
534 genACCParallelOp(Fortran::lower::AbstractConverter &converter, in genACCParallelOp()
535 const Fortran::parser::AccClauseList &accClauseList) { in genACCParallelOp()
539 static void genACCDataOp(Fortran::lower::AbstractConverter &converter, in genACCDataOp()
540 const Fortran::parser::AccClauseList &accClauseList) { in genACCDataOp()
549 Fortran::lower::StatementContext stmtCtx; in genACCDataOp()
554 for (const Fortran::parser::AccClause &clause : accClauseList.v) { in genACCDataOp()
556 std::get_if<Fortran::parser::AccClause::If>(&clause.u)) { in genACCDataOp()
559 std::get_if<Fortran::parser::AccClause::Copy>(&clause.u)) { in genACCDataOp()
562 std::get_if<Fortran::parser::AccClause::Copyin>(&clause.u)) { in genACCDataOp()
563 genObjectListWithModifier<Fortran::parser::AccClause::Copyin>( in genACCDataOp()
565 Fortran::parser::AccDataModifier::Modifier::ReadOnly, in genACCDataOp()
568 std::get_if<Fortran::parser::AccClause::Copyout>( in genACCDataOp()
570 genObjectListWithModifier<Fortran::parser::AccClause::Copyout>( in genACCDataOp()
572 Fortran::parser::AccDataModifier::Modifier::Zero, copyoutZeroOperands, in genACCDataOp()
575 std::get_if<Fortran::parser::AccClause::Create>(&clause.u)) { in genACCDataOp()
576 genObjectListWithModifier<Fortran::parser::AccClause::Create>( in genACCDataOp()
578 Fortran::parser::AccDataModifier::Modifier::Zero, createZeroOperands, in genACCDataOp()
581 std::get_if<Fortran::parser::AccClause::NoCreate>( in genACCDataOp()
585 std::get_if<Fortran::parser::AccClause::Present>( in genACCDataOp()
589 std::get_if<Fortran::parser::AccClause::Deviceptr>( in genACCDataOp()
593 std::get_if<Fortran::parser::AccClause::Attach>(&clause.u)) { in genACCDataOp()
619 genACC(Fortran::lower::AbstractConverter &converter, in genACC()
620 Fortran::lower::pft::Evaluation &eval, in genACC()
621 const Fortran::parser::OpenACCBlockConstruct &blockConstruct) { in genACC()
623 std::get<Fortran::parser::AccBeginBlockDirective>(blockConstruct.t); in genACC()
625 std::get<Fortran::parser::AccBlockDirective>(beginBlockDirective.t); in genACC()
627 std::get<Fortran::parser::AccClauseList>(beginBlockDirective.t); in genACC()
637 genACCParallelLoopOps(Fortran::lower::AbstractConverter &converter, in genACCParallelLoopOps()
638 const Fortran::parser::AccClauseList &accClauseList) { in genACCParallelLoopOps()
644 genACC(Fortran::lower::AbstractConverter &converter, in genACC()
645 Fortran::lower::pft::Evaluation &eval, in genACC()
646 const Fortran::parser::OpenACCCombinedConstruct &combinedConstruct) { in genACC()
648 std::get<Fortran::parser::AccBeginCombinedDirective>(combinedConstruct.t); in genACC()
650 std::get<Fortran::parser::AccCombinedDirective>(beginCombinedDirective.t); in genACC()
652 std::get<Fortran::parser::AccClauseList>(beginCombinedDirective.t); in genACC()
668 genACCEnterDataOp(Fortran::lower::AbstractConverter &converter, in genACCEnterDataOp()
669 const Fortran::parser::AccClauseList &accClauseList) { in genACCEnterDataOp()
682 Fortran::lower::StatementContext stmtCtx; in genACCEnterDataOp()
687 for (const Fortran::parser::AccClause &clause : accClauseList.v) { in genACCEnterDataOp()
689 std::get_if<Fortran::parser::AccClause::If>(&clause.u)) { in genACCEnterDataOp()
692 std::get_if<Fortran::parser::AccClause::Async>(&clause.u)) { in genACCEnterDataOp()
695 std::get_if<Fortran::parser::AccClause::Wait>(&clause.u)) { in genACCEnterDataOp()
699 std::get_if<Fortran::parser::AccClause::Copyin>(&clause.u)) { in genACCEnterDataOp()
700 const Fortran::parser::AccObjectListWithModifier &listWithModifier = in genACCEnterDataOp()
703 std::get<Fortran::parser::AccObjectList>(listWithModifier.t); in genACCEnterDataOp()
706 std::get_if<Fortran::parser::AccClause::Create>(&clause.u)) { in genACCEnterDataOp()
707 genObjectListWithModifier<Fortran::parser::AccClause::Create>( in genACCEnterDataOp()
709 Fortran::parser::AccDataModifier::Modifier::Zero, createZeroOperands, in genACCEnterDataOp()
712 std::get_if<Fortran::parser::AccClause::Attach>(&clause.u)) { in genACCEnterDataOp()
742 genACCExitDataOp(Fortran::lower::AbstractConverter &converter, in genACCExitDataOp()
743 const Fortran::parser::AccClauseList &accClauseList) { in genACCExitDataOp()
757 Fortran::lower::StatementContext stmtCtx; in genACCExitDataOp()
762 for (const Fortran::parser::AccClause &clause : accClauseList.v) { in genACCExitDataOp()
764 std::get_if<Fortran::parser::AccClause::If>(&clause.u)) { in genACCExitDataOp()
767 std::get_if<Fortran::parser::AccClause::Async>(&clause.u)) { in genACCExitDataOp()
770 std::get_if<Fortran::parser::AccClause::Wait>(&clause.u)) { in genACCExitDataOp()
774 std::get_if<Fortran::parser::AccClause::Copyout>( in genACCExitDataOp()
776 const Fortran::parser::AccObjectListWithModifier &listWithModifier = in genACCExitDataOp()
779 std::get<Fortran::parser::AccObjectList>(listWithModifier.t); in genACCExitDataOp()
782 std::get_if<Fortran::parser::AccClause::Delete>(&clause.u)) { in genACCExitDataOp()
785 std::get_if<Fortran::parser::AccClause::Detach>(&clause.u)) { in genACCExitDataOp()
787 } else if (std::get_if<Fortran::parser::AccClause::Finalize>(&clause.u)) { in genACCExitDataOp()
816 genACCInitShutdownOp(Fortran::lower::AbstractConverter &converter, in genACCInitShutdownOp()
817 const Fortran::parser::AccClauseList &accClauseList) { in genACCInitShutdownOp()
823 Fortran::lower::StatementContext stmtCtx; in genACCInitShutdownOp()
828 for (const Fortran::parser::AccClause &clause : accClauseList.v) { in genACCInitShutdownOp()
830 std::get_if<Fortran::parser::AccClause::If>(&clause.u)) { in genACCInitShutdownOp()
833 std::get_if<Fortran::parser::AccClause::DeviceNum>( in genACCInitShutdownOp()
836 *Fortran::semantics::GetExpr(deviceNumClause->v), stmtCtx)); in genACCInitShutdownOp()
838 std::get_if<Fortran::parser::AccClause::DeviceType>( in genACCInitShutdownOp()
856 genACCUpdateOp(Fortran::lower::AbstractConverter &converter, in genACCUpdateOp()
857 const Fortran::parser::AccClauseList &accClauseList) { in genACCUpdateOp()
871 Fortran::lower::StatementContext stmtCtx; in genACCUpdateOp()
876 for (const Fortran::parser::AccClause &clause : accClauseList.v) { in genACCUpdateOp()
878 std::get_if<Fortran::parser::AccClause::If>(&clause.u)) { in genACCUpdateOp()
881 std::get_if<Fortran::parser::AccClause::Async>(&clause.u)) { in genACCUpdateOp()
884 std::get_if<Fortran::parser::AccClause::Wait>(&clause.u)) { in genACCUpdateOp()
888 std::get_if<Fortran::parser::AccClause::DeviceType>( in genACCUpdateOp()
893 std::get_if<Fortran::parser::AccClause::Host>(&clause.u)) { in genACCUpdateOp()
896 std::get_if<Fortran::parser::AccClause::Device>(&clause.u)) { in genACCUpdateOp()
924 genACC(Fortran::lower::AbstractConverter &converter, in genACC()
925 Fortran::lower::pft::Evaluation &eval, in genACC()
926 const Fortran::parser::OpenACCStandaloneConstruct &standaloneConstruct) { in genACC()
928 std::get<Fortran::parser::AccStandaloneDirective>(standaloneConstruct.t); in genACC()
930 std::get<Fortran::parser::AccClauseList>(standaloneConstruct.t); in genACC()
948 static void genACC(Fortran::lower::AbstractConverter &converter, in genACC()
949 Fortran::lower::pft::Evaluation &eval, in genACC()
950 const Fortran::parser::OpenACCWaitConstruct &waitConstruct) { in genACC()
953 std::get<std::optional<Fortran::parser::AccWaitArgument>>( in genACC()
956 std::get<Fortran::parser::AccClauseList>(waitConstruct.t); in genACC()
968 Fortran::lower::StatementContext stmtCtx; in genACC()
971 const Fortran::parser::AccWaitArgument &waitArg = *waitArgument; in genACC()
973 std::get<std::list<Fortran::parser::ScalarIntExpr>>(waitArg.t); in genACC()
974 for (const Fortran::parser::ScalarIntExpr &value : waitList) { in genACC()
976 converter.genExprValue(*Fortran::semantics::GetExpr(value), stmtCtx)); in genACC()
981 std::get<std::optional<Fortran::parser::ScalarIntExpr>>(waitArg.t); in genACC()
984 *Fortran::semantics::GetExpr(*waitDevnumValue), stmtCtx)); in genACC()
990 for (const Fortran::parser::AccClause &clause : accClauseList.v) { in genACC()
992 std::get_if<Fortran::parser::AccClause::If>(&clause.u)) { in genACC()
995 std::get_if<Fortran::parser::AccClause::Async>(&clause.u)) { in genACC()
1015 void Fortran::lower::genOpenACCConstruct( in genOpenACCConstruct()
1016 Fortran::lower::AbstractConverter &converter, in genOpenACCConstruct()
1017 Fortran::lower::pft::Evaluation &eval, in genOpenACCConstruct()
1018 const Fortran::parser::OpenACCConstruct &accConstruct) { in genOpenACCConstruct()
1022 [&](const Fortran::parser::OpenACCBlockConstruct &blockConstruct) { in genOpenACCConstruct()
1025 [&](const Fortran::parser::OpenACCCombinedConstruct in genOpenACCConstruct()
1029 [&](const Fortran::parser::OpenACCLoopConstruct &loopConstruct) { in genOpenACCConstruct()
1032 [&](const Fortran::parser::OpenACCStandaloneConstruct in genOpenACCConstruct()
1036 [&](const Fortran::parser::OpenACCCacheConstruct &cacheConstruct) { in genOpenACCConstruct()
1040 [&](const Fortran::parser::OpenACCWaitConstruct &waitConstruct) { in genOpenACCConstruct()
1043 [&](const Fortran::parser::OpenACCAtomicConstruct &atomicConstruct) { in genOpenACCConstruct()
1051 void Fortran::lower::genOpenACCDeclarativeConstruct( in genOpenACCDeclarativeConstruct()
1052 Fortran::lower::AbstractConverter &converter, in genOpenACCDeclarativeConstruct()
1053 Fortran::lower::pft::Evaluation &eval, in genOpenACCDeclarativeConstruct()
1054 const Fortran::parser::OpenACCDeclarativeConstruct &accDeclConstruct) { in genOpenACCDeclarativeConstruct()
1058 [&](const Fortran::parser::OpenACCStandaloneDeclarativeConstruct in genOpenACCDeclarativeConstruct()
1063 [&](const Fortran::parser::OpenACCRoutineConstruct in genOpenACCDeclarativeConstruct()