1// RUN: mlir-opt %s -split-input-file -verify-diagnostics
2
3// -----
4
5func.func @a_is_2d(%a : vector<2x2xi32>, %b : vector<4x4xi8>) -> vector<2x2xi32> {
6    // expected-error@+1 {{operand `a` should be 1-dimensional}}
7    %0 = arm_neon.2d.sdot %a, %b, %b : vector<4x4xi8>, vector<4x4xi8> to vector<2x2xi32>
8    return %0 : vector<2x2xi32>
9}
10
11// -----
12
13func.func @b_is_3d(%a : vector<4xi32>, %b : vector<1x4x4xi8>) -> vector<4xi32> {
14    // expected-error@+1 {{operand `b` should be 2-dimensional}}
15    %0 = arm_neon.2d.sdot %a, %b, %b : vector<1x4x4xi8>, vector<1x4x4xi8> to vector<4xi32>
16    return %0 : vector<4xi32>
17}
18
19// -----
20
21func.func @b_has_2_columns(%a : vector<4xi32>, %b : vector<4x2xi8>) -> vector<4xi32> {
22    // expected-error@+1 {{operand `b` should have 4 columns}}
23    %0 = arm_neon.2d.sdot %a, %b, %b : vector<4x2xi8>, vector<4x2xi8> to vector<4xi32>
24    return %0 : vector<4xi32>
25}
26
27// -----
28
29func.func @b_has_2_rows_but_a_has_length_4(%a : vector<4xi32>, %b : vector<2x4xi8>) -> vector<4xi32> {
30    // expected-error@+1 {{operand `b` should have as many rows as the size of operand `a`}}
31    %0 = arm_neon.2d.sdot %a, %b, %b : vector<2x4xi8>, vector<2x4xi8> to vector<4xi32>
32    return %0 : vector<4xi32>
33}
34