diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Target/X86/X86ScheduleZnver1.td | 62 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/mmx-schedule.ll | 2 | ||||
| -rw-r--r-- | llvm/test/tools/llvm-mca/X86/Znver1/resources-ssse3.s | 6 |
3 files changed, 34 insertions, 36 deletions
diff --git a/llvm/lib/Target/X86/X86ScheduleZnver1.td b/llvm/lib/Target/X86/X86ScheduleZnver1.td index 8c4c960ec96..a6ba4cbb015 100644 --- a/llvm/lib/Target/X86/X86ScheduleZnver1.td +++ b/llvm/lib/Target/X86/X86ScheduleZnver1.td @@ -191,8 +191,6 @@ def : WriteRes<WriteFStore, [ZnAGU]>; def : WriteRes<WriteFMove, [ZnFPU]>; def : WriteRes<WriteFLoad, [ZnAGU]> { let Latency = 8; } -defm : ZnWriteResFpuPair<WriteFHAdd, [ZnFPU0], 3>; -defm : ZnWriteResFpuPair<WriteFHAddY, [ZnFPU0], 3>; defm : ZnWriteResFpuPair<WriteFAdd, [ZnFPU0], 3>; defm : ZnWriteResFpuPair<WriteFAddY, [ZnFPU0], 3>; defm : ZnWriteResFpuPair<WriteFCmp, [ZnFPU0], 3>; @@ -241,8 +239,6 @@ defm : ZnWriteResFpuPair<WriteVecShiftImmX, [ZnFPU], 1>; defm : ZnWriteResFpuPair<WriteVecShiftImmY, [ZnFPU], 1>; defm : ZnWriteResFpuPair<WriteVecLogic, [ZnFPU], 1>; defm : ZnWriteResFpuPair<WriteVecLogicY, [ZnFPU], 1>; -defm : ZnWriteResFpuPair<WritePHAdd, [ZnFPU], 1>; -defm : ZnWriteResFpuPair<WritePHAddY, [ZnFPU], 1>; defm : ZnWriteResFpuPair<WriteVecALU, [ZnFPU], 1>; defm : ZnWriteResFpuPair<WriteVecALUY, [ZnFPU], 1>; defm : ZnWriteResFpuPair<WriteVecIMul, [ZnFPU0], 4>; @@ -297,26 +293,28 @@ defm : ZnWriteResFpuPair<WriteFShuffle256, [ZnFPU], 100>; defm : ZnWriteResFpuPair<WriteFVarShuffle256, [ZnFPU], 100>; // Microcoded Instructions -let Latency = 100 in { - def : WriteRes<WriteMicrocoded, []>; - def : WriteRes<WriteSystem, []>; - def : WriteRes<WriteMPSAD, []>; - def : WriteRes<WriteMPSADY, []>; - def : WriteRes<WriteMPSADLd, []>; - def : WriteRes<WriteMPSADYLd, []>; - def : WriteRes<WriteCLMul, []>; - def : WriteRes<WriteCLMulLd, []>; - def : WriteRes<WritePCmpIStrM, []>; - def : WriteRes<WritePCmpIStrMLd, []>; - def : WriteRes<WritePCmpEStrI, []>; - def : WriteRes<WritePCmpEStrILd, []>; - def : WriteRes<WritePCmpEStrM, []>; - def : WriteRes<WritePCmpEStrMLd, []>; - def : WriteRes<WritePCmpIStrI, []>; - def : WriteRes<WritePCmpIStrILd, []>; - def : WriteRes<WriteLDMXCSR, []>; - def : WriteRes<WriteSTMXCSR, []>; - } +def ZnWriteMicrocoded : SchedWriteRes<[]> { + let Latency = 100; +} + +def : SchedAlias<WriteMicrocoded, ZnWriteMicrocoded>; +def : SchedAlias<WriteSystem, ZnWriteMicrocoded>; +def : SchedAlias<WriteMPSAD, ZnWriteMicrocoded>; +def : SchedAlias<WriteMPSADY, ZnWriteMicrocoded>; +def : SchedAlias<WriteMPSADLd, ZnWriteMicrocoded>; +def : SchedAlias<WriteMPSADYLd, ZnWriteMicrocoded>; +def : SchedAlias<WriteCLMul, ZnWriteMicrocoded>; +def : SchedAlias<WriteCLMulLd, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpIStrM, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpIStrMLd, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpEStrI, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpEStrILd, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpEStrM, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpEStrMLd, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpIStrI, ZnWriteMicrocoded>; +def : SchedAlias<WritePCmpIStrILd, ZnWriteMicrocoded>; +def : SchedAlias<WriteLDMXCSR, ZnWriteMicrocoded>; +def : SchedAlias<WriteSTMXCSR, ZnWriteMicrocoded>; //=== Regex based InstRW ===// // Notation: @@ -1028,13 +1026,10 @@ def : InstRW<[WriteMicrocoded], (instregex "VPGATHER(Q|D)(Q|D)(Y?)rm")>; // HADD, HSUB PS/PD // PHADD|PHSUB (S) W/D. -def : InstRW<[WriteMicrocoded], (instregex "MMX_PHADD(W|D)r(r|m)", - "MMX_PHADDSWr(r|m)", - "MMX_PHSUB(W|D)r(r|m)", - "MMX_PHSUBSWrr", - "(V?)PH(ADD|SUB)(W|D)(Y?)r(r|m)", - "(V?)PH(ADD|SUB)SW(Y?)r(r|m)")>; - +def : SchedAlias<WritePHAdd, ZnWriteMicrocoded>; +def : SchedAlias<WritePHAddLd, ZnWriteMicrocoded>; +def : SchedAlias<WritePHAddY, ZnWriteMicrocoded>; +def : SchedAlias<WritePHAddYLd, ZnWriteMicrocoded>; // PCMPGTQ. def ZnWritePCMPGTQr : SchedWriteRes<[ZnFPU03]>; @@ -1452,7 +1447,10 @@ def : InstRW<[ZnWriteSHA256RNDS2Ld], (instregex "SHA256RNDS2rm")>; //-- Arithmetic instructions --// // HADD, HSUB PS/PD -def : InstRW<[WriteMicrocoded], (instregex "(V?)H(ADD|SUB)P(S|D)(Y?)r(r|m)")>; +def : SchedAlias<WriteFHAdd, ZnWriteMicrocoded>; +def : SchedAlias<WriteFHAddLd, ZnWriteMicrocoded>; +def : SchedAlias<WriteFHAddY, ZnWriteMicrocoded>; +def : SchedAlias<WriteFHAddYLd, ZnWriteMicrocoded>; // MULL SS/SD PS/PD. // x,x / v,v,v. diff --git a/llvm/test/CodeGen/X86/mmx-schedule.ll b/llvm/test/CodeGen/X86/mmx-schedule.ll index 3556a79264e..b57a20d8717 100644 --- a/llvm/test/CodeGen/X86/mmx-schedule.ll +++ b/llvm/test/CodeGen/X86/mmx-schedule.ll @@ -3409,7 +3409,7 @@ define i64 @test_phsubsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize { ; ZNVER1-LABEL: test_phsubsw: ; ZNVER1: # %bb.0: ; ZNVER1-NEXT: phsubsw %mm1, %mm0 # sched: [100:?] -; ZNVER1-NEXT: phsubsw (%rdi), %mm0 # sched: [8:0.50] +; ZNVER1-NEXT: phsubsw (%rdi), %mm0 # sched: [100:?] ; ZNVER1-NEXT: movq %mm0, %rax # sched: [2:1.00] ; ZNVER1-NEXT: retq # sched: [1:0.50] %1 = call x86_mmx @llvm.x86.ssse3.phsub.sw(x86_mmx %a0, x86_mmx %a1) diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/resources-ssse3.s b/llvm/test/tools/llvm-mca/X86/Znver1/resources-ssse3.s index 95c16187c28..1e1f95539d2 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver1/resources-ssse3.s +++ b/llvm/test/tools/llvm-mca/X86/Znver1/resources-ssse3.s @@ -139,7 +139,7 @@ psignw (%rax), %xmm2 # CHECK-NEXT: 1 100 - phsubd %xmm0, %xmm2 # CHECK-NEXT: 1 100 - * phsubd (%rax), %xmm2 # CHECK-NEXT: 1 100 - phsubsw %mm0, %mm2 -# CHECK-NEXT: 1 8 0.50 * phsubsw (%rax), %mm2 +# CHECK-NEXT: 1 100 - * phsubsw (%rax), %mm2 # CHECK-NEXT: 1 100 - phsubsw %xmm0, %xmm2 # CHECK-NEXT: 1 100 - * phsubsw (%rax), %xmm2 # CHECK-NEXT: 1 100 - phsubw %mm0, %mm2 @@ -187,7 +187,7 @@ psignw (%rax), %xmm2 # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] -# CHECK-NEXT: 10.50 10.50 - - - - - 16.25 8.25 8.25 8.25 - +# CHECK-NEXT: 10.00 10.00 - - - - - 16.00 8.00 8.00 8.00 - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: @@ -224,7 +224,7 @@ psignw (%rax), %xmm2 # CHECK-NEXT: - - - - - - - - - - - - phsubd %xmm0, %xmm2 # CHECK-NEXT: - - - - - - - - - - - - phsubd (%rax), %xmm2 # CHECK-NEXT: - - - - - - - - - - - - phsubsw %mm0, %mm2 -# CHECK-NEXT: 0.50 0.50 - - - - - 0.25 0.25 0.25 0.25 - phsubsw (%rax), %mm2 +# CHECK-NEXT: - - - - - - - - - - - - phsubsw (%rax), %mm2 # CHECK-NEXT: - - - - - - - - - - - - phsubsw %xmm0, %xmm2 # CHECK-NEXT: - - - - - - - - - - - - phsubsw (%rax), %xmm2 # CHECK-NEXT: - - - - - - - - - - - - phsubw %mm0, %mm2 |

