xref: /llvm-project/llvm/test/MC/X86/x86_64-encoding.s (revision 83680f8c5388d76c3f5b15cc9ad565b28c86af35)
1// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s
2
3// rdar://8127102
4// CHECK: movq	%gs:(%rdi), %rax
5// CHECK: encoding: [0x65,0x48,0x8b,0x07]
6movq	%gs:(%rdi), %rax
7
8// CHECK: crc32b 	%bl, %eax
9// CHECK:  encoding: [0xf2,0x0f,0x38,0xf0,0xc3]
10        crc32b	%bl, %eax
11
12// CHECK: crc32b 	4(%rbx), %eax
13// CHECK:  encoding: [0xf2,0x0f,0x38,0xf0,0x43,0x04]
14        crc32b	4(%rbx), %eax
15
16// CHECK: crc32w 	%bx, %eax
17// CHECK:  encoding: [0x66,0xf2,0x0f,0x38,0xf1,0xc3]
18        crc32w	%bx, %eax
19
20// CHECK: crc32w 	4(%rbx), %eax
21// CHECK:  encoding: [0x66,0xf2,0x0f,0x38,0xf1,0x43,0x04]
22        crc32w	4(%rbx), %eax
23
24// CHECK: crc32l 	%ebx, %eax
25// CHECK:  encoding: [0xf2,0x0f,0x38,0xf1,0xc3]
26        crc32l	%ebx, %eax
27
28// CHECK: crc32l 	4(%rbx), %eax
29// CHECK:  encoding: [0xf2,0x0f,0x38,0xf1,0x43,0x04]
30        crc32l	4(%rbx), %eax
31
32// CHECK: crc32l 	2125315823(%rbx,%rcx,8), %ecx
33// CHECK:  encoding: [0xf2,0x0f,0x38,0xf1,0x8c,0xcb,0xef,0xbe,0xad,0x7e]
34        crc32l   0x7eadbeef(%rbx,%rcx,8),%ecx
35
36// CHECK: crc32l 	69, %ecx
37// CHECK:  encoding: [0xf2,0x0f,0x38,0xf1,0x0c,0x25,0x45,0x00,0x00,0x00]
38        	crc32l   0x45,%ecx
39
40// CHECK: crc32l 	32493, %ecx
41// CHECK:  encoding: [0xf2,0x0f,0x38,0xf1,0x0c,0x25,0xed,0x7e,0x00,0x00]
42        	crc32l   0x7eed,%ecx
43
44// CHECK: crc32l 	3133065982, %ecx
45// CHECK:  encoding: [0xf2,0x0f,0x38,0xf1,0x0c,0x25,0xfe,0xca,0xbe,0xba]
46        	crc32l   0xbabecafe,%ecx
47
48// CHECK: crc32l 	%ecx, %ecx
49// CHECK:  encoding: [0xf2,0x0f,0x38,0xf1,0xc9]
50        	crc32l   %ecx,%ecx
51
52// CHECK: crc32b 	%r11b, %eax
53// CHECK:  encoding: [0xf2,0x41,0x0f,0x38,0xf0,0xc3]
54        crc32b	%r11b, %eax
55
56// CHECK: crc32b 	4(%rbx), %eax
57// CHECK:  encoding: [0xf2,0x0f,0x38,0xf0,0x43,0x04]
58        crc32b	4(%rbx), %eax
59
60// CHECK: crc32b 	%dil, %rax
61// CHECK:  encoding: [0xf2,0x48,0x0f,0x38,0xf0,0xc7]
62        crc32b	%dil,%rax
63
64// CHECK: crc32b 	%r11b, %rax
65// CHECK:  encoding: [0xf2,0x49,0x0f,0x38,0xf0,0xc3]
66        crc32b	%r11b,%rax
67
68// CHECK: crc32b 	4(%rbx), %rax
69// CHECK:  encoding: [0xf2,0x48,0x0f,0x38,0xf0,0x43,0x04]
70        crc32b	4(%rbx), %rax
71
72// CHECK: crc32q 	%rbx, %rax
73// CHECK:  encoding: [0xf2,0x48,0x0f,0x38,0xf1,0xc3]
74        crc32q	%rbx, %rax
75
76// CHECK: crc32q 	4(%rbx), %rax
77// CHECK:  encoding: [0xf2,0x48,0x0f,0x38,0xf1,0x43,0x04]
78        crc32q	4(%rbx), %rax
79
80// CHECK: movq %r8, %mm1
81// CHECK:  encoding: [0x49,0x0f,0x6e,0xc8]
82movd %r8, %mm1
83
84// CHECK: movd %r8d, %mm1
85// CHECK:  encoding: [0x41,0x0f,0x6e,0xc8]
86movd %r8d, %mm1
87
88// CHECK: movq %rdx, %mm1
89// CHECK:  encoding: [0x48,0x0f,0x6e,0xca]
90movd %rdx, %mm1
91
92// CHECK: movd %edx, %mm1
93// CHECK:  encoding: [0x0f,0x6e,0xca]
94movd %edx, %mm1
95
96// CHECK: movq %mm1, %r8
97// CHECK:  encoding: [0x49,0x0f,0x7e,0xc8]
98movd %mm1, %r8
99
100// CHECK: movd %mm1, %r8d
101// CHECK:  encoding: [0x41,0x0f,0x7e,0xc8]
102movd %mm1, %r8d
103
104// CHECK: movq %mm1, %rdx
105// CHECK:  encoding: [0x48,0x0f,0x7e,0xca]
106movd %mm1, %rdx
107
108// CHECK: movd %mm1, %edx
109// CHECK:  encoding: [0x0f,0x7e,0xca]
110movd %mm1, %edx
111
112// CHECK: movd %mm1, (%rax)
113// CHECK:  encoding: [0x0f,0x7e,0x08]
114movd %mm1, (%rax)
115
116// CHECK: movd (%rax), %mm1
117// CHECK:  encoding: [0x0f,0x6e,0x08]
118movd (%rax), %mm1
119
120// CHECK: movq %r8, %mm1
121// CHECK:  encoding: [0x49,0x0f,0x6e,0xc8]
122movq %r8, %mm1
123
124// CHECK: movq %rdx, %mm1
125// CHECK:  encoding: [0x48,0x0f,0x6e,0xca]
126movq %rdx, %mm1
127
128// CHECK: movq %mm1, %r8
129// CHECK:  encoding: [0x49,0x0f,0x7e,0xc8]
130movq %mm1, %r8
131
132// CHECK: movq %mm1, %rdx
133// CHECK:  encoding: [0x48,0x0f,0x7e,0xca]
134movq %mm1, %rdx
135
136// rdar://7840289
137// CHECK: pshufb	CPI1_0(%rip), %xmm1
138// CHECK:  encoding: [0x66,0x0f,0x38,0x00,0x0d,A,A,A,A]
139// CHECK:  fixup A - offset: 5, value: CPI1_0-4
140pshufb	CPI1_0(%rip), %xmm1
141
142// CHECK: sha1rnds4 $1, %xmm1, %xmm2
143// CHECK:   encoding: [0x0f,0x3a,0xcc,0xd1,0x01]
144sha1rnds4 $1, %xmm1, %xmm2
145
146// CHECK: sha1rnds4 $1, (%rax), %xmm2
147// CHECK:   encoding: [0x0f,0x3a,0xcc,0x10,0x01]
148sha1rnds4 $1, (%rax), %xmm2
149
150// CHECK: sha1nexte %xmm1, %xmm2
151// CHECK:   encoding: [0x0f,0x38,0xc8,0xd1]
152sha1nexte %xmm1, %xmm2
153
154// CHECK: sha1msg1 %xmm1, %xmm2
155// CHECK:   encoding: [0x0f,0x38,0xc9,0xd1]
156sha1msg1 %xmm1, %xmm2
157
158// CHECK: sha1msg1 (%rax), %xmm2
159// CHECK:   encoding: [0x0f,0x38,0xc9,0x10]
160sha1msg1 (%rax), %xmm2
161
162// CHECK: sha1msg2 %xmm1, %xmm2
163// CHECK:   encoding: [0x0f,0x38,0xca,0xd1]
164sha1msg2 %xmm1, %xmm2
165
166// CHECK: sha1msg2 (%rax), %xmm2
167// CHECK:   encoding: [0x0f,0x38,0xca,0x10]
168sha1msg2 (%rax), %xmm2
169
170// CHECK: sha256rnds2 %xmm0, (%rax), %xmm2
171// CHECK:   encoding: [0x0f,0x38,0xcb,0x10]
172sha256rnds2 (%rax), %xmm2
173
174// CHECK: sha256rnds2 %xmm0, %xmm1, %xmm2
175// CHECK:   encoding: [0x0f,0x38,0xcb,0xd1]
176sha256rnds2 %xmm1, %xmm2
177
178// CHECK: sha256rnds2 %xmm0, (%rax), %xmm2
179// CHECK:   encoding: [0x0f,0x38,0xcb,0x10]
180sha256rnds2 %xmm0, (%rax), %xmm2
181
182// CHECK: sha256rnds2 %xmm0, %xmm1, %xmm2
183// CHECK:   encoding: [0x0f,0x38,0xcb,0xd1]
184sha256rnds2 %xmm0, %xmm1, %xmm2
185
186// CHECK: sha256msg1 %xmm1, %xmm2
187// CHECK:   encoding: [0x0f,0x38,0xcc,0xd1]
188sha256msg1 %xmm1, %xmm2
189
190// CHECK: sha256msg1 (%rax), %xmm2
191// CHECK:   encoding: [0x0f,0x38,0xcc,0x10]
192sha256msg1 (%rax), %xmm2
193
194// CHECK: sha256msg2 %xmm1, %xmm2
195// CHECK:   encoding: [0x0f,0x38,0xcd,0xd1]
196sha256msg2 %xmm1, %xmm2
197
198// CHECK: sha256msg2 (%rax), %xmm2
199// CHECK:   encoding: [0x0f,0x38,0xcd,0x10]
200sha256msg2 (%rax), %xmm2
201
202// CHECK: movq  57005(,%riz), %rbx
203// CHECK: encoding: [0x48,0x8b,0x1c,0x25,0xad,0xde,0x00,0x00]
204          movq  57005(,%riz), %rbx
205
206// CHECK: movq  48879(,%riz), %rax
207// CHECK: encoding: [0x48,0x8b,0x04,0x25,0xef,0xbe,0x00,0x00]
208          movq  48879(,%riz), %rax
209
210// CHECK: movq  -4(,%riz,8), %rax
211// CHECK: encoding: [0x48,0x8b,0x04,0xe5,0xfc,0xff,0xff,0xff]
212          movq  -4(,%riz,8), %rax
213
214// CHECK: movq  (%rcx,%riz), %rax
215// CHECK: encoding: [0x48,0x8b,0x04,0x21]
216          movq  (%rcx,%riz), %rax
217
218// CHECK: movq  (%rcx,%riz,8), %rax
219// CHECK: encoding: [0x48,0x8b,0x04,0xe1]
220          movq  (%rcx,%riz,8), %rax
221
222// CHECK: fxsave64 (%rax)
223// CHECK: encoding: [0x48,0x0f,0xae,0x00]
224          fxsaveq (%rax)
225
226// CHECK: fxsave64 (%rax)
227// CHECK: encoding: [0x48,0x0f,0xae,0x00]
228          fxsave64 (%rax)
229
230// CHECK: fxrstor64 (%rax)
231// CHECK: encoding: [0x48,0x0f,0xae,0x08]
232          fxrstorq (%rax)
233
234// CHECK: fxrstor64 (%rax)
235// CHECK: encoding: [0x48,0x0f,0xae,0x08]
236          fxrstor64 (%rax)
237
238// CHECK: leave
239// CHECK:  encoding: [0xc9]
240        	leave
241
242// CHECK: leave
243// CHECK:  encoding: [0xc9]
244        	leaveq
245
246// CHECK: flds	(%edi)
247// CHECK:  encoding: [0x67,0xd9,0x07]
248        	flds	(%edi)
249
250// CHECK: filds	(%edi)
251// CHECK:  encoding: [0x67,0xdf,0x07]
252        	filds	(%edi)
253
254// CHECK: flds	(%rdi)
255// CHECK:  encoding: [0xd9,0x07]
256        	flds	(%rdi)
257
258// CHECK: filds	(%rdi)
259// CHECK:  encoding: [0xdf,0x07]
260        	filds	(%rdi)
261
262// CHECK: pmovmskb	%xmm5, %ecx
263// CHECK:  encoding: [0x66,0x0f,0xd7,0xcd]
264        	pmovmskb	%xmm5,%rcx
265
266// CHECK: pinsrw $3, %ecx, %xmm5
267// CHECK: encoding: [0x66,0x0f,0xc4,0xe9,0x03]
268          pinsrw $3, %ecx, %xmm5
269
270// CHECK: pinsrw $3, %ecx, %xmm5
271// CHECK: encoding: [0x66,0x0f,0xc4,0xe9,0x03]
272          pinsrw $3, %rcx, %xmm5
273
274//CHECK:  movq	12(%rdi), %rsi
275//CHECK:  encoding: [0x48,0x8b,0x77,0x0c]
276    movq 	16+0-4(%rdi),%rsi
277
278//CHECK:  movq	12(%rdi), %rsi
279//CHECK:  encoding: [0x48,0x8b,0x77,0x0c]
280    movq 	(16+(0-4))(%rdi),%rsi
281
282//CHECK:  movq	12(%rdi), %rsi
283//CHECK:  encoding: [0x48,0x8b,0x77,0x0c]
284    movq 	(16+0)-1+1-2+2-3+3-4+4-5+5-6+6-(4)(%rdi),%rsi
285
286//CHECK:  movq (,%eiz), %rax
287//CHECK:  encoding: [0x67,0x48,0x8b,0x04,0x25,0x00,0x00,0x00,0x00]
288    movq  (,%eiz), %rax
289