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