~ubuntu-branches/ubuntu/utopic/binutils-arm64-cross/utopic

« back to all changes in this revision

Viewing changes to binutils-2.23.52.20130611/gas/testsuite/gas/i386/x86-64-bundle.s

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2013-06-20 17:38:09 UTC
  • Revision ID: package-import@ubuntu.com-20130620173809-app8lzgvymy5fg6c
Tags: 0.7
Build-depend on binutils-source (>= 2.23.52.20130620-1~).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
        .bundle_align_mode 5
 
2
 
 
3
# We use these macros to test each pattern at every offset from
 
4
# bundle alignment, i.e. [0,31].
 
5
 
 
6
.macro offset_insn insn_name, offset
 
7
        .p2align 5
 
8
\insn_name\()_offset_\offset\():
 
9
        .if \offset
 
10
        .space \offset, 0xf4
 
11
        .endif
 
12
        \insn_name
 
13
.endm
 
14
 
 
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
 
48
.endm
 
49
 
 
50
# These are vanilla (non-relaxed) instructions of each length.
 
51
.macro test_1
 
52
        clc
 
53
.endm
 
54
.macro test_2
 
55
        add %eax,%eax
 
56
.endm
 
57
.macro test_3
 
58
        and $3,%eax
 
59
.endm
 
60
.macro test_4
 
61
        lock and $3,(%rax)
 
62
.endm
 
63
.macro test_5
 
64
        mov $0x11223344,%eax
 
65
.endm
 
66
.macro test_6
 
67
        movl %eax,0x11223344(%rsi)
 
68
.endm
 
69
.macro test_7
 
70
        movl $0x11223344,0x7f(%rsi)
 
71
.endm
 
72
.macro test_8
 
73
        lock addl $0x11223344,0x10(%rsi)
 
74
.endm
 
75
.macro test_9
 
76
        lock addl $0x11223344,%fs:0x10(%rsi)
 
77
.endm
 
78
.macro test_10
 
79
        movl $0x11223344,0x7ff(%rsi)
 
80
.endm
 
81
.macro test_11
 
82
        lock addl $0x11223344,0x7ff(%rsi)
 
83
.endm
 
84
.macro test_12
 
85
        lock addl $0x11223344,%fs:0x7ff(%rsi)
 
86
.endm
 
87
.macro test_13
 
88
        lock addl $0x11223344,%fs:0x7ff(%r11)
 
89
.endm
 
90
 
 
91
test_offsets test_1
 
92
test_offsets test_2
 
93
test_offsets test_3
 
94
test_offsets test_4
 
95
test_offsets test_5
 
96
test_offsets test_6
 
97
test_offsets test_7
 
98
test_offsets test_8
 
99
test_offsets test_9
 
100
test_offsets test_10
 
101
test_offsets test_11
 
102
test_offsets test_12
 
103
test_offsets test_13
 
104
 
 
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.
 
109
.macro jmp_2
 
110
        jmp jmp_2_\@
 
111
        movl $0xdeadbeef,%eax
 
112
jmp_2_\@\():
 
113
        movl $0xb00b,%eax
 
114
.endm
 
115
.macro jmp_5
 
116
        jmp jmp_5_\@
 
117
        .rept 128
 
118
        clc
 
119
        .endr
 
120
jmp_5_\@\():
 
121
        movl $0xb00b,%eax
 
122
.endm
 
123
 
 
124
.macro cjmp_2
 
125
        jz cjmp_2_\@
 
126
        movl $0xdeadbeef,%eax
 
127
cjmp_2_\@\():
 
128
        movl $0xb00b,%eax
 
129
.endm
 
130
.macro cjmp_6
 
131
        jz cjmp_6_\@
 
132
        .rept 128
 
133
        clc
 
134
        .endr
 
135
cjmp_6_\@\():
 
136
        movl $0xb00b,%eax
 
137
.endm
 
138
 
 
139
.macro pjmp_3
 
140
        jz,pt pjmp_3_\@
 
141
        movl $0xdeadbeef,%eax
 
142
pjmp_3_\@\():
 
143
        movl $0xb00b,%eax
 
144
.endm
 
145
.macro pjmp_7
 
146
        jz,pt pjmp_7_\@
 
147
        .rept 128
 
148
        clc
 
149
        .endr
 
150
pjmp_7_\@\():
 
151
        movl $0xb00b,%eax
 
152
.endm
 
153
 
 
154
test_offsets jmp_2
 
155
test_offsets cjmp_2
 
156
test_offsets pjmp_3
 
157
test_offsets jmp_5
 
158
test_offsets cjmp_6
 
159
test_offsets pjmp_7
 
160
 
 
161
.p2align 5
 
162
        hlt