Lines Matching refs:builder

32 MemRefDescriptor MemRefDescriptor::undef(OpBuilder &builder, Location loc,  in undef()  argument
35 Value descriptor = builder.create<LLVM::UndefOp>(loc, descriptorType); in undef()
43 MemRefDescriptor::fromStaticShape(OpBuilder &builder, Location loc, in fromStaticShape() argument
62 auto descr = MemRefDescriptor::undef(builder, loc, convertedType); in fromStaticShape()
63 descr.setAllocatedPtr(builder, loc, memory); in fromStaticShape()
64 descr.setAlignedPtr(builder, loc, memory); in fromStaticShape()
65 descr.setConstantOffset(builder, loc, offset); in fromStaticShape()
69 descr.setConstantSize(builder, loc, i, type.getDimSize(i)); in fromStaticShape()
70 descr.setConstantStride(builder, loc, i, strides[i]); in fromStaticShape()
76 Value MemRefDescriptor::allocatedPtr(OpBuilder &builder, Location loc) { in allocatedPtr() argument
77 return extractPtr(builder, loc, kAllocatedPtrPosInMemRefDescriptor); in allocatedPtr()
81 void MemRefDescriptor::setAllocatedPtr(OpBuilder &builder, Location loc, in setAllocatedPtr() argument
83 setPtr(builder, loc, kAllocatedPtrPosInMemRefDescriptor, ptr); in setAllocatedPtr()
87 Value MemRefDescriptor::alignedPtr(OpBuilder &builder, Location loc) { in alignedPtr() argument
88 return extractPtr(builder, loc, kAlignedPtrPosInMemRefDescriptor); in alignedPtr()
92 void MemRefDescriptor::setAlignedPtr(OpBuilder &builder, Location loc, in setAlignedPtr() argument
94 setPtr(builder, loc, kAlignedPtrPosInMemRefDescriptor, ptr); in setAlignedPtr()
99 static Value createIndexAttrConstant(OpBuilder &builder, Location loc, in createIndexAttrConstant() argument
101 return builder.create<LLVM::ConstantOp>( in createIndexAttrConstant()
102 loc, resultType, builder.getIntegerAttr(builder.getIndexType(), value)); in createIndexAttrConstant()
106 Value MemRefDescriptor::offset(OpBuilder &builder, Location loc) { in offset() argument
107 return builder.create<LLVM::ExtractValueOp>( in offset()
109 builder.getI64ArrayAttr(kOffsetPosInMemRefDescriptor)); in offset()
113 void MemRefDescriptor::setOffset(OpBuilder &builder, Location loc, in setOffset() argument
115 value = builder.create<LLVM::InsertValueOp>( in setOffset()
117 builder.getI64ArrayAttr(kOffsetPosInMemRefDescriptor)); in setOffset()
121 void MemRefDescriptor::setConstantOffset(OpBuilder &builder, Location loc, in setConstantOffset() argument
123 setOffset(builder, loc, in setConstantOffset()
124 createIndexAttrConstant(builder, loc, indexType, offset)); in setConstantOffset()
128 Value MemRefDescriptor::size(OpBuilder &builder, Location loc, unsigned pos) { in size() argument
129 return builder.create<LLVM::ExtractValueOp>( in size()
131 builder.getI64ArrayAttr({kSizePosInMemRefDescriptor, pos})); in size()
134 Value MemRefDescriptor::size(OpBuilder &builder, Location loc, Value pos, in size() argument
141 auto zero = createIndexAttrConstant(builder, loc, indexType, 0); in size()
142 auto one = createIndexAttrConstant(builder, loc, indexType, 1); in size()
143 auto sizes = builder.create<LLVM::ExtractValueOp>( in size()
145 builder.getI64ArrayAttr({kSizePosInMemRefDescriptor})); in size()
147 builder.create<LLVM::AllocaOp>(loc, arrayPtrTy, one, /*alignment=*/0); in size()
148 builder.create<LLVM::StoreOp>(loc, sizes, sizesPtr); in size()
151 auto resultPtr = builder.create<LLVM::GEPOp>(loc, indexPtrTy, sizesPtr, in size()
153 return builder.create<LLVM::LoadOp>(loc, resultPtr); in size()
157 void MemRefDescriptor::setSize(OpBuilder &builder, Location loc, unsigned pos, in setSize() argument
159 value = builder.create<LLVM::InsertValueOp>( in setSize()
161 builder.getI64ArrayAttr({kSizePosInMemRefDescriptor, pos})); in setSize()
164 void MemRefDescriptor::setConstantSize(OpBuilder &builder, Location loc, in setConstantSize() argument
166 setSize(builder, loc, pos, in setConstantSize()
167 createIndexAttrConstant(builder, loc, indexType, size)); in setConstantSize()
171 Value MemRefDescriptor::stride(OpBuilder &builder, Location loc, unsigned pos) { in stride() argument
172 return builder.create<LLVM::ExtractValueOp>( in stride()
174 builder.getI64ArrayAttr({kStridePosInMemRefDescriptor, pos})); in stride()
178 void MemRefDescriptor::setStride(OpBuilder &builder, Location loc, unsigned pos, in setStride() argument
180 value = builder.create<LLVM::InsertValueOp>( in setStride()
182 builder.getI64ArrayAttr({kStridePosInMemRefDescriptor, pos})); in setStride()
185 void MemRefDescriptor::setConstantStride(OpBuilder &builder, Location loc, in setConstantStride() argument
187 setStride(builder, loc, pos, in setConstantStride()
188 createIndexAttrConstant(builder, loc, indexType, stride)); in setConstantStride()
206 Value MemRefDescriptor::pack(OpBuilder &builder, Location loc, in pack() argument
210 auto d = MemRefDescriptor::undef(builder, loc, llvmType); in pack()
212 d.setAllocatedPtr(builder, loc, values[kAllocatedPtrPosInMemRefDescriptor]); in pack()
213 d.setAlignedPtr(builder, loc, values[kAlignedPtrPosInMemRefDescriptor]); in pack()
214 d.setOffset(builder, loc, values[kOffsetPosInMemRefDescriptor]); in pack()
218 d.setSize(builder, loc, i, values[kSizePosInMemRefDescriptor + i]); in pack()
219 d.setStride(builder, loc, i, values[kSizePosInMemRefDescriptor + rank + i]); in pack()
227 void MemRefDescriptor::unpack(OpBuilder &builder, Location loc, Value packed, in unpack() argument
234 results.push_back(d.allocatedPtr(builder, loc)); in unpack()
235 results.push_back(d.alignedPtr(builder, loc)); in unpack()
236 results.push_back(d.offset(builder, loc)); in unpack()
238 results.push_back(d.size(builder, loc, i)); in unpack()
240 results.push_back(d.stride(builder, loc, i)); in unpack()
286 UnrankedMemRefDescriptor UnrankedMemRefDescriptor::undef(OpBuilder &builder, in undef() argument
289 Value descriptor = builder.create<LLVM::UndefOp>(loc, descriptorType); in undef()
292 Value UnrankedMemRefDescriptor::rank(OpBuilder &builder, Location loc) { in rank() argument
293 return extractPtr(builder, loc, kRankInUnrankedMemRefDescriptor); in rank()
295 void UnrankedMemRefDescriptor::setRank(OpBuilder &builder, Location loc, in setRank() argument
297 setPtr(builder, loc, kRankInUnrankedMemRefDescriptor, v); in setRank()
299 Value UnrankedMemRefDescriptor::memRefDescPtr(OpBuilder &builder, in memRefDescPtr() argument
301 return extractPtr(builder, loc, kPtrInUnrankedMemRefDescriptor); in memRefDescPtr()
303 void UnrankedMemRefDescriptor::setMemRefDescPtr(OpBuilder &builder, in setMemRefDescPtr() argument
305 setPtr(builder, loc, kPtrInUnrankedMemRefDescriptor, v); in setMemRefDescPtr()
312 Value UnrankedMemRefDescriptor::pack(OpBuilder &builder, Location loc, in pack() argument
317 auto d = UnrankedMemRefDescriptor::undef(builder, loc, llvmType); in pack()
319 d.setRank(builder, loc, values[kRankInUnrankedMemRefDescriptor]); in pack()
320 d.setMemRefDescPtr(builder, loc, values[kPtrInUnrankedMemRefDescriptor]); in pack()
326 void UnrankedMemRefDescriptor::unpack(OpBuilder &builder, Location loc, in unpack() argument
331 results.push_back(d.rank(builder, loc)); in unpack()
332 results.push_back(d.memRefDescPtr(builder, loc)); in unpack()
336 OpBuilder &builder, Location loc, LLVMTypeConverter &typeConverter, in computeSizes() argument
345 Value one = createIndexAttrConstant(builder, loc, indexType, 1); in computeSizes()
346 Value two = createIndexAttrConstant(builder, loc, indexType, 2); in computeSizes()
348 builder, loc, indexType, ceilDiv(typeConverter.getPointerBitwidth(), 8)); in computeSizes()
350 createIndexAttrConstant(builder, loc, indexType, in computeSizes()
363 builder.create<LLVM::MulOp>(loc, indexType, two, pointerSize); in computeSizes()
366 Value rank = desc.rank(builder, loc); in computeSizes()
367 Value doubleRank = builder.create<LLVM::MulOp>(loc, indexType, two, rank); in computeSizes()
369 builder.create<LLVM::AddOp>(loc, indexType, doubleRank, one); in computeSizes()
370 Value rankIndexSize = builder.create<LLVM::MulOp>( in computeSizes()
374 Value allocationSize = builder.create<LLVM::AddOp>( in computeSizes()
380 Value UnrankedMemRefDescriptor::allocatedPtr(OpBuilder &builder, Location loc, in allocatedPtr() argument
385 builder.create<LLVM::BitcastOp>(loc, elemPtrPtrType, memRefDescPtr); in allocatedPtr()
386 return builder.create<LLVM::LoadOp>(loc, elementPtrPtr); in allocatedPtr()
389 void UnrankedMemRefDescriptor::setAllocatedPtr(OpBuilder &builder, Location loc, in setAllocatedPtr() argument
394 builder.create<LLVM::BitcastOp>(loc, elemPtrPtrType, memRefDescPtr); in setAllocatedPtr()
395 builder.create<LLVM::StoreOp>(loc, allocatedPtr, elementPtrPtr); in setAllocatedPtr()
398 Value UnrankedMemRefDescriptor::alignedPtr(OpBuilder &builder, Location loc, in alignedPtr() argument
403 builder.create<LLVM::BitcastOp>(loc, elemPtrPtrType, memRefDescPtr); in alignedPtr()
406 createIndexAttrConstant(builder, loc, typeConverter.getIndexType(), 1); in alignedPtr()
407 Value alignedGep = builder.create<LLVM::GEPOp>( in alignedPtr()
409 return builder.create<LLVM::LoadOp>(loc, alignedGep); in alignedPtr()
412 void UnrankedMemRefDescriptor::setAlignedPtr(OpBuilder &builder, Location loc, in setAlignedPtr() argument
418 builder.create<LLVM::BitcastOp>(loc, elemPtrPtrType, memRefDescPtr); in setAlignedPtr()
421 createIndexAttrConstant(builder, loc, typeConverter.getIndexType(), 1); in setAlignedPtr()
422 Value alignedGep = builder.create<LLVM::GEPOp>( in setAlignedPtr()
424 builder.create<LLVM::StoreOp>(loc, alignedPtr, alignedGep); in setAlignedPtr()
427 Value UnrankedMemRefDescriptor::offset(OpBuilder &builder, Location loc, in offset() argument
432 builder.create<LLVM::BitcastOp>(loc, elemPtrPtrType, memRefDescPtr); in offset()
435 createIndexAttrConstant(builder, loc, typeConverter.getIndexType(), 2); in offset()
436 Value offsetGep = builder.create<LLVM::GEPOp>( in offset()
438 offsetGep = builder.create<LLVM::BitcastOp>( in offset()
440 return builder.create<LLVM::LoadOp>(loc, offsetGep); in offset()
443 void UnrankedMemRefDescriptor::setOffset(OpBuilder &builder, Location loc, in setOffset() argument
448 builder.create<LLVM::BitcastOp>(loc, elemPtrPtrType, memRefDescPtr); in setOffset()
451 createIndexAttrConstant(builder, loc, typeConverter.getIndexType(), 2); in setOffset()
452 Value offsetGep = builder.create<LLVM::GEPOp>( in setOffset()
454 offsetGep = builder.create<LLVM::BitcastOp>( in setOffset()
456 builder.create<LLVM::StoreOp>(loc, offset, offsetGep); in setOffset()
460 OpBuilder &builder, Location loc, LLVMTypeConverter &typeConverter, in sizeBasePtr() argument
468 builder.create<LLVM::BitcastOp>(loc, structPtrTy, memRefDescPtr); in sizeBasePtr()
470 Type int32Type = typeConverter.convertType(builder.getI32Type()); in sizeBasePtr()
472 createIndexAttrConstant(builder, loc, typeConverter.getIndexType(), 0); in sizeBasePtr()
473 Value three = builder.create<LLVM::ConstantOp>(loc, int32Type, in sizeBasePtr()
474 builder.getI32IntegerAttr(3)); in sizeBasePtr()
475 return builder.create<LLVM::GEPOp>(loc, LLVM::LLVMPointerType::get(indexTy), in sizeBasePtr()
479 Value UnrankedMemRefDescriptor::size(OpBuilder &builder, Location loc, in size() argument
483 Value sizeStoreGep = builder.create<LLVM::GEPOp>(loc, indexPtrTy, sizeBasePtr, in size()
485 return builder.create<LLVM::LoadOp>(loc, sizeStoreGep); in size()
488 void UnrankedMemRefDescriptor::setSize(OpBuilder &builder, Location loc, in setSize() argument
493 Value sizeStoreGep = builder.create<LLVM::GEPOp>(loc, indexPtrTy, sizeBasePtr, in setSize()
495 builder.create<LLVM::StoreOp>(loc, size, sizeStoreGep); in setSize()
498 Value UnrankedMemRefDescriptor::strideBasePtr(OpBuilder &builder, Location loc, in strideBasePtr() argument
502 return builder.create<LLVM::GEPOp>(loc, indexPtrTy, sizeBasePtr, in strideBasePtr()
506 Value UnrankedMemRefDescriptor::stride(OpBuilder &builder, Location loc, in stride() argument
511 Value strideStoreGep = builder.create<LLVM::GEPOp>( in stride()
513 return builder.create<LLVM::LoadOp>(loc, strideStoreGep); in stride()
516 void UnrankedMemRefDescriptor::setStride(OpBuilder &builder, Location loc, in setStride() argument
521 Value strideStoreGep = builder.create<LLVM::GEPOp>( in setStride()
523 builder.create<LLVM::StoreOp>(loc, stride, strideStoreGep); in setStride()