[Mlir-commits] [mlir] [mlir] GPUToROCDL: lower `gpu.subgroup_id` to the intrinsic where possible (PR #179422)
Krzysztof Drewniak
llvmlistbot at llvm.org
Tue Feb 3 08:21:44 PST 2026
================
@@ -170,6 +170,62 @@ struct GPUSubgroupSizeOpToROCDL : ConvertOpToLLVMPattern<gpu::SubgroupSizeOp> {
const amdgpu::Chipset chipset;
};
+struct GPUSubgroupIdOpToROCDL : ConvertOpToLLVMPattern<gpu::SubgroupIdOp> {
+ using ConvertOpToLLVMPattern::ConvertOpToLLVMPattern;
+
+ GPUSubgroupIdOpToROCDL(const LLVMTypeConverter &converter,
+ amdgpu::Chipset chipset)
+ : ConvertOpToLLVMPattern<gpu::SubgroupIdOp>(converter), chipset(chipset) {
+ }
+
+ LogicalResult
+ matchAndRewrite(gpu::SubgroupIdOp op, gpu::SubgroupIdOp::Adaptor adaptor,
+ ConversionPatternRewriter &rewriter) const override {
+ Location loc = op.getLoc();
+ auto int32Type = rewriter.getI32Type();
+
+ Value subgroupId;
+ if (chipset.majorVersion >= 12) {
+ // For gfx12+, use the hardware wave.id register directly.
+ subgroupId = ROCDL::WaveId::create(rewriter, loc, int32Type);
----------------
krzysz00 wrote:
Set range information if we have it
https://github.com/llvm/llvm-project/pull/179422
More information about the Mlir-commits
mailing list