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