@@ -507,52 +507,28 @@ func.func @interleave_size1(%a: vector<1xf32>, %b: vector<1xf32>) -> vector<2xf3
507
507
508
508
// -----
509
509
510
- // CHECK-LABEL: func @deinterleave_return0
510
+ // CHECK-LABEL: func @deinterleave
511
511
// CHECK-SAME: (%[[ARG0:.+]]: vector<4xf32>)
512
512
// CHECK: %[[SHUFFLE0:.*]] = spirv.VectorShuffle [0 : i32, 2 : i32] %[[ARG0]], %[[ARG0]] : vector<4xf32>, vector<4xf32> -> vector<2xf32>
513
513
// CHECK: %[[SHUFFLE1:.*]] = spirv.VectorShuffle [1 : i32, 3 : i32] %[[ARG0]], %[[ARG0]] : vector<4xf32>, vector<4xf32> -> vector<2xf32>
514
- // CHECK: return %[[SHUFFLE0]]
515
- func.func @deinterleave_return0 (%a: vector <4 xf32 >) -> vector <2 xf32 > {
514
+ // CHECK: return %[[SHUFFLE0]], %[[SHUFFLE1]]
515
+ func.func @deinterleave (%a: vector <4 xf32 >) -> ( vector <2 xf32 >, vector < 2 x f32 >) {
516
516
%0 , %1 = vector.deinterleave %a : vector <4 xf32 > -> vector <2 xf32 >
517
- return %0 : vector <2 xf32 >
517
+ return %0 , %1 : vector < 2 x f32 >, vector <2 xf32 >
518
518
}
519
519
520
520
// -----
521
521
522
- // CHECK-LABEL: func @deinterleave_return1
523
- // CHECK-SAME: (%[[ARG0:.+]]: vector<4xf32>)
524
- // CHECK: %[[SHUFFLE0:.*]] = spirv.VectorShuffle [0 : i32, 2 : i32] %[[ARG0]], %[[ARG0]] : vector<4xf32>, vector<4xf32> -> vector<2xf32>
525
- // CHECK: %[[SHUFFLE1:.*]] = spirv.VectorShuffle [1 : i32, 3 : i32] %[[ARG0]], %[[ARG0]] : vector<4xf32>, vector<4xf32> -> vector<2xf32>
526
- // CHECK: return %[[SHUFFLE1]]
527
- func.func @deinterleave_return1 (%a: vector <4 xf32 >) -> vector <2 xf32 > {
528
- %0 , %1 = vector.deinterleave %a : vector <4 xf32 > -> vector <2 xf32 >
529
- return %1 : vector <2 xf32 >
530
- }
531
-
532
- // -----
533
-
534
- // CHECK-LABEL: func @deinterleave_scalar_return0
522
+ // CHECK-LABEL: func @deinterleave_scalar
535
523
// CHECK-SAME: (%[[ARG0:.+]]: vector<2xf32>)
536
524
// CHECK: %[[EXTRACT0:.*]] = spirv.CompositeExtract %[[ARG0]][0 : i32] : vector<2xf32>
537
525
// CHECK: %[[EXTRACT1:.*]] = spirv.CompositeExtract %[[ARG0]][1 : i32] : vector<2xf32>
538
- // CHECK: %[[RES:.*]] = builtin.unrealized_conversion_cast %[[EXTRACT0]] : f32 to vector<1xf32>
539
- // CHECK: return %[[RES]]
540
- func.func @deinterleave_scalar_return0 (%a: vector <2 xf32 >) -> vector <1 xf32 > {
526
+ // CHECK: %[[CAST0:.*]] = builtin.unrealized_conversion_cast %[[EXTRACT0]] : f32 to vector<1xf32>
527
+ // CHECK: %[[CAST1:.*]] = builtin.unrealized_conversion_cast %[[EXTRACT1]] : f32 to vector<1xf32>
528
+ // CHECK: return %[[CAST0]], %[[CAST1]]
529
+ func.func @deinterleave_scalar (%a: vector <2 xf32 >) -> (vector <1 xf32 >, vector <1 xf32 >) {
541
530
%0 , %1 = vector.deinterleave %a: vector <2 xf32 > -> vector <1 xf32 >
542
- return %0 : vector <1 xf32 >
543
- }
544
-
545
- // -----
546
-
547
- // CHECK-LABEL: func @deinterleave_scalar_return1
548
- // CHECK-SAME: (%[[ARG0:.+]]: vector<2xf32>)
549
- // CHECK: %[[EXTRACT0:.*]] = spirv.CompositeExtract %[[ARG0]][0 : i32] : vector<2xf32>
550
- // CHECK: %[[EXTRACT1:.*]] = spirv.CompositeExtract %[[ARG0]][1 : i32] : vector<2xf32>
551
- // CHECK: %[[RES:.*]] = builtin.unrealized_conversion_cast %[[EXTRACT1]] : f32 to vector<1xf32>
552
- // CHECK: return %[[RES]]
553
- func.func @deinterleave_scalar_return1 (%a: vector <2 xf32 >) -> vector <1 xf32 > {
554
- %0 , %1 = vector.deinterleave %a: vector <2 xf32 > -> vector <1 xf32 >
555
- return %1 : vector <1 xf32 >
531
+ return %0 , %1 : vector <1 xf32 >, vector <1 xf32 >
556
532
}
557
533
558
534
// -----
0 commit comments