[llvm-dev] Question on induction variable simplification pass (original) (raw)
Sanjoy Das via llvm-dev llvm-dev at lists.llvm.org
Sun Apr 16 21:29:51 PDT 2017
- Previous message: [llvm-dev] Question on induction variable simplification pass
- Next message: [llvm-dev] Question on induction variable simplification pass
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Pankaj,
On April 14, 2017 at 4:55:16 PM, Chawla, Pankaj (pankaj.chawla at intel.com) wrote:
I have attached the IR I got by compiling with -O2. This is just before we widen the IV.
Thanks!
To get the backedge taken count info I ran indvars on it and then replaced zext with sext.
I think regardless of where we decide to add this transformation in the pipeline, it should try to preserve as much information as it can. This means that we should generate sext for signed IVs and vice-versa. I believe this is a better approach as it preserves the information directly in the IR as opposed to relying on ScalarEvolution to deduce it.
I'll be happy to review patches making indvars behave better here (i.e. not "break" loop trip counts like this).
I don't think the IV is the most relevant bit here though -- it looks like (only a guess) indvars is faltering here: https://github.com/llvm-mirror/llvm/blob/master/lib/Transforms/Scalar/IndVarSimplify.cpp#L2240 and that logic needs to be made smarter to account for how much the RHS of the LFTR'ed exit condition is simplified after extension.
Moving it to a different location can be done separately.
Do you agree?
Sounds good!
Thanks! -- Sanjoy
- Previous message: [llvm-dev] Question on induction variable simplification pass
- Next message: [llvm-dev] Question on induction variable simplification pass
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]