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