[WIP] ARM: Add some inline assembly for bigint#31
[WIP] ARM: Add some inline assembly for bigint#31redstar wants to merge 1 commit intoldc-developers:ldc-ltsmasterfrom
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.