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 /dev/null --data %p/Inputs/blarge.fdata --print-cfg 7 8CHECK: Binary Function "usqrt" 9CHECK: State : CFG constructed 10CHECK: Address : 0x401170 11CHECK: Size : 0x43 12CHECK: MaxSize : 0x50 13CHECK: Offset : 0x1170 14CHECK: Section : .text 15CHECK: IsSimple : 1 16CHECK: BB Count : 5 17CHECK: Exec Count : 199 18CHECK: } 19CHECK: .LBB{{.*}} 20CHECK: Exec Count : 199 21CHECK: {{.*}}: movl $0x20, %r8d 22CHECK: {{.*}}: xorl %eax, %eax 23CHECK: {{.*}}: xorl %edx, %edx 24CHECK: Successors: .Ltmp{{.*}} (mispreds: 0, count: 0) 25CHECK: .Ltmp{{.*}} 26CHECK: Exec Count : 4711 27CHECK: Predecessors: .Ltmp{{.*}}, .LBB{{.*}} 28CHECK: {{.*}}: movq %rdi, %rcx 29CHECK: {{.*}}: addq %rax, %rax 30CHECK: {{.*}}: shlq $0x2, %rdi 31CHECK: {{.*}}: andl $0xc0000000, %ecx 32CHECK: {{.*}}: shrq $0x1e, %rcx 33CHECK: {{.*}}: leaq (%rcx,%rdx,4), %rdx 34CHECK: {{.*}}: leaq 0x1(%rax,%rax), %rcx 35CHECK: {{.*}}: cmpq %rcx, %rdx 36CHECK: {{.*}}: jb .Ltmp{{.*}} 37CHECK: Successors: .Ltmp{{.*}} (mispreds: 171, count: 2886), .LFT{{.*}} (mispreds: 0, count: 0) 38CHECK: .LFT{{.*}} 39CHECK: Exec Count : 0 40CHECK: Predecessors: .Ltmp{{.*}} 41CHECK: {{.*}}: subq %rcx, %rdx 42CHECK: {{.*}}: addq $0x1, %rax 43CHECK: Successors: .Ltmp{{.*}} (mispreds: 0, count: 0) 44CHECK: .Ltmp{{.*}} 45CHECK: Exec Count : 4711 46CHECK: Predecessors: .Ltmp{{.*}}, .LFT{{.*}} 47CHECK: {{.*}}: subl $0x1, %r8d 48CHECK: {{.*}}: jne .Ltmp{{.*}} 49CHECK: Successors: .Ltmp{{.*}} (mispreds: 33, count: 4711), .LFT{{.*}} (mispreds: 0, count: 0) 50CHECK: .LFT{{.*}} 51CHECK: Exec Count : 0 52CHECK: Predecessors: .Ltmp{{.*}} 53CHECK: {{.*}}: movq %rax, (%rsi) 54CHECK: {{.*}}: retq 55CHECK: End of Function "usqrt" 56