[llvm-dev] LSR (original) (raw)
Jonas Paulsson via llvm-dev llvm-dev at lists.llvm.org
Mon Apr 10 06:47:07 PDT 2017
- Previous message: [llvm-dev] Portable Computing Language (pocl) v0.14 released
- Next message: [llvm-dev] LSR
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi,
I find that LSR is not helping enough on avoiding unfoldable offsets for SystemZ. When the loop has three stores with unfoldable offsets, LSR rewrites the IV in a good way. However, if adding another store with a foldable offset that fits already, LSR fails to rewrite the three stores.
And if I happen to add a too big positive offset (the first three were negative) instead of a foldable one, only the positive gets transformed.
LSR is not rewriting the IV to have three foldable offsets rather than one.
It would actually be preferred in this case to use a second address register for the offset that is too far away from the others.
Has anyone any idea on how to best handle this? Can LSR "split" an IV to use an extra register? Or would this need to be done in a target specific pass?
For a reduced test case for this problem, see https://bugs.llvm.org//show_bug.cgi?id=32548.
Thanks,
Jonas
- Previous message: [llvm-dev] Portable Computing Language (pocl) v0.14 released
- Next message: [llvm-dev] LSR
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]