Lines Matching defs:builder

117   InlinedTempStrategyImpl(mlir::Location loc, fir::FirOpBuilder &builder,
124 loc, builder, declaredType,
135 mlir::Value startImpliedDo(mlir::Location loc, fir::FirOpBuilder &builder,
140 auto loop = builder.create<fir::DoLoopOp>(loc, lower, upper, stride,
143 builder.setInsertionPointToStart(loop.getBody());
150 fir::FirOpBuilder &builder) {
151 return moveStackAsArrayExpr(loc, builder);
191 AsElementalStrategy(mlir::Location loc, fir::FirOpBuilder &builder,
196 : StrategyBase{stmtCtx, symMap}, shape{builder.genShape(loc, {extent})},
210 mlir::Value startImpliedDo(mlir::Location loc, fir::FirOpBuilder &builder,
215 builder.createIntegerConstant(loc, builder.getIndexType(), 1);
216 elementalOp = builder.create<hlfir::ElementalOp>(
219 builder.setInsertionPointToStart(elementalOp.getBody());
221 mlir::Value diff = builder.create<mlir::arith::SubIOp>(
223 mlir::Value mul = builder.create<mlir::arith::MulIOp>(loc, diff, stride);
224 mlir::Value add = builder.create<mlir::arith::AddIOp>(loc, lower, mul);
229 void pushValue(mlir::Location loc, fir::FirOpBuilder &builder,
236 builder.createConvert(loc, exprType.getElementType(), elementResult);
263 builder.create<hlfir::YieldElementOp>(loc, elementResult);
272 fir::FirOpBuilder &builder) {
300 RuntimeTempStrategy(mlir::Location loc, fir::FirOpBuilder &builder,
311 allocatableTemp = builder.createTemporary(loc, boxType, tempName);
315 mlir::Value tempStorage = builder.createHeapTemporary(
317 mlir::Value shape = builder.genShape(loc, extents);
318 declare = builder.create<hlfir::DeclareOp>(
322 builder.createBox(loc, boxType, declare->getOriginalBase(), shape,
335 extent = builder.createIntegerConstant(loc, builder.getIndexType(), 0);
338 emboxLengths.push_back(builder.createIntegerConstant(
339 loc, builder.getCharacterLengthType(), 0));
344 mlir::Value nullAddr = builder.createNullConstant(loc, heapType);
345 mlir::Value shape = builder.genShape(loc, {*extent});
346 initialBoxValue = builder.createBox(loc, boxType, nullAddr, shape,
350 builder.create<fir::StoreOp>(loc, initialBoxValue, allocatableTemp);
352 loc, builder, allocatableTemp,
353 builder.createBool(loc, missingLengthParameters));
365 void pushValue(mlir::Location loc, fir::FirOpBuilder &builder,
369 loc, builder, value, arrayConstructorElementType);
372 addr = builder.create<fir::BoxAddrOp>(loc, addr);
374 loc, builder, arrayConstructorVector, addr);
380 hlfir::convertToBox(loc, builder, value, arrayConstructorElementType);
382 loc, builder, arrayConstructorVector, fir::getBase(boxExv));
389 mlir::Value startImpliedDo(mlir::Location loc, fir::FirOpBuilder &builder,
392 auto loop = builder.create<fir::DoLoopOp>(loc, lower, upper, stride,
395 builder.setInsertionPointToStart(loop.getBody());
402 fir::FirOpBuilder &builder) {
405 mlir::Value mustFree = builder.createBool(loc, true);
411 loc, builder, hlfir::Entity{allocatableTemp});
412 auto hlfirExpr = builder.create<hlfir::AsExprOp>(loc, temp, mustFree);
437 void pushValue(mlir::Location loc, fir::FirOpBuilder &builder,
440 [&](auto &impl) { return impl.pushValue(loc, builder, value); },
444 mlir::Value startImpliedDo(mlir::Location loc, fir::FirOpBuilder &builder,
449 return impl.startImpliedDo(loc, builder, lower, upper, stride);
455 fir::FirOpBuilder &builder) {
457 [&](auto &impl) { return impl.finishArrayCtorLowering(loc, builder); },
494 fir::FirOpBuilder &builder = converter.getFirOpBuilder();
495 mlir::IndexType idxTy = builder.getIndexType();
498 value = hlfir::loadTrivialScalar(loc, builder, value);
499 return builder.createConvert(loc, idxTy, value);
667 fir::FirOpBuilder &builder = converter.getFirOpBuilder();
668 mlir::Type idxType = builder.getIndexType();
678 extent = builder.createIntegerConstant(loc, idxType, typeExtent);
707 loc, builder, stmtCtx, symMap, declaredType,
715 return AsElementalStrategy(loc, builder, stmtCtx, symMap, declaredType,
719 return InlinedTempStrategy(loc, builder, stmtCtx, symMap, declaredType,
722 return LooplessInlinedTempStrategy(loc, builder, stmtCtx, symMap,
736 fir::FirOpBuilder &builder = converter.getFirOpBuilder();
739 value = hlfir::loadTrivialScalar(loc, builder, value);
740 arrayBuilder.pushValue(loc, builder, value);
759 fir::FirOpBuilder &builder = converter.getFirOpBuilder();
760 mlir::OpBuilder::InsertPoint insertPt = builder.saveInsertionPoint();
762 arrayBuilder.startImpliedDo(loc, builder, lower, upper, stride);
774 builder.restoreInsertionPoint(insertPt);
783 fir::FirOpBuilder &builder = converter.getFirOpBuilder();
794 hlfir::Entity hlfirExpr = arrayBuilder.finishArrayCtorLowering(loc, builder);
796 fir::FirOpBuilder *bldr = &builder;