Commit
fc58bfd02f8d27e610500db53b268157cce0637b
by pifon[mlir] Remove complex ops from Standard dialect.
`complex` dialect should be used instead. https://llvm.discourse.group/t/rfc-split-the-complex-dialect-from-std/2496/2
Differential Revision: https://reviews.llvm.org/D95077
|
 | mlir/include/mlir/Dialect/StandardOps/EDSC/Intrinsics.h |
 | mlir/test/IR/core-ops.mlir |
 | mlir/include/mlir/Dialect/StandardOps/IR/Ops.td |
 | mlir/test/Conversion/StandardToLLVM/convert-to-llvmir.mlir |
 | mlir/test/IR/invalid-ops.mlir |
 | mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp |
Commit
bee486851c1a72899bd3c0f9b38249bbe5c38951
by flo[LoopUnswitch] Implement first version of partial unswitching.
This patch applies the idea from D93734 to LoopUnswitch.
It adds support for unswitching on conditions that are only invariant along certain paths through a loop.
In particular, it targets conditions in the loop header that depend on values loaded from memory. If either path from the true or false successor through the loop does not modify memory, perform partial loop unswitching.
That is, duplicate the instructions feeding the condition in the pre-header. Then unswitch on the duplicated condition. The condition is now known in the unswitched version for the 'invariant' path through the original loop.
On caveat of this approach is that one of the loops created can be partially unswitched again. To avoid this behavior, `llvm.loop.unswitch.partial.disable` metadata is added to the unswitched loops, to avoid subsequent partial unswitching.
If that's the approach to go, I can move the code handling the metadata kind into separate functions.
This increases the cases we unswitch quite a bit in SPEC2006/SPEC2000 & MultiSource. It also allows us to eliminate a dead loop in SPEC2017's omnetpp
``` Tests: 236 Same hash: 170 (filtered out) Remaining: 66 Metric: loop-unswitch.NumBranches
Program base patch diff test-suite...000/255.vortex/255.vortex.test 2.00 23.00 1050.0% test-suite...T2006/401.bzip2/401.bzip2.test 7.00 55.00 685.7% test-suite :: External/Nurbs/nurbs.test 5.00 26.00 420.0% test-suite...s-C/unix-smail/unix-smail.test 1.00 3.00 200.0% test-suite.../Prolangs-C++/ocean/ocean.test 1.00 3.00 200.0% test-suite...tions/lambda-0.1.3/lambda.test 1.00 3.00 200.0% test-suite...yApps-C++/PENNANT/PENNANT.test 2.00 5.00 150.0% test-suite...marks/Ptrdist/yacr2/yacr2.test 1.00 2.00 100.0% test-suite...lications/viterbi/viterbi.test 1.00 2.00 100.0% test-suite...plications/d/make_dparser.test 12.00 24.00 100.0% test-suite...CFP2006/433.milc/433.milc.test 14.00 27.00 92.9% test-suite.../Applications/lemon/lemon.test 7.00 12.00 71.4% test-suite...ce/Applications/Burg/burg.test 6.00 10.00 66.7% test-suite...T2006/473.astar/473.astar.test 16.00 26.00 62.5% test-suite...marks/7zip/7zip-benchmark.test 78.00 121.00 55.1% ```
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D93764
|
 | llvm/test/Transforms/LoopUnswitch/partial-unswitch-mssa-threshold.ll |
 | llvm/test/Transforms/LoopUnswitch/partial-unswitch.ll |
 | llvm/lib/Transforms/Scalar/LoopUnswitch.cpp |
Commit
facea4a2d4fa543da2241fb4268c34e9c019fca6
by hokein.wu[clangd] Fix a missing override keyword, NFC.
|
 | clang-tools-extra/clangd/index/remote/Client.cpp |