[LLVMdev] Arm port

Sandeep Patel deeppatel1987 at gmail.com
Thu May 21 16:11:48 PDT 2009


My goal is to have Cortex-A9 support complete in far less than three
months. I've recently gotten some additional help toward that goal, so
the pace should pick up soon.

As far as compiler texts, there are many newer texts to recommend as
just about all the major optimization passes are done differently
after SSA-form appeared in about 1991. However, for adding Cortex-A8
support, I don't think you'll need to know anything more than the old
Dragon book (Aho/Sethi/Ullman) has in it. Instruction selection is
done in LLVM using SelectionDAGs and the TableGen tool and it's
domain-specific language.

Start by looking at llvm/lib/Target/ARM/ARMInstrInfo.td and seeing how
the basic instructions are matched. For armv7/armv7a, a new file will
want to be created similar to how ARMInstrVFP.td is sequestered.

deep

On Thu, May 21, 2009 at 2:40 PM, Chuck Robey <chuckr at telenix.org> wrote:
> Christophe Avoinne wrote:
>> Hi,
>>
>> - 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.
>
> Parts of this is replying to Christophe, part to Samuel, and part to Sandeep, I
> decided that writing 3 different replies would have been too much like
> pestering.  Reply to any part you feel like, it all is about (ultimately) my
> wanting to use the llvm to support moving FreeBSD to run on the OMAP3530 as
> shown on the Pandora or maybe the BeagleBoard.
>
> ------------------------------------------------------
>
> Well, seeing as studying the Cortex code until my Pandora shows up seems like
> time well spent, I'm going to be studying the llvm project as mush as I'm
> capable of.  I don't know if I'll improve quickly enough to be of service to the
> llvm project, but I would surely *like* to use the llvm ... you didn't make any
> comment about the timing of llvm being able to support the A8, and I read where
> Sandeep Patel tells me that he is (at the very least) working on that.  Is there
> at least some possibility of llvm being able to provide A8 support within the
> next 3 months (give or take)?  I'm looking at the best guess about A8 support
> (A9 support would give me that, I think, I hope).
>
> I know OSes fairly well, or at least I've written 3, but it's true that I've
> been out of the software business for the last 4 years as I recover from severe
> medical problems.  I never concentrated on compilers in school, but just after
> graduating, I had a chance to buy a new copy of Aho/Setho/Ullman's compiler
> book, and I'm now reading it.  I did take the compiler course, but it seemed
> rather basic to me.  The OS thing they let me do as indiependent study, with a
> prof watching me like I was doing a doctoral thing, and I got a whole lot out of
> that.
>
> So, I was wondering if someone has a compiler book name, something besides the
> Aho book (maybe more up to date, this is a 1988 copyright) I might be able to
> pick up used via Amazon, and would teach me enough to be able to contribute to
> llvm.  I'm NOT new at software, just compilers.  At a minimum, telling me this
> will probably cause me to go away and stop bothering you for a while.
>
> Oh, yeah, responding to Samuel Crow, the Pandora has both Bluetooth and USB2
> interfaces, so IF I have a OS in place, I can certainly make use of both my
> keyboard (both USB2 and bluetooth) and 60G disk (USB2) and that's more than
> enpough to develop with.  Besides that, it's got booting off of flash, so I can
> write flash memory on other systems (I have 3) and easily move things into the
> Pandora.  I think a lof of this applies to the BeagleBoard, too (but I haven't
> got one of those).  I would likd of like it if there was an emulator, I haven't
> chekced on that, you don't happen to know if there's an emulator compatible with
> the OMAP3530?  I think I can leave the original Linux that it comes with in
> place, and move new images into place with flash.  I could put llvm onto the
> Linux partition.  Development-wise, the Pandora isn't all that bad a place to
> be.  I read, it's (I think) using UBoot for the 1st level, but I'll be more
> certain when my Pandora finally shows up on my doorstep.
>
>>
>> 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.
>> ...
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>




More information about the llvm-dev mailing list