diff --git a/llvm/lib/Target/X86/X86ScheduleAtom.td b/llvm/lib/Target/X86/X86ScheduleAtom.td index db06fff85cf1c..c6768143f0098 100644 --- a/llvm/lib/Target/X86/X86ScheduleAtom.td +++ b/llvm/lib/Target/X86/X86ScheduleAtom.td @@ -37,6 +37,7 @@ def AtomPort0 : ProcResource<1>; // ALU: ALU0, shift/rotate, load/store def AtomPort1 : ProcResource<1>; // ALU: ALU1, bit processing, jump, and LEA // SIMD/FP: SIMD ALU, FP Adder +// NOTE: This is for ops that can use EITHER port, not for ops that require BOTH ports. def AtomPort01 : ProcResGroup<[AtomPort0, AtomPort1]>; // Loads are 3 cycles, so ReadAfterLd registers needn't be available until 3 @@ -223,30 +224,30 @@ defm : X86WriteResUnsupported; defm : X86WriteRes; -defm : AtomWriteResPair; -defm : AtomWriteResPair; +defm : AtomWriteResPair; +defm : AtomWriteResPair; defm : X86WriteResPairUnsupported; defm : X86WriteResPairUnsupported; -defm : AtomWriteResPair; -defm : AtomWriteResPair; +defm : AtomWriteResPair; +defm : AtomWriteResPair; defm : X86WriteResPairUnsupported; defm : X86WriteResPairUnsupported; -defm : AtomWriteResPair; -defm : AtomWriteResPair; +defm : AtomWriteResPair; +defm : AtomWriteResPair; defm : X86WriteResPairUnsupported; defm : X86WriteResPairUnsupported; -defm : AtomWriteResPair; -defm : AtomWriteResPair; +defm : AtomWriteResPair; +defm : AtomWriteResPair; defm : X86WriteResPairUnsupported; defm : X86WriteResPairUnsupported; defm : AtomWriteResPair; defm : AtomWriteResPair; -defm : AtomWriteResPair; -defm : AtomWriteResPair; +defm : AtomWriteResPair; +defm : AtomWriteResPair; defm : X86WriteResPairUnsupported; defm : X86WriteResPairUnsupported; -defm : AtomWriteResPair; -defm : AtomWriteResPair; +defm : AtomWriteResPair; +defm : AtomWriteResPair; defm : X86WriteResPairUnsupported; defm : X86WriteResPairUnsupported; defm : AtomWriteResPair; diff --git a/llvm/test/tools/llvm-mca/X86/Atom/resources-sse1.s b/llvm/test/tools/llvm-mca/X86/Atom/resources-sse1.s index 8131f474a4496..b12beef35b38a 100644 --- a/llvm/test/tools/llvm-mca/X86/Atom/resources-sse1.s +++ b/llvm/test/tools/llvm-mca/X86/Atom/resources-sse1.s @@ -194,18 +194,18 @@ xorps (%rax), %xmm2 # CHECK-NEXT: [6]: HasSideEffects (U) # CHECK: [1] [2] [3] [4] [5] [6] Instructions: -# CHECK-NEXT: 1 5 5.00 addps %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * addps (%rax), %xmm2 -# CHECK-NEXT: 1 5 5.00 addss %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * addss (%rax), %xmm2 +# CHECK-NEXT: 1 5 1.00 addps %xmm0, %xmm2 +# CHECK-NEXT: 1 5 1.00 * addps (%rax), %xmm2 +# CHECK-NEXT: 1 5 1.00 addss %xmm0, %xmm2 +# CHECK-NEXT: 1 5 1.00 * addss (%rax), %xmm2 # CHECK-NEXT: 1 1 0.50 andnps %xmm0, %xmm2 # CHECK-NEXT: 1 1 1.00 * andnps (%rax), %xmm2 # CHECK-NEXT: 1 1 0.50 andps %xmm0, %xmm2 # CHECK-NEXT: 1 1 1.00 * andps (%rax), %xmm2 -# CHECK-NEXT: 1 5 5.00 cmpeqps %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * cmpeqps (%rax), %xmm2 -# CHECK-NEXT: 1 5 5.00 cmpeqss %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * cmpeqss (%rax), %xmm2 +# CHECK-NEXT: 1 6 5.00 cmpeqps %xmm0, %xmm2 +# CHECK-NEXT: 1 7 6.00 * cmpeqps (%rax), %xmm2 +# CHECK-NEXT: 1 5 1.00 cmpeqss %xmm0, %xmm2 +# CHECK-NEXT: 1 5 1.00 * cmpeqss (%rax), %xmm2 # CHECK-NEXT: 1 9 4.50 comiss %xmm0, %xmm1 # CHECK-NEXT: 1 10 5.00 * comiss (%rax), %xmm1 # CHECK-NEXT: 1 5 5.00 cvtpi2ps %mm0, %xmm2 @@ -232,14 +232,14 @@ xorps (%rax), %xmm2 # CHECK-NEXT: 1 34 17.00 * divss (%rax), %xmm2 # CHECK-NEXT: 1 5 2.50 * * U ldmxcsr (%rax) # CHECK-NEXT: 1 1 1.00 * * U maskmovq %mm0, %mm1 -# CHECK-NEXT: 1 5 5.00 maxps %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * maxps (%rax), %xmm2 -# CHECK-NEXT: 1 5 5.00 maxss %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * maxss (%rax), %xmm2 -# CHECK-NEXT: 1 5 5.00 minps %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * minps (%rax), %xmm2 -# CHECK-NEXT: 1 5 5.00 minss %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * minss (%rax), %xmm2 +# CHECK-NEXT: 1 6 5.00 maxps %xmm0, %xmm2 +# CHECK-NEXT: 1 7 6.00 * maxps (%rax), %xmm2 +# CHECK-NEXT: 1 5 1.00 maxss %xmm0, %xmm2 +# CHECK-NEXT: 1 5 1.00 * maxss (%rax), %xmm2 +# CHECK-NEXT: 1 6 5.00 minps %xmm0, %xmm2 +# CHECK-NEXT: 1 7 6.00 * minps (%rax), %xmm2 +# CHECK-NEXT: 1 5 1.00 minss %xmm0, %xmm2 +# CHECK-NEXT: 1 5 1.00 * minss (%rax), %xmm2 # CHECK-NEXT: 1 1 0.50 movaps %xmm0, %xmm2 # CHECK-NEXT: 1 1 1.00 * movaps %xmm0, (%rax) # CHECK-NEXT: 1 1 1.00 * movaps (%rax), %xmm2 @@ -258,10 +258,10 @@ xorps (%rax), %xmm2 # CHECK-NEXT: 1 1 0.50 movups %xmm0, %xmm2 # CHECK-NEXT: 1 2 1.00 * movups %xmm0, (%rax) # CHECK-NEXT: 1 3 1.50 * movups (%rax), %xmm2 -# CHECK-NEXT: 1 5 5.00 mulps %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * mulps (%rax), %xmm2 -# CHECK-NEXT: 1 4 4.00 mulss %xmm0, %xmm2 -# CHECK-NEXT: 1 4 4.00 * mulss (%rax), %xmm2 +# CHECK-NEXT: 1 5 2.00 mulps %xmm0, %xmm2 +# CHECK-NEXT: 1 5 2.00 * mulps (%rax), %xmm2 +# CHECK-NEXT: 1 4 2.00 mulss %xmm0, %xmm2 +# CHECK-NEXT: 1 4 2.00 * mulss (%rax), %xmm2 # CHECK-NEXT: 1 1 0.50 orps %xmm0, %xmm2 # CHECK-NEXT: 1 1 1.00 * orps (%rax), %xmm2 # CHECK-NEXT: 1 1 0.50 pavgb %mm0, %mm2 @@ -306,10 +306,10 @@ xorps (%rax), %xmm2 # CHECK-NEXT: 1 34 17.00 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 1 34 17.00 * sqrtss (%rax), %xmm2 # CHECK-NEXT: 1 15 7.50 * U stmxcsr (%rax) -# CHECK-NEXT: 1 5 5.00 subps %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * subps (%rax), %xmm2 -# CHECK-NEXT: 1 5 5.00 subss %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * subss (%rax), %xmm2 +# CHECK-NEXT: 1 5 1.00 subps %xmm0, %xmm2 +# CHECK-NEXT: 1 5 1.00 * subps (%rax), %xmm2 +# CHECK-NEXT: 1 5 1.00 subss %xmm0, %xmm2 +# CHECK-NEXT: 1 5 1.00 * subss (%rax), %xmm2 # CHECK-NEXT: 1 9 4.50 ucomiss %xmm0, %xmm1 # CHECK-NEXT: 1 10 5.00 * ucomiss (%rax), %xmm1 # CHECK-NEXT: 1 1 1.00 unpckhps %xmm0, %xmm2 @@ -325,22 +325,22 @@ xorps (%rax), %xmm2 # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] -# CHECK-NEXT: 508.00 346.00 +# CHECK-NEXT: 438.00 393.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] Instructions: -# CHECK-NEXT: 5.00 - addps %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - addps (%rax), %xmm2 -# CHECK-NEXT: 5.00 - addss %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - addss (%rax), %xmm2 +# CHECK-NEXT: - 1.00 addps %xmm0, %xmm2 +# CHECK-NEXT: 1.00 1.00 addps (%rax), %xmm2 +# CHECK-NEXT: - 1.00 addss %xmm0, %xmm2 +# CHECK-NEXT: 1.00 1.00 addss (%rax), %xmm2 # CHECK-NEXT: 0.50 0.50 andnps %xmm0, %xmm2 # CHECK-NEXT: 1.00 - andnps (%rax), %xmm2 # CHECK-NEXT: 0.50 0.50 andps %xmm0, %xmm2 # CHECK-NEXT: 1.00 - andps (%rax), %xmm2 -# CHECK-NEXT: 5.00 - cmpeqps %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - cmpeqps (%rax), %xmm2 -# CHECK-NEXT: 5.00 - cmpeqss %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - cmpeqss (%rax), %xmm2 +# CHECK-NEXT: 5.00 5.00 cmpeqps %xmm0, %xmm2 +# CHECK-NEXT: 6.00 6.00 cmpeqps (%rax), %xmm2 +# CHECK-NEXT: - 1.00 cmpeqss %xmm0, %xmm2 +# CHECK-NEXT: 1.00 1.00 cmpeqss (%rax), %xmm2 # CHECK-NEXT: 4.50 4.50 comiss %xmm0, %xmm1 # CHECK-NEXT: 5.00 5.00 comiss (%rax), %xmm1 # CHECK-NEXT: - 5.00 cvtpi2ps %mm0, %xmm2 @@ -367,14 +367,14 @@ xorps (%rax), %xmm2 # CHECK-NEXT: 17.00 17.00 divss (%rax), %xmm2 # CHECK-NEXT: 2.50 2.50 ldmxcsr (%rax) # CHECK-NEXT: 1.00 - maskmovq %mm0, %mm1 -# CHECK-NEXT: 5.00 - maxps %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - maxps (%rax), %xmm2 -# CHECK-NEXT: 5.00 - maxss %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - maxss (%rax), %xmm2 -# CHECK-NEXT: 5.00 - minps %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - minps (%rax), %xmm2 -# CHECK-NEXT: 5.00 - minss %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - minss (%rax), %xmm2 +# CHECK-NEXT: 5.00 5.00 maxps %xmm0, %xmm2 +# CHECK-NEXT: 6.00 6.00 maxps (%rax), %xmm2 +# CHECK-NEXT: - 1.00 maxss %xmm0, %xmm2 +# CHECK-NEXT: 1.00 1.00 maxss (%rax), %xmm2 +# CHECK-NEXT: 5.00 5.00 minps %xmm0, %xmm2 +# CHECK-NEXT: 6.00 6.00 minps (%rax), %xmm2 +# CHECK-NEXT: - 1.00 minss %xmm0, %xmm2 +# CHECK-NEXT: 1.00 1.00 minss (%rax), %xmm2 # CHECK-NEXT: 0.50 0.50 movaps %xmm0, %xmm2 # CHECK-NEXT: 1.00 - movaps %xmm0, (%rax) # CHECK-NEXT: 1.00 - movaps (%rax), %xmm2 @@ -393,10 +393,10 @@ xorps (%rax), %xmm2 # CHECK-NEXT: 0.50 0.50 movups %xmm0, %xmm2 # CHECK-NEXT: 1.00 1.00 movups %xmm0, (%rax) # CHECK-NEXT: 1.50 1.50 movups (%rax), %xmm2 -# CHECK-NEXT: 5.00 - mulps %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - mulps (%rax), %xmm2 -# CHECK-NEXT: 4.00 - mulss %xmm0, %xmm2 -# CHECK-NEXT: 4.00 - mulss (%rax), %xmm2 +# CHECK-NEXT: 2.00 - mulps %xmm0, %xmm2 +# CHECK-NEXT: 2.00 - mulps (%rax), %xmm2 +# CHECK-NEXT: 2.00 - mulss %xmm0, %xmm2 +# CHECK-NEXT: 2.00 - mulss (%rax), %xmm2 # CHECK-NEXT: 0.50 0.50 orps %xmm0, %xmm2 # CHECK-NEXT: 1.00 - orps (%rax), %xmm2 # CHECK-NEXT: 0.50 0.50 pavgb %mm0, %mm2 @@ -441,10 +441,10 @@ xorps (%rax), %xmm2 # CHECK-NEXT: 17.00 17.00 sqrtss %xmm0, %xmm2 # CHECK-NEXT: 17.00 17.00 sqrtss (%rax), %xmm2 # CHECK-NEXT: 7.50 7.50 stmxcsr (%rax) -# CHECK-NEXT: 5.00 - subps %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - subps (%rax), %xmm2 -# CHECK-NEXT: 5.00 - subss %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - subss (%rax), %xmm2 +# CHECK-NEXT: - 1.00 subps %xmm0, %xmm2 +# CHECK-NEXT: 1.00 1.00 subps (%rax), %xmm2 +# CHECK-NEXT: - 1.00 subss %xmm0, %xmm2 +# CHECK-NEXT: 1.00 1.00 subss (%rax), %xmm2 # CHECK-NEXT: 4.50 4.50 ucomiss %xmm0, %xmm1 # CHECK-NEXT: 5.00 5.00 ucomiss (%rax), %xmm1 # CHECK-NEXT: 1.00 - unpckhps %xmm0, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/Atom/resources-sse2.s b/llvm/test/tools/llvm-mca/X86/Atom/resources-sse2.s index 08ce22d1cfb31..0653c6c540271 100644 --- a/llvm/test/tools/llvm-mca/X86/Atom/resources-sse2.s +++ b/llvm/test/tools/llvm-mca/X86/Atom/resources-sse2.s @@ -407,19 +407,19 @@ xorpd (%rax), %xmm2 # CHECK-NEXT: [6]: HasSideEffects (U) # CHECK: [1] [2] [3] [4] [5] [6] Instructions: -# CHECK-NEXT: 1 6 3.00 addpd %xmm0, %xmm2 -# CHECK-NEXT: 1 7 3.50 * addpd (%rax), %xmm2 -# CHECK-NEXT: 1 5 5.00 addsd %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * addsd (%rax), %xmm2 +# CHECK-NEXT: 1 6 5.00 addpd %xmm0, %xmm2 +# CHECK-NEXT: 1 7 6.00 * addpd (%rax), %xmm2 +# CHECK-NEXT: 1 5 1.00 addsd %xmm0, %xmm2 +# CHECK-NEXT: 1 5 1.00 * addsd (%rax), %xmm2 # CHECK-NEXT: 1 1 0.50 andnpd %xmm0, %xmm2 # CHECK-NEXT: 1 1 1.00 * andnpd (%rax), %xmm2 # CHECK-NEXT: 1 1 0.50 andpd %xmm0, %xmm2 # CHECK-NEXT: 1 1 1.00 * andpd (%rax), %xmm2 # CHECK-NEXT: 1 1 1.00 * * U clflush (%rax) -# CHECK-NEXT: 1 6 3.00 cmpeqpd %xmm0, %xmm2 -# CHECK-NEXT: 1 7 3.50 * cmpeqpd (%rax), %xmm2 -# CHECK-NEXT: 1 5 5.00 cmpeqsd %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * cmpeqsd (%rax), %xmm2 +# CHECK-NEXT: 1 6 5.00 cmpeqpd %xmm0, %xmm2 +# CHECK-NEXT: 1 7 6.00 * cmpeqpd (%rax), %xmm2 +# CHECK-NEXT: 1 5 1.00 cmpeqsd %xmm0, %xmm2 +# CHECK-NEXT: 1 5 1.00 * cmpeqsd (%rax), %xmm2 # CHECK-NEXT: 1 9 4.50 comisd %xmm0, %xmm1 # CHECK-NEXT: 1 10 5.00 * comisd (%rax), %xmm1 # CHECK-NEXT: 1 7 3.50 cvtdq2pd %xmm0, %xmm2 @@ -466,15 +466,15 @@ xorpd (%rax), %xmm2 # CHECK-NEXT: 1 62 31.00 * divsd (%rax), %xmm2 # CHECK-NEXT: 1 1 0.50 * * U lfence # CHECK-NEXT: 1 2 1.00 * * U maskmovdqu %xmm0, %xmm1 -# CHECK-NEXT: 1 6 3.00 maxpd %xmm0, %xmm2 -# CHECK-NEXT: 1 7 3.50 * maxpd (%rax), %xmm2 -# CHECK-NEXT: 1 5 5.00 maxsd %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * maxsd (%rax), %xmm2 +# CHECK-NEXT: 1 6 5.00 maxpd %xmm0, %xmm2 +# CHECK-NEXT: 1 7 6.00 * maxpd (%rax), %xmm2 +# CHECK-NEXT: 1 5 1.00 maxsd %xmm0, %xmm2 +# CHECK-NEXT: 1 5 1.00 * maxsd (%rax), %xmm2 # CHECK-NEXT: 1 1 1.00 * * U mfence -# CHECK-NEXT: 1 6 3.00 minpd %xmm0, %xmm2 -# CHECK-NEXT: 1 7 3.50 * minpd (%rax), %xmm2 -# CHECK-NEXT: 1 5 5.00 minsd %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * minsd (%rax), %xmm2 +# CHECK-NEXT: 1 6 5.00 minpd %xmm0, %xmm2 +# CHECK-NEXT: 1 7 6.00 * minpd (%rax), %xmm2 +# CHECK-NEXT: 1 5 1.00 minsd %xmm0, %xmm2 +# CHECK-NEXT: 1 5 1.00 * minsd (%rax), %xmm2 # CHECK-NEXT: 1 1 0.50 movapd %xmm0, %xmm2 # CHECK-NEXT: 1 1 1.00 * movapd %xmm0, (%rax) # CHECK-NEXT: 1 1 1.00 * movapd (%rax), %xmm2 @@ -510,10 +510,10 @@ xorpd (%rax), %xmm2 # CHECK-NEXT: 1 1 0.50 movupd %xmm0, %xmm2 # CHECK-NEXT: 1 2 1.00 * movupd %xmm0, (%rax) # CHECK-NEXT: 1 3 1.50 * movupd (%rax), %xmm2 -# CHECK-NEXT: 1 9 4.50 mulpd %xmm0, %xmm2 -# CHECK-NEXT: 1 10 5.00 * mulpd (%rax), %xmm2 -# CHECK-NEXT: 1 5 5.00 mulsd %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * mulsd (%rax), %xmm2 +# CHECK-NEXT: 1 9 9.00 mulpd %xmm0, %xmm2 +# CHECK-NEXT: 1 10 10.00 * mulpd (%rax), %xmm2 +# CHECK-NEXT: 1 5 2.00 mulsd %xmm0, %xmm2 +# CHECK-NEXT: 1 5 2.00 * mulsd (%rax), %xmm2 # CHECK-NEXT: 1 1 0.50 orpd %xmm0, %xmm2 # CHECK-NEXT: 1 1 1.00 * orpd (%rax), %xmm2 # CHECK-NEXT: 1 1 1.00 packssdw %xmm0, %xmm2 @@ -662,10 +662,10 @@ xorpd (%rax), %xmm2 # CHECK-NEXT: 1 125 62.50 * sqrtpd (%rax), %xmm2 # CHECK-NEXT: 1 62 31.00 sqrtsd %xmm0, %xmm2 # CHECK-NEXT: 1 62 31.00 * sqrtsd (%rax), %xmm2 -# CHECK-NEXT: 1 6 3.00 subpd %xmm0, %xmm2 -# CHECK-NEXT: 1 7 3.50 * subpd (%rax), %xmm2 -# CHECK-NEXT: 1 5 5.00 subsd %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * subsd (%rax), %xmm2 +# CHECK-NEXT: 1 6 5.00 subpd %xmm0, %xmm2 +# CHECK-NEXT: 1 7 6.00 * subpd (%rax), %xmm2 +# CHECK-NEXT: 1 5 1.00 subsd %xmm0, %xmm2 +# CHECK-NEXT: 1 5 1.00 * subsd (%rax), %xmm2 # CHECK-NEXT: 1 9 4.50 ucomisd %xmm0, %xmm1 # CHECK-NEXT: 1 10 5.00 * ucomisd (%rax), %xmm1 # CHECK-NEXT: 1 1 1.00 unpckhpd %xmm0, %xmm2 @@ -681,23 +681,23 @@ xorpd (%rax), %xmm2 # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] -# CHECK-NEXT: 833.50 634.50 +# CHECK-NEXT: 814.50 676.50 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] Instructions: -# CHECK-NEXT: 3.00 3.00 addpd %xmm0, %xmm2 -# CHECK-NEXT: 3.50 3.50 addpd (%rax), %xmm2 -# CHECK-NEXT: 5.00 - addsd %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - addsd (%rax), %xmm2 +# CHECK-NEXT: 5.00 5.00 addpd %xmm0, %xmm2 +# CHECK-NEXT: 6.00 6.00 addpd (%rax), %xmm2 +# CHECK-NEXT: - 1.00 addsd %xmm0, %xmm2 +# CHECK-NEXT: 1.00 1.00 addsd (%rax), %xmm2 # CHECK-NEXT: 0.50 0.50 andnpd %xmm0, %xmm2 # CHECK-NEXT: 1.00 - andnpd (%rax), %xmm2 # CHECK-NEXT: 0.50 0.50 andpd %xmm0, %xmm2 # CHECK-NEXT: 1.00 - andpd (%rax), %xmm2 # CHECK-NEXT: 1.00 - clflush (%rax) -# CHECK-NEXT: 3.00 3.00 cmpeqpd %xmm0, %xmm2 -# CHECK-NEXT: 3.50 3.50 cmpeqpd (%rax), %xmm2 -# CHECK-NEXT: 5.00 - cmpeqsd %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - cmpeqsd (%rax), %xmm2 +# CHECK-NEXT: 5.00 5.00 cmpeqpd %xmm0, %xmm2 +# CHECK-NEXT: 6.00 6.00 cmpeqpd (%rax), %xmm2 +# CHECK-NEXT: - 1.00 cmpeqsd %xmm0, %xmm2 +# CHECK-NEXT: 1.00 1.00 cmpeqsd (%rax), %xmm2 # CHECK-NEXT: 4.50 4.50 comisd %xmm0, %xmm1 # CHECK-NEXT: 5.00 5.00 comisd (%rax), %xmm1 # CHECK-NEXT: 3.50 3.50 cvtdq2pd %xmm0, %xmm2 @@ -744,15 +744,15 @@ xorpd (%rax), %xmm2 # CHECK-NEXT: 31.00 31.00 divsd (%rax), %xmm2 # CHECK-NEXT: 0.50 0.50 lfence # CHECK-NEXT: 1.00 1.00 maskmovdqu %xmm0, %xmm1 -# CHECK-NEXT: 3.00 3.00 maxpd %xmm0, %xmm2 -# CHECK-NEXT: 3.50 3.50 maxpd (%rax), %xmm2 -# CHECK-NEXT: 5.00 - maxsd %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - maxsd (%rax), %xmm2 +# CHECK-NEXT: 5.00 5.00 maxpd %xmm0, %xmm2 +# CHECK-NEXT: 6.00 6.00 maxpd (%rax), %xmm2 +# CHECK-NEXT: - 1.00 maxsd %xmm0, %xmm2 +# CHECK-NEXT: 1.00 1.00 maxsd (%rax), %xmm2 # CHECK-NEXT: 1.00 - mfence -# CHECK-NEXT: 3.00 3.00 minpd %xmm0, %xmm2 -# CHECK-NEXT: 3.50 3.50 minpd (%rax), %xmm2 -# CHECK-NEXT: 5.00 - minsd %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - minsd (%rax), %xmm2 +# CHECK-NEXT: 5.00 5.00 minpd %xmm0, %xmm2 +# CHECK-NEXT: 6.00 6.00 minpd (%rax), %xmm2 +# CHECK-NEXT: - 1.00 minsd %xmm0, %xmm2 +# CHECK-NEXT: 1.00 1.00 minsd (%rax), %xmm2 # CHECK-NEXT: 0.50 0.50 movapd %xmm0, %xmm2 # CHECK-NEXT: 1.00 - movapd %xmm0, (%rax) # CHECK-NEXT: 1.00 - movapd (%rax), %xmm2 @@ -788,10 +788,10 @@ xorpd (%rax), %xmm2 # CHECK-NEXT: 0.50 0.50 movupd %xmm0, %xmm2 # CHECK-NEXT: 1.00 1.00 movupd %xmm0, (%rax) # CHECK-NEXT: 1.50 1.50 movupd (%rax), %xmm2 -# CHECK-NEXT: 4.50 4.50 mulpd %xmm0, %xmm2 -# CHECK-NEXT: 5.00 5.00 mulpd (%rax), %xmm2 -# CHECK-NEXT: 5.00 - mulsd %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - mulsd (%rax), %xmm2 +# CHECK-NEXT: 9.00 9.00 mulpd %xmm0, %xmm2 +# CHECK-NEXT: 10.00 10.00 mulpd (%rax), %xmm2 +# CHECK-NEXT: 2.00 - mulsd %xmm0, %xmm2 +# CHECK-NEXT: 2.00 - mulsd (%rax), %xmm2 # CHECK-NEXT: 0.50 0.50 orpd %xmm0, %xmm2 # CHECK-NEXT: 1.00 - orpd (%rax), %xmm2 # CHECK-NEXT: 1.00 - packssdw %xmm0, %xmm2 @@ -940,10 +940,10 @@ xorpd (%rax), %xmm2 # CHECK-NEXT: 62.50 62.50 sqrtpd (%rax), %xmm2 # CHECK-NEXT: 31.00 31.00 sqrtsd %xmm0, %xmm2 # CHECK-NEXT: 31.00 31.00 sqrtsd (%rax), %xmm2 -# CHECK-NEXT: 3.00 3.00 subpd %xmm0, %xmm2 -# CHECK-NEXT: 3.50 3.50 subpd (%rax), %xmm2 -# CHECK-NEXT: 5.00 - subsd %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - subsd (%rax), %xmm2 +# CHECK-NEXT: 5.00 5.00 subpd %xmm0, %xmm2 +# CHECK-NEXT: 6.00 6.00 subpd (%rax), %xmm2 +# CHECK-NEXT: - 1.00 subsd %xmm0, %xmm2 +# CHECK-NEXT: 1.00 1.00 subsd (%rax), %xmm2 # CHECK-NEXT: 4.50 4.50 ucomisd %xmm0, %xmm1 # CHECK-NEXT: 5.00 5.00 ucomisd (%rax), %xmm1 # CHECK-NEXT: 1.00 - unpckhpd %xmm0, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/Atom/resources-sse3.s b/llvm/test/tools/llvm-mca/X86/Atom/resources-sse3.s index c0b4b3048d270..65fe2825985b1 100644 --- a/llvm/test/tools/llvm-mca/X86/Atom/resources-sse3.s +++ b/llvm/test/tools/llvm-mca/X86/Atom/resources-sse3.s @@ -43,10 +43,10 @@ mwait # CHECK-NEXT: [6]: HasSideEffects (U) # CHECK: [1] [2] [3] [4] [5] [6] Instructions: -# CHECK-NEXT: 1 6 3.00 addsubpd %xmm0, %xmm2 -# CHECK-NEXT: 1 7 3.50 * addsubpd (%rax), %xmm2 -# CHECK-NEXT: 1 5 5.00 addsubps %xmm0, %xmm2 -# CHECK-NEXT: 1 5 5.00 * addsubps (%rax), %xmm2 +# CHECK-NEXT: 1 6 5.00 addsubpd %xmm0, %xmm2 +# CHECK-NEXT: 1 7 6.00 * addsubpd (%rax), %xmm2 +# CHECK-NEXT: 1 5 1.00 addsubps %xmm0, %xmm2 +# CHECK-NEXT: 1 5 1.00 * addsubps (%rax), %xmm2 # CHECK-NEXT: 1 8 4.00 haddpd %xmm0, %xmm2 # CHECK-NEXT: 1 9 4.50 * haddpd (%rax), %xmm2 # CHECK-NEXT: 1 8 4.00 haddps %xmm0, %xmm2 @@ -71,14 +71,14 @@ mwait # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] -# CHECK-NEXT: 103.50 87.50 +# CHECK-NEXT: 99.00 94.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] Instructions: -# CHECK-NEXT: 3.00 3.00 addsubpd %xmm0, %xmm2 -# CHECK-NEXT: 3.50 3.50 addsubpd (%rax), %xmm2 -# CHECK-NEXT: 5.00 - addsubps %xmm0, %xmm2 -# CHECK-NEXT: 5.00 - addsubps (%rax), %xmm2 +# CHECK-NEXT: 5.00 5.00 addsubpd %xmm0, %xmm2 +# CHECK-NEXT: 6.00 6.00 addsubpd (%rax), %xmm2 +# CHECK-NEXT: - 1.00 addsubps %xmm0, %xmm2 +# CHECK-NEXT: 1.00 1.00 addsubps (%rax), %xmm2 # CHECK-NEXT: 4.00 4.00 haddpd %xmm0, %xmm2 # CHECK-NEXT: 4.50 4.50 haddpd (%rax), %xmm2 # CHECK-NEXT: 4.00 4.00 haddps %xmm0, %xmm2 diff --git a/llvm/test/tools/llvm-mca/X86/Atom/resources-x87.s b/llvm/test/tools/llvm-mca/X86/Atom/resources-x87.s index 6e173db786975..9952afd634734 100644 --- a/llvm/test/tools/llvm-mca/X86/Atom/resources-x87.s +++ b/llvm/test/tools/llvm-mca/X86/Atom/resources-x87.s @@ -208,14 +208,14 @@ fyl2xp1 # CHECK: [1] [2] [3] [4] [5] [6] Instructions: # CHECK-NEXT: 1 99 49.50 U f2xm1 # CHECK-NEXT: 1 1 1.00 U fabs -# CHECK-NEXT: 1 5 5.00 U fadd %st, %st(1) -# CHECK-NEXT: 1 5 5.00 U fadd %st(2), %st -# CHECK-NEXT: 1 5 5.00 * U fadds (%ecx) -# CHECK-NEXT: 1 5 5.00 * U faddl (%ecx) -# CHECK-NEXT: 1 5 5.00 U faddp %st, %st(1) -# CHECK-NEXT: 1 5 5.00 U faddp %st, %st(2) -# CHECK-NEXT: 1 5 5.00 * U fiadds (%ecx) -# CHECK-NEXT: 1 5 5.00 * U fiaddl (%ecx) +# CHECK-NEXT: 1 5 1.00 U fadd %st, %st(1) +# CHECK-NEXT: 1 5 1.00 U fadd %st(2), %st +# CHECK-NEXT: 1 5 1.00 * U fadds (%ecx) +# CHECK-NEXT: 1 5 1.00 * U faddl (%ecx) +# CHECK-NEXT: 1 5 1.00 U faddp %st, %st(1) +# CHECK-NEXT: 1 5 1.00 U faddp %st, %st(2) +# CHECK-NEXT: 1 5 1.00 * U fiadds (%ecx) +# CHECK-NEXT: 1 5 1.00 * U fiaddl (%ecx) # CHECK-NEXT: 1 100 0.50 * U fbld (%ecx) # CHECK-NEXT: 1 100 0.50 * U fbstp (%eax) # CHECK-NEXT: 1 1 1.00 U fchs @@ -288,14 +288,14 @@ fyl2xp1 # CHECK-NEXT: 1 10 5.00 U fldln2 # CHECK-NEXT: 1 10 5.00 U fldpi # CHECK-NEXT: 1 1 0.50 U fldz -# CHECK-NEXT: 1 4 4.00 U fmul %st, %st(1) -# CHECK-NEXT: 1 4 4.00 U fmul %st(2), %st -# CHECK-NEXT: 1 4 4.00 * U fmuls (%ecx) -# CHECK-NEXT: 1 4 4.00 * U fmull (%eax) -# CHECK-NEXT: 1 4 4.00 U fmulp %st, %st(1) -# CHECK-NEXT: 1 4 4.00 U fmulp %st, %st(2) -# CHECK-NEXT: 1 4 4.00 * U fimuls (%ecx) -# CHECK-NEXT: 1 4 4.00 * U fimull (%eax) +# CHECK-NEXT: 1 4 2.00 U fmul %st, %st(1) +# CHECK-NEXT: 1 4 2.00 U fmul %st(2), %st +# CHECK-NEXT: 1 4 2.00 * U fmuls (%ecx) +# CHECK-NEXT: 1 4 2.00 * U fmull (%eax) +# CHECK-NEXT: 1 4 2.00 U fmulp %st, %st(1) +# CHECK-NEXT: 1 4 2.00 U fmulp %st, %st(2) +# CHECK-NEXT: 1 4 2.00 * U fimuls (%ecx) +# CHECK-NEXT: 1 4 2.00 * U fimull (%eax) # CHECK-NEXT: 1 1 0.50 U fnop # CHECK-NEXT: 1 183 91.50 U fpatan # CHECK-NEXT: 1 55 27.50 U fprem @@ -321,22 +321,22 @@ fyl2xp1 # CHECK-NEXT: 1 100 0.50 * U frstor (%eax) # CHECK-NEXT: 1 1 0.50 U wait # CHECK-NEXT: 1 100 0.50 * U fnsave (%eax) -# CHECK-NEXT: 1 5 5.00 U fsub %st, %st(1) -# CHECK-NEXT: 1 5 5.00 U fsub %st(2), %st -# CHECK-NEXT: 1 5 5.00 * U fsubs (%ecx) -# CHECK-NEXT: 1 5 5.00 * U fsubl (%eax) -# CHECK-NEXT: 1 5 5.00 U fsubp %st, %st(1) -# CHECK-NEXT: 1 5 5.00 U fsubp %st, %st(2) -# CHECK-NEXT: 1 5 5.00 * U fisubs (%ecx) -# CHECK-NEXT: 1 5 5.00 * U fisubl (%eax) -# CHECK-NEXT: 1 5 5.00 U fsubr %st, %st(1) -# CHECK-NEXT: 1 5 5.00 U fsubr %st(2), %st -# CHECK-NEXT: 1 5 5.00 * U fsubrs (%ecx) -# CHECK-NEXT: 1 5 5.00 * U fsubrl (%eax) -# CHECK-NEXT: 1 5 5.00 U fsubrp %st, %st(1) -# CHECK-NEXT: 1 5 5.00 U fsubrp %st, %st(2) -# CHECK-NEXT: 1 5 5.00 * U fisubrs (%ecx) -# CHECK-NEXT: 1 5 5.00 * U fisubrl (%eax) +# CHECK-NEXT: 1 5 1.00 U fsub %st, %st(1) +# CHECK-NEXT: 1 5 1.00 U fsub %st(2), %st +# CHECK-NEXT: 1 5 1.00 * U fsubs (%ecx) +# CHECK-NEXT: 1 5 1.00 * U fsubl (%eax) +# CHECK-NEXT: 1 5 1.00 U fsubp %st, %st(1) +# CHECK-NEXT: 1 5 1.00 U fsubp %st, %st(2) +# CHECK-NEXT: 1 5 1.00 * U fisubs (%ecx) +# CHECK-NEXT: 1 5 1.00 * U fisubl (%eax) +# CHECK-NEXT: 1 5 1.00 U fsubr %st, %st(1) +# CHECK-NEXT: 1 5 1.00 U fsubr %st(2), %st +# CHECK-NEXT: 1 5 1.00 * U fsubrs (%ecx) +# CHECK-NEXT: 1 5 1.00 * U fsubrl (%eax) +# CHECK-NEXT: 1 5 1.00 U fsubrp %st, %st(1) +# CHECK-NEXT: 1 5 1.00 U fsubrp %st, %st(2) +# CHECK-NEXT: 1 5 1.00 * U fisubrs (%ecx) +# CHECK-NEXT: 1 5 1.00 * U fisubrl (%eax) # CHECK-NEXT: 1 9 4.50 U ftst # CHECK-NEXT: 1 1 1.00 U fucom %st(1) # CHECK-NEXT: 1 1 1.00 U fucom %st(3) @@ -361,20 +361,20 @@ fyl2xp1 # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] -# CHECK-NEXT: 1624.00 1416.00 +# CHECK-NEXT: 1500.00 1440.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] Instructions: # CHECK-NEXT: 49.50 49.50 f2xm1 # CHECK-NEXT: - 1.00 fabs -# CHECK-NEXT: 5.00 - fadd %st, %st(1) -# CHECK-NEXT: 5.00 - fadd %st(2), %st -# CHECK-NEXT: 5.00 - fadds (%ecx) -# CHECK-NEXT: 5.00 - faddl (%ecx) -# CHECK-NEXT: 5.00 - faddp %st, %st(1) -# CHECK-NEXT: 5.00 - faddp %st, %st(2) -# CHECK-NEXT: 5.00 - fiadds (%ecx) -# CHECK-NEXT: 5.00 - fiaddl (%ecx) +# CHECK-NEXT: - 1.00 fadd %st, %st(1) +# CHECK-NEXT: - 1.00 fadd %st(2), %st +# CHECK-NEXT: 1.00 1.00 fadds (%ecx) +# CHECK-NEXT: 1.00 1.00 faddl (%ecx) +# CHECK-NEXT: - 1.00 faddp %st, %st(1) +# CHECK-NEXT: - 1.00 faddp %st, %st(2) +# CHECK-NEXT: 1.00 1.00 fiadds (%ecx) +# CHECK-NEXT: 1.00 1.00 fiaddl (%ecx) # CHECK-NEXT: 0.50 0.50 fbld (%ecx) # CHECK-NEXT: 0.50 0.50 fbstp (%eax) # CHECK-NEXT: - 1.00 fchs @@ -447,14 +447,14 @@ fyl2xp1 # CHECK-NEXT: 5.00 5.00 fldln2 # CHECK-NEXT: 5.00 5.00 fldpi # CHECK-NEXT: 0.50 0.50 fldz -# CHECK-NEXT: 4.00 - fmul %st, %st(1) -# CHECK-NEXT: 4.00 - fmul %st(2), %st -# CHECK-NEXT: 4.00 - fmuls (%ecx) -# CHECK-NEXT: 4.00 - fmull (%eax) -# CHECK-NEXT: 4.00 - fmulp %st, %st(1) -# CHECK-NEXT: 4.00 - fmulp %st, %st(2) -# CHECK-NEXT: 4.00 - fimuls (%ecx) -# CHECK-NEXT: 4.00 - fimull (%eax) +# CHECK-NEXT: 2.00 - fmul %st, %st(1) +# CHECK-NEXT: 2.00 - fmul %st(2), %st +# CHECK-NEXT: 2.00 - fmuls (%ecx) +# CHECK-NEXT: 2.00 - fmull (%eax) +# CHECK-NEXT: 2.00 - fmulp %st, %st(1) +# CHECK-NEXT: 2.00 - fmulp %st, %st(2) +# CHECK-NEXT: 2.00 - fimuls (%ecx) +# CHECK-NEXT: 2.00 - fimull (%eax) # CHECK-NEXT: 0.50 0.50 fnop # CHECK-NEXT: 91.50 91.50 fpatan # CHECK-NEXT: 27.50 27.50 fprem @@ -480,22 +480,22 @@ fyl2xp1 # CHECK-NEXT: 0.50 0.50 frstor (%eax) # CHECK-NEXT: 0.50 0.50 wait # CHECK-NEXT: 0.50 0.50 fnsave (%eax) -# CHECK-NEXT: 5.00 - fsub %st, %st(1) -# CHECK-NEXT: 5.00 - fsub %st(2), %st -# CHECK-NEXT: 5.00 - fsubs (%ecx) -# CHECK-NEXT: 5.00 - fsubl (%eax) -# CHECK-NEXT: 5.00 - fsubp %st, %st(1) -# CHECK-NEXT: 5.00 - fsubp %st, %st(2) -# CHECK-NEXT: 5.00 - fisubs (%ecx) -# CHECK-NEXT: 5.00 - fisubl (%eax) -# CHECK-NEXT: 5.00 - fsubr %st, %st(1) -# CHECK-NEXT: 5.00 - fsubr %st(2), %st -# CHECK-NEXT: 5.00 - fsubrs (%ecx) -# CHECK-NEXT: 5.00 - fsubrl (%eax) -# CHECK-NEXT: 5.00 - fsubrp %st, %st(1) -# CHECK-NEXT: 5.00 - fsubrp %st, %st(2) -# CHECK-NEXT: 5.00 - fisubrs (%ecx) -# CHECK-NEXT: 5.00 - fisubrl (%eax) +# CHECK-NEXT: - 1.00 fsub %st, %st(1) +# CHECK-NEXT: - 1.00 fsub %st(2), %st +# CHECK-NEXT: 1.00 1.00 fsubs (%ecx) +# CHECK-NEXT: 1.00 1.00 fsubl (%eax) +# CHECK-NEXT: - 1.00 fsubp %st, %st(1) +# CHECK-NEXT: - 1.00 fsubp %st, %st(2) +# CHECK-NEXT: 1.00 1.00 fisubs (%ecx) +# CHECK-NEXT: 1.00 1.00 fisubl (%eax) +# CHECK-NEXT: - 1.00 fsubr %st, %st(1) +# CHECK-NEXT: - 1.00 fsubr %st(2), %st +# CHECK-NEXT: 1.00 1.00 fsubrs (%ecx) +# CHECK-NEXT: 1.00 1.00 fsubrl (%eax) +# CHECK-NEXT: - 1.00 fsubrp %st, %st(1) +# CHECK-NEXT: - 1.00 fsubrp %st, %st(2) +# CHECK-NEXT: 1.00 1.00 fisubrs (%ecx) +# CHECK-NEXT: 1.00 1.00 fisubrl (%eax) # CHECK-NEXT: 4.50 4.50 ftst # CHECK-NEXT: - 1.00 fucom %st(1) # CHECK-NEXT: - 1.00 fucom %st(3)