Skip to content

Commit afce932

Browse files
[mlir][spirv] Enforce Fixed-Size Vectors for SPIR-V (#151738)
This PR enforces that SPIR-V instructions only allow fixed-size vectors (no scalable vectors) by updating `SPIRV_VectorOf` to use `FixedVectorOfLengthAndType` instead of `VectorOfLengthAndType`. The affected MLIR tests are also updated accordingly.
1 parent 558277a commit afce932

File tree

11 files changed

+59
-59
lines changed

11 files changed

+59
-59
lines changed

mlir/include/mlir/Dialect/SPIRV/IR/SPIRVBase.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4277,7 +4277,7 @@ class SPIRV_MatrixOfType<list<Type> allowedTypes> :
42774277
"Matrix">;
42784278

42794279
class SPIRV_VectorOf<Type type> :
4280-
VectorOfLengthAndType<[2, 3, 4, 8, 16], [type]>;
4280+
FixedVectorOfLengthAndType<[2, 3, 4, 8, 16], [type]>;
42814281

42824282
class SPIRV_ScalarOrVectorOf<Type type> :
42834283
AnyTypeOf<[type, SPIRV_VectorOf<type>]>;

mlir/test/Dialect/SPIRV/IR/arithmetic-ops.mlir

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ func.func @fadd_scalar(%arg: f32) -> f32 {
1313
// -----
1414

1515
func.func @fadd_bf16_scalar(%arg: bf16) -> bf16 {
16-
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
16+
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}
1717
%0 = spirv.FAdd %arg, %arg : bf16
1818
return %0 : bf16
1919
}
@@ -33,7 +33,7 @@ func.func @fdiv_scalar(%arg: f32) -> f32 {
3333
// -----
3434

3535
func.func @fdiv_bf16_scalar(%arg: bf16) -> bf16 {
36-
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
36+
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}
3737
%0 = spirv.FDiv %arg, %arg : bf16
3838
return %0 : bf16
3939
}
@@ -53,7 +53,7 @@ func.func @fmod_scalar(%arg: f32) -> f32 {
5353
// -----
5454

5555
func.func @fmod_bf16_scalar(%arg: bf16) -> bf16 {
56-
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
56+
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}
5757
%0 = spirv.FMod %arg, %arg : bf16
5858
return %0 : bf16
5959
}
@@ -79,31 +79,31 @@ func.func @fmul_vector(%arg: vector<4xf32>) -> vector<4xf32> {
7979
// -----
8080

8181
func.func @fmul_i32(%arg: i32) -> i32 {
82-
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
82+
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}
8383
%0 = spirv.FMul %arg, %arg : i32
8484
return %0 : i32
8585
}
8686

8787
// -----
8888

8989
func.func @fmul_bf16(%arg: bf16) -> bf16 {
90-
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
90+
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}
9191
%0 = spirv.FMul %arg, %arg : bf16
9292
return %0 : bf16
9393
}
9494

9595
// -----
9696

9797
func.func @fmul_bf16_vector(%arg: vector<4xbf16>) -> vector<4xbf16> {
98-
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
98+
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}
9999
%0 = spirv.FMul %arg, %arg : vector<4xbf16>
100100
return %0 : vector<4xbf16>
101101
}
102102

103103
// -----
104104

105105
func.func @fmul_tensor(%arg: tensor<4xf32>) -> tensor<4xf32> {
106-
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
106+
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}
107107
%0 = spirv.FMul %arg, %arg : tensor<4xf32>
108108
return %0 : tensor<4xf32>
109109
}
@@ -123,7 +123,7 @@ func.func @fnegate_scalar(%arg: f32) -> f32 {
123123
// -----
124124

125125
func.func @fnegate_bf16_scalar(%arg: bf16) -> bf16 {
126-
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
126+
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}
127127
%0 = spirv.FNegate %arg : bf16
128128
return %0 : bf16
129129
}
@@ -143,7 +143,7 @@ func.func @frem_scalar(%arg: f32) -> f32 {
143143
// -----
144144

145145
func.func @frem_bf16_scalar(%arg: bf16) -> bf16 {
146-
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
146+
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}
147147
%0 = spirv.FRem %arg, %arg : bf16
148148
return %0 : bf16
149149
}
@@ -163,7 +163,7 @@ func.func @fsub_scalar(%arg: f32) -> f32 {
163163
// -----
164164

165165
func.func @fsub_bf16_scalar(%arg: bf16) -> bf16 {
166-
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
166+
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}
167167
%0 = spirv.FSub %arg, %arg : bf16
168168
return %0 : bf16
169169
}
@@ -348,7 +348,7 @@ func.func @dot(%arg0: vector<4xf32>, %arg1: vector<4xf32>) -> f16 {
348348
// -----
349349

350350
func.func @dot(%arg0: vector<4xi32>, %arg1: vector<4xi32>) -> i32 {
351-
// expected-error @+1 {{'spirv.Dot' op operand #0 must be vector of 16/32/64-bit float or BFloat16 values of length 2/3/4/8/16}}
351+
// expected-error @+1 {{'spirv.Dot' op operand #0 must be fixed-length vector of 16/32/64-bit float or BFloat16 values of length 2/3/4/8/16}}
352352
%0 = spirv.Dot %arg0, %arg1 : vector<4xi32> -> i32
353353
return %0 : i32
354354
}
@@ -558,7 +558,7 @@ func.func @vector_times_scalar(%vector: vector<4xf32>, %scalar: f32) -> vector<3
558558
// -----
559559

560560
func.func @vector_bf16_times_scalar_bf16(%vector: vector<4xbf16>, %scalar: bf16) -> vector<4xbf16> {
561-
// expected-error @+1 {{op operand #0 must be vector of 16/32/64-bit float values of length 2/3/4}}
561+
// expected-error @+1 {{operand #0 must be vector of 16/32/64-bit float values of length 2/3/4}}
562562
%0 = spirv.VectorTimesScalar %vector, %scalar : (vector<4xbf16>, bf16) -> vector<4xbf16>
563563
return %0 : vector<4xbf16>
564564
}

mlir/test/Dialect/SPIRV/IR/bit-ops.mlir

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ func.func @bitwise_or_all_ones_vector(%arg: vector<3xi8>) -> vector<3xi8> {
137137
// -----
138138

139139
func.func @bitwise_or_float(%arg0: f16, %arg1: f16) -> f16 {
140-
// expected-error @+1 {{operand #0 must be 8/16/32/64-bit integer or vector of 8/16/32/64-bit integer values of length 2/3/4}}
140+
// expected-error @+1 {{operand #0 must be 8/16/32/64-bit integer or fixed-length vector of 8/16/32/64-bit integer values of length 2/3/4}}
141141
%0 = spirv.BitwiseOr %arg0, %arg1 : f16
142142
return %0 : f16
143143
}
@@ -165,7 +165,7 @@ func.func @bitwise_xor_vector(%arg: vector<4xi32>) -> vector<4xi32> {
165165
// -----
166166

167167
func.func @bitwise_xor_float(%arg0: f16, %arg1: f16) -> f16 {
168-
// expected-error @+1 {{operand #0 must be 8/16/32/64-bit integer or vector of 8/16/32/64-bit integer values of length 2/3/4}}
168+
// expected-error @+1 {{operand #0 must be 8/16/32/64-bit integer or fixed-length vector of 8/16/32/64-bit integer values of length 2/3/4}}
169169
%0 = spirv.BitwiseXor %arg0, %arg1 : f16
170170
return %0 : f16
171171
}
@@ -274,7 +274,7 @@ func.func @bitwise_and_zext_vector(%arg: vector<2xi8>) -> vector<2xi32> {
274274
// -----
275275

276276
func.func @bitwise_and_float(%arg0: f16, %arg1: f16) -> f16 {
277-
// expected-error @+1 {{operand #0 must be 8/16/32/64-bit integer or vector of 8/16/32/64-bit integer values of length 2/3/4}}
277+
// expected-error @+1 {{operand #0 must be 8/16/32/64-bit integer or fixed-length vector of 8/16/32/64-bit integer values of length 2/3/4}}
278278
%0 = spirv.BitwiseAnd %arg0, %arg1 : f16
279279
return %0 : f16
280280
}

mlir/test/Dialect/SPIRV/IR/gl-ops.mlir

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ func.func @expvec(%arg0 : vector<3xf16>) -> () {
1919
// -----
2020

2121
func.func @exp(%arg0 : i32) -> () {
22-
// expected-error @+1 {{op operand #0 must be 16/32-bit float or vector of 16/32-bit float values}}
22+
// expected-error @+1 {{op operand #0 must be 16/32-bit float or fixed-length vector of 16/32-bit float values}}
2323
%2 = spirv.GL.Exp %arg0 : i32
2424
return
2525
}
2626

2727
// -----
2828

2929
func.func @exp(%arg0 : vector<5xf32>) -> () {
30-
// expected-error @+1 {{op operand #0 must be 16/32-bit float or vector of 16/32-bit float values of length 2/3/4}}
30+
// expected-error @+1 {{op operand #0 must be 16/32-bit float or fixed-length vector of 16/32-bit float values of length 2/3/4}}
3131
%2 = spirv.GL.Exp %arg0 : vector<5xf32>
3232
return
3333
}
@@ -51,7 +51,7 @@ func.func @exp(%arg0 : i32) -> () {
5151
// -----
5252

5353
func.func @exp_bf16(%arg0 : bf16) -> () {
54-
// expected-error @+1 {{op operand #0 must be 16/32-bit float or vector of 16/32-bit float values of length 2/3/4}}
54+
// expected-error @+1 {{op operand #0 must be 16/32-bit float or fixed-length vector of 16/32-bit float values of length 2/3/4}}
5555
%2 = spirv.GL.Exp %arg0 : bf16
5656
return
5757
}
@@ -101,7 +101,7 @@ func.func @iminmax(%arg0: i32, %arg1: i32) {
101101
// -----
102102

103103
func.func @fmaxminbf16vec(%arg0 : vector<3xbf16>, %arg1 : vector<3xbf16>) {
104-
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
104+
// expected-error @+1 {{operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}
105105
%1 = spirv.GL.FMax %arg0, %arg1 : vector<3xbf16>
106106
%2 = spirv.GL.FMin %arg0, %arg1 : vector<3xbf16>
107107
return
@@ -499,7 +499,7 @@ func.func @frexp_struct_mismatch_type(%arg0 : f32) -> () {
499499
// -----
500500

501501
func.func @frexp_struct_wrong_type(%arg0 : i32) -> () {
502-
// expected-error @+1 {{op operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
502+
// expected-error @+1 {{op operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}
503503
%2 = spirv.GL.FrexpStruct %arg0 : i32 -> !spirv.struct<(i32, i32)>
504504
return
505505
}
@@ -614,7 +614,7 @@ func.func @findimsb_vector_i64(%arg0 : vector<3xi64>) -> () {
614614
// -----
615615

616616
func.func @findimsb_error_scalar_float(%arg0 : f32) -> () {
617-
// expected-error @+1 {{operand #0 must be 8/16/32/64-bit integer or vector of 8/16/32/64-bit integer values of length 2/3/4/8/1}}
617+
// expected-error @+1 {{operand #0 must be 8/16/32/64-bit integer or fixed-length vector of 8/16/32/64-bit integer values of length 2/3/4/8/1}}
618618
%2 = spirv.GL.FindILsb %arg0 : f32
619619
return
620620
}
@@ -640,7 +640,7 @@ func.func @findsmsb_vector(%arg0 : vector<3xi32>) -> () {
640640
// -----
641641

642642
func.func @findsmsb_error_scalar_i64(%arg0 : i64) -> () {
643-
// expected-error @+1 {{operand #0 must be Int32 or vector of Int32}}
643+
// expected-error @+1 {{operand #0 must be Int32 or fixed-length vector of Int32}}
644644
%2 = spirv.GL.FindSMsb %arg0 : i64
645645
return
646646
}
@@ -666,7 +666,7 @@ func.func @findumsb_vector(%arg0 : vector<3xi32>) -> () {
666666
// -----
667667

668668
func.func @findumsb(%arg0 : i64) -> () {
669-
// expected-error @+1 {{operand #0 must be Int32 or vector of Int32}}
669+
// expected-error @+1 {{operand #0 must be Int32 or fixed-length vector of Int32}}
670670
%2 = spirv.GL.FindUMsb %arg0 : i64
671671
return
672672
}
@@ -692,7 +692,7 @@ func.func @distance_vector(%arg0 : vector<3xf32>, %arg1 : vector<3xf32>) {
692692
// -----
693693

694694
func.func @distance_invalid_type(%arg0 : i32, %arg1 : i32) {
695-
// expected-error @+1 {{'spirv.GL.Distance' op operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values of length 2/3/4/8/16}}
695+
// expected-error @+1 {{'spirv.GL.Distance' op operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values of length 2/3/4/8/16}}
696696
%0 = spirv.GL.Distance %arg0, %arg1 : i32, i32 -> f32
697697
return
698698
}
@@ -708,7 +708,7 @@ func.func @distance_arg_mismatch(%arg0 : vector<3xf32>, %arg1 : vector<4xf32>) {
708708
// -----
709709

710710
func.func @distance_invalid_vector_size(%arg0 : vector<5xf32>, %arg1 : vector<5xf32>) {
711-
// expected-error @+1 {{'spirv.GL.Distance' op operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values of length 2/3/4/8/16}}
711+
// expected-error @+1 {{'spirv.GL.Distance' op operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values of length 2/3/4/8/16}}
712712
%0 = spirv.GL.Distance %arg0, %arg1 : vector<5xf32>, vector<5xf32> -> f32
713713
return
714714
}
@@ -736,7 +736,7 @@ func.func @cross(%arg0 : vector<3xf32>, %arg1 : vector<3xf32>) {
736736
// -----
737737

738738
func.func @cross_invalid_type(%arg0 : vector<3xi32>, %arg1 : vector<3xi32>) {
739-
// expected-error @+1 {{'spirv.GL.Cross' op operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values of length 2/3/4/8/16, but got 'vector<3xi32>'}}
739+
// expected-error @+1 {{'spirv.GL.Cross' op operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values of length 2/3/4/8/16, but got 'vector<3xi32>'}}
740740
%0 = spirv.GL.Cross %arg0, %arg1 : vector<3xi32>
741741
return
742742
}
@@ -762,7 +762,7 @@ func.func @normalize_vector(%arg0 : vector<3xf32>) {
762762
// -----
763763

764764
func.func @normalize_invalid_type(%arg0 : i32) {
765-
// expected-error @+1 {{'spirv.GL.Normalize' op operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
765+
// expected-error @+1 {{'spirv.GL.Normalize' op operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}
766766
%0 = spirv.GL.Normalize %arg0 : i32
767767
return
768768
}
@@ -788,7 +788,7 @@ func.func @reflect_vector(%arg0 : vector<3xf32>, %arg1 : vector<3xf32>) {
788788
// -----
789789

790790
func.func @reflect_invalid_type(%arg0 : i32, %arg1 : i32) {
791-
// expected-error @+1 {{'spirv.GL.Reflect' op operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
791+
// expected-error @+1 {{'spirv.GL.Reflect' op operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}
792792
%0 = spirv.GL.Reflect %arg0, %arg1 : i32
793793
return
794794
}
@@ -814,7 +814,7 @@ func.func @fractvec(%arg0 : vector<3xf16>) -> () {
814814
// -----
815815

816816
func.func @fract_invalid_type(%arg0 : i32) {
817-
// expected-error @+1 {{'spirv.GL.Fract' op operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
817+
// expected-error @+1 {{'spirv.GL.Fract' op operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}
818818
%0 = spirv.GL.Fract %arg0 : i32
819819
return
820820
}
@@ -840,7 +840,7 @@ func.func @log2vec(%arg0 : vector<3xf16>) -> () {
840840
// -----
841841

842842
func.func @log2_invalid_type(%arg0 : i32) -> () {
843-
// expected-error @+1 {{op operand #0 must be 16/32-bit float or vector of 16/32-bit float values}}
843+
// expected-error @+1 {{op operand #0 must be 16/32-bit float or fixed-length vector of 16/32-bit float values}}
844844
%0 = spirv.GL.Log2 %arg0 : i32
845845
return
846846
}
@@ -866,7 +866,7 @@ func.func @tanhvec(%arg0 : vector<3xf16>) -> () {
866866
// -----
867867

868868
func.func @tanh_invalid_type(%arg0 : i32) -> () {
869-
// expected-error @+1 {{op operand #0 must be 16/32-bit float or vector of 16/32-bit float values}}
869+
// expected-error @+1 {{op operand #0 must be 16/32-bit float or fixed-length vector of 16/32-bit float values}}
870870
%0 = spirv.GL.Tanh %arg0 : i32
871871
return
872872
}
@@ -892,7 +892,7 @@ func.func @exp2vec(%arg0 : vector<3xf16>) -> () {
892892
// -----
893893

894894
func.func @exp2_invalid_type(%arg0 : i32) -> () {
895-
// expected-error @+1 {{op operand #0 must be 16/32-bit float or vector of 16/32-bit float values}}
895+
// expected-error @+1 {{op operand #0 must be 16/32-bit float or fixed-length vector of 16/32-bit float values}}
896896
%0 = spirv.GL.Exp2 %arg0 : i32
897897
return
898898
}
@@ -1022,7 +1022,7 @@ func.func @lengthvec(%arg0 : vector<3xf32>) -> () {
10221022
// -----
10231023

10241024
func.func @length_i32_in(%arg0 : i32) -> () {
1025-
// expected-error @+1 {{op operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values of length 2/3/4/8/16, but got 'i32'}}
1025+
// expected-error @+1 {{op operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values of length 2/3/4/8/16, but got 'i32'}}
10261026
%0 = spirv.GL.Length %arg0 : i32 -> f32
10271027
return
10281028
}
@@ -1038,7 +1038,7 @@ func.func @length_f16_in(%arg0 : f16) -> () {
10381038
// -----
10391039

10401040
func.func @length_i32vec_in(%arg0 : vector<3xi32>) -> () {
1041-
// expected-error @+1 {{op operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values of length 2/3/4/8/16, but got 'vector<3xi32>'}}
1041+
// expected-error @+1 {{op operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values of length 2/3/4/8/16, but got 'vector<3xi32>'}}
10421042
%0 = spirv.GL.Length %arg0 : vector<3xi32> -> f32
10431043
return
10441044
}

mlir/test/Dialect/SPIRV/IR/group-ops.mlir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func.func @group_broadcast_negative_scope(%value: f32, %localid: vector<3xi32> )
4949
// -----
5050

5151
func.func @group_broadcast_negative_locid_dtype(%value: f32, %localid: vector<3xf32> ) -> f32 {
52-
// expected-error @+1 {{operand #1 must be 8/16/32/64-bit integer or vector of 8/16/32/64-bit integer values}}
52+
// expected-error @+1 {{op operand #1 must be 8/16/32/64-bit integer or fixed-length vector of 8/16/32/64-bit integer values}}
5353
%0 = spirv.GroupBroadcast <Subgroup> %value, %localid : f32, vector<3xf32>
5454
return %0: f32
5555
}

mlir/test/Dialect/SPIRV/IR/image-ops.mlir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ func.func @image_fetch_2d_result(%arg0: !spirv.image<f32, Dim2D, NoDepth, NonArr
349349
// -----
350350

351351
func.func @image_fetch_float_coords(%arg0: !spirv.image<f32, Dim2D, NoDepth, NonArrayed, SingleSampled, NeedSampler, Rgba8>, %arg1: vector<2xf32>) -> () {
352-
// expected-error @+1 {{op operand #1 must be 8/16/32/64-bit integer or vector of 8/16/32/64-bit integer values of length 2/3/4/8/16, but got 'vector<2xf32>'}}
352+
// expected-error @+1 {{op operand #1 must be 8/16/32/64-bit integer or fixed-length vector of 8/16/32/64-bit integer values of length 2/3/4/8/16, but got 'vector<2xf32>'}}
353353
%0 = spirv.ImageFetch %arg0, %arg1 : !spirv.image<f32, Dim2D, NoDepth, NonArrayed, SingleSampled, NeedSampler, Rgba8>, vector<2xf32> -> vector<2xf32>
354354
spirv.Return
355355
}

mlir/test/Dialect/SPIRV/IR/intel-ext-ops.mlir

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ spirv.func @f32_to_bf16_vec(%arg0 : vector<2xf32>) "None" {
2121
// -----
2222

2323
spirv.func @f32_to_bf16_unsupported(%arg0 : f64) "None" {
24-
// expected-error @+1 {{operand #0 must be Float32 or vector of Float32 values of length 2/3/4/8/16, but got}}
24+
// expected-error @+1 {{operand #0 must be Float32 or fixed-length vector of Float32 values of length 2/3/4/8/16, but got}}
2525
%0 = spirv.INTEL.ConvertFToBF16 %arg0 : f64 to i16
2626
spirv.Return
2727
}
@@ -57,7 +57,7 @@ spirv.func @bf16_to_f32_vec(%arg0 : vector<2xi16>) "None" {
5757
// -----
5858

5959
spirv.func @bf16_to_f32_unsupported(%arg0 : i16) "None" {
60-
// expected-error @+1 {{result #0 must be Float32 or vector of Float32 values of length 2/3/4/8/16, but got}}
60+
// expected-error @+1 {{result #0 must be Float32 or fixed-length vector of Float32 values of length 2/3/4/8/16, but got}}
6161
%0 = spirv.INTEL.ConvertBF16ToF %arg0 : i16 to f16
6262
spirv.Return
6363
}

0 commit comments

Comments
 (0)