Support for ARM Run-Time ABI

Dear all,

I just sent a patch to llvm-commits about ARM RT-EABI support when
choosing "arm/thumb*-eabi-*" triple.

It involves three changes described in the path:
1. Floating point helpers (instead of GNU ones). This is supported by
GCC as well, in EABI mode.
2. Reminder lowering, using ABI helper too.
3. Memset, changing the order of arguments, as required by the ABI.

Please review and let me know if there is any problem with that. I've
extracted the patch from the trunk this morning, so it should be
fairly straightforward to apply.

Attached is an earlier patch I've been sitting on for clearly way too
long. There are a few differences worth discussing:

* Only these few renamed libcalls are set as AAPCS because other
libcalls may still want to be AAPCS-VFP.
* I have all the comparison CCs backward from you. I don't know
offhand which is correct.
* I put in the long long libcalls as well.

Any or all of these differences may be errors on my part.

BTW, I'm absolutely thrilled to see contributions to the ARM target
from ARM. Many thanks! Please consider helping us with the A9
scheduler since the TRMs aren't sufficiently detailed to do a proper
job and we can't refer to the GCC machine description work that ARM
has done.

deep

deep-llvm-libcall-rename.diff (8.9 KB)

Hi Sandeep,

* Only these few renamed libcalls are set as AAPCS because other
libcalls may still want to be AAPCS-VFP.

Even the F32 ones?

Anton,

As discussed, we might better put the FP helpers first, then deal with
the REM and Memset later. If Sandeep's patch passes all tests, you can
apply that and I'll merge to our changes later. If we have anything
extra, I can send together with the other patches later.

BTW, I'm absolutely thrilled to see contributions to the ARM target
from ARM. Many thanks! Please consider helping us with the A9
scheduler since the TRMs aren't sufficiently detailed to do a proper
job and we can't refer to the GCC machine description work that ARM
has done.

We sent a few patches already, but nothing too comprehensive, to be honest.

Unfortunately we don't have many people looking into LLVM, so the flow
of patches is lower than we'd like. We hope to get more active now,
helping the new MC for ARM/ASM and ARM/ELF, but I can't guarantee
we'll do as much as it's expected of us. :wink:

About the A9 scheduler, I'll have a look (but I'm not the expert). :wink:

* Only these few renamed libcalls are set as AAPCS because other
libcalls may still want to be AAPCS-VFP.

Even the F32 ones?

RTABI doesn't talk about libcalls like sqrt, pow, etc. Those should
probably be AAPCS-VFP.

Unfortunately we don't have many people looking into LLVM, so the flow
of patches is lower than we'd like. We hope to get more active now,
helping the new MC for ARM/ASM and ARM/ELF, but I can't guarantee
we'll do as much as it's expected of us. :wink:

Any amount is appreciated. :slight_smile: You guys know your microarchitectures the best.

About the A9 scheduler, I'll have a look (but I'm not the expert). :wink:

Ramana apparently is. :slight_smile:

deep