[Mlir-commits] [mlir] [mlir][gpu] Disjoint patterns for lowering clustered subgroup reduce (PR #109158)
Andrea Faulds
llvmlistbot at llvm.org
Wed Sep 18 10:07:52 PDT 2024
================
@@ -210,13 +210,25 @@ Value createSubgroupShuffleReduction(OpBuilder &builder, Location loc,
struct ScalarSubgroupReduceToShuffles final
: OpRewritePattern<gpu::SubgroupReduceOp> {
ScalarSubgroupReduceToShuffles(MLIRContext *ctx, unsigned subgroupSize,
- unsigned shuffleBitwidth,
+ unsigned shuffleBitwidth, bool matchClustered,
PatternBenefit benefit)
: OpRewritePattern(ctx, benefit), subgroupSize(subgroupSize),
- shuffleBitwidth(shuffleBitwidth) {}
+ shuffleBitwidth(shuffleBitwidth), matchClustered(matchClustered) {}
LogicalResult matchAndRewrite(gpu::SubgroupReduceOp op,
PatternRewriter &rewriter) const override {
+ if (op.getClusterSize().has_value() != matchClustered) {
+ if (matchClustered) {
+ return rewriter.notifyMatchFailure(
+ op, "op is non-clustered but pattern is configured to only match "
+ "clustered ops");
+ } else {
+ return rewriter.notifyMatchFailure(
+ op, "op is clustered but pattern is configured to only match "
+ "non-clustered ops");
+ }
----------------
andfau-amd wrote:
I don't really like the asymmetry in this version. I've pushed another approach, does it look better?
https://github.com/llvm/llvm-project/pull/109158
More information about the Mlir-commits
mailing list