Displaying 4 results from an estimated 4 matches for "scather".
Did you mean:
rather
2013 Oct 21
0
[LLVMdev] First attempt at recognizing pointer reduction
...To detect memory access patterns you will want to look at the SCEV of a pointer (or at a set of SCEVs/pointers). This way you get a canonical form.
For example these should be the SCEVs of “int a[2*i] = ; a[2*i+1] =”:
{ptr, +, 8}_loop
{ptr+4, +, 8}_loop
Each access on its own requires a gather/scather (2 loads/stores when vectorized (VF=2) + inserts/extracts). But when we look at both at once we see that we only need two load/store in total (plus some interleaving operations).
What other patterns (than strided accesses) do you want to vectorize?
>
> For instance, even if the relationshi...
2013 Oct 21
2
[LLVMdev] First attempt at recognizing pointer reduction
Hi Arnold,
To sum up my intentions, I want to understand how the reduction/induction
variable detection works in LLVM, so that I can know better how to detect
different patterns in memory, not just the stride vectorization.
For instance, even if the relationship between each loop would be
complicated, I know that in each loop, all three reads are sequential. So,
at least, I could use a
2013 Oct 21
0
[LLVMdev] LLVMdev Digest, Vol 112, Issue 56
...To detect memory access patterns you will want to look at the SCEV of a pointer (or at a set of SCEVs/pointers). This way you get a canonical form.
For example these should be the SCEVs of ?int a[2*i] = ; a[2*i+1] =?:
{ptr, +, 8}_loop
{ptr+4, +, 8}_loop
Each access on its own requires a gather/scather (2 loads/stores when vectorized (VF=2) + inserts/extracts). But when we look at both at once we see that we only need two load/store in total (plus some interleaving operations).
What other patterns (than strided accesses) do you want to vectorize?
>
> For instance, even if the relationshi...
2013 Oct 21
1
[LLVMdev] First attempt at recognizing pointer reduction
On 21 October 2013 20:58, Arnold Schwaighofer <aschwaighofer at apple.com>wrote:
> For example these should be the SCEVs of “int a[2*i] = ; a[2*i+1] =”:
>
> {ptr, +, 8}_loop
> {ptr+4, +, 8}_loop
>
> Each access on its own requires a gather/scather (2 loads/stores when
> vectorized (VF=2) + inserts/extracts). But when we look at both at once we
> see that we only need two load/store in total (plus some interleaving
> operations).
>
Yes, I've been studying SCEV when trying to understand some other patterns
where the vectorize...