xref: /llvm-project/llvm/test/MC/X86/apx/rex2-format-intel.s (revision 3d35b94e3a9abcf5f703267c7653fd6ef39870b6)
1# RUN: llvm-mc -triple x86_64 -show-encoding -x86-asm-syntax=intel -output-asm-variant=1 %s | FileCheck %s
2
3## AddRegFrm
4
5# CHECK: mov	r16d, 1
6# CHECK: encoding: [0xd5,0x10,0xb8,0x01,0x00,0x00,0x00]
7         mov	r16d, 1
8
9## MRMSrcReg
10
11# CHECK: movsxd	rax, r16d
12# CHECK: encoding: [0xd5,0x18,0x63,0xc0]
13         movsxd	rax, r16d
14
15# CHECK: movsxd	r16, eax
16# CHECK: encoding: [0xd5,0x48,0x63,0xc0]
17         movsxd	r16, eax
18
19# CHECK: movsxd	r17, r16d
20# CHECK: encoding: [0xd5,0x58,0x63,0xc8]
21         movsxd	r17, r16d
22
23# CHECK: popcnt r17d, r16d
24# CHECK: encoding: [0xf3,0xd5,0xd0,0xb8,0xc8]
25         popcnt r17d, r16d
26
27## MRMSrcRegCC
28
29# CHECK: cmovl	eax, r16d
30# CHECK: encoding: [0xd5,0x90,0x4c,0xc0]
31         cmovl	eax, r16d
32
33# CHECK: cmovl	r16d, eax
34# CHECK: encoding: [0xd5,0xc0,0x4c,0xc0]
35         cmovl	r16d, eax
36
37# CHECK: cmovl	r17d, r16d
38# CHECK: encoding: [0xd5,0xd0,0x4c,0xc8]
39         cmovl	r17d, r16d
40
41## MRMSrcMem
42
43# CHECK: imul	ebx, dword ptr [r16 + rax]
44# CHECK: encoding: [0xd5,0x90,0xaf,0x1c,0x00]
45         imul	ebx, dword ptr [r16 + rax]
46
47# CHECK: imul	ebx, dword ptr [rax + r16]
48# CHECK: encoding: [0xd5,0xa0,0xaf,0x1c,0x00]
49         imul	ebx, dword ptr [rax + r16]
50
51# CHECK: imul	r16d, dword ptr [rax + rbx]
52# CHECK: encoding: [0xd5,0xc0,0xaf,0x04,0x18]
53         imul	r16d, dword ptr [rax + rbx]
54
55# CHECK: imul	eax, dword ptr [r16 + r17]
56# CHECK: encoding: [0xd5,0xb0,0xaf,0x04,0x08]
57         imul	eax, dword ptr [r16 + r17]
58
59# CHECK: imul	r17d, dword ptr [rax + r16]
60# CHECK: encoding: [0xd5,0xe0,0xaf,0x0c,0x00]
61         imul	r17d, dword ptr [rax + r16]
62
63# CHECK: imul	r17d, dword ptr [r16 + rax]
64# CHECK: encoding: [0xd5,0xd0,0xaf,0x0c,0x00]
65         imul	r17d, dword ptr [r16 + rax]
66
67# CHECK: imul	r18d, dword ptr [r16 + r17]
68# CHECK: encoding: [0xd5,0xf0,0xaf,0x14,0x08]
69         imul	r18d, dword ptr [r16 + r17]
70
71## MRMSrcMemCC
72
73# CHECK: cmovl	ebx, dword ptr [r16 + rax]
74# CHECK: encoding: [0xd5,0x90,0x4c,0x1c,0x00]
75         cmovl	ebx, dword ptr [r16 + rax]
76
77# CHECK: cmovl	ebx, dword ptr [rax + r16]
78# CHECK: encoding: [0xd5,0xa0,0x4c,0x1c,0x00]
79         cmovl	ebx, dword ptr [rax + r16]
80
81# CHECK: cmovl	r16d, dword ptr [rax + rbx]
82# CHECK: encoding: [0xd5,0xc0,0x4c,0x04,0x18]
83         cmovl	r16d, dword ptr [rax + rbx]
84
85# CHECK: cmovl	eax, dword ptr [r16 + r17]
86# CHECK: encoding: [0xd5,0xb0,0x4c,0x04,0x08]
87         cmovl	eax, dword ptr [r16 + r17]
88
89# CHECK: cmovl	r17d, dword ptr [rax + r16]
90# CHECK: encoding: [0xd5,0xe0,0x4c,0x0c,0x00]
91         cmovl	r17d, dword ptr [rax + r16]
92
93# CHECK: cmovl	r17d, dword ptr [r16 + rax]
94# CHECK: encoding: [0xd5,0xd0,0x4c,0x0c,0x00]
95         cmovl	r17d, dword ptr [r16 + rax]
96
97# CHECK: cmovl	r18d, dword ptr [r16 + r17]
98# CHECK: encoding: [0xd5,0xf0,0x4c,0x14,0x08]
99         cmovl	r18d, dword ptr [r16 + r17]
100
101## MRMDestReg
102
103# CHECK: mov	r16d, eax
104# CHECK: encoding: [0xd5,0x10,0x89,0xc0]
105         mov	r16d, eax
106
107# CHECK: mov	eax, r16d
108# CHECK: encoding: [0xd5,0x40,0x89,0xc0]
109         mov	eax, r16d
110
111# CHECK: mov	r17d, r16d
112# CHECK: encoding: [0xd5,0x50,0x89,0xc1]
113         mov	r17d, r16d
114
115## MRMDestMem
116
117# CHECK: mov	dword ptr [r16 + rax], ebx
118# CHECK: encoding: [0xd5,0x10,0x89,0x1c,0x00]
119         mov	dword ptr [r16 + rax], ebx
120
121# CHECK: mov	dword ptr [rax + r16], ebx
122# CHECK: encoding: [0xd5,0x20,0x89,0x1c,0x00]
123         mov	dword ptr [rax + r16], ebx
124
125# CHECK: mov	dword ptr [rax + rbx], r16d
126# CHECK: encoding: [0xd5,0x40,0x89,0x04,0x18]
127         mov	dword ptr [rax + rbx], r16d
128
129# CHECK: mov	dword ptr [r16 + r17], eax
130# CHECK: encoding: [0xd5,0x30,0x89,0x04,0x08]
131         mov	dword ptr [r16 + r17], eax
132
133# CHECK: mov	dword ptr [rax + r16], r17d
134# CHECK: encoding: [0xd5,0x60,0x89,0x0c,0x00]
135         mov	dword ptr [rax + r16], r17d
136
137# CHECK: mov	dword ptr [r16 + rax], r17d
138# CHECK: encoding: [0xd5,0x50,0x89,0x0c,0x00]
139         mov	dword ptr [r16 + rax], r17d
140
141# CHECK: mov	dword ptr [r16 + r17], r18d
142# CHECK: encoding: [0xd5,0x70,0x89,0x14,0x08]
143         mov	dword ptr [r16 + r17], r18d
144
145# CHECK: mov    byte ptr [r16 + r14], bpl
146# CHECK: encoding: [0xd5,0x12,0x88,0x2c,0x30]
147         mov    byte ptr [r16 + r14], bpl
148
149## MRMXmCC
150
151# CHECK: sete	byte ptr [rax + r16]
152# CHECK: encoding: [0xd5,0xa0,0x94,0x04,0x00]
153         sete	byte ptr [rax + r16]
154
155# CHECK: sete	byte ptr [r16 + rax]
156# CHECK: encoding: [0xd5,0x90,0x94,0x04,0x00]
157         sete	byte ptr [r16 + rax]
158
159# CHECK: sete	byte ptr [r16 + r17]
160# CHECK: encoding: [0xd5,0xb0,0x94,0x04,0x08]
161         sete	byte ptr [r16 + r17]
162
163## MRMXm
164
165# CHECK: nop	dword ptr [rax + r16]
166# CHECK: encoding: [0xd5,0xa0,0x1f,0x04,0x00]
167         nop	dword ptr [rax + r16]
168
169# CHECK: nop	dword ptr [r16 + rax]
170# CHECK: encoding: [0xd5,0x90,0x1f,0x04,0x00]
171         nop	dword ptr [r16 + rax]
172
173# CHECK: nop	dword ptr [r16 + r17]
174# CHECK: encoding: [0xd5,0xb0,0x1f,0x04,0x08]
175         nop	dword ptr [r16 + r17]
176
177## MRM0m
178
179# CHECK: inc	dword ptr [rax + r16]
180# CHECK: encoding: [0xd5,0x20,0xff,0x04,0x00]
181         inc	dword ptr [rax + r16]
182
183# CHECK: inc	dword ptr [r16 + rax]
184# CHECK: encoding: [0xd5,0x10,0xff,0x04,0x00]
185         inc	dword ptr [r16 + rax]
186
187# CHECK: inc	dword ptr [r16 + r17]
188# CHECK: encoding: [0xd5,0x30,0xff,0x04,0x08]
189         inc	dword ptr [r16 + r17]
190
191## MRM1m
192
193# CHECK: dec	dword ptr [rax + r16]
194# CHECK: encoding: [0xd5,0x20,0xff,0x0c,0x00]
195         dec	dword ptr [rax + r16]
196
197# CHECK: dec	dword ptr [r16 + rax]
198# CHECK: encoding: [0xd5,0x10,0xff,0x0c,0x00]
199         dec	dword ptr [r16 + rax]
200
201# CHECK: dec	dword ptr [r16 + r17]
202# CHECK: encoding: [0xd5,0x30,0xff,0x0c,0x08]
203         dec	dword ptr [r16 + r17]
204
205## MRM2m
206
207# CHECK: not	dword ptr [rax + r16]
208# CHECK: encoding: [0xd5,0x20,0xf7,0x14,0x00]
209         not	dword ptr [rax + r16]
210
211# CHECK: not	dword ptr [r16 + rax]
212# CHECK: encoding: [0xd5,0x10,0xf7,0x14,0x00]
213         not	dword ptr [r16 + rax]
214
215# CHECK: not	dword ptr [r16 + r17]
216# CHECK: encoding: [0xd5,0x30,0xf7,0x14,0x08]
217         not	dword ptr [r16 + r17]
218
219## MRM3m
220
221# CHECK: neg	dword ptr [rax + r16]
222# CHECK: encoding: [0xd5,0x20,0xf7,0x1c,0x00]
223         neg	dword ptr [rax + r16]
224
225# CHECK: neg	dword ptr [r16 + rax]
226# CHECK: encoding: [0xd5,0x10,0xf7,0x1c,0x00]
227         neg	dword ptr [r16 + rax]
228
229# CHECK: neg	dword ptr [r16 + r17]
230# CHECK: encoding: [0xd5,0x30,0xf7,0x1c,0x08]
231         neg	dword ptr [r16 + r17]
232
233## MRM4m
234
235# CHECK: mul	dword ptr [rax + r16]
236# CHECK: encoding: [0xd5,0x20,0xf7,0x24,0x00]
237         mul	dword ptr [rax + r16]
238
239# CHECK: mul	dword ptr [r16 + rax]
240# CHECK: encoding: [0xd5,0x10,0xf7,0x24,0x00]
241         mul	dword ptr [r16 + rax]
242
243# CHECK: mul	dword ptr [r16 + r17]
244# CHECK: encoding: [0xd5,0x30,0xf7,0x24,0x08]
245         mul	dword ptr [r16 + r17]
246
247## MRM5m
248
249# CHECK: imul	dword ptr [rax + r16]
250# CHECK: encoding: [0xd5,0x20,0xf7,0x2c,0x00]
251         imul	dword ptr [rax + r16]
252
253# CHECK: imul	dword ptr [r16 + rax]
254# CHECK: encoding: [0xd5,0x10,0xf7,0x2c,0x00]
255         imul	dword ptr [r16 + rax]
256
257# CHECK: imul	dword ptr [r16 + r17]
258# CHECK: encoding: [0xd5,0x30,0xf7,0x2c,0x08]
259         imul	dword ptr [r16 + r17]
260
261## MRM6m
262
263# CHECK: div	dword ptr [rax + r16]
264# CHECK: encoding: [0xd5,0x20,0xf7,0x34,0x00]
265         div	dword ptr [rax + r16]
266
267# CHECK: div	dword ptr [r16 + rax]
268# CHECK: encoding: [0xd5,0x10,0xf7,0x34,0x00]
269         div	dword ptr [r16 + rax]
270
271# CHECK: div	dword ptr [r16 + r17]
272# CHECK: encoding: [0xd5,0x30,0xf7,0x34,0x08]
273         div	dword ptr [r16 + r17]
274
275## MRM7m
276
277# CHECK: idiv	dword ptr [rax + r16]
278# CHECK: encoding: [0xd5,0x20,0xf7,0x3c,0x00]
279         idiv	dword ptr [rax + r16]
280
281# CHECK: idiv	dword ptr [r16 + rax]
282# CHECK: encoding: [0xd5,0x10,0xf7,0x3c,0x00]
283         idiv	dword ptr [r16 + rax]
284
285# CHECK: idiv	dword ptr [r16 + r17]
286# CHECK: encoding: [0xd5,0x30,0xf7,0x3c,0x08]
287         idiv	dword ptr [r16 + r17]
288
289## MRMXrCC
290
291# CHECK: sete	r16b
292# CHECK: encoding: [0xd5,0x90,0x94,0xc0]
293         sete	r16b
294
295## MRMXr
296
297# CHECK: nop	r16d
298# CHECK: encoding: [0xd5,0x90,0x1f,0xc0]
299         nop	r16d
300
301## MRM0r
302
303# CHECK: inc	r16d
304# CHECK: encoding: [0xd5,0x10,0xff,0xc0]
305         inc	r16d
306
307## MRM1r
308
309# CHECK: dec	r16d
310# CHECK: encoding: [0xd5,0x10,0xff,0xc8]
311         dec	r16d
312
313## MRM2r
314
315# CHECK: not	r16d
316# CHECK: encoding: [0xd5,0x10,0xf7,0xd0]
317         not	r16d
318
319## MRM3r
320
321# CHECK: neg	r16d
322# CHECK: encoding: [0xd5,0x10,0xf7,0xd8]
323         neg	r16d
324
325## MRM4r
326
327# CHECK: mul	r16d
328# CHECK: encoding: [0xd5,0x10,0xf7,0xe0]
329         mul	r16d
330
331## MRM5r
332
333# CHECK: imul	r16d
334# CHECK: encoding: [0xd5,0x10,0xf7,0xe8]
335         imul	r16d
336
337## MRM6r
338
339# CHECK: div	r16d
340# CHECK: encoding: [0xd5,0x10,0xf7,0xf0]
341         div	r16d
342
343## MRM7r
344
345# CHECK: idiv	r16d
346# CHECK: encoding: [0xd5,0x10,0xf7,0xf8]
347         idiv	r16d
348