[Mlir-commits] [mlir] [MLIR][XeGPU] Preserve leading unit dimension during blocking (PR #180884)
Igor Zamyatin
llvmlistbot at llvm.org
Thu Feb 12 06:53:17 PST 2026
================
@@ -1109,26 +1140,45 @@ struct LoadDistribution final : public gpu::WarpDistributionPattern {
SmallVector<size_t> newRetIndices;
SmallVector<Value> operands = loadGatherOp->getOperands();
- SmallVector<Type> operandTypesToYield = {
- operands[0].getType(), distOffsetsByWarpOpOrFailure.value(),
- distMaskByWarpOpOrFailure.value()};
const unsigned operandIdx = producedByLastLoad->getOperandNumber();
VectorType distResultTy =
cast<VectorType>(warpOp.getResult(operandIdx).getType());
- // Distributed load op will always be 1D.
- VectorType loadVecTy = VectorType::get({distResultTy.getNumElements()},
- distResultTy.getElementType());
+ VectorType distOffsetsTy = distOffsetsByWarpOpOrFailure.value();
+ VectorType distMaskTy = distMaskByWarpOpOrFailure.value();
+
+ SmallVector<Type> operandTypesToYield = {operands[0].getType(),
+ distOffsetsTy, distMaskTy};
gpu::WarpExecuteOnLane0Op newWarpOp = moveRegionToNewWarpOpAndAppendReturns(
rewriter, warpOp, operands, operandTypesToYield, newRetIndices);
- SmallVector<Value> newLoadGatherOperands = llvm::map_to_vector(
- newRetIndices, [&](size_t idx) { return newWarpOp.getResult(idx); });
+ // SmallVector<Value> newLoadGatherOperands = llvm::map_to_vector(
----------------
Garra1980 wrote:
nit: clean up?
https://github.com/llvm/llvm-project/pull/180884
More information about the Mlir-commits
mailing list