1; RUN: llc -mtriple=x86_64-unknown-unknown < %s | FileCheck %s 2 3; CHECK-LABEL: tail_memcpy 4; CHECK: jmp memcpy 5define void @tail_memcpy(i8* nocapture %p, i8* nocapture readonly %q, i32 %n) #0 { 6entry: 7 tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %p, i8* %q, i32 %n, i1 false) 8 ret void 9} 10 11; CHECK-LABEL: tail_memmove 12; CHECK: jmp memmove 13define void @tail_memmove(i8* nocapture %p, i8* nocapture readonly %q, i32 %n) #0 { 14entry: 15 tail call void @llvm.memmove.p0i8.p0i8.i32(i8* %p, i8* %q, i32 %n, i1 false) 16 ret void 17} 18 19; CHECK-LABEL: tail_memset 20; CHECK: jmp memset 21define void @tail_memset(i8* nocapture %p, i8 %c, i32 %n) #0 { 22entry: 23 tail call void @llvm.memset.p0i8.i32(i8* %p, i8 %c, i32 %n, i1 false) 24 ret void 25} 26 27; CHECK-LABEL: tail_memcpy_ret 28; CHECK: jmp memcpy 29define i8* @tail_memcpy_ret(i8* nocapture %p, i8* nocapture readonly %q, i32 %n) #0 { 30entry: 31 tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %p, i8* %q, i32 %n, i1 false) 32 ret i8* %p 33} 34 35; CHECK-LABEL: tail_memmove_ret 36; CHECK: jmp memmove 37define i8* @tail_memmove_ret(i8* nocapture %p, i8* nocapture readonly %q, i32 %n) #0 { 38entry: 39 tail call void @llvm.memmove.p0i8.p0i8.i32(i8* %p, i8* %q, i32 %n, i1 false) 40 ret i8* %p 41} 42 43; CHECK-LABEL: tail_memset_ret 44; CHECK: jmp memset 45define i8* @tail_memset_ret(i8* nocapture %p, i8 %c, i32 %n) #0 { 46entry: 47 tail call void @llvm.memset.p0i8.i32(i8* %p, i8 %c, i32 %n, i1 false) 48 ret i8* %p 49} 50 51declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i1) #0 52declare void @llvm.memmove.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i1) #0 53declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i1) #0 54 55attributes #0 = { nounwind } 56