``` vector.load %arg0[%arg1] : memref<?xf32>, vector<4xf32> vector.extract %0[1] : f32 from vector<4xf32> ``` Gets converted to: ``` %c1 = arith.constant 1 : index %0 = arith.addi %arg1, %c1 overflow<nsw> : index %1 = memref.load %arg0[%0] : memref<?xf32> ``` ``` %0 = vector.splat %arg2 : vector<1xf32> vector.store %0, %arg0[%arg1] : memref<?xf32>, vector<1xf32> ``` Gets converted to: ``` memref.store %arg2, %arg0[%arg1] : memref<?xf32> ```
15 lines
599 B
MLIR
15 lines
599 B
MLIR
// RUN: mlir-opt %s
|
|
|
|
// This is smoke test for `transform.apply_patterns.vector.sink_ops` and this
|
|
// file is also used in `vector-sink.mlir`.
|
|
module attributes {transform.with_named_sequence} {
|
|
transform.named_sequence @__transform_main(%module_op: !transform.any_op {transform.readonly}) {
|
|
%func = transform.structured.match ops{["func.func"]} in %module_op : (!transform.any_op) -> !transform.any_op
|
|
transform.apply_patterns to %func {
|
|
transform.apply_patterns.vector.sink_ops
|
|
transform.apply_patterns.vector.sink_mem_ops
|
|
} : !transform.any_op
|
|
transform.yield
|
|
}
|
|
}
|