@@ -53,23 +53,25 @@ struct GpuSubgroupIdRewriter final : OpRewritePattern<gpu::SubgroupIdOp> {
5353 // subgroup_size
5454
5555 Location loc = op->getLoc ();
56+ Type indexType = rewriter.getIndexType ();
5657
5758 Value dimX = rewriter.create <gpu::BlockDimOp>(loc, gpu::Dimension::x);
5859 Value dimY = rewriter.create <gpu::BlockDimOp>(loc, gpu::Dimension::y);
5960 Value tidX = rewriter.create <gpu::ThreadIdOp>(loc, gpu::Dimension::x);
6061 Value tidY = rewriter.create <gpu::ThreadIdOp>(loc, gpu::Dimension::y);
6162 Value tidZ = rewriter.create <gpu::ThreadIdOp>(loc, gpu::Dimension::z);
6263
63- Value dimYxIdZ = rewriter.create <index::MulOp>(loc, dimY, tidZ);
64- Value dimYxIdZPlusIdY = rewriter.create <index::AddOp>(loc, dimYxIdZ, tidY);
64+ Value dimYxIdZ = rewriter.create <arith::MulIOp>(loc, indexType, dimY, tidZ);
65+ Value dimYxIdZPlusIdY =
66+ rewriter.create <arith::AddIOp>(loc, indexType, dimYxIdZ, tidY);
6567 Value dimYxIdZPlusIdYTimesDimX =
66- rewriter.create <index::MulOp >(loc, dimX, dimYxIdZPlusIdY);
67- Value IdXPlusDimYxIdZPlusIdYTimesDimX =
68- rewriter. create <index::AddOp>( loc, tidX, dimYxIdZPlusIdYTimesDimX);
68+ rewriter.create <arith::MulIOp >(loc, indexType , dimX, dimYxIdZPlusIdY);
69+ Value IdXPlusDimYxIdZPlusIdYTimesDimX = rewriter. create <arith::AddIOp>(
70+ loc, indexType , tidX, dimYxIdZPlusIdYTimesDimX);
6971 Value subgroupSize = rewriter.create <gpu::SubgroupSizeOp>(
7072 loc, rewriter.getIndexType (), /* upper_bound = */ nullptr );
71- Value subgroupIdOp = rewriter.create <index::DivUOp >(
72- loc, IdXPlusDimYxIdZPlusIdYTimesDimX, subgroupSize);
73+ Value subgroupIdOp = rewriter.create <arith::DivUIOp >(
74+ loc, indexType, IdXPlusDimYxIdZPlusIdYTimesDimX, subgroupSize);
7375 rewriter.replaceOp (op, {subgroupIdOp});
7476 return success ();
7577 }
0 commit comments