3
# We use these macros to test each pattern at every offset from
4
# bundle alignment, i.e. [0,31].
6
.macro offset_insn insn_name, offset
8
\insn_name\()_offset_\offset\():
15
.macro test_offsets insn_name
16
offset_insn \insn_name, 0
17
offset_insn \insn_name, 1
18
offset_insn \insn_name, 2
19
offset_insn \insn_name, 3
20
offset_insn \insn_name, 4
21
offset_insn \insn_name, 5
22
offset_insn \insn_name, 6
23
offset_insn \insn_name, 7
24
offset_insn \insn_name, 8
25
offset_insn \insn_name, 9
26
offset_insn \insn_name, 10
27
offset_insn \insn_name, 11
28
offset_insn \insn_name, 12
29
offset_insn \insn_name, 13
30
offset_insn \insn_name, 14
31
offset_insn \insn_name, 15
32
offset_insn \insn_name, 16
33
offset_insn \insn_name, 17
34
offset_insn \insn_name, 18
35
offset_insn \insn_name, 19
36
offset_insn \insn_name, 20
37
offset_insn \insn_name, 21
38
offset_insn \insn_name, 22
39
offset_insn \insn_name, 23
40
offset_insn \insn_name, 24
41
offset_insn \insn_name, 25
42
offset_insn \insn_name, 26
43
offset_insn \insn_name, 27
44
offset_insn \insn_name, 28
45
offset_insn \insn_name, 29
46
offset_insn \insn_name, 30
47
offset_insn \insn_name, 31
50
# These are vanilla (non-relaxed) instructions of each length.
67
movl %eax,0x11223344(%rsi)
70
movl $0x11223344,0x7f(%rsi)
73
lock addl $0x11223344,0x10(%rsi)
76
lock addl $0x11223344,%fs:0x10(%rsi)
79
movl $0x11223344,0x7ff(%rsi)
82
lock addl $0x11223344,0x7ff(%rsi)
85
lock addl $0x11223344,%fs:0x7ff(%rsi)
88
lock addl $0x11223344,%fs:0x7ff(%r11)
105
# The only relaxation cases are the jump instructions.
106
# For each of the three flavors of jump (unconditional, conditional,
107
# and conditional with prediction), we test a case that can be relaxed
108
# to its shortest form, and one that must use the long form.
111
movl $0xdeadbeef,%eax
126
movl $0xdeadbeef,%eax
141
movl $0xdeadbeef,%eax