Skip to content

Commit d7a2149

Browse files
committed
Add test, update for new range syntax from PR below
1 parent e62da14 commit d7a2149

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

mlir/lib/Conversion/GPUToNVVM/LowerGpuOpsToNVVMOps.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ struct GPULaneIdOpToNVVM : ConvertOpToLLVMPattern<gpu::LaneIdOp> {
212212
LLVM::ConstantRangeAttr bounds = nullptr;
213213
if (std::optional<APInt> upperBound = op.getUpperBound())
214214
bounds = rewriter.getAttr<LLVM::ConstantRangeAttr>(
215-
32, 0, upperBound->getZExtValue());
215+
/*bitWidth=*/32, /*lower=*/0, upperBound->getZExtValue());
216216
Value newOp =
217217
rewriter.create<NVVM::LaneIdOp>(loc, rewriter.getI32Type(), bounds);
218218
// Truncate or extend the result depending on the index bitwidth specified

mlir/test/Conversion/GPUToNVVM/gpu-to-nvvm.mlir

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -702,11 +702,11 @@ gpu.module @test_module_33 {
702702
// CHECK-LABEL: func @kernel_with_block_size(
703703
// CHECK: attributes {gpu.kernel, gpu.known_block_size = array<i32: 32, 4, 2>, nvvm.kernel, nvvm.maxntid = array<i32: 32, 4, 2>}
704704
gpu.func @kernel_with_block_size(%arg0: !llvm.ptr) kernel attributes {known_block_size = array<i32: 32, 4, 2>} {
705-
// CHECK: = nvvm.read.ptx.sreg.tid.x range <0 : i32, 32 : i32> : i32
705+
// CHECK: = nvvm.read.ptx.sreg.tid.x range <i32, 0, 32> : i32
706706
%0 = gpu.thread_id x
707-
// CHECK: = nvvm.read.ptx.sreg.tid.y range <0 : i32, 4 : i32> : i32
707+
// CHECK: = nvvm.read.ptx.sreg.tid.y range <i32, 0, 4> : i32
708708
%1 = gpu.thread_id y
709-
// CHECK: = nvvm.read.ptx.sreg.tid.z range <0 : i32, 2 : i32> : i32
709+
// CHECK: = nvvm.read.ptx.sreg.tid.z range <i32, 0, 2> : i32
710710
%2 = gpu.thread_id z
711711

712712
// Fake usage to prevent dead code elimination
@@ -929,6 +929,20 @@ gpu.module @test_module_48 {
929929
}
930930
}
931931

932+
gpu.module @test_module_49 {
933+
// CHECK-LABEL: func @explicit_id_bounds()
934+
func.func @explicit_id_bounds() -> (index, index, index) {
935+
// CHECK: = nvvm.read.ptx.sreg.tid.x range <i32, 0, 32> : i32
936+
%0 = gpu.thread_id x upper_bound 32
937+
// CHECK: = nvvm.read.ptx.sreg.ntid.x range <i32, 1, 33> : i32
938+
%1 = gpu.block_dim x upper_bound 32
939+
// CHECK: = nvvm.read.ptx.sreg.laneid range <i32, 0, 32> : i32
940+
%2 = gpu.lane_id upper_bound 32
941+
942+
return %0, %1, %2 : index, index, index
943+
}
944+
}
945+
932946
module attributes {transform.with_named_sequence} {
933947
transform.named_sequence @__transform_main(%toplevel_module: !transform.any_op {transform.readonly}) {
934948
%gpu_module = transform.structured.match ops{["gpu.module"]} in %toplevel_module

mlir/test/Target/LLVMIR/nvvmir.mlir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ llvm.func @nvvm_special_regs() -> i32 {
6464
%30 = nvvm.read.ptx.sreg.clock64 : i64
6565

6666
// CHECK: %31 = call range(i32 0, 64) i32 @llvm.nvvm.read.ptx.sreg.tid.x()
67-
%31 = nvvm.read.ptx.sreg.tid.x range <0 : i32, 64 : i32> : i32
67+
%31 = nvvm.read.ptx.sreg.tid.x range <i32, 0, 64> : i32
6868

6969
llvm.return %1 : i32
7070
}

0 commit comments

Comments
 (0)