@@ -301,29 +301,29 @@ func.func @linearize_mixed(%index0: index, %index1: index, %index2: index, %basi
301301
302302// -----
303303
304- #map = affine_map <()[ s0 ] -> ( s0 )>
304+ // CHECK-LABEL: @gpu_launch_affine
305305
306- // CHECK-LABEL: @gpu_affine_for
306+ // Test `thread_id` in AffineScope, the `thread_id` is in AffineScope's toplevel,
307+ // it is a valid symbol.
307308
308- module attributes {gpu.container_module } {
309- gpu.module @gpu {
310- gpu.func @gpu_affine_for (%arg0: memref <?x?xf32 >) kernel {
311- %c3 = arith.constant 1 : index
312- %dim = memref.dim %arg0 , %c3 : memref <?x?xf32 >
313- %c0 = arith.constant 0 : index
314- affine.for %arg3 = %c0 to #map ()[%dim ] step 32 {
309+ module {
310+ func.func @gpu_launch_affine () {
311+ %c1 = arith.constant 1 : index
312+ gpu.launch blocks (%arg0 , %arg1 , %arg2 ) in (%arg6 = %c1 , %arg7 = %c1 , %arg8 = %c1 )
313+ threads (%arg3 , %arg4 , %arg5 ) in (%arg9 = %c1 , %arg10 = %c1 , %arg11 = %c1 ) {
314+ %thread_id_x = gpu.thread_id x
315+ %c128 = arith.constant 128 : index
316+ affine.for %arg12 = %thread_id_x to %c128 step 8 {
315317 }
316- gpu.return
318+ gpu.terminator
317319 }
320+ return
318321 }
319322}
320- // CHECK-SAME: (%[[VAL_0:.*]]: memref<?x?xf32>) kernel {
321- // CHECK: %[[VAL_1:.*]] = arith.constant 1 : index
322- // CHECK: %[[VAL_2:.*]] = memref.dim %[[VAL_0]], %[[VAL_1]] : memref<?x?xf32>
323- // CHECK: %[[VAL_3:.*]] = arith.constant 0 : index
324- // CHECK: affine.for %[[VAL_4:.*]] = %[[VAL_3]] to %[[VAL_2]] step 32 {
325- // CHECK: }
326- // CHECK: gpu.return
323+
324+ // CHECK: %[[THREAD_ID:.*]] = gpu.thread_id x
325+ // CHECK: %[[VAL:.*]] = arith.constant 128 : index
326+ // CHECK: affine.for %{{.*}} = %[[THREAD_ID]] to %[[VAL]] step 8 {
327327
328328// -----
329329
0 commit comments