x86_32-optimal_nop.s revision 57a49a202f8613d99dcb2f75f2b5a9505898f1a1
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: ])
192