1// RUN: llvm-mc -triple x86_64-unknown-unknown -x86-asm-syntax=intel -output-asm-variant=1 --show-encoding %s | FileCheck %s
2
3// CHECK: vgatherdpd    xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
4// CHECK: encoding: [0xc4,0xe2,0xf9,0x92,0x14,0x4f]
5          vgatherdpd    xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
6
7// CHECK: vgatherqpd    xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
8// CHECK: encoding: [0xc4,0xe2,0xf9,0x93,0x14,0x4f]
9          vgatherqpd    xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
10
11// CHECK: vgatherdpd    ymm2, ymmword ptr [rdi + 2*xmm1], ymm0
12// CHECK: encoding: [0xc4,0xe2,0xfd,0x92,0x14,0x4f]
13          vgatherdpd    ymm2, ymmword ptr [rdi + 2*xmm1], ymm0
14
15// CHECK: vgatherqpd    ymm2, ymmword ptr [rdi + 2*ymm1], ymm0
16// CHECK: encoding: [0xc4,0xe2,0xfd,0x93,0x14,0x4f]
17          vgatherqpd    ymm2, ymmword ptr [rdi + 2*ymm1], ymm0
18
19// CHECK: vgatherdps    xmm10, xmmword ptr [r15 + 2*xmm9], xmm8
20// CHECK: encoding: [0xc4,0x02,0x39,0x92,0x14,0x4f]
21          vgatherdps    xmm10, xmmword ptr [r15 + 2*xmm9], xmm8
22
23// CHECK: vgatherqps    xmm10, qword ptr [r15 + 2*xmm9], xmm8
24// CHECK: encoding: [0xc4,0x02,0x39,0x93,0x14,0x4f]
25          vgatherqps    xmm10, qword ptr [r15 + 2*xmm9], xmm8
26
27// CHECK: vgatherdps    ymm10, ymmword ptr [r15 + 2*ymm9], ymm8
28// CHECK: encoding: [0xc4,0x02,0x3d,0x92,0x14,0x4f]
29          vgatherdps    ymm10, ymmword ptr [r15 + 2*ymm9], ymm8
30
31// CHECK: vgatherqps    xmm10, xmmword ptr [r15 + 2*ymm9], xmm8
32// CHECK: encoding: [0xc4,0x02,0x3d,0x93,0x14,0x4f]
33          vgatherqps    xmm10, xmmword ptr [r15 + 2*ymm9], xmm8
34
35// CHECK: vpgatherdq    xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
36// CHECK: encoding: [0xc4,0xe2,0xf9,0x90,0x14,0x4f]
37          vpgatherdq    xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
38
39// CHECK: vpgatherqq    xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
40// CHECK: encoding: [0xc4,0xe2,0xf9,0x91,0x14,0x4f]
41          vpgatherqq    xmm2, xmmword ptr [rdi + 2*xmm1], xmm0
42
43// CHECK: vpgatherdq    ymm2, ymmword ptr [rdi + 2*xmm1], ymm0
44// CHECK: encoding: [0xc4,0xe2,0xfd,0x90,0x14,0x4f]
45          vpgatherdq    ymm2, ymmword ptr [rdi + 2*xmm1], ymm0
46
47// CHECK: vpgatherqq    ymm2, ymmword ptr [rdi + 2*ymm1], ymm0
48// CHECK: encoding: [0xc4,0xe2,0xfd,0x91,0x14,0x4f]
49          vpgatherqq    ymm2, ymmword ptr [rdi + 2*ymm1], ymm0
50
51// CHECK: vpgatherdd    xmm10, xmmword ptr [r15 + 2*xmm9], xmm8
52// CHECK: encoding: [0xc4,0x02,0x39,0x90,0x14,0x4f]
53          vpgatherdd    xmm10, xmmword ptr [r15 + 2*xmm9], xmm8
54
55// CHECK: vpgatherqd    xmm10, qword ptr [r15 + 2*xmm9], xmm8
56// CHECK: encoding: [0xc4,0x02,0x39,0x91,0x14,0x4f]
57          vpgatherqd    xmm10, qword ptr [r15 + 2*xmm9], xmm8
58
59// CHECK: vpgatherdd    ymm10, ymmword ptr [r15 + 2*ymm9], ymm8
60// CHECK: encoding: [0xc4,0x02,0x3d,0x90,0x14,0x4f]
61          vpgatherdd    ymm10, ymmword ptr [r15 + 2*ymm9], ymm8
62
63// CHECK: vpgatherqd    xmm10, xmmword ptr [r15 + 2*ymm9], xmm8
64// CHECK: encoding: [0xc4,0x02,0x3d,0x91,0x14,0x4f]
65          vpgatherqd    xmm10, xmmword ptr [r15 + 2*ymm9], xmm8
66
67// CHECK: vcvtpd2ps xmm0, xmm15
68// CHECK: encoding: [0xc4,0xc1,0x79,0x5a,0xc7]
69          vcvtpd2ps xmm0, xmm15
70
71// CHECK: vcvtpd2ps xmm0, xmmword ptr [rax]
72// CHECK: encoding: [0xc5,0xf9,0x5a,0x00]
73          vcvtpd2ps xmm0, xmmword ptr [rax]
74
75// CHECK: vcvtpd2ps xmm0, ymm15
76// CHECK: encoding: [0xc4,0xc1,0x7d,0x5a,0xc7]
77          vcvtpd2ps xmm0, ymm15
78
79// CHECK: vcvtpd2ps xmm0, ymmword ptr [rax]
80// CHECK: encoding: [0xc5,0xfd,0x5a,0x00]
81          vcvtpd2ps xmm0, ymmword ptr [rax]
82
83// CHECK: vcvtpd2dq xmm0, xmm15
84// CHECK: encoding: [0xc4,0xc1,0x7b,0xe6,0xc7]
85          vcvtpd2dq xmm0, xmm15
86
87// CHECK: vcvtpd2dq xmm0, xmmword ptr [rax]
88// CHECK: encoding: [0xc5,0xfb,0xe6,0x00]
89          vcvtpd2dq xmm0, xmmword ptr [rax]
90
91// CHECK: vcvtpd2dq xmm0, ymm15
92// CHECK: encoding: [0xc4,0xc1,0x7f,0xe6,0xc7]
93          vcvtpd2dq xmm0, ymm15
94
95// CHECK: vcvtpd2dq xmm0, ymmword ptr [rax]
96// CHECK: encoding: [0xc5,0xff,0xe6,0x00]
97          vcvtpd2dq xmm0, ymmword ptr [rax]
98
99// CHECK: vcvttpd2dq xmm0, xmm15
100// CHECK: encoding: [0xc4,0xc1,0x79,0xe6,0xc7]
101          vcvttpd2dq xmm0, xmm15
102
103// CHECK: vcvttpd2dq xmm0, xmmword ptr [rax]
104// CHECK: encoding: [0xc5,0xf9,0xe6,0x00]
105          vcvttpd2dq xmm0, xmmword ptr [rax]
106
107// CHECK: vcvttpd2dq xmm0, ymm15
108// CHECK: encoding: [0xc4,0xc1,0x7d,0xe6,0xc7]
109          vcvttpd2dq xmm0, ymm15
110
111// CHECK: vcvttpd2dq xmm0, ymmword ptr [rax]
112// CHECK: encoding: [0xc5,0xfd,0xe6,0x00]
113          vcvttpd2dq xmm0, ymmword ptr [rax]
114
115// CHECK: vpmaddwd xmm1, xmm2, xmm3
116// CHECK: encoding: [0xc5,0xe9,0xf5,0xcb]
117          vpmaddwd xmm1, xmm2, xmm3
118
119// CHECK: vpmaddwd xmm1, xmm2, xmmword ptr [rcx]
120// CHECK: encoding: [0xc5,0xe9,0xf5,0x09]
121          vpmaddwd xmm1, xmm2, xmmword ptr [rcx]
122
123// CHECK: vpmaddwd xmm1, xmm2, xmmword ptr [rsp - 4]
124// CHECK: encoding: [0xc5,0xe9,0xf5,0x4c,0x24,0xfc]
125          vpmaddwd xmm1, xmm2, xmmword ptr [rsp - 4]
126
127// CHECK: vpmaddwd xmm1, xmm2, xmmword ptr [rsp + 4]
128// CHECK: encoding: [0xc5,0xe9,0xf5,0x4c,0x24,0x04]
129          vpmaddwd xmm1, xmm2, xmmword ptr [rsp + 4]
130
131// CHECK: vpmaddwd xmm1, xmm2, xmmword ptr [rcx + 8*r14 + 268435456]
132// CHECK: encoding: [0xc4,0xa1,0x69,0xf5,0x8c,0xf1,0x00,0x00,0x00,0x10]
133          vpmaddwd xmm1, xmm2, xmmword ptr [rcx + 8*r14 + 268435456]
134
135// CHECK: vpmaddwd xmm1, xmm2, xmmword ptr [rcx + 8*r14 - 536870912]
136// CHECK: encoding: [0xc4,0xa1,0x69,0xf5,0x8c,0xf1,0x00,0x00,0x00,0xe0]
137          vpmaddwd xmm1, xmm2, xmmword ptr [rcx + 8*r14 - 536870912]
138
139// CHECK: vpmaddwd xmm1, xmm2, xmmword ptr [rcx + 8*r14 - 536870910]
140// CHECK: encoding: [0xc4,0xa1,0x69,0xf5,0x8c,0xf1,0x02,0x00,0x00,0xe0]
141          vpmaddwd xmm1, xmm2, xmmword ptr [rcx + 8*r14 - 536870910]
142
143// CHECK: vpmaddwd ymm1, ymm2, ymm3
144// CHECK: encoding: [0xc5,0xed,0xf5,0xcb]
145          vpmaddwd ymm1, ymm2, ymm3
146
147// CHECK: vpmaddwd ymm1, ymm2, ymmword ptr [rcx]
148// CHECK: encoding: [0xc5,0xed,0xf5,0x09]
149          vpmaddwd ymm1, ymm2, ymmword ptr [rcx]
150
151// CHECK: vpmaddwd ymm1, ymm2, ymmword ptr [rsp - 4]
152// CHECK: encoding: [0xc5,0xed,0xf5,0x4c,0x24,0xfc]
153          vpmaddwd ymm1, ymm2, ymmword ptr [rsp - 4]
154
155// CHECK: vpmaddwd ymm1, ymm2, ymmword ptr [rsp + 4]
156// CHECK: encoding: [0xc5,0xed,0xf5,0x4c,0x24,0x04]
157          vpmaddwd ymm1, ymm2, ymmword ptr [rsp + 4]
158
159// CHECK: vpmaddwd ymm1, ymm2, ymmword ptr [rcx + 8*r14 + 268435456]
160// CHECK: encoding: [0xc4,0xa1,0x6d,0xf5,0x8c,0xf1,0x00,0x00,0x00,0x10]
161          vpmaddwd ymm1, ymm2, ymmword ptr [rcx + 8*r14 + 268435456]
162
163// CHECK: vpmaddwd ymm1, ymm2, ymmword ptr [rcx + 8*r14 - 536870912]
164// CHECK: encoding: [0xc4,0xa1,0x6d,0xf5,0x8c,0xf1,0x00,0x00,0x00,0xe0]
165          vpmaddwd ymm1, ymm2, ymmword ptr [rcx + 8*r14 - 536870912]
166
167// CHECK: vpmaddwd ymm1, ymm2, ymmword ptr [rcx + 8*r14 - 536870910]
168// CHECK: encoding: [0xc4,0xa1,0x6d,0xf5,0x8c,0xf1,0x02,0x00,0x00,0xe0]
169          vpmaddwd ymm1, ymm2, ymmword ptr [rcx + 8*r14 - 536870910]
170