You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hello, could you please have a look at this code posted on godbolt.org: https://godbolt.org/z/O-O-Q7
(code also attached in case godbolt link breaks)
The problem is that inside the compute function, only the first loop vectorizes while the rest copies of it don't. But if I remove any of the for loops, then the rest vectorize successfully. The message "Cannot identify array bounds" is not helpful.
The text was updated successfully, but these errors were encountered:
Its bit strange as its able to identify the bounds correctly for the first loop.
////////////////////////////////////////////////////////////////////////////////
Reply from Michael Kruse
"""
There is some weird interaction between alias-analysis and the
vectorized code. For the first loop, alias-analysis is able to
determine that "output" is not aliasing with the read-only arrays:
LAA: Processing memory accesses...
AST: Alias Set Tracker: 2 alias sets for 7 pointer values.
AliasSet[0x16a131c3120, 1] must alias, No access Pointers: (double*
%arrayidx6, unknown)
AliasSet[0x16a131c1e90, 6] may alias, No access Pointers: (double*
%arrayidx, unknown), (double* %arrayidx1, unknown), (double**
%_pointer.i, unknown), (i64* %_mask.i, unknown), (double* %arrayidx.i,
unknown), (double* %arrayidx5, unknown)
After vectorizing the first loop, it is not able to do this anymore
(did not investigate the why). When trying to vectorize the second
loop, it requires a runtime condition to guard against aliasing (for
which it needs to determine the loop bounds), but is unable to do so
because of the the and-mask of "G"/BracketAdapterWithMask:
%arrayidx.i159 --- or as SCEV: ((8 * %and.i158) + %36)
When removing one of the for-loops, the entire compute-function is
inlined into the run function and this problem is magically resolved.
Not sure why.
EugeneZelenko
added
TBAA
Type-Based Alias Analysis / Strict Aliasing
and removed
clang
Clang issues not falling into any other category
labels
May 7, 2025
Extended Description
Hello, could you please have a look at this code posted on godbolt.org:
https://godbolt.org/z/O-O-Q7
(code also attached in case godbolt link breaks)
The problem is that inside the compute function, only the first loop vectorizes while the rest copies of it don't. But if I remove any of the for loops, then the rest vectorize successfully. The message "Cannot identify array bounds" is not helpful.
The text was updated successfully, but these errors were encountered: