brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · 315b38d Raw
96 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 22; RUN: opt %s -mtriple=arm64-apple-macosx -passes="default<O3>" -inline-threshold=2 -inline-call-penalty=5 -S | FileCheck %s3 4declare i64 @llvm.objectsize.i64.p0(ptr, i1, i1, i1)5declare ptr @__memcpy_chk(ptr, ptr, i64, i64)6declare ptr @__memmove_chk(ptr, ptr, i64, i64)7declare ptr @__mempcpy_chk(ptr, ptr, i64, i64)8declare ptr @__memset_chk(ptr, i32, i64, i64)9 10define void @callee_memcpy(ptr %dst, ptr %src, i64 %size) {11; CHECK-LABEL: define void @callee_memcpy12; CHECK-SAME: (ptr [[DST:%.*]], ptr readonly captures(none) [[SRC:%.*]], i64 [[SIZE:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {13; CHECK-NEXT:    tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 [[DST]], ptr align 1 [[SRC]], i64 [[SIZE]], i1 false)14; CHECK-NEXT:    ret void15;16  %objsize = call i64 @llvm.objectsize.i64.p0(ptr %dst, i1 false, i1 true, i1 false)17  %call.memcpy = call ptr @__memcpy_chk(ptr %dst, ptr %src, i64 %size, i64 %objsize)18  ret void19}20 21define void @callee_memmove(ptr %dst, ptr %src, i64 %size) {22; CHECK-LABEL: define void @callee_memmove23; CHECK-SAME: (ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[SIZE:%.*]]) local_unnamed_addr #[[ATTR1:[0-9]+]] {24; CHECK-NEXT:    tail call void @llvm.memmove.p0.p0.i64(ptr align 1 [[DST]], ptr align 1 [[SRC]], i64 [[SIZE]], i1 false)25; CHECK-NEXT:    ret void26;27  %objsize = call i64 @llvm.objectsize.i64.p0(ptr %dst, i1 false, i1 true, i1 false)28  %call.memmove = call ptr @__memmove_chk(ptr %dst, ptr %src, i64 %size, i64 %objsize)29  ret void30}31 32define void @callee_mempcpy(ptr %dst, ptr %src, i64 %size) {33; CHECK-LABEL: define void @callee_mempcpy34; CHECK-SAME: (ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 [[SIZE:%.*]]) local_unnamed_addr #[[ATTR1]] {35; CHECK-NEXT:    tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 [[DST]], ptr align 1 [[SRC]], i64 [[SIZE]], i1 false)36; CHECK-NEXT:    ret void37;38  %objsize = call i64 @llvm.objectsize.i64.p0(ptr %dst, i1 false, i1 true, i1 false)39  %call.mempcpy = call ptr @__mempcpy_chk(ptr %dst, ptr %src, i64 %size, i64 %objsize)40  ret void41}42 43define void @callee_memset(ptr %dst, i64 %size) {44; CHECK-LABEL: define void @callee_memset45; CHECK-SAME: (ptr [[DST:%.*]], i64 [[SIZE:%.*]]) local_unnamed_addr #[[ATTR0]] {46; CHECK-NEXT:    tail call void @llvm.memset.p0.i64(ptr align 1 [[DST]], i8 0, i64 [[SIZE]], i1 false)47; CHECK-NEXT:    ret void48;49  %objsize = call i64 @llvm.objectsize.i64.p0(ptr %dst, i1 false, i1 true, i1 false)50  %call.mempcpy = call ptr @__memset_chk(ptr %dst, i32 0, i64 %size, i64 %objsize)51  ret void52}53 54define void @caller_memcpy(ptr %dst, ptr %src) {55; CHECK-LABEL: define void @caller_memcpy56; CHECK-SAME: (ptr [[DST:%.*]], ptr readonly captures(none) [[SRC:%.*]]) local_unnamed_addr #[[ATTR0]] {57; CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr [[SRC]], align 158; CHECK-NEXT:    store i32 [[TMP1]], ptr [[DST]], align 159; CHECK-NEXT:    ret void60;61  call void @callee_memcpy(ptr %dst, ptr %src, i64 4)62  ret void63}64 65define void @caller_memmove(ptr %dst, ptr %src) {66; CHECK-LABEL: define void @caller_memmove67; CHECK-SAME: (ptr [[DST:%.*]], ptr [[SRC:%.*]]) local_unnamed_addr #[[ATTR1]] {68; CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr [[SRC]], align 169; CHECK-NEXT:    store i32 [[TMP1]], ptr [[DST]], align 170; CHECK-NEXT:    ret void71;72  call void @callee_memmove(ptr %dst, ptr %src, i64 4)73  ret void74}75 76define void @caller_mempcpy(ptr %dst, ptr %src) {77; CHECK-LABEL: define void @caller_mempcpy78; CHECK-SAME: (ptr [[DST:%.*]], ptr [[SRC:%.*]]) local_unnamed_addr #[[ATTR1]] {79; CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr [[SRC]], align 180; CHECK-NEXT:    store i32 [[TMP1]], ptr [[DST]], align 181; CHECK-NEXT:    ret void82;83  call void @callee_mempcpy(ptr %dst, ptr %src, i64 4)84  ret void85}86 87define void @caller_memset(ptr %dst) {88; CHECK-LABEL: define void @caller_memset89; CHECK-SAME: (ptr [[DST:%.*]]) local_unnamed_addr #[[ATTR0]] {90; CHECK-NEXT:    store i32 0, ptr [[DST]], align 191; CHECK-NEXT:    ret void92;93  call void @callee_memset(ptr %dst, i64 4)94  ret void95}96