[llvm-commits] [llvm] r106693 - in /llvm/trunk: lib/Target/ARM/ARMBaseInstrInfo.cpp lib/Target/ARM/ARMBaseInstrInfo.h test/CodeGen/ARM/lsr-on-unrolled-loops.ll

Dale Johannesen dalej at apple.com
Wed Jun 23 16:46:35 PDT 2010


On Jun 23, 2010, at 4:00 PMPDT, Bill Wendling wrote:

> Author: void
> Date: Wed Jun 23 18:00:16 2010
> New Revision: 106693
>
> URL: http://llvm.org/viewvc/llvm-project?rev=106693&view=rev
> Log:
> We are missing opportunites to use ldm. Take code like this:
>
> void t(int *cp0, int *cp1, int *dp, int fmd) {
>  int c0, c1, d0, d1, d2, d3;
>  c0 = (*cp0++ & 0xffff) | ((*cp1++ << 16) & 0xffff0000);
>  c1 = (*cp0++ & 0xffff) | ((*cp1++ << 16) & 0xffff0000);
>  /* ... */
> }

You can't combine volatile loads, is there a check for this?

I'm also wondering if interference could be a problem, where one  
pointer points to the other one.  I think it's OK as long as there are  
no stores, as in the example. 
  



More information about the llvm-commits mailing list