@@ -1218,6 +1218,44 @@ func.func @extract_scalable_from_fixed_length_vector(%arg0 : vector<16xf32>) {
12181218 %0 = llvm.intr.vector.extract %arg0 [0 ] : vector <[8 ]xf32 > from vector <16 xf32 >
12191219}
12201220
1221+
1222+ // -----
1223+
1224+ func.func @experimental_vector_interleave2_bad_type0 (%vec1: vector <[2 ]xf16 >, %vec2 : vector <[4 ]xf16 >) {
1225+ // expected-error@+1 {{op failed to verify that all of {vec1, vec2} have same type}}
1226+ %0 = " llvm.intr.experimental.vector.interleave2" (%vec1 , %vec2 ) : (vector <[2 ]xf16 >, vector <[4 ]xf16 >) -> vector <[8 ]xf16 >
1227+ return
1228+ }
1229+
1230+ // -----
1231+
1232+ func.func @experimental_vector_interleave2_bad_type1 (%vec1: vector <[2 ]xf16 >, %vec2 : vector <[2 ]xf16 >) {
1233+ // expected-error@+1 {{op failed to verify that result has twice as many elements as 'vec1'}}
1234+ %0 = " llvm.intr.experimental.vector.interleave2" (%vec1 , %vec2 ) : (vector <[2 ]xf16 >, vector <[2 ]xf16 >) -> vector <[8 ]xf16 >
1235+ return
1236+ }
1237+
1238+ // -----
1239+
1240+ /// result vector type is not scalable.
1241+
1242+ func.func @experimental_vector_interleave2_bad_type2 (%vec1: vector <[2 ]xf16 >, %vec2 : vector <[2 ]xf16 >) {
1243+ // expected-error@+1 {{op failed to verify that result has twice as many elements as 'vec1'}}
1244+ %0 = " llvm.intr.experimental.vector.interleave2" (%vec1 , %vec2 ) : (vector <[2 ]xf16 >, vector <[2 ]xf16 >) -> vector <4 xf16 >
1245+ return
1246+ }
1247+
1248+ // -----
1249+
1250+
1251+ /// element type doesn't match.
1252+
1253+ func.func @experimental_vector_interleave2_bad_type3 (%vec1: vector <[2 ]xf16 >, %vec2 : vector <[2 ]xf16 >) {
1254+ // expected-error@+1 {{op failed to verify that result has twice as many elements as 'vec1'}}
1255+ %0 = " llvm.intr.experimental.vector.interleave2" (%vec1 , %vec2 ) : (vector <[2 ]xf16 >, vector <[2 ]xf16 >) -> vector <[4 ]xf32 >
1256+ return
1257+ }
1258+
12211259// -----
12221260
12231261func.func @invalid_bitcast_ptr_to_i64 (%arg : !llvm.ptr ) {
0 commit comments