xref: /llvm-project/llvm/test/Transforms/PGOProfile/instrprof_simple_sampling.ll (revision b4fcaa137f057e68a9011b26c11627a16a8c9374)
1b1ca2a95Sxur-llvm; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2b1ca2a95Sxur-llvm; RUN: opt < %s --passes=instrprof --sampled-instrumentation --sampled-instr-burst-duration=1 --sampled-instr-period=1009 -S | FileCheck %s --check-prefix=PERIOD1009
3b1ca2a95Sxur-llvm; RUN: opt < %s --passes=instrprof --sampled-instrumentation --sampled-instr-burst-duration=1 -S | FileCheck %s --check-prefix=DEFAULTPERIOD
4b1ca2a95Sxur-llvm
5b1ca2a95Sxur-llvmtarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
6b1ca2a95Sxur-llvmtarget triple = "x86_64-unknown-linux-gnu"
7b1ca2a95Sxur-llvm
8b1ca2a95Sxur-llvm$__llvm_profile_raw_version = comdat any
9b1ca2a95Sxur-llvm
10b1ca2a95Sxur-llvm@__llvm_profile_raw_version = constant i64 72057594037927940, comdat
11b1ca2a95Sxur-llvm@__profn_f = private constant [1 x i8] c"f"
12b1ca2a95Sxur-llvm
13b1ca2a95Sxur-llvmdefine void @f() {
14b1ca2a95Sxur-llvm; PERIOD1009-LABEL: define void @f() {
15b1ca2a95Sxur-llvm; PERIOD1009-NEXT:  [[ENTRY:.*:]]
16b1ca2a95Sxur-llvm; PERIOD1009-NEXT:    [[TMP0:%.*]] = load i16, ptr @__llvm_profile_sampling, align 2
17b1ca2a95Sxur-llvm; PERIOD1009-NEXT:    [[TMP1:%.*]] = add i16 [[TMP0]], 1
18b1ca2a95Sxur-llvm; PERIOD1009-NEXT:    [[TMP2:%.*]] = icmp uge i16 [[TMP1]], 1009
19b1ca2a95Sxur-llvm; PERIOD1009-NEXT:    br i1 [[TMP2]], label %[[BB3:.*]], label %[[BB5:.*]], !prof [[PROF0:![0-9]+]]
20b1ca2a95Sxur-llvm; PERIOD1009:       [[BB3]]:
21b1ca2a95Sxur-llvm; PERIOD1009-NEXT:    [[PGOCOUNT:%.*]] = load i64, ptr @__profc_f, align 8
22b1ca2a95Sxur-llvm; PERIOD1009-NEXT:    [[TMP4:%.*]] = add i64 [[PGOCOUNT]], 1
23b1ca2a95Sxur-llvm; PERIOD1009-NEXT:    store i64 [[TMP4]], ptr @__profc_f, align 8
24b1ca2a95Sxur-llvm; PERIOD1009-NEXT:    store i16 0, ptr @__llvm_profile_sampling, align 2
25b1ca2a95Sxur-llvm; PERIOD1009-NEXT:    br label %[[BB6:.*]]
26b1ca2a95Sxur-llvm; PERIOD1009:       [[BB5]]:
27b1ca2a95Sxur-llvm; PERIOD1009-NEXT:    store i16 [[TMP1]], ptr @__llvm_profile_sampling, align 2
28b1ca2a95Sxur-llvm; PERIOD1009-NEXT:    br label %[[BB6]]
29b1ca2a95Sxur-llvm; PERIOD1009:       [[BB6]]:
30b1ca2a95Sxur-llvm; PERIOD1009-NEXT:    ret void
31b1ca2a95Sxur-llvm;
32b1ca2a95Sxur-llvm; DEFAULTPERIOD-LABEL: define void @f() {
33b1ca2a95Sxur-llvm; DEFAULTPERIOD-NEXT:  [[ENTRY:.*:]]
34*b4fcaa13SMichael O'Farrell; DEFAULTPERIOD-NEXT:    [[TMP0:%.*]] = load i32, ptr @__llvm_profile_sampling, align 4
35*b4fcaa13SMichael O'Farrell; DEFAULTPERIOD-NEXT:    [[TMP1:%.*]] = add i32 [[TMP0]], 1
36*b4fcaa13SMichael O'Farrell; DEFAULTPERIOD-NEXT:    [[TMP2:%.*]] = icmp uge i32 [[TMP1]], 65536
37b1ca2a95Sxur-llvm; DEFAULTPERIOD-NEXT:    br i1 [[TMP2]], label %[[BB3:.*]], label %[[BB5:.*]], !prof [[PROF0:![0-9]+]]
38b1ca2a95Sxur-llvm; DEFAULTPERIOD:       [[BB3]]:
39b1ca2a95Sxur-llvm; DEFAULTPERIOD-NEXT:    [[PGOCOUNT:%.*]] = load i64, ptr @__profc_f, align 8
40b1ca2a95Sxur-llvm; DEFAULTPERIOD-NEXT:    [[TMP4:%.*]] = add i64 [[PGOCOUNT]], 1
41b1ca2a95Sxur-llvm; DEFAULTPERIOD-NEXT:    store i64 [[TMP4]], ptr @__profc_f, align 8
42*b4fcaa13SMichael O'Farrell; DEFAULTPERIOD-NEXT:    store i32 0, ptr @__llvm_profile_sampling, align 4
43b1ca2a95Sxur-llvm; DEFAULTPERIOD-NEXT:    br label %[[BB6:.*]]
44b1ca2a95Sxur-llvm; DEFAULTPERIOD:       [[BB5]]:
45*b4fcaa13SMichael O'Farrell; DEFAULTPERIOD-NEXT:    store i32 [[TMP1]], ptr @__llvm_profile_sampling, align 4
46b1ca2a95Sxur-llvm; DEFAULTPERIOD-NEXT:    br label %[[BB6]]
47b1ca2a95Sxur-llvm; DEFAULTPERIOD:       [[BB6]]:
48b1ca2a95Sxur-llvm; DEFAULTPERIOD-NEXT:    ret void
49b1ca2a95Sxur-llvm;
50b1ca2a95Sxur-llvmentry:
51b1ca2a95Sxur-llvm  call void @llvm.instrprof.increment(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @__profn_f, i32 0, i32 0), i64 12884901887, i32 1, i32 0)
52b1ca2a95Sxur-llvm  ret void
53b1ca2a95Sxur-llvm}
54b1ca2a95Sxur-llvm
55b1ca2a95Sxur-llvmdeclare void @llvm.instrprof.increment(i8*, i64, i32, i32)
56b1ca2a95Sxur-llvm;.
57*b4fcaa13SMichael O'Farrell; PERIOD1009: [[PROF0]] = !{!"branch_weights", i32 1, i32 1008}
58b1ca2a95Sxur-llvm;.
59b1ca2a95Sxur-llvm; DEFAULTPERIOD: [[PROF0]] = !{!"branch_weights", i32 1, i32 65535}
60b1ca2a95Sxur-llvm;.
61