[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