Lines Matching defs:builder

39                                       OpBuilder &builder) {
40 return builder.create<LLVM::UndefOp>(getLoc(), slot.elemType);
45 OpBuilder &builder) {
48 builder.create<LLVM::DbgValueOp>(declareOp.getLoc(), argument,
56 OpBuilder &builder) {
82 const SmallPtrSetImpl<Attribute> &usedIndices, OpBuilder &builder,
85 builder.setInsertionPointAfter(*this);
92 auto subAlloca = builder.create<LLVM::AllocaOp>(
104 const DestructurableMemorySlot &slot, OpBuilder &builder) {
120 Value LLVM::LoadOp::getStored(const MemorySlot &slot, OpBuilder &builder,
183 static Value castToSameSizedInt(OpBuilder &builder, Location loc, Value val,
193 IntegerType valueSizeInteger = builder.getIntegerType(typeBitSize);
196 return builder.createOrFold<LLVM::PtrToIntOp>(loc, valueSizeInteger, val);
197 return builder.createOrFold<LLVM::BitcastOp>(loc, valueSizeInteger, val);
201 static Value castIntValueToSameSizedType(OpBuilder &builder, Location loc,
210 return builder.createOrFold<LLVM::IntToPtrOp>(loc, targetType, val);
211 return builder.createOrFold<LLVM::BitcastOp>(loc, targetType, val);
216 static Value castSameSizedTypes(OpBuilder &builder, Location loc,
234 return builder.createOrFold<LLVM::AddrSpaceCastOp>(loc, targetType,
238 Value replacement = castToSameSizedInt(builder, loc, srcValue, dataLayout);
239 return castIntValueToSameSizedType(builder, loc, replacement, targetType);
245 static Value createExtractAndCast(OpBuilder &builder, Location loc,
257 return castSameSizedTypes(builder, loc, srcValue, targetType, dataLayout);
260 Value replacement = castToSameSizedInt(builder, loc, srcValue, dataLayout);
265 auto shiftConstant = builder.create<LLVM::ConstantOp>(
266 loc, builder.getIntegerAttr(srcType, shiftAmount));
268 builder.createOrFold<LLVM::LShrOp>(loc, srcValue, shiftConstant);
271 replacement = builder.create<LLVM::TruncOp>(
272 loc, builder.getIntegerType(targetTypeSize), replacement);
275 return castIntValueToSameSizedType(builder, loc, replacement, targetType);
281 static Value createInsertAndCast(OpBuilder &builder, Location loc,
292 return castSameSizedTypes(builder, loc, srcValue, reachingDef.getType(),
299 Value defAsInt = castToSameSizedInt(builder, loc, reachingDef, dataLayout);
300 Value valueAsInt = castToSameSizedInt(builder, loc, srcValue, dataLayout);
303 builder.createOrFold<LLVM::ZExtOp>(loc, defAsInt.getType(), valueAsInt);
309 Value bigEndianShift = builder.create<LLVM::ConstantOp>(
310 loc, builder.getIntegerAttr(defAsInt.getType(), sizeDifference));
312 builder.createOrFold<LLVM::ShlOp>(loc, valueAsInt, bigEndianShift);
330 Value mask = builder.create<LLVM::ConstantOp>(
331 loc, builder.getIntegerAttr(defAsInt.getType(), maskValue));
332 Value masked = builder.createOrFold<LLVM::AndOp>(loc, defAsInt, mask);
335 Value combined = builder.createOrFold<LLVM::OrOp>(loc, masked, valueAsInt);
337 return castIntValueToSameSizedType(builder, loc, combined,
341 Value LLVM::StoreOp::getStored(const MemorySlot &slot, OpBuilder &builder,
346 return createInsertAndCast(builder, getLoc(), getValue(), reachingDef,
368 OpBuilder &builder, Value reachingDefinition,
372 Value newResult = createExtractAndCast(builder, getLoc(), reachingDefinition,
398 OpBuilder &builder, Value reachingDefinition,
460 OpBuilder &builder,
498 OpBuilder &builder,
529 const SmallPtrSetImpl<OpOperand *> &blockingUses, OpBuilder &builder) {
541 const SmallPtrSetImpl<OpOperand *> &blockingUses, OpBuilder &builder) {
553 const SmallPtrSetImpl<OpOperand *> &blockingUses, OpBuilder &builder) {
565 const SmallPtrSetImpl<OpOperand *> &blockingUses, OpBuilder &builder) {
577 const SmallPtrSetImpl<OpOperand *> &blockingUses, OpBuilder &builder) {
589 const SmallPtrSetImpl<OpOperand *> &blockingUses, OpBuilder &builder) {
601 const SmallPtrSetImpl<OpOperand *> &blockingUses, OpBuilder &builder) {
613 const SmallPtrSetImpl<OpOperand *> &blockingUses, OpBuilder &builder) {
625 const SmallPtrSetImpl<OpOperand *> &blockingUses, OpBuilder &builder) {
641 const SmallPtrSetImpl<OpOperand *> &blockingUses, OpBuilder &builder) {
642 // builder by default is after '*this', but we need it before '*this'.
643 builder.setInsertionPoint(*this);
649 builder.create<UndefOp>(getValue().getLoc(), getValue().getType());
657 ArrayRef<std::pair<Operation *, Value>> definitions, OpBuilder &builder) {
659 builder.setInsertionPointAfter(op);
660 builder.create<LLVM::DbgValueOp>(getLoc(), value, getVarInfo(),
687 const SmallPtrSetImpl<OpOperand *> &blockingUses, OpBuilder &builder) {
884 OpBuilder &builder,
893 auto byteType = IntegerType::get(builder.getContext(), 8);
894 auto newPtr = builder.createOrFold<LLVM::GEPOp>(
966 void createMemsetIntr(OpBuilder &builder, MemsetIntr toReplace,
972 void createMemsetIntr(OpBuilder &builder, LLVM::MemsetOp toReplace,
977 builder
983 builder.create<LLVM::MemsetOp>(toReplace.getLoc(), subslots.at(index).ptr,
989 void createMemsetIntr(OpBuilder &builder, LLVM::MemsetInlineOp toReplace,
996 builder.create<LLVM::MemsetInlineOp>(
1053 OpBuilder &builder) {
1066 builder.create<LLVM::ZExtOp>(op.getLoc(), intType, op.getVal());
1068 Value shiftBy = builder.create<LLVM::ConstantOp>(op.getLoc(), intType,
1071 builder.create<LLVM::ShlOp>(op.getLoc(), currentValue, shiftBy);
1073 builder.create<LLVM::OrOp>(op.getLoc(), currentValue, shifted);
1110 DenseMap<Attribute, MemorySlot> &subslots, OpBuilder &builder,
1142 createMemsetIntr(builder, op, memsetLenAttr, newMemsetSize, subslots,
1158 Value LLVM::MemsetOp::getStored(const MemorySlot &slot, OpBuilder &builder,
1161 return memsetGetStored(*this, slot, builder);
1174 OpBuilder &builder, Value reachingDefinition,
1195 OpBuilder &builder,
1197 return memsetRewire(*this, slot, subslots, builder, dataLayout);
1207 OpBuilder &builder, Value reachingDef,
1209 return memsetGetStored(*this, slot, builder);
1222 OpBuilder &builder, Value reachingDefinition,
1245 OpBuilder &builder, const DataLayout &dataLayout) {
1246 return memsetRewire(*this, slot, subslots, builder, dataLayout);
1265 OpBuilder &builder) {
1266 return builder.create<LLVM::LoadOp>(op.getLoc(), slot.elemType, op.getSrc());
1291 OpBuilder &builder, Value reachingDefinition) {
1293 builder.create<LLVM::StoreOp>(op.getLoc(), reachingDefinition, op.getDst());
1336 void createMemcpyLikeToReplace(OpBuilder &builder, const DataLayout &layout,
1339 Value memcpySize = builder.create<LLVM::ConstantOp>(
1342 builder.create<MemcpyLike>(toReplace.getLoc(), dst, src, memcpySize,
1347 void createMemcpyLikeToReplace(OpBuilder &builder, const DataLayout &layout,
1352 builder.create<LLVM::MemcpyInlineOp>(
1364 DenseMap<Attribute, MemorySlot> &subslots, OpBuilder &builder,
1394 Value subslotPtrInOther = builder.create<LLVM::GEPOp>(
1399 createMemcpyLikeToReplace(builder, dataLayout, op,
1418 Value LLVM::MemcpyOp::getStored(const MemorySlot &slot, OpBuilder &builder,
1421 return memcpyGetStored(*this, slot, builder);
1434 OpBuilder &builder, Value reachingDefinition,
1436 return memcpyRemoveBlockingUses(*this, slot, blockingUses, builder,
1456 OpBuilder &builder,
1458 return memcpyRewire(*this, slot, subslots, builder, dataLayout);
1470 OpBuilder &builder, Value reachingDef,
1472 return memcpyGetStored(*this, slot, builder);
1485 OpBuilder &builder, Value reachingDefinition,
1487 return memcpyRemoveBlockingUses(*this, slot, blockingUses, builder,
1509 OpBuilder &builder, const DataLayout &dataLayout) {
1510 return memcpyRewire(*this, slot, subslots, builder, dataLayout);
1521 Value LLVM::MemmoveOp::getStored(const MemorySlot &slot, OpBuilder &builder,
1524 return memcpyGetStored(*this, slot, builder);
1537 OpBuilder &builder, Value reachingDefinition,
1539 return memcpyRemoveBlockingUses(*this, slot, blockingUses, builder,
1559 OpBuilder &builder,
1561 return memcpyRewire(*this, slot, subslots, builder, dataLayout);