xref: /llvm-project/llvm/test/MC/X86/apx/imul-att.s (revision 4daea501c4fc969bc6d8baafe646487ae1881aab)
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-64: error:
5# ERROR-NOT: error:
6# CHECK: {evex}	imulw	$123, %dx, %dx
7# CHECK: encoding: [0x62,0xf4,0x7d,0x08,0x6b,0xd2,0x7b]
8         {evex}	imulw	$123, %dx, %dx
9# CHECK: {nf}	imulw	$123, %dx, %dx
10# CHECK: encoding: [0x62,0xf4,0x7d,0x0c,0x6b,0xd2,0x7b]
11         {nf}	imulw	$123, %dx, %dx
12# CHECK: {evex}	imull	$123, %ecx, %ecx
13# CHECK: encoding: [0x62,0xf4,0x7c,0x08,0x6b,0xc9,0x7b]
14         {evex}	imull	$123, %ecx, %ecx
15# CHECK: {nf}	imull	$123, %ecx, %ecx
16# CHECK: encoding: [0x62,0xf4,0x7c,0x0c,0x6b,0xc9,0x7b]
17         {nf}	imull	$123, %ecx, %ecx
18# CHECK: {evex}	imulq	$123, %r9, %r9
19# CHECK: encoding: [0x62,0x54,0xfc,0x08,0x6b,0xc9,0x7b]
20         {evex}	imulq	$123, %r9, %r9
21# CHECK: {nf}	imulq	$123, %r9, %r9
22# CHECK: encoding: [0x62,0x54,0xfc,0x0c,0x6b,0xc9,0x7b]
23         {nf}	imulq	$123, %r9, %r9
24# CHECK: {evex}	imulw	$123, 291(%r8,%rax,4), %dx
25# CHECK: encoding: [0x62,0xd4,0x7d,0x08,0x6b,0x94,0x80,0x23,0x01,0x00,0x00,0x7b]
26         {evex}	imulw	$123, 291(%r8,%rax,4), %dx
27# CHECK: {nf}	imulw	$123, 291(%r8,%rax,4), %dx
28# CHECK: encoding: [0x62,0xd4,0x7d,0x0c,0x6b,0x94,0x80,0x23,0x01,0x00,0x00,0x7b]
29         {nf}	imulw	$123, 291(%r8,%rax,4), %dx
30# CHECK: {evex}	imull	$123, 291(%r8,%rax,4), %ecx
31# CHECK: encoding: [0x62,0xd4,0x7c,0x08,0x6b,0x8c,0x80,0x23,0x01,0x00,0x00,0x7b]
32         {evex}	imull	$123, 291(%r8,%rax,4), %ecx
33# CHECK: {nf}	imull	$123, 291(%r8,%rax,4), %ecx
34# CHECK: encoding: [0x62,0xd4,0x7c,0x0c,0x6b,0x8c,0x80,0x23,0x01,0x00,0x00,0x7b]
35         {nf}	imull	$123, 291(%r8,%rax,4), %ecx
36# CHECK: {evex}	imulq	$123, 291(%r8,%rax,4), %r9
37# CHECK: encoding: [0x62,0x54,0xfc,0x08,0x6b,0x8c,0x80,0x23,0x01,0x00,0x00,0x7b]
38         {evex}	imulq	$123, 291(%r8,%rax,4), %r9
39# CHECK: {nf}	imulq	$123, 291(%r8,%rax,4), %r9
40# CHECK: encoding: [0x62,0x54,0xfc,0x0c,0x6b,0x8c,0x80,0x23,0x01,0x00,0x00,0x7b]
41         {nf}	imulq	$123, 291(%r8,%rax,4), %r9
42# CHECK: {evex}	imulw	$1234, %dx, %dx
43# CHECK: encoding: [0x62,0xf4,0x7d,0x08,0x69,0xd2,0xd2,0x04]
44         {evex}	imulw	$1234, %dx, %dx
45# CHECK: {nf}	imulw	$1234, %dx, %dx
46# CHECK: encoding: [0x62,0xf4,0x7d,0x0c,0x69,0xd2,0xd2,0x04]
47         {nf}	imulw	$1234, %dx, %dx
48# CHECK: {evex}	imulw	$1234, 291(%r8,%rax,4), %dx
49# CHECK: encoding: [0x62,0xd4,0x7d,0x08,0x69,0x94,0x80,0x23,0x01,0x00,0x00,0xd2,0x04]
50         {evex}	imulw	$1234, 291(%r8,%rax,4), %dx
51# CHECK: {nf}	imulw	$1234, 291(%r8,%rax,4), %dx
52# CHECK: encoding: [0x62,0xd4,0x7d,0x0c,0x69,0x94,0x80,0x23,0x01,0x00,0x00,0xd2,0x04]
53         {nf}	imulw	$1234, 291(%r8,%rax,4), %dx
54# CHECK: {evex}	imull	$123456, %ecx, %ecx
55# CHECK: encoding: [0x62,0xf4,0x7c,0x08,0x69,0xc9,0x40,0xe2,0x01,0x00]
56         {evex}	imull	$123456, %ecx, %ecx
57# CHECK: {nf}	imull	$123456, %ecx, %ecx
58# CHECK: encoding: [0x62,0xf4,0x7c,0x0c,0x69,0xc9,0x40,0xe2,0x01,0x00]
59         {nf}	imull	$123456, %ecx, %ecx
60# CHECK: {evex}	imulq	$123456, %r9, %r9
61# CHECK: encoding: [0x62,0x54,0xfc,0x08,0x69,0xc9,0x40,0xe2,0x01,0x00]
62         {evex}	imulq	$123456, %r9, %r9
63# CHECK: {nf}	imulq	$123456, %r9, %r9
64# CHECK: encoding: [0x62,0x54,0xfc,0x0c,0x69,0xc9,0x40,0xe2,0x01,0x00]
65         {nf}	imulq	$123456, %r9, %r9
66# CHECK: {evex}	imull	$123456, 291(%r8,%rax,4), %ecx
67# CHECK: encoding: [0x62,0xd4,0x7c,0x08,0x69,0x8c,0x80,0x23,0x01,0x00,0x00,0x40,0xe2,0x01,0x00]
68         {evex}	imull	$123456, 291(%r8,%rax,4), %ecx
69# CHECK: {nf}	imull	$123456, 291(%r8,%rax,4), %ecx
70# CHECK: encoding: [0x62,0xd4,0x7c,0x0c,0x69,0x8c,0x80,0x23,0x01,0x00,0x00,0x40,0xe2,0x01,0x00]
71         {nf}	imull	$123456, 291(%r8,%rax,4), %ecx
72# CHECK: {evex}	imulq	$123456, 291(%r8,%rax,4), %r9
73# CHECK: encoding: [0x62,0x54,0xfc,0x08,0x69,0x8c,0x80,0x23,0x01,0x00,0x00,0x40,0xe2,0x01,0x00]
74         {evex}	imulq	$123456, 291(%r8,%rax,4), %r9
75# CHECK: {nf}	imulq	$123456, 291(%r8,%rax,4), %r9
76# CHECK: encoding: [0x62,0x54,0xfc,0x0c,0x69,0x8c,0x80,0x23,0x01,0x00,0x00,0x40,0xe2,0x01,0x00]
77         {nf}	imulq	$123456, 291(%r8,%rax,4), %r9
78# CHECK: {evex}	imulb	%bl
79# CHECK: encoding: [0x62,0xf4,0x7c,0x08,0xf6,0xeb]
80         {evex}	imulb	%bl
81# CHECK: {nf}	imulb	%bl
82# CHECK: encoding: [0x62,0xf4,0x7c,0x0c,0xf6,0xeb]
83         {nf}	imulb	%bl
84# CHECK: {evex}	imulw	%dx
85# CHECK: encoding: [0x62,0xf4,0x7d,0x08,0xf7,0xea]
86         {evex}	imulw	%dx
87# CHECK: {nf}	imulw	%dx
88# CHECK: encoding: [0x62,0xf4,0x7d,0x0c,0xf7,0xea]
89         {nf}	imulw	%dx
90# CHECK: {evex}	imulw	%dx, %dx
91# CHECK: encoding: [0x62,0xf4,0x7d,0x08,0xaf,0xd2]
92         {evex}	imulw	%dx, %dx
93# CHECK: {nf}	imulw	%dx, %dx
94# CHECK: encoding: [0x62,0xf4,0x7d,0x0c,0xaf,0xd2]
95         {nf}	imulw	%dx, %dx
96# CHECK: imulw	%dx, %dx, %dx
97# CHECK: encoding: [0x62,0xf4,0x6d,0x18,0xaf,0xd2]
98         imulw	%dx, %dx, %dx
99# CHECK: {nf}	imulw	%dx, %dx, %dx
100# CHECK: encoding: [0x62,0xf4,0x6d,0x1c,0xaf,0xd2]
101         {nf}	imulw	%dx, %dx, %dx
102# CHECK: {evex}	imull	%ecx
103# CHECK: encoding: [0x62,0xf4,0x7c,0x08,0xf7,0xe9]
104         {evex}	imull	%ecx
105# CHECK: {nf}	imull	%ecx
106# CHECK: encoding: [0x62,0xf4,0x7c,0x0c,0xf7,0xe9]
107         {nf}	imull	%ecx
108# CHECK: {evex}	imull	%ecx, %ecx
109# CHECK: encoding: [0x62,0xf4,0x7c,0x08,0xaf,0xc9]
110         {evex}	imull	%ecx, %ecx
111# CHECK: {nf}	imull	%ecx, %ecx
112# CHECK: encoding: [0x62,0xf4,0x7c,0x0c,0xaf,0xc9]
113         {nf}	imull	%ecx, %ecx
114# CHECK: imull	%ecx, %ecx, %ecx
115# CHECK: encoding: [0x62,0xf4,0x74,0x18,0xaf,0xc9]
116         imull	%ecx, %ecx, %ecx
117# CHECK: {nf}	imull	%ecx, %ecx, %ecx
118# CHECK: encoding: [0x62,0xf4,0x74,0x1c,0xaf,0xc9]
119         {nf}	imull	%ecx, %ecx, %ecx
120# CHECK: {evex}	imulq	%r9
121# CHECK: encoding: [0x62,0xd4,0xfc,0x08,0xf7,0xe9]
122         {evex}	imulq	%r9
123# CHECK: {nf}	imulq	%r9
124# CHECK: encoding: [0x62,0xd4,0xfc,0x0c,0xf7,0xe9]
125         {nf}	imulq	%r9
126# CHECK: {evex}	imulq	%r9, %r9
127# CHECK: encoding: [0x62,0x54,0xfc,0x08,0xaf,0xc9]
128         {evex}	imulq	%r9, %r9
129# CHECK: {nf}	imulq	%r9, %r9
130# CHECK: encoding: [0x62,0x54,0xfc,0x0c,0xaf,0xc9]
131         {nf}	imulq	%r9, %r9
132# CHECK: imulq	%r9, %r9, %r9
133# CHECK: encoding: [0x62,0x54,0xb4,0x18,0xaf,0xc9]
134         imulq	%r9, %r9, %r9
135# CHECK: {nf}	imulq	%r9, %r9, %r9
136# CHECK: encoding: [0x62,0x54,0xb4,0x1c,0xaf,0xc9]
137         {nf}	imulq	%r9, %r9, %r9
138# CHECK: {evex}	imulb	291(%r8,%rax,4)
139# CHECK: encoding: [0x62,0xd4,0x7c,0x08,0xf6,0xac,0x80,0x23,0x01,0x00,0x00]
140         {evex}	imulb	291(%r8,%rax,4)
141# CHECK: {nf}	imulb	291(%r8,%rax,4)
142# CHECK: encoding: [0x62,0xd4,0x7c,0x0c,0xf6,0xac,0x80,0x23,0x01,0x00,0x00]
143         {nf}	imulb	291(%r8,%rax,4)
144# CHECK: {evex}	imulw	291(%r8,%rax,4)
145# CHECK: encoding: [0x62,0xd4,0x7d,0x08,0xf7,0xac,0x80,0x23,0x01,0x00,0x00]
146         {evex}	imulw	291(%r8,%rax,4)
147# CHECK: {nf}	imulw	291(%r8,%rax,4)
148# CHECK: encoding: [0x62,0xd4,0x7d,0x0c,0xf7,0xac,0x80,0x23,0x01,0x00,0x00]
149         {nf}	imulw	291(%r8,%rax,4)
150# CHECK: {evex}	imulw	291(%r8,%rax,4), %dx
151# CHECK: encoding: [0x62,0xd4,0x7d,0x08,0xaf,0x94,0x80,0x23,0x01,0x00,0x00]
152         {evex}	imulw	291(%r8,%rax,4), %dx
153# CHECK: {nf}	imulw	291(%r8,%rax,4), %dx
154# CHECK: encoding: [0x62,0xd4,0x7d,0x0c,0xaf,0x94,0x80,0x23,0x01,0x00,0x00]
155         {nf}	imulw	291(%r8,%rax,4), %dx
156# CHECK: imulw	291(%r8,%rax,4), %dx, %dx
157# CHECK: encoding: [0x62,0xd4,0x6d,0x18,0xaf,0x94,0x80,0x23,0x01,0x00,0x00]
158         imulw	291(%r8,%rax,4), %dx, %dx
159# CHECK: {nf}	imulw	291(%r8,%rax,4), %dx, %dx
160# CHECK: encoding: [0x62,0xd4,0x6d,0x1c,0xaf,0x94,0x80,0x23,0x01,0x00,0x00]
161         {nf}	imulw	291(%r8,%rax,4), %dx, %dx
162# CHECK: {evex}	imull	291(%r8,%rax,4)
163# CHECK: encoding: [0x62,0xd4,0x7c,0x08,0xf7,0xac,0x80,0x23,0x01,0x00,0x00]
164         {evex}	imull	291(%r8,%rax,4)
165# CHECK: {nf}	imull	291(%r8,%rax,4)
166# CHECK: encoding: [0x62,0xd4,0x7c,0x0c,0xf7,0xac,0x80,0x23,0x01,0x00,0x00]
167         {nf}	imull	291(%r8,%rax,4)
168# CHECK: {evex}	imull	291(%r8,%rax,4), %ecx
169# CHECK: encoding: [0x62,0xd4,0x7c,0x08,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00]
170         {evex}	imull	291(%r8,%rax,4), %ecx
171# CHECK: {nf}	imull	291(%r8,%rax,4), %ecx
172# CHECK: encoding: [0x62,0xd4,0x7c,0x0c,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00]
173         {nf}	imull	291(%r8,%rax,4), %ecx
174# CHECK: imull	291(%r8,%rax,4), %ecx, %ecx
175# CHECK: encoding: [0x62,0xd4,0x74,0x18,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00]
176         imull	291(%r8,%rax,4), %ecx, %ecx
177# CHECK: {nf}	imull	291(%r8,%rax,4), %ecx, %ecx
178# CHECK: encoding: [0x62,0xd4,0x74,0x1c,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00]
179         {nf}	imull	291(%r8,%rax,4), %ecx, %ecx
180# CHECK: {evex}	imulq	291(%r8,%rax,4)
181# CHECK: encoding: [0x62,0xd4,0xfc,0x08,0xf7,0xac,0x80,0x23,0x01,0x00,0x00]
182         {evex}	imulq	291(%r8,%rax,4)
183# CHECK: {nf}	imulq	291(%r8,%rax,4)
184# CHECK: encoding: [0x62,0xd4,0xfc,0x0c,0xf7,0xac,0x80,0x23,0x01,0x00,0x00]
185         {nf}	imulq	291(%r8,%rax,4)
186# CHECK: {evex}	imulq	291(%r8,%rax,4), %r9
187# CHECK: encoding: [0x62,0x54,0xfc,0x08,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00]
188         {evex}	imulq	291(%r8,%rax,4), %r9
189# CHECK: {nf}	imulq	291(%r8,%rax,4), %r9
190# CHECK: encoding: [0x62,0x54,0xfc,0x0c,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00]
191         {nf}	imulq	291(%r8,%rax,4), %r9
192# CHECK: imulq	291(%r8,%rax,4), %r9, %r9
193# CHECK: encoding: [0x62,0x54,0xb4,0x18,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00]
194         imulq	291(%r8,%rax,4), %r9, %r9
195# CHECK: {nf}	imulq	291(%r8,%rax,4), %r9, %r9
196# CHECK: encoding: [0x62,0x54,0xb4,0x1c,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00]
197         {nf}	imulq	291(%r8,%rax,4), %r9, %r9
198