[llvm-commits] [llvm] r147720 - in /llvm/trunk: lib/Target/ARM/ARMFastISel.cpp test/CodeGen/ARM/fast-isel-intrinsic.ll test/CodeGen/ARM/fast-isel.ll
Chad Rosier
mcrosier at apple.com
Sun Jan 8 14:00:53 PST 2012
On Jan 6, 2012, at 8:07 PM, Jakob Stoklund Olesen wrote:
> Author: stoklund
> Date: Fri Jan 6 22:07:22 2012
> New Revision: 147720
>
> URL: http://llvm.org/viewvc/llvm-project?rev=147720&view=rev
> Log:
> Use getRegForValue() to materialize the address of ARM globals.
>
> This enables basic local CSE, giving us 20% smaller code for
> consumer-typeset in -O0 builds.
Nice catch!
Chad
> <rdar://problem/10658692>
>
> Modified:
> llvm/trunk/lib/Target/ARM/ARMFastISel.cpp
> llvm/trunk/test/CodeGen/ARM/fast-isel-intrinsic.ll
> llvm/trunk/test/CodeGen/ARM/fast-isel.ll
>
> Modified: llvm/trunk/lib/Target/ARM/ARMFastISel.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMFastISel.cpp?rev=147720&r1=147719&r2=147720&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMFastISel.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/ARMFastISel.cpp Fri Jan 6 22:07:22 2012
> @@ -865,16 +865,6 @@
> }
> }
>
> - // Materialize the global variable's address into a reg which can
> - // then be used later to load the variable.
> - if (const GlobalValue *GV = dyn_cast<GlobalValue>(Obj)) {
> - unsigned Tmp = ARMMaterializeGV(GV, TLI.getValueType(Obj->getType()));
> - if (Tmp == 0) return false;
> -
> - Addr.Base.Reg = Tmp;
> - return true;
> - }
> -
> // Try to get this in a register if nothing else has worked.
> if (Addr.Base.Reg == 0) Addr.Base.Reg = getRegForValue(Obj);
> return Addr.Base.Reg != 0;
>
> Modified: llvm/trunk/test/CodeGen/ARM/fast-isel-intrinsic.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/fast-isel-intrinsic.ll?rev=147720&r1=147719&r2=147720&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/ARM/fast-isel-intrinsic.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/fast-isel-intrinsic.ll Fri Jan 6 22:07:22 2012
> @@ -86,27 +86,21 @@
> ; ARM: movw r0, :lower16:L_temp$non_lazy_ptr
> ; ARM: movt r0, :upper16:L_temp$non_lazy_ptr
> ; ARM: ldr r0, [r0]
> -; ARM: movw r1, :lower16:L_temp$non_lazy_ptr
> -; ARM: movt r1, :upper16:L_temp$non_lazy_ptr
> -; ARM: ldr r1, [r1]
> -; ARM: ldr r2, [r1, #16]
> -; ARM: str r2, [r0, #4]
> -; ARM: ldr r2, [r1, #20]
> -; ARM: str r2, [r0, #8]
> -; ARM: ldrh r1, [r1, #24]
> +; ARM: ldr r1, [r0, #16]
> +; ARM: str r1, [r0, #4]
> +; ARM: ldr r1, [r0, #20]
> +; ARM: str r1, [r0, #8]
> +; ARM: ldrh r1, [r0, #24]
> ; ARM: strh r1, [r0, #12]
> ; ARM: bx lr
> ; THUMB: movw r0, :lower16:L_temp$non_lazy_ptr
> ; THUMB: movt r0, :upper16:L_temp$non_lazy_ptr
> ; THUMB: ldr r0, [r0]
> -; THUMB: movw r1, :lower16:L_temp$non_lazy_ptr
> -; THUMB: movt r1, :upper16:L_temp$non_lazy_ptr
> -; THUMB: ldr r1, [r1]
> -; THUMB: ldr r2, [r1, #16]
> -; THUMB: str r2, [r0, #4]
> -; THUMB: ldr r2, [r1, #20]
> -; THUMB: str r2, [r0, #8]
> -; THUMB: ldrh r1, [r1, #24]
> +; THUMB: ldr r1, [r0, #16]
> +; THUMB: str r1, [r0, #4]
> +; THUMB: ldr r1, [r0, #20]
> +; THUMB: str r1, [r0, #8]
> +; THUMB: ldrh r1, [r0, #24]
> ; THUMB: strh r1, [r0, #12]
> ; THUMB: bx lr
> call void @llvm.memcpy.p0i8.p0i8.i32(i8* getelementptr inbounds ([60 x i8]* @temp, i32 0, i32 4), i8* getelementptr inbounds ([60 x i8]* @temp, i32 0, i32 16), i32 10, i32 1, i1 false)
>
> Modified: llvm/trunk/test/CodeGen/ARM/fast-isel.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/fast-isel.ll?rev=147720&r1=147719&r2=147720&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/ARM/fast-isel.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/fast-isel.ll Fri Jan 6 22:07:22 2012
> @@ -145,22 +145,16 @@
> ; THUMB: movw r0, :lower16:L_test4g$non_lazy_ptr
> ; THUMB: movt r0, :upper16:L_test4g$non_lazy_ptr
> ; THUMB: ldr r0, [r0]
> -; THUMB: ldr r0, [r0]
> -; THUMB: adds r0, #1
> -; THUMB: movw r1, :lower16:L_test4g$non_lazy_ptr
> -; THUMB: movt r1, :upper16:L_test4g$non_lazy_ptr
> -; THUMB: ldr r1, [r1]
> -; THUMB: str r0, [r1]
> +; THUMB: ldr r1, [r0]
> +; THUMB: adds r1, #1
> +; THUMB: str r1, [r0]
>
> ; ARM: movw r0, :lower16:L_test4g$non_lazy_ptr
> ; ARM: movt r0, :upper16:L_test4g$non_lazy_ptr
> ; ARM: ldr r0, [r0]
> -; ARM: ldr r0, [r0]
> -; ARM: add r0, r0, #1
> -; ARM: movw r1, :lower16:L_test4g$non_lazy_ptr
> -; ARM: movt r1, :upper16:L_test4g$non_lazy_ptr
> -; ARM: ldr r1, [r1]
> -; ARM: str r0, [r1]
> +; ARM: ldr r1, [r0]
> +; ARM: add r1, r1, #1
> +; ARM: str r1, [r0]
> }
>
> ; Check unaligned stores
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list