================ @@ -209,7 +209,12 @@ struct GPULaneIdOpToNVVM : ConvertOpToLLVMPattern<gpu::LaneIdOp> { ConversionPatternRewriter &rewriter) const override { auto loc = op->getLoc(); MLIRContext *context = rewriter.getContext(); - Value newOp = rewriter.create<NVVM::LaneIdOp>(loc, rewriter.getI32Type()); + LLVM::ConstantRangeAttr bounds = nullptr; + if (std::optional<APInt> upperBound = op.getUpperBound()) + bounds = rewriter.getAttr<LLVM::ConstantRangeAttr>( + /*bitWidth=*/32, /*lower=*/0, upperBound->getZExtValue()); + Value newOp = + rewriter.create<NVVM::LaneIdOp>(loc, rewriter.getI32Type(), bounds); ---------------- grypp wrote:
Can we always use `kWarpSize = 32` for the laneId? This is a HW constraint, and it hasn't been changed over the years. https://github.com/llvm/llvm-project/pull/107659 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits