44// where L# refers to the level of the tree the shuffle belongs to, and SH# refers to
55// the shuffle index within that level.
66
7- func.func @trivial_forwarding (%a: vector <8 xf32 >) -> vector <8 xf32 > {
7+ func.func @unsupported_trivial_forwarding (%a: vector <8 xf32 >) -> vector <8 xf32 > {
88 %0:8 = vector.to_elements %a : vector <8 xf32 >
99 %1 = vector.from_elements %0#0 , %0#1 , %0#2 , %0#3 , %0#4 , %0#5 , %0#6 , %0#7 : vector <8 xf32 >
1010 return %1 : vector <8 xf32 >
1111}
1212
1313// No shuffle tree needed for trivial forwarding case.
1414
15- // CHECK-LABEL: func @trivial_forwarding (
15+ // CHECK-LABEL: func @unsupported_trivial_forwarding (
1616// CHECK-SAME: %[[A:.*]]: vector<8xf32>
1717// CHECK: return %[[A]] : vector<8xf32>
1818
@@ -26,6 +26,10 @@ func.func @unsupported_multi_dim_vector_inputs(%a: vector<2x4xf32>, %b: vector<2
2626 return %2 : vector <4 xf32 >
2727}
2828
29+ // CHECK-LABEL: func @unsupported_multi_dim_vector_inputs(
30+ // CHECK-COUNT-2: vector.to_elements
31+ // CHECK: vector.from_elements
32+
2933// -----
3034
3135func.func @unsupported_multi_dim_vector_output (%a: vector <8 xf32 >, %b: vector <8 xf32 >) -> vector <2 x2 xf32 > {
@@ -36,40 +40,44 @@ func.func @unsupported_multi_dim_vector_output(%a: vector<8xf32>, %b: vector<8xf
3640 return %2 : vector <2 x2 xf32 >
3741}
3842
43+ // CHECK-LABEL: func @unsupported_multi_dim_vector_output(
44+ // CHECK-COUNT-2: vector.to_elements
45+ // CHECK: vector.from_elements
46+
3947// -----
4048
41- func.func @single_input_shuffle (%a: vector <8 xf32 >) -> vector <8 xf32 > {
49+ func.func @shuffle_tree_single_input_shuffle (%a: vector <8 xf32 >) -> vector <8 xf32 > {
4250 %0:8 = vector.to_elements %a : vector <8 xf32 >
4351 %1 = vector.from_elements %0#7 , %0#0 , %0#6 , %0#1 , %0#5 , %0#2 , %0#4 , %0#3 : vector <8 xf32 >
4452 return %1 : vector <8 xf32 >
4553}
4654
47- // CHECK-LABEL: func @single_input_shuffle (
55+ // CHECK-LABEL: func @shuffle_tree_single_input_shuffle (
4856// CHECK-SAME: %[[A:.*]]: vector<8xf32>
4957 // CHECK: %[[L0SH0:.*]] = vector.shuffle %[[A]], %[[A]] [7, 0, 6, 1, 5, 2, 4, 3] : vector<8xf32>, vector<8xf32>
5058 // CHECK: return %[[L0SH0]]
5159
5260// -----
5361
54- func.func @from_elements_to_elements_single_shuffle (%a: vector <8 xf32 >,
55- %b: vector <8 xf32 >) -> vector <8 xf32 > {
62+ func.func @shuffle_tree_single_shuffle (%a: vector <8 xf32 >,
63+ %b: vector <8 xf32 >) -> vector <8 xf32 > {
5664 %0:8 = vector.to_elements %a : vector <8 xf32 >
5765 %1:8 = vector.to_elements %b : vector <8 xf32 >
5866 %2 = vector.from_elements %0#7 , %1#0 , %0#6 , %1#1 , %0#5 , %1#2 , %0#4 , %1#3 : vector <8 xf32 >
5967 return %2 : vector <8 xf32 >
6068}
6169
62- // CHECK-LABEL: func @from_elements_to_elements_single_shuffle (
70+ // CHECK-LABEL: func @shuffle_tree_single_shuffle (
6371// CHECK-SAME: %[[A:.*]]: vector<8xf32>, %[[B:.*]]: vector<8xf32>
6472// CHECK: %[[L0SH0:.*]] = vector.shuffle %[[A]], %[[B]] [7, 8, 6, 9, 5, 10, 4, 11] : vector<8xf32>
6573// CHECK: return %[[L0SH0]]
6674
6775// -----
6876
6977func.func @shuffle_tree_concat_4x8_to_32 (%a: vector <8 xf32 >,
70- %b: vector <8 xf32 >,
71- %c: vector <8 xf32 >,
72- %d: vector <8 xf32 >) -> vector <32 xf32 > {
78+ %b: vector <8 xf32 >,
79+ %c: vector <8 xf32 >,
80+ %d: vector <8 xf32 >) -> vector <32 xf32 > {
7381 %0:8 = vector.to_elements %a : vector <8 xf32 >
7482 %1:8 = vector.to_elements %b : vector <8 xf32 >
7583 %2:8 = vector.to_elements %c : vector <8 xf32 >
@@ -109,23 +117,22 @@ func.func @shuffle_tree_concat_3x4_to_12(%a: vector<4xf32>,
109117
110118// -----
111119
112- func.func @shuffle_tree_concat_64x4_256 (
113- %a: vector <4 xf32 >, %b: vector <4 xf32 >, %c: vector <4 xf32 >, %d: vector <4 xf32 >,
114- %e: vector <4 xf32 >, %f: vector <4 xf32 >, %g: vector <4 xf32 >, %h: vector <4 xf32 >,
115- %i: vector <4 xf32 >, %j: vector <4 xf32 >, %k: vector <4 xf32 >, %l: vector <4 xf32 >,
116- %m: vector <4 xf32 >, %n: vector <4 xf32 >, %o: vector <4 xf32 >, %p: vector <4 xf32 >,
117- %q: vector <4 xf32 >, %r: vector <4 xf32 >, %s: vector <4 xf32 >, %t: vector <4 xf32 >,
118- %u: vector <4 xf32 >, %v: vector <4 xf32 >, %w: vector <4 xf32 >, %x: vector <4 xf32 >,
119- %y: vector <4 xf32 >, %z: vector <4 xf32 >, %aa: vector <4 xf32 >, %ab: vector <4 xf32 >,
120- %ac: vector <4 xf32 >, %ad: vector <4 xf32 >, %ae: vector <4 xf32 >, %af: vector <4 xf32 >,
121- %ag: vector <4 xf32 >, %ah: vector <4 xf32 >, %ai: vector <4 xf32 >, %aj: vector <4 xf32 >,
122- %ak: vector <4 xf32 >, %al: vector <4 xf32 >, %am: vector <4 xf32 >, %an: vector <4 xf32 >,
123- %ao: vector <4 xf32 >, %ap: vector <4 xf32 >, %aq: vector <4 xf32 >, %ar: vector <4 xf32 >,
124- %as: vector <4 xf32 >, %at: vector <4 xf32 >, %au: vector <4 xf32 >, %av: vector <4 xf32 >,
125- %aw: vector <4 xf32 >, %ax: vector <4 xf32 >, %ay: vector <4 xf32 >, %az: vector <4 xf32 >,
126- %ba: vector <4 xf32 >, %bb: vector <4 xf32 >, %bc: vector <4 xf32 >, %bd: vector <4 xf32 >,
127- %be: vector <4 xf32 >, %bf: vector <4 xf32 >, %bg: vector <4 xf32 >, %bh: vector <4 xf32 >,
128- %bi: vector <4 xf32 >, %bj: vector <4 xf32 >, %bk: vector <4 xf32 >, %bl: vector <4 xf32 >) -> vector <256 xf32 > {
120+ func.func @shuffle_tree_concat_64x4_256 (%a: vector <4 xf32 >, %b: vector <4 xf32 >, %c: vector <4 xf32 >, %d: vector <4 xf32 >,
121+ %e: vector <4 xf32 >, %f: vector <4 xf32 >, %g: vector <4 xf32 >, %h: vector <4 xf32 >,
122+ %i: vector <4 xf32 >, %j: vector <4 xf32 >, %k: vector <4 xf32 >, %l: vector <4 xf32 >,
123+ %m: vector <4 xf32 >, %n: vector <4 xf32 >, %o: vector <4 xf32 >, %p: vector <4 xf32 >,
124+ %q: vector <4 xf32 >, %r: vector <4 xf32 >, %s: vector <4 xf32 >, %t: vector <4 xf32 >,
125+ %u: vector <4 xf32 >, %v: vector <4 xf32 >, %w: vector <4 xf32 >, %x: vector <4 xf32 >,
126+ %y: vector <4 xf32 >, %z: vector <4 xf32 >, %aa: vector <4 xf32 >, %ab: vector <4 xf32 >,
127+ %ac: vector <4 xf32 >, %ad: vector <4 xf32 >, %ae: vector <4 xf32 >, %af: vector <4 xf32 >,
128+ %ag: vector <4 xf32 >, %ah: vector <4 xf32 >, %ai: vector <4 xf32 >, %aj: vector <4 xf32 >,
129+ %ak: vector <4 xf32 >, %al: vector <4 xf32 >, %am: vector <4 xf32 >, %an: vector <4 xf32 >,
130+ %ao: vector <4 xf32 >, %ap: vector <4 xf32 >, %aq: vector <4 xf32 >, %ar: vector <4 xf32 >,
131+ %as: vector <4 xf32 >, %at: vector <4 xf32 >, %au: vector <4 xf32 >, %av: vector <4 xf32 >,
132+ %aw: vector <4 xf32 >, %ax: vector <4 xf32 >, %ay: vector <4 xf32 >, %az: vector <4 xf32 >,
133+ %ba: vector <4 xf32 >, %bb: vector <4 xf32 >, %bc: vector <4 xf32 >, %bd: vector <4 xf32 >,
134+ %be: vector <4 xf32 >, %bf: vector <4 xf32 >, %bg: vector <4 xf32 >, %bh: vector <4 xf32 >,
135+ %bi: vector <4 xf32 >, %bj: vector <4 xf32 >, %bk: vector <4 xf32 >, %bl: vector <4 xf32 >) -> vector <256 xf32 > {
129136 %0:4 = vector.to_elements %a : vector <4 xf32 >
130137 %1:4 = vector.to_elements %b : vector <4 xf32 >
131138 %2:4 = vector.to_elements %c : vector <4 xf32 >
@@ -276,9 +283,9 @@ func.func @shuffle_tree_concat_64x4_256(
276283// -----
277284
278285func.func @shuffle_tree_arbitrary_4x4_to_16 (%a: vector <4 xf32 >,
279- %b: vector <4 xf32 >,
280- %c: vector <4 xf32 >,
281- %d: vector <4 xf32 >) -> vector <16 xf32 > {
286+ %b: vector <4 xf32 >,
287+ %c: vector <4 xf32 >,
288+ %d: vector <4 xf32 >) -> vector <16 xf32 > {
282289 %0:4 = vector.to_elements %a : vector <4 xf32 >
283290 %1:4 = vector.to_elements %b : vector <4 xf32 >
284291 %2:4 = vector.to_elements %c : vector <4 xf32 >
@@ -299,8 +306,8 @@ func.func @shuffle_tree_arbitrary_4x4_to_16(%a: vector<4xf32>,
299306// -----
300307
301308func.func @shuffle_tree_arbitrary_3x4_to_12 (%a: vector <4 xf32 >,
302- %b: vector <4 xf32 >,
303- %c: vector <4 xf32 >) -> vector <12 xf32 > {
309+ %b: vector <4 xf32 >,
310+ %c: vector <4 xf32 >) -> vector <12 xf32 > {
304311 %0:4 = vector.to_elements %a : vector <4 xf32 >
305312 %1:4 = vector.to_elements %b : vector <4 xf32 >
306313 %2:4 = vector.to_elements %c : vector <4 xf32 >
@@ -320,8 +327,8 @@ func.func @shuffle_tree_arbitrary_3x4_to_12(%a: vector<4xf32>,
320327// -----
321328
322329func.func @shuffle_tree_arbitrary_3x5_to_9 (%a: vector <5 xf32 >,
323- %b: vector <5 xf32 >,
324- %c: vector <5 xf32 >) -> vector <9 xf32 > {
330+ %b: vector <5 xf32 >,
331+ %c: vector <5 xf32 >) -> vector <9 xf32 > {
325332 %0:5 = vector.to_elements %a : vector <5 xf32 >
326333 %1:5 = vector.to_elements %b : vector <5 xf32 >
327334 %2:5 = vector.to_elements %c : vector <5 xf32 >
@@ -341,9 +348,9 @@ func.func @shuffle_tree_arbitrary_3x5_to_9(%a: vector<5xf32>,
341348// -----
342349
343350func.func @shuffle_tree_broadcast_4x2_to_32 (%a: vector <2 xf32 >,
344- %b: vector <2 xf32 >,
345- %c: vector <2 xf32 >,
346- %d: vector <2 xf32 >) -> vector <32 xf32 > {
351+ %b: vector <2 xf32 >,
352+ %c: vector <2 xf32 >,
353+ %d: vector <2 xf32 >) -> vector <32 xf32 > {
347354 %0:2 = vector.to_elements %a : vector <2 xf32 >
348355 %1:2 = vector.to_elements %b : vector <2 xf32 >
349356 %2:2 = vector.to_elements %c : vector <2 xf32 >
@@ -364,12 +371,11 @@ func.func @shuffle_tree_broadcast_4x2_to_32(%a: vector<2xf32>,
364371
365372// -----
366373
367- func.func @shuffle_tree_arbitrary_mixed_sizes (
368- %a : vector <2 xf32 >,
369- %b : vector <1 xf32 >,
370- %c : vector <3 xf32 >,
371- %d : vector <1 xf32 >,
372- %e : vector <5 xf32 >) -> vector <6 xf32 > {
374+ func.func @shuffle_tree_arbitrary_mixed_sizes (%a : vector <2 xf32 >,
375+ %b : vector <1 xf32 >,
376+ %c : vector <3 xf32 >,
377+ %d : vector <1 xf32 >,
378+ %e : vector <5 xf32 >) -> vector <6 xf32 > {
373379 %0:2 = vector.to_elements %a : vector <2 xf32 >
374380 %1 = vector.to_elements %b : vector <1 xf32 >
375381 %2:3 = vector.to_elements %c : vector <3 xf32 >
@@ -391,13 +397,12 @@ func.func @shuffle_tree_arbitrary_mixed_sizes(
391397
392398// -----
393399
394- func.func @shuffle_tree_odd_intermediate_vectors (
395- %a : vector <2 xf32 >,
396- %b : vector <2 xf32 >,
397- %c : vector <2 xf32 >,
398- %d : vector <2 xf32 >,
399- %e : vector <2 xf32 >,
400- %f : vector <2 xf32 >) -> vector <6 xf32 > {
400+ func.func @shuffle_tree_odd_intermediate_vectors (%a : vector <2 xf32 >,
401+ %b : vector <2 xf32 >,
402+ %c : vector <2 xf32 >,
403+ %d : vector <2 xf32 >,
404+ %e : vector <2 xf32 >,
405+ %f : vector <2 xf32 >) -> vector <6 xf32 > {
401406 %0:2 = vector.to_elements %a : vector <2 xf32 >
402407 %1:2 = vector.to_elements %b : vector <2 xf32 >
403408 %2:2 = vector.to_elements %c : vector <2 xf32 >
@@ -417,7 +422,3 @@ func.func @shuffle_tree_odd_intermediate_vectors(
417422// CHECK: %[[L2SH0:.*]] = vector.shuffle %[[L0SH2]], %[[L0SH2]] [0, 1, -1, -1] : vector<2xf32>, vector<2xf32>
418423// CHECK: %[[L3SH0:.*]] = vector.shuffle %[[L1SH0]], %[[L2SH0]] [0, 1, 2, 3, 4, 5] : vector<4xf32>, vector<4xf32>
419424// CHECK: return %[[L3SH0]] : vector<6xf32>
420-
421-
422-
423-
0 commit comments