brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.4 KiB · 662c13e Raw
368 lines · plain
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-exception6//7//===----------------------------------------------------------------------===//8// \file9// This file defines all the entries in X86 EVEX compression tables that need10// special handling.11//===----------------------------------------------------------------------===//12 13#ifndef NOCOMP14#define NOCOMP(INSN)15#endif16NOCOMP(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(VMOVZPDILo2PDIZrr)36NOCOMP(VDBPSADBWZ256rmi)37NOCOMP(VDBPSADBWZ256rri)38NOCOMP(VPMAXSQZ256rm)39NOCOMP(VPMAXSQZ256rr)40NOCOMP(VPMAXUQZ256rm)41NOCOMP(VPMAXUQZ256rr)42NOCOMP(VPMINSQZ256rm)43NOCOMP(VPMINSQZ256rr)44NOCOMP(VPMINUQZ256rm)45NOCOMP(VPMINUQZ256rr)46NOCOMP(VPMULLQZ256rm)47NOCOMP(VPMULLQZ256rr)48NOCOMP(VPSRAQZ256ri)49NOCOMP(VPSRAQZ256rm)50NOCOMP(VPSRAQZ256rr)51NOCOMP(VSCALEFPSZ256rm)52#undef NOCOMP53 54#ifndef ENTRY55#define ENTRY(OLD, NEW)56#endif57ENTRY(VALIGNDZ128rmi, VPALIGNRrmi)58ENTRY(VALIGNDZ128rri, VPALIGNRrri)59ENTRY(VALIGNQZ128rmi, VPALIGNRrmi)60ENTRY(VALIGNQZ128rri, VPALIGNRrri)61ENTRY(VMAXSDZrm, VMAXSDrm)62ENTRY(VMAXSDZrr, VMAXSDrr)63ENTRY(VMAXSSZrm, VMAXSSrm)64ENTRY(VMAXSSZrr, VMAXSSrr)65ENTRY(VMINSDZrm, VMINSDrm)66ENTRY(VMINSDZrr, VMINSDrr)67ENTRY(VMINSSZrm, VMINSSrm)68ENTRY(VMINSSZrr, VMINSSrr)69ENTRY(VMOVDQU16Z128mr, VMOVDQUmr)70ENTRY(VMOVDQU16Z128rm, VMOVDQUrm)71ENTRY(VMOVDQU16Z128rr, VMOVDQUrr)72ENTRY(VMOVDQU8Z128mr, VMOVDQUmr)73ENTRY(VMOVDQU8Z128rm, VMOVDQUrm)74ENTRY(VMOVDQU8Z128rr, VMOVDQUrr)75ENTRY(VMOVDQU16Z256mr, VMOVDQUYmr)76ENTRY(VMOVDQU16Z256rm, VMOVDQUYrm)77ENTRY(VMOVDQU16Z256rr, VMOVDQUYrr)78ENTRY(VMOVDQU8Z256mr, VMOVDQUYmr)79ENTRY(VMOVDQU8Z256rm, VMOVDQUYrm)80ENTRY(VMOVDQU8Z256rr, VMOVDQUYrr)81ENTRY(VMPSADBWZ128rmi, VMPSADBWrmi)82ENTRY(VMPSADBWZ128rri, VMPSADBWrri)83ENTRY(VMPSADBWZ256rmi, VMPSADBWYrmi)84ENTRY(VMPSADBWZ256rri, VMPSADBWYrri)85ENTRY(VSHUFF32X4Z256rmi, VPERM2F128rmi)86ENTRY(VSHUFF32X4Z256rri, VPERM2F128rri)87ENTRY(VSHUFF64X2Z256rmi, VPERM2F128rmi)88ENTRY(VSHUFF64X2Z256rri, VPERM2F128rri)89ENTRY(VSHUFI32X4Z256rmi, VPERM2I128rmi)90ENTRY(VSHUFI32X4Z256rri, VPERM2I128rri)91ENTRY(VSHUFI64X2Z256rmi, VPERM2I128rmi)92ENTRY(VSHUFI64X2Z256rri, VPERM2I128rri)93// W bit does not match94ENTRY(VADDPDZ128rm, VADDPDrm)95ENTRY(VADDPDZ128rr, VADDPDrr)96ENTRY(VADDSDZrm, VADDSDrm)97ENTRY(VADDSDZrm_Int, VADDSDrm_Int)98ENTRY(VADDSDZrr, VADDSDrr)99ENTRY(VADDSDZrr_Int, VADDSDrr_Int)100ENTRY(VANDNPDZ128rm, VANDNPDrm)101ENTRY(VANDNPDZ128rr, VANDNPDrr)102ENTRY(VANDPDZ128rm, VANDPDrm)103ENTRY(VANDPDZ128rr, VANDPDrr)104ENTRY(VCOMISDZrm, VCOMISDrm)105ENTRY(VCOMISDZrm_Int, VCOMISDrm_Int)106ENTRY(VCOMISDZrr, VCOMISDrr)107ENTRY(VCOMISDZrr_Int, VCOMISDrr_Int)108ENTRY(VCVTPD2DQZ128rm, VCVTPD2DQrm)109ENTRY(VCVTPD2DQZ128rr, VCVTPD2DQrr)110ENTRY(VCVTPD2PSZ128rm, VCVTPD2PSrm)111ENTRY(VCVTPD2PSZ128rr, VCVTPD2PSrr)112ENTRY(VCVTSD2SSZrm, VCVTSD2SSrm)113ENTRY(VCVTSD2SSZrm_Int, VCVTSD2SSrm_Int)114ENTRY(VCVTSD2SSZrr, VCVTSD2SSrr)115ENTRY(VCVTSD2SSZrr_Int, VCVTSD2SSrr_Int)116ENTRY(VCVTTPD2DQZ128rm, VCVTTPD2DQrm)117ENTRY(VCVTTPD2DQZ128rr, VCVTTPD2DQrr)118ENTRY(VDIVPDZ128rm, VDIVPDrm)119ENTRY(VDIVPDZ128rr, VDIVPDrr)120ENTRY(VDIVSDZrm, VDIVSDrm)121ENTRY(VDIVSDZrm_Int, VDIVSDrm_Int)122ENTRY(VDIVSDZrr, VDIVSDrr)123ENTRY(VDIVSDZrr_Int, VDIVSDrr_Int)124ENTRY(VMAXCPDZ128rm, VMAXCPDrm)125ENTRY(VMAXCPDZ128rr, VMAXCPDrr)126ENTRY(VMAXCSDZrm, VMAXCSDrm)127ENTRY(VMAXCSDZrr, VMAXCSDrr)128ENTRY(VMAXPDZ128rm, VMAXPDrm)129ENTRY(VMAXPDZ128rr, VMAXPDrr)130ENTRY(VMAXSDZrm_Int, VMAXSDrm_Int)131ENTRY(VMAXSDZrr_Int, VMAXSDrr_Int)132ENTRY(VMINCPDZ128rm, VMINCPDrm)133ENTRY(VMINCPDZ128rr, VMINCPDrr)134ENTRY(VMINCSDZrm, VMINCSDrm)135ENTRY(VMINCSDZrr, VMINCSDrr)136ENTRY(VMINPDZ128rm, VMINPDrm)137ENTRY(VMINPDZ128rr, VMINPDrr)138ENTRY(VMINSDZrm_Int, VMINSDrm_Int)139ENTRY(VMINSDZrr_Int, VMINSDrr_Int)140ENTRY(VMOVAPDZ128mr, VMOVAPDmr)141ENTRY(VMOVAPDZ128rm, VMOVAPDrm)142ENTRY(VMOVAPDZ128rr, VMOVAPDrr)143ENTRY(VMOVDDUPZ128rm, VMOVDDUPrm)144ENTRY(VMOVDDUPZ128rr, VMOVDDUPrr)145ENTRY(VMOVDQA64Z128mr, VMOVDQAmr)146ENTRY(VMOVDQA64Z128rm, VMOVDQArm)147ENTRY(VMOVDQA64Z128rr, VMOVDQArr)148ENTRY(VMOVDQU64Z128mr, VMOVDQUmr)149ENTRY(VMOVDQU64Z128rm, VMOVDQUrm)150ENTRY(VMOVDQU64Z128rr, VMOVDQUrr)151ENTRY(VMOVHPDZ128mr, VMOVHPDmr)152ENTRY(VMOVHPDZ128rm, VMOVHPDrm)153ENTRY(VMOVLPDZ128mr, VMOVLPDmr)154ENTRY(VMOVLPDZ128rm, VMOVLPDrm)155ENTRY(VMOVNTPDZ128mr, VMOVNTPDmr)156ENTRY(VMOVPQI2QIZmr, VMOVPQI2QImr)157ENTRY(VMOVPQI2QIZrr, VMOVPQI2QIrr)158ENTRY(VMOVQI2PQIZrm, VMOVQI2PQIrm)159ENTRY(VMOVSDZmr, VMOVSDmr)160ENTRY(VMOVSDZrm, VMOVSDrm)161ENTRY(VMOVSDZrm_alt, VMOVSDrm_alt)162ENTRY(VMOVSDZrr, VMOVSDrr)163ENTRY(VMOVUPDZ128mr, VMOVUPDmr)164ENTRY(VMOVUPDZ128rm, VMOVUPDrm)165ENTRY(VMOVUPDZ128rr, VMOVUPDrr)166ENTRY(VMOVZPQILo2PQIZrr, VMOVZPQILo2PQIrr)167ENTRY(VMULPDZ128rm, VMULPDrm)168ENTRY(VMULPDZ128rr, VMULPDrr)169ENTRY(VMULSDZrm, VMULSDrm)170ENTRY(VMULSDZrm_Int, VMULSDrm_Int)171ENTRY(VMULSDZrr, VMULSDrr)172ENTRY(VMULSDZrr_Int, VMULSDrr_Int)173ENTRY(VORPDZ128rm, VORPDrm)174ENTRY(VORPDZ128rr, VORPDrr)175ENTRY(VPADDQZ128rm, VPADDQrm)176ENTRY(VPADDQZ128rr, VPADDQrr)177ENTRY(VPANDNQZ128rm, VPANDNrm)178ENTRY(VPANDNQZ128rr, VPANDNrr)179ENTRY(VPANDQZ128rm, VPANDrm)180ENTRY(VPANDQZ128rr, VPANDrr)181ENTRY(VPERMILPDZ128mi, VPERMILPDmi)182ENTRY(VPERMILPDZ128ri, VPERMILPDri)183ENTRY(VPERMILPDZ128rm, VPERMILPDrm)184ENTRY(VPERMILPDZ128rr, VPERMILPDrr)185ENTRY(VPMULDQZ128rm, VPMULDQrm)186ENTRY(VPMULDQZ128rr, VPMULDQrr)187ENTRY(VPMULUDQZ128rm, VPMULUDQrm)188ENTRY(VPMULUDQZ128rr, VPMULUDQrr)189ENTRY(VPORQZ128rm, VPORrm)190ENTRY(VPORQZ128rr, VPORrr)191ENTRY(VPSLLQZ128ri, VPSLLQri)192ENTRY(VPSLLQZ128rm, VPSLLQrm)193ENTRY(VPSLLQZ128rr, VPSLLQrr)194ENTRY(VPSRLQZ128ri, VPSRLQri)195ENTRY(VPSRLQZ128rm, VPSRLQrm)196ENTRY(VPSRLQZ128rr, VPSRLQrr)197ENTRY(VPSUBQZ128rm, VPSUBQrm)198ENTRY(VPSUBQZ128rr, VPSUBQrr)199ENTRY(VPUNPCKHQDQZ128rm, VPUNPCKHQDQrm)200ENTRY(VPUNPCKHQDQZ128rr, VPUNPCKHQDQrr)201ENTRY(VPUNPCKLQDQZ128rm, VPUNPCKLQDQrm)202ENTRY(VPUNPCKLQDQZ128rr, VPUNPCKLQDQrr)203ENTRY(VPXORQZ128rm, VPXORrm)204ENTRY(VPXORQZ128rr, VPXORrr)205ENTRY(VRNDSCALEPDZ128rmi, VROUNDPDmi)206ENTRY(VRNDSCALEPDZ128rri, VROUNDPDri)207ENTRY(VRNDSCALESDZrmi, VROUNDSDmi)208ENTRY(VRNDSCALESDZrmi_Int, VROUNDSDmi_Int)209ENTRY(VRNDSCALESDZrri, VROUNDSDri)210ENTRY(VRNDSCALESDZrri_Int, VROUNDSDri_Int)211ENTRY(VSHUFPDZ128rmi, VSHUFPDrmi)212ENTRY(VSHUFPDZ128rri, VSHUFPDrri)213ENTRY(VSQRTPDZ128m, VSQRTPDm)214ENTRY(VSQRTPDZ128r, VSQRTPDr)215ENTRY(VSQRTSDZm, VSQRTSDm)216ENTRY(VSQRTSDZm_Int, VSQRTSDm_Int)217ENTRY(VSQRTSDZr, VSQRTSDr)218ENTRY(VSQRTSDZr_Int, VSQRTSDr_Int)219ENTRY(VSUBPDZ128rm, VSUBPDrm)220ENTRY(VSUBPDZ128rr, VSUBPDrr)221ENTRY(VSUBSDZrm, VSUBSDrm)222ENTRY(VSUBSDZrm_Int, VSUBSDrm_Int)223ENTRY(VSUBSDZrr, VSUBSDrr)224ENTRY(VSUBSDZrr_Int, VSUBSDrr_Int)225ENTRY(VUCOMISDZrm, VUCOMISDrm)226ENTRY(VUCOMISDZrm_Int, VUCOMISDrm_Int)227ENTRY(VUCOMISDZrr, VUCOMISDrr)228ENTRY(VUCOMISDZrr_Int, VUCOMISDrr_Int)229ENTRY(VUNPCKHPDZ128rm, VUNPCKHPDrm)230ENTRY(VUNPCKHPDZ128rr, VUNPCKHPDrr)231ENTRY(VUNPCKLPDZ128rm, VUNPCKLPDrm)232ENTRY(VUNPCKLPDZ128rr, VUNPCKLPDrr)233ENTRY(VXORPDZ128rm, VXORPDrm)234ENTRY(VXORPDZ128rr, VXORPDrr)235ENTRY(VADDPDZ256rm, VADDPDYrm)236ENTRY(VADDPDZ256rr, VADDPDYrr)237ENTRY(VANDNPDZ256rm, VANDNPDYrm)238ENTRY(VANDNPDZ256rr, VANDNPDYrr)239ENTRY(VANDPDZ256rm, VANDPDYrm)240ENTRY(VANDPDZ256rr, VANDPDYrr)241ENTRY(VCVTPD2DQZ256rm, VCVTPD2DQYrm)242ENTRY(VCVTPD2DQZ256rr, VCVTPD2DQYrr)243ENTRY(VCVTPD2PSZ256rm, VCVTPD2PSYrm)244ENTRY(VCVTPD2PSZ256rr, VCVTPD2PSYrr)245ENTRY(VCVTTPD2DQZ256rm, VCVTTPD2DQYrm)246ENTRY(VCVTTPD2DQZ256rr, VCVTTPD2DQYrr)247ENTRY(VDIVPDZ256rm, VDIVPDYrm)248ENTRY(VDIVPDZ256rr, VDIVPDYrr)249ENTRY(VEXTRACTF64X2Z256mri, VEXTRACTF128mri)250ENTRY(VEXTRACTF64X2Z256rri, VEXTRACTF128rri)251ENTRY(VEXTRACTI64X2Z256mri, VEXTRACTI128mri)252ENTRY(VEXTRACTI64X2Z256rri, VEXTRACTI128rri)253ENTRY(VINSERTF64X2Z256rmi, VINSERTF128rmi)254ENTRY(VINSERTF64X2Z256rri, VINSERTF128rri)255ENTRY(VINSERTI64X2Z256rmi, VINSERTI128rmi)256ENTRY(VINSERTI64X2Z256rri, VINSERTI128rri)257ENTRY(VMAXCPDZ256rm, VMAXCPDYrm)258ENTRY(VMAXCPDZ256rr, VMAXCPDYrr)259ENTRY(VMAXPDZ256rm, VMAXPDYrm)260ENTRY(VMAXPDZ256rr, VMAXPDYrr)261ENTRY(VMINCPDZ256rm, VMINCPDYrm)262ENTRY(VMINCPDZ256rr, VMINCPDYrr)263ENTRY(VMINPDZ256rm, VMINPDYrm)264ENTRY(VMINPDZ256rr, VMINPDYrr)265ENTRY(VMOVAPDZ256mr, VMOVAPDYmr)266ENTRY(VMOVAPDZ256rm, VMOVAPDYrm)267ENTRY(VMOVAPDZ256rr, VMOVAPDYrr)268ENTRY(VMOVDDUPZ256rm, VMOVDDUPYrm)269ENTRY(VMOVDDUPZ256rr, VMOVDDUPYrr)270ENTRY(VMOVDQA64Z256mr, VMOVDQAYmr)271ENTRY(VMOVDQA64Z256rm, VMOVDQAYrm)272ENTRY(VMOVDQA64Z256rr, VMOVDQAYrr)273ENTRY(VMOVDQU64Z256mr, VMOVDQUYmr)274ENTRY(VMOVDQU64Z256rm, VMOVDQUYrm)275ENTRY(VMOVDQU64Z256rr, VMOVDQUYrr)276ENTRY(VMOVNTPDZ256mr, VMOVNTPDYmr)277ENTRY(VMOVUPDZ256mr, VMOVUPDYmr)278ENTRY(VMOVUPDZ256rm, VMOVUPDYrm)279ENTRY(VMOVUPDZ256rr, VMOVUPDYrr)280ENTRY(VMULPDZ256rm, VMULPDYrm)281ENTRY(VMULPDZ256rr, VMULPDYrr)282ENTRY(VORPDZ256rm, VORPDYrm)283ENTRY(VORPDZ256rr, VORPDYrr)284ENTRY(VPADDQZ256rm, VPADDQYrm)285ENTRY(VPADDQZ256rr, VPADDQYrr)286ENTRY(VPANDNQZ256rm, VPANDNYrm)287ENTRY(VPANDNQZ256rr, VPANDNYrr)288ENTRY(VPANDQZ256rm, VPANDYrm)289ENTRY(VPANDQZ256rr, VPANDYrr)290ENTRY(VPERMILPDZ256mi, VPERMILPDYmi)291ENTRY(VPERMILPDZ256ri, VPERMILPDYri)292ENTRY(VPERMILPDZ256rm, VPERMILPDYrm)293ENTRY(VPERMILPDZ256rr, VPERMILPDYrr)294ENTRY(VPMULDQZ256rm, VPMULDQYrm)295ENTRY(VPMULDQZ256rr, VPMULDQYrr)296ENTRY(VPMULUDQZ256rm, VPMULUDQYrm)297ENTRY(VPMULUDQZ256rr, VPMULUDQYrr)298ENTRY(VPORQZ256rm, VPORYrm)299ENTRY(VPORQZ256rr, VPORYrr)300ENTRY(VPSLLQZ256ri, VPSLLQYri)301ENTRY(VPSLLQZ256rm, VPSLLQYrm)302ENTRY(VPSLLQZ256rr, VPSLLQYrr)303ENTRY(VPSRLQZ256ri, VPSRLQYri)304ENTRY(VPSRLQZ256rm, VPSRLQYrm)305ENTRY(VPSRLQZ256rr, VPSRLQYrr)306ENTRY(VPSUBQZ256rm, VPSUBQYrm)307ENTRY(VPSUBQZ256rr, VPSUBQYrr)308ENTRY(VPUNPCKHQDQZ256rm, VPUNPCKHQDQYrm)309ENTRY(VPUNPCKHQDQZ256rr, VPUNPCKHQDQYrr)310ENTRY(VPUNPCKLQDQZ256rm, VPUNPCKLQDQYrm)311ENTRY(VPUNPCKLQDQZ256rr, VPUNPCKLQDQYrr)312ENTRY(VPXORQZ256rm, VPXORYrm)313ENTRY(VPXORQZ256rr, VPXORYrr)314ENTRY(VRNDSCALEPDZ256rmi, VROUNDPDYmi)315ENTRY(VRNDSCALEPDZ256rri, VROUNDPDYri)316ENTRY(VSHUFPDZ256rmi, VSHUFPDYrmi)317ENTRY(VSHUFPDZ256rri, VSHUFPDYrri)318ENTRY(VSQRTPDZ256m, VSQRTPDYm)319ENTRY(VSQRTPDZ256r, VSQRTPDYr)320ENTRY(VSUBPDZ256rm, VSUBPDYrm)321ENTRY(VSUBPDZ256rr, VSUBPDYrr)322ENTRY(VUNPCKHPDZ256rm, VUNPCKHPDYrm)323ENTRY(VUNPCKHPDZ256rr, VUNPCKHPDYrr)324ENTRY(VUNPCKLPDZ256rm, VUNPCKLPDYrm)325ENTRY(VUNPCKLPDZ256rr, VUNPCKLPDYrr)326ENTRY(VXORPDZ256rm, VXORPDYrm)327ENTRY(VXORPDZ256rr, VXORPDYrr)328ENTRY(VPBROADCASTQZ128rm, VPBROADCASTQrm)329ENTRY(VPBROADCASTQZ128rr, VPBROADCASTQrr)330ENTRY(VBROADCASTF64X2Z128rm, VBROADCASTF128rm)331ENTRY(VBROADCASTI64X2Z128rm, VBROADCASTI128rm)332ENTRY(VBROADCASTSDZ256rm, VBROADCASTSDYrm)333ENTRY(VBROADCASTSDZ256rr, VBROADCASTSDYrr)334ENTRY(VPBROADCASTQZ256rm, VPBROADCASTQYrm)335ENTRY(VPBROADCASTQZ256rr, VPBROADCASTQYrr)336#undef ENTRY337 338#ifndef NOCOMP_ND339#define NOCOMP_ND(INSN)340#endif341// When condition evaluates to false, the destination register is zeroed for342// nonNDD CFCMOV but not for NDD CFCMOV.343NOCOMP_ND(CFCMOV16rm_ND)344NOCOMP_ND(CFCMOV16rr_ND)345NOCOMP_ND(CFCMOV32rm_ND)346NOCOMP_ND(CFCMOV32rr_ND)347NOCOMP_ND(CFCMOV64rm_ND)348NOCOMP_ND(CFCMOV64rr_ND)349#undef NOCOMP_ND350 351#ifndef ENTRY_ND352#define ENTRY_ND(OLD, NEW)353#endif354ENTRY_ND(MOVBE32rr, BSWAP32r)355ENTRY_ND(MOVBE64rr, BSWAP64r)356#undef ENTRY_ND357 358#ifndef ENTRY_SSE2AVX359#define ENTRY_SSE2AVX(OLD, NEW)360#endif361ENTRY_SSE2AVX(BLENDVPDrm0, VBLENDVPDrmr)362ENTRY_SSE2AVX(BLENDVPDrr0, VBLENDVPDrrr)363ENTRY_SSE2AVX(BLENDVPSrm0, VBLENDVPSrmr)364ENTRY_SSE2AVX(BLENDVPSrr0, VBLENDVPSrrr)365ENTRY_SSE2AVX(PBLENDVBrm0, VPBLENDVBrmr)366ENTRY_SSE2AVX(PBLENDVBrr0, VPBLENDVBrrr)367#undef ENTRY_SSE2AVX368