[PATCH] #pragma vectorize
Tyler Nowicki
tnowicki at apple.com
Tue Apr 29 10:50:52 PDT 2014
I think its a little more complicated than that unfortunately. The pragma does not contain annotated template tokens. Those tokens don't get generated for pragmas in general.
I’m not saying we shouldn’t do this. I just think we should leave it for another commit.
Tyler
On Apr 28, 2014, at 5:19 PM, Hal Finkel <hfinkel at anl.gov> wrote:
> ----- Original Message -----
>> From: "Tyler Nowicki" <tnowicki at apple.com>
>> To: "Hal Finkel" <hfinkel at anl.gov>
>> Cc: "Alexey Bataev" <a.bataev at hotmail.com>, "llvm cfe" <cfe-commits at cs.uiuc.edu>, "Nadav Rotem" <nrotem at apple.com>,
>> "Alexander Musman" <alexander.musman at gmail.com>
>> Sent: Monday, April 28, 2014 7:09:13 PM
>> Subject: Re: [PATCH] #pragma vectorize
>>
>>
>> It would be very useful for auto-tuning libraries certainly. I am not
>> sure how to support it currently. I suggest we leave it for a future
>> commit.
>
> I suspect that Alexey and Alexander can provide advice here. I don't see how this is any different from the method used by the OpenMP pragrmas to support this... look at test/OpenMP/simd_ast_print.cpp and how the simdlen clause supports this.
>
> I think that part of the problem is that you're restricting the form of the value too early:
>
> The code:
>
> + // Read the optimization value identifier.
>
> + PP.Lex(Tok);
>
> + if (Tok.isNot(tok::identifier) && Tok.isNot(tok::numeric_constant)) {
>
> + PP.Diag(Tok.getLocation(), diag::err_expected) <<
>
> + "enable, disable or integer value";
>
> + return;
>
> + }
>
> +
>
> + Info->Value = Tok;
>
> and:
>
> + if (Info->Value.is(tok::numeric_constant))
>
> + Hint.ValueExpr = Actions.ActOnNumericConstant(Info->Value);
>
> looks wrong. We should parse arbitrary constant expressions here. The OpenMP code for simdlen, etc. does this, please emulate that.
>
> Thanks again!
>
> -Hal
>
>>
>>
>> Thanks,
>>
>>
>> Tyler
>>
>>
>> On Apr 28, 2014, at 4:57 PM, Hal Finkel < hfinkel at anl.gov > wrote:
>>
>>
>>
>> ----- Original Message -----
>>
>>
>> From: "Tyler Nowicki" < tnowicki at apple.com >
>> To: "Alexander Musman" < alexander.musman at gmail.com >
>> Cc: "Alexey Bataev" < a.bataev at hotmail.com >, "llvm cfe" <
>> cfe-commits at cs.uiuc.edu >, "Nadav Rotem" < nrotem at apple.com >
>> Sent: Monday, April 28, 2014 6:53:40 PM
>> Subject: Re: [PATCH] #pragma vectorize
>>
>>
>>
>> Hi Alexander,
>>
>> Thanks for the review. I’ve updated the patch with your most of your
>> suggestions.
>>
>> Please review the updated patch.
>>
>>
>>
>> Do you plan to support substitution of integer template parameters
>> into pragma? Here is example:
>>
>>
>> cat ploop.cpp
>> template <int VLEN> void while_test(int *List, int Length) {
>> int i = 0;
>> #pragma loop vectorize(VLEN)
>> while(i < Length) {
>> List[i] = i*2;
>> i++;
>> }
>> }
>> int main() {
>> int L[100];
>> while_test<4> (L, 100);
>> return 0;
>> }
>>
>> I considered this, it is not currently supported. I’m not sure if it
>> makes sense. Lets leave this as a topic of future work for now.
>>
>> This kind of use case *must* be supported, it is very important for
>> libraries that auto-tune. Is there some reason that it is
>> complicated to support?
>>
>> -Hal
>>
>>
>>
>>
>>
>>
>>
>> ParsePragma.cpp:1619: // Read '('
>> This looks like a good place to use BalancedDelimiterTracker for
>> parsing '(' and ')’.
>>
>> I don’t think it is needed. It isn’t used by any other #pragma
>> directives and the syntax here is rather simple. What do you think
>> would be the benefit?
>>
>> Tyler
>>
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>>
>> --
>> Hal Finkel
>> Assistant Computational Scientist
>> Leadership Computing Facility
>> Argonne National Laboratory
>>
>
> --
> Hal Finkel
> Assistant Computational Scientist
> Leadership Computing Facility
> Argonne National Laboratory
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140429/afc04803/attachment.html>
More information about the cfe-commits
mailing list