Index: lib/Target/X86/X86SchedSkylakeServer.td =================================================================== --- lib/Target/X86/X86SchedSkylakeServer.td +++ lib/Target/X86/X86SchedSkylakeServer.td @@ -693,13 +693,13 @@ def: InstRW<[SKXWriteResGroup5], (instregex "PCMPGTDrr")>; def: InstRW<[SKXWriteResGroup5], (instregex "PCMPGTWrr")>; def: InstRW<[SKXWriteResGroup5], (instregex "PMAXSBrr")>; -def: InstRW<[SKXWriteResGroup5], (instregex "PMAXSDrr")>; +def: InstRW<[SKXWriteResGroup5], (instregex "PMAX(C?)SDrr")>; def: InstRW<[SKXWriteResGroup5], (instregex "PMAXSWrr")>; def: InstRW<[SKXWriteResGroup5], (instregex "PMAXUBrr")>; def: InstRW<[SKXWriteResGroup5], (instregex "PMAXUDrr")>; def: InstRW<[SKXWriteResGroup5], (instregex "PMAXUWrr")>; def: InstRW<[SKXWriteResGroup5], (instregex "PMINSBrr")>; -def: InstRW<[SKXWriteResGroup5], (instregex "PMINSDrr")>; +def: InstRW<[SKXWriteResGroup5], (instregex "PMIN(C?)SDrr")>; def: InstRW<[SKXWriteResGroup5], (instregex "PMINSWrr")>; def: InstRW<[SKXWriteResGroup5], (instregex "PMINUBrr")>; def: InstRW<[SKXWriteResGroup5], (instregex "PMINUDrr")>; @@ -786,11 +786,11 @@ def: InstRW<[SKXWriteResGroup5], (instregex "VPMAXSBZ256rr(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup5], (instregex "VPMAXSBZrr(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup5], (instregex "VPMAXSBrr")>; -def: InstRW<[SKXWriteResGroup5], (instregex "VPMAXSDYrr")>; -def: InstRW<[SKXWriteResGroup5], (instregex "VPMAXSDZ128rr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup5], (instregex "VPMAXSDZ256rr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup5], (instregex "VPMAXSDZrr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup5], (instregex "VPMAXSDrr")>; +def: InstRW<[SKXWriteResGroup5], (instregex "VPMAX(C?)SDYrr")>; +def: InstRW<[SKXWriteResGroup5], (instregex "VPMAX(C?)SDZ128rr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup5], (instregex "VPMAX(C?)SDZ256rr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup5], (instregex "VPMAX(C?)SDZrr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup5], (instregex "VPMAX(C?)SDrr")>; def: InstRW<[SKXWriteResGroup5], (instregex "VPMAXSWYrr")>; def: InstRW<[SKXWriteResGroup5], (instregex "VPMAXSWZ128rr(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup5], (instregex "VPMAXSWZ256rr(b?)(k?)(z?)")>; @@ -816,11 +816,11 @@ def: InstRW<[SKXWriteResGroup5], (instregex "VPMINSBZ256rr(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup5], (instregex "VPMINSBZrr(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup5], (instregex "VPMINSBrr")>; -def: InstRW<[SKXWriteResGroup5], (instregex "VPMINSDYrr")>; -def: InstRW<[SKXWriteResGroup5], (instregex "VPMINSDZ128rr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup5], (instregex "VPMINSDZ256rr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup5], (instregex "VPMINSDZrr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup5], (instregex "VPMINSDrr")>; +def: InstRW<[SKXWriteResGroup5], (instregex "VPMIN(C?)SDYrr")>; +def: InstRW<[SKXWriteResGroup5], (instregex "VPMIN(C?)SDZ128rr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup5], (instregex "VPMIN(C?)SDZ256rr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup5], (instregex "VPMIN(C?)SDZrr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup5], (instregex "VPMIN(C?)SDrr")>; def: InstRW<[SKXWriteResGroup5], (instregex "VPMINSWYrr")>; def: InstRW<[SKXWriteResGroup5], (instregex "VPMINSWZ128rr(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup5], (instregex "VPMINSWZ256rr(b?)(k?)(z?)")>; @@ -1918,8 +1918,8 @@ def: InstRW<[SKXWriteResGroup32], (instregex "VCMPPSZ128rri(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup32], (instregex "VCMPPSZ256rri(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup32], (instregex "VCMPPSZrri(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup32], (instregex "VCMPSDZrr_Int(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup32], (instregex "VCMPSSZrr_Int(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup32], (instregex "VCMPSDZrr(_Int?)(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup32], (instregex "VCMPSSZrr(_Int?)(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup32], (instregex "VDBPSADBWZ128rri(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup32], (instregex "VDBPSADBWZ256rri(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup32], (instregex "VDBPSADBWZrri(b?)(k?)(z?)")>; @@ -2411,14 +2411,14 @@ def: InstRW<[SKXWriteResGroup50], (instregex "CVTDQ2PSrr")>; def: InstRW<[SKXWriteResGroup50], (instregex "CVTPS2DQrr")>; def: InstRW<[SKXWriteResGroup50], (instregex "CVTTPS2DQrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "MAXPDrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "MAXPSrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "MAXSDrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "MAXSSrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "MINPDrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "MINPSrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "MINSDrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "MINSSrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "MAX(C?)PDrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "MAX(C?)PSrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "MAX(C?)SDrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "MAX(C?)SSrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "MIN(C?)PDrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "MIN(C?)PSrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "MIN(C?)SDrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "MIN(C?)SSrr")>; def: InstRW<[SKXWriteResGroup50], (instregex "MULPDrr")>; def: InstRW<[SKXWriteResGroup50], (instregex "MULPSrr")>; def: InstRW<[SKXWriteResGroup50], (instregex "MULSDrr")>; @@ -2446,9 +2446,9 @@ def: InstRW<[SKXWriteResGroup50], (instregex "VADDPSZ256rr(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup50], (instregex "VADDPSZrr(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup50], (instregex "VADDPSrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VADDSDZrr_Int(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VADDSDZrr(_Int?)(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup50], (instregex "VADDSDrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VADDSSZrr_Int(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VADDSSZrr(_Int?)(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup50], (instregex "VADDSSrr")>; def: InstRW<[SKXWriteResGroup50], (instregex "VADDSUBPDYrr")>; def: InstRW<[SKXWriteResGroup50], (instregex "VADDSUBPDrr")>; @@ -2520,9 +2520,9 @@ def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132PSZ256r(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132PSZr(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132PSr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132SDZr_Int(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132SDZr(_Int?)(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132SDr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132SSZr_Int(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132SSZr(_Int?)(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD132SSr")>; def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213PDYr")>; def: InstRW<[SKXWriteResGroup50], (instregex "VFMADD213PDZ128r(b?)(k?)(z?)")>; @@ -2754,34 +2754,34 @@ def: InstRW<[SKXWriteResGroup50], (instregex "VGETMANTPSZrri(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup50], (instregex "VGETMANTSDZ128rri(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup50], (instregex "VGETMANTSSZ128rri(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMAXPDYrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMAXPDZ128rr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMAXPDZ256rr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMAXPDZrr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMAXPDrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMAXPSYrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMAXPSZ128rr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMAXPSZ256rr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMAXPSZrr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMAXPSrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMAXSDZrr_Int(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMAXSDrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMAXSSZrr_Int(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMAXSSrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMINPDYrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMINPDZ128rr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMINPDZ256rr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMINPDZrr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMINPDrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMINPSYrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMINPSZ128rr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMINPSZ256rr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMINPSZrr(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMINPSrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMINSDZrr_Int(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMINSDrr")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMINSSZrr_Int(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup50], (instregex "VMINSSrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMAX(C?)PDYrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMAX(C?)PDZ128rr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMAX(C?)PDZ256rr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMAX(C?)PDZrr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMAX(C?)PDrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMAX(C?)PSYrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMAX(C?)PSZ128rr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMAX(C?)PSZ256rr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMAX(C?)PSZrr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMAX(C?)PSrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMAX(C?)SDZrr_Int(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMAX(C?)SDrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMAX(C?)SSZrr_Int(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMAX(C?)SSrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMIN(C?)PDYrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMIN(C?)PDZ128rr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMIN(C?)PDZ256rr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMIN(C?)PDZrr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMIN(C?)PDrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMIN(C?)PSYrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMIN(C?)PSZ128rr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMIN(C?)PSZ256rr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMIN(C?)PSZrr(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMIN(C?)PSrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMIN(C?)SDZrr_Int(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMIN(C?)SDrr")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMIN(C?)SSZrr_Int(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup50], (instregex "VMIN(C?)SSrr")>; def: InstRW<[SKXWriteResGroup50], (instregex "VMULPDYrr")>; def: InstRW<[SKXWriteResGroup50], (instregex "VMULPDZ128rr(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup50], (instregex "VMULPDZ256rr(b?)(k?)(z?)")>; @@ -3878,13 +3878,13 @@ def: InstRW<[SKXWriteResGroup94], (instregex "PCMPGTDrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "PCMPGTWrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "PMAXSBrm")>; -def: InstRW<[SKXWriteResGroup94], (instregex "PMAXSDrm")>; +def: InstRW<[SKXWriteResGroup94], (instregex "PMAX(C?)SDrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "PMAXSWrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "PMAXUBrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "PMAXUDrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "PMAXUWrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "PMINSBrm")>; -def: InstRW<[SKXWriteResGroup94], (instregex "PMINSDrm")>; +def: InstRW<[SKXWriteResGroup94], (instregex "PMIN(C?)SDrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "PMINSWrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "PMINUBrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "PMINUDrm")>; @@ -3932,8 +3932,8 @@ def: InstRW<[SKXWriteResGroup94], (instregex "VPCMPGTWrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "VPMAXSBZ128rm(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup94], (instregex "VPMAXSBrm")>; -def: InstRW<[SKXWriteResGroup94], (instregex "VPMAXSDZ128rm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup94], (instregex "VPMAXSDrm")>; +def: InstRW<[SKXWriteResGroup94], (instregex "VPMAX(C?)SDZ128rm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup94], (instregex "VPMAX(C?)SDrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "VPMAXSWZ128rm(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup94], (instregex "VPMAXSWrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "VPMAXUBZ128rm(b?)(k?)(z?)")>; @@ -3944,8 +3944,8 @@ def: InstRW<[SKXWriteResGroup94], (instregex "VPMAXUWrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "VPMINSBZ128rm(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup94], (instregex "VPMINSBrm")>; -def: InstRW<[SKXWriteResGroup94], (instregex "VPMINSDZ128rm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup94], (instregex "VPMINSDrm")>; +def: InstRW<[SKXWriteResGroup94], (instregex "VPMIN(C?)SDZ128rm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup94], (instregex "VPMIN(C?)SDrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "VPMINSWZ128rm(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup94], (instregex "VPMINSWrm")>; def: InstRW<[SKXWriteResGroup94], (instregex "VPMINUBZ128rm(b?)(k?)(z?)")>; @@ -4547,9 +4547,9 @@ def: InstRW<[SKXWriteResGroup120], (instregex "VPMAXSBYrm")>; def: InstRW<[SKXWriteResGroup120], (instregex "VPMAXSBZ256rm(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup120], (instregex "VPMAXSBZrm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup120], (instregex "VPMAXSDYrm")>; -def: InstRW<[SKXWriteResGroup120], (instregex "VPMAXSDZ256rm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup120], (instregex "VPMAXSDZrm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup120], (instregex "VPMAX(C?)SDYrm")>; +def: InstRW<[SKXWriteResGroup120], (instregex "VPMAX(C?)SDZ256rm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup120], (instregex "VPMAX(C?)SDZrm(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup120], (instregex "VPMAXSWYrm")>; def: InstRW<[SKXWriteResGroup120], (instregex "VPMAXSWZ256rm(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup120], (instregex "VPMAXSWZrm(b?)(k?)(z?)")>; @@ -4565,9 +4565,9 @@ def: InstRW<[SKXWriteResGroup120], (instregex "VPMINSBYrm")>; def: InstRW<[SKXWriteResGroup120], (instregex "VPMINSBZ256rm(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup120], (instregex "VPMINSBZrm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup120], (instregex "VPMINSDYrm")>; -def: InstRW<[SKXWriteResGroup120], (instregex "VPMINSDZ256rm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup120], (instregex "VPMINSDZrm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup120], (instregex "VPMIN(C?)SDYrm")>; +def: InstRW<[SKXWriteResGroup120], (instregex "VPMIN(C?)SDZ256rm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup120], (instregex "VPMIN(C?)SDZrm(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup120], (instregex "VPMINSWYrm")>; def: InstRW<[SKXWriteResGroup120], (instregex "VPMINSWZ256rm(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup120], (instregex "VPMINSWZrm(b?)(k?)(z?)")>; @@ -5067,10 +5067,10 @@ def: InstRW<[SKXWriteResGroup137], (instregex "ADDSSrm")>; def: InstRW<[SKXWriteResGroup137], (instregex "CMPSSrm")>; def: InstRW<[SKXWriteResGroup137], (instregex "CVTPS2PDrm")>; -def: InstRW<[SKXWriteResGroup137], (instregex "MAXSDrm")>; -def: InstRW<[SKXWriteResGroup137], (instregex "MAXSSrm")>; -def: InstRW<[SKXWriteResGroup137], (instregex "MINSDrm")>; -def: InstRW<[SKXWriteResGroup137], (instregex "MINSSrm")>; +def: InstRW<[SKXWriteResGroup137], (instregex "MAX(C?)SDrm")>; +def: InstRW<[SKXWriteResGroup137], (instregex "MAX(C?)SSrm")>; +def: InstRW<[SKXWriteResGroup137], (instregex "MIN(C?)SDrm")>; +def: InstRW<[SKXWriteResGroup137], (instregex "MIN(C?)SSrm")>; def: InstRW<[SKXWriteResGroup137], (instregex "MMX_CVTPS2PIirm")>; def: InstRW<[SKXWriteResGroup137], (instregex "MMX_CVTTPS2PIirm")>; def: InstRW<[SKXWriteResGroup137], (instregex "MULSDrm")>; @@ -5107,10 +5107,10 @@ def: InstRW<[SKXWriteResGroup137], (instregex "VFNMSUB213SSm")>; def: InstRW<[SKXWriteResGroup137], (instregex "VFNMSUB231SDm")>; def: InstRW<[SKXWriteResGroup137], (instregex "VFNMSUB231SSm")>; -def: InstRW<[SKXWriteResGroup137], (instregex "VMAXSDrm")>; -def: InstRW<[SKXWriteResGroup137], (instregex "VMAXSSrm")>; -def: InstRW<[SKXWriteResGroup137], (instregex "VMINSDrm")>; -def: InstRW<[SKXWriteResGroup137], (instregex "VMINSSrm")>; +def: InstRW<[SKXWriteResGroup137], (instregex "VMAX(C?)SDrm")>; +def: InstRW<[SKXWriteResGroup137], (instregex "VMAX(C?)SSrm")>; +def: InstRW<[SKXWriteResGroup137], (instregex "VMIN(C?)SDrm")>; +def: InstRW<[SKXWriteResGroup137], (instregex "VMIN(C?)SSrm")>; def: InstRW<[SKXWriteResGroup137], (instregex "VMULSDrm")>; def: InstRW<[SKXWriteResGroup137], (instregex "VMULSSrm")>; def: InstRW<[SKXWriteResGroup137], (instregex "VSUBSDrm")>; @@ -5393,10 +5393,10 @@ def: InstRW<[SKXWriteResGroup149], (instregex "CVTPS2DQrm")>; def: InstRW<[SKXWriteResGroup149], (instregex "CVTSS2SDrm")>; def: InstRW<[SKXWriteResGroup149], (instregex "CVTTPS2DQrm")>; -def: InstRW<[SKXWriteResGroup149], (instregex "MAXPDrm")>; -def: InstRW<[SKXWriteResGroup149], (instregex "MAXPSrm")>; -def: InstRW<[SKXWriteResGroup149], (instregex "MINPDrm")>; -def: InstRW<[SKXWriteResGroup149], (instregex "MINPSrm")>; +def: InstRW<[SKXWriteResGroup149], (instregex "MAX(C?)PDrm")>; +def: InstRW<[SKXWriteResGroup149], (instregex "MAX(C?)PSrm")>; +def: InstRW<[SKXWriteResGroup149], (instregex "MIN(C?)PDrm")>; +def: InstRW<[SKXWriteResGroup149], (instregex "MIN(C?)PSrm")>; def: InstRW<[SKXWriteResGroup149], (instregex "MULPDrm")>; def: InstRW<[SKXWriteResGroup149], (instregex "MULPSrm")>; def: InstRW<[SKXWriteResGroup149], (instregex "PHMINPOSUWrm128")>; @@ -5554,18 +5554,18 @@ def: InstRW<[SKXWriteResGroup149], (instregex "VGETMANTPSZ128rm(b?)i(k?)(z?)")>; def: InstRW<[SKXWriteResGroup149], (instregex "VGETMANTSDZ128rmi(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup149], (instregex "VGETMANTSSZ128rmi(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup149], (instregex "VMAXPDZ128rm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup149], (instregex "VMAXPDrm")>; -def: InstRW<[SKXWriteResGroup149], (instregex "VMAXPSZ128rm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup149], (instregex "VMAXPSrm")>; -def: InstRW<[SKXWriteResGroup149], (instregex "VMAXSDZrm_Int(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup149], (instregex "VMAXSSZrm_Int(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup149], (instregex "VMINPDZ128rm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup149], (instregex "VMINPDrm")>; -def: InstRW<[SKXWriteResGroup149], (instregex "VMINPSZ128rm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup149], (instregex "VMINPSrm")>; -def: InstRW<[SKXWriteResGroup149], (instregex "VMINSDZrm_Int(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup149], (instregex "VMINSSZrm_Int(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup149], (instregex "VMAX(C?)PDZ128rm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup149], (instregex "VMAX(C?)PDrm")>; +def: InstRW<[SKXWriteResGroup149], (instregex "VMAX(C?)PSZ128rm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup149], (instregex "VMAX(C?)PSrm")>; +def: InstRW<[SKXWriteResGroup149], (instregex "VMAX(C?)SDZrm_Int(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup149], (instregex "VMAX(C?)SSZrm_Int(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup149], (instregex "VMIN(C?)PDZ128rm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup149], (instregex "VMIN(C?)PDrm")>; +def: InstRW<[SKXWriteResGroup149], (instregex "VMIN(C?)PSZ128rm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup149], (instregex "VMIN(C?)PSrm")>; +def: InstRW<[SKXWriteResGroup149], (instregex "VMIN(C?)SDZrm_Int(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup149], (instregex "VMIN(C?)SSZrm_Int(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup149], (instregex "VMULPDZ128rm(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup149], (instregex "VMULPDrm")>; def: InstRW<[SKXWriteResGroup149], (instregex "VMULPSZ128rm(b?)(k?)(z?)")>; @@ -5896,18 +5896,18 @@ def: InstRW<[SKXWriteResGroup161], (instregex "VGETMANTPDZrm(b?)i(k?)(z?)")>; def: InstRW<[SKXWriteResGroup161], (instregex "VGETMANTPSZ256rm(b?)i(k?)(z?)")>; def: InstRW<[SKXWriteResGroup161], (instregex "VGETMANTPSZrm(b?)i(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup161], (instregex "VMAXPDYrm")>; -def: InstRW<[SKXWriteResGroup161], (instregex "VMAXPDZ256rm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup161], (instregex "VMAXPDZrm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup161], (instregex "VMAXPSYrm")>; -def: InstRW<[SKXWriteResGroup161], (instregex "VMAXPSZ256rm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup161], (instregex "VMAXPSZrm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup161], (instregex "VMINPDYrm")>; -def: InstRW<[SKXWriteResGroup161], (instregex "VMINPDZ256rm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup161], (instregex "VMINPDZrm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup161], (instregex "VMINPSYrm")>; -def: InstRW<[SKXWriteResGroup161], (instregex "VMINPSZ256rm(b?)(k?)(z?)")>; -def: InstRW<[SKXWriteResGroup161], (instregex "VMINPSZrm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup161], (instregex "VMAX(C?)PDYrm")>; +def: InstRW<[SKXWriteResGroup161], (instregex "VMAX(C?)PDZ256rm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup161], (instregex "VMAX(C?)PDZrm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup161], (instregex "VMAX(C?)PSYrm")>; +def: InstRW<[SKXWriteResGroup161], (instregex "VMAX(C?)PSZ256rm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup161], (instregex "VMAX(C?)PSZrm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup161], (instregex "VMIN(C?)PDYrm")>; +def: InstRW<[SKXWriteResGroup161], (instregex "VMIN(C?)PDZ256rm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup161], (instregex "VMIN(C?)PDZrm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup161], (instregex "VMIN(C?)PSYrm")>; +def: InstRW<[SKXWriteResGroup161], (instregex "VMIN(C?)PSZ256rm(b?)(k?)(z?)")>; +def: InstRW<[SKXWriteResGroup161], (instregex "VMIN(C?)PSZrm(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup161], (instregex "VMULPDYrm")>; def: InstRW<[SKXWriteResGroup161], (instregex "VMULPDZ256rm(b?)(k?)(z?)")>; def: InstRW<[SKXWriteResGroup161], (instregex "VMULPDZrm(b?)(k?)(z?)")>; Index: test/CodeGen/X86/avx-schedule.ll =================================================================== --- test/CodeGen/X86/avx-schedule.ll +++ test/CodeGen/X86/avx-schedule.ll @@ -2329,8 +2329,8 @@ ; ; SKX-LABEL: test_maxpd: ; SKX: # BB#0: -; SKX-NEXT: vmaxpd %ymm1, %ymm0, %ymm0 # sched: [3:1.00] -; SKX-NEXT: vmaxpd (%rdi), %ymm0, %ymm0 # sched: [8:1.00] +; SKX-NEXT: vmaxpd %ymm1, %ymm0, %ymm0 # sched: [4:0.33] +; SKX-NEXT: vmaxpd (%rdi), %ymm0, %ymm0 # sched: [11:0.50] ; SKX-NEXT: retq # sched: [7:1.00] ; ; BTVER2-LABEL: test_maxpd: @@ -2384,8 +2384,8 @@ ; ; SKX-LABEL: test_maxps: ; SKX: # BB#0: -; SKX-NEXT: vmaxps %ymm1, %ymm0, %ymm0 # sched: [3:1.00] -; SKX-NEXT: vmaxps (%rdi), %ymm0, %ymm0 # sched: [8:1.00] +; SKX-NEXT: vmaxps %ymm1, %ymm0, %ymm0 # sched: [4:0.33] +; SKX-NEXT: vmaxps (%rdi), %ymm0, %ymm0 # sched: [11:0.50] ; SKX-NEXT: retq # sched: [7:1.00] ; ; BTVER2-LABEL: test_maxps: @@ -2439,8 +2439,8 @@ ; ; SKX-LABEL: test_minpd: ; SKX: # BB#0: -; SKX-NEXT: vminpd %ymm1, %ymm0, %ymm0 # sched: [3:1.00] -; SKX-NEXT: vminpd (%rdi), %ymm0, %ymm0 # sched: [8:1.00] +; SKX-NEXT: vminpd %ymm1, %ymm0, %ymm0 # sched: [4:0.33] +; SKX-NEXT: vminpd (%rdi), %ymm0, %ymm0 # sched: [11:0.50] ; SKX-NEXT: retq # sched: [7:1.00] ; ; BTVER2-LABEL: test_minpd: @@ -2494,8 +2494,8 @@ ; ; SKX-LABEL: test_minps: ; SKX: # BB#0: -; SKX-NEXT: vminps %ymm1, %ymm0, %ymm0 # sched: [3:1.00] -; SKX-NEXT: vminps (%rdi), %ymm0, %ymm0 # sched: [8:1.00] +; SKX-NEXT: vminps %ymm1, %ymm0, %ymm0 # sched: [4:0.33] +; SKX-NEXT: vminps (%rdi), %ymm0, %ymm0 # sched: [11:0.50] ; SKX-NEXT: retq # sched: [7:1.00] ; ; BTVER2-LABEL: test_minps: Index: test/CodeGen/X86/sse-schedule.ll =================================================================== --- test/CodeGen/X86/sse-schedule.ll +++ test/CodeGen/X86/sse-schedule.ll @@ -1305,8 +1305,8 @@ ; ; SKX-LABEL: test_maxps: ; SKX: # BB#0: -; SKX-NEXT: vmaxps %xmm1, %xmm0, %xmm0 # sched: [3:1.00] -; SKX-NEXT: vmaxps (%rdi), %xmm0, %xmm0 # sched: [8:1.00] +; SKX-NEXT: vmaxps %xmm1, %xmm0, %xmm0 # sched: [4:0.33] +; SKX-NEXT: vmaxps (%rdi), %xmm0, %xmm0 # sched: [10:0.50] ; SKX-NEXT: retq # sched: [7:1.00] ; ; BTVER2-LABEL: test_maxps: @@ -1439,8 +1439,8 @@ ; ; SKX-LABEL: test_minps: ; SKX: # BB#0: -; SKX-NEXT: vminps %xmm1, %xmm0, %xmm0 # sched: [3:1.00] -; SKX-NEXT: vminps (%rdi), %xmm0, %xmm0 # sched: [8:1.00] +; SKX-NEXT: vminps %xmm1, %xmm0, %xmm0 # sched: [4:0.33] +; SKX-NEXT: vminps (%rdi), %xmm0, %xmm0 # sched: [10:0.50] ; SKX-NEXT: retq # sched: [7:1.00] ; ; BTVER2-LABEL: test_minps: Index: test/CodeGen/X86/sse2-schedule.ll =================================================================== --- test/CodeGen/X86/sse2-schedule.ll +++ test/CodeGen/X86/sse2-schedule.ll @@ -2303,8 +2303,8 @@ ; ; SKX-LABEL: test_maxpd: ; SKX: # BB#0: -; SKX-NEXT: vmaxpd %xmm1, %xmm0, %xmm0 # sched: [3:1.00] -; SKX-NEXT: vmaxpd (%rdi), %xmm0, %xmm0 # sched: [8:1.00] +; SKX-NEXT: vmaxpd %xmm1, %xmm0, %xmm0 # sched: [4:0.33] +; SKX-NEXT: vmaxpd (%rdi), %xmm0, %xmm0 # sched: [10:0.50] ; SKX-NEXT: retq # sched: [7:1.00] ; ; BTVER2-LABEL: test_maxpd: @@ -2437,8 +2437,8 @@ ; ; SKX-LABEL: test_minpd: ; SKX: # BB#0: -; SKX-NEXT: vminpd %xmm1, %xmm0, %xmm0 # sched: [3:1.00] -; SKX-NEXT: vminpd (%rdi), %xmm0, %xmm0 # sched: [8:1.00] +; SKX-NEXT: vminpd %xmm1, %xmm0, %xmm0 # sched: [4:0.33] +; SKX-NEXT: vminpd (%rdi), %xmm0, %xmm0 # sched: [10:0.50] ; SKX-NEXT: retq # sched: [7:1.00] ; ; BTVER2-LABEL: test_minpd: