[LLVMdev] Arm port

Christophe Avoinne christophe.avoinne at laposte.net
Thu May 21 01:49:14 PDT 2009


- Cortex-A8 needs a specific instruction scheduler as dual issue forces 
you to interleave some instructions to allow to run two instructions in 
the same cycle for the best performance (Cortex-A9 is out-of-order so 
dual issue is not an issue (!) for performance).
- Cortex-A8/A9 have several useful new instructions : for instance, bit 
operations like bitfield insertion/extraction or having a pair of 
instruction MOVW,MOVT to read a 32-bitconstant/address into only 2 
instruction instead of 3 or 4, etc.
- VFPv3 is supported for backward compatibility but they are very slow 
and not pipelined.
- NEON (SIMD coprocessor) can do a lot of impressive operations on 
32-bit float or integer of any size. Most VFP operations can be done 
through NEON for better performance.

Considering GCC can produce ARMv7, LLVM is not a good candidate as long 
as the latter has no support ARMv7.

The main advantage about LLVM is for its ability to produce in run-time 
a native code unlike GCC. But the result would be very suboptimal for 
some goals.

On 20/05/2009 23:02:51, Bob Wilson (bob.wilson at apple.com) wrote:
 > On May 20, 2009, at 1:38 PM, Chuck Robey wrote:
 > > Hmm. Well, my motivation is that I recently bought a Pandora (it
 > > has the
 > > Cortex-A8).
 > It's not going to arrive here for a couple more months,
 > > I think.
 > > When it does finally arrive, I want to be able to immediately begin
 > > work on
 > > replacing the Linux that comes pre-installed with FreeBSD-arm.
 > Hi Chuck,
 > I'm
 > not very familiar with the Pandora, but as far as I know ARM is
 > pretty good about backward compatibility. You should be able to run
 > ARM code compiled by LLVM on it. LLVM currently only generates code
 > for version 6 of the ARM architecture, so you
 > wouldn't be taking full
 > advantage of the Pandora's processor but it may
 > not matter, depending
 > on what you're trying to do with it.

More information about the llvm-dev mailing list