@@ -174,33 +174,37 @@ module attributes {"ttg.num-warps" = 8 : i32, ttg.profile_scratch_memory_alignme
174174#smem = #ttg.shared_memory
175175module attributes {" ttg.num-warps" = 8 : i32 , ttg.profile_scratch_memory_alignment = 128 : i32 , ttg.profile_scratch_memory_size = 384 : i32 } {
176176 // CHECK-LABEL: convert_smem_finalize
177- // CHECK-DAG: llvm.extractvalue %{{.*}}[0] : !llvm.struct<(ptr<3>, i32)>
178- // CHECK-DAG: llvm.store
179- // CHECK-DAG: llvm.cond_br %{{.*}}, ^bb1, ^bb3
180- // CHECK-DAG: %[[BUFFER_SIZE:.*]] = llvm.mlir.constant(2048 : i32) : i32
181- // CHECK-DAG: %[[BUFFER_SIZE_OFFSET:.*]] = llvm.mlir.constant(3 : i32) : i32
182- // CHECK-DAG: %[[BUFFER_SIZE_PTR:.*]] = llvm.getelementptr %{{.*}}[%[[BUFFER_SIZE_OFFSET]]] : (!llvm.ptr<1>, i32) -> !llvm.ptr<1>
183- // CHECK-DAG: llvm.store %[[BUFFER_SIZE]], %[[BUFFER_SIZE_PTR]] : i32, !llvm.ptr<1>
184- // CHECK-DAG: %[[PRE_FINAL_TIME:.*]] = llvm.call_intrinsic "llvm.nvvm.read.ptx.sreg.globaltimer"() : () -> i64
185- // CHECK-DAG: %[[PRE_FINAL_TIME_OFFSET:.*]] = llvm.mlir.constant(6 : i32) : i32
186- // CHECK-DAG: %[[PRE_FINAL_TIME_PTR:.*]] = llvm.getelementptr %{{.*}}[%[[PRE_FINAL_TIME_OFFSET]]] : (!llvm.ptr<1>, i32) -> !llvm.ptr<1
187- // CHECK-DAG: llvm.store %[[PRE_FINAL_TIME]], %[[PRE_FINAL_TIME_PTR]] : i64, !llvm.ptr<1>
188- // CHECK-DAG: ^bb1:
189- // CHECK-DAG: llvm.br ^bb2
190- // CHECK-DAG: ^bb2(%[[I:.*]]: i32):
191- // CHECK-DAG: llvm.store
192- // CHECK-DAG: llvm.store
193- // CHECK-DAG: %[[UPPER:.*]] = llvm.mlir.constant(510 : i32) : i32
194- // CHECK-DAG: %[[P2:.*]] = llvm.icmp "slt" %[[I]], %[[UPPER]] : i32
195- // CHECK-DAG: %[[STEP:.*]] = llvm.mlir.constant(2 : i32) : i32
196- // CHECK-DAG: %[[I_NEW:.*]] = llvm.add %[[I]], %[[STEP]] : i32
197- // CHECK-DAG: llvm.cond_br %[[P2]], ^bb2(%[[I_NEW]] : i32), ^bb3
198- // CHECK-DAG: ^bb3:
199- // CHECK-DAG: %[[POST_FINAL_TIME:.*]] = llvm.call_intrinsic "llvm.nvvm.read.ptx.sreg.globaltimer"() : () -> i64
200- // CHECK-DAG: %[[POST_FINAL_TIME_OFFSET:.*]] = llvm.mlir.constant(8 : i32) : i32
201- // CHECK-DAG: %[[POST_FINAL_TIME_PTR:.*]] = llvm.getelementptr %{{.*}}[%[[POST_FINAL_TIME_OFFSET]]] : (!llvm.ptr<1>, i32) -> !llvm.ptr<1
202- // CHECK-DAG: llvm.store %[[POST_FINAL_TIME]], %[[POST_FINAL_TIME_PTR]] : i64, !llvm.ptr<1>
203- // CHECK-DAG: llvm.return
177+ // CHECK: llvm.extractvalue %{{.*}}[0] : !llvm.struct<(ptr<3>, i32)>
178+ // CHECK: llvm.store
179+ // CHECK: llvm.cond_br %{{.*}}, ^bb1, ^bb2
180+ // CHECK: ^bb1: // pred: ^bb0
181+ // CHECK: llvm.store %{{.*}}, %{{.*}} : i32, !llvm.ptr<1>
182+ // CHECK: llvm.call_intrinsic "llvm.nvvm.read.ptx.sreg.globaltimer"() : () -> i64
183+ // CHECK: llvm.store %{{.*}}, %{{.*}} : i64, !llvm.ptr<1>
184+ // CHECK: llvm.br ^bb2
185+ // CHECK: ^bb2: // 2 preds: ^bb0, ^bb1
186+ // CHECK: llvm.cond_br %{{.*}}, ^bb3, ^bb4
187+ // CHECK: ^bb3: // pred: ^bb2
188+ // CHECK: llvm.store %{{.*}}, %{{.*}} : i32, !llvm.ptr<1>
189+ // CHECK: llvm.br ^bb4
190+ // CHECK: ^bb4: // 2 preds: ^bb2, ^bb3
191+ // CHECK: llvm.cond_br %{{.*}}, ^[[LOOP_HEAD:bb[0-9]+]](%{{.*}} : i32), ^[[EXIT:bb[0-9]+]]
192+ // CHECK: ^[[LOOP_HEAD]](%{{.*}}: i32):
193+ // CHECK: llvm.cond_br %{{.*}}, ^[[LOOP_BODY:bb[0-9]+]](%{{.*}} : i32), ^[[EXIT]]
194+ // CHECK: ^[[LOOP_BODY]](%{{.*}}: i32):
195+ // CHECK: llvm.getelementptr
196+ // CHECK: llvm.store
197+ // CHECK: llvm.store
198+ // CHECK: ^[[EXIT]]:
199+ // CHECK: llvm.cond_br %{{.*}}, ^[[POST:bb[0-9]+]], ^[[RET:bb[0-9]+]]
200+ // CHECK: ^[[POST]]:
201+ // CHECK: %{{.*}} = llvm.mlir.constant(8 : i32) : i32
202+ // CHECK: %[[POST_FINAL_TIME_PTR:.*]] = llvm.getelementptr %{{.*}}{{\[}}%{{.*}}{{\]}} : (!llvm.ptr<1>, i32) -> !llvm.ptr<1>, i32
203+ // CHECK: %[[POST_FINAL_TIME:.*]] = llvm.call_intrinsic "llvm.nvvm.read.ptx.sreg.globaltimer"() : () -> i64
204+ // CHECK: llvm.store %[[POST_FINAL_TIME]], %[[POST_FINAL_TIME_PTR]] : i64, !llvm.ptr<1>
205+ // CHECK: llvm.br ^[[RET]]
206+ // CHECK: ^[[RET]]:
207+ // CHECK: llvm.return
204208 llvm.func @convert_smem_finalize (%arg: !llvm.ptr <1 >) attributes {noinline = false , nvvm.kernel = 1 : ui1 } {
205209 %0 = ttg.local_alloc : () -> !ttg.memdesc <512 xi32 , #shared , #smem , mutable >
206210 %1 = proton_gpu.global_scratch_alloc {alignment = 128 : i32 , nbytes = 384 : i32 , offset = 0 : i32 } : !tt.ptr <i32 >
0 commit comments