1## Checks that llvm-bolt is able to read data generated by perf2bolt and update 2## the CFG edges accordingly with absolute number of branches and mispredictions. 3## Also checks that llvm-bolt disassembler and CFG builder is working properly. 4 5RUN: yaml2obj %p/Inputs/blarge.yaml &> %t.exe 6RUN: llvm-bolt %t.exe -o %t.null --data %p/Inputs/blarge.fdata --print-cfg | FileCheck %s 7 8CHECK: Binary Function "usqrt" 9CHECK: State : CFG constructed 10CHECK: Address : 0x401170 11CHECK: Size : 0x43 12CHECK: MaxSize : 0x43 13CHECK: Offset : 0xcb0 14CHECK: Section : .text 15CHECK: IsSimple : 1 16CHECK: BB Count : 5 17CHECK: Exec Count : 199 18CHECK: Branch Count: 7689 19CHECK: } 20CHECK: .LBB{{.*}} 21CHECK: Exec Count : 199 22CHECK: {{.*}}: movl $0x20, %r8d 23CHECK: {{.*}}: xorl %eax, %eax 24CHECK: {{.*}}: xorl %edx, %edx 25CHECK: Successors: .Ltmp{{.*}} (mispreds: 0, count: 0) 26CHECK: .Ltmp{{.*}} 27CHECK: Exec Count : 4711 28CHECK: Predecessors: .Ltmp{{.*}}, .LBB{{.*}} 29CHECK: {{.*}}: movq %rdi, %rcx 30CHECK: {{.*}}: addq %rax, %rax 31CHECK: {{.*}}: shlq $0x2, %rdi 32CHECK: {{.*}}: andl $0xc0000000, %ecx 33CHECK: {{.*}}: shrq $0x1e, %rcx 34CHECK: {{.*}}: leaq (%rcx,%rdx,4), %rdx 35CHECK: {{.*}}: leaq 0x1(%rax,%rax), %rcx 36CHECK: {{.*}}: cmpq %rcx, %rdx 37CHECK: {{.*}}: jb .Ltmp{{.*}} 38CHECK: Successors: .Ltmp{{.*}} (mispreds: 171, count: 2886), .LFT{{.*}} (mispreds: 0, count: 0) 39CHECK: .LFT{{.*}} 40CHECK: Exec Count : 0 41CHECK: Predecessors: .Ltmp{{.*}} 42CHECK: {{.*}}: subq %rcx, %rdx 43CHECK: {{.*}}: addq $0x1, %rax 44CHECK: Successors: .Ltmp{{.*}} (mispreds: 0, count: 0) 45CHECK: .Ltmp{{.*}} 46CHECK: Exec Count : 4711 47CHECK: Predecessors: .Ltmp{{.*}}, .LFT{{.*}} 48CHECK: {{.*}}: subl $0x1, %r8d 49CHECK: {{.*}}: jne .Ltmp{{.*}} 50CHECK: Successors: .Ltmp{{.*}} (mispreds: 33, count: 4711), .LFT{{.*}} (mispreds: 0, count: 0) 51CHECK: .LFT{{.*}} 52CHECK: Exec Count : 0 53CHECK: Predecessors: .Ltmp{{.*}} 54CHECK: {{.*}}: movq %rax, (%rsi) 55CHECK: {{.*}}: retq 56CHECK: End of Function "usqrt" 57