1 ; RUN: llc -mtriple=x86_64-unknown-unknown < %s | FileCheck %s 2 3 ; CHECK-LABEL: tail_memcpy 4 ; CHECK: jmp memcpy 5 define void @tail_memcpy(i8* nocapture %p, i8* nocapture readonly %q, i32 %n) #0 { 6 entry: 7 tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %p, i8* %q, i32 %n, i32 1, i1 false) 8 ret void 9 } 10 11 ; CHECK-LABEL: tail_memset 12 ; CHECK; jmp memmove 13 define void @tail_memmove(i8* nocapture %p, i8* nocapture readonly %q, i32 %n) #0 { 14 entry: 15 tail call void @llvm.memmove.p0i8.p0i8.i32(i8* %p, i8* %q, i32 %n, i32 1, i1 false) 16 ret void 17 } 18 19 ; CHECK-LABEL: tail_memset 20 ; CHECK: jmp memset 21 define void @tail_memset(i8* nocapture %p, i8 %c, i32 %n) #0 { 22 entry: 23 tail call void @llvm.memset.p0i8.i32(i8* %p, i8 %c, i32 %n, i32 1, i1 false) 24 ret void 25 } 26 27 declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i32, i1) #0 28 declare void @llvm.memmove.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i32, i1) #0 29 declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) #0 30 31 attributes #0 = { nounwind } 32