xref: /llvm-project/mlir/test/Dialect/Vector/vector-interleave-to-shuffle.mlir (revision 714aee31e10020fbe2169bdca088545be4bfa4ae)
1// RUN: mlir-opt %s --transform-interpreter | FileCheck %s
2
3// CHECK-LABEL: @vector_interleave_to_shuffle
4func.func @vector_interleave_to_shuffle(%a: vector<7xi16>, %b: vector<7xi16>) -> vector<14xi16> {
5  %0 = vector.interleave %a, %b : vector<7xi16> -> vector<14xi16>
6  return %0 : vector<14xi16>
7}
8// CHECK: vector.shuffle %arg0, %arg1 [0, 7, 1, 8, 2, 9, 3, 10, 4, 11, 5, 12, 6, 13] : vector<7xi16>, vector<7xi16>
9
10module attributes {transform.with_named_sequence} {
11  transform.named_sequence @__transform_main(%module_op: !transform.any_op {transform.readonly}) {
12    %f = transform.structured.match ops{["func.func"]} in %module_op
13      : (!transform.any_op) -> !transform.any_op
14
15    transform.apply_patterns to %f {
16      transform.apply_patterns.vector.interleave_to_shuffle
17    } : !transform.any_op
18    transform.yield
19  }
20}
21