summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM/fast-isel.ll
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2012-09-21 16:58:35 +0000
committerChad Rosier <mcrosier@apple.com>2012-09-21 16:58:35 +0000
commit8bf01fc663e6ea36f5bea482e9b9f143b9195468 (patch)
tree27c4881a3c5475576439a954f48be7ba9ad216f6 /llvm/test/CodeGen/ARM/fast-isel.ll
parent7925fbbadbfd6af14b1c9f328ceb21bf1e13c529 (diff)
downloadbcm5719-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.ll36
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
+}
OpenPOWER on IntegriCloud