[Mlir-commits] [mlir] [mlir][gpu] Add 'cluster_size' attribute to gpu.subgroup_reduce (PR #104851)
Jakub Kuderski
llvmlistbot at llvm.org
Mon Aug 19 13:59:59 PDT 2024
================
@@ -1222,12 +1232,32 @@ def GPU_SubgroupReduceOp : GPU_Op<"subgroup_reduce", [SameOperandsAndResultType]
let arguments = (ins
AnyIntegerOrFloatOr1DVector:$value,
GPU_AllReduceOperationAttr:$op,
- UnitAttr:$uniform
+ UnitAttr:$uniform,
+ OptionalAttr<I32Attr>:$cluster_size
);
let results = (outs AnyIntegerOrFloatOr1DVector:$result);
+ let builders = [
+ OpBuilder<(ins "Value":$value,
+ "::mlir::gpu::AllReduceOperation":$op,
+ "bool":$uniform), [{
+ build($_builder, $_state, value, op, uniform, /* cluster_size: */ nullptr);
+ }]>,
+ OpBuilder<(ins "Value":$value,
+ "::mlir::gpu::AllReduceOperation":$op,
+ "bool":$uniform,
+ "std::optional<uint32_t>":$cluster_size), [{
+ if (cluster_size)
+ build($_builder, $_state, value, op, uniform, $_builder.getI32IntegerAttr(*cluster_size));
+ else
+ build($_builder, $_state, value, op, uniform, nullptr);
----------------
kuhar wrote:
I think it might be a bit safer to turn this into a ternary operator so that we don't have to assume how the autogenerated code around this will look like and keep it as a single expression.
https://github.com/llvm/llvm-project/pull/104851
More information about the Mlir-commits
mailing list