67 lines · plain
1; RUN: llc -mtriple=arm64_32-apple-ios9.0 -o - %s | FileCheck %s2 3define i64 @test_memcpy(ptr %addr, ptr %src, i1 %tst) minsize {4; CHECK-LABEL: test_memcpy:5; CHECK: ldr x[[VAL64:[0-9]+]], [x0]6; [...]7; CHECK: mov w0, w[[VAL64]]8; CHECK: bl _memcpy9 10 %val64 = load i64, ptr %addr11 br i1 %tst, label %true, label %false12 13true:14 ret i64 %val6415 16false:17 %val32 = trunc i64 %val64 to i3218 %val.ptr = inttoptr i32 %val32 to ptr19 call void @llvm.memcpy.p0.p0.i32(ptr %val.ptr, ptr %src, i32 128, i32 0, i1 1)20 ret i64 undef21}22 23define i64 @test_memmove(ptr %addr, ptr %src, i1 %tst) minsize {24; CHECK-LABEL: test_memmove:25; CHECK: ldr x[[VAL64:[0-9]+]], [x0]26; [...]27; CHECK: mov w0, w[[VAL64]]28; CHECK: bl _memmove29 30 %val64 = load i64, ptr %addr31 br i1 %tst, label %true, label %false32 33true:34 ret i64 %val6435 36false:37 %val32 = trunc i64 %val64 to i3238 %val.ptr = inttoptr i32 %val32 to ptr39 call void @llvm.memmove.p0.p0.i32(ptr %val.ptr, ptr %src, i32 128, i32 0, i1 1)40 ret i64 undef41}42 43define i64 @test_memset(ptr %addr, ptr %src, i1 %tst) minsize {44; CHECK-LABEL: test_memset:45; CHECK: ldr x[[VAL64:[0-9]+]], [x0]46; [...]47; CHECK: mov w0, w[[VAL64]]48; CHECK: bl _memset49 50 %val64 = load i64, ptr %addr51 br i1 %tst, label %true, label %false52 53true:54 ret i64 %val6455 56false:57 %val32 = trunc i64 %val64 to i3258 %val.ptr = inttoptr i32 %val32 to ptr59 call void @llvm.memset.p0.i32(ptr %val.ptr, i8 42, i32 256, i32 0, i1 1)60 ret i64 undef61}62 63declare void @llvm.memcpy.p0.p0.i32(ptr, ptr, i32, i32, i1)64declare void @llvm.memmove.p0.p0.i32(ptr, ptr, i32, i32, i1)65declare void @llvm.memset.p0.i32(ptr, i8, i32, i32, i1)66 67