e1bb16b81c2c9d4bfc195a6aab4804a6adfa1ff0
[oota-llvm.git] / test / MC / AsmParser / X86 / x86_64-encoding.s
1 // RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s
2
3 // CHECK: crc32b        %bl, %eax
4 // CHECK:  encoding: [0xf2,0x0f,0x38,0xf0,0xc3]
5         crc32b  %bl, %eax
6
7 // CHECK: crc32b        4(%rbx), %eax
8 // CHECK:  encoding: [0xf2,0x0f,0x38,0xf0,0x43,0x04]
9         crc32b  4(%rbx), %eax
10
11 // CHECK: crc32w        %bx, %eax
12 // CHECK:  encoding: [0x66,0xf2,0x0f,0x38,0xf1,0xc3]
13         crc32w  %bx, %eax
14
15 // CHECK: crc32w        4(%rbx), %eax
16 // CHECK:  encoding: [0x66,0xf2,0x0f,0x38,0xf1,0x43,0x04]
17         crc32w  4(%rbx), %eax
18
19 // CHECK: crc32l        %ebx, %eax
20 // CHECK:  encoding: [0xf2,0x0f,0x38,0xf1,0xc3]
21         crc32l  %ebx, %eax
22
23 // CHECK: crc32l        4(%rbx), %eax
24 // CHECK:  encoding: [0xf2,0x0f,0x38,0xf1,0x43,0x04]
25         crc32l  4(%rbx), %eax
26
27 // CHECK: crc32l        3735928559(%rbx,%rcx,8), %ecx
28 // CHECK:  encoding: [0xf2,0x0f,0x38,0xf1,0x8c,0xcb,0xef,0xbe,0xad,0xde]
29                 crc32l   0xdeadbeef(%rbx,%rcx,8),%ecx
30
31 // CHECK: crc32l        69, %ecx
32 // CHECK:  encoding: [0xf2,0x0f,0x38,0xf1,0x0c,0x25,0x45,0x00,0x00,0x00]
33                 crc32l   0x45,%ecx
34
35 // CHECK: crc32l        32493, %ecx
36 // CHECK:  encoding: [0xf2,0x0f,0x38,0xf1,0x0c,0x25,0xed,0x7e,0x00,0x00]
37                 crc32l   0x7eed,%ecx
38
39 // CHECK: crc32l        3133065982, %ecx
40 // CHECK:  encoding: [0xf2,0x0f,0x38,0xf1,0x0c,0x25,0xfe,0xca,0xbe,0xba]
41                 crc32l   0xbabecafe,%ecx
42
43 // CHECK: crc32l        %ecx, %ecx
44 // CHECK:  encoding: [0xf2,0x0f,0x38,0xf1,0xc9]
45                 crc32l   %ecx,%ecx
46
47 // CHECK: crc32b        %r11b, %eax
48 // CHECK:  encoding: [0xf2,0x41,0x0f,0x38,0xf0,0xc3]
49         crc32b  %r11b, %eax
50
51 // CHECK: crc32b        4(%rbx), %eax
52 // CHECK:  encoding: [0xf2,0x0f,0x38,0xf0,0x43,0x04]
53         crc32b  4(%rbx), %eax
54
55 // CHECK: crc32b        %dil, %rax
56 // CHECK:  encoding: [0xf2,0x48,0x0f,0x38,0xf0,0xc7]
57         crc32b  %dil,%rax
58
59 // CHECK: crc32b        %r11b, %rax
60 // CHECK:  encoding: [0xf2,0x49,0x0f,0x38,0xf0,0xc3]
61         crc32b  %r11b,%rax
62
63 // CHECK: crc32b        4(%rbx), %rax
64 // CHECK:  encoding: [0xf2,0x48,0x0f,0x38,0xf0,0x43,0x04]
65         crc32b  4(%rbx), %rax
66
67 // CHECK: crc32q        %rbx, %rax
68 // CHECK:  encoding: [0xf2,0x48,0x0f,0x38,0xf1,0xc3]
69         crc32q  %rbx, %rax
70
71 // CHECK: crc32q        4(%rbx), %rax
72 // CHECK:  encoding: [0xf2,0x48,0x0f,0x38,0xf1,0x43,0x04]
73         crc32q  4(%rbx), %rax
74
75 // CHECK: movd %r8, %mm1
76 // CHECK:  encoding: [0x49,0x0f,0x6e,0xc8]
77 movd %r8, %mm1
78
79 // CHECK: movd %r8d, %mm1
80 // CHECK:  encoding: [0x41,0x0f,0x6e,0xc8]
81 movd %r8d, %mm1
82
83 // CHECK: movd %rdx, %mm1
84 // CHECK:  encoding: [0x48,0x0f,0x6e,0xca]
85 movd %rdx, %mm1
86
87 // CHECK: movd %edx, %mm1
88 // CHECK:  encoding: [0x0f,0x6e,0xca]
89 movd %edx, %mm1
90
91 // CHECK: movd %mm1, %r8
92 // CHECK:  encoding: [0x49,0x0f,0x7e,0xc8]
93 movd %mm1, %r8
94
95 // CHECK: movd %mm1, %r8d
96 // CHECK:  encoding: [0x41,0x0f,0x7e,0xc8]
97 movd %mm1, %r8d
98
99 // CHECK: movd %mm1, %rdx
100 // CHECK:  encoding: [0x48,0x0f,0x7e,0xca]
101 movd %mm1, %rdx
102
103 // CHECK: movd %mm1, %edx
104 // CHECK:  encoding: [0x0f,0x7e,0xca]
105 movd %mm1, %edx
106
107 // CHECK: vaddss  %xmm8, %xmm9, %xmm10
108 // CHECK:  encoding: [0xc4,0x41,0x32,0x58,0xd0]
109 vaddss  %xmm8, %xmm9, %xmm10
110
111 // CHECK: vmulss  %xmm8, %xmm9, %xmm10
112 // CHECK:  encoding: [0xc4,0x41,0x32,0x59,0xd0]
113 vmulss  %xmm8, %xmm9, %xmm10
114
115 // CHECK: vsubss  %xmm8, %xmm9, %xmm10
116 // CHECK:  encoding: [0xc4,0x41,0x32,0x5c,0xd0]
117 vsubss  %xmm8, %xmm9, %xmm10
118
119 // CHECK: vdivss  %xmm8, %xmm9, %xmm10
120 // CHECK:  encoding: [0xc4,0x41,0x32,0x5e,0xd0]
121 vdivss  %xmm8, %xmm9, %xmm10
122
123 // CHECK: vaddsd  %xmm8, %xmm9, %xmm10
124 // CHECK:  encoding: [0xc4,0x41,0x33,0x58,0xd0]
125 vaddsd  %xmm8, %xmm9, %xmm10
126
127 // CHECK: vmulsd  %xmm8, %xmm9, %xmm10
128 // CHECK:  encoding: [0xc4,0x41,0x33,0x59,0xd0]
129 vmulsd  %xmm8, %xmm9, %xmm10
130
131 // CHECK: vsubsd  %xmm8, %xmm9, %xmm10
132 // CHECK:  encoding: [0xc4,0x41,0x33,0x5c,0xd0]
133 vsubsd  %xmm8, %xmm9, %xmm10
134
135 // CHECK: vdivsd  %xmm8, %xmm9, %xmm10
136 // CHECK:  encoding: [0xc4,0x41,0x33,0x5e,0xd0]
137 vdivsd  %xmm8, %xmm9, %xmm10
138
139 // CHECK:   vaddss  -4(%rcx,%rbx,8), %xmm10, %xmm11
140 // CHECK:   encoding: [0xc5,0x2a,0x58,0x5c,0xd9,0xfc]
141 vaddss  -4(%rcx,%rbx,8), %xmm10, %xmm11
142
143 // CHECK:   vsubss  -4(%rcx,%rbx,8), %xmm10, %xmm11
144 // CHECK:   encoding: [0xc5,0x2a,0x5c,0x5c,0xd9,0xfc]
145 vsubss  -4(%rcx,%rbx,8), %xmm10, %xmm11
146
147 // CHECK:   vmulss  -4(%rcx,%rbx,8), %xmm10, %xmm11
148 // CHECK:   encoding: [0xc5,0x2a,0x59,0x5c,0xd9,0xfc]
149 vmulss  -4(%rcx,%rbx,8), %xmm10, %xmm11
150
151 // CHECK:   vdivss  -4(%rcx,%rbx,8), %xmm10, %xmm11
152 // CHECK:   encoding: [0xc5,0x2a,0x5e,0x5c,0xd9,0xfc]
153 vdivss  -4(%rcx,%rbx,8), %xmm10, %xmm11
154
155 // CHECK:   vaddsd  -4(%rcx,%rbx,8), %xmm10, %xmm11
156 // CHECK:   encoding: [0xc5,0x2b,0x58,0x5c,0xd9,0xfc]
157 vaddsd  -4(%rcx,%rbx,8), %xmm10, %xmm11
158
159 // CHECK:   vsubsd  -4(%rcx,%rbx,8), %xmm10, %xmm11
160 // CHECK:   encoding: [0xc5,0x2b,0x5c,0x5c,0xd9,0xfc]
161 vsubsd  -4(%rcx,%rbx,8), %xmm10, %xmm11
162
163 // CHECK:   vmulsd  -4(%rcx,%rbx,8), %xmm10, %xmm11
164 // CHECK:   encoding: [0xc5,0x2b,0x59,0x5c,0xd9,0xfc]
165 vmulsd  -4(%rcx,%rbx,8), %xmm10, %xmm11
166
167 // CHECK:   vdivsd  -4(%rcx,%rbx,8), %xmm10, %xmm11
168 // CHECK:   encoding: [0xc5,0x2b,0x5e,0x5c,0xd9,0xfc]
169 vdivsd  -4(%rcx,%rbx,8), %xmm10, %xmm11
170
171 // CHECK: vaddps  %xmm10, %xmm11, %xmm15
172 // CHECK: encoding: [0xc4,0x41,0x20,0x58,0xfa]
173 vaddps  %xmm10, %xmm11, %xmm15
174
175 // CHECK: vsubps  %xmm10, %xmm11, %xmm15
176 // CHECK: encoding: [0xc4,0x41,0x20,0x5c,0xfa]
177 vsubps  %xmm10, %xmm11, %xmm15
178
179 // CHECK: vmulps  %xmm10, %xmm11, %xmm15
180 // CHECK: encoding: [0xc4,0x41,0x20,0x59,0xfa]
181 vmulps  %xmm10, %xmm11, %xmm15
182
183 // CHECK: vdivps  %xmm10, %xmm11, %xmm15
184 // CHECK: encoding: [0xc4,0x41,0x20,0x5e,0xfa]
185 vdivps  %xmm10, %xmm11, %xmm15
186
187 // CHECK: vaddpd  %xmm10, %xmm11, %xmm15
188 // CHECK: encoding: [0xc4,0x41,0x21,0x58,0xfa]
189 vaddpd  %xmm10, %xmm11, %xmm15
190
191 // CHECK: vsubpd  %xmm10, %xmm11, %xmm15
192 // CHECK: encoding: [0xc4,0x41,0x21,0x5c,0xfa]
193 vsubpd  %xmm10, %xmm11, %xmm15
194
195 // CHECK: vmulpd  %xmm10, %xmm11, %xmm15
196 // CHECK: encoding: [0xc4,0x41,0x21,0x59,0xfa]
197 vmulpd  %xmm10, %xmm11, %xmm15
198
199 // CHECK: vdivpd  %xmm10, %xmm11, %xmm15
200 // CHECK: encoding: [0xc4,0x41,0x21,0x5e,0xfa]
201 vdivpd  %xmm10, %xmm11, %xmm15
202
203 // CHECK: vaddps  -4(%rcx,%rbx,8), %xmm10, %xmm11
204 // CHECK: encoding: [0xc5,0x28,0x58,0x5c,0xd9,0xfc]
205 vaddps  -4(%rcx,%rbx,8), %xmm10, %xmm11
206
207 // CHECK: vsubps  -4(%rcx,%rbx,8), %xmm10, %xmm11
208 // CHECK: encoding: [0xc5,0x28,0x5c,0x5c,0xd9,0xfc]
209 vsubps  -4(%rcx,%rbx,8), %xmm10, %xmm11
210
211 // CHECK: vmulps  -4(%rcx,%rbx,8), %xmm10, %xmm11
212 // CHECK: encoding: [0xc5,0x28,0x59,0x5c,0xd9,0xfc]
213 vmulps  -4(%rcx,%rbx,8), %xmm10, %xmm11
214
215 // CHECK: vdivps  -4(%rcx,%rbx,8), %xmm10, %xmm11
216 // CHECK: encoding: [0xc5,0x28,0x5e,0x5c,0xd9,0xfc]
217 vdivps  -4(%rcx,%rbx,8), %xmm10, %xmm11
218
219 // CHECK: vaddpd  -4(%rcx,%rbx,8), %xmm10, %xmm11
220 // CHECK: encoding: [0xc5,0x29,0x58,0x5c,0xd9,0xfc]
221 vaddpd  -4(%rcx,%rbx,8), %xmm10, %xmm11
222
223 // CHECK: vsubpd  -4(%rcx,%rbx,8), %xmm10, %xmm11
224 // CHECK: encoding: [0xc5,0x29,0x5c,0x5c,0xd9,0xfc]
225 vsubpd  -4(%rcx,%rbx,8), %xmm10, %xmm11
226
227 // CHECK: vmulpd  -4(%rcx,%rbx,8), %xmm10, %xmm11
228 // CHECK: encoding: [0xc5,0x29,0x59,0x5c,0xd9,0xfc]
229 vmulpd  -4(%rcx,%rbx,8), %xmm10, %xmm11
230
231 // CHECK: vdivpd  -4(%rcx,%rbx,8), %xmm10, %xmm11
232 // CHECK: encoding: [0xc5,0x29,0x5e,0x5c,0xd9,0xfc]
233 vdivpd  -4(%rcx,%rbx,8), %xmm10, %xmm11
234
235 // CHECK: vmaxss  %xmm10, %xmm14, %xmm12
236 // CHECK: encoding: [0xc4,0x41,0x0a,0x5f,0xe2]
237           vmaxss  %xmm10, %xmm14, %xmm12
238
239 // CHECK: vmaxsd  %xmm10, %xmm14, %xmm12
240 // CHECK: encoding: [0xc4,0x41,0x0b,0x5f,0xe2]
241           vmaxsd  %xmm10, %xmm14, %xmm12
242
243 // CHECK: vminss  %xmm10, %xmm14, %xmm12
244 // CHECK: encoding: [0xc4,0x41,0x0a,0x5d,0xe2]
245           vminss  %xmm10, %xmm14, %xmm12
246
247 // CHECK: vminsd  %xmm10, %xmm14, %xmm12
248 // CHECK: encoding: [0xc4,0x41,0x0b,0x5d,0xe2]
249           vminsd  %xmm10, %xmm14, %xmm12
250
251 // CHECK: vmaxss  -4(%rbx,%rcx,8), %xmm12, %xmm10
252 // CHECK: encoding: [0xc5,0x1a,0x5f,0x54,0xcb,0xfc]
253           vmaxss  -4(%rbx,%rcx,8), %xmm12, %xmm10
254
255 // CHECK: vmaxsd  -4(%rbx,%rcx,8), %xmm12, %xmm10
256 // CHECK: encoding: [0xc5,0x1b,0x5f,0x54,0xcb,0xfc]
257           vmaxsd  -4(%rbx,%rcx,8), %xmm12, %xmm10
258
259 // CHECK: vminss  -4(%rbx,%rcx,8), %xmm12, %xmm10
260 // CHECK: encoding: [0xc5,0x1a,0x5d,0x54,0xcb,0xfc]
261           vminss  -4(%rbx,%rcx,8), %xmm12, %xmm10
262
263 // CHECK: vminsd  -4(%rbx,%rcx,8), %xmm12, %xmm10
264 // CHECK: encoding: [0xc5,0x1b,0x5d,0x54,0xcb,0xfc]
265           vminsd  -4(%rbx,%rcx,8), %xmm12, %xmm10
266
267 // CHECK: vmaxps  %xmm10, %xmm14, %xmm12
268 // CHECK: encoding: [0xc4,0x41,0x08,0x5f,0xe2]
269           vmaxps  %xmm10, %xmm14, %xmm12
270
271 // CHECK: vmaxpd  %xmm10, %xmm14, %xmm12
272 // CHECK: encoding: [0xc4,0x41,0x09,0x5f,0xe2]
273           vmaxpd  %xmm10, %xmm14, %xmm12
274
275 // CHECK: vminps  %xmm10, %xmm14, %xmm12
276 // CHECK: encoding: [0xc4,0x41,0x08,0x5d,0xe2]
277           vminps  %xmm10, %xmm14, %xmm12
278
279 // CHECK: vminpd  %xmm10, %xmm14, %xmm12
280 // CHECK: encoding: [0xc4,0x41,0x09,0x5d,0xe2]
281           vminpd  %xmm10, %xmm14, %xmm12
282
283 // CHECK: vmaxps  -4(%rbx,%rcx,8), %xmm12, %xmm10
284 // CHECK: encoding: [0xc5,0x18,0x5f,0x54,0xcb,0xfc]
285           vmaxps  -4(%rbx,%rcx,8), %xmm12, %xmm10
286
287 // CHECK: vmaxpd  -4(%rbx,%rcx,8), %xmm12, %xmm10
288 // CHECK: encoding: [0xc5,0x19,0x5f,0x54,0xcb,0xfc]
289           vmaxpd  -4(%rbx,%rcx,8), %xmm12, %xmm10
290
291 // CHECK: vminps  -4(%rbx,%rcx,8), %xmm12, %xmm10
292 // CHECK: encoding: [0xc5,0x18,0x5d,0x54,0xcb,0xfc]
293           vminps  -4(%rbx,%rcx,8), %xmm12, %xmm10
294
295 // CHECK: vminpd  -4(%rbx,%rcx,8), %xmm12, %xmm10
296 // CHECK: encoding: [0xc5,0x19,0x5d,0x54,0xcb,0xfc]
297           vminpd  -4(%rbx,%rcx,8), %xmm12, %xmm10
298
299 // CHECK: vandps  %xmm10, %xmm14, %xmm12
300 // CHECK: encoding: [0xc4,0x41,0x08,0x54,0xe2]
301           vandps  %xmm10, %xmm14, %xmm12
302
303 // CHECK: vandpd  %xmm10, %xmm14, %xmm12
304 // CHECK: encoding: [0xc4,0x41,0x09,0x54,0xe2]
305           vandpd  %xmm10, %xmm14, %xmm12
306
307 // CHECK: vandps  -4(%rbx,%rcx,8), %xmm12, %xmm10
308 // CHECK: encoding: [0xc5,0x18,0x54,0x54,0xcb,0xfc]
309           vandps  -4(%rbx,%rcx,8), %xmm12, %xmm10
310
311 // CHECK: vandpd  -4(%rbx,%rcx,8), %xmm12, %xmm10
312 // CHECK: encoding: [0xc5,0x19,0x54,0x54,0xcb,0xfc]
313           vandpd  -4(%rbx,%rcx,8), %xmm12, %xmm10
314
315 // CHECK: vorps  %xmm10, %xmm14, %xmm12
316 // CHECK: encoding: [0xc4,0x41,0x08,0x56,0xe2]
317           vorps  %xmm10, %xmm14, %xmm12
318
319 // CHECK: vorpd  %xmm10, %xmm14, %xmm12
320 // CHECK: encoding: [0xc4,0x41,0x09,0x56,0xe2]
321           vorpd  %xmm10, %xmm14, %xmm12
322
323 // CHECK: vorps  -4(%rbx,%rcx,8), %xmm12, %xmm10
324 // CHECK: encoding: [0xc5,0x18,0x56,0x54,0xcb,0xfc]
325           vorps  -4(%rbx,%rcx,8), %xmm12, %xmm10
326
327 // CHECK: vorpd  -4(%rbx,%rcx,8), %xmm12, %xmm10
328 // CHECK: encoding: [0xc5,0x19,0x56,0x54,0xcb,0xfc]
329           vorpd  -4(%rbx,%rcx,8), %xmm12, %xmm10
330
331 // CHECK: vxorps  %xmm10, %xmm14, %xmm12
332 // CHECK: encoding: [0xc4,0x41,0x08,0x57,0xe2]
333           vxorps  %xmm10, %xmm14, %xmm12
334
335 // CHECK: vxorpd  %xmm10, %xmm14, %xmm12
336 // CHECK: encoding: [0xc4,0x41,0x09,0x57,0xe2]
337           vxorpd  %xmm10, %xmm14, %xmm12
338
339 // CHECK: vxorps  -4(%rbx,%rcx,8), %xmm12, %xmm10
340 // CHECK: encoding: [0xc5,0x18,0x57,0x54,0xcb,0xfc]
341           vxorps  -4(%rbx,%rcx,8), %xmm12, %xmm10
342
343 // CHECK: vxorpd  -4(%rbx,%rcx,8), %xmm12, %xmm10
344 // CHECK: encoding: [0xc5,0x19,0x57,0x54,0xcb,0xfc]
345           vxorpd  -4(%rbx,%rcx,8), %xmm12, %xmm10
346
347 // CHECK: vandnps  %xmm10, %xmm14, %xmm12
348 // CHECK: encoding: [0xc4,0x41,0x08,0x55,0xe2]
349           vandnps  %xmm10, %xmm14, %xmm12
350
351 // CHECK: vandnpd  %xmm10, %xmm14, %xmm12
352 // CHECK: encoding: [0xc4,0x41,0x09,0x55,0xe2]
353           vandnpd  %xmm10, %xmm14, %xmm12
354
355 // CHECK: vandnps  -4(%rbx,%rcx,8), %xmm12, %xmm10
356 // CHECK: encoding: [0xc5,0x18,0x55,0x54,0xcb,0xfc]
357           vandnps  -4(%rbx,%rcx,8), %xmm12, %xmm10
358
359 // CHECK: vandnpd  -4(%rbx,%rcx,8), %xmm12, %xmm10
360 // CHECK: encoding: [0xc5,0x19,0x55,0x54,0xcb,0xfc]
361           vandnpd  -4(%rbx,%rcx,8), %xmm12, %xmm10
362
363 // CHECK: vmovss  -4(%rbx,%rcx,8), %xmm10
364 // CHECK: encoding: [0xc5,0x7a,0x10,0x54,0xcb,0xfc]
365           vmovss  -4(%rbx,%rcx,8), %xmm10
366
367 // CHECK: vmovss  %xmm14, %xmm10, %xmm15
368 // CHECK: encoding: [0xc4,0x41,0x2a,0x10,0xfe]
369           vmovss  %xmm14, %xmm10, %xmm15
370
371 // CHECK: vmovsd  -4(%rbx,%rcx,8), %xmm10
372 // CHECK: encoding: [0xc5,0x7b,0x10,0x54,0xcb,0xfc]
373           vmovsd  -4(%rbx,%rcx,8), %xmm10
374
375 // CHECK: vmovsd  %xmm14, %xmm10, %xmm15
376 // CHECK: encoding: [0xc4,0x41,0x2b,0x10,0xfe]
377           vmovsd  %xmm14, %xmm10, %xmm15
378
379 // rdar://7840289
380 // CHECK: pshufb        CPI1_0(%rip), %xmm1
381 // CHECK:  encoding: [0x66,0x0f,0x38,0x00,0x0d,A,A,A,A]
382 // CHECK:  fixup A - offset: 5, value: CPI1_0-4
383 pshufb  CPI1_0(%rip), %xmm1
384