From 036cc8262297c3982087293815076c97c0af35e5 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Sun, 18 Mar 2018 17:10:12 +0000 Subject: [PATCH] [X86][Btver2] Float bitwise ymm instructions are double pumped on the JFPX (JFPA/JFPM) functional pipes llvm-svn: 327803 --- llvm/lib/Target/X86/X86ScheduleBtVer2.td | 8 +-- .../llvm-mca/X86/BtVer2/resources-avx1.s | 54 +++++++++---------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/llvm/lib/Target/X86/X86ScheduleBtVer2.td b/llvm/lib/Target/X86/X86ScheduleBtVer2.td index b59d258155e0..491a0c1a7818 100644 --- a/llvm/lib/Target/X86/X86ScheduleBtVer2.td +++ b/llvm/lib/Target/X86/X86ScheduleBtVer2.td @@ -478,8 +478,8 @@ def : InstRW<[JWriteFLogicLd], (instrs ORPDrm, ORPSrm, VORPDrm, VORPSrm, ANDPDrm, ANDPSrm, VANDPDrm, VANDPSrm, ANDNPDrm, ANDNPSrm, VANDNPDrm, VANDNPSrm)>; -def JWriteFLogicY: SchedWriteRes<[JFPU01]> { - let ResourceCycles = [2]; +def JWriteFLogicY: SchedWriteRes<[JFPU01, JFPX]> { + let ResourceCycles = [2, 2]; let NumMicroOps = 2; } def : InstRW<[JWriteFLogicY], (instrs VORPDYrr, VORPSYrr, @@ -487,9 +487,9 @@ def : InstRW<[JWriteFLogicY], (instrs VORPDYrr, VORPSYrr, VANDPDYrr, VANDPSYrr, VANDNPDYrr, VANDNPSYrr)>; -def JWriteFLogicYLd: SchedWriteRes<[JLAGU, JFPU01]> { +def JWriteFLogicYLd: SchedWriteRes<[JLAGU, JFPU01, JFPX]> { let Latency = 6; - let ResourceCycles = [1, 2]; + let ResourceCycles = [1, 2, 2]; let NumMicroOps = 3; } def : InstRW<[JWriteFLogicYLd], (instrs VORPDYrm, VORPSYrm, diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s index 35292688a7a0..2bcaa97a7faa 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s @@ -1055,25 +1055,25 @@ vzeroupper # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 vaeskeygenassist $22, (%rax), %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vandnpd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vandnpd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 2.00 - - - - - - - vandnpd %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - - - 2.00 1.00 - - - - - - vandnpd (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vandnps %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - 2.00 - 2.00 - - - - - - - vandnpd %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - - 2.00 - 2.00 1.00 - - - - - - vandnpd (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - - - vandnps %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vandnps (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 2.00 - - - - - - - vandnps %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - - - 2.00 1.00 - - - - - - vandnps (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 2.00 - - 2.00 - - - - - - - vandnps %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - - 2.00 - 2.00 1.00 - - - - - - vandnps (%rax), %ymm1, %ymm2 # CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - - - vandpd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vandpd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 2.00 - - - - - - - vandpd %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - - - 2.00 1.00 - - - - - - vandpd (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vandps %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vandpd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - 2.00 - 2.00 - - - - - - - vandpd %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 2.00 - - 2.00 1.00 - - - - - - vandpd (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - - - vandps %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - 1.00 1.00 - 1.00 - - - - - - vandps (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 2.00 - - - - - - - vandps %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - - - 2.00 1.00 - - - - - - vandps (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 2.00 - - 2.00 - - - - - - - vandps %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 2.00 - - 2.00 1.00 - - - - - - vandps (%rax), %ymm1, %ymm2 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vblendpd $11, %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - - 1.00 1.00 - 1.00 - - - - - - vblendpd $11, (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vblendpd $11, %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - - 1.00 1.00 - - - - - - - - vblendpd $11, %ymm0, %ymm1, %ymm2 # CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vblendpd $11, (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vblendps $11, %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - 1.00 1.00 - - - - - - - - vblendps $11, %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vblendps $11, (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - 1.00 1.00 - - - - - - - - vblendps $11, %ymm0, %ymm1, %ymm2 # CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vblendps $11, (%rax), %ymm1, %ymm2 @@ -1340,12 +1340,12 @@ vzeroupper # CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vmulss (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - 1.00 1.00 - - - - - - - - vorpd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vorpd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 2.00 - - - - - - - - vorpd %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - - 2.00 - 1.00 - - - - - - vorpd (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - - 2.00 2.00 - - - - - - - - vorpd %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 2.00 - 2.00 - 1.00 - - - - - - vorpd (%rax), %ymm1, %ymm2 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vorps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vorps (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 2.00 - - - - - - - - vorps %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - - 2.00 - 1.00 - - - - - - vorps (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - - 1.00 1.00 - 1.00 - - - - - - vorps (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vorps %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - 2.00 - 2.00 - 1.00 - - - - - - vorps (%rax), %ymm1, %ymm2 # CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpabsb %xmm0, %xmm2 # CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - 1.00 - vpabsb (%rax), %xmm2 # CHECK-NEXT: - - - - - 1.00 - - - - - 1.00 - - vpabsd %xmm0, %xmm2 @@ -1679,11 +1679,11 @@ vzeroupper # CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - - - vunpckhpd %ymm0, %ymm1, %ymm2 # CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vunpckhpd (%rax), %ymm1, %ymm2 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vunpckhps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 1.00 - 1.00 - - - - - - vunpckhps (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vunpckhps (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - - - vunpckhps %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vunpckhps (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vunpckhps (%rax), %ymm1, %ymm2 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vunpcklpd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - 1.00 - - 1.00 1.00 - - - - - - vunpcklpd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vunpcklpd (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vunpcklpd %ymm0, %ymm1, %ymm2 # CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vunpcklpd (%rax), %ymm1, %ymm2 # CHECK-NEXT: - - - 1.00 - - 1.00 - - - - - - - vunpcklps %xmm0, %xmm1, %xmm2 @@ -1692,11 +1692,11 @@ vzeroupper # CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - vunpcklps (%rax), %ymm1, %ymm2 # CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - vxorpd %xmm0, %xmm1, %xmm2 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vxorpd (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 2.00 - - - - - - - vxorpd %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - - - 2.00 1.00 - - - - - - vxorpd (%rax), %ymm1, %ymm2 -# CHECK-NEXT: - - - - 1.00 1.00 - - - - - - - - vxorps %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - 1.00 1.00 - 1.00 - - - - - - vxorps (%rax), %xmm1, %xmm2 -# CHECK-NEXT: - - - - - 2.00 - - - - - - - - vxorps %ymm0, %ymm1, %ymm2 -# CHECK-NEXT: - - - - - - 2.00 1.00 - - - - - - vxorps (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - - 2.00 - 2.00 - - - - - - - vxorpd %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - - 2.00 - 2.00 1.00 - - - - - - vxorpd (%rax), %ymm1, %ymm2 +# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vxorps %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vxorps (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vxorps %ymm0, %ymm1, %ymm2 +# CHECK-NEXT: - - - - 2.00 - 2.00 1.00 - - - - - - vxorps (%rax), %ymm1, %ymm2 # CHECK-NEXT: - - - - - - - - - - - - - - vzeroall # CHECK-NEXT: - - - - - - - - - - - - - - vzeroupper