commit | bdaf621d0fb37a4a96e8e0dfe67eb406b88fee17 | [log] [tgz] |
---|---|---|
author | Filipp Zhinkin <filipp.zhinkin@gmail.com> | Fri Aug 05 16:56:45 2022 -0400 |
committer | Copybara-Service <copybara-worker@google.com> | Fri Aug 05 14:08:08 2022 -0700 |
tree | 4fb3d42d99fec6dfb4fe28cfbca7cee047cc2944 | |
parent | 4e273d7b68c24bb257e37af27d8834dc23eea479 [diff] |
[DAGCombiner] Hoist funnel shifts from logic operation Hoist funnel shift from logic op: logic_op (FSH x0, x1, s), (FSH y0, y1, s) --> FSH (logic_op x0, y0), (logic_op x1, y1), s The transformation improves code generated for some cases related to issue https://github.com/llvm/llvm-project/issues/49541. Reduced amount of funnel shifts can also improve throughput on x86 CPUs by utilizing more available ports: https://quick-bench.com/q/gC7AKkJJsDZzRrs_JWDzm9t_iDM Transformation correctness checks: https://alive2.llvm.org/ce/z/TKPULH https://alive2.llvm.org/ce/z/UvTd_9 https://alive2.llvm.org/ce/z/j8qW3_ https://alive2.llvm.org/ce/z/7Wq7gE https://alive2.llvm.org/ce/z/Xr5w8R https://alive2.llvm.org/ce/z/D5xe_E https://alive2.llvm.org/ce/z/2yBZiy Differential Revision: https://reviews.llvm.org/D130994 GitOrigin-RevId: c55899f763b6d4510fd77711af3b605fd444e7fa