diff options
| author | Sanjay Patel <spatel@rotateright.com> | 2015-07-28 17:18:25 +0000 |
|---|---|---|
| committer | Sanjay Patel <spatel@rotateright.com> | 2015-07-28 17:18:25 +0000 |
| commit | 94a7433cdeef6a155745d0fa5fdfda7c4c2416fd (patch) | |
| tree | 8fad200240bc26e7c157d2505f54dc4724359cfd /llvm/test | |
| parent | 41df7d3d10ed4a6a1ef26248ca2a5732fab7c77a (diff) | |
| download | bcm5719-llvm-94a7433cdeef6a155745d0fa5fdfda7c4c2416fd.tar.gz bcm5719-llvm-94a7433cdeef6a155745d0fa5fdfda7c4c2416fd.zip | |
add tests to show broken current behavior of minsize attribute
llvm-svn: 243451
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/X86/memcpy.ll | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/memcpy.ll b/llvm/test/CodeGen/X86/memcpy.ll index f582571252b..78d250930c2 100644 --- a/llvm/test/CodeGen/X86/memcpy.ll +++ b/llvm/test/CodeGen/X86/memcpy.ll @@ -59,6 +59,73 @@ entry: ; DARWIN: movq } +; FIXME: Both Linux and Darwin should lower to a memcpy call; minsize is on. +define void @test3_minsize(i8* nocapture %A, i8* nocapture %B) nounwind minsize noredzone { + tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %A, i8* %B, i64 64, i32 1, i1 false) + ret void +; LINUX-LABEL: test3_minsize: +; LINUX: movq +; LINUX: movq +; LINUX: movq +; LINUX: movq +; LINUX: movq +; LINUX: movq +; LINUX: movq +; LINUX: movq +; LINUX: movq +; LINUX: movq +; LINUX: movq +; LINUX: movq +; LINUX: movq +; LINUX: movq +; LINUX: movq +; LINUX: movq + +; DARWIN-LABEL: test3_minsize: +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +} + +; FIXME: Darwin should lower to a memcpy call; minsize is on. +define void @test3_minsize_optsize(i8* nocapture %A, i8* nocapture %B) nounwind optsize minsize noredzone { + tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %A, i8* %B, i64 64, i32 1, i1 false) + ret void +; LINUX-LABEL: test3_minsize_optsize: +; LINUX: memcpy + +; DARWIN-LABEL: test3_minsize_optsize: +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +; DARWIN: movq +} + ; Large constant memcpy's should be inlined when not optimizing for size. define void @test4(i8* nocapture %A, i8* nocapture %B) nounwind noredzone { entry: |

