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