[PATCH] D109325: [ARM] Teach DemandedVectorElts about VMOVN lanes
Dave Green via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 10 02:20:40 PDT 2021
dmgreen added a comment.
In D109325#2989713 <https://reviews.llvm.org/D109325#2989713>, @SjoerdMeijer wrote:
> Before I continue reading the rest, just wanted to check this:
>
>> The class of instructions that write to narrow top/bottom lanes only demand the even or odd elements of the input lanes. Which means that VMOVNT; VMOVNB demands no lanes from the original input.
>
> I don't follow the conclusion here that the VMOVNT; VMOVNB don't demand lanes from the original input, because we do read from the original input?
Oh yeah, good point - the predicated intrinsics will not work this way if they are not acting on all lanes. I had forgotten that the first input is also the passthrough value. I'll update the patch to remove those.
For the non-predicated cases I mean to say - if you have overwritten the top lanes and you have overwritten the bottom lanes - then no value from the original input are demanded. You have overridden all the lanes. So a VMOVNT will demand the bottom (even) lanes from the first input and insert a new value into into the top (odd) lanes. A VMOVNB will demand the top (odd) lanes and write new values into the bottom. A pair of `X=VMOVNT A, B; Y= VMOVNB X, C` will use none of the lanes of `A`.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D109325/new/
https://reviews.llvm.org/D109325
More information about the llvm-commits
mailing list