xref: /llvm-project/llvm/test/MC/X86/align-branch-necessary.s (revision 7ad46cfe41554627caa9e91313682ad9dd4b9c3a)
1# RUN: llvm-mc -filetype=obj -triple x86_64 --x86-align-branch-boundary=32 --x86-align-branch=fused+jcc+indirect+call+ret %s | llvm-objdump -d --no-show-raw-insn - | FileCheck %s
2
3  # Check if no instruction crosses or is against the boundary,
4  # there will be no extra padding.
5
6  .text
7  .globl  foo
8  .p2align  5
9foo:
10  .p2align  5
11  .rept 24
12  int3
13  .endr
14  # CHECK:    18:          js
15  js foo
16
17  .p2align  5
18  .rept 24
19  int3
20  .endr
21  # CHECK:    38:          jmp
22  jmp foo
23
24  .p2align  5
25  .rept 24
26  int3
27  .endr
28  # CHECK:    58:          jmpq    *%rcx
29  jmp  *%rcx
30
31
32  .p2align  5
33  .rept 24
34  int3
35  .endr
36  # CHECK:    78:          callq
37  call  foo
38
39  .p2align  5
40  .rept 27
41  int3
42  .endr
43  # CHECK:    9b:          retq    $0
44  ret $0
45
46
47  .p2align  5
48  .rept 21
49  int3
50  .endr
51  # CHECK:    b5:          cmpq    %rax, %rbp
52  # CHECK:    b8:          je
53  cmp  %rax, %rbp
54  je  foo
55