[llvm] bd0801c - [X86] Cleanup SLM SSE shift and CMPGTQ scheduler model numbers
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 5 05:45:25 PDT 2022
Author: Simon Pilgrim
Date: 2022-09-05T13:44:05+01:00
New Revision: bd0801cddfc8e827f17d45a43ac8d3754e0c3124
URL: https://github.com/llvm/llvm-project/commit/bd0801cddfc8e827f17d45a43ac8d3754e0c3124
DIFF: https://github.com/llvm/llvm-project/commit/bd0801cddfc8e827f17d45a43ac8d3754e0c3124.diff
LOG: [X86] Cleanup SLM SSE shift and CMPGTQ scheduler model numbers
These were causing weird mismatches for the D103695 script report as I'm trying to enable cost kinds support for vector shift and integer comparisons.
The SSE shifts by (non-constant) scalar are half-rate but still only 1uop and PCMPGT is half-rate and only on Pipe0 (although not as slow as PCMPEQQ which we already handle).
Added:
Modified:
llvm/lib/Target/X86/X86ScheduleSLM.td
llvm/test/tools/llvm-mca/X86/SLM/resources-mmx.s
llvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s
llvm/test/tools/llvm-mca/X86/SLM/resources-sse42.s
llvm/test/tools/llvm-mca/X86/SLM/zero-idioms.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ScheduleSLM.td b/llvm/lib/Target/X86/X86ScheduleSLM.td
index de4e7dd3cb90..2c8759e2d155 100644
--- a/llvm/lib/Target/X86/X86ScheduleSLM.td
+++ b/llvm/lib/Target/X86/X86ScheduleSLM.td
@@ -350,15 +350,15 @@ defm : X86WriteResUnsupported<WriteVecMoveZ>;
def : WriteRes<WriteVecMoveToGpr, [SLM_IEC_RSV01]>;
def : WriteRes<WriteVecMoveFromGpr, [SLM_IEC_RSV01]>;
-defm : SLMWriteResPair<WriteVecShift, [SLM_FPC_RSV0], 2, [2], 2>;
-defm : SLMWriteResPair<WriteVecShiftX, [SLM_FPC_RSV0], 2, [2], 2>;
-defm : SLMWriteResPair<WriteVecShiftY, [SLM_FPC_RSV0], 2, [2], 2>;
+defm : SLMWriteResPair<WriteVecShift, [SLM_FPC_RSV0], 2, [2]>;
+defm : SLMWriteResPair<WriteVecShiftX, [SLM_FPC_RSV0], 2, [2]>;
+defm : X86WriteResPairUnsupported<WriteVecShiftY>;
defm : X86WriteResPairUnsupported<WriteVecShiftZ>;
defm : SLMWriteResPair<WriteVecShiftImm, [SLM_FPC_RSV0], 1>;
defm : SLMWriteResPair<WriteVecShiftImmX,[SLM_FPC_RSV0], 1>;
-defm : SLMWriteResPair<WriteVecShiftImmY,[SLM_FPC_RSV0], 1>;
+defm : X86WriteResPairUnsupported<WriteVecShiftImmY>;
defm : X86WriteResPairUnsupported<WriteVecShiftImmZ>;
-defm : SLMWriteResPair<WriteVarVecShift, [SLM_FPC_RSV0], 1>;
+defm : X86WriteResPairUnsupported<WriteVarVecShift>;
defm : X86WriteResPairUnsupported<WriteVarVecShiftY>;
defm : X86WriteResPairUnsupported<WriteVarVecShiftZ>;
@@ -471,15 +471,30 @@ def: InstRW<[SLMWriteResGroup1rr], (instrs MMX_PADDQrr, PADDQrr,
MMX_PSUBQrr, PSUBQrr,
PCMPEQQrr)>;
+def SLMWriteResGroup2rr : SchedWriteRes<[SLM_FPC_RSV0]> {
+ let Latency = 5;
+ let NumMicroOps = 1;
+ let ResourceCycles = [2];
+}
+def: InstRW<[SLMWriteResGroup2rr], (instrs PCMPGTQrr)>;
+
def SLMWriteResGroup1rm : SchedWriteRes<[SLM_MEC_RSV,SLM_FPC_RSV01]> {
let Latency = 7;
let NumMicroOps = 3;
let ResourceCycles = [1,8];
}
+
def: InstRW<[SLMWriteResGroup1rm], (instrs MMX_PADDQrm, PADDQrm,
MMX_PSUBQrm, PSUBQrm,
PCMPEQQrm)>;
+def SLMWriteResGroup2rm : SchedWriteRes<[SLM_MEC_RSV,SLM_FPC_RSV0]> {
+ let Latency = 8;
+ let NumMicroOps = 2;
+ let ResourceCycles = [1,2];
+}
+def: InstRW<[SLMWriteResGroup2rm], (instrs PCMPGTQrm)>;
+
///////////////////////////////////////////////////////////////////////////////
// Dependency breaking instructions.
///////////////////////////////////////////////////////////////////////////////
diff --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-mmx.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-mmx.s
index 75ca5dc8b982..33c5784c2216 100644
--- a/llvm/test/tools/llvm-mca/X86/SLM/resources-mmx.s
+++ b/llvm/test/tools/llvm-mca/X86/SLM/resources-mmx.s
@@ -218,29 +218,29 @@ pxor (%rax), %mm2
# CHECK-NEXT: 1 1 0.50 por %mm0, %mm2
# CHECK-NEXT: 1 4 1.00 * por (%rax), %mm2
# CHECK-NEXT: 1 1 1.00 pslld $1, %mm2
-# CHECK-NEXT: 2 2 2.00 pslld %mm0, %mm2
-# CHECK-NEXT: 2 5 2.00 * pslld (%rax), %mm2
+# CHECK-NEXT: 1 2 2.00 pslld %mm0, %mm2
+# CHECK-NEXT: 1 5 2.00 * pslld (%rax), %mm2
# CHECK-NEXT: 1 1 1.00 psllq $1, %mm2
-# CHECK-NEXT: 2 2 2.00 psllq %mm0, %mm2
-# CHECK-NEXT: 2 5 2.00 * psllq (%rax), %mm2
+# CHECK-NEXT: 1 2 2.00 psllq %mm0, %mm2
+# CHECK-NEXT: 1 5 2.00 * psllq (%rax), %mm2
# CHECK-NEXT: 1 1 1.00 psllw $1, %mm2
-# CHECK-NEXT: 2 2 2.00 psllw %mm0, %mm2
-# CHECK-NEXT: 2 5 2.00 * psllw (%rax), %mm2
+# CHECK-NEXT: 1 2 2.00 psllw %mm0, %mm2
+# CHECK-NEXT: 1 5 2.00 * psllw (%rax), %mm2
# CHECK-NEXT: 1 1 1.00 psrad $1, %mm2
-# CHECK-NEXT: 2 2 2.00 psrad %mm0, %mm2
-# CHECK-NEXT: 2 5 2.00 * psrad (%rax), %mm2
+# CHECK-NEXT: 1 2 2.00 psrad %mm0, %mm2
+# CHECK-NEXT: 1 5 2.00 * psrad (%rax), %mm2
# CHECK-NEXT: 1 1 1.00 psraw $1, %mm2
-# CHECK-NEXT: 2 2 2.00 psraw %mm0, %mm2
-# CHECK-NEXT: 2 5 2.00 * psraw (%rax), %mm2
+# CHECK-NEXT: 1 2 2.00 psraw %mm0, %mm2
+# CHECK-NEXT: 1 5 2.00 * psraw (%rax), %mm2
# CHECK-NEXT: 1 1 1.00 psrld $1, %mm2
-# CHECK-NEXT: 2 2 2.00 psrld %mm0, %mm2
-# CHECK-NEXT: 2 5 2.00 * psrld (%rax), %mm2
+# CHECK-NEXT: 1 2 2.00 psrld %mm0, %mm2
+# CHECK-NEXT: 1 5 2.00 * psrld (%rax), %mm2
# CHECK-NEXT: 1 1 1.00 psrlq $1, %mm2
-# CHECK-NEXT: 2 2 2.00 psrlq %mm0, %mm2
-# CHECK-NEXT: 2 5 2.00 * psrlq (%rax), %mm2
+# CHECK-NEXT: 1 2 2.00 psrlq %mm0, %mm2
+# CHECK-NEXT: 1 5 2.00 * psrlq (%rax), %mm2
# CHECK-NEXT: 1 1 1.00 psrlw $1, %mm2
-# CHECK-NEXT: 2 2 2.00 psrlw %mm0, %mm2
-# CHECK-NEXT: 2 5 2.00 * psrlw (%rax), %mm2
+# CHECK-NEXT: 1 2 2.00 psrlw %mm0, %mm2
+# CHECK-NEXT: 1 5 2.00 * psrlw (%rax), %mm2
# CHECK-NEXT: 1 1 0.50 psubb %mm0, %mm2
# CHECK-NEXT: 1 4 1.00 * psubb (%rax), %mm2
# CHECK-NEXT: 1 1 0.50 psubd %mm0, %mm2
diff --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s
index 73e2da6a2454..fcf95505e28f 100644
--- a/llvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s
+++ b/llvm/test/tools/llvm-mca/X86/SLM/resources-sse2.s
@@ -595,31 +595,31 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 pshuflw $1, %xmm0, %xmm2
# CHECK-NEXT: 1 4 1.00 * pshuflw $1, (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 pslld $1, %xmm2
-# CHECK-NEXT: 2 2 2.00 pslld %xmm0, %xmm2
-# CHECK-NEXT: 2 5 2.00 * pslld (%rax), %xmm2
+# CHECK-NEXT: 1 2 2.00 pslld %xmm0, %xmm2
+# CHECK-NEXT: 1 5 2.00 * pslld (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 pslldq $1, %xmm2
# CHECK-NEXT: 1 1 1.00 psllq $1, %xmm2
-# CHECK-NEXT: 2 2 2.00 psllq %xmm0, %xmm2
-# CHECK-NEXT: 2 5 2.00 * psllq (%rax), %xmm2
+# CHECK-NEXT: 1 2 2.00 psllq %xmm0, %xmm2
+# CHECK-NEXT: 1 5 2.00 * psllq (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 psllw $1, %xmm2
-# CHECK-NEXT: 2 2 2.00 psllw %xmm0, %xmm2
-# CHECK-NEXT: 2 5 2.00 * psllw (%rax), %xmm2
+# CHECK-NEXT: 1 2 2.00 psllw %xmm0, %xmm2
+# CHECK-NEXT: 1 5 2.00 * psllw (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 psrad $1, %xmm2
-# CHECK-NEXT: 2 2 2.00 psrad %xmm0, %xmm2
-# CHECK-NEXT: 2 5 2.00 * psrad (%rax), %xmm2
+# CHECK-NEXT: 1 2 2.00 psrad %xmm0, %xmm2
+# CHECK-NEXT: 1 5 2.00 * psrad (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 psraw $1, %xmm2
-# CHECK-NEXT: 2 2 2.00 psraw %xmm0, %xmm2
-# CHECK-NEXT: 2 5 2.00 * psraw (%rax), %xmm2
+# CHECK-NEXT: 1 2 2.00 psraw %xmm0, %xmm2
+# CHECK-NEXT: 1 5 2.00 * psraw (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 psrld $1, %xmm2
-# CHECK-NEXT: 2 2 2.00 psrld %xmm0, %xmm2
-# CHECK-NEXT: 2 5 2.00 * psrld (%rax), %xmm2
+# CHECK-NEXT: 1 2 2.00 psrld %xmm0, %xmm2
+# CHECK-NEXT: 1 5 2.00 * psrld (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 psrldq $1, %xmm2
# CHECK-NEXT: 1 1 1.00 psrlq $1, %xmm2
-# CHECK-NEXT: 2 2 2.00 psrlq %xmm0, %xmm2
-# CHECK-NEXT: 2 5 2.00 * psrlq (%rax), %xmm2
+# CHECK-NEXT: 1 2 2.00 psrlq %xmm0, %xmm2
+# CHECK-NEXT: 1 5 2.00 * psrlq (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 psrlw $1, %xmm2
-# CHECK-NEXT: 2 2 2.00 psrlw %xmm0, %xmm2
-# CHECK-NEXT: 2 5 2.00 * psrlw (%rax), %xmm2
+# CHECK-NEXT: 1 2 2.00 psrlw %xmm0, %xmm2
+# CHECK-NEXT: 1 5 2.00 * psrlw (%rax), %xmm2
# CHECK-NEXT: 1 1 0.50 psubb %xmm0, %xmm2
# CHECK-NEXT: 1 4 1.00 * psubb (%rax), %xmm2
# CHECK-NEXT: 1 1 0.50 psubd %xmm0, %xmm2
diff --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-sse42.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-sse42.s
index 5f487f6faea7..d4efa814c8b3 100644
--- a/llvm/test/tools/llvm-mca/X86/SLM/resources-sse42.s
+++ b/llvm/test/tools/llvm-mca/X86/SLM/resources-sse42.s
@@ -58,8 +58,8 @@ pcmpgtq (%rax), %xmm2
# CHECK-NEXT: 7 20 17.00 * pcmpistri $1, (%rax), %xmm2
# CHECK-NEXT: 5 13 13.00 pcmpistrm $1, %xmm0, %xmm2
# CHECK-NEXT: 6 16 13.00 * pcmpistrm $1, (%rax), %xmm2
-# CHECK-NEXT: 1 1 0.50 pcmpgtq %xmm0, %xmm2
-# CHECK-NEXT: 1 4 1.00 * pcmpgtq (%rax), %xmm2
+# CHECK-NEXT: 1 5 2.00 pcmpgtq %xmm0, %xmm2
+# CHECK-NEXT: 2 8 2.00 * pcmpgtq (%rax), %xmm2
# CHECK: Resources:
# CHECK-NEXT: [0] - SLMDivider
@@ -73,7 +73,7 @@ pcmpgtq (%rax), %xmm2
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7]
-# CHECK-NEXT: - - - 137.00 1.00 - 10.00 10.00
+# CHECK-NEXT: - - - 140.00 - - 10.00 10.00
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
@@ -95,5 +95,5 @@ pcmpgtq (%rax), %xmm2
# CHECK-NEXT: - - - 17.00 - - - 1.00 pcmpistri $1, (%rax), %xmm2
# CHECK-NEXT: - - - 13.00 - - - - pcmpistrm $1, %xmm0, %xmm2
# CHECK-NEXT: - - - 13.00 - - - 1.00 pcmpistrm $1, (%rax), %xmm2
-# CHECK-NEXT: - - - 0.50 0.50 - - - pcmpgtq %xmm0, %xmm2
-# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 pcmpgtq (%rax), %xmm2
+# CHECK-NEXT: - - - 2.00 - - - - pcmpgtq %xmm0, %xmm2
+# CHECK-NEXT: - - - 2.00 - - - 1.00 pcmpgtq (%rax), %xmm2
diff --git a/llvm/test/tools/llvm-mca/X86/SLM/zero-idioms.s b/llvm/test/tools/llvm-mca/X86/SLM/zero-idioms.s
index e8271597e6cd..df0a26341b3b 100644
--- a/llvm/test/tools/llvm-mca/X86/SLM/zero-idioms.s
+++ b/llvm/test/tools/llvm-mca/X86/SLM/zero-idioms.s
@@ -48,13 +48,13 @@ pxor %xmm2, %xmm2
# CHECK: Iterations: 1
# CHECK-NEXT: Instructions: 36
-# CHECK-NEXT: Total Cycles: 29
+# CHECK-NEXT: Total Cycles: 31
# CHECK-NEXT: Total uOps: 38
# CHECK: Dispatch Width: 2
-# CHECK-NEXT: uOps Per Cycle: 1.31
-# CHECK-NEXT: IPC: 1.24
-# CHECK-NEXT: Block RThroughput: 23.0
+# CHECK-NEXT: uOps Per Cycle: 1.23
+# CHECK-NEXT: IPC: 1.16
+# CHECK-NEXT: Block RThroughput: 22.5
# CHECK: Instruction Info:
# CHECK-NEXT: [1]: #uOps
@@ -74,7 +74,7 @@ pxor %xmm2, %xmm2
# CHECK-NEXT: 1 1 0.50 pcmpgtw %mm2, %mm2
# CHECK-NEXT: 1 1 0.50 pcmpgtb %xmm2, %xmm2
# CHECK-NEXT: 1 1 0.50 pcmpgtd %xmm2, %xmm2
-# CHECK-NEXT: 1 1 0.50 pcmpgtq %xmm2, %xmm2
+# CHECK-NEXT: 1 5 2.00 pcmpgtq %xmm2, %xmm2
# CHECK-NEXT: 1 1 0.50 pcmpgtw %xmm2, %xmm2
# CHECK-NEXT: 1 1 0.50 psubb %mm2, %mm2
# CHECK-NEXT: 1 1 0.50 psubd %mm2, %mm2
@@ -104,7 +104,7 @@ pxor %xmm2, %xmm2
# CHECK: Register File statistics:
# CHECK-NEXT: Total number of mappings created: 35
-# CHECK-NEXT: Max number of mappings used: 18
+# CHECK-NEXT: Max number of mappings used: 16
# CHECK: Resources:
# CHECK-NEXT: [0] - SLMDivider
@@ -118,7 +118,7 @@ pxor %xmm2, %xmm2
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7]
-# CHECK-NEXT: - - - 23.00 23.00 2.00 2.00 -
+# CHECK-NEXT: - - - 24.00 23.00 2.00 2.00 -
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
@@ -131,74 +131,74 @@ pxor %xmm2, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - pcmpgtw %mm2, %mm2
# CHECK-NEXT: - - - - 1.00 - - - pcmpgtb %xmm2, %xmm2
# CHECK-NEXT: - - - - 1.00 - - - pcmpgtd %xmm2, %xmm2
-# CHECK-NEXT: - - - 1.00 - - - - pcmpgtq %xmm2, %xmm2
-# CHECK-NEXT: - - - 1.00 - - - - pcmpgtw %xmm2, %xmm2
+# CHECK-NEXT: - - - 2.00 - - - - pcmpgtq %xmm2, %xmm2
+# CHECK-NEXT: - - - - 1.00 - - - pcmpgtw %xmm2, %xmm2
# CHECK-NEXT: - - - - 1.00 - - - psubb %mm2, %mm2
# CHECK-NEXT: - - - - 1.00 - - - psubd %mm2, %mm2
# CHECK-NEXT: - - - 8.00 - - - - psubq %mm2, %mm2
-# CHECK-NEXT: - - - 1.00 - - - - psubw %mm2, %mm2
+# CHECK-NEXT: - - - - 1.00 - - - psubw %mm2, %mm2
# CHECK-NEXT: - - - - 1.00 - - - psubb %xmm2, %xmm2
# CHECK-NEXT: - - - - 1.00 - - - psubd %xmm2, %xmm2
# CHECK-NEXT: - - - - 8.00 - - - psubq %xmm2, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - psubw %xmm2, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - psubsb %mm2, %mm2
-# CHECK-NEXT: - - - - 1.00 - - - psubsw %mm2, %mm2
+# CHECK-NEXT: - - - 1.00 - - - - psubsw %mm2, %mm2
# CHECK-NEXT: - - - 1.00 - - - - psubsb %xmm2, %xmm2
-# CHECK-NEXT: - - - - 1.00 - - - psubsw %xmm2, %xmm2
+# CHECK-NEXT: - - - 1.00 - - - - psubsw %xmm2, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - psubusb %mm2, %mm2
-# CHECK-NEXT: - - - - 1.00 - - - psubusw %mm2, %mm2
-# CHECK-NEXT: - - - 1.00 - - - - psubusb %xmm2, %xmm2
+# CHECK-NEXT: - - - 1.00 - - - - psubusw %mm2, %mm2
+# CHECK-NEXT: - - - - 1.00 - - - psubusb %xmm2, %xmm2
# CHECK-NEXT: - - - - 1.00 - - - psubusw %xmm2, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - andnps %xmm0, %xmm0
-# CHECK-NEXT: - - - 1.00 - - - - andnpd %xmm1, %xmm1
-# CHECK-NEXT: - - - - 1.00 - - - pandn %mm2, %mm2
-# CHECK-NEXT: - - - - 1.00 - - - pandn %xmm2, %xmm2
-# CHECK-NEXT: - - - 1.00 - - - - vpandn %xmm3, %xmm3, %xmm3
-# CHECK-NEXT: - - - - 1.00 - - - xorps %xmm0, %xmm0
-# CHECK-NEXT: - - - 1.00 - - - - xorpd %xmm1, %xmm1
-# CHECK-NEXT: - - - - 1.00 - - - pxor %mm2, %mm2
-# CHECK-NEXT: - - - 1.00 - - - - pxor %xmm2, %xmm2
+# CHECK-NEXT: - - - - 1.00 - - - andnpd %xmm1, %xmm1
+# CHECK-NEXT: - - - 1.00 - - - - pandn %mm2, %mm2
+# CHECK-NEXT: - - - 1.00 - - - - pandn %xmm2, %xmm2
+# CHECK-NEXT: - - - - 1.00 - - - vpandn %xmm3, %xmm3, %xmm3
+# CHECK-NEXT: - - - 1.00 - - - - xorps %xmm0, %xmm0
+# CHECK-NEXT: - - - - 1.00 - - - xorpd %xmm1, %xmm1
+# CHECK-NEXT: - - - 1.00 - - - - pxor %mm2, %mm2
+# CHECK-NEXT: - - - - 1.00 - - - pxor %xmm2, %xmm2
# CHECK: Timeline view:
-# CHECK-NEXT: 0123456789
-# CHECK-NEXT: Index 0123456789 012345678
-
-# CHECK: [0,0] DeER . . . . . . subl %eax, %eax
-# CHECK-NEXT: [0,1] D=eER. . . . . . subq %rax, %rax
-# CHECK-NEXT: [0,2] .DeER. . . . . . xorl %eax, %eax
-# CHECK-NEXT: [0,3] .D=eER . . . . . xorq %rax, %rax
-# CHECK-NEXT: [0,4] . DeER . . . . . pcmpgtb %mm2, %mm2
-# CHECK-NEXT: [0,5] . D=eER . . . . . pcmpgtd %mm2, %mm2
-# CHECK-NEXT: [0,6] . D=eER . . . . . pcmpgtw %mm2, %mm2
-# CHECK-NEXT: [0,7] . DeE-R . . . . . pcmpgtb %xmm2, %xmm2
-# CHECK-NEXT: [0,8] . DeER . . . . . pcmpgtd %xmm2, %xmm2
-# CHECK-NEXT: [0,9] . D=eER . . . . . pcmpgtq %xmm2, %xmm2
-# CHECK-NEXT: [0,10] . D=eER. . . . . pcmpgtw %xmm2, %xmm2
-# CHECK-NEXT: [0,11] . DeE-R. . . . . psubb %mm2, %mm2
-# CHECK-NEXT: [0,12] . .DeER. . . . . psubd %mm2, %mm2
-# CHECK-NEXT: [0,13] . . DeeeeER . . . . psubq %mm2, %mm2
-# CHECK-NEXT: [0,14] . . D=======eER . . . psubw %mm2, %mm2
-# CHECK-NEXT: [0,15] . . DeE-------R . . . psubb %xmm2, %xmm2
-# CHECK-NEXT: [0,16] . . DeE------R . . . psubd %xmm2, %xmm2
-# CHECK-NEXT: [0,17] . . DeeeeE--R . . . psubq %xmm2, %xmm2
-# CHECK-NEXT: [0,18] . . .D=====eER. . . psubw %xmm2, %xmm2
-# CHECK-NEXT: [0,19] . . .D======eER . . psubsb %mm2, %mm2
-# CHECK-NEXT: [0,20] . . . D======eER . . psubsw %mm2, %mm2
-# CHECK-NEXT: [0,21] . . . D======eER . . psubsb %xmm2, %xmm2
-# CHECK-NEXT: [0,22] . . . D======eER . . psubsw %xmm2, %xmm2
-# CHECK-NEXT: [0,23] . . . D======eER . . psubusb %mm2, %mm2
-# CHECK-NEXT: [0,24] . . . D======eER . . psubusw %mm2, %mm2
-# CHECK-NEXT: [0,25] . . . D======eER . . psubusb %xmm2, %xmm2
-# CHECK-NEXT: [0,26] . . . D======eER. . psubusw %xmm2, %xmm2
-# CHECK-NEXT: [0,27] . . . D======eER. . andnps %xmm0, %xmm0
-# CHECK-NEXT: [0,28] . . . .D======eER . andnpd %xmm1, %xmm1
-# CHECK-NEXT: [0,29] . . . .D======eER . pandn %mm2, %mm2
-# CHECK-NEXT: [0,30] . . . . D======eER . pandn %xmm2, %xmm2
-# CHECK-NEXT: [0,31] . . . . D======eER . vpandn %xmm3, %xmm3, %xmm3
-# CHECK-NEXT: [0,32] . . . . D======eER. xorps %xmm0, %xmm0
-# CHECK-NEXT: [0,33] . . . . D======eER. xorpd %xmm1, %xmm1
-# CHECK-NEXT: [0,34] . . . . D======eER pxor %mm2, %mm2
-# CHECK-NEXT: [0,35] . . . . D======eER pxor %xmm2, %xmm2
+# CHECK-NEXT: 0123456789 0
+# CHECK-NEXT: Index 0123456789 0123456789
+
+# CHECK: [0,0] DeER . . . . . . subl %eax, %eax
+# CHECK-NEXT: [0,1] D=eER. . . . . . subq %rax, %rax
+# CHECK-NEXT: [0,2] .DeER. . . . . . xorl %eax, %eax
+# CHECK-NEXT: [0,3] .D=eER . . . . . xorq %rax, %rax
+# CHECK-NEXT: [0,4] . DeER . . . . . pcmpgtb %mm2, %mm2
+# CHECK-NEXT: [0,5] . D=eER . . . . . pcmpgtd %mm2, %mm2
+# CHECK-NEXT: [0,6] . D=eER . . . . . pcmpgtw %mm2, %mm2
+# CHECK-NEXT: [0,7] . DeE-R . . . . . pcmpgtb %xmm2, %xmm2
+# CHECK-NEXT: [0,8] . DeER . . . . . pcmpgtd %xmm2, %xmm2
+# CHECK-NEXT: [0,9] . D=eeeeeER . . . . pcmpgtq %xmm2, %xmm2
+# CHECK-NEXT: [0,10] . D=====eER . . . . pcmpgtw %xmm2, %xmm2
+# CHECK-NEXT: [0,11] . DeE-----R . . . . psubb %mm2, %mm2
+# CHECK-NEXT: [0,12] . .DeE----R . . . . psubd %mm2, %mm2
+# CHECK-NEXT: [0,13] . . DeeeeER . . . . psubq %mm2, %mm2
+# CHECK-NEXT: [0,14] . . D===eER. . . . psubw %mm2, %mm2
+# CHECK-NEXT: [0,15] . . D====eER . . . psubb %xmm2, %xmm2
+# CHECK-NEXT: [0,16] . . D====eER . . . psubd %xmm2, %xmm2
+# CHECK-NEXT: [0,17] . . D====eeeeER . . psubq %xmm2, %xmm2
+# CHECK-NEXT: [0,18] . . .D=======eER . . psubw %xmm2, %xmm2
+# CHECK-NEXT: [0,19] . . .D====eE---R . . psubsb %mm2, %mm2
+# CHECK-NEXT: [0,20] . . . D====eE--R . . psubsw %mm2, %mm2
+# CHECK-NEXT: [0,21] . . . D=======eER . . psubsb %xmm2, %xmm2
+# CHECK-NEXT: [0,22] . . . D=======eER . . psubsw %xmm2, %xmm2
+# CHECK-NEXT: [0,23] . . . D====eE---R . . psubusb %mm2, %mm2
+# CHECK-NEXT: [0,24] . . . D=======eER. . psubusw %mm2, %mm2
+# CHECK-NEXT: [0,25] . . . D========eER . psubusb %xmm2, %xmm2
+# CHECK-NEXT: [0,26] . . . D========eER . psubusw %xmm2, %xmm2
+# CHECK-NEXT: [0,27] . . . D=======eE-R . andnps %xmm0, %xmm0
+# CHECK-NEXT: [0,28] . . . .D========eER . andnpd %xmm1, %xmm1
+# CHECK-NEXT: [0,29] . . . .D=======eE-R . pandn %mm2, %mm2
+# CHECK-NEXT: [0,30] . . . . D=======eER . pandn %xmm2, %xmm2
+# CHECK-NEXT: [0,31] . . . . D========eER . vpandn %xmm3, %xmm3, %xmm3
+# CHECK-NEXT: [0,32] . . . . D=======eER . xorps %xmm0, %xmm0
+# CHECK-NEXT: [0,33] . . . . D========eER. xorpd %xmm1, %xmm1
+# CHECK-NEXT: [0,34] . . . . D=======eER. pxor %mm2, %mm2
+# CHECK-NEXT: [0,35] . . . . D========eER pxor %xmm2, %xmm2
# CHECK: Average Wait times (based on the timeline view):
# CHECK-NEXT: [0]: Executions
@@ -217,30 +217,30 @@ pxor %xmm2, %xmm2
# CHECK-NEXT: 7. 1 1.0 1.0 1.0 pcmpgtb %xmm2, %xmm2
# CHECK-NEXT: 8. 1 1.0 0.0 0.0 pcmpgtd %xmm2, %xmm2
# CHECK-NEXT: 9. 1 2.0 0.0 0.0 pcmpgtq %xmm2, %xmm2
-# CHECK-NEXT: 10. 1 2.0 0.0 0.0 pcmpgtw %xmm2, %xmm2
-# CHECK-NEXT: 11. 1 1.0 0.0 1.0 psubb %mm2, %mm2
-# CHECK-NEXT: 12. 1 1.0 0.0 0.0 psubd %mm2, %mm2
+# CHECK-NEXT: 10. 1 6.0 0.0 0.0 pcmpgtw %xmm2, %xmm2
+# CHECK-NEXT: 11. 1 1.0 0.0 5.0 psubb %mm2, %mm2
+# CHECK-NEXT: 12. 1 1.0 0.0 4.0 psubd %mm2, %mm2
# CHECK-NEXT: 13. 1 1.0 0.0 0.0 psubq %mm2, %mm2
-# CHECK-NEXT: 14. 1 8.0 4.0 0.0 psubw %mm2, %mm2
-# CHECK-NEXT: 15. 1 1.0 1.0 7.0 psubb %xmm2, %xmm2
-# CHECK-NEXT: 16. 1 1.0 0.0 6.0 psubd %xmm2, %xmm2
-# CHECK-NEXT: 17. 1 1.0 0.0 2.0 psubq %xmm2, %xmm2
-# CHECK-NEXT: 18. 1 6.0 2.0 0.0 psubw %xmm2, %xmm2
-# CHECK-NEXT: 19. 1 7.0 1.0 0.0 psubsb %mm2, %mm2
-# CHECK-NEXT: 20. 1 7.0 0.0 0.0 psubsw %mm2, %mm2
-# CHECK-NEXT: 21. 1 7.0 1.0 0.0 psubsb %xmm2, %xmm2
-# CHECK-NEXT: 22. 1 7.0 0.0 0.0 psubsw %xmm2, %xmm2
-# CHECK-NEXT: 23. 1 7.0 0.0 0.0 psubusb %mm2, %mm2
-# CHECK-NEXT: 24. 1 7.0 0.0 0.0 psubusw %mm2, %mm2
-# CHECK-NEXT: 25. 1 7.0 0.0 0.0 psubusb %xmm2, %xmm2
-# CHECK-NEXT: 26. 1 7.0 0.0 0.0 psubusw %xmm2, %xmm2
-# CHECK-NEXT: 27. 1 7.0 7.0 0.0 andnps %xmm0, %xmm0
-# CHECK-NEXT: 28. 1 7.0 7.0 0.0 andnpd %xmm1, %xmm1
-# CHECK-NEXT: 29. 1 7.0 1.0 0.0 pandn %mm2, %mm2
-# CHECK-NEXT: 30. 1 7.0 1.0 0.0 pandn %xmm2, %xmm2
-# CHECK-NEXT: 31. 1 7.0 7.0 0.0 vpandn %xmm3, %xmm3, %xmm3
-# CHECK-NEXT: 32. 1 7.0 7.0 0.0 xorps %xmm0, %xmm0
-# CHECK-NEXT: 33. 1 7.0 7.0 0.0 xorpd %xmm1, %xmm1
-# CHECK-NEXT: 34. 1 7.0 2.0 0.0 pxor %mm2, %mm2
-# CHECK-NEXT: 35. 1 7.0 7.0 0.0 pxor %xmm2, %xmm2
-# CHECK-NEXT: 1 4.3 1.6 0.5 <total>
+# CHECK-NEXT: 14. 1 4.0 0.0 0.0 psubw %mm2, %mm2
+# CHECK-NEXT: 15. 1 5.0 1.0 0.0 psubb %xmm2, %xmm2
+# CHECK-NEXT: 16. 1 5.0 0.0 0.0 psubd %xmm2, %xmm2
+# CHECK-NEXT: 17. 1 5.0 0.0 0.0 psubq %xmm2, %xmm2
+# CHECK-NEXT: 18. 1 8.0 0.0 0.0 psubw %xmm2, %xmm2
+# CHECK-NEXT: 19. 1 5.0 3.0 3.0 psubsb %mm2, %mm2
+# CHECK-NEXT: 20. 1 5.0 0.0 2.0 psubsw %mm2, %mm2
+# CHECK-NEXT: 21. 1 8.0 0.0 0.0 psubsb %xmm2, %xmm2
+# CHECK-NEXT: 22. 1 8.0 0.0 0.0 psubsw %xmm2, %xmm2
+# CHECK-NEXT: 23. 1 5.0 0.0 3.0 psubusb %mm2, %mm2
+# CHECK-NEXT: 24. 1 8.0 3.0 0.0 psubusw %mm2, %mm2
+# CHECK-NEXT: 25. 1 9.0 1.0 0.0 psubusb %xmm2, %xmm2
+# CHECK-NEXT: 26. 1 9.0 0.0 0.0 psubusw %xmm2, %xmm2
+# CHECK-NEXT: 27. 1 8.0 8.0 1.0 andnps %xmm0, %xmm0
+# CHECK-NEXT: 28. 1 9.0 9.0 0.0 andnpd %xmm1, %xmm1
+# CHECK-NEXT: 29. 1 8.0 1.0 1.0 pandn %mm2, %mm2
+# CHECK-NEXT: 30. 1 8.0 0.0 0.0 pandn %xmm2, %xmm2
+# CHECK-NEXT: 31. 1 9.0 9.0 0.0 vpandn %xmm3, %xmm3, %xmm3
+# CHECK-NEXT: 32. 1 8.0 8.0 0.0 xorps %xmm0, %xmm0
+# CHECK-NEXT: 33. 1 9.0 9.0 0.0 xorpd %xmm1, %xmm1
+# CHECK-NEXT: 34. 1 8.0 2.0 0.0 pxor %mm2, %mm2
+# CHECK-NEXT: 35. 1 9.0 9.0 0.0 pxor %xmm2, %xmm2
+# CHECK-NEXT: 1 5.1 1.9 0.6 <total>
More information about the llvm-commits
mailing list