summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM/struct_byval.ll
diff options
context:
space:
mode:
authorManman Ren <mren@apple.com>2012-06-18 22:23:48 +0000
committerManman Ren <mren@apple.com>2012-06-18 22:23:48 +0000
commit6e1fd46fdf411338a8a95ab2bdb2ff5f64e6ad3c (patch)
tree18053d4d750bf90e3e6085caed741b6041ebec81 /llvm/test/CodeGen/ARM/struct_byval.ll
parent28cd12f26533cf7ab6e21c20aaebe153c6a53ccf (diff)
downloadbcm5719-llvm-6e1fd46fdf411338a8a95ab2bdb2ff5f64e6ad3c.tar.gz
bcm5719-llvm-6e1fd46fdf411338a8a95ab2bdb2ff5f64e6ad3c.zip
ARM: use NOEN loads and stores if possible when handling struct byval.
This change is to be enabled in clang. rdar://9877866 llvm-svn: 158684
Diffstat (limited to 'llvm/test/CodeGen/ARM/struct_byval.ll')
-rw-r--r--llvm/test/CodeGen/ARM/struct_byval.ll14
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/ARM/struct_byval.ll b/llvm/test/CodeGen/ARM/struct_byval.ll
index 0c2f7398cb7..99ba475ad7b 100644
--- a/llvm/test/CodeGen/ARM/struct_byval.ll
+++ b/llvm/test/CodeGen/ARM/struct_byval.ll
@@ -28,5 +28,19 @@ entry:
ret i32 0
}
+; Generate a loop using NEON instructions
+define i32 @h() nounwind ssp {
+entry:
+; CHECK: h:
+; CHECK: vld1
+; CHECK: sub
+; CHECK: vst1
+; CHECK: bne
+ %st = alloca %struct.LargeStruct, align 16
+ %call = call i32 @e3(%struct.LargeStruct* byval align 16 %st)
+ ret i32 0
+}
+
declare i32 @e1(%struct.SmallStruct* nocapture byval %in) nounwind
declare i32 @e2(%struct.LargeStruct* nocapture byval %in) nounwind
+declare i32 @e3(%struct.LargeStruct* nocapture byval align 16 %in) nounwind
OpenPOWER on IntegriCloud