commit | 0d9faa8cd5bbf335fd659710e5676d90d3bc5df3 | [log] [tgz] |
---|---|---|
author | Steven Varoumas <steven.varoumas1@huawei.com> | Mon Apr 22 13:54:01 2024 +0100 |
committer | Copybara-Service <copybara-worker@google.com> | Mon Apr 22 05:55:25 2024 -0700 |
tree | b6661ff3256542a98b6407a66bafcc6d9eee6982 | |
parent | 895c0ecb54ecf0abc34a3fa6a7f6854b0d3efaf5 [diff] |
[mlir][Hoisting] Hoisting vector.extract/vector.broadcast pairs (#86108) This transformation, inspired by what is done in hoist_redundant_transfers, hoists pairs of extract/broadcast operations out of scf.for loops. It changes a loop of the form: ``` %res = scf.for _ = _ to _ step _ iter_args(%iarg = %v) -> (t1) { %e = vector.extract %iarg : t1 to t2 %u = "some_use"(%e) : (t2) -> t2 %b = vector.broadcast %u : t2 to t1 scf.yield %b : t1 } ``` into the following: ``` %e = vector.extract %v: t1 to t2 %res' = scf.for _ = _ to _ step _ iter_args(%iarg = %e) -> (t2) { %u' = "some_use"(%iarg) : (t2) -> t2 scf.yield %u' : t2 } %res = vector.broadcast %res' : t2 to t1 ``` GitOrigin-RevId: 35b292efc6fc31b884255d7cb46db7d6346c6f46
See https://mlir.llvm.org/ for more information.