-
Notifications
You must be signed in to change notification settings - Fork 12
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
[WIP] ARM: Add some inline assembly for bigint #31
Conversation
@smolt @joakim-noah Is this useful? For sure I need to add loop unrolling. |
Looks like it might be, but its release tests assert at line 90 on Android/ARM and it causes test failures in other dependent modules like |
@joakim-noah Thanks for trying. I try to correct the failures. (Didn't see them yesterday on my arm box but I made some more changes this morning.) |
@redstar Just a suggestion. Isn't it possible to do this in IR? Perhaps then you get the optimization for free. Or can LLVM also optimize the asm? |
IR is no better than D. With D and IR you have to use the overflow intrinsics which leads to horrible codegen. I tried it with x86_64 and it is only marginable better than the D version. |
Any opportunity to write assembly code should be taken advantage of 😄 I am on vacation, would like to spend time on on this when I am worn out. |
9cad644
to
fbfa504
Compare
Implements the internal interface in ARM assembly.
The implemented functions now pass all tests, including |
All tests now pass on Android/ARM when compiled in release mode, the new module's tests take 6 seconds to run. |
@jpf91 Maybe this is interesting for gdc, too? |
That's certainly interesting, thanks for the ping :-) Is the LDC inline ASM string and the constraint string GCC compatible? Then we could probably implement the |
@jpf91 Unfortunately the constraint string is not GCC compatible. (The content is but not the syntax.) Maybe we can agree on some standard here? |
Does the constraints string match what the LLVM backend expects? Or is it specially handled in LDC? |
It is a backend thing. |
Then we should continue doing what is most natural for our respective backends. :-) |
Merged in master now. |
Implements the internal interface in ARM assembly.