1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00

[X86][SNB] Fix scheduling of MMX integer multiply instructions.

The entries were being bound to the wrong class.

llvm-svn: 331388
This commit is contained in:
Simon Pilgrim 2018-05-02 19:26:14 +00:00
parent 6b7e6749e2
commit e2abbcab78
6 changed files with 32 additions and 32 deletions

View File

@ -1247,14 +1247,14 @@ def SBWriteResGroup89_2 : SchedWriteRes<[SBPort0,SBPort23]> {
let NumMicroOps = 2;
let ResourceCycles = [1,1];
}
def: InstRW<[SBWriteResGroup89], (instregex "MMX_PMADDUBSWrm",
"MMX_PMADDWDirm",
"MMX_PMULHRSWrm",
"MMX_PMULHUWirm",
"MMX_PMULHWirm",
"MMX_PMULLWirm",
"MMX_PMULUDQirm",
"MMX_PSADBWirm")>;
def: InstRW<[SBWriteResGroup89_2], (instregex "MMX_PMADDUBSWrm",
"MMX_PMADDWDirm",
"MMX_PMULHRSWrm",
"MMX_PMULHUWirm",
"MMX_PMULHWirm",
"MMX_PMULLWirm",
"MMX_PMULUDQirm",
"MMX_PSADBWirm")>;
def SBWriteResGroup90 : SchedWriteRes<[SBPort1,SBPort23]> {
let Latency = 9;

View File

@ -3591,7 +3591,7 @@ define i64 @test_pmaddwd(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; GENERIC-LABEL: test_pmaddwd:
; GENERIC: # %bb.0:
; GENERIC-NEXT: pmaddwd %mm1, %mm0 # sched: [5:1.00]
; GENERIC-NEXT: pmaddwd (%rdi), %mm0 # sched: [11:1.00]
; GENERIC-NEXT: pmaddwd (%rdi), %mm0 # sched: [10:1.00]
; GENERIC-NEXT: movq %mm0, %rax # sched: [1:0.33]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
@ -3612,7 +3612,7 @@ define i64 @test_pmaddwd(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; SANDY-LABEL: test_pmaddwd:
; SANDY: # %bb.0:
; SANDY-NEXT: pmaddwd %mm1, %mm0 # sched: [5:1.00]
; SANDY-NEXT: pmaddwd (%rdi), %mm0 # sched: [11:1.00]
; SANDY-NEXT: pmaddwd (%rdi), %mm0 # sched: [10:1.00]
; SANDY-NEXT: movq %mm0, %rax # sched: [1:0.33]
; SANDY-NEXT: retq # sched: [1:1.00]
;
@ -3669,7 +3669,7 @@ define i64 @test_pmaddubsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; GENERIC-LABEL: test_pmaddubsw:
; GENERIC: # %bb.0:
; GENERIC-NEXT: pmaddubsw %mm1, %mm0 # sched: [5:1.00]
; GENERIC-NEXT: pmaddubsw (%rdi), %mm0 # sched: [11:1.00]
; GENERIC-NEXT: pmaddubsw (%rdi), %mm0 # sched: [10:1.00]
; GENERIC-NEXT: movq %mm0, %rax # sched: [1:0.33]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
@ -3690,7 +3690,7 @@ define i64 @test_pmaddubsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; SANDY-LABEL: test_pmaddubsw:
; SANDY: # %bb.0:
; SANDY-NEXT: pmaddubsw %mm1, %mm0 # sched: [5:1.00]
; SANDY-NEXT: pmaddubsw (%rdi), %mm0 # sched: [11:1.00]
; SANDY-NEXT: pmaddubsw (%rdi), %mm0 # sched: [10:1.00]
; SANDY-NEXT: movq %mm0, %rax # sched: [1:0.33]
; SANDY-NEXT: retq # sched: [1:1.00]
;
@ -4114,7 +4114,7 @@ define i64 @test_pmulhrsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; GENERIC-LABEL: test_pmulhrsw:
; GENERIC: # %bb.0:
; GENERIC-NEXT: pmulhrsw %mm1, %mm0 # sched: [5:1.00]
; GENERIC-NEXT: pmulhrsw (%rdi), %mm0 # sched: [11:1.00]
; GENERIC-NEXT: pmulhrsw (%rdi), %mm0 # sched: [10:1.00]
; GENERIC-NEXT: movq %mm0, %rax # sched: [1:0.33]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
@ -4135,7 +4135,7 @@ define i64 @test_pmulhrsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; SANDY-LABEL: test_pmulhrsw:
; SANDY: # %bb.0:
; SANDY-NEXT: pmulhrsw %mm1, %mm0 # sched: [5:1.00]
; SANDY-NEXT: pmulhrsw (%rdi), %mm0 # sched: [11:1.00]
; SANDY-NEXT: pmulhrsw (%rdi), %mm0 # sched: [10:1.00]
; SANDY-NEXT: movq %mm0, %rax # sched: [1:0.33]
; SANDY-NEXT: retq # sched: [1:1.00]
;
@ -4192,7 +4192,7 @@ define i64 @test_pmulhw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; GENERIC-LABEL: test_pmulhw:
; GENERIC: # %bb.0:
; GENERIC-NEXT: pmulhw %mm1, %mm0 # sched: [5:1.00]
; GENERIC-NEXT: pmulhw (%rdi), %mm0 # sched: [11:1.00]
; GENERIC-NEXT: pmulhw (%rdi), %mm0 # sched: [10:1.00]
; GENERIC-NEXT: movq %mm0, %rax # sched: [1:0.33]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
@ -4213,7 +4213,7 @@ define i64 @test_pmulhw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; SANDY-LABEL: test_pmulhw:
; SANDY: # %bb.0:
; SANDY-NEXT: pmulhw %mm1, %mm0 # sched: [5:1.00]
; SANDY-NEXT: pmulhw (%rdi), %mm0 # sched: [11:1.00]
; SANDY-NEXT: pmulhw (%rdi), %mm0 # sched: [10:1.00]
; SANDY-NEXT: movq %mm0, %rax # sched: [1:0.33]
; SANDY-NEXT: retq # sched: [1:1.00]
;
@ -4270,7 +4270,7 @@ define i64 @test_pmulhuw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; GENERIC-LABEL: test_pmulhuw:
; GENERIC: # %bb.0:
; GENERIC-NEXT: pmulhuw %mm1, %mm0 # sched: [5:1.00]
; GENERIC-NEXT: pmulhuw (%rdi), %mm0 # sched: [11:1.00]
; GENERIC-NEXT: pmulhuw (%rdi), %mm0 # sched: [10:1.00]
; GENERIC-NEXT: movq %mm0, %rax # sched: [1:0.33]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
@ -4291,7 +4291,7 @@ define i64 @test_pmulhuw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; SANDY-LABEL: test_pmulhuw:
; SANDY: # %bb.0:
; SANDY-NEXT: pmulhuw %mm1, %mm0 # sched: [5:1.00]
; SANDY-NEXT: pmulhuw (%rdi), %mm0 # sched: [11:1.00]
; SANDY-NEXT: pmulhuw (%rdi), %mm0 # sched: [10:1.00]
; SANDY-NEXT: movq %mm0, %rax # sched: [1:0.33]
; SANDY-NEXT: retq # sched: [1:1.00]
;
@ -4348,7 +4348,7 @@ define i64 @test_pmullw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; GENERIC-LABEL: test_pmullw:
; GENERIC: # %bb.0:
; GENERIC-NEXT: pmullw %mm1, %mm0 # sched: [5:1.00]
; GENERIC-NEXT: pmullw (%rdi), %mm0 # sched: [11:1.00]
; GENERIC-NEXT: pmullw (%rdi), %mm0 # sched: [10:1.00]
; GENERIC-NEXT: movq %mm0, %rax # sched: [1:0.33]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
@ -4369,7 +4369,7 @@ define i64 @test_pmullw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; SANDY-LABEL: test_pmullw:
; SANDY: # %bb.0:
; SANDY-NEXT: pmullw %mm1, %mm0 # sched: [5:1.00]
; SANDY-NEXT: pmullw (%rdi), %mm0 # sched: [11:1.00]
; SANDY-NEXT: pmullw (%rdi), %mm0 # sched: [10:1.00]
; SANDY-NEXT: movq %mm0, %rax # sched: [1:0.33]
; SANDY-NEXT: retq # sched: [1:1.00]
;
@ -4426,7 +4426,7 @@ define i64 @test_pmuludq(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; GENERIC-LABEL: test_pmuludq:
; GENERIC: # %bb.0:
; GENERIC-NEXT: pmuludq %mm1, %mm0 # sched: [5:1.00]
; GENERIC-NEXT: pmuludq (%rdi), %mm0 # sched: [11:1.00]
; GENERIC-NEXT: pmuludq (%rdi), %mm0 # sched: [10:1.00]
; GENERIC-NEXT: movq %mm0, %rax # sched: [1:0.33]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
@ -4447,7 +4447,7 @@ define i64 @test_pmuludq(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; SANDY-LABEL: test_pmuludq:
; SANDY: # %bb.0:
; SANDY-NEXT: pmuludq %mm1, %mm0 # sched: [5:1.00]
; SANDY-NEXT: pmuludq (%rdi), %mm0 # sched: [11:1.00]
; SANDY-NEXT: pmuludq (%rdi), %mm0 # sched: [10:1.00]
; SANDY-NEXT: movq %mm0, %rax # sched: [1:0.33]
; SANDY-NEXT: retq # sched: [1:1.00]
;
@ -4582,7 +4582,7 @@ define i64 @test_psadbw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; GENERIC-LABEL: test_psadbw:
; GENERIC: # %bb.0:
; GENERIC-NEXT: psadbw %mm1, %mm0 # sched: [5:1.00]
; GENERIC-NEXT: psadbw (%rdi), %mm0 # sched: [11:1.00]
; GENERIC-NEXT: psadbw (%rdi), %mm0 # sched: [10:1.00]
; GENERIC-NEXT: movq %mm0, %rax # sched: [1:0.33]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
@ -4603,7 +4603,7 @@ define i64 @test_psadbw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
; SANDY-LABEL: test_psadbw:
; SANDY: # %bb.0:
; SANDY-NEXT: psadbw %mm1, %mm0 # sched: [5:1.00]
; SANDY-NEXT: psadbw (%rdi), %mm0 # sched: [11:1.00]
; SANDY-NEXT: psadbw (%rdi), %mm0 # sched: [10:1.00]
; SANDY-NEXT: movq %mm0, %rax # sched: [1:0.33]
; SANDY-NEXT: retq # sched: [1:1.00]
;

View File

@ -210,11 +210,11 @@ pxor (%rax), %mm2
# CHECK-NEXT: 1 3 1.00 pcmpgtw %mm0, %mm2
# CHECK-NEXT: 2 8 1.00 * pcmpgtw (%rax), %mm2
# CHECK-NEXT: 1 5 1.00 pmaddwd %mm0, %mm2
# CHECK-NEXT: 2 11 1.00 * pmaddwd (%rax), %mm2
# CHECK-NEXT: 2 10 1.00 * pmaddwd (%rax), %mm2
# CHECK-NEXT: 1 5 1.00 pmulhw %mm0, %mm2
# CHECK-NEXT: 2 11 1.00 * pmulhw (%rax), %mm2
# CHECK-NEXT: 2 10 1.00 * pmulhw (%rax), %mm2
# CHECK-NEXT: 1 5 1.00 pmullw %mm0, %mm2
# CHECK-NEXT: 2 11 1.00 * pmullw (%rax), %mm2
# CHECK-NEXT: 2 10 1.00 * pmullw (%rax), %mm2
# CHECK-NEXT: 1 1 0.33 por %mm0, %mm2
# CHECK-NEXT: 2 6 0.50 * por (%rax), %mm2
# CHECK-NEXT: 1 1 1.00 pslld $1, %mm2

View File

@ -281,13 +281,13 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 2 8 1.00 * pminub (%rax), %mm2
# CHECK-NEXT: 1 2 1.00 pmovmskb %xmm0, %ecx
# CHECK-NEXT: 1 5 1.00 pmulhuw %mm0, %mm2
# CHECK-NEXT: 2 11 1.00 * pmulhuw (%rax), %mm2
# CHECK-NEXT: 2 10 1.00 * pmulhuw (%rax), %mm2
# CHECK-NEXT: 1 5 0.50 * * prefetcht0 (%rax)
# CHECK-NEXT: 1 5 0.50 * * prefetcht1 (%rax)
# CHECK-NEXT: 1 5 0.50 * * prefetcht2 (%rax)
# CHECK-NEXT: 1 5 0.50 * * prefetchnta (%rax)
# CHECK-NEXT: 1 5 1.00 psadbw %mm0, %mm2
# CHECK-NEXT: 2 11 1.00 * psadbw (%rax), %mm2
# CHECK-NEXT: 2 10 1.00 * psadbw (%rax), %mm2
# CHECK-NEXT: 1 1 1.00 pshufw $1, %mm0, %mm2
# CHECK-NEXT: 2 6 1.00 * pshufw $1, (%rax), %mm2
# CHECK-NEXT: 1 5 1.00 rcpps %xmm0, %xmm2

View File

@ -573,7 +573,7 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 1 5 1.00 pmullw %xmm0, %xmm2
# CHECK-NEXT: 2 11 1.00 * pmullw (%rax), %xmm2
# CHECK-NEXT: 1 5 1.00 pmuludq %mm0, %mm2
# CHECK-NEXT: 2 11 1.00 * pmuludq (%rax), %mm2
# CHECK-NEXT: 2 10 1.00 * pmuludq (%rax), %mm2
# CHECK-NEXT: 1 5 1.00 pmuludq %xmm0, %xmm2
# CHECK-NEXT: 2 11 1.00 * pmuludq (%rax), %xmm2
# CHECK-NEXT: 1 1 0.33 por %xmm0, %xmm2

View File

@ -147,11 +147,11 @@ psignw (%rax), %xmm2
# CHECK-NEXT: 3 3 1.50 phsubw %xmm0, %xmm2
# CHECK-NEXT: 4 9 1.50 * phsubw (%rax), %xmm2
# CHECK-NEXT: 1 5 1.00 pmaddubsw %mm0, %mm2
# CHECK-NEXT: 2 11 1.00 * pmaddubsw (%rax), %mm2
# CHECK-NEXT: 2 10 1.00 * pmaddubsw (%rax), %mm2
# CHECK-NEXT: 1 5 1.00 pmaddubsw %xmm0, %xmm2
# CHECK-NEXT: 2 11 1.00 * pmaddubsw (%rax), %xmm2
# CHECK-NEXT: 1 5 1.00 pmulhrsw %mm0, %mm2
# CHECK-NEXT: 2 11 1.00 * pmulhrsw (%rax), %mm2
# CHECK-NEXT: 2 10 1.00 * pmulhrsw (%rax), %mm2
# CHECK-NEXT: 1 5 1.00 pmulhrsw %xmm0, %xmm2
# CHECK-NEXT: 2 11 1.00 * pmulhrsw (%rax), %xmm2
# CHECK-NEXT: 1 1 0.50 pshufb %mm0, %mm2