[Mlir-commits] [mlir] [MLIR][ROCDL] Add conversion for gpu.subgroup_id to ROCDL (PR #136405)
Krzysztof Drewniak
llvmlistbot at llvm.org
Tue Apr 22 12:11:13 PDT 2025
================
@@ -190,6 +201,33 @@ struct GPUShuffleOpLowering : public ConvertOpToLLVMPattern<gpu::ShuffleOp> {
}
};
+struct GPUSubgroupIdOpToROCDL final
+ : ConvertOpToLLVMPattern<gpu::SubgroupIdOp> {
+ using ConvertOpToLLVMPattern::ConvertOpToLLVMPattern;
+
+ GPUSubgroupIdOpToROCDL(const LLVMTypeConverter &converter,
+ const mlir::amdgpu::Chipset &chipset)
+ : ConvertOpToLLVMPattern(converter), chipset(chipset) {}
+
+ const mlir::amdgpu::Chipset chipset;
+
+ LogicalResult
+ matchAndRewrite(gpu::SubgroupIdOp op, gpu::SubgroupIdOp::Adaptor adaptor,
+ ConversionPatternRewriter &rewriter) const override {
+ if (chipset.majorVersion < 10) {
----------------
krzysz00 wrote:
There's a valid implementation: `workitem_id.x + workitem_dim.x * (workitem_id.y + workitem_dim.y * workitem_id.z)) / 64`, with all those adds and muls being `nuw` and `nsw`
https://github.com/llvm/llvm-project/pull/136405
More information about the Mlir-commits
mailing list