Skip to content

Commit 1f2683c

Browse files
RKSimonmemfrob
authored andcommitted
[X86][Atom] Fix BSR/BSF uops + port usage
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.
1 parent 958419d commit 1f2683c

File tree

2 files changed

+27
-27
lines changed

2 files changed

+27
-27
lines changed

llvm/lib/Target/X86/X86ScheduleAtom.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ defm : X86WriteRes<WriteBitTestSet, [AtomPort1], 1, [1], 1>;
139139
def : WriteRes<WriteLEA, [AtomPort1]>;
140140

141141
// Bit counts.
142-
defm : AtomWriteResPair<WriteBSF, [AtomPort01], [AtomPort01], 16, 16, [16], [16]>;
143-
defm : AtomWriteResPair<WriteBSR, [AtomPort01], [AtomPort01], 16, 16, [16], [16]>;
142+
defm : AtomWriteResPair<WriteBSF, [AtomPort0,AtomPort1], [AtomPort0,AtomPort1], 16, 16, [16,16], [16,16], 10, 10>;
143+
defm : AtomWriteResPair<WriteBSR, [AtomPort0,AtomPort1], [AtomPort0,AtomPort1], 16, 16, [16,16], [16,16], 10, 10>;
144144
defm : X86WriteResPairUnsupported<WritePOPCNT>;
145145
defm : X86WriteResPairUnsupported<WriteLZCNT>;
146146
defm : X86WriteResPairUnsupported<WriteTZCNT>;

llvm/test/tools/llvm-mca/X86/Atom/resources-x86_64.s

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1169,18 +1169,18 @@ xorq (%rax), %rdi
11691169
# CHECK-NEXT: 1 1 1.00 * * andq %rsi, (%rax)
11701170
# CHECK-NEXT: 1 1 1.00 * * lock andq %rsi, (%rax)
11711171
# CHECK-NEXT: 1 1 1.00 * andq (%rax), %rdi
1172-
# CHECK-NEXT: 1 16 8.00 bsfw %si, %di
1173-
# CHECK-NEXT: 1 16 8.00 bsrw %si, %di
1174-
# CHECK-NEXT: 1 16 8.00 * bsfw (%rax), %di
1175-
# CHECK-NEXT: 1 16 8.00 * bsrw (%rax), %di
1176-
# CHECK-NEXT: 1 16 8.00 bsfl %esi, %edi
1177-
# CHECK-NEXT: 1 16 8.00 bsrl %esi, %edi
1178-
# CHECK-NEXT: 1 16 8.00 * bsfl (%rax), %edi
1179-
# CHECK-NEXT: 1 16 8.00 * bsrl (%rax), %edi
1180-
# CHECK-NEXT: 1 16 8.00 bsfq %rsi, %rdi
1181-
# CHECK-NEXT: 1 16 8.00 bsrq %rsi, %rdi
1182-
# CHECK-NEXT: 1 16 8.00 * bsfq (%rax), %rdi
1183-
# CHECK-NEXT: 1 16 8.00 * bsrq (%rax), %rdi
1172+
# CHECK-NEXT: 10 16 16.00 bsfw %si, %di
1173+
# CHECK-NEXT: 10 16 16.00 bsrw %si, %di
1174+
# CHECK-NEXT: 10 16 16.00 * bsfw (%rax), %di
1175+
# CHECK-NEXT: 10 16 16.00 * bsrw (%rax), %di
1176+
# CHECK-NEXT: 10 16 16.00 bsfl %esi, %edi
1177+
# CHECK-NEXT: 10 16 16.00 bsrl %esi, %edi
1178+
# CHECK-NEXT: 10 16 16.00 * bsfl (%rax), %edi
1179+
# CHECK-NEXT: 10 16 16.00 * bsrl (%rax), %edi
1180+
# CHECK-NEXT: 10 16 16.00 bsfq %rsi, %rdi
1181+
# CHECK-NEXT: 10 16 16.00 bsrq %rsi, %rdi
1182+
# CHECK-NEXT: 10 16 16.00 * bsfq (%rax), %rdi
1183+
# CHECK-NEXT: 10 16 16.00 * bsrq (%rax), %rdi
11841184
# CHECK-NEXT: 1 1 1.00 bswapl %eax
11851185
# CHECK-NEXT: 1 1 1.00 bswapq %rax
11861186
# CHECK-NEXT: 1 1 1.00 btw %si, %di
@@ -1947,7 +1947,7 @@ xorq (%rax), %rdi
19471947

19481948
# CHECK: Resource pressure per iteration:
19491949
# CHECK-NEXT: [0] [1]
1950-
# CHECK-NEXT: 3616.50 3163.50
1950+
# CHECK-NEXT: 3712.50 3259.50
19511951

19521952
# CHECK: Resource pressure by instruction:
19531953
# CHECK-NEXT: [0] [1] Instructions:
@@ -2090,18 +2090,18 @@ xorq (%rax), %rdi
20902090
# CHECK-NEXT: 1.00 - andq %rsi, (%rax)
20912091
# CHECK-NEXT: 1.00 - lock andq %rsi, (%rax)
20922092
# CHECK-NEXT: 1.00 - andq (%rax), %rdi
2093-
# CHECK-NEXT: 8.00 8.00 bsfw %si, %di
2094-
# CHECK-NEXT: 8.00 8.00 bsrw %si, %di
2095-
# CHECK-NEXT: 8.00 8.00 bsfw (%rax), %di
2096-
# CHECK-NEXT: 8.00 8.00 bsrw (%rax), %di
2097-
# CHECK-NEXT: 8.00 8.00 bsfl %esi, %edi
2098-
# CHECK-NEXT: 8.00 8.00 bsrl %esi, %edi
2099-
# CHECK-NEXT: 8.00 8.00 bsfl (%rax), %edi
2100-
# CHECK-NEXT: 8.00 8.00 bsrl (%rax), %edi
2101-
# CHECK-NEXT: 8.00 8.00 bsfq %rsi, %rdi
2102-
# CHECK-NEXT: 8.00 8.00 bsrq %rsi, %rdi
2103-
# CHECK-NEXT: 8.00 8.00 bsfq (%rax), %rdi
2104-
# CHECK-NEXT: 8.00 8.00 bsrq (%rax), %rdi
2093+
# CHECK-NEXT: 16.00 16.00 bsfw %si, %di
2094+
# CHECK-NEXT: 16.00 16.00 bsrw %si, %di
2095+
# CHECK-NEXT: 16.00 16.00 bsfw (%rax), %di
2096+
# CHECK-NEXT: 16.00 16.00 bsrw (%rax), %di
2097+
# CHECK-NEXT: 16.00 16.00 bsfl %esi, %edi
2098+
# CHECK-NEXT: 16.00 16.00 bsrl %esi, %edi
2099+
# CHECK-NEXT: 16.00 16.00 bsfl (%rax), %edi
2100+
# CHECK-NEXT: 16.00 16.00 bsrl (%rax), %edi
2101+
# CHECK-NEXT: 16.00 16.00 bsfq %rsi, %rdi
2102+
# CHECK-NEXT: 16.00 16.00 bsrq %rsi, %rdi
2103+
# CHECK-NEXT: 16.00 16.00 bsfq (%rax), %rdi
2104+
# CHECK-NEXT: 16.00 16.00 bsrq (%rax), %rdi
21052105
# CHECK-NEXT: 1.00 - bswapl %eax
21062106
# CHECK-NEXT: 1.00 - bswapq %rax
21072107
# CHECK-NEXT: - 1.00 btw %si, %di

0 commit comments

Comments
 (0)