Index: llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x86_64.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x86_64.s +++ llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-x86_64.s @@ -103,6 +103,21 @@ andq %rsi, (%rax) andq (%rax), %rdi +bsfw %si, %di +bsrw %si, %di +bsfw (%rax), %di +bsrw (%rax), %di + +bsfl %esi, %edi +bsrl %esi, %edi +bsfl (%rax), %edi +bsrl (%rax), %edi + +bsfq %rsi, %rdi +bsrq %rsi, %rdi +bsfq (%rax), %rdi +bsrq (%rax), %rdi + btw %si, %di btcw %si, %di btrw %si, %di @@ -703,6 +718,18 @@ # CHECK-NEXT: 1 1 0.50 andq %rsi, %rdi # CHECK-NEXT: 1 1 1.00 * * andq %rsi, (%rax) # CHECK-NEXT: 1 1 1.00 * andq (%rax), %rdi +# CHECK-NEXT: 1 16 8.00 bsfw %si, %di +# CHECK-NEXT: 1 16 8.00 bsrw %si, %di +# CHECK-NEXT: 1 16 8.00 * bsfw (%rax), %di +# CHECK-NEXT: 1 16 8.00 * bsrw (%rax), %di +# CHECK-NEXT: 1 16 8.00 bsfl %esi, %edi +# CHECK-NEXT: 1 16 8.00 bsrl %esi, %edi +# CHECK-NEXT: 1 16 8.00 * bsfl (%rax), %edi +# CHECK-NEXT: 1 16 8.00 * bsrl (%rax), %edi +# CHECK-NEXT: 1 16 8.00 bsfq %rsi, %rdi +# CHECK-NEXT: 1 16 8.00 bsrq %rsi, %rdi +# CHECK-NEXT: 1 16 8.00 * bsfq (%rax), %rdi +# CHECK-NEXT: 1 16 8.00 * bsrq (%rax), %rdi # CHECK-NEXT: 1 1 1.00 btw %si, %di # CHECK-NEXT: 1 1 1.00 btcw %si, %di # CHECK-NEXT: 1 1 1.00 btrw %si, %di @@ -1162,7 +1189,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] -# CHECK-NEXT: 1260.50 965.50 +# CHECK-NEXT: 1356.50 1061.50 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] Instructions: @@ -1256,6 +1283,18 @@ # CHECK-NEXT: 0.50 0.50 andq %rsi, %rdi # CHECK-NEXT: 1.00 - andq %rsi, (%rax) # CHECK-NEXT: 1.00 - andq (%rax), %rdi +# CHECK-NEXT: 8.00 8.00 bsfw %si, %di +# CHECK-NEXT: 8.00 8.00 bsrw %si, %di +# CHECK-NEXT: 8.00 8.00 bsfw (%rax), %di +# CHECK-NEXT: 8.00 8.00 bsrw (%rax), %di +# CHECK-NEXT: 8.00 8.00 bsfl %esi, %edi +# CHECK-NEXT: 8.00 8.00 bsrl %esi, %edi +# CHECK-NEXT: 8.00 8.00 bsfl (%rax), %edi +# CHECK-NEXT: 8.00 8.00 bsrl (%rax), %edi +# CHECK-NEXT: 8.00 8.00 bsfq %rsi, %rdi +# CHECK-NEXT: 8.00 8.00 bsrq %rsi, %rdi +# CHECK-NEXT: 8.00 8.00 bsfq (%rax), %rdi +# CHECK-NEXT: 8.00 8.00 bsrq (%rax), %rdi # CHECK-NEXT: - 1.00 btw %si, %di # CHECK-NEXT: - 1.00 btcw %si, %di # CHECK-NEXT: - 1.00 btrw %si, %di Index: llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s +++ llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-x86_64.s @@ -103,6 +103,21 @@ andq %rsi, (%rax) andq (%rax), %rdi +bsfw %si, %di +bsrw %si, %di +bsfw (%rax), %di +bsrw (%rax), %di + +bsfl %esi, %edi +bsrl %esi, %edi +bsfl (%rax), %edi +bsrl (%rax), %edi + +bsfq %rsi, %rdi +bsrq %rsi, %rdi +bsfq (%rax), %rdi +bsrq (%rax), %rdi + btw %si, %di btcw %si, %di btrw %si, %di @@ -703,6 +718,18 @@ # CHECK-NEXT: 1 1 0.25 andq %rsi, %rdi # CHECK-NEXT: 3 7 1.00 * * andq %rsi, (%rax) # CHECK-NEXT: 2 6 0.50 * andq (%rax), %rdi +# CHECK-NEXT: 1 3 1.00 bsfw %si, %di +# CHECK-NEXT: 1 3 1.00 bsrw %si, %di +# CHECK-NEXT: 2 8 1.00 * bsfw (%rax), %di +# CHECK-NEXT: 2 8 1.00 * bsrw (%rax), %di +# CHECK-NEXT: 1 3 1.00 bsfl %esi, %edi +# CHECK-NEXT: 1 3 1.00 bsrl %esi, %edi +# CHECK-NEXT: 2 8 1.00 * bsfl (%rax), %edi +# CHECK-NEXT: 2 8 1.00 * bsrl (%rax), %edi +# CHECK-NEXT: 1 3 1.00 bsfq %rsi, %rdi +# CHECK-NEXT: 1 3 1.00 bsrq %rsi, %rdi +# CHECK-NEXT: 2 8 1.00 * bsfq (%rax), %rdi +# CHECK-NEXT: 2 8 1.00 * bsrq (%rax), %rdi # CHECK-NEXT: 1 1 0.50 btw %si, %di # CHECK-NEXT: 1 1 0.50 btcw %si, %di # CHECK-NEXT: 1 1 0.50 btrw %si, %di @@ -1170,7 +1197,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: 50.00 - 363.00 242.50 202.00 202.00 167.00 148.00 328.50 69.00 +# CHECK-NEXT: 50.00 - 363.00 254.50 205.00 205.00 167.00 148.00 328.50 69.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -1264,6 +1291,18 @@ # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - andq %rsi, %rdi # CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 andq %rsi, (%rax) # CHECK-NEXT: - - 0.25 0.25 0.50 0.50 - 0.25 0.25 - andq (%rax), %rdi +# CHECK-NEXT: - - - 1.00 - - - - - - bsfw %si, %di +# CHECK-NEXT: - - - 1.00 - - - - - - bsrw %si, %di +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsfw (%rax), %di +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsrw (%rax), %di +# CHECK-NEXT: - - - 1.00 - - - - - - bsfl %esi, %edi +# CHECK-NEXT: - - - 1.00 - - - - - - bsrl %esi, %edi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsfl (%rax), %edi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsrl (%rax), %edi +# CHECK-NEXT: - - - 1.00 - - - - - - bsfq %rsi, %rdi +# CHECK-NEXT: - - - 1.00 - - - - - - bsrq %rsi, %rdi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsfq (%rax), %rdi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsrq (%rax), %rdi # CHECK-NEXT: - - 0.50 - - - - - 0.50 - btw %si, %di # CHECK-NEXT: - - 0.50 - - - - - 0.50 - btcw %si, %di # CHECK-NEXT: - - 0.50 - - - - - 0.50 - btrw %si, %di Index: llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s +++ llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-x86_64.s @@ -103,6 +103,21 @@ andq %rsi, (%rax) andq (%rax), %rdi +bsfw %si, %di +bsrw %si, %di +bsfw (%rax), %di +bsrw (%rax), %di + +bsfl %esi, %edi +bsrl %esi, %edi +bsfl (%rax), %edi +bsrl (%rax), %edi + +bsfq %rsi, %rdi +bsrq %rsi, %rdi +bsfq (%rax), %rdi +bsrq (%rax), %rdi + btw %si, %di btcw %si, %di btrw %si, %di @@ -703,6 +718,18 @@ # CHECK-NEXT: 1 1 0.50 andq %rsi, %rdi # CHECK-NEXT: 2 5 1.00 * * andq %rsi, (%rax) # CHECK-NEXT: 1 4 1.00 * andq (%rax), %rdi +# CHECK-NEXT: 8 5 2.00 bsfw %si, %di +# CHECK-NEXT: 8 5 2.00 bsrw %si, %di +# CHECK-NEXT: 8 8 2.00 * bsfw (%rax), %di +# CHECK-NEXT: 8 8 2.00 * bsrw (%rax), %di +# CHECK-NEXT: 8 5 2.00 bsfl %esi, %edi +# CHECK-NEXT: 8 5 2.00 bsrl %esi, %edi +# CHECK-NEXT: 8 8 2.00 * bsfl (%rax), %edi +# CHECK-NEXT: 8 8 2.00 * bsrl (%rax), %edi +# CHECK-NEXT: 8 5 2.00 bsfq %rsi, %rdi +# CHECK-NEXT: 8 5 2.00 bsrq %rsi, %rdi +# CHECK-NEXT: 8 8 2.00 * bsfq (%rax), %rdi +# CHECK-NEXT: 8 8 2.00 * bsrq (%rax), %rdi # CHECK-NEXT: 1 1 0.50 btw %si, %di # CHECK-NEXT: 1 1 0.50 btcw %si, %di # CHECK-NEXT: 1 1 0.50 btrw %si, %di @@ -1174,7 +1201,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] -# CHECK-NEXT: 438.00 488.00 380.00 - - - - 263.00 64.00 195.00 - - - - +# CHECK-NEXT: 462.00 512.00 380.00 - - - - 269.00 64.00 195.00 - - - - # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: @@ -1268,6 +1295,18 @@ # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - andq %rsi, %rdi # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - 1.00 - - - - andq %rsi, (%rax) # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - andq (%rax), %rdi +# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - bsfw %si, %di +# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - bsrw %si, %di +# CHECK-NEXT: 2.00 2.00 - - - - - 1.00 - - - - - - bsfw (%rax), %di +# CHECK-NEXT: 2.00 2.00 - - - - - 1.00 - - - - - - bsrw (%rax), %di +# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - bsfl %esi, %edi +# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - bsrl %esi, %edi +# CHECK-NEXT: 2.00 2.00 - - - - - 1.00 - - - - - - bsfl (%rax), %edi +# CHECK-NEXT: 2.00 2.00 - - - - - 1.00 - - - - - - bsrl (%rax), %edi +# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - bsfq %rsi, %rdi +# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - bsrq %rsi, %rdi +# CHECK-NEXT: 2.00 2.00 - - - - - 1.00 - - - - - - bsfq (%rax), %rdi +# CHECK-NEXT: 2.00 2.00 - - - - - 1.00 - - - - - - bsrq (%rax), %rdi # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - btw %si, %di # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - btcw %si, %di # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - btrw %si, %di Index: llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-x86_64.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-x86_64.s +++ llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-x86_64.s @@ -103,6 +103,21 @@ andq %rsi, (%rax) andq (%rax), %rdi +bsfw %si, %di +bsrw %si, %di +bsfw (%rax), %di +bsrw (%rax), %di + +bsfl %esi, %edi +bsrl %esi, %edi +bsfl (%rax), %edi +bsrl (%rax), %edi + +bsfq %rsi, %rdi +bsrq %rsi, %rdi +bsfq (%rax), %rdi +bsrq (%rax), %rdi + btw %si, %di btcw %si, %di btrw %si, %di @@ -703,6 +718,18 @@ # CHECK-NEXT: 1 1 0.33 andq %rsi, %rdi # CHECK-NEXT: 3 7 1.00 * * andq %rsi, (%rax) # CHECK-NEXT: 2 6 0.50 * andq (%rax), %rdi +# CHECK-NEXT: 1 3 1.00 bsfw %si, %di +# CHECK-NEXT: 1 3 1.00 bsrw %si, %di +# CHECK-NEXT: 2 8 1.00 * bsfw (%rax), %di +# CHECK-NEXT: 2 8 1.00 * bsrw (%rax), %di +# CHECK-NEXT: 1 3 1.00 bsfl %esi, %edi +# CHECK-NEXT: 1 3 1.00 bsrl %esi, %edi +# CHECK-NEXT: 2 8 1.00 * bsfl (%rax), %edi +# CHECK-NEXT: 2 8 1.00 * bsrl (%rax), %edi +# CHECK-NEXT: 1 3 1.00 bsfq %rsi, %rdi +# CHECK-NEXT: 1 3 1.00 bsrq %rsi, %rdi +# CHECK-NEXT: 2 8 1.00 * bsfq (%rax), %rdi +# CHECK-NEXT: 2 8 1.00 * bsrq (%rax), %rdi # CHECK-NEXT: 1 1 0.50 btw %si, %di # CHECK-NEXT: 1 1 0.50 btcw %si, %di # CHECK-NEXT: 1 1 0.50 btrw %si, %di @@ -1168,7 +1195,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: 160.00 - 347.33 141.33 210.00 339.33 238.00 238.00 +# CHECK-NEXT: 160.00 - 347.33 153.33 210.00 339.33 241.00 241.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -1262,6 +1289,18 @@ # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - andq %rsi, %rdi # CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 andq %rsi, (%rax) # CHECK-NEXT: - - 0.33 0.33 - 0.33 0.50 0.50 andq (%rax), %rdi +# CHECK-NEXT: - - - 1.00 - - - - bsfw %si, %di +# CHECK-NEXT: - - - 1.00 - - - - bsrw %si, %di +# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 bsfw (%rax), %di +# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 bsrw (%rax), %di +# CHECK-NEXT: - - - 1.00 - - - - bsfl %esi, %edi +# CHECK-NEXT: - - - 1.00 - - - - bsrl %esi, %edi +# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 bsfl (%rax), %edi +# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 bsrl (%rax), %edi +# CHECK-NEXT: - - - 1.00 - - - - bsfq %rsi, %rdi +# CHECK-NEXT: - - - 1.00 - - - - bsrq %rsi, %rdi +# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 bsfq (%rax), %rdi +# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 bsrq (%rax), %rdi # CHECK-NEXT: - - 0.50 - - 0.50 - - btw %si, %di # CHECK-NEXT: - - 0.50 - - 0.50 - - btcw %si, %di # CHECK-NEXT: - - 0.50 - - 0.50 - - btrw %si, %di Index: llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s +++ llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-x86_64.s @@ -103,6 +103,21 @@ andq %rsi, (%rax) andq (%rax), %rdi +bsfw %si, %di +bsrw %si, %di +bsfw (%rax), %di +bsrw (%rax), %di + +bsfl %esi, %edi +bsrl %esi, %edi +bsfl (%rax), %edi +bsrl (%rax), %edi + +bsfq %rsi, %rdi +bsrq %rsi, %rdi +bsfq (%rax), %rdi +bsrq (%rax), %rdi + btw %si, %di btcw %si, %di btrw %si, %di @@ -703,6 +718,18 @@ # CHECK-NEXT: 1 1 0.25 andq %rsi, %rdi # CHECK-NEXT: 3 7 1.00 * * andq %rsi, (%rax) # CHECK-NEXT: 2 6 0.50 * andq (%rax), %rdi +# CHECK-NEXT: 1 3 1.00 bsfw %si, %di +# CHECK-NEXT: 1 3 1.00 bsrw %si, %di +# CHECK-NEXT: 2 8 1.00 * bsfw (%rax), %di +# CHECK-NEXT: 2 8 1.00 * bsrw (%rax), %di +# CHECK-NEXT: 1 3 1.00 bsfl %esi, %edi +# CHECK-NEXT: 1 3 1.00 bsrl %esi, %edi +# CHECK-NEXT: 2 8 1.00 * bsfl (%rax), %edi +# CHECK-NEXT: 2 8 1.00 * bsrl (%rax), %edi +# CHECK-NEXT: 1 3 1.00 bsfq %rsi, %rdi +# CHECK-NEXT: 1 3 1.00 bsrq %rsi, %rdi +# CHECK-NEXT: 2 8 1.00 * bsfq (%rax), %rdi +# CHECK-NEXT: 2 8 1.00 * bsrq (%rax), %rdi # CHECK-NEXT: 1 1 0.50 btw %si, %di # CHECK-NEXT: 1 1 0.50 btcw %si, %di # CHECK-NEXT: 1 1 0.50 btrw %si, %di @@ -1170,7 +1197,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: 80.00 - 414.00 263.50 193.00 193.00 158.00 171.00 408.50 66.00 +# CHECK-NEXT: 80.00 - 414.00 275.50 196.00 196.00 158.00 171.00 408.50 66.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -1264,6 +1291,18 @@ # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - andq %rsi, %rdi # CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 andq %rsi, (%rax) # CHECK-NEXT: - - 0.25 0.25 0.50 0.50 - 0.25 0.25 - andq (%rax), %rdi +# CHECK-NEXT: - - - 1.00 - - - - - - bsfw %si, %di +# CHECK-NEXT: - - - 1.00 - - - - - - bsrw %si, %di +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsfw (%rax), %di +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsrw (%rax), %di +# CHECK-NEXT: - - - 1.00 - - - - - - bsfl %esi, %edi +# CHECK-NEXT: - - - 1.00 - - - - - - bsrl %esi, %edi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsfl (%rax), %edi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsrl (%rax), %edi +# CHECK-NEXT: - - - 1.00 - - - - - - bsfq %rsi, %rdi +# CHECK-NEXT: - - - 1.00 - - - - - - bsrq %rsi, %rdi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsfq (%rax), %rdi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsrq (%rax), %rdi # CHECK-NEXT: - - 0.50 - - - - - 0.50 - btw %si, %di # CHECK-NEXT: - - 0.50 - - - - - 0.50 - btcw %si, %di # CHECK-NEXT: - - 0.50 - - - - - 0.50 - btrw %si, %di Index: llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-x86_64.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-x86_64.s +++ llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-x86_64.s @@ -103,6 +103,21 @@ andq %rsi, (%rax) andq (%rax), %rdi +bsfw %si, %di +bsrw %si, %di +bsfw (%rax), %di +bsrw (%rax), %di + +bsfl %esi, %edi +bsrl %esi, %edi +bsfl (%rax), %edi +bsrl (%rax), %edi + +bsfq %rsi, %rdi +bsrq %rsi, %rdi +bsfq (%rax), %rdi +bsrq (%rax), %rdi + btw %si, %di btcw %si, %di btrw %si, %di @@ -703,6 +718,18 @@ # CHECK-NEXT: 1 1 0.50 andq %rsi, %rdi # CHECK-NEXT: 2 5 2.00 * * andq %rsi, (%rax) # CHECK-NEXT: 1 4 1.00 * andq (%rax), %rdi +# CHECK-NEXT: 10 10 10.00 bsfw %si, %di +# CHECK-NEXT: 10 10 10.00 bsrw %si, %di +# CHECK-NEXT: 10 13 10.00 * bsfw (%rax), %di +# CHECK-NEXT: 10 13 10.00 * bsrw (%rax), %di +# CHECK-NEXT: 10 10 10.00 bsfl %esi, %edi +# CHECK-NEXT: 10 10 10.00 bsrl %esi, %edi +# CHECK-NEXT: 10 13 10.00 * bsfl (%rax), %edi +# CHECK-NEXT: 10 13 10.00 * bsrl (%rax), %edi +# CHECK-NEXT: 10 10 10.00 bsfq %rsi, %rdi +# CHECK-NEXT: 10 10 10.00 bsrq %rsi, %rdi +# CHECK-NEXT: 10 13 10.00 * bsfq (%rax), %rdi +# CHECK-NEXT: 10 13 10.00 * bsrq (%rax), %rdi # CHECK-NEXT: 1 1 0.50 btw %si, %di # CHECK-NEXT: 1 1 0.50 btcw %si, %di # CHECK-NEXT: 1 1 0.50 btrw %si, %di @@ -1168,7 +1195,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] -# CHECK-NEXT: 400.00 - - - - 393.00 235.00 470.00 +# CHECK-NEXT: 400.00 - - - - 513.00 355.00 476.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions: @@ -1262,6 +1289,18 @@ # CHECK-NEXT: - - - - - 0.50 0.50 - andq %rsi, %rdi # CHECK-NEXT: - - - - - 1.00 1.00 2.00 andq %rsi, (%rax) # CHECK-NEXT: - - - - - 0.50 0.50 1.00 andq (%rax), %rdi +# CHECK-NEXT: - - - - - 10.00 10.00 - bsfw %si, %di +# CHECK-NEXT: - - - - - 10.00 10.00 - bsrw %si, %di +# CHECK-NEXT: - - - - - 10.00 10.00 1.00 bsfw (%rax), %di +# CHECK-NEXT: - - - - - 10.00 10.00 1.00 bsrw (%rax), %di +# CHECK-NEXT: - - - - - 10.00 10.00 - bsfl %esi, %edi +# CHECK-NEXT: - - - - - 10.00 10.00 - bsrl %esi, %edi +# CHECK-NEXT: - - - - - 10.00 10.00 1.00 bsfl (%rax), %edi +# CHECK-NEXT: - - - - - 10.00 10.00 1.00 bsrl (%rax), %edi +# CHECK-NEXT: - - - - - 10.00 10.00 - bsfq %rsi, %rdi +# CHECK-NEXT: - - - - - 10.00 10.00 - bsrq %rsi, %rdi +# CHECK-NEXT: - - - - - 10.00 10.00 1.00 bsfq (%rax), %rdi +# CHECK-NEXT: - - - - - 10.00 10.00 1.00 bsrq (%rax), %rdi # CHECK-NEXT: - - - - - 0.50 0.50 - btw %si, %di # CHECK-NEXT: - - - - - 0.50 0.50 - btcw %si, %di # CHECK-NEXT: - - - - - 0.50 0.50 - btrw %si, %di Index: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s +++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-x86_64.s @@ -103,6 +103,21 @@ andq %rsi, (%rax) andq (%rax), %rdi +bsfw %si, %di +bsrw %si, %di +bsfw (%rax), %di +bsrw (%rax), %di + +bsfl %esi, %edi +bsrl %esi, %edi +bsfl (%rax), %edi +bsrl (%rax), %edi + +bsfq %rsi, %rdi +bsrq %rsi, %rdi +bsfq (%rax), %rdi +bsrq (%rax), %rdi + btw %si, %di btcw %si, %di btrw %si, %di @@ -703,6 +718,18 @@ # CHECK-NEXT: 1 1 0.33 andq %rsi, %rdi # CHECK-NEXT: 3 7 1.00 * * andq %rsi, (%rax) # CHECK-NEXT: 2 6 0.50 * andq (%rax), %rdi +# CHECK-NEXT: 1 3 1.00 bsfw %si, %di +# CHECK-NEXT: 1 3 1.00 bsrw %si, %di +# CHECK-NEXT: 2 8 1.00 * bsfw (%rax), %di +# CHECK-NEXT: 2 8 1.00 * bsrw (%rax), %di +# CHECK-NEXT: 1 3 1.00 bsfl %esi, %edi +# CHECK-NEXT: 1 3 1.00 bsrl %esi, %edi +# CHECK-NEXT: 2 8 1.00 * bsfl (%rax), %edi +# CHECK-NEXT: 2 8 1.00 * bsrl (%rax), %edi +# CHECK-NEXT: 1 3 1.00 bsfq %rsi, %rdi +# CHECK-NEXT: 1 3 1.00 bsrq %rsi, %rdi +# CHECK-NEXT: 2 8 1.00 * bsfq (%rax), %rdi +# CHECK-NEXT: 2 8 1.00 * bsrq (%rax), %rdi # CHECK-NEXT: 1 1 0.50 btw %si, %di # CHECK-NEXT: 1 1 0.50 btcw %si, %di # CHECK-NEXT: 1 1 0.50 btrw %si, %di @@ -1168,7 +1195,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] -# CHECK-NEXT: 160.00 - 347.33 141.33 210.00 339.33 238.00 238.00 +# CHECK-NEXT: 160.00 - 347.33 153.33 210.00 339.33 241.00 241.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions: @@ -1262,6 +1289,18 @@ # CHECK-NEXT: - - 0.33 0.33 - 0.33 - - andq %rsi, %rdi # CHECK-NEXT: - - 0.33 0.33 1.00 0.33 1.00 1.00 andq %rsi, (%rax) # CHECK-NEXT: - - 0.33 0.33 - 0.33 0.50 0.50 andq (%rax), %rdi +# CHECK-NEXT: - - - 1.00 - - - - bsfw %si, %di +# CHECK-NEXT: - - - 1.00 - - - - bsrw %si, %di +# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 bsfw (%rax), %di +# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 bsrw (%rax), %di +# CHECK-NEXT: - - - 1.00 - - - - bsfl %esi, %edi +# CHECK-NEXT: - - - 1.00 - - - - bsrl %esi, %edi +# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 bsfl (%rax), %edi +# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 bsrl (%rax), %edi +# CHECK-NEXT: - - - 1.00 - - - - bsfq %rsi, %rdi +# CHECK-NEXT: - - - 1.00 - - - - bsrq %rsi, %rdi +# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 bsfq (%rax), %rdi +# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 bsrq (%rax), %rdi # CHECK-NEXT: - - 0.50 - - 0.50 - - btw %si, %di # CHECK-NEXT: - - 0.50 - - 0.50 - - btcw %si, %di # CHECK-NEXT: - - 0.50 - - 0.50 - - btrw %si, %di Index: llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s +++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_64.s @@ -103,6 +103,21 @@ andq %rsi, (%rax) andq (%rax), %rdi +bsfw %si, %di +bsrw %si, %di +bsfw (%rax), %di +bsrw (%rax), %di + +bsfl %esi, %edi +bsrl %esi, %edi +bsfl (%rax), %edi +bsrl (%rax), %edi + +bsfq %rsi, %rdi +bsrq %rsi, %rdi +bsfq (%rax), %rdi +bsrq (%rax), %rdi + btw %si, %di btcw %si, %di btrw %si, %di @@ -703,6 +718,18 @@ # CHECK-NEXT: 1 1 0.25 andq %rsi, %rdi # CHECK-NEXT: 3 7 1.00 * * andq %rsi, (%rax) # CHECK-NEXT: 2 6 0.50 * andq (%rax), %rdi +# CHECK-NEXT: 1 3 1.00 bsfw %si, %di +# CHECK-NEXT: 1 3 1.00 bsrw %si, %di +# CHECK-NEXT: 2 8 1.00 * bsfw (%rax), %di +# CHECK-NEXT: 2 8 1.00 * bsrw (%rax), %di +# CHECK-NEXT: 1 3 1.00 bsfl %esi, %edi +# CHECK-NEXT: 1 3 1.00 bsrl %esi, %edi +# CHECK-NEXT: 2 8 1.00 * bsfl (%rax), %edi +# CHECK-NEXT: 2 8 1.00 * bsrl (%rax), %edi +# CHECK-NEXT: 1 3 1.00 bsfq %rsi, %rdi +# CHECK-NEXT: 1 3 1.00 bsrq %rsi, %rdi +# CHECK-NEXT: 2 8 1.00 * bsfq (%rax), %rdi +# CHECK-NEXT: 2 8 1.00 * bsrq (%rax), %rdi # CHECK-NEXT: 1 1 0.50 btw %si, %di # CHECK-NEXT: 1 1 0.50 btcw %si, %di # CHECK-NEXT: 1 1 0.50 btrw %si, %di @@ -1170,7 +1197,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: 60.00 - 430.50 223.50 202.00 202.00 167.00 184.00 415.00 69.00 +# CHECK-NEXT: 60.00 - 430.50 235.50 205.00 205.00 167.00 184.00 415.00 69.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -1264,6 +1291,18 @@ # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - andq %rsi, %rdi # CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 andq %rsi, (%rax) # CHECK-NEXT: - - 0.25 0.25 0.50 0.50 - 0.25 0.25 - andq (%rax), %rdi +# CHECK-NEXT: - - - 1.00 - - - - - - bsfw %si, %di +# CHECK-NEXT: - - - 1.00 - - - - - - bsrw %si, %di +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsfw (%rax), %di +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsrw (%rax), %di +# CHECK-NEXT: - - - 1.00 - - - - - - bsfl %esi, %edi +# CHECK-NEXT: - - - 1.00 - - - - - - bsrl %esi, %edi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsfl (%rax), %edi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsrl (%rax), %edi +# CHECK-NEXT: - - - 1.00 - - - - - - bsfq %rsi, %rdi +# CHECK-NEXT: - - - 1.00 - - - - - - bsrq %rsi, %rdi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsfq (%rax), %rdi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsrq (%rax), %rdi # CHECK-NEXT: - - 0.50 - - - - - 0.50 - btw %si, %di # CHECK-NEXT: - - 0.50 - - - - - 0.50 - btcw %si, %di # CHECK-NEXT: - - 0.50 - - - - - 0.50 - btrw %si, %di Index: llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s +++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_64.s @@ -103,6 +103,21 @@ andq %rsi, (%rax) andq (%rax), %rdi +bsfw %si, %di +bsrw %si, %di +bsfw (%rax), %di +bsrw (%rax), %di + +bsfl %esi, %edi +bsrl %esi, %edi +bsfl (%rax), %edi +bsrl (%rax), %edi + +bsfq %rsi, %rdi +bsrq %rsi, %rdi +bsfq (%rax), %rdi +bsrq (%rax), %rdi + btw %si, %di btcw %si, %di btrw %si, %di @@ -703,6 +718,18 @@ # CHECK-NEXT: 1 1 0.25 andq %rsi, %rdi # CHECK-NEXT: 3 7 1.00 * * andq %rsi, (%rax) # CHECK-NEXT: 2 6 0.50 * andq (%rax), %rdi +# CHECK-NEXT: 1 3 1.00 bsfw %si, %di +# CHECK-NEXT: 1 3 1.00 bsrw %si, %di +# CHECK-NEXT: 2 8 1.00 * bsfw (%rax), %di +# CHECK-NEXT: 2 8 1.00 * bsrw (%rax), %di +# CHECK-NEXT: 1 3 1.00 bsfl %esi, %edi +# CHECK-NEXT: 1 3 1.00 bsrl %esi, %edi +# CHECK-NEXT: 2 8 1.00 * bsfl (%rax), %edi +# CHECK-NEXT: 2 8 1.00 * bsrl (%rax), %edi +# CHECK-NEXT: 1 3 1.00 bsfq %rsi, %rdi +# CHECK-NEXT: 1 3 1.00 bsrq %rsi, %rdi +# CHECK-NEXT: 2 8 1.00 * bsfq (%rax), %rdi +# CHECK-NEXT: 2 8 1.00 * bsrq (%rax), %rdi # CHECK-NEXT: 1 1 0.50 btw %si, %di # CHECK-NEXT: 1 1 0.50 btcw %si, %di # CHECK-NEXT: 1 1 0.50 btrw %si, %di @@ -1170,7 +1197,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] -# CHECK-NEXT: 60.00 - 430.75 223.75 202.00 202.00 167.00 184.25 415.25 69.00 +# CHECK-NEXT: 60.00 - 430.75 235.75 205.00 205.00 167.00 184.25 415.25 69.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: @@ -1264,6 +1291,18 @@ # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - andq %rsi, %rdi # CHECK-NEXT: - - 0.25 0.25 0.83 0.83 1.00 0.25 0.25 0.33 andq %rsi, (%rax) # CHECK-NEXT: - - 0.25 0.25 0.50 0.50 - 0.25 0.25 - andq (%rax), %rdi +# CHECK-NEXT: - - - 1.00 - - - - - - bsfw %si, %di +# CHECK-NEXT: - - - 1.00 - - - - - - bsrw %si, %di +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsfw (%rax), %di +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsrw (%rax), %di +# CHECK-NEXT: - - - 1.00 - - - - - - bsfl %esi, %edi +# CHECK-NEXT: - - - 1.00 - - - - - - bsrl %esi, %edi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsfl (%rax), %edi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsrl (%rax), %edi +# CHECK-NEXT: - - - 1.00 - - - - - - bsfq %rsi, %rdi +# CHECK-NEXT: - - - 1.00 - - - - - - bsrq %rsi, %rdi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsfq (%rax), %rdi +# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - bsrq (%rax), %rdi # CHECK-NEXT: - - 0.50 - - - - - 0.50 - btw %si, %di # CHECK-NEXT: - - 0.50 - - - - - 0.50 - btcw %si, %di # CHECK-NEXT: - - 0.50 - - - - - 0.50 - btrw %si, %di Index: llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s +++ llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-x86_64.s @@ -103,6 +103,21 @@ andq %rsi, (%rax) andq (%rax), %rdi +bsfw %si, %di +bsrw %si, %di +bsfw (%rax), %di +bsrw (%rax), %di + +bsfl %esi, %edi +bsrl %esi, %edi +bsfl (%rax), %edi +bsrl (%rax), %edi + +bsfq %rsi, %rdi +bsrq %rsi, %rdi +bsfq (%rax), %rdi +bsrq (%rax), %rdi + btw %si, %di btcw %si, %di btrw %si, %di @@ -703,6 +718,18 @@ # CHECK-NEXT: 1 1 0.25 andq %rsi, %rdi # CHECK-NEXT: 2 5 0.50 * * andq %rsi, (%rax) # CHECK-NEXT: 2 5 0.50 * andq (%rax), %rdi +# CHECK-NEXT: 1 3 0.25 bsfw %si, %di +# CHECK-NEXT: 1 3 0.25 bsrw %si, %di +# CHECK-NEXT: 2 7 0.50 * bsfw (%rax), %di +# CHECK-NEXT: 2 7 0.50 * bsrw (%rax), %di +# CHECK-NEXT: 1 3 0.25 bsfl %esi, %edi +# CHECK-NEXT: 1 3 0.25 bsrl %esi, %edi +# CHECK-NEXT: 2 7 0.50 * bsfl (%rax), %edi +# CHECK-NEXT: 2 7 0.50 * bsrl (%rax), %edi +# CHECK-NEXT: 1 3 0.25 bsfq %rsi, %rdi +# CHECK-NEXT: 1 3 0.25 bsrq %rsi, %rdi +# CHECK-NEXT: 2 7 0.50 * bsfq (%rax), %rdi +# CHECK-NEXT: 2 7 0.50 * bsrq (%rax), %rdi # CHECK-NEXT: 1 1 0.25 btw %si, %di # CHECK-NEXT: 2 2 0.25 btcw %si, %di # CHECK-NEXT: 2 2 0.25 btrw %si, %di @@ -1172,7 +1199,7 @@ # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] -# CHECK-NEXT: 131.50 131.50 112.00 146.00 128.00 112.00 392.00 - - - - 34.00 +# CHECK-NEXT: 134.50 134.50 115.00 149.00 131.00 115.00 392.00 - - - - 34.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: @@ -1266,6 +1293,18 @@ # CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - andq %rsi, %rdi # CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - andq %rsi, (%rax) # CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - andq (%rax), %rdi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - bsfw %si, %di +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - bsrw %si, %di +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - bsfw (%rax), %di +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - bsrw (%rax), %di +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - bsfl %esi, %edi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - bsrl %esi, %edi +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - bsfl (%rax), %edi +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - bsrl (%rax), %edi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - bsfq %rsi, %rdi +# CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - bsrq %rsi, %rdi +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - bsfq (%rax), %rdi +# CHECK-NEXT: 0.50 0.50 0.25 0.25 0.25 0.25 - - - - - - bsrq (%rax), %rdi # CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - btw %si, %di # CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - btcw %si, %di # CHECK-NEXT: - - 0.25 0.25 0.25 0.25 - - - - - - btrw %si, %di