LLVM pointer range loop / autovectorization regression part two #37276
Labels
A-autovectorization
Area: Autovectorization, which can impact perf or code size
A-LLVM
Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.
C-enhancement
Category: An issue proposing an enhancement or a PR with one.
I-slow
Issue: Problems and improvements with respect to performance of generated code.
T-compiler
Relevant to the compiler team, which will review and decide on the PR/issue.
This is a follow up to #35662. The optimizer regression that resulted in that bug is still not fixed.
That bug created a simplified test case, and fixed it for that case. That's good. However, I have not been able to remove my workaround, so the issue still persists in the original code.
The issue appears for an 8x8 kernel and disappears if the kernel is shrunk to 4x4, so it's somehow related to the sheer size of the function, or the length it goes to in loop unrolling.
Preamble for the code that produces the desired codegen:
What the loop8 macros do is that they expand the expression statically, so it corresponds to 64 assignments.
Initialization part for code which is not optimizing well:
Another example which is not optimizing well:
Full reproducer in the next comment.
The text was updated successfully, but these errors were encountered: