-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
Unable to achieve aligned writes #33923
Comments
Known limitation of LLVM IR representation of the llvm.memmove intrinsic; there's only one alignment parameter. There was an attempt to fix this in LLVM r253511, but it was reverted. Not sure what the current status is. |
I don't know how to triage this since I don't really understand assembly, but this is what we get today: https://gist.github.com/Mark-Simulacrum/c1e2b1b651ed7c99a8257ee3f8b52fac. |
I am not sure how to triage either, as the OP didn't include the old asm output. @kirillkh is this issue still relevant? |
There's a huge block of |
Yes, that is the issue. |
This is likely going to be fixed by #55633. |
Unfortunately #55633 did not fix this, because LLVM is still missing support for differing src/dst alignment in SelectionDAG construction. |
I've submitted https://reviews.llvm.org/D54471 for supporting src/dst alignment in SelectionDAG. |
I am trying to implement an efficient memory move operation for a specific usage pattern: https://play.rust-lang.org/?gist=6ddd4e11d7f7b0f6503ddd398f0e665f&version=nightly&backtrace=1
In release mode, the loop in move_items() in the above example is compiled into a series of unaligned reads followed by unaligned writes, despite my efforts to have the writes aligned.
The text was updated successfully, but these errors were encountered: