Displaying 5 results from an estimated 5 matches for "passthruval".
2014 Dec 18
8
[LLVMdev] Indexed Load and Store Intrinsics - proposal
...Vectorizers to tap this functionality, and propose to do so by introducing new intrinsics:
VectorValue = @llvm.sindex.load (BaseAddr, VectorOfIndices, Scale)
VectorValue = @llvm.uindex.load (BaseAddr, VectorOfIndices, Scale)
VectorValue = @llvm.sindex.masked.load (BaseAddr, VectorOfIndices, Scale, PassThruVal, Mask)
VectorValue = @llvm.uindex.masked.load (BaseAddr, VectorOfIndices, Scale, PassThruVal, Mask)
Semantics:
For i=0,1,...,N-1: if (Mask[i]) {VectorValue[i] = *(BaseAddr + VectorOfIndices[i]*Scale) else VectorValue[i]=PassThruVal[i];}
void @llvm.sindex.store (BaseAddr, VectorValue, VectorOfIndi...
2015 Mar 15
2
[LLVMdev] Indexed Load and Store Intrinsics - proposal
...lity, and propose to do so
> by introducing new intrinsics:
>
> VectorValue = @llvm.sindex.load (BaseAddr, VectorOfIndices, Scale)
> VectorValue = @llvm.uindex.load (BaseAddr, VectorOfIndices, Scale)
> VectorValue = @llvm.sindex.masked.load (BaseAddr, VectorOfIndices,
> Scale, PassThruVal, Mask) VectorValue = @llvm.uindex.masked.load
> (BaseAddr, VectorOfIndices, Scale, PassThruVal, Mask)
>
> Semantics:
> For i=0,1,…,N-1: if (Mask[i]) {VectorValue[i] = *(BaseAddr +
> VectorOfIndices[i]*Scale) else VectorValue[i]=PassThruVal[i];}
>
> void @llvm.sindex.store (Bas...
2016 Sep 19
2
RFC: New intrinsics masked.expandload and masked.compressstore
Hi all,
AVX-512 ISA introduces new vector instructions VCOMPRESS and VEXPAND in order to allow vectorization of the following loops with two specific types of cross-iteration dependencies:
Compress:
for (int i=0; i<N; ++i)
If (t[i])
*A++ = expr;
Expand:
for (i=0; i<N; ++i)
If (t[i])
X[i] = *A++;
else
2016 Sep 25
5
RFC: New intrinsics masked.expandload and masked.compressstore
|
|Hi Elena,
|
|Technically speaking, this seems straightforward.
|
|I wonder, however, how target-independent this is in a practical
|sense; will there be an efficient lowering when targeting any other
|ISA? I don't want to get into the territory where, because the
|vectorizer is supposed to be architecture independent, we need to
|add target-independent intrinsics for all
2016 Sep 26
2
RFC: New intrinsics masked.expandload and masked.compressstore
|
|How would this work in this case? The result would need to affect the
|legality and cost of the memory instruction. From your poster, it looks
|like we're talking about loops with constructs like this:
|
|for (i =0; i < N; i++) {
| if (topVal > b[i]) {
| *dst = a[i];
| dst++;
| }
|}
|
|is this loop vectorizable at all without these constructs?
Good