[LLVMdev] loop pragmas

David Tweed david.tweed at arm.com
Thu Nov 22 01:01:07 PST 2012

> Other types of annotations that are
> "harmless" are probably good to have, for example "unroll-by" (assuming
> that this is a suggestion to the compiler, not an order).

| To my knowledge, we are avoiding to allow the user to 'tune' the
| compiler. Manual tuning may be good for a certain piece of hardware, but
| will have negative effects on other platforms.

Note that LLVM is typically the "backend" compiler portion of a combined
compiler that does language specific stuff. It would be useful to have a way
for such a front-end compiler to, if it so desires, annotate transformation
like loop unroll factors if there's machinery to implement the
transformation. I'd actually prefer such directives to actually be orders
rather than suggestions, unless they specify impossible things.

In a personal capacity, I'm very interested in auto-tuning pieces of
software -- think ATLAS or SPIRAL -- where the ability to empirically try
various alternatives on a new hardware platform is very useful.

| Instead of providing facilities to tune the hardware, we should
| understand why LLVM does not choose the right unrolling factor. Maybe
| there is additional information that can help LLVM to derive that
| information.

This is a laudable goal, but there always comes up the issue that developing
understanding of why things perform in a particular way on a modern
CPU/memory/chipset combination requires manpower, often more manpower than
is available.


More information about the llvm-dev mailing list