diff options
author | Manman Ren <mren@apple.com> | 2012-06-18 22:23:48 +0000 |
---|---|---|
committer | Manman Ren <mren@apple.com> | 2012-06-18 22:23:48 +0000 |
commit | 6e1fd46fdf411338a8a95ab2bdb2ff5f64e6ad3c (patch) | |
tree | 18053d4d750bf90e3e6085caed741b6041ebec81 /llvm/test/CodeGen/ARM/struct_byval.ll | |
parent | 28cd12f26533cf7ab6e21c20aaebe153c6a53ccf (diff) | |
download | bcm5719-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.ll | 14 |
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 |