[Mlir-commits] [mlir] [mlir][amdgpu] Lower make_gather_dma_descriptor. (PR #172083)
Krzysztof Drewniak
llvmlistbot at llvm.org
Fri Dec 12 17:10:14 PST 2025
================
@@ -2611,26 +2609,55 @@ struct AMDGPUMakeDmaDescriptorLowering
return setValueAtOffset(rewriter, loc, sgpr, tileDimX, offset);
}
- Value setTileDim0(MakeDmaDescriptorOp op, OpAdaptor adaptor,
+ Value setTileDim0(DescriptorOp op, OpAdaptor adaptor,
ConversionPatternRewriter &rewriter, Location loc,
Value sgpr3, ArrayRef<Value> consts) const {
return setTileDimX(op, adaptor, rewriter, loc, sgpr3, consts, 0, 112);
}
- Value setTileDim1(MakeDmaDescriptorOp op, OpAdaptor adaptor,
+ Value setTileDim1(DescriptorOp op, OpAdaptor adaptor,
ConversionPatternRewriter &rewriter, Location loc,
Value sgpr4, ArrayRef<Value> consts) const {
return setTileDimX(op, adaptor, rewriter, loc, sgpr4, consts, 1, 128);
}
- Value setTileDim2(MakeDmaDescriptorOp op, OpAdaptor adaptor,
+ Value setValidIndices(DescriptorOp op, OpAdaptor adaptor,
+ ConversionPatternRewriter &rewriter, Location loc,
+ Value sgpr4, ArrayRef<Value> consts) const {
+ MakeGatherDmaDescriptorOp descriptorOp =
+ cast<MakeGatherDmaDescriptorOp>(op);
+ if (!descriptorOp.getIndices())
+ return sgpr4;
+
+ auto type = cast<VectorType>(descriptorOp.getIndices().getType());
+ ArrayRef<int64_t> shape = type.getShape();
+ assert(shape.size() == 1 && "expected shape to be of rank 1.");
+ unsigned length = shape.back();
+ assert(0 < length && length <= 16 && "expected length to be at most 16.");
+ Value value = createI32Constant(rewriter, loc, length);
+ return setValueAtOffset(rewriter, loc, sgpr4, value, 128);
+ }
+
+ Value setTileDim1OrValidIndices(DescriptorOp op, OpAdaptor adaptor,
+ ConversionPatternRewriter &rewriter,
+ Location loc, Value sgpr4,
+ ArrayRef<Value> consts) const {
+ if (op.isGather())
----------------
krzysz00 wrote:
We could probably make this method templated and then just provide two implementations by `template <>`ing them? But I don't feel too strongly about that
https://github.com/llvm/llvm-project/pull/172083
More information about the Mlir-commits
mailing list