Lines Matching defs:tensor

61 // For index reduction loops, since the tensor are sliced into non-continuous
66 static Value genSliceOffset(OpBuilder &builder, Location loc, Value tensor,
68 auto enc = getSparseTensorEncoding(tensor.getType());
69 return createOrFoldSliceOffsetOp(builder, loc, tensor, toDim(enc, lvl));
72 static Value genSliceStride(OpBuilder &builder, Location loc, Value tensor,
74 auto enc = getSparseTensorEncoding(tensor.getType());
75 return createOrFoldSliceStrideOp(builder, loc, tensor, toDim(enc, lvl));
97 auto padOp = t.getDefiningOp<tensor::PadOp>();
104 m_Op<tensor::YieldOp>(m_Constant(&padCst))) &&
113 // Sparse tensor loop emitter class implementations
160 // Synthetic tensor (conceptually) is an all-dense tensor with rank equal
204 Value tensor = tensors[t];
205 auto stt = getSparseTensorType(tensor);
208 Value folded = tryFoldTensors(tensor);
209 if (folded != tensor) {
210 auto padOp = tensor.getDefiningOp<tensor::PadOp>();
221 Value offset = genSliceOffset(builder, loc, tensor, l);
222 Value stride = genSliceStride(builder, loc, tensor, l);
235 // For every manifest tensor, set up the values buffer.
240 const Value tensor = tryFoldTensors(tensors[t]);
241 const auto rtp = dyn_cast<RankedTensorType>(tensor.getType());
242 // Skips only scalar, zero ranked tensor still need to be bufferized and
247 auto stt = getSparseTensorType(tensor);
262 if (llvm::isa_and_nonnull<tensor::ExtractSliceOp>(tensor.getDefiningOp()))
266 builder.create<bufferization::ToMemrefOp>(loc, denseTp, tensor);
269 denseVal = updater(builder, loc, denseVal, tensor);
276 valBuffer[t] = builder.create<ToValuesOp>(loc, tensor);
285 // For every synthetic tensor, set the high bound by calling the callback.
296 // For every manifest tensor:
305 const Value tensor = tryFoldTensors(tensors[t]);
306 const auto rtp = dyn_cast<RankedTensorType>(tensor.getType());
308 // Skips only scalar, zero ranked tensor still need to be bufferized and
312 auto stt = getSparseTensorType(tensor);
315 // Scan all levels of current tensor.
318 lvls[t][l] = makeSparseTensorLevel(builder, loc, tensor, t, l);
326 // some loop preparation from tensor iteration, but will also (undesirably)
398 // Finds out the tensor level that we should use to generate loops. Amongs all
399 // the tensor levels, there is at most one sparse tensor level.
685 // Enter dense tensor levels.
906 // NOTE: the slice driven tensor-related reduction variable must