[Alignment][NFC] Use Align with TargetLowering::setMinFunctionAlignment
[llvm-core.git] / test / CodeGen / X86 / stackmap-nops.ll
blob08fee2ecd3e09ff84d41d26fe27f050054deb015
1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 | FileCheck %s
3 define void @nop_test() {
4 entry:
5 ; CHECK-LABEL: nop_test:
6 ; CHECK:      nop
7 ; CHECK:      xchgw %ax, %ax
8 ; CHECK:      nopl (%rax)
9 ; CHECK:      nopl 8(%rax)
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)
17 ; 11
18 ; CHECK:      .byte 102
19 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
21 ; 12
22 ; CHECK:      .byte 102
23 ; CHECK-NEXT: .byte 102
24 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
26 ; 13
27 ; CHECK:      .byte 102
28 ; CHECK-NEXT: .byte 102
29 ; CHECK-NEXT: .byte 102
30 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
32 ; 14
33 ; CHECK:      .byte 102
34 ; CHECK-NEXT: .byte 102
35 ; CHECK-NEXT: .byte 102
36 ; CHECK-NEXT: .byte 102
37 ; CHECK-NEXT: nopw %cs:512(%rax,%rax)
39 ; 15
40 ; CHECK:      .byte 102
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)
47 ; 16
48 ; CHECK:      .byte 102
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)
54 ; CHECK-NEXT: nop
56 ; 17
57 ; CHECK:      .byte 102
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
65 ; 18
66 ; CHECK:      .byte 102
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)
74 ; 19
75 ; CHECK:      .byte 102
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)
83 ; 20
84 ; CHECK:      .byte 102
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)
92 ; 21
93 ; CHECK:      .byte 102
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)
101 ; 22
102 ; CHECK:      .byte 102
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)
110 ; 23
111 ; CHECK:      .byte 102
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)
119 ; 24
120 ; CHECK:      .byte 102
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)
128 ; 25
129 ; CHECK:      .byte 102
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)
137 ; 26
138 ; CHECK:      .byte 102
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)
147 ; 27
148 ; CHECK:      .byte 102
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)
158 ; 28
159 ; CHECK:      .byte 102
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)
171 ; CHECK:      .byte 102
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)
183 ; 30
184 ; CHECK:      .byte 102
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
229 ; padded with nops.
230   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 31, i32 0)
231   ret void
234 declare void @llvm.experimental.stackmap(i64, i32, ...)