[LLVMdev] Autotuning parameters/heuristics within LLVM

Jonas Wagner jonas.wagner at epfl.ch
Fri Oct 3 01:00:44 PDT 2014

Dear Robert,

a while ago, we had this idea of using compiler optimizations to increase
the performance of *verifying* an app, instead of the performance of
*executing* it. We found that there were a number of settings that had an
effect on verification performance:

   - The amount of loop unswitching -loop-unswitch-threshold=...
   - The amount of loop unrolling -unroll-threshold=...
   - The amount of function inlining -inline-threshold=...
   - The amount of jump threading -jump-threading-threshold=...
   - Whether to favor branches or select instructions

The effect that these had on verification (in our case, exhaustive symbolic
testing) was quite drastic, with speedups of 95x in some cases.

The core idea behind the work is that compilers use *cost models* that tell
them how expensive an operation is. For verification, the costs are
different. I’m writing you because these settings also have an impact en
execution performance. If you find other parameters that have large
effects, I’d be thrilled to hear about it.


PS: more details on our experiments:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141003/23565cb1/attachment.html>

More information about the llvm-dev mailing list