1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 | FileCheck %s
3 define void @nop_test() {
5 ; CHECK-LABEL: nop_test:
7 ; CHECK: xchgw %ax, %ax
10 ; CHECK: nopl 8(%rax,%rax)
11 ; CHECK: nopw 8(%rax,%rax)
12 ; CHECK: nopl 512(%rax)
13 ; CHECK: nopl 512(%rax,%rax)
14 ; CHECK: nopw 512(%rax,%rax)
15 ; CHECK: nopw %cs:512(%rax,%rax)
19 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
23 ; CHECK-NEXT: .byte 102
24 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
28 ; CHECK-NEXT: .byte 102
29 ; CHECK-NEXT: .byte 102
30 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
34 ; CHECK-NEXT: .byte 102
35 ; CHECK-NEXT: .byte 102
36 ; CHECK-NEXT: .byte 102
37 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
41 ; CHECK-NEXT: .byte 102
42 ; CHECK-NEXT: .byte 102
43 ; CHECK-NEXT: .byte 102
44 ; CHECK-NEXT: .byte 102
45 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
49 ; CHECK-NEXT: .byte 102
50 ; CHECK-NEXT: .byte 102
51 ; CHECK-NEXT: .byte 102
52 ; CHECK-NEXT: .byte 102
53 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
58 ; CHECK-NEXT: .byte 102
59 ; CHECK-NEXT: .byte 102
60 ; CHECK-NEXT: .byte 102
61 ; CHECK-NEXT: .byte 102
62 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
63 ; CHECK-NEXT: xchgw %ax, %ax
67 ; CHECK-NEXT: .byte 102
68 ; CHECK-NEXT: .byte 102
69 ; CHECK-NEXT: .byte 102
70 ; CHECK-NEXT: .byte 102
71 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
72 ; CHECK-NEXT: nopl (%rax)
76 ; CHECK-NEXT: .byte 102
77 ; CHECK-NEXT: .byte 102
78 ; CHECK-NEXT: .byte 102
79 ; CHECK-NEXT: .byte 102
80 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
81 ; CHECK-NEXT: nopl 8(%rax)
85 ; CHECK-NEXT: .byte 102
86 ; CHECK-NEXT: .byte 102
87 ; CHECK-NEXT: .byte 102
88 ; CHECK-NEXT: .byte 102
89 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
90 ; CHECK-NEXT: nopl 8(%rax,%rax)
94 ; CHECK-NEXT: .byte 102
95 ; CHECK-NEXT: .byte 102
96 ; CHECK-NEXT: .byte 102
97 ; CHECK-NEXT: .byte 102
98 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
99 ; CHECK-NEXT: nopw 8(%rax,%rax)
103 ; CHECK-NEXT: .byte 102
104 ; CHECK-NEXT: .byte 102
105 ; CHECK-NEXT: .byte 102
106 ; CHECK-NEXT: .byte 102
107 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
108 ; CHECK-NEXT: nopl 512(%rax)
112 ; CHECK-NEXT: .byte 102
113 ; CHECK-NEXT: .byte 102
114 ; CHECK-NEXT: .byte 102
115 ; CHECK-NEXT: .byte 102
116 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
117 ; CHECK-NEXT: nopl 512(%rax,%rax)
121 ; CHECK-NEXT: .byte 102
122 ; CHECK-NEXT: .byte 102
123 ; CHECK-NEXT: .byte 102
124 ; CHECK-NEXT: .byte 102
125 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
126 ; CHECK-NEXT: nopw 512(%rax,%rax)
130 ; CHECK-NEXT: .byte 102
131 ; CHECK-NEXT: .byte 102
132 ; CHECK-NEXT: .byte 102
133 ; CHECK-NEXT: .byte 102
134 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
135 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
139 ; CHECK-NEXT: .byte 102
140 ; CHECK-NEXT: .byte 102
141 ; CHECK-NEXT: .byte 102
142 ; CHECK-NEXT: .byte 102
143 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
144 ; CHECK-NEXT: .byte 102
145 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
149 ; CHECK-NEXT: .byte 102
150 ; CHECK-NEXT: .byte 102
151 ; CHECK-NEXT: .byte 102
152 ; CHECK-NEXT: .byte 102
153 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
154 ; CHECK-NEXT: .byte 102
155 ; CHECK-NEXT: .byte 102
156 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
160 ; CHECK-NEXT: .byte 102
161 ; CHECK-NEXT: .byte 102
162 ; CHECK-NEXT: .byte 102
163 ; CHECK-NEXT: .byte 102
164 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
165 ; CHECK-NEXT: .byte 102
166 ; CHECK-NEXT: .byte 102
167 ; CHECK-NEXT: .byte 102
168 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
172 ; CHECK-NEXT: .byte 102
173 ; CHECK-NEXT: .byte 102
174 ; CHECK-NEXT: .byte 102
175 ; CHECK-NEXT: .byte 102
176 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
177 ; CHECK-NEXT: .byte 102
178 ; CHECK-NEXT: .byte 102
179 ; CHECK-NEXT: .byte 102
180 ; CHECK-NEXT: .byte 102
181 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
185 ; CHECK-NEXT: .byte 102
186 ; CHECK-NEXT: .byte 102
187 ; CHECK-NEXT: .byte 102
188 ; CHECK-NEXT: .byte 102
189 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
190 ; CHECK-NEXT: .byte 102
191 ; CHECK-NEXT: .byte 102
192 ; CHECK-NEXT: .byte 102
193 ; CHECK-NEXT: .byte 102
194 ; CHECK-NEXT: .byte 102
195 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
196 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 0, i32 0)
197 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 1, i32 1)
198 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 2, i32 2)
199 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 3, i32 3)
200 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4, i32 4)
201 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 5, i32 5)
202 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 6, i32 6)
203 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 7, i32 7)
204 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 8, i32 8)
205 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 9, i32 9)
206 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 10, i32 10)
207 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 11, i32 11)
208 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 12, i32 12)
209 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 13, i32 13)
210 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 14, i32 14)
211 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 15, i32 15)
212 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 16)
213 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 17, i32 17)
214 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 18, i32 18)
215 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 19, i32 19)
216 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 20, i32 20)
217 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 21, i32 21)
218 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 22, i32 22)
219 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 23, i32 23)
220 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 24, i32 24)
221 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 25, i32 25)
222 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 26, i32 26)
223 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 27, i32 27)
224 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 28, i32 28)
225 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 29, i32 29)
226 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 30, i32 30)
227 ; Add an extra stackmap with a zero-length shadow to thwart the shadow
228 ; optimization. This will force all 15 bytes of the previous shadow to be
230 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 31, i32 0)
234 declare void @llvm.experimental.stackmap(i64, i32, ...)