-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix and clean up the handling of "must contain" LEA
s on ARM64
#74448
Comments
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsOn ARM64, certain LEAs (those with contained indices) must always be contained under indirections. Currently, there are (at least) two scenarios where we can call
We should find a way to factor the code such that we do not try to create the uncontainable Additionally, after #74275, we should no longer need to check Longer-term, we should make it such that we don't need
|
On ARM64, certain LEAs (those with contained indices) must always be contained under indirections.
Currently, there are (at least) two scenarios where we can call
TryCreateAddrMode
and then not contain the address modes it can create:STOREIND<ref>(...)
with write barriers.[STORE]IND<SIMD12>(...)
nodes.We should find a way to factor the code such that we do not try to create the uncontainable
LEA
s for them and delete the (incomplete) handling codegen has for them ingenLeaInstruction
.Additionally, after #74275, we should no longer need to check
IsSafeToContainMem
before callingTryCreateAddrMode
inLowerIndir
/LowerStoreIndirCommon
.Longer-term, we should make it such that we don't need
genLeaInstruction
or internal registers for indirection nodes on our load-store targets at all, i. e. we should only generate address modes directly supported by the target.category:correctness
theme:codegen
skill-level:expert
cost:medium
impact:small
The text was updated successfully, but these errors were encountered: