mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-11 13:37:07 +00: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:
parent
6b7e6749e2
commit
e2abbcab78
@ -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;
|
||||
|
@ -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]
|
||||
;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user