1; RUN: llc -mtriple=arm-none-eabi < %s | FileCheck %s 2 3; CHECK-LABEL: tail_memcpy_ret 4; CHECK: bl __aeabi_memcpy 5define i8* @tail_memcpy_ret(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 i8* %p 9} 10 11; CHECK-LABEL: tail_memmove_ret 12; CHECK: bl __aeabi_memmove 13define i8* @tail_memmove_ret(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 i8* %p 17} 18 19; CHECK-LABEL: tail_memset_ret 20; CHECK: bl __aeabi_memset 21define i8* @tail_memset_ret(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 i8* %p 25} 26 27declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i1) #0 28declare void @llvm.memmove.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i1) #0 29declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i1) #0 30 31attributes #0 = { nounwind } 32