1//===- X86ManualCompressEVEXTables.def ---------------------------*- C++ -*-==//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8// \file
9// This file defines all the entries in X86 EVEX compression tables that need
10// special handling.
11//===----------------------------------------------------------------------===//
12
13#ifndef NOCOMP
14#define NOCOMP(INSN)
15#endif
16NOCOMP(VCVTQQ2PDZ128rr)
17NOCOMP(VCVTQQ2PSZ128rm)
18NOCOMP(VCVTQQ2PSZ128rr)
19NOCOMP(VDBPSADBWZ128rmi)
20NOCOMP(VDBPSADBWZ128rri)
21NOCOMP(VPMAXSQZ128rm)
22NOCOMP(VPMAXSQZ128rr)
23NOCOMP(VPMAXUQZ128rm)
24NOCOMP(VPMAXUQZ128rr)
25NOCOMP(VPMINSQZ128rm)
26NOCOMP(VPMINSQZ128rr)
27NOCOMP(VPMINUQZ128rm)
28NOCOMP(VPMINUQZ128rr)
29NOCOMP(VPMULLQZ128rm)
30NOCOMP(VPMULLQZ128rr)
31NOCOMP(VPSRAQZ128ri)
32NOCOMP(VPSRAQZ128rm)
33NOCOMP(VPSRAQZ128rr)
34NOCOMP(VSCALEFPSZ128rm)
35NOCOMP(VDBPSADBWZ256rmi)
36NOCOMP(VDBPSADBWZ256rri)
37NOCOMP(VPMAXSQZ256rm)
38NOCOMP(VPMAXSQZ256rr)
39NOCOMP(VPMAXUQZ256rm)
40NOCOMP(VPMAXUQZ256rr)
41NOCOMP(VPMINSQZ256rm)
42NOCOMP(VPMINSQZ256rr)
43NOCOMP(VPMINUQZ256rm)
44NOCOMP(VPMINUQZ256rr)
45NOCOMP(VPMULLQZ256rm)
46NOCOMP(VPMULLQZ256rr)
47NOCOMP(VPSRAQZ256ri)
48NOCOMP(VPSRAQZ256rm)
49NOCOMP(VPSRAQZ256rr)
50NOCOMP(VSCALEFPSZ256rm)
51#undef NOCOMP
52
53#ifndef ENTRY
54#define ENTRY(OLD, NEW)
55#endif
56ENTRY(VALIGNDZ128rmi, VPALIGNRrmi)
57ENTRY(VALIGNDZ128rri, VPALIGNRrri)
58ENTRY(VALIGNQZ128rmi, VPALIGNRrmi)
59ENTRY(VALIGNQZ128rri, VPALIGNRrri)
60ENTRY(VMAXSDZrm, VMAXSDrm)
61ENTRY(VMAXSDZrr, VMAXSDrr)
62ENTRY(VMAXSSZrm, VMAXSSrm)
63ENTRY(VMAXSSZrr, VMAXSSrr)
64ENTRY(VMINSDZrm, VMINSDrm)
65ENTRY(VMINSDZrr, VMINSDrr)
66ENTRY(VMINSSZrm, VMINSSrm)
67ENTRY(VMINSSZrr, VMINSSrr)
68ENTRY(VMOVDQU16Z128mr, VMOVDQUmr)
69ENTRY(VMOVDQU16Z128rm, VMOVDQUrm)
70ENTRY(VMOVDQU16Z128rr, VMOVDQUrr)
71ENTRY(VMOVDQU8Z128mr, VMOVDQUmr)
72ENTRY(VMOVDQU8Z128rm, VMOVDQUrm)
73ENTRY(VMOVDQU8Z128rr, VMOVDQUrr)
74ENTRY(VMOVDQU16Z256mr, VMOVDQUYmr)
75ENTRY(VMOVDQU16Z256rm, VMOVDQUYrm)
76ENTRY(VMOVDQU16Z256rr, VMOVDQUYrr)
77ENTRY(VMOVDQU8Z256mr, VMOVDQUYmr)
78ENTRY(VMOVDQU8Z256rm, VMOVDQUYrm)
79ENTRY(VMOVDQU8Z256rr, VMOVDQUYrr)
80ENTRY(VSHUFF32X4Z256rmi, VPERM2F128rm)
81ENTRY(VSHUFF32X4Z256rri, VPERM2F128rr)
82ENTRY(VSHUFF64X2Z256rmi, VPERM2F128rm)
83ENTRY(VSHUFF64X2Z256rri, VPERM2F128rr)
84ENTRY(VSHUFI32X4Z256rmi, VPERM2I128rm)
85ENTRY(VSHUFI32X4Z256rri, VPERM2I128rr)
86ENTRY(VSHUFI64X2Z256rmi, VPERM2I128rm)
87ENTRY(VSHUFI64X2Z256rri, VPERM2I128rr)
88// W bit does not match
89ENTRY(VADDPDZ128rm, VADDPDrm)
90ENTRY(VADDPDZ128rr, VADDPDrr)
91ENTRY(VADDSDZrm, VADDSDrm)
92ENTRY(VADDSDZrm_Int, VADDSDrm_Int)
93ENTRY(VADDSDZrr, VADDSDrr)
94ENTRY(VADDSDZrr_Int, VADDSDrr_Int)
95ENTRY(VANDNPDZ128rm, VANDNPDrm)
96ENTRY(VANDNPDZ128rr, VANDNPDrr)
97ENTRY(VANDPDZ128rm, VANDPDrm)
98ENTRY(VANDPDZ128rr, VANDPDrr)
99ENTRY(VCOMISDZrm, VCOMISDrm)
100ENTRY(VCOMISDZrm_Int, VCOMISDrm_Int)
101ENTRY(VCOMISDZrr, VCOMISDrr)
102ENTRY(VCOMISDZrr_Int, VCOMISDrr_Int)
103ENTRY(VCVTPD2DQZ128rm, VCVTPD2DQrm)
104ENTRY(VCVTPD2DQZ128rr, VCVTPD2DQrr)
105ENTRY(VCVTPD2PSZ128rm, VCVTPD2PSrm)
106ENTRY(VCVTPD2PSZ128rr, VCVTPD2PSrr)
107ENTRY(VCVTSD2SSZrm, VCVTSD2SSrm)
108ENTRY(VCVTSD2SSZrm_Int, VCVTSD2SSrm_Int)
109ENTRY(VCVTSD2SSZrr, VCVTSD2SSrr)
110ENTRY(VCVTSD2SSZrr_Int, VCVTSD2SSrr_Int)
111ENTRY(VCVTTPD2DQZ128rm, VCVTTPD2DQrm)
112ENTRY(VCVTTPD2DQZ128rr, VCVTTPD2DQrr)
113ENTRY(VDIVPDZ128rm, VDIVPDrm)
114ENTRY(VDIVPDZ128rr, VDIVPDrr)
115ENTRY(VDIVSDZrm, VDIVSDrm)
116ENTRY(VDIVSDZrm_Int, VDIVSDrm_Int)
117ENTRY(VDIVSDZrr, VDIVSDrr)
118ENTRY(VDIVSDZrr_Int, VDIVSDrr_Int)
119ENTRY(VMAXCPDZ128rm, VMAXCPDrm)
120ENTRY(VMAXCPDZ128rr, VMAXCPDrr)
121ENTRY(VMAXCSDZrm, VMAXCSDrm)
122ENTRY(VMAXCSDZrr, VMAXCSDrr)
123ENTRY(VMAXPDZ128rm, VMAXPDrm)
124ENTRY(VMAXPDZ128rr, VMAXPDrr)
125ENTRY(VMAXSDZrm_Int, VMAXSDrm_Int)
126ENTRY(VMAXSDZrr_Int, VMAXSDrr_Int)
127ENTRY(VMINCPDZ128rm, VMINCPDrm)
128ENTRY(VMINCPDZ128rr, VMINCPDrr)
129ENTRY(VMINCSDZrm, VMINCSDrm)
130ENTRY(VMINCSDZrr, VMINCSDrr)
131ENTRY(VMINPDZ128rm, VMINPDrm)
132ENTRY(VMINPDZ128rr, VMINPDrr)
133ENTRY(VMINSDZrm_Int, VMINSDrm_Int)
134ENTRY(VMINSDZrr_Int, VMINSDrr_Int)
135ENTRY(VMOVAPDZ128mr, VMOVAPDmr)
136ENTRY(VMOVAPDZ128rm, VMOVAPDrm)
137ENTRY(VMOVAPDZ128rr, VMOVAPDrr)
138ENTRY(VMOVDDUPZ128rm, VMOVDDUPrm)
139ENTRY(VMOVDDUPZ128rr, VMOVDDUPrr)
140ENTRY(VMOVDQA64Z128mr, VMOVDQAmr)
141ENTRY(VMOVDQA64Z128rm, VMOVDQArm)
142ENTRY(VMOVDQA64Z128rr, VMOVDQArr)
143ENTRY(VMOVDQU64Z128mr, VMOVDQUmr)
144ENTRY(VMOVDQU64Z128rm, VMOVDQUrm)
145ENTRY(VMOVDQU64Z128rr, VMOVDQUrr)
146ENTRY(VMOVHPDZ128mr, VMOVHPDmr)
147ENTRY(VMOVHPDZ128rm, VMOVHPDrm)
148ENTRY(VMOVLPDZ128mr, VMOVLPDmr)
149ENTRY(VMOVLPDZ128rm, VMOVLPDrm)
150ENTRY(VMOVNTPDZ128mr, VMOVNTPDmr)
151ENTRY(VMOVPQI2QIZmr, VMOVPQI2QImr)
152ENTRY(VMOVPQI2QIZrr, VMOVPQI2QIrr)
153ENTRY(VMOVQI2PQIZrm, VMOVQI2PQIrm)
154ENTRY(VMOVSDZmr, VMOVSDmr)
155ENTRY(VMOVSDZrm, VMOVSDrm)
156ENTRY(VMOVSDZrm_alt, VMOVSDrm_alt)
157ENTRY(VMOVSDZrr, VMOVSDrr)
158ENTRY(VMOVUPDZ128mr, VMOVUPDmr)
159ENTRY(VMOVUPDZ128rm, VMOVUPDrm)
160ENTRY(VMOVUPDZ128rr, VMOVUPDrr)
161ENTRY(VMOVZPQILo2PQIZrr, VMOVZPQILo2PQIrr)
162ENTRY(VMULPDZ128rm, VMULPDrm)
163ENTRY(VMULPDZ128rr, VMULPDrr)
164ENTRY(VMULSDZrm, VMULSDrm)
165ENTRY(VMULSDZrm_Int, VMULSDrm_Int)
166ENTRY(VMULSDZrr, VMULSDrr)
167ENTRY(VMULSDZrr_Int, VMULSDrr_Int)
168ENTRY(VORPDZ128rm, VORPDrm)
169ENTRY(VORPDZ128rr, VORPDrr)
170ENTRY(VPADDQZ128rm, VPADDQrm)
171ENTRY(VPADDQZ128rr, VPADDQrr)
172ENTRY(VPANDNQZ128rm, VPANDNrm)
173ENTRY(VPANDNQZ128rr, VPANDNrr)
174ENTRY(VPANDQZ128rm, VPANDrm)
175ENTRY(VPANDQZ128rr, VPANDrr)
176ENTRY(VPERMILPDZ128mi, VPERMILPDmi)
177ENTRY(VPERMILPDZ128ri, VPERMILPDri)
178ENTRY(VPERMILPDZ128rm, VPERMILPDrm)
179ENTRY(VPERMILPDZ128rr, VPERMILPDrr)
180ENTRY(VPMULDQZ128rm, VPMULDQrm)
181ENTRY(VPMULDQZ128rr, VPMULDQrr)
182ENTRY(VPMULUDQZ128rm, VPMULUDQrm)
183ENTRY(VPMULUDQZ128rr, VPMULUDQrr)
184ENTRY(VPORQZ128rm, VPORrm)
185ENTRY(VPORQZ128rr, VPORrr)
186ENTRY(VPSLLQZ128ri, VPSLLQri)
187ENTRY(VPSLLQZ128rm, VPSLLQrm)
188ENTRY(VPSLLQZ128rr, VPSLLQrr)
189ENTRY(VPSRLQZ128ri, VPSRLQri)
190ENTRY(VPSRLQZ128rm, VPSRLQrm)
191ENTRY(VPSRLQZ128rr, VPSRLQrr)
192ENTRY(VPSUBQZ128rm, VPSUBQrm)
193ENTRY(VPSUBQZ128rr, VPSUBQrr)
194ENTRY(VPUNPCKHQDQZ128rm, VPUNPCKHQDQrm)
195ENTRY(VPUNPCKHQDQZ128rr, VPUNPCKHQDQrr)
196ENTRY(VPUNPCKLQDQZ128rm, VPUNPCKLQDQrm)
197ENTRY(VPUNPCKLQDQZ128rr, VPUNPCKLQDQrr)
198ENTRY(VPXORQZ128rm, VPXORrm)
199ENTRY(VPXORQZ128rr, VPXORrr)
200ENTRY(VRNDSCALEPDZ128rmi, VROUNDPDmi)
201ENTRY(VRNDSCALEPDZ128rri, VROUNDPDri)
202ENTRY(VRNDSCALESDZm, VROUNDSDmi)
203ENTRY(VRNDSCALESDZm_Int, VROUNDSDmi_Int)
204ENTRY(VRNDSCALESDZr, VROUNDSDri)
205ENTRY(VRNDSCALESDZr_Int, VROUNDSDri_Int)
206ENTRY(VSHUFPDZ128rmi, VSHUFPDrmi)
207ENTRY(VSHUFPDZ128rri, VSHUFPDrri)
208ENTRY(VSQRTPDZ128m, VSQRTPDm)
209ENTRY(VSQRTPDZ128r, VSQRTPDr)
210ENTRY(VSQRTSDZm, VSQRTSDm)
211ENTRY(VSQRTSDZm_Int, VSQRTSDm_Int)
212ENTRY(VSQRTSDZr, VSQRTSDr)
213ENTRY(VSQRTSDZr_Int, VSQRTSDr_Int)
214ENTRY(VSUBPDZ128rm, VSUBPDrm)
215ENTRY(VSUBPDZ128rr, VSUBPDrr)
216ENTRY(VSUBSDZrm, VSUBSDrm)
217ENTRY(VSUBSDZrm_Int, VSUBSDrm_Int)
218ENTRY(VSUBSDZrr, VSUBSDrr)
219ENTRY(VSUBSDZrr_Int, VSUBSDrr_Int)
220ENTRY(VUCOMISDZrm, VUCOMISDrm)
221ENTRY(VUCOMISDZrm_Int, VUCOMISDrm_Int)
222ENTRY(VUCOMISDZrr, VUCOMISDrr)
223ENTRY(VUCOMISDZrr_Int, VUCOMISDrr_Int)
224ENTRY(VUNPCKHPDZ128rm, VUNPCKHPDrm)
225ENTRY(VUNPCKHPDZ128rr, VUNPCKHPDrr)
226ENTRY(VUNPCKLPDZ128rm, VUNPCKLPDrm)
227ENTRY(VUNPCKLPDZ128rr, VUNPCKLPDrr)
228ENTRY(VXORPDZ128rm, VXORPDrm)
229ENTRY(VXORPDZ128rr, VXORPDrr)
230ENTRY(VADDPDZ256rm, VADDPDYrm)
231ENTRY(VADDPDZ256rr, VADDPDYrr)
232ENTRY(VANDNPDZ256rm, VANDNPDYrm)
233ENTRY(VANDNPDZ256rr, VANDNPDYrr)
234ENTRY(VANDPDZ256rm, VANDPDYrm)
235ENTRY(VANDPDZ256rr, VANDPDYrr)
236ENTRY(VCVTPD2DQZ256rm, VCVTPD2DQYrm)
237ENTRY(VCVTPD2DQZ256rr, VCVTPD2DQYrr)
238ENTRY(VCVTPD2PSZ256rm, VCVTPD2PSYrm)
239ENTRY(VCVTPD2PSZ256rr, VCVTPD2PSYrr)
240ENTRY(VCVTTPD2DQZ256rm, VCVTTPD2DQYrm)
241ENTRY(VCVTTPD2DQZ256rr, VCVTTPD2DQYrr)
242ENTRY(VDIVPDZ256rm, VDIVPDYrm)
243ENTRY(VDIVPDZ256rr, VDIVPDYrr)
244ENTRY(VEXTRACTF64x2Z256mr, VEXTRACTF128mr)
245ENTRY(VEXTRACTF64x2Z256rr, VEXTRACTF128rr)
246ENTRY(VEXTRACTI64x2Z256mr, VEXTRACTI128mr)
247ENTRY(VEXTRACTI64x2Z256rr, VEXTRACTI128rr)
248ENTRY(VINSERTF64x2Z256rm, VINSERTF128rm)
249ENTRY(VINSERTF64x2Z256rr, VINSERTF128rr)
250ENTRY(VINSERTI64x2Z256rm, VINSERTI128rm)
251ENTRY(VINSERTI64x2Z256rr, VINSERTI128rr)
252ENTRY(VMAXCPDZ256rm, VMAXCPDYrm)
253ENTRY(VMAXCPDZ256rr, VMAXCPDYrr)
254ENTRY(VMAXPDZ256rm, VMAXPDYrm)
255ENTRY(VMAXPDZ256rr, VMAXPDYrr)
256ENTRY(VMINCPDZ256rm, VMINCPDYrm)
257ENTRY(VMINCPDZ256rr, VMINCPDYrr)
258ENTRY(VMINPDZ256rm, VMINPDYrm)
259ENTRY(VMINPDZ256rr, VMINPDYrr)
260ENTRY(VMOVAPDZ256mr, VMOVAPDYmr)
261ENTRY(VMOVAPDZ256rm, VMOVAPDYrm)
262ENTRY(VMOVAPDZ256rr, VMOVAPDYrr)
263ENTRY(VMOVDDUPZ256rm, VMOVDDUPYrm)
264ENTRY(VMOVDDUPZ256rr, VMOVDDUPYrr)
265ENTRY(VMOVDQA64Z256mr, VMOVDQAYmr)
266ENTRY(VMOVDQA64Z256rm, VMOVDQAYrm)
267ENTRY(VMOVDQA64Z256rr, VMOVDQAYrr)
268ENTRY(VMOVDQU64Z256mr, VMOVDQUYmr)
269ENTRY(VMOVDQU64Z256rm, VMOVDQUYrm)
270ENTRY(VMOVDQU64Z256rr, VMOVDQUYrr)
271ENTRY(VMOVNTPDZ256mr, VMOVNTPDYmr)
272ENTRY(VMOVUPDZ256mr, VMOVUPDYmr)
273ENTRY(VMOVUPDZ256rm, VMOVUPDYrm)
274ENTRY(VMOVUPDZ256rr, VMOVUPDYrr)
275ENTRY(VMULPDZ256rm, VMULPDYrm)
276ENTRY(VMULPDZ256rr, VMULPDYrr)
277ENTRY(VORPDZ256rm, VORPDYrm)
278ENTRY(VORPDZ256rr, VORPDYrr)
279ENTRY(VPADDQZ256rm, VPADDQYrm)
280ENTRY(VPADDQZ256rr, VPADDQYrr)
281ENTRY(VPANDNQZ256rm, VPANDNYrm)
282ENTRY(VPANDNQZ256rr, VPANDNYrr)
283ENTRY(VPANDQZ256rm, VPANDYrm)
284ENTRY(VPANDQZ256rr, VPANDYrr)
285ENTRY(VPERMILPDZ256mi, VPERMILPDYmi)
286ENTRY(VPERMILPDZ256ri, VPERMILPDYri)
287ENTRY(VPERMILPDZ256rm, VPERMILPDYrm)
288ENTRY(VPERMILPDZ256rr, VPERMILPDYrr)
289ENTRY(VPMULDQZ256rm, VPMULDQYrm)
290ENTRY(VPMULDQZ256rr, VPMULDQYrr)
291ENTRY(VPMULUDQZ256rm, VPMULUDQYrm)
292ENTRY(VPMULUDQZ256rr, VPMULUDQYrr)
293ENTRY(VPORQZ256rm, VPORYrm)
294ENTRY(VPORQZ256rr, VPORYrr)
295ENTRY(VPSLLQZ256ri, VPSLLQYri)
296ENTRY(VPSLLQZ256rm, VPSLLQYrm)
297ENTRY(VPSLLQZ256rr, VPSLLQYrr)
298ENTRY(VPSRLQZ256ri, VPSRLQYri)
299ENTRY(VPSRLQZ256rm, VPSRLQYrm)
300ENTRY(VPSRLQZ256rr, VPSRLQYrr)
301ENTRY(VPSUBQZ256rm, VPSUBQYrm)
302ENTRY(VPSUBQZ256rr, VPSUBQYrr)
303ENTRY(VPUNPCKHQDQZ256rm, VPUNPCKHQDQYrm)
304ENTRY(VPUNPCKHQDQZ256rr, VPUNPCKHQDQYrr)
305ENTRY(VPUNPCKLQDQZ256rm, VPUNPCKLQDQYrm)
306ENTRY(VPUNPCKLQDQZ256rr, VPUNPCKLQDQYrr)
307ENTRY(VPXORQZ256rm, VPXORYrm)
308ENTRY(VPXORQZ256rr, VPXORYrr)
309ENTRY(VRNDSCALEPDZ256rmi, VROUNDPDYmi)
310ENTRY(VRNDSCALEPDZ256rri, VROUNDPDYri)
311ENTRY(VSHUFPDZ256rmi, VSHUFPDYrmi)
312ENTRY(VSHUFPDZ256rri, VSHUFPDYrri)
313ENTRY(VSQRTPDZ256m, VSQRTPDYm)
314ENTRY(VSQRTPDZ256r, VSQRTPDYr)
315ENTRY(VSUBPDZ256rm, VSUBPDYrm)
316ENTRY(VSUBPDZ256rr, VSUBPDYrr)
317ENTRY(VUNPCKHPDZ256rm, VUNPCKHPDYrm)
318ENTRY(VUNPCKHPDZ256rr, VUNPCKHPDYrr)
319ENTRY(VUNPCKLPDZ256rm, VUNPCKLPDYrm)
320ENTRY(VUNPCKLPDZ256rr, VUNPCKLPDYrr)
321ENTRY(VXORPDZ256rm, VXORPDYrm)
322ENTRY(VXORPDZ256rr, VXORPDYrr)
323ENTRY(VPBROADCASTQZ128rm, VPBROADCASTQrm)
324ENTRY(VPBROADCASTQZ128rr, VPBROADCASTQrr)
325ENTRY(VBROADCASTF64X2Z128rm, VBROADCASTF128rm)
326ENTRY(VBROADCASTI64X2Z128rm, VBROADCASTI128rm)
327ENTRY(VBROADCASTSDZ256rm, VBROADCASTSDYrm)
328ENTRY(VBROADCASTSDZ256rr, VBROADCASTSDYrr)
329ENTRY(VPBROADCASTQZ256rm, VPBROADCASTQYrm)
330ENTRY(VPBROADCASTQZ256rr, VPBROADCASTQYrr)
331ENTRY(MOVBE32rr, BSWAP32r)
332ENTRY(MOVBE64rr, BSWAP64r)
333#undef ENTRY
334

source code of llvm/utils/TableGen/X86ManualCompressEVEXTables.def