Lines Matching refs:builder
162 fir::FirOpBuilder &builder) { in getIORuntimeFunc() argument
164 mlir::func::FuncOp func = builder.getNamedFunction(name); in getIORuntimeFunc()
167 auto funTy = getTypeModel<E>()(builder.getContext()); in getIORuntimeFunc()
168 func = builder.createFunction(loc, name, funTy); in getIORuntimeFunc()
169 func->setAttr("fir.runtime", builder.getUnitAttr()); in getIORuntimeFunc()
170 func->setAttr("fir.io", builder.getUnitAttr()); in getIORuntimeFunc()
180 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genEndIO() local
183 getIORuntimeFunc<mkIOKey(GetIoMsg)>(loc, builder); in genEndIO()
184 builder.create<fir::CallOp>( in genEndIO()
188 builder.createConvert(loc, getIoMsg.getFunctionType().getInput(1), in genEndIO()
190 builder.createConvert(loc, getIoMsg.getFunctionType().getInput(2), in genEndIO()
194 getIORuntimeFunc<mkIOKey(EndIoStatement)>(loc, builder); in genEndIO()
195 auto call = builder.create<fir::CallOp>(loc, endIoStatement, in genEndIO()
200 builder.create<fir::ResultOp>(loc, iostat); in genEndIO()
201 builder.setInsertionPointAfter(csi.bigUnitIfOp); in genEndIO()
208 builder.createConvert(loc, converter.genType(*csi.ioStatExpr), iostat); in genEndIO()
209 builder.create<fir::StoreOp>(loc, ioStatResult, ioStatVar); in genEndIO()
218 static void makeNextConditionalOn(fir::FirOpBuilder &builder, in makeNextConditionalOn() argument
230 resTy = builder.getI1Type(); in makeNextConditionalOn()
231 auto ifOp = builder.create<fir::IfOp>(loc, resTy, ok, in makeNextConditionalOn()
233 builder.setInsertionPointToStart(&ifOp.getThenRegion().front()); in makeNextConditionalOn()
244 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in getNamelistGroup() local
247 if (auto group = builder.getNamedGlobal(groupMangleName)) in getNamelistGroup()
248 return builder.create<fir::AddrOfOp>(loc, group.resultType(), in getNamelistGroup()
253 mlir::MLIRContext *context = builder.getContext(); in getNamelistGroup()
254 mlir::StringAttr linkOnce = builder.createLinkOnceLinkage(); in getNamelistGroup()
255 mlir::IndexType idxTy = builder.getIndexType(); in getNamelistGroup()
256 mlir::IntegerType sizeTy = builder.getIntegerType(8 * sizeof(std::size_t)); in getNamelistGroup()
258 fir::ReferenceType::get(builder.getIntegerType(8)); in getNamelistGroup()
267 return fir::factory::createStringLiteral(builder, loc, in getNamelistGroup()
284 if (builder.getNamedGlobal(mangleName)) in getNamelistGroup()
294 builder.createGlobalConstant(loc, boxTy, mangleName, descFunc, linkOnce); in getNamelistGroup()
300 groupIsLocal ? builder.create<fir::AllocaOp>(loc, listTy) : mlir::Value{}; in getNamelistGroup()
302 auto listFunc = [&](fir::FirOpBuilder &builder) { in getNamelistGroup() argument
303 mlir::Value list = builder.create<fir::UndefOp>(loc, listTy); in getNamelistGroup()
304 mlir::IntegerAttr zero = builder.getIntegerAttr(idxTy, 0); in getNamelistGroup()
305 mlir::IntegerAttr one = builder.getIntegerAttr(idxTy, 1); in getNamelistGroup()
310 idx[0] = builder.getIntegerAttr(idxTy, n); in getNamelistGroup()
313 builder.createConvert(loc, charRefTy, fir::getBase(stringAddress(s))); in getNamelistGroup()
314 list = builder.create<fir::InsertValueOp>(loc, listTy, list, nameAddr, in getNamelistGroup()
315 builder.getArrayAttr(idx)); in getNamelistGroup()
321 builder.getNamedGlobal(converter.mangleName(s) + suffix)) { in getNamelistGroup()
322 descAddr = builder.create<fir::AddrOfOp>(loc, desc.resultType(), in getNamelistGroup()
331 descAddr = builder.createTemporary(loc, boxType); in getNamelistGroup()
333 fir::factory::associateMutableBox(builder, loc, box, exv, in getNamelistGroup()
336 descAddr = builder.createConvert(loc, descRefTy, descAddr); in getNamelistGroup()
337 list = builder.create<fir::InsertValueOp>(loc, listTy, list, descAddr, in getNamelistGroup()
338 builder.getArrayAttr(idx)); in getNamelistGroup()
342 builder.create<fir::StoreOp>(loc, list, listAddr); in getNamelistGroup()
344 builder.create<fir::HasValueOp>(loc, list); in getNamelistGroup()
347 listFunc(builder); in getNamelistGroup()
349 builder.createGlobalConstant(loc, listTy, listMangleName, listFunc, in getNamelistGroup()
354 ? builder.create<fir::AllocaOp>(loc, groupTy) in getNamelistGroup()
356 auto groupFunc = [&](fir::FirOpBuilder &builder) { in getNamelistGroup() argument
357 mlir::IntegerAttr zero = builder.getIntegerAttr(idxTy, 0); in getNamelistGroup()
358 mlir::IntegerAttr one = builder.getIntegerAttr(idxTy, 1); in getNamelistGroup()
359 mlir::IntegerAttr two = builder.getIntegerAttr(idxTy, 2); in getNamelistGroup()
360 mlir::Value group = builder.create<fir::UndefOp>(loc, groupTy); in getNamelistGroup()
361 mlir::Value nameAddr = builder.createConvert( in getNamelistGroup()
363 group = builder.create<fir::InsertValueOp>(loc, groupTy, group, nameAddr, in getNamelistGroup()
364 builder.getArrayAttr(zero)); in getNamelistGroup()
366 builder.createIntegerConstant(loc, sizeTy, details.objects().size()); in getNamelistGroup()
367 group = builder.create<fir::InsertValueOp>(loc, groupTy, group, itemCount, in getNamelistGroup()
368 builder.getArrayAttr(one)); in getNamelistGroup()
369 if (fir::GlobalOp list = builder.getNamedGlobal(listMangleName)) in getNamelistGroup()
370 listAddr = builder.create<fir::AddrOfOp>(loc, list.resultType(), in getNamelistGroup()
373 group = builder.create<fir::InsertValueOp>(loc, groupTy, group, listAddr, in getNamelistGroup()
374 builder.getArrayAttr(two)); in getNamelistGroup()
376 builder.create<fir::StoreOp>(loc, group, groupAddr); in getNamelistGroup()
378 builder.create<fir::HasValueOp>(loc, group); in getNamelistGroup()
381 groupFunc(builder); in getNamelistGroup()
384 builder.createGlobal(loc, groupTy, groupMangleName, in getNamelistGroup()
386 groupAddr = builder.create<fir::AddrOfOp>(loc, group.resultType(), in getNamelistGroup()
399 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genNamelistIO() local
401 makeNextConditionalOn(builder, loc, checkResult, ok); in genNamelistIO()
404 groupAddr = builder.createConvert(loc, argType, groupAddr); in genNamelistIO()
406 ok = builder.create<fir::CallOp>(loc, funcOp, args).getResult(0); in genNamelistIO()
411 fir::FirOpBuilder &builder, in getOutputFunc() argument
414 return getIORuntimeFunc<mkIOKey(OutputDescriptor)>(loc, builder); in getOutputFunc()
418 return getIORuntimeFunc<mkIOKey(OutputLogical)>(loc, builder); in getOutputFunc()
420 return getIORuntimeFunc<mkIOKey(OutputInteger8)>(loc, builder); in getOutputFunc()
422 return getIORuntimeFunc<mkIOKey(OutputInteger16)>(loc, builder); in getOutputFunc()
424 return getIORuntimeFunc<mkIOKey(OutputInteger32)>(loc, builder); in getOutputFunc()
426 return getIORuntimeFunc<mkIOKey(OutputInteger64)>(loc, builder); in getOutputFunc()
428 return getIORuntimeFunc<mkIOKey(OutputInteger128)>(loc, builder); in getOutputFunc()
434 return getIORuntimeFunc<mkIOKey(OutputReal32)>(loc, builder); in getOutputFunc()
436 return getIORuntimeFunc<mkIOKey(OutputReal64)>(loc, builder); in getOutputFunc()
438 auto kindMap = fir::getKindMapping(builder.getModule()); in getOutputFunc()
443 return getIORuntimeFunc<mkIOKey(OutputComplex32)>(loc, builder); in getOutputFunc()
445 return getIORuntimeFunc<mkIOKey(OutputComplex64)>(loc, builder); in getOutputFunc()
448 return getIORuntimeFunc<mkIOKey(OutputLogical)>(loc, builder); in getOutputFunc()
457 return getIORuntimeFunc<mkIOKey(OutputAscii)>(loc, builder); in getOutputFunc()
459 return getIORuntimeFunc<mkIOKey(OutputDescriptor)>(loc, builder); in getOutputFunc()
467 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genOutputItemList() local
476 makeNextConditionalOn(builder, loc, checkResult, ok, inLoop); in genOutputItemList()
484 getOutputFunc(loc, builder, itemTy, isFormatted); in genOutputItemList()
489 fir::factory::CharacterExprHelper helper{builder, loc}; in genOutputItemList()
492 outputFuncArgs.push_back(builder.createConvert(loc, argType, box)); in genOutputItemList()
500 outputFuncArgs.push_back(builder.createConvert( in genOutputItemList()
502 outputFuncArgs.push_back(builder.createConvert( in genOutputItemList()
509 fir::factory::Complex{builder, loc}.extractParts(itemValue); in genOutputItemList()
513 itemValue = builder.createConvert(loc, argType, itemValue); in genOutputItemList()
517 ok = builder.create<fir::CallOp>(loc, outputFunc, outputFuncArgs) in genOutputItemList()
524 fir::FirOpBuilder &builder, in getInputFunc() argument
527 return getIORuntimeFunc<mkIOKey(InputDescriptor)>(loc, builder); in getInputFunc()
530 ? getIORuntimeFunc<mkIOKey(InputLogical)>(loc, builder) in getInputFunc()
531 : getIORuntimeFunc<mkIOKey(InputInteger)>(loc, builder); in getInputFunc()
534 return getIORuntimeFunc<mkIOKey(InputReal32)>(loc, builder); in getInputFunc()
536 return getIORuntimeFunc<mkIOKey(InputReal64)>(loc, builder); in getInputFunc()
538 auto kindMap = fir::getKindMapping(builder.getModule()); in getInputFunc()
542 return getIORuntimeFunc<mkIOKey(InputComplex32)>(loc, builder); in getInputFunc()
544 return getIORuntimeFunc<mkIOKey(InputComplex64)>(loc, builder); in getInputFunc()
547 return getIORuntimeFunc<mkIOKey(InputLogical)>(loc, builder); in getInputFunc()
552 return getIORuntimeFunc<mkIOKey(InputAscii)>(loc, builder); in getInputFunc()
554 return getIORuntimeFunc<mkIOKey(InputDescriptor)>(loc, builder); in getInputFunc()
562 static void boolRefToLogical(mlir::Location loc, fir::FirOpBuilder &builder, in boolRefToLogical() argument
564 auto boolType = builder.getRefType(builder.getI1Type()); in boolRefToLogical()
565 auto boolAddr = builder.createConvert(loc, boolType, addr); in boolRefToLogical()
566 auto boolValue = builder.create<fir::LoadOp>(loc, boolAddr); in boolRefToLogical()
570 auto logicalValue = builder.createConvert(loc, logicalType, boolValue); in boolRefToLogical()
571 builder.create<fir::StoreOp>(loc, logicalValue, addr); in boolRefToLogical()
575 fir::FirOpBuilder &builder, in createIoRuntimeCallForItem() argument
584 inputFuncArgs.push_back(builder.createConvert(loc, argType, box)); in createIoRuntimeCallForItem()
588 inputFuncArgs.push_back(builder.createConvert(loc, argType, itemAddr)); in createIoRuntimeCallForItem()
589 fir::factory::CharacterExprHelper charHelper{builder, loc}; in createIoRuntimeCallForItem()
592 inputFuncArgs.push_back(builder.createConvert( in createIoRuntimeCallForItem()
595 inputFuncArgs.push_back(builder.create<mlir::arith::ConstantOp>( in createIoRuntimeCallForItem()
596 loc, builder.getI32IntegerAttr( in createIoRuntimeCallForItem()
600 auto call = builder.create<fir::CallOp>(loc, inputFunc, inputFuncArgs); in createIoRuntimeCallForItem()
604 boolRefToLogical(loc, builder, itemAddr); in createIoRuntimeCallForItem()
614 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genInputItemList() local
623 makeNextConditionalOn(builder, loc, checkResult, ok, inLoop); in genInputItemList()
632 loc, builder, vectorSubscriptBox.getElementType(), isFormatted); in genInputItemList()
637 createIoRuntimeCallForItem(loc, builder, inputFunc, cookie, in genInputItemList()
638 mustBox ? builder.createBox(loc, element) in genInputItemList()
641 vectorSubscriptBox.loopOverElements(builder, loc, elementalGenerator); in genInputItemList()
646 loc, builder, inputFunc, cookie, in genInputItemList()
647 mustBox ? builder.createBox(loc, element) : element); in genInputItemList()
650 ok = builder.createBool(loc, true); in genInputItemList()
651 ok = vectorSubscriptBox.loopOverElementsWhile(builder, loc, in genInputItemList()
658 getInputFunc(loc, builder, itemTy, isFormatted); in genInputItemList()
662 ok = createIoRuntimeCallForItem(loc, builder, inputFunc, cookie, itemExv); in genInputItemList()
673 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genIoLoop() local
675 makeNextConditionalOn(builder, loc, checkResult, ok, inLoop); in genIoLoop()
684 return builder.createConvert(loc, builder.getIndexType(), v); in genIoLoop()
691 : builder.create<mlir::arith::ConstantIndexOp>(loc, 1); in genIoLoop()
702 auto doLoopOp = builder.create<fir::DoLoopOp>( in genIoLoop()
705 builder.setInsertionPointToStart(doLoopOp.getBody()); in genIoLoop()
706 mlir::Value lcv = builder.createConvert( in genIoLoop()
708 builder.create<fir::StoreOp>(loc, lcv, loopVar); in genIoLoop()
710 builder.setInsertionPointToEnd(doLoopOp.getBody()); in genIoLoop()
711 mlir::Value result = builder.create<mlir::arith::AddIOp>( in genIoLoop()
713 builder.create<fir::ResultOp>(loc, result); in genIoLoop()
714 builder.setInsertionPointAfter(doLoopOp); in genIoLoop()
716 lcv = builder.createConvert(loc, fir::unwrapRefType(loopVar.getType()), in genIoLoop()
718 builder.create<fir::StoreOp>(loc, lcv, loopVar); in genIoLoop()
723 ok = builder.createBool(loc, true); in genIoLoop()
724 auto iterWhileOp = builder.create<fir::IterWhileOp>( in genIoLoop()
726 builder.setInsertionPointToStart(iterWhileOp.getBody()); in genIoLoop()
728 builder.createConvert(loc, fir::unwrapRefType(loopVar.getType()), in genIoLoop()
730 builder.create<fir::StoreOp>(loc, lcv, loopVar); in genIoLoop()
733 builder.createIntegerConstant(loc, builder.getI1Type(), 0); in genIoLoop()
736 for (mlir::Operation *op = builder.getBlock()->getParentOp(); in genIoLoop()
740 builder.setInsertionPointAfter(lastOp); in genIoLoop()
743 builder.create<fir::ResultOp>(loc, lastOp->getResult(0)); in genIoLoop()
745 builder.create<fir::ResultOp>(loc, ok); // loop result in genIoLoop()
747 builder.setInsertionPointToStart(&ifOp.getElseRegion().front()); in genIoLoop()
748 builder.create<fir::ResultOp>(loc, falseValue); in genIoLoop()
750 builder.setInsertionPointToEnd(iterWhileOp.getBody()); in genIoLoop()
751 mlir::OpResult iterateResult = builder.getBlock()->back().getResult(0); in genIoLoop()
753 auto inductionResult1 = builder.create<mlir::arith::AddIOp>( in genIoLoop()
755 auto inductionResult = builder.create<mlir::arith::SelectOp>( in genIoLoop()
758 builder.create<fir::ResultOp>(loc, results); in genIoLoop()
760 builder.setInsertionPointAfter(iterWhileOp); in genIoLoop()
762 lcv = builder.createConvert(loc, fir::unwrapRefType(loopVar.getType()), in genIoLoop()
764 builder.create<fir::StoreOp>(loc, lcv, loopVar); in genIoLoop()
773 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in locToFilename() local
774 return builder.createConvert(loc, toType, in locToFilename()
775 fir::factory::locationToFilename(builder, loc)); in locToFilename()
784 static mlir::Value getDefaultScratch(fir::FirOpBuilder &builder, in getDefaultScratch() argument
786 mlir::Value null = builder.create<mlir::arith::ConstantOp>( in getDefaultScratch()
787 loc, builder.getI64IntegerAttr(0)); in getDefaultScratch()
788 return builder.createConvert(loc, toType, null); in getDefaultScratch()
791 static mlir::Value getDefaultScratchLen(fir::FirOpBuilder &builder, in getDefaultScratchLen() argument
793 return builder.create<mlir::arith::ConstantOp>( in getDefaultScratchLen()
794 loc, builder.getIntegerAttr(toType, 0)); in getDefaultScratchLen()
804 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genBuffer() local
806 fir::factory::CharacterExprHelper helper(builder, loc); in genBuffer()
825 buff = builder.createConvert(loc, strTy, buff); in genBuffer()
826 len = builder.createConvert(loc, lenTy, len); in genBuffer()
837 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); local
845 kind = builder.create<mlir::arith::ConstantOp>(
846 loc, builder.getIntegerAttr(ty2, kindVal));
860 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in lowerSourceTextAsStringLit() local
862 fir::getBase(fir::factory::createStringLiteral(builder, loc, text)); in lowerSourceTextAsStringLit()
863 mlir::Value buff = builder.createConvert(loc, strTy, addrGlobalStringLit); in lowerSourceTextAsStringLit()
864 mlir::Value len = builder.createIntegerConstant(loc, lenTy, text.size()); in lowerSourceTextAsStringLit()
879 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genIntIOOption() local
880 mlir::func::FuncOp ioFunc = getIORuntimeFunc<A>(loc, builder); in genIntIOOption()
884 mlir::Value val = builder.createConvert(loc, ioFuncTy.getInput(1), expr); in genIntIOOption()
886 return builder.create<fir::CallOp>(loc, ioFunc, ioArgs).getResult(0); in genIntIOOption()
896 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genCharIOOption() local
897 mlir::func::FuncOp ioFunc = getIORuntimeFunc<A>(loc, builder); in genCharIOOption()
904 return builder.create<fir::CallOp>(loc, ioFunc, ioArgs).getResult(0); in genCharIOOption()
927 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genIOOption() local
929 mlir::func::FuncOp ioFunc = getIORuntimeFunc<mkIOKey(SetFile)>(loc, builder); in genIOOption()
936 return builder.create<fir::CallOp>(loc, ioFunc, ioArgs).getResult(0); in genIOOption()
943 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genIOOption() local
947 ioFunc = getIORuntimeFunc<mkIOKey(SetAccess)>(loc, builder); in genIOOption()
950 ioFunc = getIORuntimeFunc<mkIOKey(SetAction)>(loc, builder); in genIOOption()
953 ioFunc = getIORuntimeFunc<mkIOKey(SetAsynchronous)>(loc, builder); in genIOOption()
956 ioFunc = getIORuntimeFunc<mkIOKey(SetBlank)>(loc, builder); in genIOOption()
959 ioFunc = getIORuntimeFunc<mkIOKey(SetDecimal)>(loc, builder); in genIOOption()
962 ioFunc = getIORuntimeFunc<mkIOKey(SetDelim)>(loc, builder); in genIOOption()
965 ioFunc = getIORuntimeFunc<mkIOKey(SetEncoding)>(loc, builder); in genIOOption()
968 ioFunc = getIORuntimeFunc<mkIOKey(SetForm)>(loc, builder); in genIOOption()
971 ioFunc = getIORuntimeFunc<mkIOKey(SetPad)>(loc, builder); in genIOOption()
974 ioFunc = getIORuntimeFunc<mkIOKey(SetPosition)>(loc, builder); in genIOOption()
977 ioFunc = getIORuntimeFunc<mkIOKey(SetRound)>(loc, builder); in genIOOption()
980 ioFunc = getIORuntimeFunc<mkIOKey(SetSign)>(loc, builder); in genIOOption()
983 ioFunc = getIORuntimeFunc<mkIOKey(SetCarriagecontrol)>(loc, builder); in genIOOption()
998 return builder.create<fir::CallOp>(loc, ioFunc, ioArgs).getResult(0); in genIOOption()
1019 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genIOOption() local
1023 ioFunc = getIORuntimeFunc<mkIOKey(SetAdvance)>(loc, builder); in genIOOption()
1026 ioFunc = getIORuntimeFunc<mkIOKey(SetBlank)>(loc, builder); in genIOOption()
1029 ioFunc = getIORuntimeFunc<mkIOKey(SetDecimal)>(loc, builder); in genIOOption()
1032 ioFunc = getIORuntimeFunc<mkIOKey(SetDelim)>(loc, builder); in genIOOption()
1035 ioFunc = getIORuntimeFunc<mkIOKey(SetPad)>(loc, builder); in genIOOption()
1038 ioFunc = getIORuntimeFunc<mkIOKey(SetRound)>(loc, builder); in genIOOption()
1041 ioFunc = getIORuntimeFunc<mkIOKey(SetSign)>(loc, builder); in genIOOption()
1052 return builder.create<fir::CallOp>(loc, ioFunc, ioArgs).getResult(0); in genIOOption()
1099 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genIOReadSize() local
1101 getIORuntimeFunc<mkIOKey(GetSize)>(loc, builder); in genIOReadSize()
1103 builder.create<fir::CallOp>(loc, ioFunc, mlir::ValueRange{cookie}) in genIOReadSize()
1110 mlir::Value sizeCast = builder.createConvert(loc, varType, sizeValue); in genIOReadSize()
1111 builder.create<fir::StoreOp>(loc, sizeCast, varAddr); in genIOReadSize()
1147 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in threadSpecs() local
1149 makeNextConditionalOn(builder, loc, checkResult, ok); in threadSpecs()
1225 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genConditionHandlerCall() local
1227 getIORuntimeFunc<mkIOKey(EnableHandlers)>(loc, builder); in genConditionHandlerCall()
1230 return builder.create<mlir::arith::ConstantOp>( in genConditionHandlerCall()
1231 loc, builder.getIntegerAttr(boolType, specifierIsPresent)); in genConditionHandlerCall()
1239 builder.create<fir::CallOp>(loc, enableHandlers, ioArgs); in genConditionHandlerCall()
1395 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in lowerReferenceAsStringSelect() local
1396 mlir::Block *startBlock = builder.getBlock(); in lowerReferenceAsStringSelect()
1397 mlir::Block *endBlock = startBlock->splitBlock(builder.getInsertionPoint()); in lowerReferenceAsStringSelect()
1398 mlir::Block *block = startBlock->splitBlock(builder.getInsertionPoint()); in lowerReferenceAsStringSelect()
1399 builder.setInsertionPointToEnd(block); in lowerReferenceAsStringSelect()
1428 stringRef = builder.createConvert( in lowerReferenceAsStringSelect()
1430 builder.createIntegerConstant(loc, builder.getIndexType(), 0)); in lowerReferenceAsStringSelect()
1431 stringLen = builder.createIntegerConstant(loc, lenTy, 0); in lowerReferenceAsStringSelect()
1437 builder.create<mlir::cf::BranchOp>(loc, endBlock, args); in lowerReferenceAsStringSelect()
1441 block = block->splitBlock(builder.getInsertionPoint()); in lowerReferenceAsStringSelect()
1442 builder.setInsertionPointToEnd(block); in lowerReferenceAsStringSelect()
1446 auto *unitBlock = block->splitBlock(builder.getInsertionPoint()); in lowerReferenceAsStringSelect()
1447 builder.setInsertionPointToEnd(unitBlock); in lowerReferenceAsStringSelect()
1450 builder.create<fir::UnreachableOp>(loc); in lowerReferenceAsStringSelect()
1456 builder.setInsertionPointToEnd(startBlock); in lowerReferenceAsStringSelect()
1458 builder.create<fir::SelectOp>(loc, label, indexList, blockList); in lowerReferenceAsStringSelect()
1460 builder.setInsertionPointToEnd(endBlock); in lowerReferenceAsStringSelect()
1549 auto &builder = converter.getFirOpBuilder(); in genIOUnitNumber() local
1560 ? getIORuntimeFunc<mkIOKey(CheckUnitNumberInRange64)>(loc, builder) in genIOUnitNumber()
1562 builder); in genIOUnitNumber()
1565 args.push_back(builder.createConvert(loc, funcTy.getInput(0), rawUnit)); in genIOUnitNumber()
1566 args.push_back(builder.createBool(loc, csi.hasErrorConditionSpec())); in genIOUnitNumber()
1568 args.push_back(builder.createConvert(loc, funcTy.getInput(2), in genIOUnitNumber()
1570 args.push_back(builder.createConvert(loc, funcTy.getInput(3), in genIOUnitNumber()
1573 args.push_back(builder.createNullConstant(loc, funcTy.getInput(2))); in genIOUnitNumber()
1575 fir::factory::createZeroValue(builder, loc, funcTy.getInput(3))); in genIOUnitNumber()
1581 auto checkCall = builder.create<fir::CallOp>(loc, check, args); in genIOUnitNumber()
1585 mlir::Value zero = fir::factory::createZeroValue(builder, loc, iostatTy); in genIOUnitNumber()
1586 mlir::Value unitIsOK = builder.create<mlir::arith::CmpIOp>( in genIOUnitNumber()
1588 auto ifOp = builder.create<fir::IfOp>(loc, iostatTy, unitIsOK, in genIOUnitNumber()
1590 builder.setInsertionPointToStart(&ifOp.getElseRegion().front()); in genIOUnitNumber()
1591 builder.create<fir::ResultOp>(loc, iostat); in genIOUnitNumber()
1592 builder.setInsertionPointToStart(&ifOp.getThenRegion().front()); in genIOUnitNumber()
1597 return builder.createConvert(loc, ty, rawUnit); in genIOUnitNumber()
1605 auto &builder = converter.getFirOpBuilder(); in genIOUnit() local
1610 return builder.create<mlir::arith::ConstantOp>( in genIOUnit()
1611 loc, builder.getIntegerAttr(ty, Fortran::runtime::io::DefaultUnit)); in genIOUnit()
1630 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genBasicIOStmt() local
1634 mlir::func::FuncOp beginFunc = getIORuntimeFunc<K>(loc, builder); in genBasicIOStmt()
1639 mlir::Value un = builder.createConvert(loc, beginFuncTy.getInput(0), unit); in genBasicIOStmt()
1642 auto call = builder.create<fir::CallOp>(loc, beginFunc, in genBasicIOStmt()
1647 auto insertPt = builder.saveInsertionPoint(); in genBasicIOStmt()
1649 builder.restoreInsertionPoint(insertPt); in genBasicIOStmt()
1686 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genNewunitSpec() local
1688 getIORuntimeFunc<mkIOKey(GetNewUnit)>(loc, builder); in genNewunitSpec()
1691 mlir::Value addr = builder.createConvert( in genNewunitSpec()
1694 auto kind = builder.createIntegerConstant(loc, ioFuncTy.getInput(2), in genNewunitSpec()
1697 return builder.create<fir::CallOp>(loc, ioFunc, ioArgs).getResult(0); in genNewunitSpec()
1705 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genOpenStatement() local
1713 beginFunc = getIORuntimeFunc<mkIOKey(BeginOpenUnit)>(loc, builder); in genOpenStatement()
1724 beginFunc = getIORuntimeFunc<mkIOKey(BeginOpenNewUnit)>(loc, builder); in genOpenStatement()
1730 builder.create<fir::CallOp>(loc, beginFunc, beginArgs).getResult(0); in genOpenStatement()
1733 auto insertPt = builder.saveInsertionPoint(); in genOpenStatement()
1737 builder.restoreInsertionPoint(insertPt); in genOpenStatement()
1750 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genWaitStatement() local
1756 hasId ? getIORuntimeFunc<mkIOKey(BeginWait)>(loc, builder) in genWaitStatement()
1757 : getIORuntimeFunc<mkIOKey(BeginWaitAll)>(loc, builder); in genWaitStatement()
1766 args.push_back(builder.createConvert(loc, beginFuncTy.getInput(1), id)); in genWaitStatement()
1773 auto cookie = builder.create<fir::CallOp>(loc, beginFunc, args).getResult(0); in genWaitStatement()
1794 getBeginDataTransferFunc(mlir::Location loc, fir::FirOpBuilder &builder, in getBeginDataTransferFunc() argument
1803 loc, builder); in getBeginDataTransferFunc()
1805 loc, builder); in getBeginDataTransferFunc()
1809 builder); in getBeginDataTransferFunc()
1811 builder); in getBeginDataTransferFunc()
1814 return getIORuntimeFunc<mkIOKey(BeginExternalListInput)>(loc, builder); in getBeginDataTransferFunc()
1816 builder); in getBeginDataTransferFunc()
1818 return getIORuntimeFunc<mkIOKey(BeginUnformattedInput)>(loc, builder); in getBeginDataTransferFunc()
1825 loc, builder); in getBeginDataTransferFunc()
1827 loc, builder); in getBeginDataTransferFunc()
1831 builder); in getBeginDataTransferFunc()
1833 builder); in getBeginDataTransferFunc()
1836 return getIORuntimeFunc<mkIOKey(BeginExternalListOutput)>(loc, builder); in getBeginDataTransferFunc()
1838 builder); in getBeginDataTransferFunc()
1840 return getIORuntimeFunc<mkIOKey(BeginUnformattedOutput)>(loc, builder); in getBeginDataTransferFunc()
1854 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genBeginDataTransferCallArgs() local
1868 mlir::Value desc = builder.createBox(loc, *descRef); in genBeginDataTransferCallArgs()
1870 builder.createConvert(loc, ioFuncTy.getInput(ioArgs.size()), desc)); in genBeginDataTransferCallArgs()
1880 getDefaultScratch(builder, loc, ioFuncTy.getInput(ioArgs.size()))); in genBeginDataTransferCallArgs()
1882 getDefaultScratchLen(builder, loc, ioFuncTy.getInput(ioArgs.size()))); in genBeginDataTransferCallArgs()
1893 ioArgs.push_back(builder.create<mlir::arith::ConstantOp>( in genBeginDataTransferCallArgs()
1894 loc, builder.getIntegerAttr(ioFuncTy.getInput(ioArgs.size()), in genBeginDataTransferCallArgs()
1908 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genDataTransferStmt() local
1929 loc, builder, isFormatted, isList || isNml, isInternal, in genDataTransferStmt()
1936 builder.create<fir::CallOp>(loc, ioFunc, ioArgs).getResult(0); in genDataTransferStmt()
1938 auto insertPt = builder.saveInsertionPoint(); in genDataTransferStmt()
1950 getIORuntimeFunc<mkIOKey(InputNamelist)>(loc, builder), in genDataTransferStmt()
1959 getIORuntimeFunc<mkIOKey(OutputNamelist)>(loc, builder), in genDataTransferStmt()
1973 builder.restoreInsertionPoint(insertPt); in genDataTransferStmt()
2040 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genInquireSpec() local
2042 getIORuntimeFunc<mkIOKey(InquireCharacter)>(loc, builder); in genInquireSpec()
2048 builder.createConvert(loc, specFuncTy.getInput(0), cookie), in genInquireSpec()
2049 builder.createIntegerConstant( in genInquireSpec()
2055 builder.createConvert(loc, specFuncTy.getInput(2), fir::getBase(str)), in genInquireSpec()
2056 builder.createConvert(loc, specFuncTy.getInput(3), fir::getLen(str))}; in genInquireSpec()
2057 return builder.create<fir::CallOp>(loc, specFunc, args).getResult(0); in genInquireSpec()
2070 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genInquireSpec() local
2072 getIORuntimeFunc<mkIOKey(InquireInteger64)>(loc, builder); in genInquireSpec()
2082 mlir::IndexType idxTy = builder.getIndexType(); in genInquireSpec()
2083 mlir::Value kind = builder.createIntegerConstant(loc, idxTy, width / 8); in genInquireSpec()
2085 builder.createConvert(loc, specFuncTy.getInput(0), cookie), in genInquireSpec()
2086 builder.createIntegerConstant( in genInquireSpec()
2092 builder.createConvert(loc, specFuncTy.getInput(2), addr), in genInquireSpec()
2093 builder.createConvert(loc, specFuncTy.getInput(3), kind)}; in genInquireSpec()
2094 return builder.create<fir::CallOp>(loc, specFunc, args).getResult(0); in genInquireSpec()
2103 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genInquireSpec() local
2109 pendId ? getIORuntimeFunc<mkIOKey(InquirePendingId)>(loc, builder) in genInquireSpec()
2110 : getIORuntimeFunc<mkIOKey(InquireLogical)>(loc, builder); in genInquireSpec()
2119 builder.createConvert(loc, specFuncTy.getInput(0), cookie)}; in genInquireSpec()
2121 args.push_back(builder.createConvert(loc, specFuncTy.getInput(1), idExpr)); in genInquireSpec()
2123 args.push_back(builder.createIntegerConstant( in genInquireSpec()
2128 args.push_back(builder.createConvert(loc, specFuncTy.getInput(2), addr)); in genInquireSpec()
2129 auto call = builder.create<fir::CallOp>(loc, specFunc, args); in genInquireSpec()
2130 boolRefToLogical(loc, builder, addr); in genInquireSpec()
2159 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in threadInquire() local
2162 makeNextConditionalOn(builder, loc, checkResult, ok); in threadInquire()
2174 fir::FirOpBuilder &builder = converter.getFirOpBuilder(); in genInquireStatement() local
2195 beginFunc = getIORuntimeFunc<mkIOKey(BeginInquireUnit)>(loc, builder); in genInquireStatement()
2203 beginFunc = getIORuntimeFunc<mkIOKey(BeginInquireFile)>(loc, builder); in genInquireStatement()
2208 builder.createConvert(loc, beginFuncTy.getInput(0), fir::getBase(file)), in genInquireStatement()
2209 builder.createConvert(loc, beginFuncTy.getInput(1), fir::getLen(file)), in genInquireStatement()
2217 beginFunc = getIORuntimeFunc<mkIOKey(BeginInquireIoLength)>(loc, builder); in genInquireStatement()
2222 builder.create<fir::CallOp>(loc, beginFunc, beginArgs).getResult(0); in genInquireStatement()
2234 builder in genInquireStatement()
2236 loc, getIORuntimeFunc<mkIOKey(GetIoLength)>(loc, builder), args) in genInquireStatement()
2239 builder.createConvert(loc, converter.genType(*ioLengthVar), length); in genInquireStatement()
2240 builder.create<fir::StoreOp>(loc, length1, ioLengthVarAddr); in genInquireStatement()
2247 builder.create<fir::CallOp>(loc, beginFunc, beginArgs).getResult(0); in genInquireStatement()
2251 auto insertPt = builder.saveInsertionPoint(); in genInquireStatement()
2254 builder.restoreInsertionPoint(insertPt); in genInquireStatement()