MC/Mach-O: Tweak optimal_nop test to be host independent.
[oota-llvm.git] / test / MC / MachO / x86_32-optimal_nop.s
1 // RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump --dump-section-data | FileCheck %s
2
3 # 1 byte nop test
4         .align 4, 0 # start with 16 byte alignment filled with zeros
5         ret
6         # nop
7         # 0x90
8         .align 1, 0x90
9         ret
10 # 2 byte nop test
11         .align 4, 0 # start with 16 byte alignment filled with zeros
12         ret
13         ret
14         # xchg %ax,%ax
15         # 0x66, 0x90
16         .align 2, 0x90
17         ret
18 # 3 byte nop test
19         .align 4, 0 # start with 16 byte alignment filled with zeros
20         ret
21         # nopl (%[re]ax)
22         # 0x0f, 0x1f, 0x00
23         .align 2, 0x90
24         ret
25 # 4 byte nop test
26         .align 4, 0 # start with 16 byte alignment filled with zeros
27         ret
28         ret
29         ret
30         ret
31         # nopl 0(%[re]ax)
32         # 0x0f, 0x1f, 0x40, 0x00
33         .align 3, 0x90
34         ret
35 # 5 byte nop test
36         .align 4, 0 # start with 16 byte alignment filled with zeros
37         ret
38         ret
39         ret
40         # nopl 0(%[re]ax,%[re]ax,1)
41         # 0x0f, 0x1f, 0x44, 0x00, 0x00
42         .align 3, 0x90
43         ret
44 # 6 byte nop test
45         .align 4, 0 # start with 16 byte alignment filled with zeros
46         ret
47         ret
48         # nopw 0(%[re]ax,%[re]ax,1)
49         # 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00
50         .align 3, 0x90
51         ret
52 # 7 byte nop test
53         .align 4, 0 # start with 16 byte alignment filled with zeros
54         ret
55         # nopl 0L(%[re]ax)
56         # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00
57         .align 3, 0x90
58         ret
59 # 8 byte nop test
60         .align 4, 0 # start with 16 byte alignment filled with zeros
61         ret
62         ret
63         ret
64         ret
65         ret
66         ret
67         ret
68         ret
69         # nopl 0L(%[re]ax,%[re]ax,1)
70         # 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00
71         .align 3, 0x90
72         ret
73 # 9 byte nop test
74         .align 4, 0 # start with 16 byte alignment filled with zeros
75         ret
76         ret
77         ret
78         ret
79         ret
80         ret
81         ret
82         # nopw 0L(%[re]ax,%[re]ax,1)
83         # 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00
84         .align 4, 0x90
85         ret
86 # 10 byte nop test
87         .align 4, 0 # start with 16 byte alignment filled with zeros
88         ret
89         ret
90         ret
91         ret
92         ret
93         ret
94         ret
95         # nopw %cs:0L(%[re]ax,%[re]ax,1)
96         # 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00
97         .align 4, 0x90
98         ret
99 # 11 byte nop test
100         .align 4, 0 # start with 16 byte alignment filled with zeros
101         ret
102         ret
103         ret
104         ret
105         ret
106         # nopw %cs:0L(%[re]ax,%[re]ax,1)
107         # 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00
108         .align 4, 0x90
109         ret
110 # 12 byte nop test
111         .align 4, 0 # start with 16 byte alignment filled with zeros
112         ret
113         ret
114         ret
115         ret
116         # nopw 0(%[re]ax,%[re]ax,1)
117         # nopw 0(%[re]ax,%[re]ax,1)
118         # 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00,
119         # 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00
120         .align 4, 0x90
121         ret
122 # 13 byte nop test
123         .align 4, 0 # start with 16 byte alignment filled with zeros
124         ret
125         ret
126         ret
127         # nopw 0(%[re]ax,%[re]ax,1)
128         # nopl 0L(%[re]ax)
129         # 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00,
130         # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00
131         .align 4, 0x90
132         ret
133 # 14 byte nop test
134         .align 4, 0 # start with 16 byte alignment filled with zeros
135         ret
136         ret
137         # nopl 0L(%[re]ax)
138         # nopl 0L(%[re]ax)
139         # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00,
140         # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00
141         .align 4, 0x90
142         ret
143 # 15 byte nop test
144         .align 4, 0 # start with 16 byte alignment filled with zeros
145         ret
146         # nopl 0L(%[re]ax)
147         # nopl 0L(%[re]ax,%[re]ax,1)
148         # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00,
149         # 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00
150         .align 4, 0x90
151         ret
152
153 // CHECK: ('cputype', 7)
154 // CHECK: ('cpusubtype', 3)
155 // CHECK: ('filetype', 1)
156 // CHECK: ('num_load_commands', 1)
157 // CHECK: ('load_commands_size', 124)
158 // CHECK: ('flag', 0)
159 // CHECK: ('load_commands', [
160 // CHECK:   # Load Command 0
161 // CHECK:  (('command', 1)
162 // CHECK:   ('size', 124)
163 // CHECK:   ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
164 // CHECK:   ('vm_addr', 0)
165 // CHECK:   ('vm_size', 337)
166 // CHECK:   ('file_offset', 152)
167 // CHECK:   ('file_size', 337)
168 // CHECK:   ('maxprot', 7)
169 // CHECK:   ('initprot', 7)
170 // CHECK:   ('num_sections', 1)
171 // CHECK:   ('flags', 0)
172 // CHECK:   ('sections', [
173 // CHECK:     # Section 0
174 // CHECK:    (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
175 // CHECK:     ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
176 // CHECK:     ('address', 0)
177 // CHECK:     ('size', 337)
178 // CHECK:     ('offset', 152)
179 // CHECK:     ('alignment', 4)
180 // CHECK:     ('reloc_offset', 0)
181 // CHECK:     ('num_reloc', 0)
182 // CHECK:     ('flags', 0x80000400)
183 // CHECK:     ('reserved1', 0)
184 // CHECK:     ('reserved2', 0)
185 // CHECK:    ),
186 // CHECK:   ('_relocations', [
187 // CHECK:   ])
188 // CHECK:   ('_section_data', '\xc3\x90\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xc3f\x90\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x0f\x1f\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3\xc3\x0f\x1f@\x00\xc3\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3\x0f\x1fD\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\xc3\xc3f\x0f\x1fD\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3\xc3\xc3\xc3\xc3\xc3\xc3\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3\xc3\xc3\xc3\xc3f\x0f\x1f\x84\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3\xc3\xc3\xc3\xc3f\x0f\x1f\x84\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3\xc3\xc3\x0f\x1fD\x00\x00f\x0f\x1fD\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3\xc3f\x0f\x1fD\x00\x00f\x0f\x1fD\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3f\x0f\x1fD\x00\x00\x0f\x1f\x80\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\x0f\x1f\x80\x00\x00\x00\x00\x0f\x1f\x80\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\x0f\x1f\x84\x00\x00\x00\x00\x00\xc3')
189 // CHECK:   ])
190 // CHECK:  ),
191 // CHECK: ])