xref: /llvm-project/llvm/test/Transforms/LoopVectorize/pseudoprobe.ll (revision c38c8d674383579ee4c9473b2c3d8ebc27c58ad2)
1*c38c8d67SHongtao Yu; RUN: opt < %s -passes=loop-vectorize -force-vector-interleave=1 -force-vector-width=4 -S | FileCheck %s
2*c38c8d67SHongtao Yu
3*c38c8d67SHongtao Yutarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
4*c38c8d67SHongtao Yu
5*c38c8d67SHongtao Yu; Function Attrs: nounwind uwtable
6*c38c8d67SHongtao Yudefine i32 @test1(ptr nocapture %a, ptr nocapture readonly %b) #0 {
7*c38c8d67SHongtao Yuentry:
8*c38c8d67SHongtao Yu  call void @llvm.pseudoprobe(i64 3666282617048535130, i64 1, i32 0, i64 -1)
9*c38c8d67SHongtao Yu  br label %for.body
10*c38c8d67SHongtao Yu
11*c38c8d67SHongtao Yufor.body:                                         ; preds = %for.body, %entry
12*c38c8d67SHongtao Yu  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
13*c38c8d67SHongtao Yu  %arrayidx = getelementptr inbounds float, ptr %b, i64 %indvars.iv
14*c38c8d67SHongtao Yu  %0 = load float, ptr %arrayidx, align 4
15*c38c8d67SHongtao Yu  %conv = fptosi float %0 to i32
16*c38c8d67SHongtao Yu  %arrayidx2 = getelementptr inbounds i32, ptr %a, i64 %indvars.iv
17*c38c8d67SHongtao Yu  store i32 %conv, ptr %arrayidx2, align 4
18*c38c8d67SHongtao Yu  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
19*c38c8d67SHongtao Yu  %exitcond = icmp eq i64 %indvars.iv.next, 1600
20*c38c8d67SHongtao Yu  call void @llvm.pseudoprobe(i64 3666282617048535130, i64 2, i32 0, i64 -1)
21*c38c8d67SHongtao Yu  br i1 %exitcond, label %for.end, label %for.body
22*c38c8d67SHongtao Yu
23*c38c8d67SHongtao Yufor.end:                                          ; preds = %for.body
24*c38c8d67SHongtao Yu  call void @llvm.pseudoprobe(i64 3666282617048535130, i64 3, i32 0, i64 -1)
25*c38c8d67SHongtao Yu  ret i32 0
26*c38c8d67SHongtao Yu}
27*c38c8d67SHongtao Yu
28*c38c8d67SHongtao Yu
29*c38c8d67SHongtao Yu; CHECK-LABEL:  @test1
30*c38c8d67SHongtao Yu; CHECK:        vector.body:
31*c38c8d67SHongtao Yu; CHECK:          load <4 x float>, ptr %{{.*}}
32*c38c8d67SHongtao Yu; CHECK:          store <4 x i32> %{{.*}}, ptr %{{.*}}
33*c38c8d67SHongtao Yu; CHECK-COUNT-4:  call void @llvm.pseudoprobe(i64 3666282617048535130, i64 2, i32 0, i64 -1)
34*c38c8d67SHongtao Yu; CHECK:          %index.next = add nuw i64 %index, 4
35*c38c8d67SHongtao Yu
36*c38c8d67SHongtao Yu
37*c38c8d67SHongtao Yu
38*c38c8d67SHongtao Yu
39*c38c8d67SHongtao Yu; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite)
40*c38c8d67SHongtao Yudeclare void @llvm.pseudoprobe(i64, i64, i32, i64) #1
41*c38c8d67SHongtao Yu
42*c38c8d67SHongtao Yuattributes #0 = { nounwind uwtable }
43*c38c8d67SHongtao Yuattributes #1 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) }
44*c38c8d67SHongtao Yu
45*c38c8d67SHongtao Yu!llvm.pseudo_probe_desc = !{!0}
46*c38c8d67SHongtao Yu
47*c38c8d67SHongtao Yu!0 = !{i64 3666282617048535130, i64 52824598631, !"test1"}
48