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