[X86] Correct scheduler information for rotate by constant for Haswell, Broadwell...
authorCraig Topper <craig.topper@intel.com>
Thu, 7 Mar 2019 21:22:56 +0000 (21:22 +0000)
committerCraig Topper <craig.topper@intel.com>
Thu, 7 Mar 2019 21:22:56 +0000 (21:22 +0000)
Rotate with explicit immediate is a single uop from Haswell on. An immediate of 1 has a dependency on the previous writer of flags, but the other immediate values do not.

The implicit rotate by 1 instruction is 2 uops. But the flags are merged after the rotate uop so the data result does not see the flag dependency. But I don't think we have any way of modeling that.

RORX is 1 uop without the load. 2 uops with the load. We currently model these with WriteShift/WriteShiftLd.

Differential Revision: https://reviews.llvm.org/D59077

llvm-svn: 355636

llvm/lib/Target/X86/X86SchedBroadwell.td
llvm/lib/Target/X86/X86SchedHaswell.td
llvm/lib/Target/X86/X86SchedSkylakeClient.td
llvm/lib/Target/X86/X86SchedSkylakeServer.td
llvm/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s
llvm/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s
llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s

index fe96f203d3a061f13750acdcd7072b1aa85cdd50..6d69cb01eeeaf1f9f7d4ec2acb4ab99426aa04c9 100644 (file)
@@ -187,7 +187,7 @@ defm : BWWriteResPair<WritePOPCNT,         [BWPort1], 3>;
 // Integer shifts and rotates.
 defm : BWWriteResPair<WriteShift,    [BWPort06],  1>;
 defm : BWWriteResPair<WriteShiftCL,  [BWPort06,BWPort0156],  3, [2,1], 3>;
-defm : BWWriteResPair<WriteRotate,   [BWPort06],  2, [2], 2>;
+defm : BWWriteResPair<WriteRotate,   [BWPort06],  1, [1], 1>;
 defm : BWWriteResPair<WriteRotateCL, [BWPort06,BWPort0156],  3, [2,1], 3>;
 
 // SHLD/SHRD.
@@ -1105,6 +1105,14 @@ def BWWriteResGroup87 : SchedWriteRes<[BWPort4,BWPort23,BWPort237,BWPort06]> {
 def: InstRW<[BWWriteResGroup87], (instregex "ROL(8|16|32|64)m(1|i)",
                                             "ROR(8|16|32|64)m(1|i)")>;
 
+def BWWriteResGroup87_1 : SchedWriteRes<[BWPort06]> {
+  let Latency = 2;
+  let NumMicroOps = 2;
+  let ResourceCycles = [2];
+}
+def: InstRW<[BWWriteResGroup87_1], (instrs ROL8r1, ROL16r1, ROL32r1, ROL64r1,
+                                           ROR8r1, ROR16r1, ROR32r1, ROR64r1)>;
+
 def BWWriteResGroup88 : SchedWriteRes<[BWPort4,BWPort23,BWPort237,BWPort0156]> {
   let Latency = 7;
   let NumMicroOps = 5;
index 5fc838a2ce3fba3af07fdd43797ffe07fd7c7cbb..cb0e56432fbe63447930be1e84565d39df9d82f2 100644 (file)
@@ -152,7 +152,7 @@ defm : X86WriteRes<WriteXCHG, [HWPort0156], 2, [3], 3>;
 // Integer shifts and rotates.
 defm : HWWriteResPair<WriteShift,    [HWPort06],  1>;
 defm : HWWriteResPair<WriteShiftCL,  [HWPort06, HWPort0156],  3, [2,1], 3>;
-defm : HWWriteResPair<WriteRotate,   [HWPort06],  2, [2], 2>;
+defm : HWWriteResPair<WriteRotate,   [HWPort06],  1, [1], 1>;
 defm : HWWriteResPair<WriteRotateCL, [HWPort06, HWPort0156],  3, [2,1], 3>;
 
 // SHLD/SHRD.
@@ -1183,6 +1183,14 @@ def HWWriteResGroup46 : SchedWriteRes<[HWPort4,HWPort23,HWPort237,HWPort06]> {
 def: InstRW<[HWWriteResGroup46], (instregex "ROL(8|16|32|64)m(1|i)",
                                             "ROR(8|16|32|64)m(1|i)")>;
 
+def HWWriteResGroup46_1 : SchedWriteRes<[HWPort06]> {
+  let Latency = 2;
+  let NumMicroOps = 2;
+  let ResourceCycles = [2];
+}
+def: InstRW<[HWWriteResGroup46_1], (instrs ROL8r1, ROL16r1, ROL32r1, ROL64r1,
+                                           ROR8r1, ROR16r1, ROR32r1, ROR64r1)>;
+
 def HWWriteResGroup47 : SchedWriteRes<[HWPort4,HWPort23,HWPort237,HWPort0156]> {
   let Latency = 8;
   let NumMicroOps = 5;
index 9e5f79584603f6e776b156bf657b2e692f288d28..ff6a0e35c5cfa00617fa7876c88ad438c586d6b5 100644 (file)
@@ -184,7 +184,7 @@ defm : SKLWriteResPair<WritePOPCNT,         [SKLPort1], 3>;
 // Integer shifts and rotates.
 defm : SKLWriteResPair<WriteShift,    [SKLPort06],  1>;
 defm : SKLWriteResPair<WriteShiftCL,  [SKLPort06],  3, [3], 3>;
-defm : SKLWriteResPair<WriteRotate,   [SKLPort06],  2, [2], 2>;
+defm : SKLWriteResPair<WriteRotate,   [SKLPort06],  1, [1], 1>;
 defm : SKLWriteResPair<WriteRotateCL, [SKLPort06],  3, [3], 3>;
 
 // SHLD/SHRD.
@@ -1185,6 +1185,14 @@ def SKLWriteResGroup100 : SchedWriteRes<[SKLPort4,SKLPort23,SKLPort237,SKLPort06
 def: InstRW<[SKLWriteResGroup100], (instregex "ROL(8|16|32|64)m(1|i)",
                                               "ROR(8|16|32|64)m(1|i)")>;
 
+def SKLWriteResGroup100_1 : SchedWriteRes<[SKLPort06]> {
+  let Latency = 2;
+  let NumMicroOps = 2;
+  let ResourceCycles = [2];
+}
+def: InstRW<[SKLWriteResGroup100_1], (instrs ROL8r1, ROL16r1, ROL32r1, ROL64r1,
+                                             ROR8r1, ROR16r1, ROR32r1, ROR64r1)>;
+
 def SKLWriteResGroup101 : SchedWriteRes<[SKLPort4,SKLPort23,SKLPort237,SKLPort0156]> {
   let Latency = 7;
   let NumMicroOps = 5;
index 4747dafb85719498827f240c4a9afc7ee74405d3..0fdeba7cef31cea619def3ee86b49d25ed3645db 100644 (file)
@@ -177,7 +177,7 @@ defm : X86WriteRes<WriteBitTestSetRegLd, [SKXPort0156,SKXPort23], 5, [1,1], 2>;
 // Integer shifts and rotates.
 defm : SKXWriteResPair<WriteShift,    [SKXPort06],  1>;
 defm : SKXWriteResPair<WriteShiftCL,  [SKXPort06],  3, [3], 3>;
-defm : SKXWriteResPair<WriteRotate,   [SKXPort06],  2, [2], 2>;
+defm : SKXWriteResPair<WriteRotate,   [SKXPort06],  1, [1], 1>;
 defm : SKXWriteResPair<WriteRotateCL, [SKXPort06],  3, [3], 3>;
 
 // SHLD/SHRD.
@@ -1448,6 +1448,14 @@ def SKXWriteResGroup107 : SchedWriteRes<[SKXPort4,SKXPort23,SKXPort237,SKXPort06
 def: InstRW<[SKXWriteResGroup107], (instregex "ROL(8|16|32|64)m(1|i)",
                                               "ROR(8|16|32|64)m(1|i)")>;
 
+def SKXWriteResGroup107_1 : SchedWriteRes<[SKXPort06]> {
+  let Latency = 2;
+  let NumMicroOps = 2;
+  let ResourceCycles = [2];
+}
+def: InstRW<[SKXWriteResGroup107_1], (instrs ROL8r1, ROL16r1, ROL32r1, ROL64r1,
+                                             ROR8r1, ROR16r1, ROR32r1, ROR64r1)>;
+
 def SKXWriteResGroup108 : SchedWriteRes<[SKXPort4,SKXPort23,SKXPort237,SKXPort0156]> {
   let Latency = 7;
   let NumMicroOps = 5;
index 6236be5f785c40cd54f18ddad559ce20894b4d27..642e73a701b9113c3b495801501b34f195070260 100644 (file)
@@ -1345,8 +1345,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorb   %dil
 # CHECK-NEXT:  5      7     1.00    *      *            rolb   (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorb   (%rax)
-# CHECK-NEXT:  2      2     1.00                        rolb   $7, %dil
-# CHECK-NEXT:  2      2     1.00                        rorb   $7, %dil
+# CHECK-NEXT:  1      1     0.50                        rolb   $7, %dil
+# CHECK-NEXT:  1      1     0.50                        rorb   $7, %dil
 # CHECK-NEXT:  5      7     1.00    *      *            rolb   $7, (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorb   $7, (%rax)
 # CHECK-NEXT:  3      3     1.00                        rolb   %cl, %dil
@@ -1357,8 +1357,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorw   %di
 # CHECK-NEXT:  5      7     1.00    *      *            rolw   (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorw   (%rax)
-# CHECK-NEXT:  2      2     1.00                        rolw   $7, %di
-# CHECK-NEXT:  2      2     1.00                        rorw   $7, %di
+# CHECK-NEXT:  1      1     0.50                        rolw   $7, %di
+# CHECK-NEXT:  1      1     0.50                        rorw   $7, %di
 # CHECK-NEXT:  5      7     1.00    *      *            rolw   $7, (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorw   $7, (%rax)
 # CHECK-NEXT:  3      3     1.00                        rolw   %cl, %di
@@ -1369,8 +1369,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorl   %edi
 # CHECK-NEXT:  5      7     1.00    *      *            roll   (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorl   (%rax)
-# CHECK-NEXT:  2      2     1.00                        roll   $7, %edi
-# CHECK-NEXT:  2      2     1.00                        rorl   $7, %edi
+# CHECK-NEXT:  1      1     0.50                        roll   $7, %edi
+# CHECK-NEXT:  1      1     0.50                        rorl   $7, %edi
 # CHECK-NEXT:  5      7     1.00    *      *            roll   $7, (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorl   $7, (%rax)
 # CHECK-NEXT:  3      3     1.00                        roll   %cl, %edi
@@ -1381,8 +1381,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorq   %rdi
 # CHECK-NEXT:  5      7     1.00    *      *            rolq   (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorq   (%rax)
-# CHECK-NEXT:  2      2     1.00                        rolq   $7, %rdi
-# CHECK-NEXT:  2      2     1.00                        rorq   $7, %rdi
+# CHECK-NEXT:  1      1     0.50                        rolq   $7, %rdi
+# CHECK-NEXT:  1      1     0.50                        rorq   $7, %rdi
 # CHECK-NEXT:  5      7     1.00    *      *            rolq   $7, (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorq   $7, (%rax)
 # CHECK-NEXT:  3      3     1.00                        rolq   %cl, %rdi
@@ -1693,7 +1693,7 @@ xorq (%rax), %rdi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
-# CHECK-NEXT: 50.00   -     522.50 346.50 269.33 269.33 214.00 259.00 556.00 85.33
+# CHECK-NEXT: 50.00   -     518.50 346.50 269.33 269.33 214.00 259.00 552.00 85.33
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -2143,8 +2143,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorb       %dil
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolb       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorb       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rolb       $7, %dil
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorb       $7, %dil
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rolb       $7, %dil
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorb       $7, %dil
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolb       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorb       $7, (%rax)
 # CHECK-NEXT:  -      -     1.25   0.25    -      -      -     0.25   1.25    -     rolb       %cl, %dil
@@ -2155,8 +2155,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorw       %di
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolw       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorw       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rolw       $7, %di
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorw       $7, %di
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rolw       $7, %di
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorw       $7, %di
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolw       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorw       $7, (%rax)
 # CHECK-NEXT:  -      -     1.25   0.25    -      -      -     0.25   1.25    -     rolw       %cl, %di
@@ -2167,8 +2167,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorl       %edi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   roll       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorl       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     roll       $7, %edi
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorl       $7, %edi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     roll       $7, %edi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorl       $7, %edi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   roll       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorl       $7, (%rax)
 # CHECK-NEXT:  -      -     1.25   0.25    -      -      -     0.25   1.25    -     roll       %cl, %edi
@@ -2179,8 +2179,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorq       %rdi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolq       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorq       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rolq       $7, %rdi
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorq       $7, %rdi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rolq       $7, %rdi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorq       $7, %rdi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolq       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorq       $7, (%rax)
 # CHECK-NEXT:  -      -     1.25   0.25    -      -      -     0.25   1.25    -     rolq       %cl, %rdi
index 0c913a5107618a076da6e880d7dc007bb7667493..5153adc8444895d6e4e5dde57769eb64599da247 100644 (file)
@@ -1345,8 +1345,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorb   %dil
 # CHECK-NEXT:  5      8     1.00    *      *            rolb   (%rax)
 # CHECK-NEXT:  5      8     1.00    *      *            rorb   (%rax)
-# CHECK-NEXT:  2      2     1.00                        rolb   $7, %dil
-# CHECK-NEXT:  2      2     1.00                        rorb   $7, %dil
+# CHECK-NEXT:  1      1     0.50                        rolb   $7, %dil
+# CHECK-NEXT:  1      1     0.50                        rorb   $7, %dil
 # CHECK-NEXT:  5      8     1.00    *      *            rolb   $7, (%rax)
 # CHECK-NEXT:  5      8     1.00    *      *            rorb   $7, (%rax)
 # CHECK-NEXT:  3      3     1.00                        rolb   %cl, %dil
@@ -1357,8 +1357,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorw   %di
 # CHECK-NEXT:  5      8     1.00    *      *            rolw   (%rax)
 # CHECK-NEXT:  5      8     1.00    *      *            rorw   (%rax)
-# CHECK-NEXT:  2      2     1.00                        rolw   $7, %di
-# CHECK-NEXT:  2      2     1.00                        rorw   $7, %di
+# CHECK-NEXT:  1      1     0.50                        rolw   $7, %di
+# CHECK-NEXT:  1      1     0.50                        rorw   $7, %di
 # CHECK-NEXT:  5      8     1.00    *      *            rolw   $7, (%rax)
 # CHECK-NEXT:  5      8     1.00    *      *            rorw   $7, (%rax)
 # CHECK-NEXT:  3      3     1.00                        rolw   %cl, %di
@@ -1369,8 +1369,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorl   %edi
 # CHECK-NEXT:  5      8     1.00    *      *            roll   (%rax)
 # CHECK-NEXT:  5      8     1.00    *      *            rorl   (%rax)
-# CHECK-NEXT:  2      2     1.00                        roll   $7, %edi
-# CHECK-NEXT:  2      2     1.00                        rorl   $7, %edi
+# CHECK-NEXT:  1      1     0.50                        roll   $7, %edi
+# CHECK-NEXT:  1      1     0.50                        rorl   $7, %edi
 # CHECK-NEXT:  5      8     1.00    *      *            roll   $7, (%rax)
 # CHECK-NEXT:  5      8     1.00    *      *            rorl   $7, (%rax)
 # CHECK-NEXT:  3      3     1.00                        roll   %cl, %edi
@@ -1381,8 +1381,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorq   %rdi
 # CHECK-NEXT:  5      8     1.00    *      *            rolq   (%rax)
 # CHECK-NEXT:  5      8     1.00    *      *            rorq   (%rax)
-# CHECK-NEXT:  2      2     1.00                        rolq   $7, %rdi
-# CHECK-NEXT:  2      2     1.00                        rorq   $7, %rdi
+# CHECK-NEXT:  1      1     0.50                        rolq   $7, %rdi
+# CHECK-NEXT:  1      1     0.50                        rorq   $7, %rdi
 # CHECK-NEXT:  5      8     1.00    *      *            rolq   $7, (%rax)
 # CHECK-NEXT:  5      8     1.00    *      *            rorq   $7, (%rax)
 # CHECK-NEXT:  3      3     1.00                        rolq   %cl, %rdi
@@ -1693,7 +1693,7 @@ xorq (%rax), %rdi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
-# CHECK-NEXT: 80.00   -     577.75 371.75 269.83 269.83 209.00 286.25 640.25 82.33
+# CHECK-NEXT: 80.00   -     573.75 371.75 269.83 269.83 209.00 286.25 636.25 82.33
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -2143,8 +2143,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorb       %dil
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolb       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorb       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rolb       $7, %dil
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorb       $7, %dil
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rolb       $7, %dil
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorb       $7, %dil
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolb       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorb       $7, (%rax)
 # CHECK-NEXT:  -      -     1.25   0.25    -      -      -     0.25   1.25    -     rolb       %cl, %dil
@@ -2155,8 +2155,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorw       %di
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolw       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorw       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rolw       $7, %di
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorw       $7, %di
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rolw       $7, %di
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorw       $7, %di
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolw       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorw       $7, (%rax)
 # CHECK-NEXT:  -      -     1.25   0.25    -      -      -     0.25   1.25    -     rolw       %cl, %di
@@ -2167,8 +2167,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorl       %edi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   roll       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorl       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     roll       $7, %edi
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorl       $7, %edi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     roll       $7, %edi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorl       $7, %edi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   roll       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorl       $7, (%rax)
 # CHECK-NEXT:  -      -     1.25   0.25    -      -      -     0.25   1.25    -     roll       %cl, %edi
@@ -2179,8 +2179,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorq       %rdi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolq       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorq       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rolq       $7, %rdi
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorq       $7, %rdi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rolq       $7, %rdi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorq       $7, %rdi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolq       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorq       $7, (%rax)
 # CHECK-NEXT:  -      -     1.25   0.25    -      -      -     0.25   1.25    -     rolq       %cl, %rdi
index d4ce1c2a7666a21b12a31ae831324307e48340eb..7fc4419e3cbffd782abad910b2f7db2b3981c642 100644 (file)
@@ -1345,8 +1345,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorb   %dil
 # CHECK-NEXT:  5      7     1.00    *      *            rolb   (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorb   (%rax)
-# CHECK-NEXT:  2      2     1.00                        rolb   $7, %dil
-# CHECK-NEXT:  2      2     1.00                        rorb   $7, %dil
+# CHECK-NEXT:  1      1     0.50                        rolb   $7, %dil
+# CHECK-NEXT:  1      1     0.50                        rorb   $7, %dil
 # CHECK-NEXT:  5      7     1.00    *      *            rolb   $7, (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorb   $7, (%rax)
 # CHECK-NEXT:  3      3     1.50                        rolb   %cl, %dil
@@ -1357,8 +1357,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorw   %di
 # CHECK-NEXT:  5      7     1.00    *      *            rolw   (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorw   (%rax)
-# CHECK-NEXT:  2      2     1.00                        rolw   $7, %di
-# CHECK-NEXT:  2      2     1.00                        rorw   $7, %di
+# CHECK-NEXT:  1      1     0.50                        rolw   $7, %di
+# CHECK-NEXT:  1      1     0.50                        rorw   $7, %di
 # CHECK-NEXT:  5      7     1.00    *      *            rolw   $7, (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorw   $7, (%rax)
 # CHECK-NEXT:  3      3     1.50                        rolw   %cl, %di
@@ -1369,8 +1369,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorl   %edi
 # CHECK-NEXT:  5      7     1.00    *      *            roll   (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorl   (%rax)
-# CHECK-NEXT:  2      2     1.00                        roll   $7, %edi
-# CHECK-NEXT:  2      2     1.00                        rorl   $7, %edi
+# CHECK-NEXT:  1      1     0.50                        roll   $7, %edi
+# CHECK-NEXT:  1      1     0.50                        rorl   $7, %edi
 # CHECK-NEXT:  5      7     1.00    *      *            roll   $7, (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorl   $7, (%rax)
 # CHECK-NEXT:  3      3     1.50                        roll   %cl, %edi
@@ -1381,8 +1381,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorq   %rdi
 # CHECK-NEXT:  5      7     1.00    *      *            rolq   (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorq   (%rax)
-# CHECK-NEXT:  2      2     1.00                        rolq   $7, %rdi
-# CHECK-NEXT:  2      2     1.00                        rorq   $7, %rdi
+# CHECK-NEXT:  1      1     0.50                        rolq   $7, %rdi
+# CHECK-NEXT:  1      1     0.50                        rorq   $7, %rdi
 # CHECK-NEXT:  5      7     1.00    *      *            rolq   $7, (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorq   $7, (%rax)
 # CHECK-NEXT:  3      3     1.50                        rolq   %cl, %rdi
@@ -1693,7 +1693,7 @@ xorq (%rax), %rdi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
-# CHECK-NEXT: 60.00   -     592.75 326.25 269.33 269.33 214.00 293.75 649.25 85.33
+# CHECK-NEXT: 60.00   -     588.75 326.25 269.33 269.33 214.00 293.75 645.25 85.33
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -2143,8 +2143,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorb       %dil
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolb       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorb       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rolb       $7, %dil
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorb       $7, %dil
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rolb       $7, %dil
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorb       $7, %dil
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolb       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorb       $7, (%rax)
 # CHECK-NEXT:  -      -     1.50    -      -      -      -      -     1.50    -     rolb       %cl, %dil
@@ -2155,8 +2155,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorw       %di
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolw       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorw       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rolw       $7, %di
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorw       $7, %di
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rolw       $7, %di
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorw       $7, %di
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolw       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorw       $7, (%rax)
 # CHECK-NEXT:  -      -     1.50    -      -      -      -      -     1.50    -     rolw       %cl, %di
@@ -2167,8 +2167,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorl       %edi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   roll       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorl       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     roll       $7, %edi
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorl       $7, %edi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     roll       $7, %edi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorl       $7, %edi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   roll       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorl       $7, (%rax)
 # CHECK-NEXT:  -      -     1.50    -      -      -      -      -     1.50    -     roll       %cl, %edi
@@ -2179,8 +2179,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorq       %rdi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolq       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorq       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rolq       $7, %rdi
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorq       $7, %rdi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rolq       $7, %rdi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorq       $7, %rdi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolq       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorq       $7, (%rax)
 # CHECK-NEXT:  -      -     1.50    -      -      -      -      -     1.50    -     rolq       %cl, %rdi
index d944df4577985b3fb99caedae4b1bb2bab55701c..3b30da845691e12c38bd7cc8ad2ae065e9c00051 100644 (file)
@@ -1345,8 +1345,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorb   %dil
 # CHECK-NEXT:  5      7     1.00    *      *            rolb   (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorb   (%rax)
-# CHECK-NEXT:  2      2     1.00                        rolb   $7, %dil
-# CHECK-NEXT:  2      2     1.00                        rorb   $7, %dil
+# CHECK-NEXT:  1      1     0.50                        rolb   $7, %dil
+# CHECK-NEXT:  1      1     0.50                        rorb   $7, %dil
 # CHECK-NEXT:  5      7     1.00    *      *            rolb   $7, (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorb   $7, (%rax)
 # CHECK-NEXT:  3      3     1.50                        rolb   %cl, %dil
@@ -1357,8 +1357,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorw   %di
 # CHECK-NEXT:  5      7     1.00    *      *            rolw   (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorw   (%rax)
-# CHECK-NEXT:  2      2     1.00                        rolw   $7, %di
-# CHECK-NEXT:  2      2     1.00                        rorw   $7, %di
+# CHECK-NEXT:  1      1     0.50                        rolw   $7, %di
+# CHECK-NEXT:  1      1     0.50                        rorw   $7, %di
 # CHECK-NEXT:  5      7     1.00    *      *            rolw   $7, (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorw   $7, (%rax)
 # CHECK-NEXT:  3      3     1.50                        rolw   %cl, %di
@@ -1369,8 +1369,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorl   %edi
 # CHECK-NEXT:  5      7     1.00    *      *            roll   (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorl   (%rax)
-# CHECK-NEXT:  2      2     1.00                        roll   $7, %edi
-# CHECK-NEXT:  2      2     1.00                        rorl   $7, %edi
+# CHECK-NEXT:  1      1     0.50                        roll   $7, %edi
+# CHECK-NEXT:  1      1     0.50                        rorl   $7, %edi
 # CHECK-NEXT:  5      7     1.00    *      *            roll   $7, (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorl   $7, (%rax)
 # CHECK-NEXT:  3      3     1.50                        roll   %cl, %edi
@@ -1381,8 +1381,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  2      2     1.00                        rorq   %rdi
 # CHECK-NEXT:  5      7     1.00    *      *            rolq   (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorq   (%rax)
-# CHECK-NEXT:  2      2     1.00                        rolq   $7, %rdi
-# CHECK-NEXT:  2      2     1.00                        rorq   $7, %rdi
+# CHECK-NEXT:  1      1     0.50                        rolq   $7, %rdi
+# CHECK-NEXT:  1      1     0.50                        rorq   $7, %rdi
 # CHECK-NEXT:  5      7     1.00    *      *            rolq   $7, (%rax)
 # CHECK-NEXT:  5      7     1.00    *      *            rorq   $7, (%rax)
 # CHECK-NEXT:  3      3     1.50                        rolq   %cl, %rdi
@@ -1693,7 +1693,7 @@ xorq (%rax), %rdi
 
 # CHECK:      Resource pressure per iteration:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
-# CHECK-NEXT: 60.00   -     593.00 326.50 269.33 269.33 214.00 294.00 649.50 85.33
+# CHECK-NEXT: 60.00   -     589.00 326.50 269.33 269.33 214.00 294.00 645.50 85.33
 
 # CHECK:      Resource pressure by instruction:
 # CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
@@ -2143,8 +2143,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorb       %dil
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolb       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorb       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rolb       $7, %dil
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorb       $7, %dil
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rolb       $7, %dil
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorb       $7, %dil
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolb       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorb       $7, (%rax)
 # CHECK-NEXT:  -      -     1.50    -      -      -      -      -     1.50    -     rolb       %cl, %dil
@@ -2155,8 +2155,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorw       %di
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolw       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorw       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rolw       $7, %di
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorw       $7, %di
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rolw       $7, %di
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorw       $7, %di
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolw       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorw       $7, (%rax)
 # CHECK-NEXT:  -      -     1.50    -      -      -      -      -     1.50    -     rolw       %cl, %di
@@ -2167,8 +2167,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorl       %edi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   roll       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorl       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     roll       $7, %edi
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorl       $7, %edi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     roll       $7, %edi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorl       $7, %edi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   roll       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorl       $7, (%rax)
 # CHECK-NEXT:  -      -     1.50    -      -      -      -      -     1.50    -     roll       %cl, %edi
@@ -2179,8 +2179,8 @@ xorq (%rax), %rdi
 # CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorq       %rdi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolq       (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorq       (%rax)
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rolq       $7, %rdi
-# CHECK-NEXT:  -      -     1.00    -      -      -      -      -     1.00    -     rorq       $7, %rdi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rolq       $7, %rdi
+# CHECK-NEXT:  -      -     0.50    -      -      -      -      -     0.50    -     rorq       $7, %rdi
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rolq       $7, (%rax)
 # CHECK-NEXT:  -      -     1.00    -     0.83   0.83   1.00    -     1.00   0.33   rorq       $7, (%rax)
 # CHECK-NEXT:  -      -     1.50    -      -      -      -      -     1.50    -     rolq       %cl, %rdi