<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bcm5719-llvm/llvm/lib/Transforms/Vectorize, branch meklort-10.0.1</title>
<subtitle>Project Ortega BCM5719 LLVM</subtitle>
<id>https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1</id>
<link rel='self' href='https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/'/>
<updated>2020-02-19T12:38:53+00:00</updated>
<entry>
<title>[SLPVectorizer] Do not assume extracelement idx is a ConstantInt.</title>
<updated>2020-02-19T12:38:53+00:00</updated>
<author>
<name>Florian Hahn</name>
<email>flo@fhahn.com</email>
</author>
<published>2020-02-18T16:23:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=a0fe9e0517637c97f4f282bd3b76f2406a6cc1b2'/>
<id>urn:sha1:a0fe9e0517637c97f4f282bd3b76f2406a6cc1b2</id>
<content type='text'>
The index of an ExtractElementInst is not guaranteed to be a
ConstantInt. It can be any integer value. Check explicitly for
ConstantInts.

The new test cases illustrate scenarios where we crash without
this patch. I've also added another test case to check the matching
of extractelement vector ops works.

Reviewers: RKSimon, ABataev, dtemirbulatov, vporpo

Reviewed By: ABataev

Differential Revision: https://reviews.llvm.org/D74758

(cherry picked from commit e32522ca178acc42e26f21d64ef8fc180ad772bd)
</content>
</entry>
<entry>
<title>[LV] Fix predication for branches with matching true and false succs.</title>
<updated>2020-02-06T12:41:07+00:00</updated>
<author>
<name>Florian Hahn</name>
<email>flo@fhahn.com</email>
</author>
<published>2020-01-23T02:30:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=c0c5ab30179897944cf44efac1c743e5344924db'/>
<id>urn:sha1:c0c5ab30179897944cf44efac1c743e5344924db</id>
<content type='text'>
Currently due to the edge caching, we create wrong predicates for
branches with matching true and false successors. We will cache the
condition for the edge from the true successor, and then lookup the same
edge (src and dst are the same) for the edge to the false successor.

If both successors match, the condition should always be true. At the
moment, we cannot really create constant VPValues, but we can just
create a true condition as X | !X. Later passes will clean that up.

Fixes PR44488.

Reviewers: rengolin, hsaito, fhahn, Ayal, dorit, gilr

Reviewed By: Ayal

Differential Revision: https://reviews.llvm.org/D73079

(cherry picked from commit f14f2a856802e086662d919e2ead641718b27555)
</content>
</entry>
<entry>
<title>[LV] Do not try to sink dead instructions.</title>
<updated>2020-01-29T21:02:52+00:00</updated>
<author>
<name>Florian Hahn</name>
<email>flo@fhahn.com</email>
</author>
<published>2020-01-28T16:20:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=b0536b58c1b40ac946bb653d13a63e4372c2ca17'/>
<id>urn:sha1:b0536b58c1b40ac946bb653d13a63e4372c2ca17</id>
<content type='text'>
Dead instructions do not need to be sunk. Currently we try and record
the recipies for them, but there are no recipes emitted for them and
there's nothing to sink. They can be removed from SinkAfter while
marking them for recording.

Fixes PR44634.

Reviewers: rengolin, hsaito, fhahn, Ayal, gilr

Reviewed By: gilr

Differential Revision: https://reviews.llvm.org/D73423

(cherry picked from commit a911fef3dd79e0a04b241be7b476dde7e99744c4)
</content>
</entry>
<entry>
<title>[SLP] Don't allow Div/Rem as alternate opcodes</title>
<updated>2020-01-23T00:08:41+00:00</updated>
<author>
<name>Andrei Elovikov</name>
<email>andrei.elovikov@intel.com</email>
</author>
<published>2020-01-21T22:25:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=029140ee1ca99e23558c774bb23257a4ea796069'/>
<id>urn:sha1:029140ee1ca99e23558c774bb23257a4ea796069</id>
<content type='text'>
Summary:
We don't have control/verify what will be the RHS of the division, so it might
happen to be zero, causing UB.

Reviewers: Vasilis, RKSimon, ABataev

Reviewed By: ABataev

Subscribers: vporpo, ABataev, hiraditya, llvm-commits, vdmitrie

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D72740

(cherry picked from commit e1d6d368529322edc658c893c01eaadaf8053ea6)
</content>
</entry>
<entry>
<title>[LV] Silence unused variable warning in Release builds. NFC.</title>
<updated>2020-01-10T10:21:27+00:00</updated>
<author>
<name>Benjamin Kramer</name>
<email>benny.kra@googlemail.com</email>
</author>
<published>2020-01-10T10:21:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=498856fca5b9306f545554aeec93c7c058f03eb3'/>
<id>urn:sha1:498856fca5b9306f545554aeec93c7c058f03eb3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>[LV] VPValues for memory operation pointers (NFCI)</title>
<updated>2020-01-10T07:24:59+00:00</updated>
<author>
<name>Gil Rapaport</name>
<email>gil.rapaport@intel.com</email>
</author>
<published>2019-11-28T11:54:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=8647a72c4a52e0386c0397ce3fbd38121c18b873'/>
<id>urn:sha1:8647a72c4a52e0386c0397ce3fbd38121c18b873</id>
<content type='text'>
Memory instruction widening recipes use the pointer operand of their load/store
ingredient for generating the needed GEPs, making it difficult to feed these
recipes with pointers based on other ingredients or none at all.
This patch modifies these recipes to use a VPValue for the pointer instead, in
order to reduce ingredient def-use usage by ILV as a step towards full
VPlan-based def-use relations. The recipes are constructed with VPValues bound
to these ingredients, maintaining current behavior.

Differential revision: https://reviews.llvm.org/D70865
</content>
</entry>
<entry>
<title>[LV] Still vectorise when tail-folding can't find a primary inducation variable</title>
<updated>2020-01-09T09:14:00+00:00</updated>
<author>
<name>Sjoerd Meijer</name>
<email>sjoerd.meijer@arm.com</email>
</author>
<published>2020-01-09T09:14:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=8f1887456ab4ba24a62ccb19d0d04b08972a0289'/>
<id>urn:sha1:8f1887456ab4ba24a62ccb19d0d04b08972a0289</id>
<content type='text'>
This addresses a vectorisation regression for tail-folded loops that are
counting down, e.g. loops as simple as this:

  void foo(char *A, char *B, char *C, uint32_t N) {
    while (N &gt; 0) {
      *C++ = *A++ + *B++;
       N--;
    }
  }

These are loops that can be vectorised, but when tail-folding is requested, it
can't find a primary induction variable which we do need for predicating the
loop. As a result, the loop isn't vectorised at all, which it is able to do
when tail-folding is not attempted. So, this adds a check for the primary
induction variable where we decide how to lower the scalar epilogue. I.e., when
there isn't a primary induction variable, a scalar epilogue loop is allowed
(i.e. don't request tail-folding) so that vectorisation could still be
triggered.

Having this check for the primary induction variable make sense anyway, and in
addition, in a follow-up of this I will look into discovering earlier the
primary induction variable for counting down loops, so that this can also be
tail-folded.

Differential revision: https://reviews.llvm.org/D72324
</content>
</entry>
<entry>
<title>Revert "[SCEV] Move ScalarEvolutionExpander.cpp to Transforms/Utils (NFC)."</title>
<updated>2020-01-04T18:44:38+00:00</updated>
<author>
<name>Florian Hahn</name>
<email>flo@fhahn.com</email>
</author>
<published>2020-01-04T18:44:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=b8a3c34eee06c17ae42dc00218ba4f0c815e9a2c'/>
<id>urn:sha1:b8a3c34eee06c17ae42dc00218ba4f0c815e9a2c</id>
<content type='text'>
This reverts commit 51ef53f3bd23559203fe9af82ff2facbfedc1db3, as it
breaks some bots.
</content>
</entry>
<entry>
<title>[SCEV] Move ScalarEvolutionExpander.cpp to Transforms/Utils (NFC).</title>
<updated>2020-01-04T18:29:35+00:00</updated>
<author>
<name>Florian Hahn</name>
<email>flo@fhahn.com</email>
</author>
<published>2020-01-04T18:15:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=51ef53f3bd23559203fe9af82ff2facbfedc1db3'/>
<id>urn:sha1:51ef53f3bd23559203fe9af82ff2facbfedc1db3</id>
<content type='text'>
SCEVExpander modifies the underlying function so it is more suitable in
Transforms/Utils, rather than Analysis. This allows using other
transform utils in SCEVExpander.

Reviewers: sanjoy.google, efriedma, reames

Reviewed By: sanjoy.google

Differential Revision: https://reviews.llvm.org/D71537
</content>
</entry>
<entry>
<title>[LV][NFC] Keep dominator tree up to date during vectorization.</title>
<updated>2019-12-30T11:38:41+00:00</updated>
<author>
<name>Evgeniy Brevnov</name>
<email>evgueni.brevnov@gmail.com</email>
</author>
<published>2019-12-09T08:11:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=948e745270de615cb83bc9c68cdfa4da62925d0f'/>
<id>urn:sha1:948e745270de615cb83bc9c68cdfa4da62925d0f</id>
<content type='text'>
</content>
</entry>
</feed>
