[LLVMdev] loop pragmas

Krzysztof Parzyszek kparzysz at codeaurora.org
Wed Nov 21 09:56:45 PST 2012

On 11/21/2012 11:32 AM, Tobias Grosser wrote:
> On 11/21/2012 03:45 PM, Krzysztof Parzyszek wrote:
>> I'm thinking of this in terms of parallelization directives.  The
>> optimizations that rely on such annotations would need to be done as
>> early as possible, before any optimization that could invalidate them.
>> If the annotation can become false, you are right---it's probably not a
>> good idea to have it as the medium.
> If we use metadata to model annotations, we need to ensure that it is
> either correct or in case a transformation can not guarantee the
> correctness of the meta data, that it is removed.

Yes, that is not hard to accomplish.

>> 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.

A lot of ISV code is meant to run on a particular platform, or on a 
small set of target platforms.  Such code is often hand-tuned and the 
tuning directives will be different for different targets..  I see no 
reason why we shouldn't allow that.  As a matter of fact, not allowing 
it will make us less competitive.

> Instead of providing facilities to tune the hardware, we should
> understand why LLVM does not choose the right unrolling factor.

Because in general it's impossible.  User's hints are always welcome.


Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, 
hosted by The Linux Foundation

More information about the llvm-dev mailing list