[Mlir-commits] [mlir] [mlir][xegpu] Add definitons of MatrixDescType and related ops. (PR #153273)
Jianhui Li
llvmlistbot at llvm.org
Wed Aug 13 19:03:14 PDT 2025
================
@@ -762,3 +762,75 @@ func.func @slice_attr_repeat_dim() {
return
}
+// -----
+func.func @create_matrix_desc_non_slm() {
+ %m = memref.alloca() {alignment = 1024} : memref<2048xi8, 1>
+ // expected-error at +1 {{operand #0 must be statically shaped memref of 8-bit signless integer values for shared memory}}
+ %matrix_desc = xegpu.create_matrix_desc %m : memref<2048xi8, 1> -> !xegpu.matrix_desc<16x64xf16>
+ return
+}
+
+// -----
+func.func @create_matrix_desc_mismatch_sizes() {
+ %m = memref.alloca() {alignment = 1024} : memref<2048xi8, 3>
+ // expected-error at +1 {{failed to verify that all of {source, matrix_desc} have same size in bits}}
+ %matrix_desc = xegpu.create_matrix_desc %m : memref<2048xi8, 3> -> !xegpu.matrix_desc<16x32xf16>
+ return
+}
+
+// -----
+func.func @load_matrix_desc_mismatch_element_type(%arg0: !xegpu.matrix_desc<16x64xf16>) {
+ // expected-error at +1 {{failed to verify that all of {matrix_desc, res} have same element type}}
+ %data = xegpu.load_matrix %arg0[8, 8]: !xegpu.matrix_desc<16x64xf16> -> vector<8x16xf32>
+ return
+}
+
+// -----
+func.func @load_matrix_desc_invalid_result_size(%arg0: !xegpu.matrix_desc<16x64xf16>) {
+ // expected-error at +1 {{result shape must not exceed matrix desc shape}}
+ %data = xegpu.load_matrix %arg0[8, 8]: !xegpu.matrix_desc<16x64xf16> -> vector<32x16xf16>
+ return
+}
+
+// -----
+func.func @store_matrix_desc_mismatch_element_type(%arg0: !xegpu.matrix_desc<16x64xf16>, %arg1: vector<16x16xf32>) {
+ // expected-error at +1 {{failed to verify that all of {matrix_desc, data} have same element type}}
+ xegpu.store_matrix %arg1, %arg0[8, 8] : vector<16x16xf32>, !xegpu.matrix_desc<16x64xf16>
+ return
+}
+
+// -----
+func.func @store_matrix_desc_invalid_data_size(%arg0: !xegpu.matrix_desc<16x64xf16>, %arg1: vector<32x32xf16>) {
+ // expected-error at +1 {{data shape must not exceed matrix desc shape}}
+ xegpu.store_matrix %arg1, %arg0[8, 8] : vector<32x32xf16>, !xegpu.matrix_desc<16x64xf16>
+ return
+}
+
+// -----
+func.func @matrix_desc_subview_size_mismatch(%arg0: !xegpu.matrix_desc<16x64xf16>) {
+ // expected-error at +1 {{result shape must not exceed source shape}}
+ %data = xegpu.matrix_desc_subview %arg0[8, 8]: !xegpu.matrix_desc<16x64xf16> -> !xegpu.matrix_desc<32x16xf16>
+ return
+}
+
+// -----
+func.func @matrix_desc_subview_layout_mismatch(%arg0: !xegpu.matrix_desc<16x64xf16, strided<[1, 16]>>) {
+ // expected-error at +1 {{result must inherit the source layout}}
+ %data = xegpu.matrix_desc_subview %arg0[8, 8]: !xegpu.matrix_desc<16x64xf16, strided<[1, 16]>> -> !xegpu.matrix_desc<8x16xf16>
+ return
+}
+
+// -----
+func.func @matrix_desc_subview_element_type_mismatch(%arg0: !xegpu.matrix_desc<16x64xf16>) {
+ // expected-error at +1 {{failed to verify that all of {src, res} have same element type}}
+ %data = xegpu.matrix_desc_subview %arg0[8, 8]: !xegpu.matrix_desc<16x64xf16> -> !xegpu.matrix_desc<8x16xf32>
----------------
Jianhui-Li wrote:
this one also have an additional error, the strides need to be carried in the subview.
xegpu.matrix_desc<8x16xf32> => xegpu.matrix_desc<8x16xf32, strides=[64, 1]>
https://github.com/llvm/llvm-project/pull/153273
More information about the Mlir-commits
mailing list