[llvm-commits] [llvm] r164345 - in /llvm/trunk: lib/Target/ARM/ARMFastISel.cpp test/CodeGen/ARM/fast-isel.ll

NAKAMURA Takumi geek4civic at gmail.com
Thu Sep 20 18:19:13 PDT 2012


2012/9/21 Chad Rosier <mcrosier at apple.com>:
> Author: mcrosier
> Date: Thu Sep 20 19:41:42 2012
> New Revision: 164345
>
> URL: http://llvm.org/viewvc/llvm-project?rev=164345&view=rev
> Log:
> [fast-isel] Fallback to SelectionDAG isel if we require strict alignment for
> non-halfword-aligned i16 loads/stores.
> rdar://12304911

> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/fast-isel.ll?rev=164345&r1=164344&r2=164345&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/ARM/fast-isel.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/fast-isel.ll Thu Sep 20 19:41:42 2012
> @@ -1,5 +1,7 @@
>  ; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
>  ; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
> +; RUN: llc < %s -O0 -arm-strict-align -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM-STRICT-ALIGN
> +; RUN: llc < %s -O0 -arm-strict-align -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB-STRICT-ALIGN
>
>  ; Very basic fast-isel functionality.
>  define i32 @add(i32 %a, i32 %b) nounwind {
> @@ -238,3 +240,31 @@
>  }
>
>  declare void @llvm.trap() nounwind
> +
> +define void @unaligned_i16_store(i16 %x, i16* %y) nounwind {
> +entry:
> +; ARM-STRICT-ALIGN: @unaligned_i16_store
> +; ARM-STRICT-ALIGN: strb
> +; ARM-STRICT-ALIGN-NEXT: strb
> +
> +; THUMB-STRICT-ALIGN: @unaligned_i16_store
> +; THUMB-STRICT-ALIGN: strb
> +; THUMB-STRICT-ALIGN: strb
> +
> +  store i16 %x, i16* %y, align 1
> +  ret void
> +}
> +
> +define i16 @unaligned_i16_load(i16* %x) nounwind {
> +entry:
> +; ARM-STRICT-ALIGN: @unaligned_i16_store
> +; ARM-STRICT-ALIGN: ldrb
> +; ARM-STRICT-ALIGN: ldrb
> +
> +; THUMB-STRICT-ALIGN: @unaligned_i16_store
> +; THUMB-STRICT-ALIGN: ldrb
> +; THUMB-STRICT-ALIGN: ldrb

What are you testing with 2nd "@unaligned_i16_store"? Fixed in r164350.



More information about the llvm-commits mailing list