diff options
author | Chad Rosier <mcrosier@apple.com> | 2012-09-21 16:58:35 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2012-09-21 16:58:35 +0000 |
commit | 8bf01fc663e6ea36f5bea482e9b9f143b9195468 (patch) | |
tree | 27c4881a3c5475576439a954f48be7ba9ad216f6 /llvm/test/CodeGen/ARM/fast-isel.ll | |
parent | 7925fbbadbfd6af14b1c9f328ceb21bf1e13c529 (diff) | |
download | bcm5719-llvm-8bf01fc663e6ea36f5bea482e9b9f143b9195468.tar.gz bcm5719-llvm-8bf01fc663e6ea36f5bea482e9b9f143b9195468.zip |
[fast-isel] Fallback to SelectionDAG isel if we require strict alignment for
non-aligned i32 loads/stores.
rdar://12304911
llvm-svn: 164381
Diffstat (limited to 'llvm/test/CodeGen/ARM/fast-isel.ll')
-rw-r--r-- | llvm/test/CodeGen/ARM/fast-isel.ll | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/ARM/fast-isel.ll b/llvm/test/CodeGen/ARM/fast-isel.ll index 50fe9d5dd87..41fda413263 100644 --- a/llvm/test/CodeGen/ARM/fast-isel.ll +++ b/llvm/test/CodeGen/ARM/fast-isel.ll @@ -268,3 +268,39 @@ entry: %0 = load i16* %x, align 1 ret i16 %0 } + +define void @unaligned_i32_store(i32 %x, i32* %y) nounwind { +entry: +; ARM-STRICT-ALIGN: @unaligned_i32_store +; ARM-STRICT-ALIGN: strb +; ARM-STRICT-ALIGN: strb +; ARM-STRICT-ALIGN: strb +; ARM-STRICT-ALIGN: strb + +; THUMB-STRICT-ALIGN: @unaligned_i32_store +; THUMB-STRICT-ALIGN: strb +; THUMB-STRICT-ALIGN: strb +; THUMB-STRICT-ALIGN: strb +; THUMB-STRICT-ALIGN: strb + + store i32 %x, i32* %y, align 1 + ret void +} + +define i32 @unaligned_i32_load(i32* %x) nounwind { +entry: +; ARM-STRICT-ALIGN: @unaligned_i32_load +; ARM-STRICT-ALIGN: ldrb +; ARM-STRICT-ALIGN: ldrb +; ARM-STRICT-ALIGN: ldrb +; ARM-STRICT-ALIGN: ldrb + +; THUMB-STRICT-ALIGN: @unaligned_i32_load +; THUMB-STRICT-ALIGN: ldrb +; THUMB-STRICT-ALIGN: ldrb +; THUMB-STRICT-ALIGN: ldrb +; THUMB-STRICT-ALIGN: ldrb + + %0 = load i32* %x, align 1 + ret i32 %0 +} |