67 lines · plain
1; RUN: llvm-profdata merge %S/Inputs/memop_size_annotation.proftext -o %t.profdata2; RUN: opt < %s -passes=pgo-instr-use -memop-max-annotations=9 -pgo-test-profile-file=%t.profdata -pgo-memop-optimize-memcmp-bcmp -S | FileCheck %s --check-prefixes=MEMOP_ANNOTATION,MEMOP_ANNOTATION93; RUN: opt < %s -passes=pgo-instr-use -pgo-test-profile-file=%t.profdata -pgo-memop-optimize-memcmp-bcmp -S | FileCheck %s --check-prefixes=MEMOP_ANNOTATION,MEMOP_ANNOTATION44 5target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"6target triple = "x86_64-unknown-linux-gnu"7 8define void @foo(ptr %dst, ptr %src, ptr %a, i32 %n) {9entry:10 br label %for.cond11 12for.cond:13 %i.0 = phi i32 [ 0, %entry ], [ %inc5, %for.inc4 ]14 %cmp = icmp slt i32 %i.0, %n15 br i1 %cmp, label %for.body, label %for.end616 17for.body:18 br label %for.cond119 20for.cond1:21 %j.0 = phi i32 [ 0, %for.body ], [ %inc, %for.inc ]22 %idx.ext = sext i32 %i.0 to i6423 %add.ptr = getelementptr inbounds i32, ptr %a, i64 %idx.ext24 %0 = load i32, ptr %add.ptr, align 425 %cmp2 = icmp slt i32 %j.0, %026 br i1 %cmp2, label %for.body3, label %for.end27 28for.body3:29 %add = add nsw i32 %i.0, 130 %conv = sext i32 %add to i6431 call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %conv, i1 false)32; MEMOP_ANNOTATION: call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %conv, i1 false)33; MEMOP_ANNOTATION-SAME: !prof ![[MEMOP_VALUESITE:[0-9]+]]34 %memcmp = call i32 @memcmp(ptr %dst, ptr %src, i64 %conv)35; MEMOP_ANNOTATION: call i32 @memcmp(ptr %dst, ptr %src, i64 %conv)36; MEMOP_ANNOTATION-SAME: !prof ![[MEMOP_VALUESITE]]37 %bcmp = call i32 @bcmp(ptr %dst, ptr %src, i64 %conv)38; MEMOP_ANNOTATION: call i32 @bcmp(ptr %dst, ptr %src, i64 %conv)39; MEMOP_ANNOTATION-SAME: !prof ![[MEMOP_VALUESITE]]40; MEMOP_ANNOTATION9: ![[MEMOP_VALUESITE]] = !{!"VP", i32 1, i64 556, i64 1, i64 99, i64 2, i64 88, i64 3, i64 77, i64 9, i64 72, i64 4, i64 66, i64 5, i64 55, i64 6, i64 44, i64 7, i64 33, i64 8, i64 22}41; MEMOP_ANNOTATION4: ![[MEMOP_VALUESITE]] = !{!"VP", i32 1, i64 556, i64 1, i64 99, i64 2, i64 88, i64 3, i64 77, i64 9, i64 72}42 br label %for.inc43 44for.inc:45 %inc = add nsw i32 %j.0, 146 br label %for.cond147 48for.end:49 br label %for.inc450 51for.inc4:52 %inc5 = add nsw i32 %i.0, 153 br label %for.cond54 55for.end6:56 ret void57}58 59declare void @llvm.lifetime.start(ptr nocapture)60 61declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1)62 63declare i32 @memcmp(ptr, ptr, i64)64declare i32 @bcmp(ptr, ptr, i64)65 66declare void @llvm.lifetime.end(ptr nocapture)67