1// RUN: llvm-mc -triple x86_64-unknown-unknown -mcpu=knl -mattr=+avx512dq -mattr=+avx512vl  --show-encoding %s | FileCheck %s
2
3// CHECK: vpmullq %xmm22, %xmm17, %xmm26
4// CHECK:  encoding: [0x62,0x22,0xf5,0x00,0x40,0xd6]
5          vpmullq %xmm22, %xmm17, %xmm26
6
7// CHECK: vpmullq %xmm22, %xmm17, %xmm26 {%k6}
8// CHECK:  encoding: [0x62,0x22,0xf5,0x06,0x40,0xd6]
9          vpmullq %xmm22, %xmm17, %xmm26 {%k6}
10
11// CHECK: vpmullq %xmm22, %xmm17, %xmm26 {%k6} {z}
12// CHECK:  encoding: [0x62,0x22,0xf5,0x86,0x40,0xd6]
13          vpmullq %xmm22, %xmm17, %xmm26 {%k6} {z}
14
15// CHECK: vpmullq (%rcx), %xmm17, %xmm26
16// CHECK:  encoding: [0x62,0x62,0xf5,0x00,0x40,0x11]
17          vpmullq (%rcx), %xmm17, %xmm26
18
19// CHECK: vpmullq 291(%rax,%r14,8), %xmm17, %xmm26
20// CHECK:  encoding: [0x62,0x22,0xf5,0x00,0x40,0x94,0xf0,0x23,0x01,0x00,0x00]
21          vpmullq 291(%rax,%r14,8), %xmm17, %xmm26
22
23// CHECK: vpmullq (%rcx){1to2}, %xmm17, %xmm26
24// CHECK:  encoding: [0x62,0x62,0xf5,0x10,0x40,0x11]
25          vpmullq (%rcx){1to2}, %xmm17, %xmm26
26
27// CHECK: vpmullq 2032(%rdx), %xmm17, %xmm26
28// CHECK:  encoding: [0x62,0x62,0xf5,0x00,0x40,0x52,0x7f]
29          vpmullq 2032(%rdx), %xmm17, %xmm26
30
31// CHECK: vpmullq 2048(%rdx), %xmm17, %xmm26
32// CHECK:  encoding: [0x62,0x62,0xf5,0x00,0x40,0x92,0x00,0x08,0x00,0x00]
33          vpmullq 2048(%rdx), %xmm17, %xmm26
34
35// CHECK: vpmullq -2048(%rdx), %xmm17, %xmm26
36// CHECK:  encoding: [0x62,0x62,0xf5,0x00,0x40,0x52,0x80]
37          vpmullq -2048(%rdx), %xmm17, %xmm26
38
39// CHECK: vpmullq -2064(%rdx), %xmm17, %xmm26
40// CHECK:  encoding: [0x62,0x62,0xf5,0x00,0x40,0x92,0xf0,0xf7,0xff,0xff]
41          vpmullq -2064(%rdx), %xmm17, %xmm26
42
43// CHECK: vpmullq 1016(%rdx){1to2}, %xmm17, %xmm26
44// CHECK:  encoding: [0x62,0x62,0xf5,0x10,0x40,0x52,0x7f]
45          vpmullq 1016(%rdx){1to2}, %xmm17, %xmm26
46
47// CHECK: vpmullq 1024(%rdx){1to2}, %xmm17, %xmm26
48// CHECK:  encoding: [0x62,0x62,0xf5,0x10,0x40,0x92,0x00,0x04,0x00,0x00]
49          vpmullq 1024(%rdx){1to2}, %xmm17, %xmm26
50
51// CHECK: vpmullq -1024(%rdx){1to2}, %xmm17, %xmm26
52// CHECK:  encoding: [0x62,0x62,0xf5,0x10,0x40,0x52,0x80]
53          vpmullq -1024(%rdx){1to2}, %xmm17, %xmm26
54
55// CHECK: vpmullq -1032(%rdx){1to2}, %xmm17, %xmm26
56// CHECK:  encoding: [0x62,0x62,0xf5,0x10,0x40,0x92,0xf8,0xfb,0xff,0xff]
57          vpmullq -1032(%rdx){1to2}, %xmm17, %xmm26
58
59// CHECK: vpmullq %ymm25, %ymm25, %ymm25
60// CHECK:  encoding: [0x62,0x02,0xb5,0x20,0x40,0xc9]
61          vpmullq %ymm25, %ymm25, %ymm25
62
63// CHECK: vpmullq %ymm25, %ymm25, %ymm25 {%k3}
64// CHECK:  encoding: [0x62,0x02,0xb5,0x23,0x40,0xc9]
65          vpmullq %ymm25, %ymm25, %ymm25 {%k3}
66
67// CHECK: vpmullq %ymm25, %ymm25, %ymm25 {%k3} {z}
68// CHECK:  encoding: [0x62,0x02,0xb5,0xa3,0x40,0xc9]
69          vpmullq %ymm25, %ymm25, %ymm25 {%k3} {z}
70
71// CHECK: vpmullq (%rcx), %ymm25, %ymm25
72// CHECK:  encoding: [0x62,0x62,0xb5,0x20,0x40,0x09]
73          vpmullq (%rcx), %ymm25, %ymm25
74
75// CHECK: vpmullq 291(%rax,%r14,8), %ymm25, %ymm25
76// CHECK:  encoding: [0x62,0x22,0xb5,0x20,0x40,0x8c,0xf0,0x23,0x01,0x00,0x00]
77          vpmullq 291(%rax,%r14,8), %ymm25, %ymm25
78
79// CHECK: vpmullq (%rcx){1to4}, %ymm25, %ymm25
80// CHECK:  encoding: [0x62,0x62,0xb5,0x30,0x40,0x09]
81          vpmullq (%rcx){1to4}, %ymm25, %ymm25
82
83// CHECK: vpmullq 4064(%rdx), %ymm25, %ymm25
84// CHECK:  encoding: [0x62,0x62,0xb5,0x20,0x40,0x4a,0x7f]
85          vpmullq 4064(%rdx), %ymm25, %ymm25
86
87// CHECK: vpmullq 4096(%rdx), %ymm25, %ymm25
88// CHECK:  encoding: [0x62,0x62,0xb5,0x20,0x40,0x8a,0x00,0x10,0x00,0x00]
89          vpmullq 4096(%rdx), %ymm25, %ymm25
90
91// CHECK: vpmullq -4096(%rdx), %ymm25, %ymm25
92// CHECK:  encoding: [0x62,0x62,0xb5,0x20,0x40,0x4a,0x80]
93          vpmullq -4096(%rdx), %ymm25, %ymm25
94
95// CHECK: vpmullq -4128(%rdx), %ymm25, %ymm25
96// CHECK:  encoding: [0x62,0x62,0xb5,0x20,0x40,0x8a,0xe0,0xef,0xff,0xff]
97          vpmullq -4128(%rdx), %ymm25, %ymm25
98
99// CHECK: vpmullq 1016(%rdx){1to4}, %ymm25, %ymm25
100// CHECK:  encoding: [0x62,0x62,0xb5,0x30,0x40,0x4a,0x7f]
101          vpmullq 1016(%rdx){1to4}, %ymm25, %ymm25
102
103// CHECK: vpmullq 1024(%rdx){1to4}, %ymm25, %ymm25
104// CHECK:  encoding: [0x62,0x62,0xb5,0x30,0x40,0x8a,0x00,0x04,0x00,0x00]
105          vpmullq 1024(%rdx){1to4}, %ymm25, %ymm25
106
107// CHECK: vpmullq -1024(%rdx){1to4}, %ymm25, %ymm25
108// CHECK:  encoding: [0x62,0x62,0xb5,0x30,0x40,0x4a,0x80]
109          vpmullq -1024(%rdx){1to4}, %ymm25, %ymm25
110
111// CHECK: vpmullq -1032(%rdx){1to4}, %ymm25, %ymm25
112// CHECK:  encoding: [0x62,0x62,0xb5,0x30,0x40,0x8a,0xf8,0xfb,0xff,0xff]
113          vpmullq -1032(%rdx){1to4}, %ymm25, %ymm25
114