brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 64c5cfd Raw
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