Skip to content

Commit

Permalink
[X86][Atom] Fix BSR/BSF uops + port usage
Browse files Browse the repository at this point in the history
Both ports are required for BitScan ops. Update the uops counts + port usage based off the most recent llvm-exegesis captures (PR36895) and what Intel AoM / Agner reports as well.
  • Loading branch information
RKSimon committed Oct 2, 2021
1 parent 33d2097 commit 7cae0da
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 27 deletions.
4 changes: 2 additions & 2 deletions llvm/lib/Target/X86/X86ScheduleAtom.td
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,8 @@ defm : X86WriteRes<WriteBitTestSet, [AtomPort1], 1, [1], 1>;
def : WriteRes<WriteLEA, [AtomPort1]>;

// Bit counts.
defm : AtomWriteResPair<WriteBSF, [AtomPort01], [AtomPort01], 16, 16, [16], [16]>;
defm : AtomWriteResPair<WriteBSR, [AtomPort01], [AtomPort01], 16, 16, [16], [16]>;
defm : AtomWriteResPair<WriteBSF, [AtomPort0,AtomPort1], [AtomPort0,AtomPort1], 16, 16, [16,16], [16,16], 10, 10>;
defm : AtomWriteResPair<WriteBSR, [AtomPort0,AtomPort1], [AtomPort0,AtomPort1], 16, 16, [16,16], [16,16], 10, 10>;
defm : X86WriteResPairUnsupported<WritePOPCNT>;
defm : X86WriteResPairUnsupported<WriteLZCNT>;
defm : X86WriteResPairUnsupported<WriteTZCNT>;
Expand Down
50 changes: 25 additions & 25 deletions llvm/test/tools/llvm-mca/X86/Atom/resources-x86_64.s
Original file line number Diff line number Diff line change
Expand Up @@ -1169,18 +1169,18 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1 1 1.00 * * andq %rsi, (%rax)
# CHECK-NEXT: 1 1 1.00 * * lock 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: 10 16 16.00 bsfw %si, %di
# CHECK-NEXT: 10 16 16.00 bsrw %si, %di
# CHECK-NEXT: 10 16 16.00 * bsfw (%rax), %di
# CHECK-NEXT: 10 16 16.00 * bsrw (%rax), %di
# CHECK-NEXT: 10 16 16.00 bsfl %esi, %edi
# CHECK-NEXT: 10 16 16.00 bsrl %esi, %edi
# CHECK-NEXT: 10 16 16.00 * bsfl (%rax), %edi
# CHECK-NEXT: 10 16 16.00 * bsrl (%rax), %edi
# CHECK-NEXT: 10 16 16.00 bsfq %rsi, %rdi
# CHECK-NEXT: 10 16 16.00 bsrq %rsi, %rdi
# CHECK-NEXT: 10 16 16.00 * bsfq (%rax), %rdi
# CHECK-NEXT: 10 16 16.00 * bsrq (%rax), %rdi
# CHECK-NEXT: 1 1 1.00 bswapl %eax
# CHECK-NEXT: 1 1 1.00 bswapq %rax
# CHECK-NEXT: 1 1 1.00 btw %si, %di
Expand Down Expand Up @@ -1947,7 +1947,7 @@ xorq (%rax), %rdi

# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1]
# CHECK-NEXT: 3616.50 3163.50
# CHECK-NEXT: 3712.50 3259.50

# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] Instructions:
Expand Down Expand Up @@ -2090,18 +2090,18 @@ xorq (%rax), %rdi
# CHECK-NEXT: 1.00 - andq %rsi, (%rax)
# CHECK-NEXT: 1.00 - lock 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: 16.00 16.00 bsfw %si, %di
# CHECK-NEXT: 16.00 16.00 bsrw %si, %di
# CHECK-NEXT: 16.00 16.00 bsfw (%rax), %di
# CHECK-NEXT: 16.00 16.00 bsrw (%rax), %di
# CHECK-NEXT: 16.00 16.00 bsfl %esi, %edi
# CHECK-NEXT: 16.00 16.00 bsrl %esi, %edi
# CHECK-NEXT: 16.00 16.00 bsfl (%rax), %edi
# CHECK-NEXT: 16.00 16.00 bsrl (%rax), %edi
# CHECK-NEXT: 16.00 16.00 bsfq %rsi, %rdi
# CHECK-NEXT: 16.00 16.00 bsrq %rsi, %rdi
# CHECK-NEXT: 16.00 16.00 bsfq (%rax), %rdi
# CHECK-NEXT: 16.00 16.00 bsrq (%rax), %rdi
# CHECK-NEXT: 1.00 - bswapl %eax
# CHECK-NEXT: 1.00 - bswapq %rax
# CHECK-NEXT: - 1.00 btw %si, %di
Expand Down

0 comments on commit 7cae0da

Please sign in to comment.