// Horizontal add/sub instructions.
////////////////////////////////////////////////////////////////////////////////
-defm : BWWriteResPair<WriteFHAdd, [BWPort1], 3>;
-defm : BWWriteResPair<WritePHAdd, [BWPort15], 1>;
+defm : BWWriteResPair<WriteFHAdd, [BWPort1,BWPort5], 5, [1,2], 3>;
+defm : BWWriteResPair<WritePHAdd, [BWPort5,BWPort15], 3, [2,1], 3>;
// Remaining instrs.
"VPSRAVD(Y?)rr",
"VPSRLVD(Y?)rr")>;
-def BWWriteResGroup32 : SchedWriteRes<[BWPort5,BWPort15]> {
- let Latency = 3;
- let NumMicroOps = 3;
- let ResourceCycles = [2,1];
-}
-def: InstRW<[BWWriteResGroup32], (instregex "MMX_PH(ADD|SUB)(D|SW|W)rr",
- "(V?)PHADDD(Y?)rr",
- "(V?)PHADDSW(Y?)rr",
- "(V?)PHADDW(Y?)rr",
- "(V?)PHSUBD(Y?)rr",
- "(V?)PHSUBSW(Y?)rr",
- "(V?)PHSUBW(Y?)rr")>;
-
def BWWriteResGroup33 : SchedWriteRes<[BWPort5,BWPort0156]> {
let Latency = 3;
let NumMicroOps = 3;
let NumMicroOps = 3;
let ResourceCycles = [1,2];
}
-def: InstRW<[BWWriteResGroup50], (instregex "(V?)CVTSI642SSrr",
- "(V?)HADDPD(Y?)rr",
- "(V?)HADDPS(Y?)rr",
- "(V?)HSUBPD(Y?)rr",
- "(V?)HSUBPS(Y?)rr")>;
+def: InstRW<[BWWriteResGroup50], (instregex "(V?)CVTSI642SSrr")>;
def BWWriteResGroup51 : SchedWriteRes<[BWPort1,BWPort6,BWPort06]> {
let Latency = 5;
"VPSRAVDrm",
"VPSRLVDrm")>;
-def BWWriteResGroup96 : SchedWriteRes<[BWPort5,BWPort23,BWPort15]> {
- let Latency = 8;
- let NumMicroOps = 4;
- let ResourceCycles = [2,1,1];
-}
-def: InstRW<[BWWriteResGroup96], (instregex "MMX_PH(ADD|SUB)(D|SW|W)rm",
- "(V?)PHADDDrm",
- "(V?)PHADDSWrm",
- "(V?)PHADDWrm",
- "(V?)PHSUBDrm",
- "(V?)PHSUBSWrm",
- "(V?)PHSUBWrm")>;
-
def BWWriteResGroup97 : SchedWriteRes<[BWPort23,BWPort237,BWPort06,BWPort0156]> {
let Latency = 8;
let NumMicroOps = 5;
}
def: InstRW<[BWWriteResGroup118], (instregex "VPTESTYrm")>;
-def BWWriteResGroup119 : SchedWriteRes<[BWPort1,BWPort5,BWPort23]> {
- let Latency = 10;
- let NumMicroOps = 4;
- let ResourceCycles = [1,2,1];
-}
-def: InstRW<[BWWriteResGroup119], (instregex "(V?)HADDPDrm",
- "(V?)HADDPSrm",
- "(V?)HSUBPDrm",
- "(V?)HSUBPSrm")>;
-
def BWWriteResGroup120 : SchedWriteRes<[BWPort0,BWPort1,BWPort5,BWPort23]> {
let Latency = 10;
let NumMicroOps = 4;
// Horizontal add/sub instructions.
////////////////////////////////////////////////////////////////////////////////
-defm : HWWriteResPair<WriteFHAdd, [HWPort1, HWPort5], 5, [1, 2], 3>;
-defm : HWWriteResPair<WritePHAdd, [HWPort1, HWPort5], 3, [1, 2], 3>;
+defm : HWWriteResPair<WriteFHAdd, [HWPort1, HWPort5], 5, [1,2], 3, 6>;
+defm : HWWriteResPair<WritePHAdd, [HWPort5, HWPort15], 3, [2,1], 3, 6>;
//=== Floating Point XMM and YMM Instructions ===//
"VPSRAVD(Y?)rr",
"VPSRLVD(Y?)rr")>;
-def HWWriteResGroup56 : SchedWriteRes<[HWPort5,HWPort15]> {
- let Latency = 3;
- let NumMicroOps = 3;
- let ResourceCycles = [2,1];
-}
-def: InstRW<[HWWriteResGroup56], (instregex "MMX_PH(ADD|SUB)(D|SW|W)rr",
- "(V?)PHADDD(Y?)rr",
- "(V?)PHADDSW(Y?)rr",
- "(V?)PHADDW(Y?)rr",
- "(V?)PHSUBD(Y?)rr",
- "(V?)PHSUBSW(Y?)rr",
- "(V?)PHSUBW(Y?)rr")>;
-
def HWWriteResGroup57 : SchedWriteRes<[HWPort5,HWPort0156]> {
let Latency = 3;
let NumMicroOps = 3;
}
def: InstRW<[HWWriteResGroup95], (instrs IMUL32r, MUL32r, MULX32rr)>;
-def HWWriteResGroup96 : SchedWriteRes<[HWPort1,HWPort5,HWPort23]> {
- let Latency = 11;
- let NumMicroOps = 4;
- let ResourceCycles = [1,2,1];
-}
-def: InstRW<[HWWriteResGroup96], (instregex "(V?)HADDPDrm",
- "(V?)HADDPSrm",
- "(V?)HSUBPDrm",
- "(V?)HSUBPSrm")>;
-
def HWWriteResGroup96_1 : SchedWriteRes<[HWPort1,HWPort5,HWPort23]> {
let Latency = 12;
let NumMicroOps = 4;
// Horizontal add/sub instructions.
////////////////////////////////////////////////////////////////////////////////
-defm : SBWriteResPair<WriteFHAdd, [SBPort1], 3>;
-defm : SBWriteResPair<WritePHAdd, [SBPort15], 1>;
+defm : SBWriteResPair<WriteFHAdd, [SBPort1,SBPort5], 5, [1,2], 3, 6>;
+defm : SBWriteResPair<WritePHAdd, [SBPort15], 3, [3], 3, 6>;
+////////////////////////////////////////////////////////////////////////////////
// String instructions.
+////////////////////////////////////////////////////////////////////////////////
// Packed Compare Implicit Length Strings, Return Mask
def : WriteRes<WritePCmpIStrM, [SBPort0]> {
"SHL(8|16|32|64)rCL",
"SHR(8|16|32|64)rCL")>;
-def SBWriteResGroup24 : SchedWriteRes<[SBPort15]> {
- let Latency = 3;
- let NumMicroOps = 3;
- let ResourceCycles = [3];
-}
-def: InstRW<[SBWriteResGroup24], (instregex "MMX_PH(ADD|SUB)(D|SW|W)rr",
- "(V?)PHADDDrr",
- "(V?)PHADDSWrr",
- "(V?)PHADDWrr",
- "(V?)PHSUBDrr",
- "(V?)PHSUBSWrr",
- "(V?)PHSUBWrr")>;
-
def SBWriteResGroup25 : SchedWriteRes<[SBPort015]> {
let Latency = 2;
let NumMicroOps = 3;
}
def: InstRW<[SBWriteResGroup35], (instregex "CLI")>;
def: InstRW<[SBWriteResGroup35], (instregex "(V?)CVTSI642SSrr",
- "(V?)CVTSI2SSrr",
- "(V?)HADDPD(Y?)rr",
- "(V?)HADDPS(Y?)rr",
- "(V?)HSUBPD(Y?)rr",
- "(V?)HSUBPS(Y?)rr")>;
+ "(V?)CVTSI2SSrr")>;
def SBWriteResGroup35_2 : SchedWriteRes<[SBPort1,SBPort4,SBPort23]> {
let Latency = 5;
"LD_F64m",
"LD_F80m")>;
-def SBWriteResGroup96 : SchedWriteRes<[SBPort23,SBPort15]> {
- let Latency = 9;
- let NumMicroOps = 4;
- let ResourceCycles = [1,3];
-}
-def: InstRW<[SBWriteResGroup96], (instregex "(V?)PHADDDrm",
- "(V?)PHADDSWrm",
- "(V?)PHADDWrm",
- "(V?)PHSUBDrm",
- "(V?)PHSUBSWrm",
- "(V?)PHSUBWrm")>;
-
def SBWriteResGroup97 : SchedWriteRes<[SBPort1,SBPort4,SBPort23]> {
let Latency = 9;
let NumMicroOps = 4;
"VCVTPD2PSYrm",
"VCVTTPD2DQYrm")>;
-def SBWriteResGroup109 : SchedWriteRes<[SBPort1,SBPort5,SBPort23]> {
- let Latency = 11;
- let NumMicroOps = 4;
- let ResourceCycles = [1,2,1];
-}
-def: InstRW<[SBWriteResGroup109], (instregex "(V?)HADDPDrm",
- "(V?)HADDPSrm",
- "(V?)HSUBPDrm",
- "(V?)HSUBPSrm")>;
-
def SBWriteResGroup111 : SchedWriteRes<[SBPort0,SBPort23]> {
let Latency = 12;
let NumMicroOps = 2;
let NumMicroOps = 4;
let ResourceCycles = [1,2,1];
}
-def: InstRW<[SBWriteResGroup113], (instregex "VHADDPDYrm",
- "VHADDPSYrm",
- "VHSUBPDYrm",
- "VHSUBPSYrm")>;
+def: InstRW<[SBWriteResGroup113], (instregex "VH(ADD|SUB)(PD|PS)Yrm")>;
def SBWriteResGroup114 : SchedWriteRes<[SBPort1,SBPort23]> {
let Latency = 13;
// Horizontal add/sub instructions.
////////////////////////////////////////////////////////////////////////////////
-defm : SKLWriteResPair<WriteFHAdd, [SKLPort1], 3>;
+defm : SKLWriteResPair<WriteFHAdd, [SKLPort5,SKLPort01], 6, [2,1], 3, 6>;
defm : SKLWriteResPair<WritePHAdd, [SKLPort15], 1>;
// Remaining instrs.
def: InstRW<[SKLWriteResGroup76], (instrs POP16r, POP32r, POP64r)>;
def: InstRW<[SKLWriteResGroup76], (instregex "POP(16|32|64)rmr")>;
-def SKLWriteResGroup77 : SchedWriteRes<[SKLPort5,SKLPort01]> {
- let Latency = 6;
- let NumMicroOps = 3;
- let ResourceCycles = [2,1];
-}
-def: InstRW<[SKLWriteResGroup77], (instregex "(V?)HADDPD(Y?)rr",
- "(V?)HADDPS(Y?)rr",
- "(V?)HSUBPD(Y?)rr",
- "(V?)HSUBPS(Y?)rr")>;
-
def SKLWriteResGroup78 : SchedWriteRes<[SKLPort5,SKLPort01]> {
let Latency = 6;
let NumMicroOps = 3;
}
def: InstRW<[SKLWriteResGroup158], (instregex "VSQRTPSYr")>;
-def SKLWriteResGroup159 : SchedWriteRes<[SKLPort5,SKLPort01,SKLPort23]> {
- let Latency = 12;
- let NumMicroOps = 4;
- let ResourceCycles = [2,1,1];
-}
-def: InstRW<[SKLWriteResGroup159], (instregex "(V?)HADDPDrm",
- "(V?)HADDPSrm",
- "(V?)HSUBPDrm",
- "(V?)HSUBPSrm")>;
-
def SKLWriteResGroup160 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23,SKLPort01]> {
let Latency = 12;
let NumMicroOps = 4;
// Horizontal add/sub instructions.
////////////////////////////////////////////////////////////////////////////////
-defm : SKXWriteResPair<WriteFHAdd, [SKXPort1], 3>;
+defm : SKXWriteResPair<WriteFHAdd, [SKXPort5,SKXPort015], 6, [2,1], 3, 6>;
defm : SKXWriteResPair<WritePHAdd, [SKXPort15], 1>;
// Remaining instrs.
let ResourceCycles = [2,1];
}
def: InstRW<[SKXWriteResGroup82], (instregex "CVTSI642SSrr",
- "HADDPDrr",
- "HADDPSrr",
- "HSUBPDrr",
- "HSUBPSrr",
"VCVTSI642SSrr",
"VCVTSI642SSZrr",
- "VCVTUSI642SSZrr",
- "VHADDPDYrr",
- "VHADDPDrr",
- "VHADDPSYrr",
- "VHADDPSrr",
- "VHSUBPDYrr",
- "VHSUBPDrr",
- "VHSUBPSYrr",
- "VHSUBPSrr")>;
+ "VCVTUSI642SSZrr")>;
def SKXWriteResGroup83 : SchedWriteRes<[SKXPort1,SKXPort06,SKXPort0156]> {
let Latency = 6;
"VCVTTPS2QQZrm(b?)",
"VCVTTPS2UQQZrm(b?)")>;
-def SKXWriteResGroup178 : SchedWriteRes<[SKXPort5,SKXPort23,SKXPort015]> {
- let Latency = 12;
- let NumMicroOps = 4;
- let ResourceCycles = [2,1,1];
-}
-def: InstRW<[SKXWriteResGroup178], (instregex "(V?)HADDPDrm",
- "(V?)HADDPSrm",
- "(V?)HSUBPDrm",
- "(V?)HSUBPSrm")>;
-
def SKXWriteResGroup179 : SchedWriteRes<[SKXPort0,SKXPort5,SKXPort23,SKXPort015]> {
let Latency = 12;
let NumMicroOps = 4;
define <8 x i32> @test_phaddd(<8 x i32> %a0, <8 x i32> %a1, <8 x i32> *%a2) {
; GENERIC-LABEL: test_phaddd:
; GENERIC: # %bb.0:
-; GENERIC-NEXT: vphaddd %ymm1, %ymm0, %ymm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphaddd (%rdi), %ymm0, %ymm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphaddd %ymm1, %ymm0, %ymm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphaddd (%rdi), %ymm0, %ymm0 # sched: [9:1.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_phaddd:
define <16 x i16> @test_phaddsw(<16 x i16> %a0, <16 x i16> %a1, <16 x i16> *%a2) {
; GENERIC-LABEL: test_phaddsw:
; GENERIC: # %bb.0:
-; GENERIC-NEXT: vphaddsw %ymm1, %ymm0, %ymm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphaddsw (%rdi), %ymm0, %ymm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphaddsw %ymm1, %ymm0, %ymm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphaddsw (%rdi), %ymm0, %ymm0 # sched: [9:1.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_phaddsw:
define <16 x i16> @test_phaddw(<16 x i16> %a0, <16 x i16> %a1, <16 x i16> *%a2) {
; GENERIC-LABEL: test_phaddw:
; GENERIC: # %bb.0:
-; GENERIC-NEXT: vphaddw %ymm1, %ymm0, %ymm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphaddw (%rdi), %ymm0, %ymm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphaddw %ymm1, %ymm0, %ymm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphaddw (%rdi), %ymm0, %ymm0 # sched: [9:1.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_phaddw:
define <8 x i32> @test_phsubd(<8 x i32> %a0, <8 x i32> %a1, <8 x i32> *%a2) {
; GENERIC-LABEL: test_phsubd:
; GENERIC: # %bb.0:
-; GENERIC-NEXT: vphsubd %ymm1, %ymm0, %ymm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphsubd (%rdi), %ymm0, %ymm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphsubd %ymm1, %ymm0, %ymm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphsubd (%rdi), %ymm0, %ymm0 # sched: [9:1.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_phsubd:
define <16 x i16> @test_phsubsw(<16 x i16> %a0, <16 x i16> %a1, <16 x i16> *%a2) {
; GENERIC-LABEL: test_phsubsw:
; GENERIC: # %bb.0:
-; GENERIC-NEXT: vphsubsw %ymm1, %ymm0, %ymm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphsubsw (%rdi), %ymm0, %ymm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphsubsw %ymm1, %ymm0, %ymm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphsubsw (%rdi), %ymm0, %ymm0 # sched: [9:1.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_phsubsw:
define <16 x i16> @test_phsubw(<16 x i16> %a0, <16 x i16> %a1, <16 x i16> *%a2) {
; GENERIC-LABEL: test_phsubw:
; GENERIC: # %bb.0:
-; GENERIC-NEXT: vphsubw %ymm1, %ymm0, %ymm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphsubw (%rdi), %ymm0, %ymm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphsubw %ymm1, %ymm0, %ymm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphsubw (%rdi), %ymm0, %ymm0 # sched: [9:1.50]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_phsubw:
; GENERIC-LABEL: test_vphaddbd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: vphaddbd %xmm0, %xmm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphaddbd (%rdi), %xmm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphaddbd %xmm0, %xmm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphaddbd (%rdi), %xmm0 # sched: [9:1.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; GENERIC-LABEL: test_vphaddbq:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: vphaddbq %xmm0, %xmm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphaddbq (%rdi), %xmm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphaddbq %xmm0, %xmm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphaddbq (%rdi), %xmm0 # sched: [9:1.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; GENERIC-LABEL: test_vphaddbw:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: vphaddbw %xmm0, %xmm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphaddbw (%rdi), %xmm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphaddbw %xmm0, %xmm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphaddbw (%rdi), %xmm0 # sched: [9:1.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; GENERIC-LABEL: test_vphadddq:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: vphadddq %xmm0, %xmm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphadddq (%rdi), %xmm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphadddq %xmm0, %xmm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphadddq (%rdi), %xmm0 # sched: [9:1.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; GENERIC-LABEL: test_vphaddubd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: vphaddubd %xmm0, %xmm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphaddubd (%rdi), %xmm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphaddubd %xmm0, %xmm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphaddubd (%rdi), %xmm0 # sched: [9:1.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; GENERIC-LABEL: test_vphaddubq:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: vphaddubq %xmm0, %xmm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphaddubq (%rdi), %xmm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphaddubq %xmm0, %xmm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphaddubq (%rdi), %xmm0 # sched: [9:1.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; GENERIC-LABEL: test_vphaddubw:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: vphaddubw %xmm0, %xmm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphaddubw (%rdi), %xmm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphaddubw %xmm0, %xmm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphaddubw (%rdi), %xmm0 # sched: [9:1.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; GENERIC-LABEL: test_vphaddudq:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: vphaddudq %xmm0, %xmm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphaddudq (%rdi), %xmm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphaddudq %xmm0, %xmm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphaddudq (%rdi), %xmm0 # sched: [9:1.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; GENERIC-LABEL: test_vphadduwd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: vphadduwd %xmm0, %xmm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphadduwd (%rdi), %xmm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphadduwd %xmm0, %xmm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphadduwd (%rdi), %xmm0 # sched: [9:1.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; GENERIC-LABEL: test_vphadduwq:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: vphadduwq %xmm0, %xmm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphadduwq (%rdi), %xmm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphadduwq %xmm0, %xmm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphadduwq (%rdi), %xmm0 # sched: [9:1.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; GENERIC-LABEL: test_vphaddwd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: vphaddwd %xmm0, %xmm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphaddwd (%rdi), %xmm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphaddwd %xmm0, %xmm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphaddwd (%rdi), %xmm0 # sched: [9:1.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; GENERIC-LABEL: test_vphaddwq:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: vphaddwq %xmm0, %xmm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphaddwq (%rdi), %xmm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphaddwq %xmm0, %xmm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphaddwq (%rdi), %xmm0 # sched: [9:1.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; GENERIC-LABEL: test_vphsubbw:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: vphsubbw %xmm0, %xmm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphsubbw (%rdi), %xmm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphsubbw %xmm0, %xmm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphsubbw (%rdi), %xmm0 # sched: [9:1.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; GENERIC-LABEL: test_vphsubdq:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: vphsubdq %xmm0, %xmm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphsubdq (%rdi), %xmm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphsubdq %xmm0, %xmm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphsubdq (%rdi), %xmm0 # sched: [9:1.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; GENERIC-LABEL: test_vphsubwd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: vphsubwd %xmm0, %xmm0 # sched: [1:0.50]
-; GENERIC-NEXT: vphsubwd (%rdi), %xmm0 # sched: [6:0.50]
+; GENERIC-NEXT: vphsubwd %xmm0, %xmm0 # sched: [3:1.50]
+; GENERIC-NEXT: vphsubwd (%rdi), %xmm0 # sched: [9:1.50]
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retq # sched: [1:1.00]
;