forked from OSchip/llvm-project
[X86][Sched] Update scheduling information for VZEROALL on HWS, BDW, SKX, SNB.
Summary: While looking at PR35606, I found out that the scheduling info is incorrect. One can check that it's really a P5+P6 and not a 2*P56 with: echo -e 'vzeroall\nvandps %xmm1, %xmm2, %xmm3' | ./bin/llvm-exegesis -mode=uops -snippets-file=- (vandps executes on P5 only) Reviewers: craig.topper, RKSimon Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D52541 llvm-svn: 343447
This commit is contained in:
parent
dac60b9837
commit
a933fb237e
|
@ -1374,10 +1374,10 @@ def BWWriteResGroup153 : SchedWriteRes<[BWPort4,BWPort23,BWPort237,BWPort06,BWPo
|
|||
}
|
||||
def: InstRW<[BWWriteResGroup153], (instrs CMPXCHG8B)>;
|
||||
|
||||
def BWWriteResGroup154 : SchedWriteRes<[BWPort5]> {
|
||||
let Latency = 16;
|
||||
let NumMicroOps = 16;
|
||||
let ResourceCycles = [16];
|
||||
def BWWriteResGroup154 : SchedWriteRes<[BWPort5,BWPort6]> {
|
||||
let Latency = 8;
|
||||
let NumMicroOps = 20;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[BWWriteResGroup154], (instrs VZEROALL)>;
|
||||
|
||||
|
|
|
@ -1617,10 +1617,10 @@ def HWWriteResGroup144 : SchedWriteRes<[HWPort4,HWPort5,HWPort6,HWPort23,HWPort2
|
|||
}
|
||||
def: InstRW<[HWWriteResGroup144], (instrs INSB, INSL, INSW)>;
|
||||
|
||||
def HWWriteResGroup145 : SchedWriteRes<[HWPort5]> {
|
||||
let Latency = 16;
|
||||
let NumMicroOps = 16;
|
||||
let ResourceCycles = [16];
|
||||
def HWWriteResGroup145 : SchedWriteRes<[HWPort5, HWPort6]> {
|
||||
let Latency = 8;
|
||||
let NumMicroOps = 20;
|
||||
let ResourceCycles = [1,1];
|
||||
}
|
||||
def: InstRW<[HWWriteResGroup145], (instrs VZEROALL)>;
|
||||
|
||||
|
|
|
@ -1104,6 +1104,13 @@ def SBWriteResGroup131 : SchedWriteRes<[SBPort0,SBPort1,SBPort23]> {
|
|||
}
|
||||
def: InstRW<[SBWriteResGroup131], (instregex "DIV(R?)_FI(16|32)m")>;
|
||||
|
||||
def SBWriteResGroupVzeroall : SchedWriteRes<[SBPort5]> {
|
||||
let Latency = 9;
|
||||
let NumMicroOps = 20;
|
||||
let ResourceCycles = [2];
|
||||
}
|
||||
def: InstRW<[SBWriteResGroupVzeroall], (instrs VZEROALL)>;
|
||||
|
||||
def: InstRW<[WriteZero], (instrs CLC)>;
|
||||
|
||||
// Intruction variants handled by the renamer. These might not need execution
|
||||
|
|
|
@ -2086,10 +2086,10 @@ def SKXWriteResGroup199 : SchedWriteRes<[SKXPort4,SKXPort23,SKXPort237,SKXPort06
|
|||
}
|
||||
def: InstRW<[SKXWriteResGroup199], (instrs CMPXCHG8B)>;
|
||||
|
||||
def SKXWriteResGroup200 : SchedWriteRes<[SKXPort0156]> {
|
||||
let Latency = 16;
|
||||
let NumMicroOps = 16;
|
||||
let ResourceCycles = [16];
|
||||
def SKXWriteResGroup200 : SchedWriteRes<[SKXPort1, SKXPort05, SKXPort6]> {
|
||||
let Latency = 12;
|
||||
let NumMicroOps = 34;
|
||||
let ResourceCycles = [1, 4, 5];
|
||||
}
|
||||
def: InstRW<[SKXWriteResGroup200], (instrs VZEROALL)>;
|
||||
|
||||
|
|
|
@ -5339,22 +5339,22 @@ define <8 x float> @test_xorps(<8 x float> %a0, <8 x float> %a1, <8 x float> *%a
|
|||
define void @test_zeroall() {
|
||||
; GENERIC-LABEL: test_zeroall:
|
||||
; GENERIC: # %bb.0:
|
||||
; GENERIC-NEXT: vzeroall # sched: [100:0.33]
|
||||
; GENERIC-NEXT: vzeroall # sched: [9:2.00]
|
||||
; GENERIC-NEXT: retq # sched: [1:1.00]
|
||||
;
|
||||
; SANDY-LABEL: test_zeroall:
|
||||
; SANDY: # %bb.0:
|
||||
; SANDY-NEXT: vzeroall # sched: [100:0.33]
|
||||
; SANDY-NEXT: vzeroall # sched: [9:2.00]
|
||||
; SANDY-NEXT: retq # sched: [1:1.00]
|
||||
;
|
||||
; HASWELL-LABEL: test_zeroall:
|
||||
; HASWELL: # %bb.0:
|
||||
; HASWELL-NEXT: vzeroall # sched: [16:16.00]
|
||||
; HASWELL-NEXT: vzeroall # sched: [8:1.00]
|
||||
; HASWELL-NEXT: retq # sched: [7:1.00]
|
||||
;
|
||||
; BROADWELL-LABEL: test_zeroall:
|
||||
; BROADWELL: # %bb.0:
|
||||
; BROADWELL-NEXT: vzeroall # sched: [16:16.00]
|
||||
; BROADWELL-NEXT: vzeroall # sched: [8:1.00]
|
||||
; BROADWELL-NEXT: retq # sched: [7:1.00]
|
||||
;
|
||||
; SKYLAKE-LABEL: test_zeroall:
|
||||
|
@ -5364,7 +5364,7 @@ define void @test_zeroall() {
|
|||
;
|
||||
; SKX-LABEL: test_zeroall:
|
||||
; SKX: # %bb.0:
|
||||
; SKX-NEXT: vzeroall # sched: [16:4.00]
|
||||
; SKX-NEXT: vzeroall # sched: [12:5.00]
|
||||
; SKX-NEXT: retq # sched: [7:1.00]
|
||||
;
|
||||
; BTVER2-LABEL: test_zeroall:
|
||||
|
|
|
@ -1719,7 +1719,7 @@ vzeroupper
|
|||
# CHECK-NEXT: 2 6 1.00 * vxorps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 vxorps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 7 1.00 * vxorps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 16 16 16.00 * * U vzeroall
|
||||
# CHECK-NEXT: 20 8 1.00 * * U vzeroall
|
||||
# CHECK-NEXT: 4 4 1.00 * * U vzeroupper
|
||||
|
||||
# CHECK: Resources:
|
||||
|
@ -1736,7 +1736,7 @@ vzeroupper
|
|||
|
||||
# CHECK: Resource pressure per iteration:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
|
||||
# CHECK-NEXT: - 257.00 216.33 236.33 176.17 176.17 38.00 442.33 2.00 12.67
|
||||
# CHECK-NEXT: - 257.00 216.33 236.33 176.17 176.17 38.00 427.33 3.00 12.67
|
||||
|
||||
# CHECK: Resource pressure by instruction:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
|
||||
|
@ -2429,5 +2429,5 @@ vzeroupper
|
|||
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vxorps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - vxorps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vxorps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - - - - - 16.00 - - vzeroall
|
||||
# CHECK-NEXT: - - - - - - - 1.00 1.00 - vzeroall
|
||||
# CHECK-NEXT: - - 1.08 1.08 - - - 1.08 0.75 - vzeroupper
|
||||
|
|
|
@ -1719,7 +1719,7 @@ vzeroupper
|
|||
# CHECK-NEXT: 2 7 1.00 * vxorps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 vxorps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 8 1.00 * vxorps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 100 0.33 * * U vzeroall
|
||||
# CHECK-NEXT: 20 9 2.00 * * U vzeroall
|
||||
# CHECK-NEXT: 1 100 0.33 * * U vzeroupper
|
||||
|
||||
# CHECK: Resources:
|
||||
|
@ -1734,7 +1734,7 @@ vzeroupper
|
|||
|
||||
# CHECK: Resource pressure per iteration:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
|
||||
# CHECK-NEXT: - 572.00 247.17 317.67 39.00 364.17 179.50 179.50
|
||||
# CHECK-NEXT: - 572.00 246.83 317.33 39.00 365.83 179.50 179.50
|
||||
|
||||
# CHECK: Resource pressure by instruction:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
|
||||
|
@ -2427,5 +2427,5 @@ vzeroupper
|
|||
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vxorps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - 1.00 - - vxorps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vxorps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - vzeroall
|
||||
# CHECK-NEXT: - - - - - 2.00 - - vzeroall
|
||||
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - vzeroupper
|
||||
|
|
|
@ -1719,7 +1719,7 @@ vzeroupper
|
|||
# CHECK-NEXT: 2 7 1.00 * vxorps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 vxorps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 8 1.00 * vxorps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 16 16 16.00 * * U vzeroall
|
||||
# CHECK-NEXT: 20 8 1.00 * * U vzeroall
|
||||
# CHECK-NEXT: 4 4 1.00 * * U vzeroupper
|
||||
|
||||
# CHECK: Resources:
|
||||
|
@ -1736,7 +1736,7 @@ vzeroupper
|
|||
|
||||
# CHECK: Resource pressure per iteration:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
|
||||
# CHECK-NEXT: - 336.00 215.67 237.67 176.17 176.17 38.00 445.67 2.00 12.67
|
||||
# CHECK-NEXT: - 336.00 215.67 237.67 176.17 176.17 38.00 430.67 3.00 12.67
|
||||
|
||||
# CHECK: Resource pressure by instruction:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
|
||||
|
@ -2429,5 +2429,5 @@ vzeroupper
|
|||
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vxorps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - vxorps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - vxorps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - - - - - 16.00 - - vzeroall
|
||||
# CHECK-NEXT: - - - - - - - 1.00 1.00 - vzeroall
|
||||
# CHECK-NEXT: - - 1.08 1.08 - - - 1.08 0.75 - vzeroupper
|
||||
|
|
|
@ -1719,7 +1719,7 @@ vzeroupper
|
|||
# CHECK-NEXT: 2 7 1.00 * vxorps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 vxorps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 8 1.00 * vxorps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 100 0.33 * * U vzeroall
|
||||
# CHECK-NEXT: 20 9 2.00 * * U vzeroall
|
||||
# CHECK-NEXT: 1 100 0.33 * * U vzeroupper
|
||||
|
||||
# CHECK: Resources:
|
||||
|
@ -1734,7 +1734,7 @@ vzeroupper
|
|||
|
||||
# CHECK: Resource pressure per iteration:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1]
|
||||
# CHECK-NEXT: - 572.00 247.17 317.67 39.00 364.17 179.50 179.50
|
||||
# CHECK-NEXT: - 572.00 246.83 317.33 39.00 365.83 179.50 179.50
|
||||
|
||||
# CHECK: Resource pressure by instruction:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
|
||||
|
@ -2427,5 +2427,5 @@ vzeroupper
|
|||
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vxorps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - 1.00 - - vxorps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 vxorps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - vzeroall
|
||||
# CHECK-NEXT: - - - - - 2.00 - - vzeroall
|
||||
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - vzeroupper
|
||||
|
|
|
@ -1719,7 +1719,7 @@ vzeroupper
|
|||
# CHECK-NEXT: 2 7 0.50 * vxorps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 1 0.33 vxorps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 8 0.50 * vxorps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 16 16 4.00 * * U vzeroall
|
||||
# CHECK-NEXT: 34 12 5.00 * * U vzeroall
|
||||
# CHECK-NEXT: 4 4 1.00 * * U vzeroupper
|
||||
|
||||
# CHECK: Resources:
|
||||
|
@ -1736,7 +1736,7 @@ vzeroupper
|
|||
|
||||
# CHECK: Resource pressure per iteration:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
|
||||
# CHECK-NEXT: - 123.00 320.50 200.50 173.17 173.17 34.00 341.00 6.00 12.67
|
||||
# CHECK-NEXT: - 123.00 318.50 197.50 173.17 173.17 34.00 339.00 7.00 12.67
|
||||
|
||||
# CHECK: Resource pressure by instruction:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
|
||||
|
@ -2429,5 +2429,5 @@ vzeroupper
|
|||
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vxorps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - vxorps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - vxorps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 4.00 4.00 - - - 4.00 4.00 - vzeroall
|
||||
# CHECK-NEXT: - - 2.00 1.00 - - - 2.00 5.00 - vzeroall
|
||||
# CHECK-NEXT: - - 1.08 1.08 - - - 1.08 0.75 - vzeroupper
|
||||
|
|
Loading…
Reference in New Issue