Lines Matching refs:builder

110   auto len = builder.createIntegerConstant(  in materializeValue()
111 loc, builder.getCharacterLengthType(), charTy.getLen()); in materializeValue()
112 auto temp = builder.create<fir::AllocaOp>(loc, charTy); in materializeValue()
113 builder.create<fir::StoreOp>(loc, str, temp); in materializeValue()
122 auto lenType = builder.getCharacterLengthType(); in toExtendedValue()
133 auto indexType = builder.getIndexType(); in toExtendedValue()
138 builder.createIntegerConstant(loc, indexType, extent)); in toExtendedValue()
149 resultLen = builder.createIntegerConstant(loc, lenType, charTy.getLen()); in toExtendedValue()
151 auto refType = builder.getRefType(boxCharType.getEleTy()); in toExtendedValue()
163 builder.create<fir::UnboxCharOp>(loc, refType, lenType, character); in toExtendedValue()
164 base = builder.createConvert(loc, refType, unboxed.getResult(0)); in toExtendedValue()
201 fir::BoxCharType::get(builder.getContext(), charTy.getFKind()); in createEmbox()
207 auto temp = builder.createTemporary(loc, buff.getType()); in createEmbox()
208 builder.create<fir::StoreOp>(loc, buff, temp); in createEmbox()
211 buff = builder.createConvert(loc, refType, buff); in createEmbox()
214 auto len = builder.createConvert(loc, builder.getCharacterLengthType(), in createEmbox()
216 return builder.create<fir::EmboxCharOp>(loc, boxCharType, buff, len); in createEmbox()
226 auto lenType = builder.getCharacterLengthType(); in toScalarCharacter()
227 auto len = builder.createConvert(loc, lenType, box.getLen()); in toScalarCharacter()
229 len = builder.create<mlir::arith::MulIOp>( in toScalarCharacter()
230 loc, len, builder.createConvert(loc, lenType, extent)); in toScalarCharacter()
236 auto charTy = fir::CharacterType::get(builder.getContext(), kind, typeLen); in toScalarCharacter()
238 auto buffer = builder.createConvert(loc, type, box.getBuffer()); in toScalarCharacter()
264 auto singleTy = getSingletonCharType(builder.getContext(), charTy.getFKind()); in createElementAddr()
265 auto singleRefTy = builder.getRefType(singleTy); in createElementAddr()
269 auto coorTy = builder.getRefType(fir::SequenceType::get({extent}, singleTy)); in createElementAddr()
271 auto coor = builder.createConvert(loc, coorTy, buffer); in createElementAddr()
272 auto i = builder.createConvert(loc, builder.getIndexType(), index); in createElementAddr()
273 return builder.create<fir::CoordinateOp>(loc, singleRefTy, coor, i); in createElementAddr()
283 return builder.create<fir::LoadOp>(loc, createElementAddr(buff, index)); in createLoadCharAt()
295 builder.create<fir::StoreOp>(loc, c, addr); in createStoreCharAt()
307 auto newBuff = builder.create<fir::AllocaOp>(loc, buff.getType()); in getCharBoxBuffer()
308 builder.create<fir::StoreOp>(loc, buff, newBuff); in getCharBoxBuffer()
328 auto bytes = builder.getKindMap().getCharacterBitsize(kind) / 8; in createCopy()
329 auto i64Ty = builder.getI64Type(); in createCopy()
330 auto kindBytes = builder.createIntegerConstant(loc, i64Ty, bytes); in createCopy()
331 auto castCount = builder.createConvert(loc, i64Ty, count); in createCopy()
333 builder.create<mlir::arith::MulIOp>(loc, kindBytes, castCount); in createCopy()
334 auto notVolatile = builder.createBool(loc, false); in createCopy()
335 auto memmv = getLlvmMemmove(builder); in createCopy()
337 auto toPtr = builder.createConvert(loc, argTys[0], toBuff); in createCopy()
338 auto fromPtr = builder.createConvert(loc, argTys[1], fromBuff); in createCopy()
339 builder.create<fir::CallOp>( in createCopy()
345 builder.create<fir::CharConvertOp>(loc, src.getBuffer(), count, in createCopy()
355 fir::factory::DoLoopHelper{builder, loc}.createLoop( in createPadding()
369 auto *ctxt = builder.getContext(); in createCharacterTemp()
374 auto ref = builder.allocateLocal(loc, charTy, "", ".chrtmp", in createCharacterTemp()
390 auto ref = builder.createConvert(loc, builder.getRefType(sourceTy), in createTempFrom()
392 builder.create<fir::StoreOp>(loc, charBox->getBuffer(), ref); in createTempFrom()
404 val = builder.create<fir::LoadOp>(loc, val); in createLengthOneAssign()
405 val = builder.createConvert(loc, toTy, val); in createLengthOneAssign()
406 builder.create<fir::StoreOp>(loc, val, addr); in createLengthOneAssign()
410 mlir::Value genMin(fir::FirOpBuilder &builder, mlir::Location loc, in genMin() argument
412 auto cmp = builder.create<mlir::arith::CmpIOp>( in genMin()
414 return builder.create<mlir::arith::SelectOp>(loc, cmp, a, b); in genMin()
432 auto idxTy = builder.getIndexType(); in createAssign()
434 auto lhsLen = builder.createConvert(loc, idxTy, lhs.getLen()); in createAssign()
435 auto rhsLen = builder.createConvert(loc, idxTy, rhs.getLen()); in createAssign()
436 copyCount = genMin(builder, loc, lhsLen, rhsLen); in createAssign()
444 auto one = builder.createIntegerConstant(loc, lhs.getLen().getType(), 1); in createAssign()
446 builder.create<mlir::arith::SubIOp>(loc, lhs.getLen(), one); in createAssign()
453 auto lhsLen = builder.createConvert(loc, builder.getCharacterLengthType(), in createConcatenate()
455 auto rhsLen = builder.createConvert(loc, builder.getCharacterLengthType(), in createConcatenate()
457 mlir::Value len = builder.create<mlir::arith::AddIOp>(loc, lhsLen, rhsLen); in createConcatenate()
460 auto one = builder.createIntegerConstant(loc, len.getType(), 1); in createConcatenate()
461 auto upperBound = builder.create<mlir::arith::SubIOp>(loc, len, one); in createConcatenate()
462 auto lhsLenIdx = builder.createConvert(loc, builder.getIndexType(), lhsLen); in createConcatenate()
465 fir::factory::DoLoopHelper{builder, loc}.createLoop( in createConcatenate()
487 builder.createConvert(loc, builder.getCharacterLengthType(), bound)); in createSubstring()
490 auto one = builder.createIntegerConstant(loc, lowerBound.getType(), 1); in createSubstring()
492 builder.create<mlir::arith::SubIOp>(loc, lowerBound, one).getResult(); in createSubstring()
495 auto charTy = fir::CharacterType::getUnknownLen(builder.getContext(), kind); in createSubstring()
496 auto resultType = builder.getRefType(charTy); in createSubstring()
497 auto substringRef = builder.createConvert(loc, resultType, addr); in createSubstring()
503 builder.create<mlir::arith::SubIOp>(loc, box.getLen(), castBounds[0]); in createSubstring()
506 builder.create<mlir::arith::SubIOp>(loc, castBounds[1], castBounds[0]); in createSubstring()
508 substringLen = builder.create<mlir::arith::AddIOp>(loc, substringLen, one); in createSubstring()
511 auto zero = builder.createIntegerConstant(loc, substringLen.getType(), 0); in createSubstring()
512 auto cdt = builder.create<mlir::arith::CmpIOp>( in createSubstring()
515 builder.create<mlir::arith::SelectOp>(loc, cdt, zero, substringLen); in createSubstring()
524 auto indexType = builder.getIndexType(); in createLenTrim()
525 auto len = builder.createConvert(loc, indexType, str.getLen()); in createLenTrim()
526 auto one = builder.createIntegerConstant(loc, indexType, 1); in createLenTrim()
527 auto minusOne = builder.createIntegerConstant(loc, indexType, -1); in createLenTrim()
528 auto zero = builder.createIntegerConstant(loc, indexType, 0); in createLenTrim()
529 auto trueVal = builder.createIntegerConstant(loc, builder.getI1Type(), 1); in createLenTrim()
531 mlir::Value lastChar = builder.create<mlir::arith::SubIOp>(loc, len, one); in createLenTrim()
534 builder.create<fir::IterWhileOp>(loc, lastChar, zero, minusOne, trueVal, in createLenTrim()
536 auto insPt = builder.saveInsertionPoint(); in createLenTrim()
537 builder.setInsertionPointToStart(iterWhile.getBody()); in createLenTrim()
543 builder.createConvert(loc, builder.getRefType(blank.getType()), elemAddr); in createLenTrim()
544 auto c = builder.create<fir::LoadOp>(loc, codeAddr); in createLenTrim()
545 auto isBlank = builder.create<mlir::arith::CmpIOp>( in createLenTrim()
548 builder.create<fir::ResultOp>(loc, results); in createLenTrim()
549 builder.restoreInsertionPoint(insPt); in createLenTrim()
552 builder.create<mlir::arith::AddIOp>(loc, iterWhile.getResult(1), one); in createLenTrim()
553 auto result = builder.create<mlir::arith::SelectOp>( in createLenTrim()
555 return builder.createConvert(loc, builder.getCharacterLengthType(), result); in createLenTrim()
563 auto charType = fir::CharacterType::get(builder.getContext(), kind, len); in createCharacterTemp()
564 auto addr = builder.create<fir::AllocaOp>(loc, charType); in createCharacterTemp()
566 builder.createIntegerConstant(loc, builder.getCharacterLengthType(), len); in createCharacterTemp()
574 auto bits = builder.getKindMap().getCharacterBitsize(type.getFKind()); in createBlankConstantCode()
575 auto intType = builder.getIntegerType(bits); in createBlankConstantCode()
576 return builder.createIntegerConstant(loc, intType, ' '); in createBlankConstantCode()
644 auto charType = fir::CharacterType::get(builder.getContext(), kind, 1); in createSingletonFromCode()
645 auto bits = builder.getKindMap().getCharacterBitsize(kind); in createSingletonFromCode()
646 auto intType = builder.getIntegerType(bits); in createSingletonFromCode()
647 auto cast = builder.createConvert(loc, intType, code); in createSingletonFromCode()
648 auto undef = builder.create<fir::UndefOp>(loc, charType); in createSingletonFromCode()
649 auto zero = builder.getIntegerAttr(builder.getIndexType(), 0); in createSingletonFromCode()
650 return builder.create<fir::InsertValueOp>(loc, charType, undef, cast, in createSingletonFromCode()
651 builder.getArrayAttr(zero)); in createSingletonFromCode()
658 auto bits = builder.getKindMap().getCharacterBitsize(type.getFKind()); in extractCodeFromSingleton()
659 auto intType = builder.getIntegerType(bits); in extractCodeFromSingleton()
660 auto zero = builder.getIntegerAttr(builder.getIndexType(), 0); in extractCodeFromSingleton()
661 return builder.create<fir::ExtractValueOp>(loc, intType, singleton, in extractCodeFromSingleton()
662 builder.getArrayAttr(zero)); in extractCodeFromSingleton()
667 auto lenTy = builder.getCharacterLengthType(); in readLengthFromBox()
668 auto size = builder.create<fir::BoxEleSizeOp>(loc, lenTy, box); in readLengthFromBox()
670 auto bits = builder.getKindMap().getCharacterBitsize(charTy.getFKind()); in readLengthFromBox()
673 auto widthVal = builder.createIntegerConstant(loc, lenTy, width); in readLengthFromBox()
674 return builder.create<mlir::arith::DivSIOp>(loc, size, widthVal); in readLengthFromBox()
684 return builder.createIntegerConstant(loc, builder.getCharacterLengthType(), in getLength()
696 fir::factory::extractCharacterProcedureTuple(fir::FirOpBuilder &builder, in extractCharacterProcedureTuple() argument
700 mlir::Value addr = builder.create<fir::ExtractValueOp>( in extractCharacterProcedureTuple()
702 builder.getArrayAttr( in extractCharacterProcedureTuple()
703 {builder.getIntegerAttr(builder.getIndexType(), 0)})); in extractCharacterProcedureTuple()
706 return builder.create<fir::BoxAddrOp>(loc, addrTy.getEleTy(), addr); in extractCharacterProcedureTuple()
709 mlir::Value len = builder.create<fir::ExtractValueOp>( in extractCharacterProcedureTuple()
711 builder.getArrayAttr( in extractCharacterProcedureTuple()
712 {builder.getIntegerAttr(builder.getIndexType(), 1)})); in extractCharacterProcedureTuple()
717 fir::FirOpBuilder &builder, mlir::Location loc, mlir::Type argTy, in createCharacterProcedureTuple() argument
720 addr = builder.createConvert(loc, tupleType.getType(0), addr); in createCharacterProcedureTuple()
722 len = builder.createConvert(loc, tupleType.getType(1), len); in createCharacterProcedureTuple()
724 len = builder.create<fir::UndefOp>(loc, tupleType.getType(1)); in createCharacterProcedureTuple()
725 mlir::Value tuple = builder.create<fir::UndefOp>(loc, tupleType); in createCharacterProcedureTuple()
726 tuple = builder.create<fir::InsertValueOp>( in createCharacterProcedureTuple()
728 builder.getArrayAttr( in createCharacterProcedureTuple()
729 {builder.getIntegerAttr(builder.getIndexType(), 0)})); in createCharacterProcedureTuple()
730 tuple = builder.create<fir::InsertValueOp>( in createCharacterProcedureTuple()
732 builder.getArrayAttr( in createCharacterProcedureTuple()
733 {builder.getIntegerAttr(builder.getIndexType(), 1)})); in createCharacterProcedureTuple()