diff options
author | Chris Lattner <sabre@nondot.org> | 2011-04-19 05:52:03 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2011-04-19 05:52:03 +0000 |
commit | 832e4943598d821687cec79f512803c1ca03cff7 (patch) | |
tree | 4b0bedc00698b5b31c90a8332edeeae9044e3186 /test/CodeGen/X86/fast-isel-x86-64.ll | |
parent | ff009ad1e1152ac6941ea4a85910f125868bd3de (diff) | |
download | llvm-832e4943598d821687cec79f512803c1ca03cff7.tar.gz llvm-832e4943598d821687cec79f512803c1ca03cff7.tar.bz2 llvm-832e4943598d821687cec79f512803c1ca03cff7.tar.xz |
Implement support for x86 fastisel of small fixed-sized memcpys, which are generated
en-mass for C++ PODs. On my c++ test file, this cuts the fast isel rejects by 10x
and shrinks the generated .s file by 5%
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129755 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/fast-isel-x86-64.ll')
-rw-r--r-- | test/CodeGen/X86/fast-isel-x86-64.ll | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/test/CodeGen/X86/fast-isel-x86-64.ll b/test/CodeGen/X86/fast-isel-x86-64.ll index 508af25772..1770e73223 100644 --- a/test/CodeGen/X86/fast-isel-x86-64.ll +++ b/test/CodeGen/X86/fast-isel-x86-64.ll @@ -170,3 +170,14 @@ entry: ; CHECK: callq } +declare void @llvm.memcpy.p0i8.p0i8.i64(i8*, i8*, i64, i32, i1) + +; rdar://9289488 - fast-isel shouldn't bail out on llvm.memcpy +define void @test15(i8* %a, i8* %b) nounwind { + call void @llvm.memcpy.p0i8.p0i8.i64(i8* %a, i8* %b, i64 4, i32 4, i1 false) + ret void +; CHECK: test15: +; CHECK-NEXT: movl (%rsi), %eax +; CHECK-NEXT: movl %eax, (%rdi) +; CHECK-NEXT: ret +} |