@@ -62,6 +62,10 @@ func.func @const() -> () {
6262 // CHECK: spirv.Constant dense<1.000000e+00> : tensor<2x3xf32> : !spirv.array<2 x !spirv.array<3 x f32>>
6363 // CHECK: spirv.Constant dense<{{\[}}[1, 2, 3], [4, 5, 6]]> : tensor<2x3xi32> : !spirv.array<2 x !spirv.array<3 x i32>>
6464 // CHECK: spirv.Constant dense<{{\[}}[1.000000e+00, 2.000000e+00, 3.000000e+00], [4.000000e+00, 5.000000e+00, 6.000000e+00]]> : tensor<2x3xf32> : !spirv.array<2 x !spirv.array<3 x f32>>
65+ // CHECK: spirv.Constant dense<0.000000e+00> : !spirv.coopmatrix<16x16xf32, Subgroup, MatrixAcc>
66+ // CHECK: spirv.Constant dense<4.200000e+00> : !spirv.coopmatrix<16x16xf32, Subgroup, MatrixAcc>
67+ // CHECK: spirv.Constant dense<0> : !spirv.coopmatrix<16x16xi8, Subgroup, MatrixAcc>
68+ // CHECK: spirv.Constant dense<4> : !spirv.coopmatrix<16x16xi8, Subgroup, MatrixAcc>
6569
6670 %0 = spirv.Constant true
6771 %1 = spirv.Constant 42 : i32
@@ -73,6 +77,10 @@ func.func @const() -> () {
7377 %7 = spirv.Constant dense <[[1 , 2 , 3 ], [4 , 5 , 6 ]]> : tensor <2 x3 xi32 > : !spirv.array <2 x !spirv.array <3 x i32 >>
7478 %8 = spirv.Constant dense <[[1.0 , 2.0 , 3.0 ], [4.0 , 5.0 , 6.0 ]]> : tensor <2 x3 xf32 > : !spirv.array <2 x !spirv.array <3 x f32 >>
7579 %9 = spirv.Constant [[dense <3.0 > : vector <2 xf32 >]] : !spirv.array <1 x !spirv.array <1 xvector <2 xf32 >>>
80+ %10 = spirv.Constant dense <0.000000e+00 > : !spirv.coopmatrix <16 x16 xf32 , Subgroup , MatrixAcc >
81+ %11 = spirv.Constant dense <4.200000e+00 > : !spirv.coopmatrix <16 x16 xf32 , Subgroup , MatrixAcc >
82+ %12 = spirv.Constant dense <0 > : !spirv.coopmatrix <16 x16 xi8 , Subgroup , MatrixAcc >
83+ %13 = spirv.Constant dense <4 > : !spirv.coopmatrix <16 x16 xi8 , Subgroup , MatrixAcc >
7684 return
7785}
7886
@@ -132,6 +140,31 @@ func.func @value_result_num_elements_mismatch() -> () {
132140
133141// -----
134142
143+ func.func @coop_matrix_const_non_splat () -> () {
144+ // expected-error @+1 {{expected a splat dense attribute for cooperative matrix constant, but found}}
145+ %0 = spirv.Constant dense <[[1.0 , 2.0 ], [3.0 , 4.0 ]]> : !spirv.coopmatrix <2 x2 xf32 , Subgroup , MatrixAcc >
146+ return
147+ }
148+
149+ // -----
150+
151+ func.func @coop_matrix_const_non_dense () -> () {
152+ // expected-error @+2 {{floating point value not valid for specified type}}
153+ %0 = spirv.Constant 0.000000e+00 : !spirv.coopmatrix <16 x16 xf32 , Subgroup , MatrixAcc >
154+ return
155+ }
156+
157+ // -----
158+
159+ func.func @coop_matrix_const_wrong_type () -> () {
160+ // expected-error @below {{unexpected decimal integer literal for a floating point value}}
161+ // expected-note @+1 {{add a trailing dot to make the literal a float}}
162+ %0 = spirv.Constant dense <4 > : !spirv.coopmatrix <16 x16 xf32 , Subgroup , MatrixAcc >
163+ return
164+ }
165+
166+ // -----
167+
135168//===----------------------------------------------------------------------===//
136169// spirv.EntryPoint
137170//===----------------------------------------------------------------------===//
0 commit comments