brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.8 KiB · 66dbc49 Raw
158 lines · plain
1; RUN: opt < %s -passes=pseudo-probe,sample-profile -sample-profile-file=%S/Inputs/pseudo-probe-profile.prof -pass-remarks=sample-profile -pass-remarks-output=%t.opt.yaml -sample-profile-use-profi=0 -S -o %t2; RUN: FileCheck %s --input-file %t3; RUN: FileCheck %s -check-prefix=YAML --input-file %t.opt.yaml4; RUN: opt < %t -passes=sample-profile -sample-profile-file=%S/Inputs/pseudo-probe-profile.prof -sample-profile-remove-probe -S | FileCheck %s -check-prefix=REMOVE-PROBE5 6; REMOVE-PROBE-NOT: call void @llvm.pseudoprobe7; REMOVE-PROBE-NOT: !llvm.pseudo_probe_desc8; REMOVE-PROBE:     !DILexicalBlockFile({{.*}}, discriminator: 0)9 10define dso_local i32 @foo(i32 %x, ptr %f) #0 !dbg !4 {11entry:12  %retval = alloca i32, align 413  %x.addr = alloca i32, align 414  store i32 %x, ptr %x.addr, align 415  %0 = load i32, ptr %x.addr, align 416  %cmp = icmp eq i32 %0, 017  ; CHECK: call void @llvm.pseudoprobe(i64 [[#GUID:]], i64 1, i32 0, i64 -1)18  br i1 %cmp, label %if.then, label %if.else19  ; CHECK: br i1 %cmp, label %if.then, label %if.else, !prof ![[PD1:[0-9]+]]20 21if.then:22  ; CHECK: call {{.*}}, !dbg ![[#PROBE1:]], !prof ![[PROF1:[0-9]+]]23  call void %f(i32 1)24  ; CHECK: call void @llvm.pseudoprobe(i64 [[#GUID:]], i64 2, i32 0, i64 -1)25  store i32 1, ptr %retval, align 426  br label %return27 28if.else:29  ; CHECK: call {{.*}}, !dbg ![[#PROBE2:]], !prof ![[PROF2:[0-9]+]]30  call void %f(i32 2)31  ; CHECK: call void @llvm.pseudoprobe(i64 [[#GUID:]], i64 4, i32 0, i64 -1)32  store i32 2, ptr %retval, align 433  br label %return34 35return:36  ; CHECK: call void @llvm.pseudoprobe(i64 [[#GUID:]], i64 6, i32 0, i64 -1)37  %1 = load i32, ptr %retval, align 438  ret i32 %139}40 41attributes #0 = {"use-sample-profile"}42 43; CHECK: ![[PD1]] = !{!"branch_weights", i32 8, i32 7}44; CHECK: ![[#PROBE1]] = !DILocation(line: 0, scope: ![[#SCOPE1:]])45;; A discriminator of 387973151 which is 0x1720001f in hexdecimal, stands for an indirect call probe46;; with an index of 3.47; CHECK: ![[#SCOPE1]] = !DILexicalBlockFile(scope: ![[#]], file: ![[#]], discriminator: 387973151)48; CHECK: ![[PROF1]] = !{!"VP", i32 0, i64 7, i64 9191153033785521275, i64 5, i64 -1069303473483922844, i64 2}49;; A discriminator of 387973167 which is 0x1720002f in hexdecimal, stands for an indirect call probe50;; with an index of 5.51; CHECK: ![[#PROBE2]] = !DILocation(line: 0, scope: ![[#SCOPE2:]])52; CHECK: ![[#SCOPE2]] = !DILexicalBlockFile(scope: ![[#]], file: ![[#]], discriminator: 387973167)53; CHECK: ![[PROF2]] = !{!"VP", i32 0, i64 6, i64 -1069303473483922844, i64 4, i64 9191153033785521275, i64 2}54 55!llvm.module.flags = !{!9, !10}56 57!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1)58!1 = !DIFile(filename: "test.c", directory: "")59!2 = !{}60!4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !5, unit: !0, retainedNodes: !2)61!5 = !DISubroutineType(types: !6)62!6 = !{!7}63!7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)64!9 = !{i32 2, !"Dwarf Version", i32 4}65!10 = !{i32 2, !"Debug Info Version", i32 3}66 67; Checking to see if YAML file is generated and contains remarks68;YAML:  --- !Analysis69;YAML-NEXT:  Pass:            sample-profile70;YAML-NEXT:  Name:            AppliedSamples71;YAML-NEXT:  DebugLoc:        { File: test.c, Line: 0, Column: 0 }72;YAML-NEXT:  Function:        foo73;YAML-NEXT:  Args:74;YAML-NEXT:    - String:          'Applied '75;YAML-NEXT:    - NumSamples:      '13'76;YAML-NEXT:    - String:          ' samples from profile (ProbeId='77;YAML-NEXT:    - ProbeId:         '1'78;YAML-NEXT:    - String:          ', Factor='79;YAML-NEXT:    - Factor:          '1.000000e+00'80;YAML-NEXT:    - String:          ', OriginalSamples='81;YAML-NEXT:    - OriginalSamples: '13'82;YAML-NEXT:    - String:          ')'83;YAML:  --- !Analysis84;YAML-NEXT:  Pass:            sample-profile85;YAML-NEXT:  Name:            AppliedSamples86;YAML-NEXT:  DebugLoc:        { File: test.c, Line: 0, Column: 0 }87;YAML-NEXT:  Function:        foo88;YAML-NEXT:  Args:89;YAML-NEXT:    - String:          'Applied '90;YAML-NEXT:    - NumSamples:      '7'91;YAML-NEXT:    - String:          ' samples from profile (ProbeId='92;YAML-NEXT:    - ProbeId:         '3'93;YAML-NEXT:    - String:          ', Factor='94;YAML-NEXT:    - Factor:          '1.000000e+00'95;YAML-NEXT:    - String:          ', OriginalSamples='96;YAML-NEXT:    - OriginalSamples: '7'97;YAML-NEXT:    - String:          ')'98;YAML:  --- !Analysis99;YAML-NEXT:  Pass:            sample-profile100;YAML-NEXT:  Name:            AppliedSamples101;YAML-NEXT:  DebugLoc:        { File: test.c, Line: 0, Column: 0 }102;YAML-NEXT:  Function:        foo103;YAML-NEXT:  Args:104;YAML-NEXT:    - String:          'Applied '105;YAML-NEXT:    - NumSamples:      '7'106;YAML-NEXT:    - String:          ' samples from profile (ProbeId='107;YAML-NEXT:    - ProbeId:         '2'108;YAML-NEXT:    - String:          ', Factor='109;YAML-NEXT:    - Factor:          '1.000000e+00'110;YAML-NEXT:    - String:          ', OriginalSamples='111;YAML-NEXT:    - OriginalSamples: '7'112;YAML-NEXT:    - String:          ')'113;YAML:  --- !Analysis114;YAML-NEXT:  Pass:            sample-profile115;YAML-NEXT:  Name:            AppliedSamples116;YAML-NEXT:  DebugLoc:        { File: test.c, Line: 0, Column: 0 }117;YAML-NEXT:  Function:        foo118;YAML-NEXT:  Args:119;YAML-NEXT:    - String:          'Applied '120;YAML-NEXT:    - NumSamples:      '6'121;YAML-NEXT:    - String:          ' samples from profile (ProbeId='122;YAML-NEXT:    - ProbeId:         '5'123;YAML-NEXT:    - String:          ', Factor='124;YAML-NEXT:    - Factor:          '1.000000e+00'125;YAML-NEXT:    - String:          ', OriginalSamples='126;YAML-NEXT:    - OriginalSamples: '6'127;YAML-NEXT:    - String:          ')'128;YAML:  --- !Analysis129;YAML-NEXT:  Pass:            sample-profile130;YAML-NEXT:  Name:            AppliedSamples131;YAML-NEXT:  DebugLoc:        { File: test.c, Line: 0, Column: 0 }132;YAML-NEXT:  Function:        foo133;YAML-NEXT:  Args:134;YAML-NEXT:    - String:          'Applied '135;YAML-NEXT:    - NumSamples:      '6'136;YAML-NEXT:    - String:          ' samples from profile (ProbeId='137;YAML-NEXT:    - ProbeId:         '4'138;YAML-NEXT:    - String:          ', Factor='139;YAML-NEXT:    - Factor:          '1.000000e+00'140;YAML-NEXT:    - String:          ', OriginalSamples='141;YAML-NEXT:    - OriginalSamples: '6'142;YAML-NEXT:    - String:          ')'143;YAML:  --- !Analysis144;YAML-NEXT:  Pass:            sample-profile145;YAML-NEXT:  Name:            AppliedSamples146;YAML-NEXT:  DebugLoc:        { File: test.c, Line: 0, Column: 0 }147;YAML-NEXT:  Function:        foo148;YAML-NEXT:  Args:149;YAML-NEXT:    - String:          'Applied '150;YAML-NEXT:    - NumSamples:      '13'151;YAML-NEXT:    - String:          ' samples from profile (ProbeId='152;YAML-NEXT:    - ProbeId:         '6'153;YAML-NEXT:    - String:          ', Factor='154;YAML-NEXT:    - Factor:          '1.000000e+00'155;YAML-NEXT:    - String:          ', OriginalSamples='156;YAML-NEXT:    - OriginalSamples: '13'157;YAML-NEXT:    - String:          ')'158