Index: lib/Target/X86/X86SchedBroadwell.td =================================================================== --- lib/Target/X86/X86SchedBroadwell.td +++ lib/Target/X86/X86SchedBroadwell.td @@ -187,7 +187,7 @@ // Integer shifts and rotates. defm : BWWriteResPair; defm : BWWriteResPair; -defm : BWWriteResPair; +defm : BWWriteResPair; defm : BWWriteResPair; // SHLD/SHRD. @@ -1105,6 +1105,14 @@ 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: lib/Target/X86/X86SchedHaswell.td =================================================================== --- lib/Target/X86/X86SchedHaswell.td +++ lib/Target/X86/X86SchedHaswell.td @@ -152,7 +152,7 @@ // Integer shifts and rotates. defm : HWWriteResPair; defm : HWWriteResPair; -defm : HWWriteResPair; +defm : HWWriteResPair; defm : HWWriteResPair; // SHLD/SHRD. @@ -1183,6 +1183,14 @@ 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: lib/Target/X86/X86SchedSkylakeClient.td =================================================================== --- lib/Target/X86/X86SchedSkylakeClient.td +++ lib/Target/X86/X86SchedSkylakeClient.td @@ -184,7 +184,7 @@ // Integer shifts and rotates. defm : SKLWriteResPair; defm : SKLWriteResPair; -defm : SKLWriteResPair; +defm : SKLWriteResPair; defm : SKLWriteResPair; // SHLD/SHRD. @@ -1185,6 +1185,14 @@ 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: lib/Target/X86/X86SchedSkylakeServer.td =================================================================== --- lib/Target/X86/X86SchedSkylakeServer.td +++ lib/Target/X86/X86SchedSkylakeServer.td @@ -177,7 +177,7 @@ // Integer shifts and rotates. defm : SKXWriteResPair; defm : SKXWriteResPair; -defm : SKXWriteResPair; +defm : SKXWriteResPair; defm : SKXWriteResPair; // SHLD/SHRD. @@ -1448,6 +1448,14 @@ 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: test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s =================================================================== --- test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s +++ test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s @@ -1345,8 +1345,8 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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: test/tools/llvm-mca/X86/Haswell/resources-x86_64.s =================================================================== --- test/tools/llvm-mca/X86/Haswell/resources-x86_64.s +++ test/tools/llvm-mca/X86/Haswell/resources-x86_64.s @@ -1345,8 +1345,8 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: 80.00 - 579.25 373.25 269.83 269.83 209.00 287.75 641.75 82.33 +# CHECK-NEXT: 80.00 - 575.25 373.25 269.83 269.83 209.00 287.75 637.75 82.33 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -2143,8 +2143,8 @@ # 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 @@ # 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 @@ # 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 @@ # 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: test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s =================================================================== --- test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s +++ test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s @@ -1345,8 +1345,8 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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: test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s =================================================================== --- test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s +++ test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s @@ -1345,8 +1345,8 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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 @@ # 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