[PATCH] D20789: Consecutive memory access in Loop Vectorizer - fixed and simplified
Adam Nemet via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 15 05:29:36 PDT 2016
anemet added a comment.
In http://reviews.llvm.org/D20789#457257, @delena wrote:
> > Why were the tests failing?
> When I turn on "Assume" parameter in the original version, I actually do two different things together:
> 1. Force check the predicated access
> 2. Disable wrap check in address calculation
> When I do (1), I fix the original bug. But the two tests (we talked earlier) fail due to (2). I separated (1) from (2) in the current patch and everything works fine.
This is still insufficient information. You're just restating the conclusion again (I already understood this part) without explaining why the test fails when run-time non-wrapping checks are allowed.
Also, in your list, #2 is not to disable wrap checks but to enable them.
Looking into one of the tests, it should fail if we end up vectorizing even though gathers for indirect pointer accesses are required. These are not available on ARM so the cost should be prohibitively high.
One reason could be that we now consider the indirect pointer access as consecutive (i.e. not requiring a gather) which is obviously wrong. I am wondering if there is a bug lurking somewhere in getPtrStride or in the test. Can you please look into it more and provide details.
In general, I think that @sbaranga's approach is likely to be the way forward (i.e. your patch is pretty much good) but the failures are still unexpected so let's first understand this part.
More information about the llvm-commits