xref: /llvm-project/llvm/test/MC/X86/apx/bmi2-intel.s (revision d124b0224241f58847f06eb588685dc88bb627a0)
1# RUN: llvm-mc -triple x86_64 -x86-asm-syntax=intel -output-asm-variant=1 --show-encoding %s | FileCheck %s
2
3## mulx
4
5# CHECK: {evex}	mulx	r10d, edx, ecx
6# CHECK: encoding: [0x62,0x72,0x6f,0x08,0xf6,0xd1]
7         {evex}	mulx	r10d, edx, ecx
8
9# CHECK: {evex}	mulx	r11, r15, r9
10# CHECK: encoding: [0x62,0x52,0x87,0x08,0xf6,0xd9]
11         {evex}	mulx	r11, r15, r9
12
13# CHECK: {evex}	mulx	edx, ecx, dword ptr [rax + 4*rbx + 123]
14# CHECK: encoding: [0x62,0xf2,0x77,0x08,0xf6,0x54,0x98,0x7b]
15         {evex}	mulx	edx, ecx, dword ptr [rax + 4*rbx + 123]
16
17# CHECK: {evex}	mulx	r15, r9, qword ptr [rax + 4*rbx + 123]
18# CHECK: encoding: [0x62,0x72,0xb7,0x08,0xf6,0x7c,0x98,0x7b]
19         {evex}	mulx	r15, r9, qword ptr [rax + 4*rbx + 123]
20
21# CHECK: mulx	r26d, r22d, r18d
22# CHECK: encoding: [0x62,0x6a,0x4f,0x00,0xf6,0xd2]
23         mulx	r26d, r22d, r18d
24
25# CHECK: mulx	r27, r23, r19
26# CHECK: encoding: [0x62,0x6a,0xc7,0x00,0xf6,0xdb]
27         mulx	r27, r23, r19
28
29# CHECK: mulx	r22d, r18d, dword ptr [r28 + 4*r29 + 291]
30# CHECK: encoding: [0x62,0x8a,0x6b,0x00,0xf6,0xb4,0xac,0x23,0x01,0x00,0x00]
31         mulx	r22d, r18d, dword ptr [r28 + 4*r29 + 291]
32
33# CHECK: mulx	r23, r19, qword ptr [r28 + 4*r29 + 291]
34# CHECK: encoding: [0x62,0x8a,0xe3,0x00,0xf6,0xbc,0xac,0x23,0x01,0x00,0x00]
35         mulx	r23, r19, qword ptr [r28 + 4*r29 + 291]
36
37## pdep
38
39# CHECK: {evex}	pdep	r10d, edx, ecx
40# CHECK: encoding: [0x62,0x72,0x6f,0x08,0xf5,0xd1]
41         {evex}	pdep	r10d, edx, ecx
42
43# CHECK: {evex}	pdep	r11, r15, r9
44# CHECK: encoding: [0x62,0x52,0x87,0x08,0xf5,0xd9]
45         {evex}	pdep	r11, r15, r9
46
47# CHECK: {evex}	pdep	edx, ecx, dword ptr [rax + 4*rbx + 123]
48# CHECK: encoding: [0x62,0xf2,0x77,0x08,0xf5,0x54,0x98,0x7b]
49         {evex}	pdep	edx, ecx, dword ptr [rax + 4*rbx + 123]
50
51# CHECK: {evex}	pdep	r15, r9, qword ptr [rax + 4*rbx + 123]
52# CHECK: encoding: [0x62,0x72,0xb7,0x08,0xf5,0x7c,0x98,0x7b]
53         {evex}	pdep	r15, r9, qword ptr [rax + 4*rbx + 123]
54
55# CHECK: pdep	r26d, r22d, r18d
56# CHECK: encoding: [0x62,0x6a,0x4f,0x00,0xf5,0xd2]
57         pdep	r26d, r22d, r18d
58
59# CHECK: pdep	r27, r23, r19
60# CHECK: encoding: [0x62,0x6a,0xc7,0x00,0xf5,0xdb]
61         pdep	r27, r23, r19
62
63# CHECK: pdep	r22d, r18d, dword ptr [r28 + 4*r29 + 291]
64# CHECK: encoding: [0x62,0x8a,0x6b,0x00,0xf5,0xb4,0xac,0x23,0x01,0x00,0x00]
65         pdep	r22d, r18d, dword ptr [r28 + 4*r29 + 291]
66
67# CHECK: pdep	r23, r19, qword ptr [r28 + 4*r29 + 291]
68# CHECK: encoding: [0x62,0x8a,0xe3,0x00,0xf5,0xbc,0xac,0x23,0x01,0x00,0x00]
69         pdep	r23, r19, qword ptr [r28 + 4*r29 + 291]
70
71## pext
72
73# CHECK: {evex}	pext	r10d, edx, ecx
74# CHECK: encoding: [0x62,0x72,0x6e,0x08,0xf5,0xd1]
75         {evex}	pext	r10d, edx, ecx
76
77# CHECK: {evex}	pext	r11, r15, r9
78# CHECK: encoding: [0x62,0x52,0x86,0x08,0xf5,0xd9]
79         {evex}	pext	r11, r15, r9
80
81# CHECK: {evex}	pext	edx, ecx, dword ptr [rax + 4*rbx + 123]
82# CHECK: encoding: [0x62,0xf2,0x76,0x08,0xf5,0x54,0x98,0x7b]
83         {evex}	pext	edx, ecx, dword ptr [rax + 4*rbx + 123]
84
85# CHECK: {evex}	pext	r15, r9, qword ptr [rax + 4*rbx + 123]
86# CHECK: encoding: [0x62,0x72,0xb6,0x08,0xf5,0x7c,0x98,0x7b]
87         {evex}	pext	r15, r9, qword ptr [rax + 4*rbx + 123]
88
89# CHECK: pext	r26d, r22d, r18d
90# CHECK: encoding: [0x62,0x6a,0x4e,0x00,0xf5,0xd2]
91         pext	r26d, r22d, r18d
92
93# CHECK: pext	r27, r23, r19
94# CHECK: encoding: [0x62,0x6a,0xc6,0x00,0xf5,0xdb]
95         pext	r27, r23, r19
96
97# CHECK: pext	r22d, r18d, dword ptr [r28 + 4*r29 + 291]
98# CHECK: encoding: [0x62,0x8a,0x6a,0x00,0xf5,0xb4,0xac,0x23,0x01,0x00,0x00]
99         pext	r22d, r18d, dword ptr [r28 + 4*r29 + 291]
100
101# CHECK: pext	r23, r19, qword ptr [r28 + 4*r29 + 291]
102# CHECK: encoding: [0x62,0x8a,0xe2,0x00,0xf5,0xbc,0xac,0x23,0x01,0x00,0x00]
103         pext	r23, r19, qword ptr [r28 + 4*r29 + 291]
104
105## rorx
106
107# CHECK: {evex}	rorx	edx, ecx, 123
108# CHECK: encoding: [0x62,0xf3,0x7f,0x08,0xf0,0xd1,0x7b]
109         {evex}	rorx	edx, ecx, 123
110
111# CHECK: {evex}	rorx	r15, r9, 123
112# CHECK: encoding: [0x62,0x53,0xff,0x08,0xf0,0xf9,0x7b]
113         {evex}	rorx	r15, r9, 123
114
115# CHECK: {evex}	rorx	ecx, dword ptr [rax + 4*rbx + 123], 123
116# CHECK: encoding: [0x62,0xf3,0x7f,0x08,0xf0,0x4c,0x98,0x7b,0x7b]
117         {evex}	rorx	ecx, dword ptr [rax + 4*rbx + 123], 123
118
119# CHECK: {evex}	rorx	r9, qword ptr [rax + 4*rbx + 123], 123
120# CHECK: encoding: [0x62,0x73,0xff,0x08,0xf0,0x4c,0x98,0x7b,0x7b]
121         {evex}	rorx	r9, qword ptr [rax + 4*rbx + 123], 123
122
123# CHECK: rorx	r22d, r18d, 123
124# CHECK: encoding: [0x62,0xeb,0x7f,0x08,0xf0,0xf2,0x7b]
125         rorx	r22d, r18d, 123
126
127# CHECK: rorx	r23, r19, 123
128# CHECK: encoding: [0x62,0xeb,0xff,0x08,0xf0,0xfb,0x7b]
129         rorx	r23, r19, 123
130
131# CHECK: rorx	r18d, dword ptr [r28 + 4*r29 + 291], 123
132# CHECK: encoding: [0x62,0x8b,0x7b,0x08,0xf0,0x94,0xac,0x23,0x01,0x00,0x00,0x7b]
133         rorx	r18d, dword ptr [r28 + 4*r29 + 291], 123
134
135# CHECK: rorx	r19, qword ptr [r28 + 4*r29 + 291], 123
136# CHECK: encoding: [0x62,0x8b,0xfb,0x08,0xf0,0x9c,0xac,0x23,0x01,0x00,0x00,0x7b]
137         rorx	r19, qword ptr [r28 + 4*r29 + 291], 123
138
139## sarx
140
141# CHECK: {evex}	sarx	r10d, edx, ecx
142# CHECK: encoding: [0x62,0x72,0x76,0x08,0xf7,0xd2]
143         {evex}	sarx	r10d, edx, ecx
144
145# CHECK: {evex}	sarx	edx, dword ptr [rax + 4*rbx + 123], ecx
146# CHECK: encoding: [0x62,0xf2,0x76,0x08,0xf7,0x54,0x98,0x7b]
147         {evex}	sarx	edx, dword ptr [rax + 4*rbx + 123], ecx
148
149# CHECK: {evex}	sarx	r11, r15, r9
150# CHECK: encoding: [0x62,0x52,0xb6,0x08,0xf7,0xdf]
151         {evex}	sarx	r11, r15, r9
152
153# CHECK: {evex}	sarx	r15, qword ptr [rax + 4*rbx + 123], r9
154# CHECK: encoding: [0x62,0x72,0xb6,0x08,0xf7,0x7c,0x98,0x7b]
155         {evex}	sarx	r15, qword ptr [rax + 4*rbx + 123], r9
156
157# CHECK: sarx	r26d, r22d, r18d
158# CHECK: encoding: [0x62,0x6a,0x6e,0x00,0xf7,0xd6]
159         sarx	r26d, r22d, r18d
160
161# CHECK: sarx	r22d, dword ptr [r28 + 4*r29 + 291], r18d
162# CHECK: encoding: [0x62,0x8a,0x6a,0x00,0xf7,0xb4,0xac,0x23,0x01,0x00,0x00]
163         sarx	r22d, dword ptr [r28 + 4*r29 + 291], r18d
164
165# CHECK: sarx	r27, r23, r19
166# CHECK: encoding: [0x62,0x6a,0xe6,0x00,0xf7,0xdf]
167         sarx	r27, r23, r19
168
169# CHECK: sarx	r23, qword ptr [r28 + 4*r29 + 291], r19
170# CHECK: encoding: [0x62,0x8a,0xe2,0x00,0xf7,0xbc,0xac,0x23,0x01,0x00,0x00]
171         sarx	r23, qword ptr [r28 + 4*r29 + 291], r19
172
173## shlx
174
175# CHECK: {evex}	shlx	r10d, edx, ecx
176# CHECK: encoding: [0x62,0x72,0x75,0x08,0xf7,0xd2]
177         {evex}	shlx	r10d, edx, ecx
178
179# CHECK: {evex}	shlx	edx, dword ptr [rax + 4*rbx + 123], ecx
180# CHECK: encoding: [0x62,0xf2,0x75,0x08,0xf7,0x54,0x98,0x7b]
181         {evex}	shlx	edx, dword ptr [rax + 4*rbx + 123], ecx
182
183# CHECK: {evex}	shlx	r11, r15, r9
184# CHECK: encoding: [0x62,0x52,0xb5,0x08,0xf7,0xdf]
185         {evex}	shlx	r11, r15, r9
186
187# CHECK: {evex}	shlx	r15, qword ptr [rax + 4*rbx + 123], r9
188# CHECK: encoding: [0x62,0x72,0xb5,0x08,0xf7,0x7c,0x98,0x7b]
189         {evex}	shlx	r15, qword ptr [rax + 4*rbx + 123], r9
190
191# CHECK: shlx	r26d, r22d, r18d
192# CHECK: encoding: [0x62,0x6a,0x6d,0x00,0xf7,0xd6]
193         shlx	r26d, r22d, r18d
194
195# CHECK: shlx	r22d, dword ptr [r28 + 4*r29 + 291], r18d
196# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xf7,0xb4,0xac,0x23,0x01,0x00,0x00]
197         shlx	r22d, dword ptr [r28 + 4*r29 + 291], r18d
198
199# CHECK: shlx	r27, r23, r19
200# CHECK: encoding: [0x62,0x6a,0xe5,0x00,0xf7,0xdf]
201         shlx	r27, r23, r19
202
203# CHECK: shlx	r23, qword ptr [r28 + 4*r29 + 291], r19
204# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xf7,0xbc,0xac,0x23,0x01,0x00,0x00]
205         shlx	r23, qword ptr [r28 + 4*r29 + 291], r19
206
207## shrx
208
209# CHECK: {evex}	shrx	r10d, edx, ecx
210# CHECK: encoding: [0x62,0x72,0x77,0x08,0xf7,0xd2]
211         {evex}	shrx	r10d, edx, ecx
212
213# CHECK: {evex}	shrx	edx, dword ptr [rax + 4*rbx + 123], ecx
214# CHECK: encoding: [0x62,0xf2,0x77,0x08,0xf7,0x54,0x98,0x7b]
215         {evex}	shrx	edx, dword ptr [rax + 4*rbx + 123], ecx
216
217# CHECK: {evex}	shrx	r11, r15, r9
218# CHECK: encoding: [0x62,0x52,0xb7,0x08,0xf7,0xdf]
219         {evex}	shrx	r11, r15, r9
220
221# CHECK: {evex}	shrx	r15, qword ptr [rax + 4*rbx + 123], r9
222# CHECK: encoding: [0x62,0x72,0xb7,0x08,0xf7,0x7c,0x98,0x7b]
223         {evex}	shrx	r15, qword ptr [rax + 4*rbx + 123], r9
224
225# CHECK: shrx	r26d, r22d, r18d
226# CHECK: encoding: [0x62,0x6a,0x6f,0x00,0xf7,0xd6]
227         shrx	r26d, r22d, r18d
228
229# CHECK: shrx	r22d, dword ptr [r28 + 4*r29 + 291], r18d
230# CHECK: encoding: [0x62,0x8a,0x6b,0x00,0xf7,0xb4,0xac,0x23,0x01,0x00,0x00]
231         shrx	r22d, dword ptr [r28 + 4*r29 + 291], r18d
232
233# CHECK: shrx	r27, r23, r19
234# CHECK: encoding: [0x62,0x6a,0xe7,0x00,0xf7,0xdf]
235         shrx	r27, r23, r19
236
237# CHECK: shrx	r23, qword ptr [r28 + 4*r29 + 291], r19
238# CHECK: encoding: [0x62,0x8a,0xe3,0x00,0xf7,0xbc,0xac,0x23,0x01,0x00,0x00]
239         shrx	r23, qword ptr [r28 + 4*r29 + 291], r19
240