@@ -464,7 +464,114 @@ void test_invalid_matrix_K_dimension_non_zero() {
464464 matrix_stride, bias_buffer, bias_offset, bias_interpretation);
465465}
466466
467- //Check if InputInterpretation is a constant parameter
467+ // Check if Matrix M dimension is less than Max
468+ void test_invalid_matrix_M_dimension_less_than_Max () {
469+
470+ vector <uint , 4 > output_vector;
471+ const uint is_output_unsigned = 1 ;
472+ const uint is_input_unsigned = 1 ;
473+ const uint matrix_offset = 0 ;
474+ const uint matrix_interpretation = DataType::DATA_TYPE_FLOAT32;
475+ const uint matrix_dimK = 4 ;
476+ const uint matrix_layout = MatrixLayout::MATRIX_LAYOUT_ROW_MAJOR;
477+ const bool matrix_is_transposed = false ;
478+ const uint matrix_stride = matrix_dimK * 4 ;
479+ const uint bias_offset = 0 ;
480+ const uint bias_interpretation = DataType::DATA_TYPE_FLOAT32;
481+
482+ vector <uint , 4 > input_vector_0 =
483+ input_vector_buffer.Load<vector <uint , 4 > >(0 );
484+ const uint input_interpretation_0 = DataType::DATA_TYPE_FLOAT32;
485+ const uint matrix_dimM_0 = 1025 ;
486+
487+ // expected-error@+3 {{matrix dimension M must be less than 1024, in a linalg Mul/MulAdd operation}}
488+ __builtin_MatVecMulAdd (output_vector, is_output_unsigned, input_vector_0,
489+ is_input_unsigned, input_interpretation_0, matrix_buffer,
490+ matrix_offset, matrix_interpretation, matrix_dimM_0,
491+ matrix_dimK, matrix_layout, matrix_is_transposed,
492+ matrix_stride, bias_buffer, bias_offset, bias_interpretation);
493+
494+ vector <uint , 1 > input_vector_1 =
495+ input_vector_buffer.Load<vector <uint , 1 > >(0 );
496+ const uint input_interpretation_1 = DataType::DATA_TYPE_UINT8_T4_PACKED;
497+ const uint matrix_dimM_1 = 4097 ;
498+
499+ // expected-error@+3 {{matrix dimension M must be less than 1024, in a linalg Mul/MulAdd operation}}
500+ __builtin_MatVecMulAdd (output_vector, is_output_unsigned, input_vector_1,
501+ is_input_unsigned, input_interpretation_1, matrix_buffer,
502+ matrix_offset, matrix_interpretation, matrix_dimM_1,
503+ matrix_dimK, matrix_layout, matrix_is_transposed,
504+ matrix_stride, bias_buffer, bias_offset, bias_interpretation);
505+ }
506+
507+ // Check if Matrix K dimension is less than Max in unpacked input vector case
508+ void test_invalid_matrix_K_dimension_less_than_Max_unpacked_input_vector () {
509+
510+ vector <uint , 4 > output_vector;
511+ const uint is_output_unsigned = 1 ;
512+ const uint is_input_unsigned = 1 ;
513+ const uint matrix_offset = 0 ;
514+ const uint matrix_interpretation = DataType::DATA_TYPE_FLOAT32;
515+ const uint matrix_dimM = 4 ;
516+ const uint matrix_layout = MatrixLayout::MATRIX_LAYOUT_ROW_MAJOR;
517+ const bool matrix_is_transposed = false ;
518+ const uint matrix_stride = 64 ;
519+ const uint bias_offset = 0 ;
520+ const uint bias_interpretation = DataType::DATA_TYPE_FLOAT32;
521+
522+ vector <uint , 4 > input_vector_0 =
523+ input_vector_buffer.Load<vector <uint , 4 > >(0 );
524+ const uint input_interpretation_0 = DataType::DATA_TYPE_FLOAT32;
525+ const uint matrix_dimK_0 = 1025 ;
526+
527+ // expected-error@+4 {{matrix dimension K when using unpacked input vectors must be less than 1024, in a linalg Mul/MulAdd operation}}
528+ __builtin_MatVecMulAdd (output_vector, is_output_unsigned, input_vector_0,
529+ is_input_unsigned, input_interpretation_0, matrix_buffer,
530+ matrix_offset, matrix_interpretation, matrix_dimM,
531+ matrix_dimK_0, matrix_layout, matrix_is_transposed,
532+ matrix_stride, bias_buffer, bias_offset, bias_interpretation);
533+
534+ vector <uint , 4 > input_vector_1 =
535+ input_vector_buffer.Load<vector <uint , 4 > >(0 );
536+ const uint input_interpretation_1 = DataType::DATA_TYPE_UINT8;
537+ const uint matrix_dimK_1 = 4096 ;
538+ // expected-error@+4 {{matrix dimension K when using unpacked input vectors must be less than 1024, in a linalg Mul/MulAdd operation}}
539+ __builtin_MatVecMulAdd (output_vector, is_output_unsigned, input_vector_1,
540+ is_input_unsigned, input_interpretation_1, matrix_buffer,
541+ matrix_offset, matrix_interpretation, matrix_dimM,
542+ matrix_dimK_1, matrix_layout, matrix_is_transposed,
543+ matrix_stride, bias_buffer, bias_offset, bias_interpretation);
544+
545+ }
546+
547+ // Check if Matrix M dimension is less than Max in packed input vector case
548+ void test_invalid_matrix_M_dimension_less_than_Max_packed_input_vector () {
549+
550+ vector <uint , 4 > output_vector;
551+ const uint is_output_unsigned = 1 ;
552+ const uint is_input_unsigned = 1 ;
553+ const uint matrix_offset = 0 ;
554+ const uint matrix_interpretation = DataType::DATA_TYPE_FLOAT32;
555+ const uint matrix_dimM = 1024 ;
556+ const uint matrix_layout = MatrixLayout::MATRIX_LAYOUT_ROW_MAJOR;
557+ const bool matrix_is_transposed = false ;
558+ const uint matrix_stride = 4096 ;
559+ const uint bias_offset = 0 ;
560+ const uint bias_interpretation = DataType::DATA_TYPE_FLOAT32;
561+
562+ vector <uint , 1024 > input_vector_0 =
563+ input_vector_buffer.Load<vector <uint , 1024 > >(0 );
564+ const uint input_interpretation_0 = DataType::DATA_TYPE_UINT8_T4_PACKED;
565+ const uint matrix_dimK_0 = 4097 ;
566+
567+ // expected-error@+4 {{matrix dimension K when using packed input vectors must be less than 4096, in a linalg Mul/MulAdd operation}}
568+ __builtin_MatVecMulAdd (output_vector, is_output_unsigned, input_vector_0,
569+ is_input_unsigned, input_interpretation_0, matrix_buffer,
570+ matrix_offset, matrix_interpretation, matrix_dimM,
571+ matrix_dimK_0, matrix_layout, matrix_is_transposed,
572+ matrix_stride, bias_buffer, bias_offset, bias_interpretation);
573+ }
574+
468575void test_invalid_input_interpretation_non_const () {
469576
470577 vector <uint , 4 > output_vector;
0 commit comments