1; RUN: opt -codegenprepare -mtriple=arm7-unknown-unknown -S < %s | FileCheck %s 2 3declare void @llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i1) nounwind 4declare void @llvm.memmove.p0i8.p0i8.i32(i8*, i8*, i32, i1) nounwind 5declare void @llvm.memset.p0i8.i32(i8*, i8, i32, i1) nounwind 6 7define void @test_memcpy(i8* align 4 %dst, i8* align 8 %src, i32 %N) { 8; CHECK-LABEL: @test_memcpy 9; CHECK: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %dst, i8* align 8 %src, i32 %N, i1 false) 10; CHECK: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %dst, i8* align 8 %src, i32 %N, i1 false) 11; CHECK: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %dst, i8* align 16 %src, i32 %N, i1 false) 12entry: 13 call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dst, i8* %src, i32 %N, i1 false) 14 call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 2 %dst, i8* align 2 %src, i32 %N, i1 false) 15 call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %dst, i8* align 16 %src, i32 %N, i1 false) 16 ret void 17} 18 19define void @test_memmove(i8* align 4 %dst, i8* align 8 %src, i32 %N) { 20; CHECK-LABEL: @test_memmove 21; CHECK: call void @llvm.memmove.p0i8.p0i8.i32(i8* align 4 %dst, i8* align 8 %src, i32 %N, i1 false) 22; CHECK: call void @llvm.memmove.p0i8.p0i8.i32(i8* align 4 %dst, i8* align 8 %src, i32 %N, i1 false) 23; CHECK: call void @llvm.memmove.p0i8.p0i8.i32(i8* align 8 %dst, i8* align 16 %src, i32 %N, i1 false) 24entry: 25 call void @llvm.memmove.p0i8.p0i8.i32(i8* %dst, i8* %src, i32 %N, i1 false) 26 call void @llvm.memmove.p0i8.p0i8.i32(i8* align 2 %dst, i8* align 2 %src, i32 %N, i1 false) 27 call void @llvm.memmove.p0i8.p0i8.i32(i8* align 8 %dst, i8* align 16 %src, i32 %N, i1 false) 28 ret void 29} 30 31define void @test_memset(i8* align 4 %dst, i8 %val, i32 %N) { 32; CHECK-LABEL: @test_memset 33; CHECK: call void @llvm.memset.p0i8.i32(i8* align 4 %dst, i8 %val, i32 %N, i1 false) 34; CHECK: call void @llvm.memset.p0i8.i32(i8* align 4 %dst, i8 %val, i32 %N, i1 false) 35; CHECK: call void @llvm.memset.p0i8.i32(i8* align 8 %dst, i8 %val, i32 %N, i1 false) 36entry: 37 call void @llvm.memset.p0i8.i32(i8* %dst, i8 %val, i32 %N, i1 false) 38 call void @llvm.memset.p0i8.i32(i8* align 2 %dst, i8 %val, i32 %N, i1 false) 39 call void @llvm.memset.p0i8.i32(i8* align 8 %dst, i8 %val, i32 %N, i1 false) 40 ret void 41} 42 43 44