Displaying 6 results from an estimated 6 matches for "gnucannot".
2018 Apr 25
0
[LLVM][RFC] Representing the target device information in the LLVM IR
...t; Given a global variable @gg, the compiler has to generate code on the
> host to specify whether it is passed by value or passed by reference.
> In the following example, if the compiler generates the code for
> passing by value, the outlined function on the target
> i386-pc-linux-gnucannot get the correct value since it assumes the
> variable @gg is passed by reference.
>
> Here is the corresponding IR on the host side.
>
> %0 = load double, double* @gg, align 8, !tbaa !3
>
> %1 = bitcast double %0 to i64
>
> …
>
> %12 = getelementptr inboun...
2018 Apr 27
2
[LLVM][RFC] Representing the target device information in the LLVM IR
...gg, the compiler has to generate code
> on the host to specify whether it is passed by value or passed
> by reference. In the following example, if the compiler
> generates the code for passing by value, the outlined function
> on the target i386-pc-linux-gnucannot get the correct value
> since it assumes the variable @gg is passed by reference.
>
>
>
> Here is the corresponding IR on the host side.
>
> %0 = load double, double* @gg, align 8, !tbaa !3
>
> %1 = bitcast double %0 to i64...
2018 Apr 25
2
[LLVM][RFC] Representing the target device information in the LLVM IR
Given a global variable @gg, the compiler has to generate code on the host to specify whether it is passed by value or passed by reference. In the following example, if the compiler generates the code for passing by value, the outlined function on the target i386-pc-linux-gnu cannot get the correct value since it assumes the variable @gg is passed by reference.
Here is the corresponding IR on the
2018 Apr 26
4
[LLVM][RFC] Representing the target device information in the LLVM IR
For the firstprivate clause, the compiler generates code to pass it by value or by reference to the outlined function. The reason the first private scalars is generally passed by value is for the performance reason.
For this particular case, the compiler cannot generate code to pass the double @gg by value under i386-pc-linux-gnu since the value is 64 bit while the architecture is 32bit.
For the
2018 Apr 26
0
[LLVM][RFC] Representing the target device information in the LLVM IR
...lobal variable @gg, the compiler has to generate code on
> the host to specify whether it is passed by value or passed by
> reference. In the following example, if the compiler generates the
> code for passing by value, the outlined function on the target
> i386-pc-linux-gnucannot get the correct value since it assumes the
> variable @gg is passed by reference.
>
>
>
> Here is the corresponding IR on the host side.
>
> %0 = load double, double* @gg, align 8, !tbaa !3
>
> %1 = bitcast double %0 to i64
>
> …
&...
2018 Apr 27
0
[LLVM][RFC] Representing the target device information in the LLVM IR
Hi Hal,
We are not trying to address issues where the object mapped are of different sizes between host and target with different ABI. The issue is when the objects are of same size like double which is 8bytes on both 32bit and 64bit platform. If a double is used in a first_private on a target clause, the 64 bit side will pass it as value whereas on the 32bit side since the value does not