Skip to content

Instantly share code, notes, and snippets.

@makslevental
Created April 3, 2025 18:08
Show Gist options
  • Select an option

  • Save makslevental/8d59fcbe30c6e9d203926cbb44dea592 to your computer and use it in GitHub Desktop.

Select an option

Save makslevental/8d59fcbe30c6e9d203926cbb44dea592 to your computer and use it in GitHub Desktop.
test.mlir:4:13: remark: unsigned : [1, 1] signed : [-1, -1]
%true = arith.constant true
^
test.mlir:6:14: remark: unsigned : [0, 0] signed : [0, 0]
%cst_1 = arith.constant dense<0> : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:6:14: remark: non-neg
%cst_1 = arith.constant dense<0> : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:8:15: remark: unsigned : [1, 1] signed : [1, 1]
%c1_i32 = arith.constant 1 : i32
^
test.mlir:8:15: remark: non-neg
%c1_i32 = arith.constant 1 : i32
^
test.mlir:9:17: remark: unsigned : [304, 304] signed : [304, 304]
%c304_i32 = arith.constant 304 : i32
^
test.mlir:9:17: remark: non-neg
%c304_i32 = arith.constant 304 : i32
^
test.mlir:10:16: remark: unsigned : [64, 64] signed : [64, 64]
%c64_i32 = arith.constant 64 : i32
^
test.mlir:10:16: remark: non-neg
%c64_i32 = arith.constant 64 : i32
^
test.mlir:11:16: remark: unsigned : [63, 63] signed : [63, 63]
%c63_i32 = arith.constant 63 : i32
^
test.mlir:11:16: remark: non-neg
%c63_i32 = arith.constant 63 : i32
^
test.mlir:12:14: remark: unsigned : [0, 0] signed : [0, 0]
%cst_3 = arith.constant dense<0> : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:12:14: remark: non-neg
%cst_3 = arith.constant dense<0> : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:13:17: remark: unsigned : [128, 128] signed : [128, 128]
%c128_i32 = arith.constant 128 : i32
^
test.mlir:13:17: remark: non-neg
%c128_i32 = arith.constant 128 : i32
^
test.mlir:14:17: remark: unsigned : [127, 127] signed : [127, 127]
%c127_i32 = arith.constant 127 : i32
^
test.mlir:14:17: remark: non-neg
%c127_i32 = arith.constant 127 : i32
^
test.mlir:15:15: remark: unsigned : [8, 8] signed : [8, 8]
%c8_i32 = arith.constant 8 : i32
^
test.mlir:15:15: remark: non-neg
%c8_i32 = arith.constant 8 : i32
^
test.mlir:16:17: remark: unsigned : [256, 256] signed : [256, 256]
%c256_i32 = arith.constant 256 : i32
^
test.mlir:16:17: remark: non-neg
%c256_i32 = arith.constant 256 : i32
^
test.mlir:17:17: remark: unsigned : [255, 255] signed : [255, 255]
%c255_i32 = arith.constant 255 : i32
^
test.mlir:17:17: remark: non-neg
%c255_i32 = arith.constant 255 : i32
^
test.mlir:18:15: remark: unsigned : [0, 0] signed : [0, 0]
%c0_i32 = arith.constant 0 : i32
^
test.mlir:18:15: remark: non-neg
%c0_i32 = arith.constant 0 : i32
^
test.mlir:19:10: remark: unsigned : [0, 128] signed : [0, 128]
%0 = tt.make_range {end = 128 : i32, start = 0 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:19:10: remark: non-neg
%0 = tt.make_range {end = 128 : i32, start = 0 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:20:10: remark: unsigned : [0, 65535] signed : [0, 65535]
%1 = tt.get_program_id x : i32
^
test.mlir:20:10: remark: non-neg
%1 = tt.get_program_id x : i32
^
test.mlir:21:10: remark: unsigned : [256, 2147483902] signed : [-2147483648, 2147483647]
%2 = arith.addi %arg4, %c255_i32 : i32
^
test.mlir:22:10: remark: unsigned : [0, 4294967295] signed : [-8388608, 8388607]
%3 = arith.divsi %2, %c256_i32 : i32
^
test.mlir:23:10: remark: unsigned : [0, 4294967295] signed : [-67108864, 67108856]
%4 = arith.muli %3, %c8_i32 : i32
^
test.mlir:24:10: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%5 = arith.divsi %1, %4 : i32
^
test.mlir:25:10: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%6 = arith.muli %5, %c8_i32 : i32
^
test.mlir:26:10: remark: unsigned : [128, 2147483774] signed : [-2147483648, 2147483647]
%7 = arith.addi %arg3, %c127_i32 : i32
^
test.mlir:27:10: remark: unsigned : [0, 4294967295] signed : [-16777216, 16777215]
%8 = arith.divsi %7, %c128_i32 : i32
^
test.mlir:28:10: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%9 = arith.subi %8, %6 : i32
^
test.mlir:29:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 8]
%10 = arith.minsi %9, %c8_i32 : i32
^
test.mlir:30:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%11 = arith.remsi %1, %10 : i32
^
test.mlir:31:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%12 = arith.addi %6, %11 : i32
^
test.mlir:32:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%13 = arith.muli %12, %c128_i32 : i32
^
test.mlir:33:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%14 = arith.subi %arg3, %13 : i32
^
test.mlir:34:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%15 = tt.splat %14 : i32 -> tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:35:11: remark: unsigned : [0, 1] signed : [-1, 0]
%16 = arith.cmpi slt, %0, %15 : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:36:11: remark: unsigned : [0, 128] signed : [0, 128]
%17 = arith.select %16, %0, %cst_3 {tt.contiguity = dense<128> : tensor<1xi32>, tt.divisibility = dense<128> : tensor<1xi32>} : tensor<128xi1, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>, tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:36:11: remark: non-neg
%17 = arith.select %16, %0, %cst_3 {tt.contiguity = dense<128> : tensor<1xi32>, tt.divisibility = dense<128> : tensor<1xi32>} : tensor<128xi1, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>, tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:37:11: remark: unsigned : [0, 64] signed : [0, 64]
%18 = tt.make_range {end = 64 : i32, start = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:37:11: remark: non-neg
%18 = tt.make_range {end = 64 : i32, start = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:38:11: remark: unsigned : [0, 128] signed : [0, 128]
%19 = tt.expand_dims %17 {axis = 1 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>> -> tensor<128x1xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:38:11: remark: non-neg
%19 = tt.expand_dims %17 {axis = 1 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>> -> tensor<128x1xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:39:11: remark: unsigned : [1, 2147483647] signed : [1, 2147483647]
%20 = tt.splat %arg6 : i32 -> tensor<128x1xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:39:11: remark: non-neg
%20 = tt.splat %arg6 : i32 -> tensor<128x1xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:40:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%21 = arith.muli %19, %20 : tensor<128x1xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:41:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%22 = tt.broadcast %21 : tensor<128x1xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>> -> tensor<128x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:42:11: remark: unsigned : [0, 64] signed : [0, 64]
%23 = tt.expand_dims %18 {axis = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>> -> tensor<1x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:42:11: remark: non-neg
%23 = tt.expand_dims %18 {axis = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>> -> tensor<1x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:43:11: remark: unsigned : [0, 64] signed : [0, 64]
%24 = tt.broadcast %23 : tensor<1x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>> -> tensor<128x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:43:11: remark: non-neg
%24 = tt.broadcast %23 : tensor<1x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>> -> tensor<128x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:44:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%25 = arith.addi %22, %24 : tensor<128x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:45:11: remark: unsigned : [64, 2147483710] signed : [-2147483648, 2147483647]
%26 = arith.addi %arg5, %c63_i32 : i32
^
test.mlir:46:11: remark: unsigned : [0, 4294967295] signed : [-33554432, 33554431]
%27 = arith.divsi %26, %c64_i32 : i32
^
test.mlir:47:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%28 = arith.muli %8, %3 : i32
^
test.mlir:48:11: remark: unsigned : [0, 4294967295] signed : [-7064090, 7064090]
%29 = arith.divsi %28, %c304_i32 : i32
^
test.mlir:49:11: remark: unsigned : [0, 4294967295] signed : [-303, 303]
%30 = arith.remsi %28, %c304_i32 : i32
^
test.mlir:50:11: remark: unsigned : [0, 1] signed : [-1, 0]
%31 = arith.cmpi slt, %1, %30 : i32
^
test.mlir:51:11: remark: unsigned : [0, 4294967295] signed : [-7064090, 7064091]
%32 = scf.if %31 -> (i32) {
^
test.mlir:52:13: remark: unsigned : [0, 4294967295] signed : [-7064089, 7064091]
%92 = arith.addi %29, %c1_i32 : i32
^
test.mlir:57:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%33 = arith.muli %27, %32 : i32
^
test.mlir:58:11: remark: unsigned : [0, 1] signed : [-1, 0]
%34 = arith.cmpi sgt, %33, %c0_i32 : i32
^
test.mlir:59:11: remark: unsigned : [0, 1] signed : [-1, 0]
%35 = tt.splat %34 : i1 -> tensor<128x64xi1, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:60:11: remark: unsigned : [0, 64] signed : [0, 64]
%36 = tt.make_range {end = 64 : i32, start = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:60:11: remark: non-neg
%36 = tt.make_range {end = 64 : i32, start = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:61:11: remark: unsigned : [0, 64] signed : [0, 64]
%37 = tt.expand_dims %36 {axis = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>> -> tensor<1x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:61:11: remark: non-neg
%37 = tt.expand_dims %36 {axis = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>> -> tensor<1x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:62:11: remark: unsigned : [1, 2147483647] signed : [1, 2147483647]
%38 = tt.splat %arg5 : i32 -> tensor<1x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:62:11: remark: non-neg
%38 = tt.splat %arg5 : i32 -> tensor<1x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:63:11: remark: unsigned : [0, 1] signed : [-1, 0]
%39 = arith.cmpi slt, %37, %38 : tensor<1x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:64:11: remark: unsigned : [0, 1] signed : [-1, 0]
%40 = tt.broadcast %39 : tensor<1x64xi1, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>> -> tensor<128x64xi1, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:65:11: remark: unsigned : [0, 1] signed : [-1, 0]
%41 = arith.andi %35, %40 : tensor<128x64xi1, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:69:11: remark: unsigned : [0, 64] signed : [0, 64]
%45 = tt.make_range {end = 64 : i32, start = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:69:11: remark: non-neg
%45 = tt.make_range {end = 64 : i32, start = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:70:11: remark: unsigned : [0, 256] signed : [0, 256]
%46 = tt.make_range {end = 256 : i32, start = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:70:11: remark: non-neg
%46 = tt.make_range {end = 256 : i32, start = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:71:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%47 = arith.remsi %1, %4 : i32
^
test.mlir:72:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%48 = arith.divsi %47, %10 : i32
^
test.mlir:73:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%49 = arith.muli %48, %c256_i32 : i32
^
test.mlir:74:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%50 = arith.subi %arg4, %49 : i32
^
test.mlir:75:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%51 = tt.splat %50 : i32 -> tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:76:11: remark: unsigned : [0, 1] signed : [-1, 0]
%52 = arith.cmpi slt, %46, %51 : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:77:11: remark: unsigned : [0, 256] signed : [0, 256]
%53 = arith.select %52, %46, %cst_1 {tt.contiguity = dense<256> : tensor<1xi32>, tt.divisibility = dense<256> : tensor<1xi32>} : tensor<256xi1, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:77:11: remark: non-neg
%53 = arith.select %52, %46, %cst_1 {tt.contiguity = dense<256> : tensor<1xi32>, tt.divisibility = dense<256> : tensor<1xi32>} : tensor<256xi1, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:78:11: remark: unsigned : [0, 64] signed : [0, 64]
%54 = tt.expand_dims %45 {axis = 1 : i32} : tensor<64xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>> -> tensor<64x1xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:78:11: remark: non-neg
%54 = tt.expand_dims %45 {axis = 1 : i32} : tensor<64xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>> -> tensor<64x1xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:79:11: remark: unsigned : [0, 64] signed : [0, 64]
%55 = tt.broadcast %54 : tensor<64x1xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>> -> tensor<64x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:79:11: remark: non-neg
%55 = tt.broadcast %54 : tensor<64x1xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>> -> tensor<64x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:80:11: remark: unsigned : [0, 256] signed : [0, 256]
%56 = tt.expand_dims %53 {axis = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>> -> tensor<1x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:80:11: remark: non-neg
%56 = tt.expand_dims %53 {axis = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>> -> tensor<1x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:81:11: remark: unsigned : [1, 2147483647] signed : [1, 2147483647]
%57 = tt.splat %arg7 : i32 -> tensor<1x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:81:11: remark: non-neg
%57 = tt.splat %arg7 : i32 -> tensor<1x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:82:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%58 = arith.muli %56, %57 : tensor<1x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:83:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%59 = tt.broadcast %58 : tensor<1x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>> -> tensor<64x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:84:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%60 = arith.addi %55, %59 : tensor<64x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:85:11: remark: unsigned : [0, 1] signed : [-1, 0]
%61 = tt.splat %34 : i1 -> tensor<64x256xi1, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:86:11: remark: unsigned : [0, 64] signed : [0, 64]
%62 = tt.make_range {end = 64 : i32, start = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:86:11: remark: non-neg
%62 = tt.make_range {end = 64 : i32, start = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:87:11: remark: unsigned : [0, 64] signed : [0, 64]
%63 = tt.expand_dims %62 {axis = 1 : i32} : tensor<64xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>> -> tensor<64x1xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:87:11: remark: non-neg
%63 = tt.expand_dims %62 {axis = 1 : i32} : tensor<64xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>> -> tensor<64x1xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:88:11: remark: unsigned : [1, 2147483647] signed : [1, 2147483647]
%64 = tt.splat %arg5 : i32 -> tensor<64x1xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:88:11: remark: non-neg
%64 = tt.splat %arg5 : i32 -> tensor<64x1xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:89:11: remark: unsigned : [0, 1] signed : [-1, 0]
%65 = arith.cmpi slt, %63, %64 : tensor<64x1xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:90:11: remark: unsigned : [0, 1] signed : [-1, 0]
%66 = tt.broadcast %65 : tensor<64x1xi1, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>> -> tensor<64x256xi1, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:91:11: remark: unsigned : [0, 1] signed : [-1, 0]
%67 = arith.andi %61, %66 : tensor<64x256xi1, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:95:11: remark: unsigned : [1, 1] signed : [-1, -1]
%71 = arith.cmpi sgt, %arg3, %c0_i32 : i32
^
test.mlir:95:11: remark: result is true
%71 = arith.cmpi sgt, %arg3, %c0_i32 : i32
^
test.mlir:97:11: remark: unsigned : [1, 1] signed : [-1, -1]
%72 = arith.cmpi sgt, %arg4, %c0_i32 : i32
^
test.mlir:97:11: remark: result is true
%72 = arith.cmpi sgt, %arg4, %c0_i32 : i32
^
test.mlir:99:11: remark: unsigned : [1, 1] signed : [-1, -1]
%73 = arith.cmpi sgt, %arg5, %c0_i32 : i32
^
test.mlir:99:11: remark: result is true
%73 = arith.cmpi sgt, %arg5, %c0_i32 : i32
^
test.mlir:101:11: remark: unsigned : [1, 1] signed : [-1, -1]
%74 = arith.cmpi sgt, %arg6, %c0_i32 : i32
^
test.mlir:101:11: remark: result is true
%74 = arith.cmpi sgt, %arg6, %c0_i32 : i32
^
test.mlir:105:11: remark: unsigned : [1, 1] signed : [-1, -1]
%75 = arith.cmpi sgt, %arg7, %c0_i32 : i32
^
test.mlir:105:11: remark: result is true
%75 = arith.cmpi sgt, %arg7, %c0_i32 : i32
^
test.mlir:107:11: remark: unsigned : [1, 1] signed : [-1, -1]
%76 = arith.cmpi sgt, %arg8, %c0_i32 : i32
^
test.mlir:107:11: remark: result is true
%76 = arith.cmpi sgt, %arg8, %c0_i32 : i32
^
test.mlir:110:11: remark: unsigned : [0, 128] signed : [0, 128]
%77 = tt.make_range {end = 128 : i32, start = 0 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>>
^
test.mlir:110:11: remark: non-neg
%77 = tt.make_range {end = 128 : i32, start = 0 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>>
^
test.mlir:111:11: remark: unsigned : [0, 256] signed : [0, 256]
%78 = tt.make_range {end = 256 : i32, start = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>>
^
test.mlir:111:11: remark: non-neg
%78 = tt.make_range {end = 256 : i32, start = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>>
^
test.mlir:112:11: remark: unsigned : [0, 4294967295] signed : [-33554433, 33554430]
%79 = arith.subi %27, %c1_i32 : i32
^
test.mlir:119:11: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%84 = arith.subi %33, %c1_i32 : i32
^
test.mlir:121:13: remark: unsigned : [0, 1] signed : [-1, 0]
%92 = arith.cmpi eq, %arg10, %79 : i32
^
test.mlir:122:13: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%93 = arith.addi %arg10, %c1_i32 : i32
^
test.mlir:123:13: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%94 = arith.select %92, %c0_i32, %93 : i32
^
test.mlir:124:13: remark: unsigned : [0, 1] signed : [-1, 0]
%95 = arith.cmpi eq, %94, %c0_i32 : i32
^
test.mlir:125:15: remark: result 0: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%96:5 = scf.if %95 -> (i32, i32, i32, tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>) {
^
test.mlir:125:15: remark: result 1: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%96:5 = scf.if %95 -> (i32, i32, i32, tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>) {
^
test.mlir:125:15: remark: result 2: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%96:5 = scf.if %95 -> (i32, i32, i32, tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>) {
^
test.mlir:125:15: remark: result 3: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%96:5 = scf.if %95 -> (i32, i32, i32, tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>) {
^
test.mlir:125:15: remark: result 4: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%96:5 = scf.if %95 -> (i32, i32, i32, tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>) {
^
test.mlir:126:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%137 = arith.addi %arg11, %c304_i32 : i32
^
test.mlir:127:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%138 = arith.divsi %137, %4 : i32
^
test.mlir:128:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%139 = arith.muli %138, %c8_i32 : i32
^
test.mlir:129:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%140 = arith.subi %8, %139 : i32
^
test.mlir:130:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 8]
%141 = arith.minsi %140, %c8_i32 : i32
^
test.mlir:131:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%142 = arith.remsi %137, %141 : i32
^
test.mlir:132:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%143 = arith.addi %139, %142 : i32
^
test.mlir:133:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%144 = arith.remsi %137, %4 : i32
^
test.mlir:134:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%145 = arith.divsi %144, %141 : i32
^
test.mlir:135:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%146 = arith.muli %143, %c128_i32 : i32
^
test.mlir:136:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%147 = arith.muli %145, %c256_i32 : i32
^
test.mlir:137:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%148 = arith.subi %arg3, %146 : i32
^
test.mlir:138:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%149 = tt.splat %148 : i32 -> tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:139:16: remark: unsigned : [0, 1] signed : [-1, 0]
%150 = arith.cmpi slt, %0, %149 : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:140:16: remark: unsigned : [0, 128] signed : [0, 128]
%151 = arith.select %150, %0, %cst_3 {tt.contiguity = dense<128> : tensor<1xi32>, tt.divisibility = dense<128> : tensor<1xi32>} : tensor<128xi1, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>, tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:140:16: remark: non-neg
%151 = arith.select %150, %0, %cst_3 {tt.contiguity = dense<128> : tensor<1xi32>, tt.divisibility = dense<128> : tensor<1xi32>} : tensor<128xi1, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>, tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>>
^
test.mlir:141:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%152 = arith.subi %arg4, %147 : i32
^
test.mlir:142:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%153 = tt.splat %152 : i32 -> tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:143:16: remark: unsigned : [0, 1] signed : [-1, 0]
%154 = arith.cmpi slt, %46, %153 : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:144:16: remark: unsigned : [0, 256] signed : [0, 256]
%155 = arith.select %154, %46, %cst_1 {tt.contiguity = dense<256> : tensor<1xi32>, tt.divisibility = dense<256> : tensor<1xi32>} : tensor<256xi1, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:144:16: remark: non-neg
%155 = arith.select %154, %46, %cst_1 {tt.contiguity = dense<256> : tensor<1xi32>, tt.divisibility = dense<256> : tensor<1xi32>} : tensor<256xi1, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>>
^
test.mlir:149:13: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%97 = arith.muli %94, %c64_i32 : i32
^
test.mlir:150:13: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%98 = tt.expand_dims %96#3 {axis = 1 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>> -> tensor<128x1xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:151:13: remark: unsigned : [1, 2147483647] signed : [1, 2147483647]
%99 = tt.splat %arg6 : i32 -> tensor<128x1xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:151:13: remark: non-neg
%99 = tt.splat %arg6 : i32 -> tensor<128x1xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:152:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%100 = arith.muli %98, %99 : tensor<128x1xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:153:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%101 = tt.broadcast %100 : tensor<128x1xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>> -> tensor<128x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:154:14: remark: unsigned : [0, 64] signed : [0, 64]
%102 = tt.expand_dims %18 {axis = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>> -> tensor<1x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:154:14: remark: non-neg
%102 = tt.expand_dims %18 {axis = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>}>> -> tensor<1x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:155:14: remark: unsigned : [0, 64] signed : [0, 64]
%103 = tt.broadcast %102 : tensor<1x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>> -> tensor<128x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:155:14: remark: non-neg
%103 = tt.broadcast %102 : tensor<1x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>> -> tensor<128x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:156:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%104 = arith.addi %101, %103 : tensor<128x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:158:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%106 = arith.subi %arg5, %97 : i32
^
test.mlir:159:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%107 = tt.splat %106 : i32 -> tensor<1x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:160:14: remark: unsigned : [0, 1] signed : [-1, 0]
%108 = arith.cmpi slt, %37, %107 : tensor<1x64xi32, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:161:14: remark: unsigned : [0, 1] signed : [-1, 0]
%109 = tt.broadcast %108 : tensor<1x64xi1, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>> -> tensor<128x64xi1, #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>>
^
test.mlir:165:14: remark: unsigned : [0, 64] signed : [0, 64]
%113 = tt.expand_dims %45 {axis = 1 : i32} : tensor<64xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>> -> tensor<64x1xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:165:14: remark: non-neg
%113 = tt.expand_dims %45 {axis = 1 : i32} : tensor<64xi32, #ttg.slice<{dim = 1, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>> -> tensor<64x1xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:166:14: remark: unsigned : [0, 64] signed : [0, 64]
%114 = tt.broadcast %113 : tensor<64x1xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>> -> tensor<64x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:166:14: remark: non-neg
%114 = tt.broadcast %113 : tensor<64x1xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>> -> tensor<64x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:167:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%115 = tt.expand_dims %96#4 {axis = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>}>> -> tensor<1x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:168:14: remark: unsigned : [1, 2147483647] signed : [1, 2147483647]
%116 = tt.splat %arg7 : i32 -> tensor<1x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:168:14: remark: non-neg
%116 = tt.splat %arg7 : i32 -> tensor<1x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:169:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%117 = arith.muli %115, %116 : tensor<1x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:170:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%118 = tt.broadcast %117 : tensor<1x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>> -> tensor<64x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:171:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%119 = arith.addi %114, %118 : tensor<64x256xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:173:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%121 = tt.splat %106 : i32 -> tensor<64x1xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:174:14: remark: unsigned : [0, 1] signed : [-1, 0]
%122 = arith.cmpi slt, %63, %121 : tensor<64x1xi32, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:175:14: remark: unsigned : [0, 1] signed : [-1, 0]
%123 = tt.broadcast %122 : tensor<64x1xi1, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>> -> tensor<64x256xi1, #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>>
^
test.mlir:182:14: remark: unsigned : [0, 1] signed : [-1, 0]
%130 = arith.cmpi eq, %arg10, %79 : i32
^
test.mlir:185:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%137 = arith.muli %arg12, %c128_i32 : i32
^
test.mlir:186:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%138 = tt.splat %137 : i32 -> tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>>
^
test.mlir:187:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%139 = arith.addi %138, %77 : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>>
^
test.mlir:188:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%140 = arith.muli %arg13, %c256_i32 : i32
^
test.mlir:189:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%141 = tt.splat %140 : i32 -> tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>>
^
test.mlir:190:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%142 = arith.addi %141, %78 : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>>
^
test.mlir:191:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%143 = tt.expand_dims %139 {axis = 1 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>> -> tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:192:16: remark: unsigned : [0, 128] signed : [0, 128]
%144 = tt.expand_dims %77 {axis = 1 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>> -> tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:192:16: remark: non-neg
%144 = tt.expand_dims %77 {axis = 1 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>> -> tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:193:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%145 = arith.muli %arg8, %137 : i32
^
test.mlir:194:16: remark: unsigned : [1, 2147483647] signed : [1, 2147483647]
%146 = tt.splat %arg8 : i32 -> tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:194:16: remark: non-neg
%146 = tt.splat %arg8 : i32 -> tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:195:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%147 = arith.muli %146, %144 : tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:197:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%149 = tt.expand_dims %142 {axis = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>> -> tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:198:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%150 = tt.broadcast %147 : tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>> -> tensor<128x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:199:16: remark: unsigned : [0, 256] signed : [0, 256]
%151 = tt.expand_dims %78 {axis = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>> -> tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:199:16: remark: non-neg
%151 = tt.expand_dims %78 {axis = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>> -> tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:200:16: remark: unsigned : [0, 256] signed : [0, 256]
%152 = tt.broadcast %151 : tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>> -> tensor<128x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:200:16: remark: non-neg
%152 = tt.broadcast %151 : tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>> -> tensor<128x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:202:16: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%154 = arith.addi %152, %150 : tensor<128x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:203:16: remark: unsigned : [1, 2147483647] signed : [1, 2147483647]
%155 = tt.splat %arg3 : i32 -> tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:203:16: remark: non-neg
%155 = tt.splat %arg3 : i32 -> tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:204:16: remark: unsigned : [0, 1] signed : [-1, 0]
%156 = arith.cmpi slt, %143, %155 : tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:205:16: remark: unsigned : [1, 2147483647] signed : [1, 2147483647]
%157 = tt.splat %arg4 : i32 -> tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:205:16: remark: non-neg
%157 = tt.splat %arg4 : i32 -> tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:206:16: remark: unsigned : [0, 1] signed : [-1, 0]
%158 = arith.cmpi slt, %149, %157 : tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:207:16: remark: unsigned : [0, 1] signed : [-1, 0]
%159 = tt.broadcast %156 : tensor<128x1xi1, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>> -> tensor<128x256xi1, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:208:16: remark: unsigned : [0, 1] signed : [-1, 0]
%160 = tt.broadcast %158 : tensor<1x256xi1, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>> -> tensor<128x256xi1, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:209:16: remark: unsigned : [0, 1] signed : [-1, 0]
%161 = arith.andi %159, %160 : tensor<128x256xi1, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:215:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%132 = arith.addi %arg17, %c1_i32 : i32
^
test.mlir:216:14: remark: unsigned : [0, 1] signed : [-1, 0]
%133 = arith.cmpi slt, %132, %c1_i32 : i32
^
test.mlir:217:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%134 = arith.select %133, %132, %c0_i32 : i32
^
test.mlir:224:11: remark: unsigned : [0, 1] signed : [-1, 0]
%86 = arith.cmpi sge, %33, %c1_i32 : i32
^
test.mlir:233:11: remark: unsigned : [0, 1] signed : [-1, 0]
%90 = arith.cmpi eq, %85#0, %79 : i32
^
test.mlir:234:11: remark: unsigned : [0, 1] signed : [-1, 0]
%91 = arith.andi %86, %90 : i1
^
test.mlir:236:13: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%92 = arith.muli %85#2, %c128_i32 : i32
^
test.mlir:237:13: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%93 = tt.splat %92 : i32 -> tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>>
^
test.mlir:238:13: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%94 = arith.addi %93, %77 : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>>
^
test.mlir:239:13: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%95 = arith.muli %85#3, %c256_i32 : i32
^
test.mlir:240:13: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%96 = tt.splat %95 : i32 -> tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>>
^
test.mlir:241:13: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%97 = arith.addi %96, %78 : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>>
^
test.mlir:242:13: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%98 = tt.expand_dims %94 {axis = 1 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>> -> tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:243:13: remark: unsigned : [0, 128] signed : [0, 128]
%99 = tt.expand_dims %77 {axis = 1 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>> -> tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:243:13: remark: non-neg
%99 = tt.expand_dims %77 {axis = 1 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>> -> tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:244:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%100 = arith.muli %arg8, %92 : i32
^
test.mlir:245:14: remark: unsigned : [1, 2147483647] signed : [1, 2147483647]
%101 = tt.splat %arg8 : i32 -> tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:245:14: remark: non-neg
%101 = tt.splat %arg8 : i32 -> tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:246:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%102 = arith.muli %101, %99 : tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:248:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%104 = tt.expand_dims %97 {axis = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>> -> tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:249:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%105 = tt.broadcast %102 : tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>> -> tensor<128x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:250:14: remark: unsigned : [0, 256] signed : [0, 256]
%106 = tt.expand_dims %78 {axis = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>> -> tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:250:14: remark: non-neg
%106 = tt.expand_dims %78 {axis = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>}>> -> tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:251:14: remark: unsigned : [0, 256] signed : [0, 256]
%107 = tt.broadcast %106 : tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>> -> tensor<128x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:251:14: remark: non-neg
%107 = tt.broadcast %106 : tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>> -> tensor<128x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:253:14: remark: unsigned : [0, 4294967295] signed : [-2147483648, 2147483647]
%109 = arith.addi %107, %105 : tensor<128x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:254:14: remark: unsigned : [1, 2147483647] signed : [1, 2147483647]
%110 = tt.splat %arg3 : i32 -> tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:254:14: remark: non-neg
%110 = tt.splat %arg3 : i32 -> tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:255:14: remark: unsigned : [0, 1] signed : [-1, 0]
%111 = arith.cmpi slt, %98, %110 : tensor<128x1xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:256:14: remark: unsigned : [1, 2147483647] signed : [1, 2147483647]
%112 = tt.splat %arg4 : i32 -> tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:256:14: remark: non-neg
%112 = tt.splat %arg4 : i32 -> tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:257:14: remark: unsigned : [0, 1] signed : [-1, 0]
%113 = arith.cmpi slt, %104, %112 : tensor<1x256xi32, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:258:14: remark: unsigned : [0, 1] signed : [-1, 0]
%114 = tt.broadcast %111 : tensor<128x1xi1, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>> -> tensor<128x256xi1, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:259:14: remark: unsigned : [0, 1] signed : [-1, 0]
%115 = tt.broadcast %113 : tensor<1x256xi1, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>> -> tensor<128x256xi1, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
test.mlir:260:14: remark: unsigned : [0, 1] signed : [-1, 0]
%116 = arith.andi %114, %115 : tensor<128x256xi1, #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>>
^
#blocked = #ttg.blocked<{sizePerThread = [8, 1], threadsPerWarp = [8, 8], warpsPerCTA = [1, 8], order = [0, 1]}>
#blocked1 = #ttg.blocked<{sizePerThread = [1, 8], threadsPerWarp = [8, 8], warpsPerCTA = [8, 1], order = [1, 0]}>
#mma = #ttg.amd_mfma<{versionMajor = 3, versionMinor = 0, warpsPerCTA = [2, 4], instrShape = [32, 32], isTransposed = true}>
#shared = #ttg.swizzled_shared<{vec = 4, perPhase = 1, maxPhase = 16, order = [1, 0]}>
#shared1 = #ttg.swizzled_shared<{vec = 4, perPhase = 1, maxPhase = 16, order = [0, 1]}>
#smem = #ttg.shared_memory
module attributes {"ttg.num-ctas" = 1 : i32, "ttg.num-warps" = 8 : i32, ttg.target = "hip:gfx942", "ttg.threads-per-warp" = 64 : i32} {
tt.func public @matmul_kernel_persistent(%arg0: !tt.ptr<f16> {tt.divisibility = 16 : i32, tt.pointer_range = 32 : i32}, %arg1: !tt.ptr<f16> {tt.divisibility = 16 : i32, tt.pointer_range = 32 : i32}, %arg2: !tt.ptr<f16> {tt.divisibility = 16 : i32, tt.pointer_range = 32 : i32}, %arg3: i32 {tt.divisibility = 16 : i32}, %arg4: i32 {tt.divisibility = 16 : i32}, %arg5: i32 {tt.divisibility = 16 : i32}, %arg6: i32 {tt.divisibility = 16 : i32}, %arg7: i32 {tt.divisibility = 16 : i32}, %arg8: i32 {tt.divisibility = 16 : i32}) attributes {noinline = false} {
%cst = arith.constant dense<0.000000e+00> : tensor<128x256xf32, #mma>
%true = arith.constant true
%cst_0 = arith.constant dense<0.000000e+00> : tensor<64x256xf16, #blocked>
%cst_1 = arith.constant dense<0> : tensor<256xi32, #ttg.slice<{dim = 0, parent = #blocked}>>
%cst_2 = arith.constant dense<0.000000e+00> : tensor<128x64xf16, #blocked1>
%c1_i32 = arith.constant 1 : i32
%c304_i32 = arith.constant 304 : i32
%c64_i32 = arith.constant 64 : i32
%c63_i32 = arith.constant 63 : i32
%cst_3 = arith.constant dense<0> : tensor<128xi32, #ttg.slice<{dim = 1, parent = #blocked1}>>
%c128_i32 = arith.constant 128 : i32
%c127_i32 = arith.constant 127 : i32
%c8_i32 = arith.constant 8 : i32
%c256_i32 = arith.constant 256 : i32
%c255_i32 = arith.constant 255 : i32
%c0_i32 = arith.constant 0 : i32
%0 = tt.make_range {end = 128 : i32, start = 0 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #blocked1}>>
%1 = tt.get_program_id x : i32
%2 = arith.addi %arg4, %c255_i32 : i32
%3 = arith.divsi %2, %c256_i32 : i32
%4 = arith.muli %3, %c8_i32 : i32
%5 = arith.divsi %1, %4 : i32
%6 = arith.muli %5, %c8_i32 : i32
%7 = arith.addi %arg3, %c127_i32 : i32
%8 = arith.divsi %7, %c128_i32 : i32
%9 = arith.subi %8, %6 : i32
%10 = arith.minsi %9, %c8_i32 : i32
%11 = arith.remsi %1, %10 : i32
%12 = arith.addi %6, %11 : i32
%13 = arith.muli %12, %c128_i32 : i32
%14 = arith.subi %arg3, %13 : i32
%15 = tt.splat %14 : i32 -> tensor<128xi32, #ttg.slice<{dim = 1, parent = #blocked1}>>
%16 = arith.cmpi slt, %0, %15 : tensor<128xi32, #ttg.slice<{dim = 1, parent = #blocked1}>>
%17 = arith.select %16, %0, %cst_3 {tt.contiguity = dense<128> : tensor<1xi32>, tt.divisibility = dense<128> : tensor<1xi32>} : tensor<128xi1, #ttg.slice<{dim = 1, parent = #blocked1}>>, tensor<128xi32, #ttg.slice<{dim = 1, parent = #blocked1}>>
%18 = tt.make_range {end = 64 : i32, start = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 0, parent = #blocked1}>>
%19 = tt.expand_dims %17 {axis = 1 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #blocked1}>> -> tensor<128x1xi32, #blocked1>
%20 = tt.splat %arg6 : i32 -> tensor<128x1xi32, #blocked1>
%21 = arith.muli %19, %20 : tensor<128x1xi32, #blocked1>
%22 = tt.broadcast %21 : tensor<128x1xi32, #blocked1> -> tensor<128x64xi32, #blocked1>
%23 = tt.expand_dims %18 {axis = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 0, parent = #blocked1}>> -> tensor<1x64xi32, #blocked1>
%24 = tt.broadcast %23 : tensor<1x64xi32, #blocked1> -> tensor<128x64xi32, #blocked1>
%25 = arith.addi %22, %24 : tensor<128x64xi32, #blocked1>
%26 = arith.addi %arg5, %c63_i32 : i32
%27 = arith.divsi %26, %c64_i32 : i32
%28 = arith.muli %8, %3 : i32
%29 = arith.divsi %28, %c304_i32 : i32
%30 = arith.remsi %28, %c304_i32 : i32
%31 = arith.cmpi slt, %1, %30 : i32
%32 = scf.if %31 -> (i32) {
%92 = arith.addi %29, %c1_i32 : i32
scf.yield %92 : i32
} else {
scf.yield %29 : i32
}
%33 = arith.muli %27, %32 : i32
%34 = arith.cmpi sgt, %33, %c0_i32 : i32
%35 = tt.splat %34 : i1 -> tensor<128x64xi1, #blocked1>
%36 = tt.make_range {end = 64 : i32, start = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 0, parent = #blocked1}>>
%37 = tt.expand_dims %36 {axis = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 0, parent = #blocked1}>> -> tensor<1x64xi32, #blocked1>
%38 = tt.splat %arg5 : i32 -> tensor<1x64xi32, #blocked1>
%39 = arith.cmpi slt, %37, %38 : tensor<1x64xi32, #blocked1>
%40 = tt.broadcast %39 : tensor<1x64xi1, #blocked1> -> tensor<128x64xi1, #blocked1>
%41 = arith.andi %35, %40 : tensor<128x64xi1, #blocked1>
%42 = tt.splat %arg0 : !tt.ptr<f16> -> tensor<128x64x!tt.ptr<f16>, #blocked1>
%43 = tt.addptr %42, %25 : tensor<128x64x!tt.ptr<f16>, #blocked1>, tensor<128x64xi32, #blocked1>
%44 = tt.load %43, %41, %cst_2 {OpIdx = #amdgpu.OpIdx<0>} : tensor<128x64x!tt.ptr<f16>, #blocked1>
%45 = tt.make_range {end = 64 : i32, start = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 1, parent = #blocked}>>
%46 = tt.make_range {end = 256 : i32, start = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #blocked}>>
%47 = arith.remsi %1, %4 : i32
%48 = arith.divsi %47, %10 : i32
%49 = arith.muli %48, %c256_i32 : i32
%50 = arith.subi %arg4, %49 : i32
%51 = tt.splat %50 : i32 -> tensor<256xi32, #ttg.slice<{dim = 0, parent = #blocked}>>
%52 = arith.cmpi slt, %46, %51 : tensor<256xi32, #ttg.slice<{dim = 0, parent = #blocked}>>
%53 = arith.select %52, %46, %cst_1 {tt.contiguity = dense<256> : tensor<1xi32>, tt.divisibility = dense<256> : tensor<1xi32>} : tensor<256xi1, #ttg.slice<{dim = 0, parent = #blocked}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #blocked}>>
%54 = tt.expand_dims %45 {axis = 1 : i32} : tensor<64xi32, #ttg.slice<{dim = 1, parent = #blocked}>> -> tensor<64x1xi32, #blocked>
%55 = tt.broadcast %54 : tensor<64x1xi32, #blocked> -> tensor<64x256xi32, #blocked>
%56 = tt.expand_dims %53 {axis = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #blocked}>> -> tensor<1x256xi32, #blocked>
%57 = tt.splat %arg7 : i32 -> tensor<1x256xi32, #blocked>
%58 = arith.muli %56, %57 : tensor<1x256xi32, #blocked>
%59 = tt.broadcast %58 : tensor<1x256xi32, #blocked> -> tensor<64x256xi32, #blocked>
%60 = arith.addi %55, %59 : tensor<64x256xi32, #blocked>
%61 = tt.splat %34 : i1 -> tensor<64x256xi1, #blocked>
%62 = tt.make_range {end = 64 : i32, start = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 1, parent = #blocked}>>
%63 = tt.expand_dims %62 {axis = 1 : i32} : tensor<64xi32, #ttg.slice<{dim = 1, parent = #blocked}>> -> tensor<64x1xi32, #blocked>
%64 = tt.splat %arg5 : i32 -> tensor<64x1xi32, #blocked>
%65 = arith.cmpi slt, %63, %64 : tensor<64x1xi32, #blocked>
%66 = tt.broadcast %65 : tensor<64x1xi1, #blocked> -> tensor<64x256xi1, #blocked>
%67 = arith.andi %61, %66 : tensor<64x256xi1, #blocked>
%68 = tt.splat %arg1 : !tt.ptr<f16> -> tensor<64x256x!tt.ptr<f16>, #blocked>
%69 = tt.addptr %68, %60 : tensor<64x256x!tt.ptr<f16>, #blocked>, tensor<64x256xi32, #blocked>
%70 = tt.load %69, %67, %cst_0 {OpIdx = #amdgpu.OpIdx<1>} : tensor<64x256x!tt.ptr<f16>, #blocked>
%71 = arith.cmpi sgt, %arg3, %c0_i32 : i32
llvm.intr.assume %71 : i1
%72 = arith.cmpi sgt, %arg4, %c0_i32 : i32
llvm.intr.assume %72 : i1
%73 = arith.cmpi sgt, %arg5, %c0_i32 : i32
llvm.intr.assume %73 : i1
%74 = arith.cmpi sgt, %arg6, %c0_i32 : i32
llvm.intr.assume %74 : i1
llvm.intr.assume %true : i1
llvm.intr.assume %true : i1
%75 = arith.cmpi sgt, %arg7, %c0_i32 : i32
llvm.intr.assume %75 : i1
%76 = arith.cmpi sgt, %arg8, %c0_i32 : i32
llvm.intr.assume %76 : i1
llvm.intr.assume %true : i1
%77 = tt.make_range {end = 128 : i32, start = 0 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #mma}>>
%78 = tt.make_range {end = 256 : i32, start = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #mma}>>
%79 = arith.subi %27, %c1_i32 : i32
%80 = ttg.local_alloc : () -> !ttg.memdesc<1x128x64xf16, #shared, #smem, mutable>
%81 = ttg.local_alloc : () -> !ttg.memdesc<1x64x256xf16, #shared1, #smem, mutable>
%82 = ttg.memdesc_subview %80[%c0_i32, %c0_i32, %c0_i32] : !ttg.memdesc<1x128x64xf16, #shared, #smem, mutable> -> !ttg.memdesc<128x64xf16, #shared, #smem, mutable>
ttg.local_store %44, %82 {OpIdx = #amdgpu.OpIdx<0>} : tensor<128x64xf16, #blocked1> -> !ttg.memdesc<128x64xf16, #shared, #smem, mutable>
%83 = ttg.memdesc_subview %81[%c0_i32, %c0_i32, %c0_i32] : !ttg.memdesc<1x64x256xf16, #shared1, #smem, mutable> -> !ttg.memdesc<64x256xf16, #shared1, #smem, mutable>
ttg.local_store %70, %83 {OpIdx = #amdgpu.OpIdx<1>} : tensor<64x256xf16, #blocked> -> !ttg.memdesc<64x256xf16, #shared1, #smem, mutable>
%84 = arith.subi %33, %c1_i32 : i32
%85:10 = scf.for %arg9 = %c0_i32 to %84 step %c1_i32 iter_args(%arg10 = %c0_i32, %arg11 = %1, %arg12 = %12, %arg13 = %48, %arg14 = %cst, %arg15 = %17, %arg16 = %53, %arg17 = %c0_i32, %arg18 = %82, %arg19 = %83) -> (i32, i32, i32, i32, tensor<128x256xf32, #mma>, tensor<128xi32, #ttg.slice<{dim = 1, parent = #blocked1}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #blocked}>>, i32, !ttg.memdesc<128x64xf16, #shared, #smem, mutable>, !ttg.memdesc<64x256xf16, #shared1, #smem, mutable>) : i32 {
%92 = arith.cmpi eq, %arg10, %79 : i32
%93 = arith.addi %arg10, %c1_i32 : i32
%94 = arith.select %92, %c0_i32, %93 : i32
%95 = arith.cmpi eq, %94, %c0_i32 : i32
%96:5 = scf.if %95 -> (i32, i32, i32, tensor<128xi32, #ttg.slice<{dim = 1, parent = #blocked1}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #blocked}>>) {
%137 = arith.addi %arg11, %c304_i32 : i32
%138 = arith.divsi %137, %4 : i32
%139 = arith.muli %138, %c8_i32 : i32
%140 = arith.subi %8, %139 : i32
%141 = arith.minsi %140, %c8_i32 : i32
%142 = arith.remsi %137, %141 : i32
%143 = arith.addi %139, %142 : i32
%144 = arith.remsi %137, %4 : i32
%145 = arith.divsi %144, %141 : i32
%146 = arith.muli %143, %c128_i32 : i32
%147 = arith.muli %145, %c256_i32 : i32
%148 = arith.subi %arg3, %146 : i32
%149 = tt.splat %148 : i32 -> tensor<128xi32, #ttg.slice<{dim = 1, parent = #blocked1}>>
%150 = arith.cmpi slt, %0, %149 : tensor<128xi32, #ttg.slice<{dim = 1, parent = #blocked1}>>
%151 = arith.select %150, %0, %cst_3 {tt.contiguity = dense<128> : tensor<1xi32>, tt.divisibility = dense<128> : tensor<1xi32>} : tensor<128xi1, #ttg.slice<{dim = 1, parent = #blocked1}>>, tensor<128xi32, #ttg.slice<{dim = 1, parent = #blocked1}>>
%152 = arith.subi %arg4, %147 : i32
%153 = tt.splat %152 : i32 -> tensor<256xi32, #ttg.slice<{dim = 0, parent = #blocked}>>
%154 = arith.cmpi slt, %46, %153 : tensor<256xi32, #ttg.slice<{dim = 0, parent = #blocked}>>
%155 = arith.select %154, %46, %cst_1 {tt.contiguity = dense<256> : tensor<1xi32>, tt.divisibility = dense<256> : tensor<1xi32>} : tensor<256xi1, #ttg.slice<{dim = 0, parent = #blocked}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #blocked}>>
scf.yield %137, %143, %145, %151, %155 : i32, i32, i32, tensor<128xi32, #ttg.slice<{dim = 1, parent = #blocked1}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #blocked}>>
} else {
scf.yield %arg11, %arg12, %arg13, %arg15, %arg16 : i32, i32, i32, tensor<128xi32, #ttg.slice<{dim = 1, parent = #blocked1}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #blocked}>>
}
%97 = arith.muli %94, %c64_i32 : i32
%98 = tt.expand_dims %96#3 {axis = 1 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #blocked1}>> -> tensor<128x1xi32, #blocked1>
%99 = tt.splat %arg6 : i32 -> tensor<128x1xi32, #blocked1>
%100 = arith.muli %98, %99 : tensor<128x1xi32, #blocked1>
%101 = tt.broadcast %100 : tensor<128x1xi32, #blocked1> -> tensor<128x64xi32, #blocked1>
%102 = tt.expand_dims %18 {axis = 0 : i32} : tensor<64xi32, #ttg.slice<{dim = 0, parent = #blocked1}>> -> tensor<1x64xi32, #blocked1>
%103 = tt.broadcast %102 : tensor<1x64xi32, #blocked1> -> tensor<128x64xi32, #blocked1>
%104 = arith.addi %101, %103 : tensor<128x64xi32, #blocked1>
%105 = tt.addptr %arg0, %97 : !tt.ptr<f16>, i32
%106 = arith.subi %arg5, %97 : i32
%107 = tt.splat %106 : i32 -> tensor<1x64xi32, #blocked1>
%108 = arith.cmpi slt, %37, %107 : tensor<1x64xi32, #blocked1>
%109 = tt.broadcast %108 : tensor<1x64xi1, #blocked1> -> tensor<128x64xi1, #blocked1>
%110 = tt.splat %105 : !tt.ptr<f16> -> tensor<128x64x!tt.ptr<f16>, #blocked1>
%111 = tt.addptr %110, %104 : tensor<128x64x!tt.ptr<f16>, #blocked1>, tensor<128x64xi32, #blocked1>
%112 = tt.load %111, %109, %cst_2 {OpIdx = #amdgpu.OpIdx<0>} : tensor<128x64x!tt.ptr<f16>, #blocked1>
%113 = tt.expand_dims %45 {axis = 1 : i32} : tensor<64xi32, #ttg.slice<{dim = 1, parent = #blocked}>> -> tensor<64x1xi32, #blocked>
%114 = tt.broadcast %113 : tensor<64x1xi32, #blocked> -> tensor<64x256xi32, #blocked>
%115 = tt.expand_dims %96#4 {axis = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #blocked}>> -> tensor<1x256xi32, #blocked>
%116 = tt.splat %arg7 : i32 -> tensor<1x256xi32, #blocked>
%117 = arith.muli %115, %116 : tensor<1x256xi32, #blocked>
%118 = tt.broadcast %117 : tensor<1x256xi32, #blocked> -> tensor<64x256xi32, #blocked>
%119 = arith.addi %114, %118 : tensor<64x256xi32, #blocked>
%120 = tt.addptr %arg1, %97 : !tt.ptr<f16>, i32
%121 = tt.splat %106 : i32 -> tensor<64x1xi32, #blocked>
%122 = arith.cmpi slt, %63, %121 : tensor<64x1xi32, #blocked>
%123 = tt.broadcast %122 : tensor<64x1xi1, #blocked> -> tensor<64x256xi1, #blocked>
%124 = ttg.local_load %arg18 : !ttg.memdesc<128x64xf16, #shared, #smem, mutable> -> tensor<128x64xf16, #ttg.dot_op<{opIdx = 0, parent = #mma, kWidth = 4}>>
%125 = ttg.local_load %arg19 : !ttg.memdesc<64x256xf16, #shared1, #smem, mutable> -> tensor<64x256xf16, #ttg.dot_op<{opIdx = 1, parent = #mma, kWidth = 4}>>
%126 = tt.splat %120 : !tt.ptr<f16> -> tensor<64x256x!tt.ptr<f16>, #blocked>
%127 = tt.addptr %126, %119 : tensor<64x256x!tt.ptr<f16>, #blocked>, tensor<64x256xi32, #blocked>
%128 = tt.load %127, %123, %cst_0 {OpIdx = #amdgpu.OpIdx<1>} : tensor<64x256x!tt.ptr<f16>, #blocked>
%129 = tt.dot %124, %125, %arg14, inputPrecision = tf32 : tensor<128x64xf16, #ttg.dot_op<{opIdx = 0, parent = #mma, kWidth = 4}>> * tensor<64x256xf16, #ttg.dot_op<{opIdx = 1, parent = #mma, kWidth = 4}>> -> tensor<128x256xf32, #mma>
%130 = arith.cmpi eq, %arg10, %79 : i32
%131 = arith.select %130, %cst, %129 : tensor<128x256xf32, #mma>
scf.if %130 {
%137 = arith.muli %arg12, %c128_i32 : i32
%138 = tt.splat %137 : i32 -> tensor<128xi32, #ttg.slice<{dim = 1, parent = #mma}>>
%139 = arith.addi %138, %77 : tensor<128xi32, #ttg.slice<{dim = 1, parent = #mma}>>
%140 = arith.muli %arg13, %c256_i32 : i32
%141 = tt.splat %140 : i32 -> tensor<256xi32, #ttg.slice<{dim = 0, parent = #mma}>>
%142 = arith.addi %141, %78 : tensor<256xi32, #ttg.slice<{dim = 0, parent = #mma}>>
%143 = tt.expand_dims %139 {axis = 1 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #mma}>> -> tensor<128x1xi32, #mma>
%144 = tt.expand_dims %77 {axis = 1 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #mma}>> -> tensor<128x1xi32, #mma>
%145 = arith.muli %arg8, %137 : i32
%146 = tt.splat %arg8 : i32 -> tensor<128x1xi32, #mma>
%147 = arith.muli %146, %144 : tensor<128x1xi32, #mma>
%148 = tt.addptr %arg2, %145 : !tt.ptr<f16>, i32
%149 = tt.expand_dims %142 {axis = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #mma}>> -> tensor<1x256xi32, #mma>
%150 = tt.broadcast %147 : tensor<128x1xi32, #mma> -> tensor<128x256xi32, #mma>
%151 = tt.expand_dims %78 {axis = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #mma}>> -> tensor<1x256xi32, #mma>
%152 = tt.broadcast %151 : tensor<1x256xi32, #mma> -> tensor<128x256xi32, #mma>
%153 = tt.addptr %148, %140 : !tt.ptr<f16>, i32
%154 = arith.addi %152, %150 : tensor<128x256xi32, #mma>
%155 = tt.splat %arg3 : i32 -> tensor<128x1xi32, #mma>
%156 = arith.cmpi slt, %143, %155 : tensor<128x1xi32, #mma>
%157 = tt.splat %arg4 : i32 -> tensor<1x256xi32, #mma>
%158 = arith.cmpi slt, %149, %157 : tensor<1x256xi32, #mma>
%159 = tt.broadcast %156 : tensor<128x1xi1, #mma> -> tensor<128x256xi1, #mma>
%160 = tt.broadcast %158 : tensor<1x256xi1, #mma> -> tensor<128x256xi1, #mma>
%161 = arith.andi %159, %160 : tensor<128x256xi1, #mma>
%162 = arith.truncf %129 : tensor<128x256xf32, #mma> to tensor<128x256xf16, #mma>
%163 = tt.splat %153 : !tt.ptr<f16> -> tensor<128x256x!tt.ptr<f16>, #mma>
%164 = tt.addptr %163, %154 : tensor<128x256x!tt.ptr<f16>, #mma>, tensor<128x256xi32, #mma>
tt.store %164, %162, %161 : tensor<128x256x!tt.ptr<f16>, #mma>
}
%132 = arith.addi %arg17, %c1_i32 : i32
%133 = arith.cmpi slt, %132, %c1_i32 : i32
%134 = arith.select %133, %132, %c0_i32 : i32
%135 = ttg.memdesc_subview %80[%134, %c0_i32, %c0_i32] : !ttg.memdesc<1x128x64xf16, #shared, #smem, mutable> -> !ttg.memdesc<128x64xf16, #shared, #smem, mutable>
ttg.local_store %112, %135 {OpIdx = #amdgpu.OpIdx<0>} : tensor<128x64xf16, #blocked1> -> !ttg.memdesc<128x64xf16, #shared, #smem, mutable>
%136 = ttg.memdesc_subview %81[%134, %c0_i32, %c0_i32] : !ttg.memdesc<1x64x256xf16, #shared1, #smem, mutable> -> !ttg.memdesc<64x256xf16, #shared1, #smem, mutable>
ttg.local_store %128, %136 {OpIdx = #amdgpu.OpIdx<1>} : tensor<64x256xf16, #blocked> -> !ttg.memdesc<64x256xf16, #shared1, #smem, mutable>
scf.yield %94, %96#0, %96#1, %96#2, %131, %96#3, %96#4, %134, %135, %136 : i32, i32, i32, i32, tensor<128x256xf32, #mma>, tensor<128xi32, #ttg.slice<{dim = 1, parent = #blocked1}>>, tensor<256xi32, #ttg.slice<{dim = 0, parent = #blocked}>>, i32, !ttg.memdesc<128x64xf16, #shared, #smem, mutable>, !ttg.memdesc<64x256xf16, #shared1, #smem, mutable>
}
%86 = arith.cmpi sge, %33, %c1_i32 : i32
%87 = ttg.local_load %85#8 : !ttg.memdesc<128x64xf16, #shared, #smem, mutable> -> tensor<128x64xf16, #ttg.dot_op<{opIdx = 0, parent = #mma, kWidth = 4}>>
%88 = ttg.local_load %85#9 : !ttg.memdesc<64x256xf16, #shared1, #smem, mutable> -> tensor<64x256xf16, #ttg.dot_op<{opIdx = 1, parent = #mma, kWidth = 4}>>
%89 = scf.if %86 -> (tensor<128x256xf32, #mma>) {
%92 = tt.dot %87, %88, %85#4, inputPrecision = tf32 : tensor<128x64xf16, #ttg.dot_op<{opIdx = 0, parent = #mma, kWidth = 4}>> * tensor<64x256xf16, #ttg.dot_op<{opIdx = 1, parent = #mma, kWidth = 4}>> -> tensor<128x256xf32, #mma>
scf.yield %92 : tensor<128x256xf32, #mma>
} else {
scf.yield %85#4 : tensor<128x256xf32, #mma>
}
%90 = arith.cmpi eq, %85#0, %79 : i32
%91 = arith.andi %86, %90 : i1
scf.if %91 {
%92 = arith.muli %85#2, %c128_i32 : i32
%93 = tt.splat %92 : i32 -> tensor<128xi32, #ttg.slice<{dim = 1, parent = #mma}>>
%94 = arith.addi %93, %77 : tensor<128xi32, #ttg.slice<{dim = 1, parent = #mma}>>
%95 = arith.muli %85#3, %c256_i32 : i32
%96 = tt.splat %95 : i32 -> tensor<256xi32, #ttg.slice<{dim = 0, parent = #mma}>>
%97 = arith.addi %96, %78 : tensor<256xi32, #ttg.slice<{dim = 0, parent = #mma}>>
%98 = tt.expand_dims %94 {axis = 1 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #mma}>> -> tensor<128x1xi32, #mma>
%99 = tt.expand_dims %77 {axis = 1 : i32} : tensor<128xi32, #ttg.slice<{dim = 1, parent = #mma}>> -> tensor<128x1xi32, #mma>
%100 = arith.muli %arg8, %92 : i32
%101 = tt.splat %arg8 : i32 -> tensor<128x1xi32, #mma>
%102 = arith.muli %101, %99 : tensor<128x1xi32, #mma>
%103 = tt.addptr %arg2, %100 : !tt.ptr<f16>, i32
%104 = tt.expand_dims %97 {axis = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #mma}>> -> tensor<1x256xi32, #mma>
%105 = tt.broadcast %102 : tensor<128x1xi32, #mma> -> tensor<128x256xi32, #mma>
%106 = tt.expand_dims %78 {axis = 0 : i32} : tensor<256xi32, #ttg.slice<{dim = 0, parent = #mma}>> -> tensor<1x256xi32, #mma>
%107 = tt.broadcast %106 : tensor<1x256xi32, #mma> -> tensor<128x256xi32, #mma>
%108 = tt.addptr %103, %95 : !tt.ptr<f16>, i32
%109 = arith.addi %107, %105 : tensor<128x256xi32, #mma>
%110 = tt.splat %arg3 : i32 -> tensor<128x1xi32, #mma>
%111 = arith.cmpi slt, %98, %110 : tensor<128x1xi32, #mma>
%112 = tt.splat %arg4 : i32 -> tensor<1x256xi32, #mma>
%113 = arith.cmpi slt, %104, %112 : tensor<1x256xi32, #mma>
%114 = tt.broadcast %111 : tensor<128x1xi1, #mma> -> tensor<128x256xi1, #mma>
%115 = tt.broadcast %113 : tensor<1x256xi1, #mma> -> tensor<128x256xi1, #mma>
%116 = arith.andi %114, %115 : tensor<128x256xi1, #mma>
%117 = arith.truncf %89 : tensor<128x256xf32, #mma> to tensor<128x256xf16, #mma>
%118 = tt.splat %108 : !tt.ptr<f16> -> tensor<128x256x!tt.ptr<f16>, #mma>
%119 = tt.addptr %118, %109 : tensor<128x256x!tt.ptr<f16>, #mma>, tensor<128x256xi32, #mma>
tt.store %119, %117, %116 : tensor<128x256x!tt.ptr<f16>, #mma>
}
ttg.local_dealloc %80 : !ttg.memdesc<1x128x64xf16, #shared, #smem, mutable>
ttg.local_dealloc %81 : !ttg.memdesc<1x64x256xf16, #shared1, #smem, mutable>
tt.return
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment