xref: /llvm-project/llvm/test/MC/X86/align-branch-prefix.s (revision 7ad46cfe41554627caa9e91313682ad9dd4b9c3a)
1# RUN: llvm-mc -filetype=obj -triple x86_64 --x86-align-branch-boundary=32 --x86-align-branch=jmp+call %s | llvm-objdump -d --no-show-raw-insn - | FileCheck %s
2
3  # Exercise cases where prefixes are specified for instructions to be aligned
4  # and thus can't add a nop in between without changing semantic.
5
6  .text
7
8  # CHECK: 1d:       int3
9  # CHECK: 1e:       jmp
10  # CHECK: 24:       int3
11  .p2align  5
12  .rept 30
13  int3
14  .endr
15  CS
16  jmp baz
17  int3
18
19  # CHECK: 5d:       int3
20  # CHECK: 5e:       jmp
21  # CHECK: 64:       int3
22  .p2align  5
23  .rept 30
24  int3
25  .endr
26  GS
27  jmp baz
28  int3
29
30  # CHECK: 9d:       int3
31  # CHECK: 9e:       call
32  # CHECK: a6:       int3
33  .p2align  5
34  .rept 30
35  int3
36  .endr
37  data16
38  call *___tls_get_addr@GOT(%ecx)
39  int3
40
41  # CHECK: de:       lock
42  # CHECK: df:       jmp
43  # CHECK: e4:       int3
44  .p2align  5
45  .rept 30
46  int3
47  .endr
48  lock
49  jmp baz
50  int3
51
52  # CHECK: 11d:       int3
53  # CHECK: 11e:       jmp
54  # CHECK: 124:       int3
55  .p2align  5
56  .rept 30
57  int3
58  .endr
59  rex64
60  jmp baz
61  int3
62
63  # CHECK: 15d:      int3
64  # CHECK: 15e:      {{.*}} jmp
65  # CHECK: 164:      int3
66  .p2align  5
67  .rept 30
68  int3
69  .endr
70  xacquire
71  jmp baz
72  int3
73
74  .section ".text.other"
75bar:
76  retq
77