1# Tests whether llvm-bolt is able to reorder blocks and fix branches 2# according to the new function layout. 3 4RUN: yaml2obj %p/Inputs/blarge.yaml &> %t.exe 5RUN: llvm-bolt %t.exe -o /dev/null --data %p/Inputs/blarge.fdata \ 6RUN: --reorder-blocks=normal --print-finalized 2>&1 | FileCheck %s \ 7RUN: --check-prefix=CHECK 8 9CHECK: Binary Function "usqrt" 10CHECK: BB Layout : .LBB{{.*}}, .Ltmp{{.*}}, .Ltmp{{.*}}, .LFT{{.*}}, .LFT{{.*}} 11CHECK: .LBB{{.*}} 12CHECK: Exec Count : 199 13CHECK: {{.*}}: movl $0x20, %r8d 14CHECK: {{.*}}: xorl %eax, %eax 15CHECK: {{.*}}: xorl %edx, %edx 16CHECK: {{.*}}: jmp .Ltmp{{.*}} 17CHECK: Successors: .Ltmp{{.*}} (mispreds: 0, count: 0) 18CHECK: .Ltmp{{.*}} 19CHECK: Exec Count : 4711 20CHECK: Predecessors: .Ltmp{{.*}}, .LFT{{.*}} 21CHECK: {{.*}}: subl $0x1, %r8d 22CHECK: {{.*}}: je .LFT{{.*}} 23CHECK: Successors: .LFT{{.*}} (mispreds: 0, count: 0), .Ltmp{{.*}} (mispreds: 33, count: 4711) 24CHECK: .Ltmp{{.*}} 25CHECK: Exec Count : 4711 26CHECK: Predecessors: .Ltmp{{.*}}, .LBB{{.*}} 27CHECK: {{.*}}: movq %rdi, %rcx 28CHECK: {{.*}}: addq %rax, %rax 29CHECK: {{.*}}: shlq $0x2, %rdi 30CHECK: {{.*}}: andl $0xc0000000, %ecx 31CHECK: {{.*}}: shrq $0x1e, %rcx 32CHECK: {{.*}}: leaq (%rcx,%rdx,4), %rdx 33CHECK: {{.*}}: leaq 0x1(%rax,%rax), %rcx 34CHECK: {{.*}}: cmpq %rcx, %rdx 35CHECK: {{.*}}: jb .Ltmp{{.*}} 36CHECK: Successors: .Ltmp{{.*}} (mispreds: 171, count: 2886), .LFT{{.*}} (mispreds: 0, count: 0) 37CHECK: .LFT{{.*}} 38CHECK: Exec Count : 0 39CHECK: Predecessors: .Ltmp{{.*}} 40CHECK: {{.*}}: subq %rcx, %rdx 41CHECK: {{.*}}: addq $0x1, %rax 42CHECK: {{.*}}: jmp .Ltmp{{.*}} 43CHECK: Successors: .Ltmp{{.*}} (mispreds: 0, count: 0) 44CHECK: .LFT{{.*}} 45CHECK: Exec Count : 0 46CHECK: Predecessors: .Ltmp{{.*}} 47CHECK: {{.*}}: movq %rax, (%rsi) 48CHECK: {{.*}}: retq 49 50