diff options
-rw-r--r-- | llvm/lib/Target/X86/X86SchedHaswell.td | 437 |
1 files changed, 119 insertions, 318 deletions
diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td index 3ef90062763..c15498d3eee 100644 --- a/llvm/lib/Target/X86/X86SchedHaswell.td +++ b/llvm/lib/Target/X86/X86SchedHaswell.td @@ -23,7 +23,7 @@ def HaswellModel : SchedMachineModel { // Based on the LSD (loop-stream detector) queue size and benchmarking data. let LoopMicroOpBufferSize = 50; - // This flag is set to allow the scheduler to assign a default model to + // This flag is set to allow the scheduler to assign a default model to // unrecognized opcodes. let CompleteModel = 0; } @@ -687,10 +687,8 @@ def: InstRW<[HWWriteResGroup2], (instregex "MMX_MOVD64from64rr", "(V?)PSRLQ(Y?)ri", "VPSRLVQ(Y?)rr", "(V?)PSRLW(Y?)ri", - "VTESTPDYrr", - "VTESTPDrr", - "VTESTPSYrr", - "VTESTPSrr")>; + "VTESTPD(Y?)rr", + "VTESTPS(Y?)rr")>; def HWWriteResGroup3 : SchedWriteRes<[HWPort1]> { let Latency = 1; @@ -707,12 +705,7 @@ def HWWriteResGroup4 : SchedWriteRes<[HWPort5]> { let NumMicroOps = 1; let ResourceCycles = [1]; } -def: InstRW<[HWWriteResGroup4], (instregex "ANDNPDrr", - "ANDNPSrr", - "ANDPDrr", - "ANDPSrr", - "INSERTPSrr", - "MMX_MOVD64rr", +def: InstRW<[HWWriteResGroup4], (instregex "MMX_MOVD64rr", "MMX_MOVD64to64rr", "MMX_MOVQ2DQrr", "MMX_PALIGNRrri", @@ -724,167 +717,71 @@ def: InstRW<[HWWriteResGroup4], (instregex "ANDNPDrr", "MMX_PUNPCKLBWirr", "MMX_PUNPCKLDQirr", "MMX_PUNPCKLWDirr", - "MOV64toPQIrr", - "MOVAPDrr", - "MOVAPSrr", - "MOVDDUPrr", - "MOVDI2PDIrr", - "MOVHLPSrr", - "MOVLHPSrr", - "MOVSDrr", - "MOVSHDUPrr", - "MOVSLDUPrr", - "MOVSSrr", - "MOVUPDrr", - "MOVUPSrr", - "ORPDrr", - "ORPSrr", - "PACKSSDWrr", - "PACKSSWBrr", - "PACKUSDWrr", - "PACKUSWBrr", - "PALIGNRrri", - "PBLENDWrri", - "PMOVSXBDrr", - "PMOVSXBQrr", - "PMOVSXBWrr", - "PMOVSXDQrr", - "PMOVSXWDrr", - "PMOVSXWQrr", - "PMOVZXBDrr", - "PMOVZXBQrr", - "PMOVZXBWrr", - "PMOVZXDQrr", - "PMOVZXWDrr", - "PMOVZXWQrr", - "PSHUFBrr", - "PSHUFDri", - "PSHUFHWri", - "PSHUFLWri", - "PSLLDQri", - "PSRLDQri", - "PUNPCKHBWrr", - "PUNPCKHDQrr", - "PUNPCKHQDQrr", - "PUNPCKHWDrr", - "PUNPCKLBWrr", - "PUNPCKLDQrr", - "PUNPCKLQDQrr", - "PUNPCKLWDrr", - "SHUFPDrri", - "SHUFPSrri", - "UNPCKHPDrr", - "UNPCKHPSrr", - "UNPCKLPDrr", - "UNPCKLPSrr", - "VANDNPDYrr", - "VANDNPDrr", - "VANDNPSYrr", - "VANDNPSrr", - "VANDPDYrr", - "VANDPDrr", - "VANDPSYrr", - "VANDPSrr", + "(V?)ANDNPD(Y?)rr", + "(V?)ANDNPS(Y?)rr", + "(V?)ANDPD(Y?)rr", + "(V?)ANDPS(Y?)rr", "VBROADCASTSSrr", - "VINSERTPSrr", - "VMOV64toPQIrr", - "VMOVAPDYrr", - "VMOVAPDrr", - "VMOVAPSYrr", - "VMOVAPSrr", - "VMOVDDUPYrr", - "VMOVDDUPrr", - "VMOVDI2PDIrr", - "VMOVHLPSrr", - "VMOVLHPSrr", - "VMOVSDrr", - "VMOVSHDUPYrr", - "VMOVSHDUPrr", - "VMOVSLDUPYrr", - "VMOVSLDUPrr", - "VMOVSSrr", - "VMOVUPDYrr", - "VMOVUPDrr", - "VMOVUPSYrr", - "VMOVUPSrr", - "VORPDYrr", - "VORPDrr", - "VORPSYrr", - "VORPSrr", - "VPACKSSDWYrr", - "VPACKSSDWrr", - "VPACKSSWBYrr", - "VPACKSSWBrr", - "VPACKUSDWYrr", - "VPACKUSDWrr", - "VPACKUSWBYrr", - "VPACKUSWBrr", - "VPALIGNRYrri", - "VPALIGNRrri", - "VPBLENDWYrri", - "VPBLENDWrri", + "(V?)INSERTPSrr", + "(V?)MOV64toPQIrr", + "(V?)MOVAPD(Y?)rr", + "(V?)MOVAPS(Y?)rr", + "(V?)MOVDDUP(Y?)rr", + "(V?)MOVDI2PDIrr", + "(V?)MOVHLPSrr", + "(V?)MOVLHPSrr", + "(V?)MOVSDrr", + "(V?)MOVSHDUP(Y?)rr", + "(V?)MOVSLDUP(Y?)rr", + "(V?)MOVSSrr", + "(V?)MOVUPD(Y?)rr", + "(V?)MOVUPS(Y?)rr", + "(V?)ORPD(Y?)rr", + "(V?)ORPS(Y?)rr", + "(V?)PACKSSDW(Y?)rr", + "(V?)PACKSSWB(Y?)rr", + "(V?)PACKUSDW(Y?)rr", + "(V?)PACKUSWB(Y?)rr", + "(V?)PALIGNR(Y?)rri", + "(V?)PBLENDW(Y?)rri", "VPBROADCASTDrr", "VPBROADCASTQrr", - "VPERMILPDYri", - "VPERMILPDYrr", - "VPERMILPDri", - "VPERMILPDrr", - "VPERMILPSYri", - "VPERMILPSYrr", - "VPERMILPSri", - "VPERMILPSrr", - "VPMOVSXBDrr", - "VPMOVSXBQrr", - "VPMOVSXBWrr", - "VPMOVSXDQrr", - "VPMOVSXWDrr", - "VPMOVSXWQrr", - "VPMOVZXBDrr", - "VPMOVZXBQrr", - "VPMOVZXBWrr", - "VPMOVZXDQrr", - "VPMOVZXWDrr", - "VPMOVZXWQrr", - "VPSHUFBYrr", - "VPSHUFBrr", - "VPSHUFDYri", - "VPSHUFDri", - "VPSHUFHWYri", - "VPSHUFHWri", - "VPSHUFLWYri", - "VPSHUFLWri", - "VPSLLDQYri", - "VPSLLDQri", - "VPSRLDQYri", - "VPSRLDQri", - "VPUNPCKHBWYrr", - "VPUNPCKHBWrr", - "VPUNPCKHDQYrr", - "VPUNPCKHDQrr", - "VPUNPCKHQDQYrr", - "VPUNPCKHQDQrr", - "VPUNPCKHWDYrr", - "VPUNPCKHWDrr", - "VPUNPCKLBWYrr", - "VPUNPCKLBWrr", - "VPUNPCKLDQYrr", - "VPUNPCKLDQrr", - "VPUNPCKLQDQYrr", - "VPUNPCKLQDQrr", - "VPUNPCKLWDYrr", - "VPUNPCKLWDrr", - "VSHUFPDYrri", - "VSHUFPDrri", - "VSHUFPSYrri", - "VSHUFPSrri", - "VUNPCKHPDYrr", - "VUNPCKHPDrr", - "VUNPCKHPSYrr", - "VUNPCKHPSrr", - "VUNPCKLPDYrr", - "VUNPCKLPDrr", - "VUNPCKLPSYrr", - "VUNPCKLPSrr", + "VPERMILPD(Y?)ri", + "VPERMILPD(Y?)rr", + "VPERMILPS(Y?)ri", + "VPERMILPS(Y?)rr", + "(V?)PMOVSXBDrr", + "(V?)PMOVSXBQrr", + "(V?)PMOVSXBWrr", + "(V?)PMOVSXDQrr", + "(V?)PMOVSXWDrr", + "(V?)PMOVSXWQrr", + "(V?)PMOVZXBDrr", + "(V?)PMOVZXBQrr", + "(V?)PMOVZXBWrr", + "(V?)PMOVZXDQrr", + "(V?)PMOVZXWDrr", + "(V?)PMOVZXWQrr", + "(V?)PSHUFB(Y?)rr", + "(V?)PSHUFD(Y?)ri", + "(V?)PSHUFHW(Y?)ri", + "(V?)PSHUFLW(Y?)ri", + "(V?)PSLLDQ(Y?)ri", + "(V?)PSRLDQ(Y?)ri", + "(V?)PUNPCKHBW(Y?)rr", + "(V?)PUNPCKHDQ(Y?)rr", + "(V?)PUNPCKHQDQ(Y?)rr", + "(V?)PUNPCKHWD(Y?)rr", + "(V?)PUNPCKLBW(Y?)rr", + "(V?)PUNPCKLDQ(Y?)rr", + "(V?)PUNPCKLQDQ(Y?)rr", + "(V?)PUNPCKLWD(Y?)rr", + "(V?)SHUFPD(Y?)rri", + "(V?)SHUFPS(Y?)rri", + "(V?)UNPCKHPD(Y?)rr", + "(V?)UNPCKHPS(Y?)rr", + "(V?)UNPCKLPD(Y?)rr", + "(V?)UNPCKLPS(Y?)rr", "(V?)XORPD(Y?)rr", "(V?)XORPS(Y?)rr")>; @@ -979,135 +876,49 @@ def: InstRW<[HWWriteResGroup8], (instregex "ANDN(32|64)rr", "MMX_PSUBUSBirr", "MMX_PSUBUSWirr", "MMX_PSUBWirr", - "PABSBrr", - "PABSDrr", - "PABSWrr", - "PADDBrr", - "PADDDrr", - "PADDQrr", - "PADDSBrr", - "PADDSWrr", - "PADDUSBrr", - "PADDUSWrr", - "PADDWrr", - "PAVGBrr", - "PAVGWrr", - "PCMPEQBrr", - "PCMPEQDrr", - "PCMPEQQrr", - "PCMPEQWrr", - "PCMPGTBrr", - "PCMPGTDrr", - "PCMPGTWrr", - "PMAXSBrr", - "PMAXSDrr", - "PMAXSWrr", - "PMAXUBrr", - "PMAXUDrr", - "PMAXUWrr", - "PMINSBrr", - "PMINSDrr", - "PMINSWrr", - "PMINUBrr", - "PMINUDrr", - "PMINUWrr", - "PSIGNBrr", - "PSIGNDrr", - "PSIGNWrr", - "PSUBBrr", - "PSUBDrr", - "PSUBQrr", - "PSUBSBrr", - "PSUBSWrr", - "PSUBUSBrr", - "PSUBUSWrr", - "PSUBWrr", - "VPABSBYrr", - "VPABSBrr", - "VPABSDYrr", - "VPABSDrr", - "VPABSWYrr", - "VPABSWrr", - "VPADDBYrr", - "VPADDBrr", - "VPADDDYrr", - "VPADDDrr", - "VPADDQYrr", - "VPADDQrr", - "VPADDSBYrr", - "VPADDSBrr", - "VPADDSWYrr", - "VPADDSWrr", - "VPADDUSBYrr", - "VPADDUSBrr", - "VPADDUSWYrr", - "VPADDUSWrr", - "VPADDWYrr", - "VPADDWrr", - "VPAVGBYrr", - "VPAVGBrr", - "VPAVGWYrr", - "VPAVGWrr", - "VPCMPEQBYrr", - "VPCMPEQBrr", - "VPCMPEQDYrr", - "VPCMPEQDrr", - "VPCMPEQQYrr", - "VPCMPEQQrr", - "VPCMPEQWYrr", - "VPCMPEQWrr", - "VPCMPGTBYrr", - "VPCMPGTBrr", - "VPCMPGTDYrr", - "VPCMPGTDrr", - "VPCMPGTWYrr", - "VPCMPGTWrr", - "VPMAXSBYrr", - "VPMAXSBrr", - "VPMAXSDYrr", - "VPMAXSDrr", - "VPMAXSWYrr", - "VPMAXSWrr", - "VPMAXUBYrr", - "VPMAXUBrr", - "VPMAXUDYrr", - "VPMAXUDrr", - "VPMAXUWYrr", - "VPMAXUWrr", - "VPMINSBYrr", - "VPMINSBrr", - "VPMINSDYrr", - "VPMINSDrr", - "VPMINSWYrr", - "VPMINSWrr", - "VPMINUBYrr", - "VPMINUBrr", - "VPMINUDYrr", - "VPMINUDrr", - "VPMINUWYrr", - "VPMINUWrr", - "VPSIGNBYrr", - "VPSIGNBrr", - "VPSIGNDYrr", - "VPSIGNDrr", - "VPSIGNWYrr", - "VPSIGNWrr", - "VPSUBBYrr", - "VPSUBBrr", - "VPSUBDYrr", - "VPSUBDrr", - "VPSUBQYrr", - "VPSUBQrr", - "VPSUBSBYrr", - "VPSUBSBrr", - "VPSUBSWYrr", - "VPSUBSWrr", - "VPSUBUSBYrr", - "VPSUBUSBrr", - "VPSUBUSWYrr", - "VPSUBUSWrr", - "VPSUBWYrr", - "VPSUBWrr")>; + "(V?)PABSB(Y?)rr", + "(V?)PABSD(Y?)rr", + "(V?)PABSW(Y?)rr", + "(V?)PADDB(Y?)rr", + "(V?)PADDD(Y?)rr", + "(V?)PADDQ(Y?)rr", + "(V?)PADDSB(Y?)rr", + "(V?)PADDSW(Y?)rr", + "(V?)PADDUSB(Y?)rr", + "(V?)PADDUSW(Y?)rr", + "(V?)PADDW(Y?)rr", + "(V?)PAVGB(Y?)rr", + "(V?)PAVGW(Y?)rr", + "(V?)PCMPEQB(Y?)rr", + "(V?)PCMPEQD(Y?)rr", + "(V?)PCMPEQQ(Y?)rr", + "(V?)PCMPEQW(Y?)rr", + "(V?)PCMPGTB(Y?)rr", + "(V?)PCMPGTD(Y?)rr", + "(V?)PCMPGTW(Y?)rr", + "(V?)PMAXSB(Y?)rr", + "(V?)PMAXSD(Y?)rr", + "(V?)PMAXSW(Y?)rr", + "(V?)PMAXUB(Y?)rr", + "(V?)PMAXUD(Y?)rr", + "(V?)PMAXUW(Y?)rr", + "(V?)PMINSB(Y?)rr", + "(V?)PMINSD(Y?)rr", + "(V?)PMINSW(Y?)rr", + "(V?)PMINUB(Y?)rr", + "(V?)PMINUD(Y?)rr", + "(V?)PMINUW(Y?)rr", + "(V?)PSIGNB(Y?)rr", + "(V?)PSIGND(Y?)rr", + "(V?)PSIGNW(Y?)rr", + "(V?)PSUBB(Y?)rr", + "(V?)PSUBD(Y?)rr", + "(V?)PSUBQ(Y?)rr", + "(V?)PSUBSB(Y?)rr", + "(V?)PSUBSW(Y?)rr", + "(V?)PSUBUSB(Y?)rr", + "(V?)PSUBUSW(Y?)rr", + "(V?)PSUBW(Y?)rr")>; def HWWriteResGroup9 : SchedWriteRes<[HWPort015]> { let Latency = 1; @@ -1717,12 +1528,9 @@ def: InstRW<[HWWriteResGroup27], (instregex "BLENDVPDrr0", "BLENDVPSrr0", "MMX_PINSRWrr", "PBLENDVBrr0", - "VBLENDVPDYrr", - "VBLENDVPDrr", - "VBLENDVPSYrr", - "VBLENDVPSrr", - "VPBLENDVBYrr", - "VPBLENDVBrr", + "VBLENDVPD(Y?)rr", + "VBLENDVPS(Y?)rr", + "VPBLENDVB(Y?)rr", "(V?)PINSRBrr", "(V?)PINSRDrr", "(V?)PINSRQrr", @@ -2158,12 +1966,9 @@ def HWWriteResGroup55 : SchedWriteRes<[HWPort0,HWPort5]> { let NumMicroOps = 3; let ResourceCycles = [2,1]; } -def: InstRW<[HWWriteResGroup55], (instregex "VPSLLVDYrr", - "VPSLLVDrr", - "VPSRAVDYrr", - "VPSRAVDrr", - "VPSRLVDYrr", - "VPSRLVDrr")>; +def: InstRW<[HWWriteResGroup55], (instregex "VPSLLVD(Y?)rr", + "VPSRAVD(Y?)rr", + "VPSRLVD(Y?)rr")>; def HWWriteResGroup56 : SchedWriteRes<[HWPort5,HWPort15]> { let Latency = 3; @@ -2513,14 +2318,10 @@ def HWWriteResGroup84 : SchedWriteRes<[HWPort0,HWPort4,HWPort237,HWPort15]> { let NumMicroOps = 4; let ResourceCycles = [1,1,1,1]; } -def: InstRW<[HWWriteResGroup84], (instregex "VMASKMOVPDYmr", - "VMASKMOVPDmr", - "VMASKMOVPSYmr", - "VMASKMOVPSmr", - "VPMASKMOVDYmr", - "VPMASKMOVDmr", - "VPMASKMOVQYmr", - "VPMASKMOVQmr")>; +def: InstRW<[HWWriteResGroup84], (instregex "VMASKMOVPD(Y?)mr", + "VMASKMOVPS(Y?)mr", + "VPMASKMOVD(Y?)mr", + "VPMASKMOVQ(Y?)mr")>; def HWWriteResGroup85 : SchedWriteRes<[HWPort1,HWPort4,HWPort5,HWPort237]> { let Latency = 5; |