llvm-project/mlir/test/Dialect/Vector/vector-sink-transform.mlir
Ivan Butygin e87aa0c6ab
[mlir][vector] Sink vector.extract/splat into load/store ops (#134389)
```
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>
```
2025-04-22 17:18:54 +03:00

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
}
}