//===- X86ManualCompressEVEXTables.def ---------------------------*- C++ -*-==// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // \file // This file defines all the entries in X86 EVEX compression tables that need // special handling. //===----------------------------------------------------------------------===// #ifndef NOCOMP #define NOCOMP(INSN) #endif NOCOMP(VCVTQQ2PDZ128rr) NOCOMP(VCVTQQ2PSZ128rm) NOCOMP(VCVTQQ2PSZ128rr) NOCOMP(VDBPSADBWZ128rmi) NOCOMP(VDBPSADBWZ128rri) NOCOMP(VPMAXSQZ128rm) NOCOMP(VPMAXSQZ128rr) NOCOMP(VPMAXUQZ128rm) NOCOMP(VPMAXUQZ128rr) NOCOMP(VPMINSQZ128rm) NOCOMP(VPMINSQZ128rr) NOCOMP(VPMINUQZ128rm) NOCOMP(VPMINUQZ128rr) NOCOMP(VPMULLQZ128rm) NOCOMP(VPMULLQZ128rr) NOCOMP(VPSRAQZ128ri) NOCOMP(VPSRAQZ128rm) NOCOMP(VPSRAQZ128rr) NOCOMP(VSCALEFPSZ128rm) NOCOMP(VDBPSADBWZ256rmi) NOCOMP(VDBPSADBWZ256rri) NOCOMP(VPMAXSQZ256rm) NOCOMP(VPMAXSQZ256rr) NOCOMP(VPMAXUQZ256rm) NOCOMP(VPMAXUQZ256rr) NOCOMP(VPMINSQZ256rm) NOCOMP(VPMINSQZ256rr) NOCOMP(VPMINUQZ256rm) NOCOMP(VPMINUQZ256rr) NOCOMP(VPMULLQZ256rm) NOCOMP(VPMULLQZ256rr) NOCOMP(VPSRAQZ256ri) NOCOMP(VPSRAQZ256rm) NOCOMP(VPSRAQZ256rr) NOCOMP(VSCALEFPSZ256rm) #undef NOCOMP #ifndef ENTRY #define ENTRY(OLD, NEW) #endif ENTRY(VALIGNDZ128rmi, VPALIGNRrmi) ENTRY(VALIGNDZ128rri, VPALIGNRrri) ENTRY(VALIGNQZ128rmi, VPALIGNRrmi) ENTRY(VALIGNQZ128rri, VPALIGNRrri) ENTRY(VMAXSDZrm, VMAXSDrm) ENTRY(VMAXSDZrr, VMAXSDrr) ENTRY(VMAXSSZrm, VMAXSSrm) ENTRY(VMAXSSZrr, VMAXSSrr) ENTRY(VMINSDZrm, VMINSDrm) ENTRY(VMINSDZrr, VMINSDrr) ENTRY(VMINSSZrm, VMINSSrm) ENTRY(VMINSSZrr, VMINSSrr) ENTRY(VMOVDQU16Z128mr, VMOVDQUmr) ENTRY(VMOVDQU16Z128rm, VMOVDQUrm) ENTRY(VMOVDQU16Z128rr, VMOVDQUrr) ENTRY(VMOVDQU8Z128mr, VMOVDQUmr) ENTRY(VMOVDQU8Z128rm, VMOVDQUrm) ENTRY(VMOVDQU8Z128rr, VMOVDQUrr) ENTRY(VMOVDQU16Z256mr, VMOVDQUYmr) ENTRY(VMOVDQU16Z256rm, VMOVDQUYrm) ENTRY(VMOVDQU16Z256rr, VMOVDQUYrr) ENTRY(VMOVDQU8Z256mr, VMOVDQUYmr) ENTRY(VMOVDQU8Z256rm, VMOVDQUYrm) ENTRY(VMOVDQU8Z256rr, VMOVDQUYrr) ENTRY(VSHUFF32X4Z256rmi, VPERM2F128rm) ENTRY(VSHUFF32X4Z256rri, VPERM2F128rr) ENTRY(VSHUFF64X2Z256rmi, VPERM2F128rm) ENTRY(VSHUFF64X2Z256rri, VPERM2F128rr) ENTRY(VSHUFI32X4Z256rmi, VPERM2I128rm) ENTRY(VSHUFI32X4Z256rri, VPERM2I128rr) ENTRY(VSHUFI64X2Z256rmi, VPERM2I128rm) ENTRY(VSHUFI64X2Z256rri, VPERM2I128rr) // W bit does not match ENTRY(VADDPDZ128rm, VADDPDrm) ENTRY(VADDPDZ128rr, VADDPDrr) ENTRY(VADDSDZrm, VADDSDrm) ENTRY(VADDSDZrm_Int, VADDSDrm_Int) ENTRY(VADDSDZrr, VADDSDrr) ENTRY(VADDSDZrr_Int, VADDSDrr_Int) ENTRY(VANDNPDZ128rm, VANDNPDrm) ENTRY(VANDNPDZ128rr, VANDNPDrr) ENTRY(VANDPDZ128rm, VANDPDrm) ENTRY(VANDPDZ128rr, VANDPDrr) ENTRY(VCOMISDZrm, VCOMISDrm) ENTRY(VCOMISDZrm_Int, VCOMISDrm_Int) ENTRY(VCOMISDZrr, VCOMISDrr) ENTRY(VCOMISDZrr_Int, VCOMISDrr_Int) ENTRY(VCVTPD2DQZ128rm, VCVTPD2DQrm) ENTRY(VCVTPD2DQZ128rr, VCVTPD2DQrr) ENTRY(VCVTPD2PSZ128rm, VCVTPD2PSrm) ENTRY(VCVTPD2PSZ128rr, VCVTPD2PSrr) ENTRY(VCVTSD2SSZrm, VCVTSD2SSrm) ENTRY(VCVTSD2SSZrm_Int, VCVTSD2SSrm_Int) ENTRY(VCVTSD2SSZrr, VCVTSD2SSrr) ENTRY(VCVTSD2SSZrr_Int, VCVTSD2SSrr_Int) ENTRY(VCVTTPD2DQZ128rm, VCVTTPD2DQrm) ENTRY(VCVTTPD2DQZ128rr, VCVTTPD2DQrr) ENTRY(VDIVPDZ128rm, VDIVPDrm) ENTRY(VDIVPDZ128rr, VDIVPDrr) ENTRY(VDIVSDZrm, VDIVSDrm) ENTRY(VDIVSDZrm_Int, VDIVSDrm_Int) ENTRY(VDIVSDZrr, VDIVSDrr) ENTRY(VDIVSDZrr_Int, VDIVSDrr_Int) ENTRY(VMAXCPDZ128rm, VMAXCPDrm) ENTRY(VMAXCPDZ128rr, VMAXCPDrr) ENTRY(VMAXCSDZrm, VMAXCSDrm) ENTRY(VMAXCSDZrr, VMAXCSDrr) ENTRY(VMAXPDZ128rm, VMAXPDrm) ENTRY(VMAXPDZ128rr, VMAXPDrr) ENTRY(VMAXSDZrm_Int, VMAXSDrm_Int) ENTRY(VMAXSDZrr_Int, VMAXSDrr_Int) ENTRY(VMINCPDZ128rm, VMINCPDrm) ENTRY(VMINCPDZ128rr, VMINCPDrr) ENTRY(VMINCSDZrm, VMINCSDrm) ENTRY(VMINCSDZrr, VMINCSDrr) ENTRY(VMINPDZ128rm, VMINPDrm) ENTRY(VMINPDZ128rr, VMINPDrr) ENTRY(VMINSDZrm_Int, VMINSDrm_Int) ENTRY(VMINSDZrr_Int, VMINSDrr_Int) ENTRY(VMOVAPDZ128mr, VMOVAPDmr) ENTRY(VMOVAPDZ128rm, VMOVAPDrm) ENTRY(VMOVAPDZ128rr, VMOVAPDrr) ENTRY(VMOVDDUPZ128rm, VMOVDDUPrm) ENTRY(VMOVDDUPZ128rr, VMOVDDUPrr) ENTRY(VMOVDQA64Z128mr, VMOVDQAmr) ENTRY(VMOVDQA64Z128rm, VMOVDQArm) ENTRY(VMOVDQA64Z128rr, VMOVDQArr) ENTRY(VMOVDQU64Z128mr, VMOVDQUmr) ENTRY(VMOVDQU64Z128rm, VMOVDQUrm) ENTRY(VMOVDQU64Z128rr, VMOVDQUrr) ENTRY(VMOVHPDZ128mr, VMOVHPDmr) ENTRY(VMOVHPDZ128rm, VMOVHPDrm) ENTRY(VMOVLPDZ128mr, VMOVLPDmr) ENTRY(VMOVLPDZ128rm, VMOVLPDrm) ENTRY(VMOVNTPDZ128mr, VMOVNTPDmr) ENTRY(VMOVPQI2QIZmr, VMOVPQI2QImr) ENTRY(VMOVPQI2QIZrr, VMOVPQI2QIrr) ENTRY(VMOVQI2PQIZrm, VMOVQI2PQIrm) ENTRY(VMOVSDZmr, VMOVSDmr) ENTRY(VMOVSDZrm, VMOVSDrm) ENTRY(VMOVSDZrm_alt, VMOVSDrm_alt) ENTRY(VMOVSDZrr, VMOVSDrr) ENTRY(VMOVUPDZ128mr, VMOVUPDmr) ENTRY(VMOVUPDZ128rm, VMOVUPDrm) ENTRY(VMOVUPDZ128rr, VMOVUPDrr) ENTRY(VMOVZPQILo2PQIZrr, VMOVZPQILo2PQIrr) ENTRY(VMULPDZ128rm, VMULPDrm) ENTRY(VMULPDZ128rr, VMULPDrr) ENTRY(VMULSDZrm, VMULSDrm) ENTRY(VMULSDZrm_Int, VMULSDrm_Int) ENTRY(VMULSDZrr, VMULSDrr) ENTRY(VMULSDZrr_Int, VMULSDrr_Int) ENTRY(VORPDZ128rm, VORPDrm) ENTRY(VORPDZ128rr, VORPDrr) ENTRY(VPADDQZ128rm, VPADDQrm) ENTRY(VPADDQZ128rr, VPADDQrr) ENTRY(VPANDNQZ128rm, VPANDNrm) ENTRY(VPANDNQZ128rr, VPANDNrr) ENTRY(VPANDQZ128rm, VPANDrm) ENTRY(VPANDQZ128rr, VPANDrr) ENTRY(VPERMILPDZ128mi, VPERMILPDmi) ENTRY(VPERMILPDZ128ri, VPERMILPDri) ENTRY(VPERMILPDZ128rm, VPERMILPDrm) ENTRY(VPERMILPDZ128rr, VPERMILPDrr) ENTRY(VPMULDQZ128rm, VPMULDQrm) ENTRY(VPMULDQZ128rr, VPMULDQrr) ENTRY(VPMULUDQZ128rm, VPMULUDQrm) ENTRY(VPMULUDQZ128rr, VPMULUDQrr) ENTRY(VPORQZ128rm, VPORrm) ENTRY(VPORQZ128rr, VPORrr) ENTRY(VPSLLQZ128ri, VPSLLQri) ENTRY(VPSLLQZ128rm, VPSLLQrm) ENTRY(VPSLLQZ128rr, VPSLLQrr) ENTRY(VPSRLQZ128ri, VPSRLQri) ENTRY(VPSRLQZ128rm, VPSRLQrm) ENTRY(VPSRLQZ128rr, VPSRLQrr) ENTRY(VPSUBQZ128rm, VPSUBQrm) ENTRY(VPSUBQZ128rr, VPSUBQrr) ENTRY(VPUNPCKHQDQZ128rm, VPUNPCKHQDQrm) ENTRY(VPUNPCKHQDQZ128rr, VPUNPCKHQDQrr) ENTRY(VPUNPCKLQDQZ128rm, VPUNPCKLQDQrm) ENTRY(VPUNPCKLQDQZ128rr, VPUNPCKLQDQrr) ENTRY(VPXORQZ128rm, VPXORrm) ENTRY(VPXORQZ128rr, VPXORrr) ENTRY(VRNDSCALEPDZ128rmi, VROUNDPDmi) ENTRY(VRNDSCALEPDZ128rri, VROUNDPDri) ENTRY(VRNDSCALESDZm, VROUNDSDmi) ENTRY(VRNDSCALESDZm_Int, VROUNDSDmi_Int) ENTRY(VRNDSCALESDZr, VROUNDSDri) ENTRY(VRNDSCALESDZr_Int, VROUNDSDri_Int) ENTRY(VSHUFPDZ128rmi, VSHUFPDrmi) ENTRY(VSHUFPDZ128rri, VSHUFPDrri) ENTRY(VSQRTPDZ128m, VSQRTPDm) ENTRY(VSQRTPDZ128r, VSQRTPDr) ENTRY(VSQRTSDZm, VSQRTSDm) ENTRY(VSQRTSDZm_Int, VSQRTSDm_Int) ENTRY(VSQRTSDZr, VSQRTSDr) ENTRY(VSQRTSDZr_Int, VSQRTSDr_Int) ENTRY(VSUBPDZ128rm, VSUBPDrm) ENTRY(VSUBPDZ128rr, VSUBPDrr) ENTRY(VSUBSDZrm, VSUBSDrm) ENTRY(VSUBSDZrm_Int, VSUBSDrm_Int) ENTRY(VSUBSDZrr, VSUBSDrr) ENTRY(VSUBSDZrr_Int, VSUBSDrr_Int) ENTRY(VUCOMISDZrm, VUCOMISDrm) ENTRY(VUCOMISDZrm_Int, VUCOMISDrm_Int) ENTRY(VUCOMISDZrr, VUCOMISDrr) ENTRY(VUCOMISDZrr_Int, VUCOMISDrr_Int) ENTRY(VUNPCKHPDZ128rm, VUNPCKHPDrm) ENTRY(VUNPCKHPDZ128rr, VUNPCKHPDrr) ENTRY(VUNPCKLPDZ128rm, VUNPCKLPDrm) ENTRY(VUNPCKLPDZ128rr, VUNPCKLPDrr) ENTRY(VXORPDZ128rm, VXORPDrm) ENTRY(VXORPDZ128rr, VXORPDrr) ENTRY(VADDPDZ256rm, VADDPDYrm) ENTRY(VADDPDZ256rr, VADDPDYrr) ENTRY(VANDNPDZ256rm, VANDNPDYrm) ENTRY(VANDNPDZ256rr, VANDNPDYrr) ENTRY(VANDPDZ256rm, VANDPDYrm) ENTRY(VANDPDZ256rr, VANDPDYrr) ENTRY(VCVTPD2DQZ256rm, VCVTPD2DQYrm) ENTRY(VCVTPD2DQZ256rr, VCVTPD2DQYrr) ENTRY(VCVTPD2PSZ256rm, VCVTPD2PSYrm) ENTRY(VCVTPD2PSZ256rr, VCVTPD2PSYrr) ENTRY(VCVTTPD2DQZ256rm, VCVTTPD2DQYrm) ENTRY(VCVTTPD2DQZ256rr, VCVTTPD2DQYrr) ENTRY(VDIVPDZ256rm, VDIVPDYrm) ENTRY(VDIVPDZ256rr, VDIVPDYrr) ENTRY(VEXTRACTF64x2Z256mr, VEXTRACTF128mr) ENTRY(VEXTRACTF64x2Z256rr, VEXTRACTF128rr) ENTRY(VEXTRACTI64x2Z256mr, VEXTRACTI128mr) ENTRY(VEXTRACTI64x2Z256rr, VEXTRACTI128rr) ENTRY(VINSERTF64x2Z256rm, VINSERTF128rm) ENTRY(VINSERTF64x2Z256rr, VINSERTF128rr) ENTRY(VINSERTI64x2Z256rm, VINSERTI128rm) ENTRY(VINSERTI64x2Z256rr, VINSERTI128rr) ENTRY(VMAXCPDZ256rm, VMAXCPDYrm) ENTRY(VMAXCPDZ256rr, VMAXCPDYrr) ENTRY(VMAXPDZ256rm, VMAXPDYrm) ENTRY(VMAXPDZ256rr, VMAXPDYrr) ENTRY(VMINCPDZ256rm, VMINCPDYrm) ENTRY(VMINCPDZ256rr, VMINCPDYrr) ENTRY(VMINPDZ256rm, VMINPDYrm) ENTRY(VMINPDZ256rr, VMINPDYrr) ENTRY(VMOVAPDZ256mr, VMOVAPDYmr) ENTRY(VMOVAPDZ256rm, VMOVAPDYrm) ENTRY(VMOVAPDZ256rr, VMOVAPDYrr) ENTRY(VMOVDDUPZ256rm, VMOVDDUPYrm) ENTRY(VMOVDDUPZ256rr, VMOVDDUPYrr) ENTRY(VMOVDQA64Z256mr, VMOVDQAYmr) ENTRY(VMOVDQA64Z256rm, VMOVDQAYrm) ENTRY(VMOVDQA64Z256rr, VMOVDQAYrr) ENTRY(VMOVDQU64Z256mr, VMOVDQUYmr) ENTRY(VMOVDQU64Z256rm, VMOVDQUYrm) ENTRY(VMOVDQU64Z256rr, VMOVDQUYrr) ENTRY(VMOVNTPDZ256mr, VMOVNTPDYmr) ENTRY(VMOVUPDZ256mr, VMOVUPDYmr) ENTRY(VMOVUPDZ256rm, VMOVUPDYrm) ENTRY(VMOVUPDZ256rr, VMOVUPDYrr) ENTRY(VMULPDZ256rm, VMULPDYrm) ENTRY(VMULPDZ256rr, VMULPDYrr) ENTRY(VORPDZ256rm, VORPDYrm) ENTRY(VORPDZ256rr, VORPDYrr) ENTRY(VPADDQZ256rm, VPADDQYrm) ENTRY(VPADDQZ256rr, VPADDQYrr) ENTRY(VPANDNQZ256rm, VPANDNYrm) ENTRY(VPANDNQZ256rr, VPANDNYrr) ENTRY(VPANDQZ256rm, VPANDYrm) ENTRY(VPANDQZ256rr, VPANDYrr) ENTRY(VPERMILPDZ256mi, VPERMILPDYmi) ENTRY(VPERMILPDZ256ri, VPERMILPDYri) ENTRY(VPERMILPDZ256rm, VPERMILPDYrm) ENTRY(VPERMILPDZ256rr, VPERMILPDYrr) ENTRY(VPMULDQZ256rm, VPMULDQYrm) ENTRY(VPMULDQZ256rr, VPMULDQYrr) ENTRY(VPMULUDQZ256rm, VPMULUDQYrm) ENTRY(VPMULUDQZ256rr, VPMULUDQYrr) ENTRY(VPORQZ256rm, VPORYrm) ENTRY(VPORQZ256rr, VPORYrr) ENTRY(VPSLLQZ256ri, VPSLLQYri) ENTRY(VPSLLQZ256rm, VPSLLQYrm) ENTRY(VPSLLQZ256rr, VPSLLQYrr) ENTRY(VPSRLQZ256ri, VPSRLQYri) ENTRY(VPSRLQZ256rm, VPSRLQYrm) ENTRY(VPSRLQZ256rr, VPSRLQYrr) ENTRY(VPSUBQZ256rm, VPSUBQYrm) ENTRY(VPSUBQZ256rr, VPSUBQYrr) ENTRY(VPUNPCKHQDQZ256rm, VPUNPCKHQDQYrm) ENTRY(VPUNPCKHQDQZ256rr, VPUNPCKHQDQYrr) ENTRY(VPUNPCKLQDQZ256rm, VPUNPCKLQDQYrm) ENTRY(VPUNPCKLQDQZ256rr, VPUNPCKLQDQYrr) ENTRY(VPXORQZ256rm, VPXORYrm) ENTRY(VPXORQZ256rr, VPXORYrr) ENTRY(VRNDSCALEPDZ256rmi, VROUNDPDYmi) ENTRY(VRNDSCALEPDZ256rri, VROUNDPDYri) ENTRY(VSHUFPDZ256rmi, VSHUFPDYrmi) ENTRY(VSHUFPDZ256rri, VSHUFPDYrri) ENTRY(VSQRTPDZ256m, VSQRTPDYm) ENTRY(VSQRTPDZ256r, VSQRTPDYr) ENTRY(VSUBPDZ256rm, VSUBPDYrm) ENTRY(VSUBPDZ256rr, VSUBPDYrr) ENTRY(VUNPCKHPDZ256rm, VUNPCKHPDYrm) ENTRY(VUNPCKHPDZ256rr, VUNPCKHPDYrr) ENTRY(VUNPCKLPDZ256rm, VUNPCKLPDYrm) ENTRY(VUNPCKLPDZ256rr, VUNPCKLPDYrr) ENTRY(VXORPDZ256rm, VXORPDYrm) ENTRY(VXORPDZ256rr, VXORPDYrr) ENTRY(VPBROADCASTQZ128rm, VPBROADCASTQrm) ENTRY(VPBROADCASTQZ128rr, VPBROADCASTQrr) ENTRY(VBROADCASTF64X2Z128rm, VBROADCASTF128rm) ENTRY(VBROADCASTI64X2Z128rm, VBROADCASTI128rm) ENTRY(VBROADCASTSDZ256rm, VBROADCASTSDYrm) ENTRY(VBROADCASTSDZ256rr, VBROADCASTSDYrr) ENTRY(VPBROADCASTQZ256rm, VPBROADCASTQYrm) ENTRY(VPBROADCASTQZ256rr, VPBROADCASTQYrr) #undef ENTRY #ifndef NOCOMP_ND #define NOCOMP_ND(INSN) #endif // When condition evaluates to false, the destination register is zeroed for // nonNDD CFCMOV but not for NDD CFCMOV. NOCOMP_ND(CFCMOV16rm_ND) NOCOMP_ND(CFCMOV16rr_ND) NOCOMP_ND(CFCMOV32rm_ND) NOCOMP_ND(CFCMOV32rr_ND) NOCOMP_ND(CFCMOV64rm_ND) NOCOMP_ND(CFCMOV64rr_ND) #undef NOCOMP_ND #ifndef ENTRY_ND #define ENTRY_ND(OLD, NEW) #endif ENTRY_ND(MOVBE32rr, BSWAP32r) ENTRY_ND(MOVBE64rr, BSWAP64r) #undef ENTRY_ND #ifndef ENTRY_SSE2AVX #define ENTRY_SSE2AVX(OLD, NEW) #endif ENTRY_SSE2AVX(BLENDVPDrm0, VBLENDVPDrmr) ENTRY_SSE2AVX(BLENDVPDrr0, VBLENDVPDrrr) ENTRY_SSE2AVX(BLENDVPSrm0, VBLENDVPSrmr) ENTRY_SSE2AVX(BLENDVPSrr0, VBLENDVPSrrr) ENTRY_SSE2AVX(PBLENDVBrm0, VPBLENDVBrmr) ENTRY_SSE2AVX(PBLENDVBrr0, VPBLENDVBrrr) #undef ENTRY_SSE2AVX