// RUN: triton-tensor-layout -i %s -alias-names="blocked" -t "tensor<16x16xf16>" | FileCheck %s --check-prefix=CHECK-BLOCKED
// RUN: triton-tensor-layout -i %s -alias-names="mfma" -t "tensor<16x16xf16>" | FileCheck %s --check-prefix=CHECK-MFMA
// RUN: triton-tensor-layout -l "#ttg.amd_mfma<{version = 2, warpsPerCTA = [4, 1], instrShape = [16, 16], isTransposed = true}>" -t "tensor<16x16xf16>" | FileCheck %s --check-prefix=CHECK-MFMA
// RUN: triton-tensor-layout -i %s -alias-names="mfma" -t "tensor<16x16xf16>" -use-hw-view | FileCheck %s --check-prefix=CHECK-HW
#blocked = #ttg.blocked<{sizePerThread = [1, 4], threadsPerWarp = [4, 8], warpsPerCTA = [4, 1], order = [1, 0]}>
#mfma = #ttg.amd_mfma<{version = 2, warpsPerCTA = [4, 1], instrShape = [16, 16], isTransposed = true}>
tt.func @print(%A : !tt.ptr<f16>) {
%cst0 = arith.constant dense<0.000000e+00> : tensor<16x16xf16, #blocked>
%cst1 = arith.constant dense<0.00e+00> : tensor<16x16xf16, #mfma>
tt.return
}
// CHECK-BLOCKED: Print layout attribute: #blocked = #ttg.blocked<{sizePerThread = [1, 4], threadsPerWarp = [4, 8], warpsPerCTA = [4, 1], order = [1, 0]}>
// CHECK-BLOCKED: T0:0| T4:0, T0:1| T4:1, T0:2| T4:2, T0:3| T4:3, T1:0| T5:0, T1:1| T5:1, T1:2| T5:2, T1:3| T5:3, T2:0| T6:0, T2:1| T6:1, T2:2| T6:2, T2:3| T6:3, T3:0| T7:0, T3:1| T7:1, T3:2| T7:2, T3:3| T7:3
// CHECK-BLOCKED: T8:0| T12:0, T8:1| T12:1, T8:2| T12:2, T8:3| T12:3, T9:0| T13:0, T9:1| T13:1, T9:2| T13:2, T9:3| T13:3, T10:0| T14:0, T10:1| T14:1, T10:2| T14:2, T10:3| T14:3, T11:0| T15:0, T11:1| T15:1, T11:2| T15:2, T11:3| T15:3
// CHECK-BLOCKED: T16:0| T20:0, T16:1| T20:1, T16:2| T20:2, T16:3| T20:3, T17:0| T21:0, T17:1| T21:1, T17:2| T21:2, T17:3| T21:3, T18:0| T22:0, T18:1| T22:1, T18:2| T22:2, T18:3| T22:3, T19:0| T23:0, T19:1| T23:1, T19:2| T23:2, T19:3| T23:3
// CHECK-BLOCKED: T24:0| T28:0, T24:1| T28:1, T24:2| T28:2, T24:3| T28:3, T25:0| T29:0, T25:1| T29:1, T25:2| T29:2, T25:3| T29:3, T26:0| T30:0, T26:1| T30:1, T26:2| T30:2, T26:3| T30:3, T27:0| T31:0, T27:1| T31:1, T27:2| T31:2, T27:3| T31:3
// CHECK-BLOCKED: T32:0| T36:0, T32:1| T36:1, T32:2| T36:2, T32:3| T36:3, T33:0| T37:0, T33:1| T37:1, T33:2| T37:2, T33:3| T37:3, T34:0| T38:0, T34:1| T38:1, T34:2| T38:2, T34:3| T38:3, T35:0| T39:0, T35:1| T39:1, T35:2| T39:2, T35:3| T39:3
// CHECK-BLOCKED: T40:0| T44:0, T40:1| T44:1, T40:2| T44:2, T40:3| T44:3, T41:0| T45:0, T41:1| T45:1, T41:2| T45:2, T41:3| T45:3, T42:0| T46:0, T42:1| T46:1, T42:2| T46:2, T42:3| T46:3, T43:0| T47:0, T43:1| T47:1, T43:2| T47:2, T43:3| T47:3
// CHECK-BLOCKED: T48:0| T52:0, T48:1| T52:1, T48:2| T52:2, T48:3| T52:3, T49:0| T53:0, T49:1| T53:1, T49:2| T53:2, T49:3| T53:3, T50:0| T54:0, T50:1| T54:1, T50:2| T54:2, T50:3| T54:3, T51:0| T55:0, T51:1| T55:1, T51:2| T55:2, T51:3| T55:3
// CHECK-BLOCKED: T56:0| T60:0, T56:1| T60:1, T56:2| T60:2, T56:3| T60:3, T57:0| T61:0, T57:1| T61:1, T57:2| T61:2, T57:3| T61:3, T58:0| T62:0, T58:1| T62:1, T58:2| T62:2, T58:3| T62:3, T59:0| T63:0, T59:1| T63:1, T59:2| T63:2, T59:3| T63:3
// CHECK-BLOCKED: T64:0| T68:0, T64:1| T68:1, T64:2| T68:2, T64:3| T68:3, T65:0| T69:0, T65:1| T69:1, T65:2| T69:2, T65:3| T69:3, T66:0| T70:0, T66:1| T70:1, T66:2| T70:2, T66:3| T70:3, T67:0| T71:0, T67:1| T71:1, T67:2| T71:2, T67:3| T71:3
// CHECK-BLOCKED: T72:0| T76:0, T72:1| T76:1, T72:2| T76:2, T72:3| T76:3, T73:0| T77:0, T73:1| T77:1, T73:2| T77:2, T73:3| T77:3, T74:0| T78:0, T74:1| T78:1, T74:2| T78:2, T74:3| T78:3, T75:0| T79:0, T75:1| T79:1, T75:2| T79:2, T75:3| T79:3
// CHECK-BLOCKED: T80:0| T84:0, T80:1| T84:1, T80:2| T84:2, T80:3| T84:3, T81:0| T85:0, T81:1| T85:1, T81:2| T85:2, T81:3| T85:3, T82:0| T86:0, T82:1| T86:1, T82:2| T86:2, T82:3| T86:3, T83:0| T87:0, T83:1| T87:1, T83:2| T87:2, T83:3| T87:3
// CHECK-BLOCKED: T88:0| T92:0, T88:1| T92:1, T88:2| T92:2, T88:3| T92:3, T89:0| T93:0, T89:1| T93:1, T89:2| T93:2, T89:3| T93:3, T90:0| T94:0, T90:1| T94:1, T90:2| T94:2, T90:3| T94:3, T91:0| T95:0, T91:1| T95:1, T91:2| T95:2, T91:3| T95:3
// CHECK-BLOCKED: T96:0|T100:0, T96:1|T100:1, T96:2|T100:2, T96:3|T100:3, T97:0|T101:0, T97:1|T101:1, T97:2|T101:2, T97:3|T101:3, T98:0|T102:0, T98:1|T102:1, T98:2|T102:2, T98:3|T102:3, T99:0|T103:0, T99:1|T103:1, T99:2|T103:2, T99:3|T103:3
// CHECK-BLOCKED: T104:0|T108:0, T104:1|T108:1, T104:2|T108:2, T104:3|T108:3, T105:0|T109:0, T105:1|T109:1, T105:2|T109:2, T105:3|T109:3, T106:0|T110:0, T106:1|T110:1, T106:2|T110:2, T106:3|T110:3, T107:0|T111:0, T107:1|T111:1, T107:2|T111:2, T107:3|T111:3
// CHECK-BLOCKED: T112:0|T116:0, T112:1|T116:1, T112:2|T116:2, T112:3|T116:3, T113:0|T117:0, T113:1|T117:1, T113:2|T117:2, T113:3|T117:3, T114:0|T118:0, T114:1|T118:1, T114:2|T118:2, T114:3|T118:3, T115:0|T119:0, T115:1|T119:1, T115:2|T119:2, T115:3|T119:3
// CHECK-BLOCKED: T120:0|T124:0, T120:1|T124:1, T120:2|T124:2, T120:3|T124:3, T121:0|T125:0, T121:1|T125:1, T121:2|T125:2, T121:3|T125:3, T122:0|T126:0, T122:1|T126:1, T122:2|T126:2, T122:3|T126:3, T123:0|T127:0, T123:1|T127:1, T123:2|T127:2, T123:3|T127:3
// CHECK-MFMA: Print layout attribute: {{.*}}#ttg.amd_mfma<{version = 2, warpsPerCTA = [4, 1], instrShape = [16, 16], isTransposed = true}>
// CHECK-MFMA: T0:0| T64:0|T128:0|T192:0, T0:1| T64:1|T128:1|T192:1, T0:2| T64:2|T128:2|T192:2, T0:3| T64:3|T128:3|T192:3, T16:0| T80:0|T144:0|T208:0, T16:1| T80:1|T144:1|T208:1, T16:2| T80:2|T144:2|T208:2, T16:3| T80:3|T144:3|T208:3, T32:0| T96:0|T160:0|T224:0, T32:1| T96:1|T160:1|T224:1, T32:2| T96:2|T160:2|T224:2, T32:3| T96:3|T160:3|T224:3, T48:0|T112:0|T176:0|T240:0, T48:1|T112:1|T176:1|T240:1, T48:2|T112:2|T176:2|T240:2, T48:3|T112:3|T176:3|T240:3
// CHECK-MFMA: T1:0| T65:0|T129:0|T193:0, T1:1| T65:1|T129:1|T193:1, T1:2| T65:2|T129:2|T193:2, T1:3| T65:3|T129:3|T193:3, T17:0| T81:0|T145:0|T209:0, T17:1| T81:1|T145:1|T209:1, T17:2| T81:2|T145:2|T209:2, T17:3| T81:3|T145:3|T209:3, T33:0| T97:0|T161:0|T225:0, T33:1| T97:1|T161:1|T225:1, T33:2| T97:2|T161:2|T225:2, T33:3| T97:3|T161:3|T225:3, T49:0|T113:0|T177:0|T241:0, T49:1|T113:1|T177:1|T241:1, T49:2|T113:2|T177:2|T241:2, T49:3|T113:3|T177:3|T241:3
// CHECK-MFMA: T2:0| T66:0|T130:0|T194:0, T2:1| T66:1|T130:1|T194:1, T2:2| T66:2|T130:2|T194:2, T2:3| T66:3|T130:3|T194:3, T18:0| T82:0|T146:0|T210:0, T18:1| T82:1|T146:1|T210:1, T18:2| T82:2|T146:2|T210:2, T18:3| T82:3|T146:3|T210:3, T34:0| T98:0|T162:0|T226:0, T34:1| T98:1|T162:1|T226:1, T34:2| T98:2|T162:2|T226:2, T34:3| T98:3|T162:3|T226:3, T50:0|T114:0|T178:0|T242:0, T50:1|T114:1|T178:1|T242:1, T50:2|T114:2|T178:2|T242:2, T50:3|T114:3|T178:3|T242:3
// CHECK-MFMA: T3:0| T67:0|T131:0|T195:0, T3:1| T67:1|T131:1|T195:1, T3:2| T67:2|T131:2|T195:2, T3:3| T67:3|T131:3|T195:3, T19:0| T83:0|T147:0|T211:0, T19:1| T83:1|T147:1|T211:1, T19:2| T83:2|T147:2|T211:2, T19:3| T83:3|T147:3|T211:3, T35:0| T99:0|T163:0|T227:0, T35:1| T99:1|T163:1|T227:1, T35:2| T99:2|T163:2|T227:2, T35:3| T99:3|T163:3|T227:3, T51:0|T115:0|T179:0|T243:0, T51:1|T115:1|T179:1|T243:1, T51:2|T115:2|T179:2|T243:2, T51:3|T115:3|T179:3|T243:3
// CHECK-MFMA: T4:0| T68:0|T132:0|T196:0, T4:1| T68:1|T132:1|T196:1, T4:2| T68:2|T132:2|T196:2, T4:3| T68:3|T132:3|T196:3, T20:0| T84:0|T148:0|T212:0, T20:1| T84:1|T148:1|T212:1, T20:2| T84:2|T148:2|T212:2, T20:3| T84:3|T148:3|T212:3, T36:0|T100:0|T164:0|T228:0, T36:1|T100:1|T164:1|T228:1, T36:2|T100:2|T164:2|T228:2, T36:3|T100:3|T164:3|T228:3, T52:0|T116:0|T180:0|T244:0, T52:1|T116:1|T180:1|T244:1, T52:2|T116:2|T180:2|T244:2, T52:3|T116:3|T180:3|T244:3
// CHECK-MFMA: T5:0| T69:0|T133:0|T197:0, T5:1| T69:1|T133:1|T197:1, T5:2| T69:2|T133:2|T197:2, T5:3| T69:3|T133:3|T197:3, T21:0| T85:0|T149:0|T213:0, T21:1| T85:1|T149:1|T213:1, T21:2| T85:2|T149:2|T213:2, T21:3| T85:3|T149:3|T213:3, T37:0|T101:0|T165:0|T229:0, T37:1|T101:1|T165:1|T229:1, T37:2|T101:2|T165:2|T229:2, T37:3|T101:3|T165:3|T229:3, T53:0|T117:0|T181:0|T245:0, T53:1|T117:1|T181:1|T245:1, T53:2|T117:2|T181:2|T245:2, T53:3|T117:3|T181:3|T245:3
// CHECK-MFMA: T6:0| T70:0|T134:0|T198:0, T6:1| T70:1|T134:1|T198:1, T6:2| T70:2|T134:2|T198:2, T6:3| T70:3|T134:3|T198:3, T22:0| T86:0|T150:0|T214:0, T22:1| T86:1|T150:1|T214:1, T22:2| T86:2|T150:2|T214:2, T22:3| T86:3|T150:3|T214:3, T38:0|T102:0|T166:0|T230:0, T38:1|T102:1|T166:1|T230:1, T38:2|T102:2|T166:2|T230:2, T38:3|T102:3|T166:3|T230:3, T54:0|T118:0|T182:0|T246:0, T54:1|T118:1|T182:1|T246:1, T54:2|T118:2|T182:2|T246:2, T54:3|T118:3|T182:3|T246:3
// CHECK-MFMA: T7:0| T71:0|T135:0|T199:0, T7:1| T71:1|T135:1|T199:1, T7:2| T71:2|T135:2|T199:2, T7:3| T71:3|T135:3|T199:3, T23:0| T87:0|T151:0|T215:0, T23:1| T87:1|T151:1|T215:1, T23:2| T87:2|T151:2|T215:2, T23:3| T87:3|T151:3|T215:3, T39:0|T103:0|T167:0|T231:0, T39:1|T103:1|T167:1|T231:1, T39:2|T103:2|T167:2|T231:2, T39:3|T103:3|T167:3|T231:3, T55:0|T119:0|T183:0|T247:0, T55:1|T119:1|T183:1|T247:1, T55:2|T119:2|T183:2|T247:2, T55:3|T119:3|T183:3|T247:3
// CHECK-MFMA: T8:0| T72:0|T136:0|T200:0, T8:1| T72:1|T136:1|T200:1, T8:2| T72:2|T136:2|T200:2, T8:3| T72:3|T136:3|T200:3, T24:0| T88:0|T152:0|T216:0, T24:1| T88:1|T152:1|T216:1, T24:2| T88:2|T152:2|T216:2, T24:3| T88:3|T152:3|T216:3, T40:0|T104:0|T168:0|T232:0, T40:1|T104:1|T168:1|T232:1, T40:2|T104:2|T168:2|T232:2, T40:3|T104:3|T168:3|T232:3, T56:0|T120:0|T184:0|T248:0, T56:1|T120:1|T184:1|T248:1, T56:2|T120:2|T184:2|T248:2, T56:3|T120:3|T184:3|T248:3
// CHECK-MFMA: T9:0| T73:0|T137:0|T201:0, T9:1| T73:1|T137:1|T201:1, T9:2| T73:2|T137:2|T201:2, T9:3| T73:3|T137:3|T201:3, T25:0| T89:0|T153:0|T217:0, T25:1| T89:1|T153:1|T217:1, T25:2| T89:2|T153:2|T217:2, T25:3| T89:3|T153:3|T217:3, T41:0|T105:0|T169:0|T233:0, T41:1|T105:1|T169:1|T233:1, T41:2|T105:2|T169:2|T233:2, T41:3|T105:3|T169:3|T233:3, T57:0|T121:0|T185:0|T249:0, T57:1|T121:1|T185:1|T249:1, T57:2|T121:2|T185:2|T249:2, T57:3|T121:3|T185:3|T249:3
// CHECK-MFMA: T10:0| T74:0|T138:0|T202:0, T10:1| T74:1|T138:1|T202:1, T10:2| T74:2|T138:2|T202:2, T10:3| T74:3|T138:3|T202:3, T26:0| T90:0|T154:0|T218:0, T26:1| T90:1|T154:1|T218:1, T26:2| T90:2|T154:2|T218:2, T26:3| T90:3|T154:3|T218:3, T42:0|T106:0|T170:0|T234:0, T42:1|T106:1|T170:1|T234:1, T42:2|T106:2|T170:2|T234:2, T42:3|T106:3|T170:3|T234:3, T58:0|T122:0|T186:0|T250:0, T58:1|T122:1|T186:1|T250:1, T58:2|T122:2|T186:2|T250:2, T58:3|T122:3|T186:3|T250:3
// CHECK-MFMA: T11:0| T75:0|T139:0|T203:0, T11:1| T75:1|T139:1|T203:1, T11:2| T75:2|T139:2|T203:2, T11:3| T75:3|T139:3|T203:3, T27:0| T91:0|T155:0|T219:0, T27:1| T91:1|T155:1|T219:1, T27:2| T91:2|T155:2|T219:2, T27:3| T91:3|T155:3|T219:3, T43:0|T107:0|T171:0|T235:0, T43:1|T107:1|T171:1|T235:1, T43:2|T107:2|T171:2|T235:2, T43:3|T107:3|T171:3|T235:3, T59:0|T123:0|T187:0|T251:0, T59:1|T123:1|T187:1|T251:1, T59:2|T123:2|T187:2|T251:2, T59:3|T123:3|T187:3|T251:3
// CHECK-MFMA: T12:0| T76:0|T140:0|T204:0, T12:1| T76:1|T140:1|T204:1, T12:2| T76:2|T140:2|T204:2, T12:3| T76:3|T140:3|T204:3, T28:0| T92:0|T156:0|T220:0, T28:1| T92:1|T156:1|T220:1, T28:2| T92:2|T156:2|T220:2, T28:3| T92:3|T156:3|T220:3, T44:0|T108:0|T172:0|T236:0, T44:1|T108:1|T172:1|T236:1, T44:2|T108:2|T172:2|T236:2, T44:3|T108:3|T172:3|T236:3, T60:0|T124:0|T188:0|T252:0, T60:1|T124:1|T188:1|T252:1, T60:2|T124:2|T188:2|T252:2, T60:3|T124:3|T188:3|T252:3
// CHECK-MFMA: T13:0| T77:0|T141:0|T205:0, T13:1| T77:1|T141:1|T205:1, T13:2| T77:2|T141:2|T205:2, T13:3| T77:3|T141:3|T205:3, T29:0| T93:0|T157:0|T221:0, T29:1| T93:1|T157:1|T221:1, T29:2| T93:2|T157:2|T221:2, T29:3| T93:3|T157:3|T221:3, T45:0|T109:0|T173:0|T237:0, T45:1|T109:1|T173:1|T237:1, T45:2|T109:2|T173:2|T237:2, T45:3|T109:3|T173:3|T237:3, T61:0|T125:0|T189:0|T253:0, T61:1|T125:1|T189:1|T253:1, T61:2|T125:2|T189:2|T253:2, T61:3|T125:3|T189:3|T253:3
// CHECK-MFMA: T14:0| T78:0|T142:0|T206:0, T14:1| T78:1|T142:1|T206:1, T14:2| T78:2|T142:2|T206:2, T14:3| T78:3|T142:3|T206:3, T30:0| T94:0|T158:0|T222:0, T30:1| T94:1|T158:1|T222:1, T30:2| T94:2|T158:2|T222:2, T30:3| T94:3|T158:3|T222:3, T46:0|T110:0|T174:0|T238:0, T46:1|T110:1|T174:1|T238:1, T46:2|T110:2|T174:2|T238:2, T46:3|T110:3|T174:3|T238:3, T62:0|T126:0|T190:0|T254:0, T62:1|T126:1|T190:1|T254:1, T62:2|T126:2|T190:2|T254:2, T62:3|T126:3|T190:3|T254:3
// CHECK-MFMA: T15:0| T79:0|T143:0|T207:0, T15:1| T79:1|T143:1|T207:1, T15:2| T79:2|T143:2|T207:2, T15:3| T79:3|T143:3|T207:3, T31:0| T95:0|T159:0|T223:0, T31:1| T95:1|T159:1|T223:1, T31:2| T95:2|T159:2|T223:2, T31:3| T95:3|T159:3|T223:3, T47:0|T111:0|T175:0|T239:0, T47:1|T111:1|T175:1|T239:1, T47:2|T111:2|T175:2|T239:2, T47:3|T111:3|T175:3|T239:3, T63:0|T127:0|T191:0|T255:0, T63:1|T127:1|T191:1|T255:1, T63:2|T127:2|T191:2|T255:2, T63:3|T127:3|T191:3|T255:3
// CHECK-HW: Warp0:
// CHECK-HW: Warp1:
// CHECK-HW: Warp2:
// CHECK-HW: Warp3: