diff --git a/lib/Dialect/TritonGPU/IR/Dialect.cpp b/lib/Dialect/TritonGPU/IR/Dialect.cpp index 707b036d4..248aaced4 100644 --- a/lib/Dialect/TritonGPU/IR/Dialect.cpp +++ b/lib/Dialect/TritonGPU/IR/Dialect.cpp @@ -593,6 +593,8 @@ Attribute DotOperandEncodingAttr::parse(AsmParser &parser, Type type) { if(parent.isa() && parent.cast().getVersion() == 1){ isMMAv1Row = attrs.get("isMMAv1Row"); + if(!isMMAv1Row) + llvm::report_fatal_error("isMMAv1Row attribute is missing"); } return parser.getChecked(parser.getContext(), opIdx, parent, isMMAv1Row); diff --git a/test/Conversion/tritongpu_to_llvm.mlir b/test/Conversion/tritongpu_to_llvm.mlir index e56b20e31..e15d4e6a7 100644 --- a/test/Conversion/tritongpu_to_llvm.mlir +++ b/test/Conversion/tritongpu_to_llvm.mlir @@ -879,8 +879,8 @@ module attributes {"triton_gpu.num-warps" = 4 : i32} { #blocked = #triton_gpu.blocked<{sizePerThread = [1, 4], threadsPerWarp = [2, 16], warpsPerCTA = [1, 4], order = [1, 0]}> #shared = #triton_gpu.shared<{vec = 1, perPhase = 1, maxPhase = 1, order = [1, 0]}> #mma = #triton_gpu.mma<{version = 1, warpsPerCTA = [2, 2]}> -#dot_operand_a = #triton_gpu.dot_op<{opIdx=0, parent=#mma}> -#dot_operand_b = #triton_gpu.dot_op<{opIdx=1, parent=#mma}> +#dot_operand_a = #triton_gpu.dot_op<{opIdx=0, parent=#mma, isMMAv1Row=true}> +#dot_operand_b = #triton_gpu.dot_op<{opIdx=1, parent=#mma, isMMAv1Row=true}> module attributes {"triton_gpu.num-warps" = 4 : i32} { func @matmul884_kernel_dot_operand_layout(%ptr:!tt.ptr {tt.divisibility = 16 : i32}, %a:tensor<128x32xf16, #shared>, %b:tensor<32x256xf16, #shared>) {