|
1 | 1 | // RUN: mlir-opt %s -canonicalize="test-convergence" -split-input-file -allow-unregistered-dialect | FileCheck %s
|
2 | 2 |
|
| 3 | + |
| 4 | + |
| 5 | + |
3 | 6 | // CHECK-LABEL: create_vector_mask_to_constant_mask
|
4 | 7 | func.func @create_vector_mask_to_constant_mask() -> (vector<4x3xi1>) {
|
5 | 8 | %c2 = arith.constant 2 : index
|
@@ -2215,6 +2218,80 @@ func.func @transpose_splat2(%arg : f32) -> vector<3x4xf32> {
|
2215 | 2218 |
|
2216 | 2219 | // -----
|
2217 | 2220 |
|
| 2221 | +// CHECK-LABEL: scalar_broadcast_transpose_to_broadcast_folds |
| 2222 | +// CHECK-SAME: %[[ARG:.*]]: i8) -> vector<2x3x4xi8> { |
| 2223 | +// CHECK: %[[RES:.*]] = vector.broadcast %[[ARG]] : i8 to vector<2x3x4xi8> |
| 2224 | +// CHECK: return %[[RES]] : vector<2x3x4xi8> |
| 2225 | +func.func @scalar_broadcast_transpose_to_broadcast_folds(%arg0 : i8) -> vector<2x3x4xi8> { |
| 2226 | + %0 = vector.broadcast %arg0 : i8 to vector<3x4x2xi8> |
| 2227 | + %1 = vector.transpose %0, [2, 0, 1] : vector<3x4x2xi8> to vector<2x3x4xi8> |
| 2228 | + return %1 : vector<2x3x4xi8> |
| 2229 | +} |
| 2230 | + |
| 2231 | +// ----- |
| 2232 | + |
| 2233 | +// CHECK-LABEL: ones_broadcast_transpose_to_broadcast_folds |
| 2234 | +// CHECK-SAME: %[[ARG:.*]]: vector<1x1x1xi8>) -> vector<2x3x4xi8> { |
| 2235 | +// CHECK: %[[RES:.*]] = vector.broadcast %[[ARG]] : vector<1x1x1xi8> to vector<2x3x4xi8> |
| 2236 | +// CHECK: return %[[RES]] : vector<2x3x4xi8> |
| 2237 | +func.func @ones_broadcast_transpose_to_broadcast_folds(%arg0 : vector<1x1x1xi8>) -> vector<2x3x4xi8> { |
| 2238 | + %0 = vector.broadcast %arg0 : vector<1x1x1xi8> to vector<3x4x2xi8> |
| 2239 | + %1 = vector.transpose %0, [2, 0, 1] : vector<3x4x2xi8> to vector<2x3x4xi8> |
| 2240 | + return %1 : vector<2x3x4xi8> |
| 2241 | +} |
| 2242 | + |
| 2243 | +// ----- |
| 2244 | + |
| 2245 | +// CHECK-LABEL: partial_ones_broadcast_transpose_to_broadcast_folds |
| 2246 | +// CHECK-SAME: %[[ARG:.*]]: vector<1xi8>) -> vector<8x1xi8> { |
| 2247 | +// CHECK: %[[RES:.*]] = vector.broadcast %[[ARG]] : vector<1xi8> to vector<8x1xi8> |
| 2248 | +// CHECK: return %[[RES]] : vector<8x1xi8> |
| 2249 | +func.func @partial_ones_broadcast_transpose_to_broadcast_folds(%arg0 : vector<1xi8>) -> vector<8x1xi8> { |
| 2250 | + %0 = vector.broadcast %arg0 : vector<1xi8> to vector<1x8xi8> |
| 2251 | + %1 = vector.transpose %0, [1, 0] : vector<1x8xi8> to vector<8x1xi8> |
| 2252 | + return %1 : vector<8x1xi8> |
| 2253 | +} |
| 2254 | + |
| 2255 | +// ----- |
| 2256 | + |
| 2257 | +// CHECK-LABEL: broadcast_transpose_mixed_example_folds |
| 2258 | +// CHECK-SAME: %[[ARG:.*]]: vector<4x1x1x7xi8>) -> vector<3x2x4x5x6x7xi8> { |
| 2259 | +// CHECK: %[[RES:.*]] = vector.broadcast %[[ARG]] : vector<4x1x1x7xi8> to vector<3x2x4x5x6x7xi8> |
| 2260 | +// CHECK: return %[[RES]] : vector<3x2x4x5x6x7xi8> |
| 2261 | +func.func @broadcast_transpose_mixed_example_folds(%arg0 : vector<4x1x1x7xi8>) -> vector<3x2x4x5x6x7xi8> { |
| 2262 | + %0 = vector.broadcast %arg0 : vector<4x1x1x7xi8> to vector<2x3x4x5x6x7xi8> |
| 2263 | + %1 = vector.transpose %0, [1, 0, 2, 3, 4, 5] : vector<2x3x4x5x6x7xi8> to vector<3x2x4x5x6x7xi8> |
| 2264 | + return %1 : vector<3x2x4x5x6x7xi8> |
| 2265 | +} |
| 2266 | + |
| 2267 | +// ----- |
| 2268 | + |
| 2269 | +// CHECK-LABEL: broadcast_transpose_102_nofold |
| 2270 | +// CHECK-SAME: %[[ARG:.*]]: |
| 2271 | +// CHECK: %[[BCT:.*]] = vector.broadcast %[[ARG]] |
| 2272 | +// CHECK: %[[TRP:.*]] = vector.transpose %[[BCT]], [1, 0, 2] |
| 2273 | +// CHECK: return %[[TRP]] : vector<3x3x3xi8> |
| 2274 | +func.func @broadcast_transpose_102_nofold(%arg0 : vector<3x1x3xi8>) -> vector<3x3x3xi8> { |
| 2275 | + %0 = vector.broadcast %arg0 : vector<3x1x3xi8> to vector<3x3x3xi8> |
| 2276 | + %1 = vector.transpose %0, [1, 0, 2] : vector<3x3x3xi8> to vector<3x3x3xi8> |
| 2277 | + return %1 : vector<3x3x3xi8> |
| 2278 | +} |
| 2279 | + |
| 2280 | +// ----- |
| 2281 | + |
| 2282 | +// CHECK-LABEL: broadcast_transpose_021_nofold |
| 2283 | +// CHECK-SAME: %[[ARG:.*]]: |
| 2284 | +// CHECK: %[[BCT:.*]] = vector.broadcast %[[ARG]] |
| 2285 | +// CHECK: %[[TRP:.*]] = vector.transpose %[[BCT]], [0, 2, 1] |
| 2286 | +// CHECK: return %[[TRP]] : vector<3x3x3xi8> |
| 2287 | +func.func @broadcast_transpose_021_nofold(%arg0 : vector<3x1x3xi8>) -> vector<3x3x3xi8> { |
| 2288 | + %0 = vector.broadcast %arg0 : vector<3x1x3xi8> to vector<3x3x3xi8> |
| 2289 | + %1 = vector.transpose %0, [0, 2, 1] : vector<3x3x3xi8> to vector<3x3x3xi8> |
| 2290 | + return %1 : vector<3x3x3xi8> |
| 2291 | +} |
| 2292 | + |
| 2293 | +// ----- |
| 2294 | + |
2218 | 2295 | // CHECK-LABEL: func.func @insert_1d_constant
|
2219 | 2296 | // CHECK-DAG: %[[ACST:.*]] = arith.constant dense<[9, 1, 2]> : vector<3xi32>
|
2220 | 2297 | // CHECK-DAG: %[[BCST:.*]] = arith.constant dense<[0, 9, 2]> : vector<3xi32>
|
|
0 commit comments