Displaying 3 results from an estimated 3 matches for "vectorized_for".
2016 Mar 02
4
Proposal for function vectorization and loop vectorization with function calls
...ng the k loop; and that
b) no loop-carried backward dependencies are introduced by the "dowork"
call that prevent the vectorization of the k loop.
The expected vector loop (shown as pseudo code, ignoring leftover iterations)
resulting from LLVM's LoopVectorizer is
... ...
vectorized_for (k = 0; k < 4096; k += VL) {
a[k:VL] = {k, k+1, k+2, k+VL-1} * 0.5;
a[k:VL] = _ZGVb4Nul_dowork(a, k);
}
... ...
In this example "_ZGVb4Nul_dowork" is a special name mangling where:
_ZGV is a prefix based on C/C++ name mangling rule suggested by GCC community,
'b'...
2016 Mar 02
2
Proposal for function vectorization and loop vectorization with function calls
...not exist to start with. See below example, we need this functionality anyway as a fall back for vecotizing this loop when there is no SIMD version of dowork exist. E.g.
#pragma clang loop vectorize(enable)
for (k = 0; k < 4096; k++) {
a[k] = k * 0.5;
a[k] = dowork(a, k);
}
==>
Vectorized_for (k = 0; k < 4096; k+=VL) { // assume VL = 4. No vector version of dowork function exist.
a[k:VL] = {k, k+1, K+2, k+3) * 0.5.; // Broadcast 0.5 to SIMD register, vector mul, with {k, k+1, k+2, k+3}, vector store to a[k:VL]
t0 = dowork(a, k) //...
2016 Mar 02
5
RFC: Implementing the Swift calling convention in LLVM and Clang
> On Mar 2, 2016, at 1:33 AM, Renato Golin <renato.golin at linaro.org> wrote:
>
> On 2 March 2016 at 01:14, John McCall via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
>> Hi, all.
>> - We sometimes want to return more values in registers than the convention normally does, and we want to be able to use both integer and floating-point registers. For