xref: /llvm-project/mlir/test/Dialect/Vector/test-create-broadcast.mlir (revision de13eeda11b665d2a5f13e523124cf7c8c9bedd9)
1// RUN: mlir-opt %s --test-create-vector-broadcast --allow-unregistered-dialect --split-input-file | FileCheck %s
2
3func.func @foo(%a : f32) -> vector<1x2xf32> {
4  %0 = "test_create_broadcast"(%a) {broadcast_dims = array<i64: 0, 1>} : (f32) -> vector<1x2xf32>
5  // CHECK: vector.broadcast {{.*}} : f32 to vector<1x2xf32>
6  // CHECK-NOT: vector.transpose
7  return %0:  vector<1x2xf32>
8}
9
10// -----
11
12func.func @foo(%a : vector<2x2xf32>) -> vector<2x2x3xf32> {
13  %0 = "test_create_broadcast"(%a) {broadcast_dims = array<i64: 2>}
14    : (vector<2x2xf32>) -> vector<2x2x3xf32>
15  // CHECK: vector.broadcast {{.*}} : vector<2x2xf32> to vector<3x2x2xf32>
16  // CHECK: vector.transpose {{.*}}, [1, 2, 0] : vector<3x2x2xf32> to vector<2x2x3xf32>
17  return %0: vector<2x2x3xf32>
18}
19
20// -----
21
22func.func @foo(%a : vector<3x3xf32>) -> vector<4x3x3xf32> {
23  %0 = "test_create_broadcast"(%a) {broadcast_dims = array<i64: 0>}
24    : (vector<3x3xf32>) -> vector<4x3x3xf32>
25  // CHECK: vector.broadcast {{.*}} : vector<3x3xf32> to vector<4x3x3xf32>
26  // CHECK-NOT: vector.transpose
27  return %0: vector<4x3x3xf32>
28}
29
30// -----
31
32func.func @foo(%a : vector<2x4xf32>) -> vector<1x2x3x4x5xf32> {
33  %0 = "test_create_broadcast"(%a) {broadcast_dims = array<i64: 0, 2, 4>}
34    : (vector<2x4xf32>) -> vector<1x2x3x4x5xf32>
35  // CHECK: vector.broadcast {{.*}} : vector<2x4xf32> to vector<1x3x5x2x4xf32>
36  // CHECK: vector.transpose {{.*}}, [0, 3, 1, 4, 2] : vector<1x3x5x2x4xf32> to vector<1x2x3x4x5xf32>
37  return %0: vector<1x2x3x4x5xf32>
38}
39