It should not read global memory again. We already enable such kind of 
optimization pass in LLVM.
And (a*b+c*d) should not calculate again. This is common-subexpression. Clang 
should do it easily. But I am not quite sure whether clang is affected by -O2 
or -O0. Anyone know details?

To check specific kernel. You may need to ‘export OCL_OUTPUT_LLVM_AFTER_GEN=1’ 
and build your program again to get the LLVM IR.

From: Beignet [mailto:[email protected]] On Behalf Of 彭席汉
Sent: Thursday, February 12, 2015 4:40 PM
To: [email protected]
Subject: [Beignet] a question about default optimize option when building

Hi:

My CL kernel program looks like as follow:

__global unsigned char *p;
int a, b, c, d;

res1 = *p * (a*b + c*d);

<some code here>

res2 = *p * (a*b + c*d + 1);


If I use default build option, for res2, what will EU do? read global memory 
for pointer p again and do computing of "a*b + c*d" again?
_______________________________________________
Beignet mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to