diff --git a/llvm/lib/Target/X86/X86ScheduleBdVer2.td b/llvm/lib/Target/X86/X86ScheduleBdVer2.td index cb75c3660728d9..ef2b4263bff4f1 100644 --- a/llvm/lib/Target/X86/X86ScheduleBdVer2.td +++ b/llvm/lib/Target/X86/X86ScheduleBdVer2.td @@ -1186,6 +1186,12 @@ def PdWriteVPPERM : SchedWriteRes<[PdFPU01, PdFPMAL]> { } def : InstRW<[PdWriteVPPERM], (instrs VPPERMrrr, VPPERMrrr_REV)>; +def PdWriteVPPERMLd : SchedWriteRes<[PdFPU01, PdFPMAL, PdLoad]> { + let Latency = 7; + let ResourceCycles = [1, 3, 3]; +} +def : InstRW<[PdWriteVPPERMLd], (instrs VPPERMrrm, VPPERMrmr)>; + defm : PdWriteResXMMPair; defm : X86WriteResPairUnsupported; defm : X86WriteResPairUnsupported; diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/resources-xop.s b/llvm/test/tools/llvm-mca/X86/BdVer2/resources-xop.s index 3effa5518ea1d4..b4650841704e7f 100644 --- a/llvm/test/tools/llvm-mca/X86/BdVer2/resources-xop.s +++ b/llvm/test/tools/llvm-mca/X86/BdVer2/resources-xop.s @@ -322,8 +322,8 @@ vpshlw %xmm0, (%rax), %xmm3 # CHECK-NEXT: 1 4 1.00 vpmadcswd %xmm0, %xmm1, %xmm2, %xmm3 # CHECK-NEXT: 1 9 1.50 * vpmadcswd %xmm0, (%rax), %xmm1, %xmm3 # CHECK-NEXT: 1 2 1.50 vpperm %xmm0, %xmm1, %xmm2, %xmm3 -# CHECK-NEXT: 1 8 1.50 * vpperm (%rax), %xmm0, %xmm1, %xmm3 -# CHECK-NEXT: 1 8 1.50 * vpperm %xmm0, (%rax), %xmm1, %xmm3 +# CHECK-NEXT: 1 7 1.50 * vpperm (%rax), %xmm0, %xmm1, %xmm3 +# CHECK-NEXT: 1 7 1.50 * vpperm %xmm0, (%rax), %xmm1, %xmm3 # CHECK-NEXT: 1 3 1.00 vprotb %xmm0, %xmm1, %xmm3 # CHECK-NEXT: 1 8 1.50 * vprotb (%rax), %xmm0, %xmm3 # CHECK-NEXT: 1 8 1.50 * vprotb %xmm0, (%rax), %xmm3