| # REQUIRES: x86-registered-target |
| # RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t |
| # RUN: llvm-profgen --binary=%t --perfscript=%s --output=%t1 -show-disassembly-only -x86-asm-syntax=intel | FileCheck %s --match-full-lines |
| |
| # CHECK: Disassembly of section .text [0x0, 0x66]: |
| # CHECK: <foo1>: |
| # CHECK: 0: push rbp |
| # CHECK: 1: mov rbp, rsp |
| # CHECK: 4: sub rsp, 16 |
| # CHECK: 8: mov dword ptr [rbp - 4], 0 |
| # CHECK: f: mov edi, 1 |
| # CHECK: 14: call 0x19 |
| # CHECK: 19: mov edi, 2 |
| # CHECK: 1e: mov dword ptr [rbp - 8], eax |
| # CHECK: 21: call 0x26 |
| # CHECK: 26: mov ecx, dword ptr [rbp - 8] |
| # CHECK: 29: add ecx, eax |
| # CHECK: 2b: mov eax, ecx |
| # CHECK: 2d: add rsp, 16 |
| # CHECK: 31: pop rbp |
| # CHECK: 32: ret |
| |
| # CHECK: <foo2>: |
| # CHECK: 33: push rbp |
| # CHECK: 34: mov rbp, rsp |
| # CHECK: 37: sub rsp, 16 |
| # CHECK: 3b: mov dword ptr [rbp - 4], 0 |
| # CHECK: 42: mov edi, 1 |
| # CHECK: 47: call 0x4c |
| # CHECK: 4c: mov edi, 2 |
| # CHECK: 51: mov dword ptr [rbp - 8], eax |
| # CHECK: 54: call 0x59 |
| # CHECK: 59: mov ecx, dword ptr [rbp - 8] |
| # CHECK: 5c: add ecx, eax |
| # CHECK: 5e: mov eax, ecx |
| # CHECK: 60: add rsp, 16 |
| # CHECK: 64: pop rbp |
| # CHECK: 65: ret |
| |
| |
| |
| .section .text |
| foo1: |
| pushq %rbp |
| movq %rsp, %rbp |
| subq $16, %rsp |
| movl $0, -4(%rbp) |
| movl $1, %edi |
| callq _Z5funcAi |
| movl $2, %edi |
| movl %eax, -8(%rbp) |
| callq _Z5funcBi |
| movl -8(%rbp), %ecx |
| addl %eax, %ecx |
| movl %ecx, %eax |
| addq $16, %rsp |
| popq %rbp |
| retq |
| |
| .section .text |
| foo2: |
| pushq %rbp |
| movq %rsp, %rbp |
| subq $16, %rsp |
| movl $0, -4(%rbp) |
| movl $1, %edi |
| callq _Z5funcBi |
| movl $2, %edi |
| movl %eax, -8(%rbp) |
| callq _Z5funcAi |
| movl -8(%rbp), %ecx |
| addl %eax, %ecx |
| movl %ecx, %eax |
| addq $16, %rsp |
| popq %rbp |
| retq |
| |
| # CHECK: Disassembly of section .text.hot [0x0, 0x12]: |
| # CHECK: <bar>: |
| # CHECK: 0: push rbp |
| # CHECK: 1: mov rbp, rsp |
| # CHECK: 4: mov dword ptr [rbp - 4], edi |
| # CHECK: 7: mov dword ptr [rbp - 8], esi |
| # CHECK: a: mov eax, dword ptr [rbp - 4] |
| # CHECK: d: add eax, dword ptr [rbp - 8] |
| # CHECK: 10: pop rbp |
| # CHECK: 11: ret |
| |
| .section .text.hot |
| bar: |
| pushq %rbp |
| movq %rsp, %rbp |
| movl %edi, -4(%rbp) |
| movl %esi, -8(%rbp) |
| movl -4(%rbp), %eax |
| addl -8(%rbp), %eax |
| popq %rbp |
| retq |
| |
| |
| # CHECK: Disassembly of section .text.unlikely [0x0, 0x12]: |
| # CHECK: <baz>: |
| # CHECK: 0: push rbp |
| # CHECK: 1: mov rbp, rsp |
| # CHECK: 4: mov dword ptr [rbp - 4], edi |
| # CHECK: 7: mov dword ptr [rbp - 8], esi |
| # CHECK: a: mov eax, dword ptr [rbp - 4] |
| # CHECK: d: sub eax, dword ptr [rbp - 8] |
| # CHECK: 10: pop rbp |
| # CHECK: 11: ret |
| |
| .section .text.unlikely |
| baz: |
| pushq %rbp |
| movq %rsp, %rbp |
| movl %edi, -4(%rbp) |
| movl %esi, -8(%rbp) |
| movl -4(%rbp), %eax |
| subl -8(%rbp), %eax |
| popq %rbp |
| retq |